"use strict"

const akl = []
const alternateKlingon = []

akl[1] = '0123456789!#$%&()*+-:;=?@'
akl[2] = "`aboDaDIDoHeHujejolu`opoQIrotatIvayayu101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899!!''##$$%%()**??"
akl[3] = '`ab`aD`ah`aj`ar`at`avba`baHbajbalbambaqbaQbaSbavbaybe`bebbeHbejbelbembenbepbeqbeQbeybI`bIDbIHbIjbImbIpbIQbIrbItbIvboDboHbojbolbombopboqboQborboSbotbovbu`buDbupbuqbuQburbuSbuvchaDa`DabDaHDajDalDanDapDaqDaQDaSDatDavDayDe`DebDeHDejDelDepDeqDeQDerDeSDevDIbDIjDIlDInDIpDIrDISDIvDo`DoDDoHDojDolDomDonDopDoqDoQDorDoSDu`DubDuDDuHDujDumDunDupDuqDuQDuSDutDuvDuy`e``eb`eH`ej`el`em`ep`eq`er`eS`et`ev`eyghoghuHa`HabHaDHaHHajHalHapHaqHarHatHayHe`HeDHeHHejHemHeQHeSHevHewHeyHI`HIjHIpHIqHIvHo`HobHoDHoHHojHolHomHonHopHoqHoQHoSHotHovHu`HubHuDHuHHujHumHunHupHuqHurHuSHutHuv`I``Ib`IH`Ij`Il`Im`In`Ip`Iq`IQ`It`Iv`Iwja`jabjaDjaHjajjaljanjaqjaQjarjaSjatjavjawjayje`jeDjeHjejjenjeqjeQjerjeSjevjeyjIbjIHjIjjIljImjInjIpjIrjIvjo`joDjoHjojjoljomjonjopjoqjoQjorjoSjotjubjuHjuljumjunjupjuSjuvla`lablaDlaHlajlamlanlaqlaQlaSlatlavlawlayle`leDleHlellemlenleQleSletlevlI`lIblIHlIjlImlIqlIrlISlItlIwlIylo`lobloDloHlojlollomlonloploQlorloSlotloylu`luHlujlullumlupluqlurlutma`mabmaHmajmaqmaQmarmaSmawmayme`mebmeHmejmemmepmeqmeQmermeSmevmI`mIDmIlmImmInmIpmIQmIrmISmIvmIwmIymo`mobmoDmoHmojmolmonmopmoqmoQmoSmovmu`mubmuDmuHmujmulmummunmupmuqmuSmutmuvna`nabnaDnaHnajnannapnaQnaSnavnayne`nebneHnejnemnennepnetnI`nIbnIDnIHnIjnImnInnIqnIQnISnItnIvno`nobnoDnoHnojnolnomnonnopnoSnotnovnoynubnuDnuHnujnumnupnuqnuQnurnuSnuv`o``oD`oH`oj`ol`om`op`or`oS`ot`ovpa`pabpaHpajpanpaqparpaSpatpavpawpaype`peDpejpempeppeqpeQperpeypI`pIDpIHpIjpIlpImpInpIppIqpIQpIvpIwpo`pobpoDpoHpojpolpomponpoppoqpoQporpoSpovpu`pubpuHpujpumpuppuqpuQpurpuSpuvpuyqa`Qa`qabQabqaDQaDqaHQaHqajQajqalQalqamQamqanQanqapQapqaqQaqQaQqarqaSQaSqatQatQavqawqayQayQe`qebQebqeDQeDqeHQeHqejQejqelQelqemqenqepqeqQeqqeSqetqevQevqewQeyqI`QI`qIbQIbqIDQIDqIHQIHqIjQIjqIlqImQImQInqIpQIpqIQQISqItQItqIvQIvqo`Qo`QobqoDQoDqoHqojQojQolQomqonqopQopqoqQoQqorQorqoSQoSQotQoyqu`Qu`qubQubquDQuDquHQujqulQulqumQumqunQunqupQupquqQuQqurQurquSQuSqutQutquvQuvra`raDralramrapraQrarraSravrayreDreHrenrepretreyrI`rIHrIlrInrIprIQrItro`roDrojrolromronroproQrorroSru`runrupruqruQrurruSrutruvSa`SabSaDSaHSajSalSamSanSapSaqSaQSarSaSSawSaySe`SeHSenSepSeqSeQSerSeSSevSeySIDSIHSIjSImSIpSIqSIQSISSIvSo`SoDSoHSojSolSomSonSopSoQSorSoSSotSovSu`SubSuDSuHSujSumSunSupSuqSuQSuSSutSuvSuyta`taDtaHtajtaltamtaptaQtartaStattawtaytebteHtejteltemtentepteqteStettevteytI`tIbtIHtIjtIltIntIqtIQtIrtIStIvto`tobtoDtoHtojtoqtoQtortoStu`tuHtujtultumtuntuptuqtuQtuStuttuv`u``uD`uH`uj`ul`um`un`up`uQ`ur`uS`ut`uyvaDvaHvajvalvanvaqvaQvaSvavvayve`vebveDveHvelvemvenveQveSvevveyvI`vIDvIHvIjvIlvInvIqvItvo`vonvoqvoQvorvu`vubvuDvulvumvupvuQvuSvutvuvvuywa`wabwaHwamwanwaqwaQwarwavwaywebweHwejwelwemwenwepweqweQwevwewweywIbwIDwIHwIjwIlwIvwIywo`wobwoDwoHwojwomwoQwoSwotwovwuDwunwupwuqwuQwuSwuvyabyaDyaHyajyanyapyaSyavyayyebyejyemyepyeqyeryevyI`yIbyIHyInyIQyIryItyIvyo`yobyoDyoHyojyolyonyoqyoryoSyotyovyoyyu`yubyuDyuQyuryuv100101111123200222234300333345400444456500555567600666678700777789800888900999'
akl[4] = '`ach`agh`ang`aw``ay`bachbaghbangbechbeghbey`bIngbochboghbongbuy`cha`chabchaHchajchalchamchanchapchaqchaQcharchaSchavchayche`chebcheHchejchelchenchepcherchevchIDchIjchIlchImchIpchISchIwcho`chobchoHcholchomchonchopchoqchoQchorchoSchotchovchu`chuDchuHchunchupchuqchuSchutchuvchuyDachDaw`DechDeghDIchDIngDochDoghDoy`DughDungDuy``ech`egh`engghabghaHghajghalghamghapghaqgharghavghayghebgheDghelghemghergheSghetghewghIbghIDghIHghIjghImghInghIqghIQghIrghItghIvgho`ghobghoDghoHghojgholghomghopghoqghoQghorghoSghotghovghu`ghuHghumghunghupghurghuSghuvHachHaghHaw`Hay`HechHeghHengHIchHIghHochHoghHongHoy`HuchHughHungHuy``Ighjachjaghjangjay`jechjeghjochjoghjoy`juchlachlaghlanglaw`lay`leghlengley`lIchlIghlInglochloghluchlughlungmachmaghmangmaw`may`mechmeghmey`mIchmIghmochmoghmongmuchmughmungnachnaghnaw`nay`nechneghngabngaDngaHngajngalnganngaqngaQngaSngatngavngaynge`ngebngeDngeHngejngemngepngeQngerngevngI`ngIbngIjngIlngImngIpngIqngIvngo`ngoDngoHngojngolngomngopngoqngoQngorngoSngu`ngunngupnguqnguvnIchnochnoghnongnuchnughnung`och`ogh`ong`oy`pachpaghpangpaw`pay`peghpengpIchpIghpochpoghpongpuchpughpungqachQachqaghQaghqangQangQaw`qay`Qay`qechqeghqengqIchQIchqIghqochQochqoghQoghQongqoy`quchQuchqughQughqungrachraghraw`ray`rechreghrIghroghruchrughSachSaghSangSaw`Say`SechSeghSengSIchSIghSochSoghSoy`SuchSughSungSuy`tachtaghtay`tey`tIchtIghtIngtochtoghtoy`tuchtughtungtuy``uch`ugh`uy`vaghvangvay`veghvengvIngvoghvongwaghwaw`way`wechweghwIchwIghwochwoghyachyaghyangyay`yongyuchyugh100011111234149215001600170017761800181219001910192019251930193519401945195019551960196519701975198019851990199119921993199419951996199720002001202022222345246830003333345640004321444445675000555556786000666667897000777780008888900098769999'
akl[5] = '`arghbaQa`baratbarghbatlhberghbotlhburghbutlhchachchaghchaw`chay`chechcheghchIchchongchuchchungDarghDenIbDIronDIvI`DotlhDuSaQ`elaS`etlhghachghaghghangghaw`gheghghIchghIghghochghoghghongghungghuy`Ha`onHarghHaStaHatlhHeDonHerghHIja`HIvHeHotlhHumanHurghHutlh`ItlhjarghjatlhjInaqjotlhlarghlatlhletlhlotlhlurghlutlhmaSIrmatlhmoHaqmojaqmojaQmorghmotlhmutlhnaDevnarghnatlhnetlhngachngaghngay`ngechngengngochngoghngongngoy`ngughnIponnItebnItlhnorghnotlhnural`obe``otlhpatlhpetaQpIqaDpItlhporghpotlhqama`QarghqatlhQatlhqetlhqevaSqIvonQonoSqorghQorghqotlhQotlhqurghqutlhQutlhratlhretlhrItlhrotlhrutlhSanIDSarghSatlhSeparSIbI`SIla`SIrghSorghSurghSutlhtarghtatlhtera`tetlhtlha`tlhabtlhamtlhaptlhaqtlhaQtlhaStlhattlhaytlhe`tlheDtlhejtlhertlhIbtlhIHtlhIjtlhIltlhImtlhIqtlhIStlhIvtlho`tlhobtlhojtlholtlhontlhoptlhoQtlhoStlhottlhovtlhoytlhu`tlhuDtlhuHtlhuptlhuQtoDujtotlh`urgh`uSu``utlhvatlhverghvetlhvIraSwanI`watlhwItlhwutlhyatlhyerghyotlh'
akl[6] = '`alnIl`ampaS`aplo``aqleH`aQlo``aqnaw`aqroS`avwI``awje`baHjanbaHwI`be`HombelHa`be`nalbe`nI`beqpujbetleHbeylI`bIQ`a`bIQDepbIQSIpbIQtIqbIQyInbI`relbI`reSbIS`ubbo`DIjbolwI`bomwI`boQDu`boqHa`boqratbortaSbotjanbuq`IrbuqjajbuSHa`chabalcharghchatlhcherghchIrghchIvo`chorghchuQunDaHjajDa`nalDarSeqDaSjajDaSpu`DavHamDa`vI`DayquSDeSqIvDevwI`De`wI`DIlyumDo`Ha`DoHmoHDojmeyDuDwI`DuQwI`Duy`a``eDjen`ejDo``ejyo``elpI``e`mam`e`nal`eQway`er`In`eSpeDgharghghatlhghevI`ghItlhghobe`gho`DoghorghghotI`HablI`HajDobHaqtajHa`qujHaqwI`HejwI`He`So`HeSwI`HeySelHIjwI`HISlaHHI`tuyHIvDujHIvje`HIvneSHolQeDHomwI`Hoqra`HoSDo`HovpoHHubneSHur`IqHut`In`IqnaH`IrneH`ISjaH`IvtIHjabwI`jajlo`jajvamjaQHa`jaqmoHjatyInjejHa`jentu`jeqqIjjInmoljIrmoHjIvvo`jojlu`jolpa`jolpatjonpInjonta`jonwI`joqwI`jornebjornubjorwI`jotHa`jubbe`juHqo`julSIpla``a`lajQo`lalDanla`quvla`SIvlawrI`le`be`le`mISleSpalleSpoHleSSovletbaQle`yo`lIghonlInDablItHa`lobHa`loDHomloDnalloDnI`loHjanlojmItlo`laHlolmoHloltaHlopno`lorbe`lorloDloSpevlulIghlupwI`luSpetmaDyarmaHpInmajQa`malja`maqochmarwI`maSwovmatHa`ma`veqmavje`mavjopmej`aDme`nalmeqba`meqleHmevyapmeyrI`mIl`oDmIqta`mISmoHmIv`a`mupwI`mu`qaDmuvmoHmuvtaynaDHa`naHjejnaHletnalqaDnamtunnanwI`naQHomnaQjejna`rannatlISneHjejneHmaHnejwI`nentaynepwI`neSlo`ngotlhnIbpoHnIHwI`nIqDobnISwI`nIvnavnIvqu`nIyma`nobHa`noreghnotqa`nubwI`nughI`nuHHomnuHmeynuHpInnuqDaqnuqneH`obmaQ`oDwI``o`lav`oQqar`o`rIS`orwI``oSwI``o`wenpabHa`parHa`parmaqpaw`aDpeb`otpel`aQpemjeppetqaDpe`vIlpIjHa`pIlmoHpIn`a`pIpyuSpIQHa`pIrmuSpIvlobpoDmoHpolHa`poSmoHpovjajpu`beHpu`bejpu`beqpu`DaHpu`jInpujmoHpujwI`pummoHpuqbe`puqloDpuqnI`puyjaqQa`Homqal`aqqalmoHqa`meHqanraDqanwI`Qapla`Qa`rajqarDaSqa`rI`qa`rolqaryoqqatru`qa`vamqav`apqa`vaQqa`vInqawHaqqawmoHqaywI`QeDpInQemjIqqempa`QenvobQep`ItqevpobqewwI`QeyHa`QeymoHqIbHeSQI`lopqImHa`QISmaSQI`tu`QI`yaHQoghIjqol`omqolqoSQo`noSqonwI`QopmoHqo`qaDqorDu`qoSta`Qoyje`qughDoquHvajQulpa`QumpInQumranqumwI`QumwI`quprIpquvHa`quvmoHqu`vu`quy`IpraHta`rajma`ramjepraQpo`raSya`ra`tajrav`eqra`wI`renwI`ret`aqrewbe`rIHwI`rIlwI`rIQmoHrI`Se`rIvSo`rIymuSrojHomrojmabronmoHropyaHroSwI`ru`Ha`runpI`ruStaySa`HutSaqjanSeDveqSeHlawSenwI`SerrumSe`tu`Se`vIrSeymoHSIbDoHSIjwI`SIqwI`SIQwI`SIrlIySIryoDSo`Ha`SomrawSoQmoHSorpuqSorya`SoSborSoSnI`So`wI`Su`lopSu`nImSuqqa`SuqSIvSuSDeqSuvwI`SuyDujtaDmoHtagha`taHqeqtajtIqtajvajtamlertammoHtaq`evtaSmantaymoHtayqeqtebwI`tennuStenwalteywI`tIjwI`tI`wI`tlhachtlhaghtlhaw`tlheghtlhIchtlhochtlhoghtlhongtlhoy`tlhuchto`bajtoDDujtoDSaHtoplIntoppa`toQDujtoqwInto`waQtuHmoHtu`lu`tu`lumtuQDoqtuQmoHtuqvol`uD`a``uj`a``uQ`a``urwI``uSqanvabDotvaHbo`van`a`vaS`a`vavnI`vayya`veDDIrvelqa`velwI`vem`eqvemmoHveQDujveraghveSDujvID`IrvIlle`vInDa`voDleHvonlu`voqHa`voQSIpvulqanvutpa`vut`unvutwI`vu`wI`wa`Hu`wa`leSwa`maHwamwI`wanHa`warjunwejpuHwejwa`wIlpuqyajHa`yanwI`yatqapyej`anyejHaDyejquvyepHa`yerghoyInroHyInSIpyIvbeHyoHwI`yonmoHyopwaHyuDHa`yu`eghyu`muDyupma`yuQHom'
akl[7] = "`arloghbachHa`baghHa'baghneQbaqgholbe`joy`bIghHa`bobcho`bo`Daghbo`Deghboq`eghborghelcha`bIpcha`Do`cha`Hu`cha`leSchamwI`cha`naSchanDoqcha`neHcha`nobcha`parcha`pujcha`qu`cheb`a`chelwI`chemvaHchenmoHche`roncheSvelchetvI`chIjwI`chob`a`choljaHchonnaQchontaychoptaHchotwI`chunDabchuq`a`chuvmeychu`wI`chuyDaHDaghtujDaqtaghDeghwI`DIghna`DoghjeyDov`aghDoy`yuSDungluQ`echlet`evnaghghajwI`ghanjaqghantoHgharwI`ghaytanghe`naQghe``orghe`torghetwI`ghInjajghIntaqghIpDIjghIqtalghISDenghojmoHghojmoqghojwI`ghom`a`ghomHa`ghonDoqghopDapghoqwI`ghubDaQghuHmoHHanDoghHaQchorHeghba`HeghbatHeghmoHHeghtayHIchDalHochHomHoH`eghHo``oy`HoSchemHoSghajHovtay`HuchQeDHurDaghHutDIchHu`teghHutvagh`IghvaH`Impey`ja`chuqjaghla`javDIchjengva`jey`naSjolvoy`jungwoqlay`Ha`lengwI`lIngta`lIngwI`loghjajloghqamlolchu`loSDIchlurDechmaghwI`majyangmangHommaQmIghmay`Dujmay`ronmegh`anmelchoQmeSchuSmey`HoSmIlloghmoy`bI`muchpa`muchwI`mu`ghommughwI`mu`tay`naHnaghnamwechnawloghnenchoHnenghepnevDaghngaDmoHngawDeqngeHbejngep`oSngevwI`ngIDvoSngoqDe`ngujlepnguSDI`nguvmoHno`neghno``ochnoSvagh`o`megh`orghen`oy`naQparbIngpaSloghpe``eghpeHgheppIvchempIvghorpuchpa`pu`HIchqaghwI`Qapchu`Qay`wI`QIghpejQIncha`Qochbe`qompoghQongDaqQorwaghQuchHa`qughDujqutluchrachwI`ra`DuchroghmoHroghvaHromuluSSaqghomSonchIySotlaw`SupghewSurchemSuvchu`SuwomIytangqa`taQbangteblaw`teghbattey`be`tey`loDtIqnaghtlhatlhtlhetlhtlhorghtlhutlhtongDujtonSaw`toy`wI`tungHa`tuqnIgh`uchHa``urmang`uSghebva`nuchvengHomvIghro`vItHay`volchaHvulchoHwa`chawwa`DIchwa`loghwaqbochwejdIchwornaghyIntaghyoD`egh"
akl[8] = '`alngegh`atlhqambatlhHa`bertlhambIraqlulbIreqtalcha`DIchchaDvay`cha`loghchalqachchoghvatchuHchu`chuS`ughDenIbya`DenmarghDujtlhuQ`elaDya``elI`jaHghangwI`ghochwI`ghogh`otHa`DIbaHHay`chu`HerghwI`HIDjolevHochDIchHochloghHongghorHotlhwI`Huy`Dung`Italya`jabbI`IDlaSvarghlotlhmoqlotlhwI`mangghommatlhHa`may`luchmongDechmoQbara`motlhbe`mughato`mutlhwI`naghbochnga`chuqnItebHa`nuqjatlh`otlhQeD`otlhtejpaghDIchpaghloghpIraqSISporghQeDqajunpaQqa`naDa`qatlhDa`qelI`qamqettlhupQI`tomerqIvo`rItqorghwI`QovpatlhQu`vatlhreghuluSrejmorghruDelya`rutlhHomSIbI`Ha`SochDIchSuverya`tengchaHtIngDaghtlhapqa`tlhaptIHtlhepQe`tlhevjaQtlhIlHaltlhIlwI`tlhImqaHtlhIngantlhombuStlho`rentlhu`moHtova`DaqturIqya``urghwI`vaghDIchvatlhvI`veqlarghverenganvIlInHoDyISra`elyutlheghyuvtlhe`'
akl[9] = '`aSralya`be`nI`nalbIreQtaghchang`engcharghwI`chovnatlhDenIbnganDe`wI`HomDoyIchlan`eDSeHcha`e`mamnal`eSpanya`gha`tlhIqghay`cha`ghIlaSnoSghItlhjajghItlhwI`ghuy`cha``Internet`IrneHnal`I`SeghIm`IwgharghlIghonganlIghonya`loDnI`nallojmItjajlo`laHbe`lolSeHchalupDujHommay`morghmebpa`meymeqro`vaqmupwI`Hommu`tlheghnajmoHwI`ne`DerlannItlhpachnoHva`Dutnuralngannu`SIylanparmaqqayportughalpuqnI`be`puqnI`loDqarDaSQa`qaryoq`a`QeyHa`moHqItI`nga`quvHa`moHroSHa`moHruq`e`vetSermanyuQSopwI`pa`SoSbor`a`tajHommeytajvaj`a`tajvajHomtalarngantarDIghaDtennuSnaltera`ngantuQHa`moHtuqjIjQa`vIttlheghvIychorghvoHDajbo`vulqanganweQmoQnaQwovmoHwI`yIrIDnganyuQjIjQa`'
akl[10] = 'bochmoHwI`boqHa``eghcha`pujqutchenmoHwI`chorghDIch`echletHom`ejyo`waw`ghaytanHa`Hur`IqnganlIghonnganlolchu`taHngaDmoHwI``orghengan`orghenya`qarDaSnganQongDaqDaqra`ghomquvSay`qu`moHtepqengwI`tIjwI`ghomtlharghDujtlhorghHa`toy`wI``a`wa`maHDIch'
akl[11] = 'lo`laHghachnaDHa`ghachnaDqa`ghachpaQDI`norghquvHa`ghachromuluSnganSuto`vo`qortu`HomI`raHyuQjIjDIvI`'
akl[12] = 'chechtlhutlhDenIbya`nganDIvI`may`DujDuQwI`HommeyreghuluSngan'
akl[13] = 'lIghonya`nganngaQHa`moHwI`'
akl[14] = 'lo`laHbe`ghach`orghenya`nganro`qegh`Iwchab'

for (let i = 1; i < 15; i++) {
  for (let j = 0; j < akl[i].length; j += i) {
    alternateKlingon.push(akl[i].substring(j, j + i))
  }
}
