Free javascript Hosting


index-d2c796da.js

Uploaded on Feb 22 2022 19:26 by wqfpijwtoptsaeklcl

var ts = (e, s) => () => (s || e((s = {
exports: {}
}).exports, s), s.exports);
var Ae = (e, s, t) => new Promise((l, i) => {
var n = a => {
try {
u(t.next(a))
} catch (r) {
i(r)
}
},
o = a => {
try {
u(t.throw(a))
} catch (r) {
i(r)
}
},
u = a => a.done ? l(a.value) : Promise.resolve(a.value).then(n, o);
u((t = t.apply(e, s)).next())
});
import {
c as m,
a as rs,
b as _e,
d as os,
p as V,
m as is,
u as Pe,
t as v,
s as be,
e as j,
f as x,
g as de,
h as C,
i as W,
o as Ce,
j as c,
k as ae,
l as te,
n as oe,
q as ls,
r as Fe,
N as Ne,
D as ns,
v as ds,
R as us,
L as cs,
w as je,
x as gs,
y as ms,
z as hs,
A as ys
} from "./vendor.9e53da76.js";
var ht = ts(as => {
const bs = function() {
const s = document.createElement("link").relList;
if (s && s.supports && s.supports("modulepreload")) return;
for (const i of document.querySelectorAll('link[rel="modulepreload"]')) l(i);
new MutationObserver(i => {
for (const n of i)
if (n.type === "childList")
for (const o of n.addedNodes) o.tagName === "LINK" && o.rel === "modulepreload" && l(o)
}).observe(document, {
childList: !0,
subtree: !0
});

function t(i) {
const n = {};
return i.integrity && (n.integrity = i.integrity), i.referrerpolicy && (n.referrerPolicy = i.referrerpolicy), i.crossorigin === "use-credentials" ? n.credentials = "include" : i.crossorigin === "anonymous" ? n.credentials = "omit" : n.credentials = "same-origin", n
}

function l(i) {
if (i.ep) return;
i.ep = !0;
const n = t(i);
fetch(i.href, n)
}
};
bs();
const ps = "https://www.merriam-webster.com/dictionary/",
pe = 2,
We = 2,
J = pe * We,
A = 9,
se = 5,
ee = {
year: 24 * 60 * 60 * 1e3 * 365,
month: 24 * 60 * 60 * 1e3 * 365 / 12,
day: 24 * 60 * 60 * 1e3,
hour: 60 * 60 * 1e3,
minute: 60 * 1e3,
second: 1e3
},
Ie = new Date("01/24/2022"),
Re = ee.day,
Ke = "abcdefghijklmnopqrstuvwxyz",
fs = [
["Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P"],
["A", "S", "D", "F", "G", "H", "J", "K", "L"],
["bs", "Z", "X", "C", "V", "B", "N", "M", "enter"]
],
ks = [
["Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P"],
["A", "S", "D", "F", "G", "H", "J", "K", "L"],
["enter", "Z", "X", "C", "V", "B", "N", "M", "bs"]
],
Qe = !!navigator.vibrate,
ws = ["ipad simulator", "iphone simulator", "ipod simulator", "ipad", "iphone", "ipod"].indexOf(navigator.platform.toLowerCase()) >= 0 || navigator.userAgent.toLowerCase().includes("mac") && "ontouchend" in document,
He = "standalone" in window.navigator && window.navigator.standalone === !0;
/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(navigator.userAgent);
window.matchMedia("(display-mode: standalone)").matches;
const vs = navigator.share && navigator.canShare && navigator.canShare({
text: "test share text"
}),
xs = navigator.share && navigator.canShare && navigator.canShare({
text: "test share text",
files: [new File([new Blob], "test.png", {
type: "image/png"
})]
}),
zs = ["gypsy", "gipsy", "mammy", "agora", "slave", "hussy"],
ke = new Set(zs),
Z = "aascii aboim abreu adams aires alges alice alijo allen alpes alves alvim amado amapa amaro amato andre angra anita antas antao apolo apple araao argel arles artur aruba assis basic bescl bacon baiao basto belem benim bento berna berta berto bessa bizet boole borba boris bouro braga brama braun brito bruce bruno cabul cacem cairo canaa carla carmo carol catar ceara celso ceuta chade chang chico chile china circe cobol cohen comba congo corao cosme costa crato creta cunha cadis catia celia cesar curia daire damas dante dario david davis diabo diana diego dinis diogo dirac doris douro dulce durao dacia eanes edgar edite egito elias elisa elvas emile erich ernst estio euler evans faial faria feijo fraga franz freud fritz furna fabio felix gabao gates geres gilda girao goias gomes gomez graca grieg guida guine galia haiti halle hansa hegel helen helga henri hoare inesc ippar intel irene isaac islao ivone jacob jaime james janet janus japao jeova jesus joana jonas jorge josef josue judas jules julie julia julio latex lajes laura leida linux liege lopes lopez louis loule lousa lucas luigi lumen luzia luisa lazio libia lidia lilia lucia lucio macau madre mafra magda maias malta malva manel maome maria marie marim mariz marte marao matos mauro meije mendo miami midas mille milao minho mitra moniz monza moore morin morse morao moura murca mario nanci narva necas neiva nepal neves nobel notre nunes nadia nevis niger odete olhao oliva orfeu ormuz osaca otelo ourem paigc palop pedip paiva palau papas paris parma paula pauli paulo pacos peano pedro peres perez piaui pilar pinto pires pireu pirro porto prado praga psico padua povoa ramon ravel rioja robin romeu romao regio rodao ruben saara saint salmo samoa sarah sarre satan satis scala scott serpa sever silva simon simao sinai sines smith sofia soure sousa souto stern sudao susan sutra suica szabo satao sidon siria sonia tadeu taira taize tales talin tamao tarso tauro tebas teles telmo terra teseu texas thorp tiago tibre timor tirol tirso tomas tonga torga trofa troia tudor tunes turim tania tonia unita urais vanda vasco veiga verdi vesta viana viena vilar vinci vingt virgo viseu volga volta volvo vouga vania venus vitor xhtml zaire zelia abade abafa abafe abafo abala abale abalo abana abane abano abata abate abati abato abduz abeto aboba abobe abobo abole aboli abona abone abono abram abras abrem abres abria abril abrir abris abriu abula abulo abusa abuse abuso acaba acabe acabo acama acame acamo acaso acata acate acato aceda acede acedi acedo acena acene aceno acesa aceso achai acham achar achas achei achem aches achou acida acide acido acima acnes acode acola acuda acudi acudo acume acura acure acuro acusa acuse acuso adaga adais adega adego adeja adeje adejo adere aderi adeus adiai adiam adiar adias adida adido adiei adiem adies adiou adira adiro adita adite adito adobe adoce adora adore adoro adota adote adoto adoca adoco adros aduba adube adubo adufe adula adule adulo aduza aduzi aduzo advim advir advem afaga afago afama afame afamo afana afane afano afara afaca afaco afega afere aferi afeta afete afeto afiai afiam afiar afias afiei afiem afies afifa afife afifo afila afile afilo afina afine afino afins afiou afira afiro afixa afixe afixo aflua aflui afluo afofa afofe afofo afoga afogo afola afole afolo afono afora afore aforo aftas afuma afume afumo agiam agias agida agido agira agita agite agito agora agror aguai aguam aguar aguas aguce aguda agudo aguei aguem agues aguou aguca aguco ainda aipos ajais ajuda ajude ajudo alada alado alaga alago alais alapa alape alapo alara alava albas alcei alcem alces aldea alega alego aleis alema algas algoz algum alhea alhee alheo alhos aliai aliam aliar alias aliei aliem alies alija alije aliou alisa alise aliso almas aloca aloco aloja aloje alojo altar altas alter altos aluai aluam aluar aluas aluda alude aludi aludo aluei aluem alues aluga alugo aluir aluis aluiu aluna alune aluno aluou aluia alvas alvor alvos alcai alcam alcar alcas alcou amada amais amara amare amava ambas ambos ameai amear ameba ameei ameia ameie ameio ameis amena ameno ameou amiba amido amiga amigo amima amime amimo amoja amoje amojo amola amole amolo amora amova amove amovi amovo ampla amplo amuai amuam amuar amuas amuei amuem amues amuos amuou amura amure amuro amens anafa anafe anafo anais anata anate anato ancas ancia andai andam andar andas andei andem andes andor andou anela anele anelo anexa anexe anexo anhos anila anile anilo anima anime animo anisa anise aniso aniao anjos anoja anoje anojo anosa anoso anota anote anoto ansas antes antro anual anuam anuas anuem anuir anuis anuiu anula anule anulo anuia anzol aneis anoes aonde aorta apaga apago apara apare aparo apeai apear apeei apega apego apeia apeie apeio apela apele apelo apeou apipa apipe apipo apita apite apito apoia apoie apoio apora apraz aproa aproe aproo aptas aptos apupa apupe apupo apura apure apuro apoem apoes aquem arada arade arado arais arama arame aramo arara arava arcai arcam arcar arcas arcaz arcos arcou ardam ardas ardei ardem arder ardes ardeu ardia ardil ardis ardor areal areia areis areja areje arejo arena arfai arfam arfar arfas arfei arfem arfes arfou argua argui arguo armai armam armar armas armei armem armes armou aroma arome aromo arpai arpam arpar arpas arpei arpem arpes arpoa arpoe arpoo arpou arpao arque arria arrie arrio arroz arrua arrue arruo artes asada asado asais asara asava ascos aseis asila asile asilo asnal asnas asnos aspas assai assam assar assas assaz assei assem asses assim assoa assoe assoo assou astro ataca ataco atada atado atais atara atava ateai ateam atear ateas ateei ateem atees ateia ateie ateio ateis ateou atera ateus ateve atiam atias atice atida atido atina atine atino atira atire atiro ativa ative ativo atica atico atlas atola atole atolo atona atone atono atrai atriz atroa atroe atroo atroz atras atuai atual atuam atuar atuas atuei atuem atues atuns atuou atura ature aturo atens atois audaz augia augir augiu aulas aunai auras autor autos autua autue autuo avara avaro aveia aveio avela aviai aviam aviar avias avida avido aviei aviem avier avies aviou avira avisa avise aviso aviva avive avivo aviao avens axial axila azara azare azaro azeda azede azedo azota azote azoto azuis azula azule azulo acude acoes aerea aereo aunam aunas aunem aunes babai babam babar babas babei babel babem babes babou babao bacia bacio baeta bafai bafam bafar bafas bafei bafem bafes bafio bafos bafou bagai bagam bagar bagas bagos bagou bague baila baile bailo baixa baixe baixo balas balda balde baldo balia balir baliu balsa balao bamba bambo bambu banal banam banas banca banco banda bando banem banes banha banhe banho bania banir banis baniu banjo banto banza banze banzo baque barba barbe barbo barca barco bardo bares barra barre barro barao basal basca basco bases basta baste batam batas batei batel batem bater bates bateu batia batom bazar bacas bacos baias beata beato bebam bebas bebei bebem beber bebes bebeu bebia becos beija beije beijo beira beire beiro beica beico belas belga belos bemol benta benza benze benzi benzo berma berra berre berro berco besta betao bicai bical bicam bicar bicas bicha biche bicho bicos bicou bidao bides biela bifes bigle bilha bilro bimba bingo bique birma birra birre birro bisai bisam bisar bisas bisca bisco bisei bisem bises bisou bispo bisao bloco blusa boata boate boato bobas bobos bocal bocas boche bodas bodes bofes bogas boiai boiam boiar boias boiei boiem boies boina boiou boiao bojai bojam bojar bojas bojei bojem bojes bojou bolai bolam bolar bolas bolbo bolei bolem boles bolha bolhe bolho bolor bolos bolou bolsa bolse bolso bomba bombo bonde bones borda borde bordo borla boroa borra borre borro bossa bosta boste bosto bosao botai botam botar botas botei botem botes botim botou botao bouce bouca bouco boite brada brade brado brame brami bramo brasa brava bravo braca braco breai brear breca breco breei breia breie breio brejo breou breta breve briga brigo briol brios brisa brita brite broas broca broco broma brome bromo brota brote broto bruma bruna brune bruni bruta bruto bruxa bruxe bruxo bucal bucha bucho bufai bufam bufar bufas bufei bufem bufes bufos bufou bufao bugia bugie bugio bulai bulam bular bulas bulbo bulei bulem bules bulha bulhe bulho bulia bulir bulis buliu bulou bumba burel burgo buril burla burle burlo burra burro busca busco busto buxos baria bario bilis bocio bofia bonus buzio cabal cabaz cabei cabem caber cabes cabia cabos cabra cacau cacei caces cacho cache cacos cafes cagai cagam cagar cagas cagou cague caiai caiam caiar caias caiba caibo caiei caiem caies caiou caira caixa cajus calai calam calar calas calca calce calco calda calde caldo calei calem cales calfe calha calhe calho calma calme calmo calor calos calou calva calve calvo calao camas campa campo canal canas canil canis canja canoa canos cansa canse canso canta cante canto capai capam capar capas capaz capei capem capes capim capou capta capte capto capuz capao caqui caras carda carde cardo carga cargo caria carie caril cario cariz carne caros carpa carpe carpi carpo carro carta carte carao casai casal casam casar casas casca casco casei casem cases casos casou caspa casta casto casao catai catam catas catei catem cates catos catou catre cauda caule causa cause causo cauto cavai cavam cavar cavas cavei cavem caves cavos cavou cacai cacam cacar cacas cacoa cacoe cacoo cacou cacao caida caido ceada ceado ceais ceata ceava cecal cedam cedas cedei cedem ceder cedes cedeu cedia cedro ceeis cegai cegam cegar cegas cegos cegou cegue ceiam ceias ceiem ceies ceifa ceife ceifo ceita celas celha celta cenas censo cento cepas cepos ceras cerca cerco cerna cerne cerni cerno cerra cerre cerro certa certo cervo cerzi cessa cesse cesso cesta cesto cetim cetra cetro chaga chago chale chama chame chamo chapa chape chapo chata chato chave chavo checa checo chefe chega chego cheia cheio cheta chiai chiam chiar chias chibo chiei chiem chies chila chino chiou chips chita chica choca choco chora chore choro chova chove chovi chovo chula chulo chule chupa chupe chupo chuta chute chuto chuva chuco choes ciano ciclo cidra cifra cifre cifro cimas cimos cinco cinda cinde cindi cindo cinge cingi cinja cinjo cinta cinte cinto cinza cinze cinzo ciosa cioso cipos circo cirza cirze cirzo cisai cisam cisar cisas cisco cisei cisem cises cisma cisme cismo cisne cisou cisao citai citam citar citas citei citem cites citou citro ciuma ciume ciumo civil civis clama clame clamo clara claro clava clave clero clica clico clima cliva clive clivo clona clone clono cloro clube coada coado coage coagi coais coaja coajo coara coava coaxa coaxe coaxo cobra cobre cobri cobro cocai cocam cocar cocas cocei cocem coces cocha coche cocho cocos cocou coeis coere coeri coesa coeso cofia cofie cofio cofre coibi coice coifa coima coira coiro coisa coiso coita coite coito colai colam colar colas colei colem coles colha colhe colhi colho colma colme colmo colos colou comam comas comei comem comer comes comeu comia comum conde cones conga conta conte conto copas copia copie copio copos copra copta coque corai coral coram corar coras corda corei corem cores corja corno coroa coroe coroo coros corou corpo corra corre corri corro corsa corso corta corte corto corvo corca corco cosam cosas cosei cosem coser coses coseu cosia cospe cotai cotam cotar cotas cotei cotem cotes cotos cotou cotao coube coura couro cousa couta coute couto couve coval covas covil covis covao coxal coxas coxia coxos coxao cozam cozas cozei cozem cozer cozes cozeu cozia coiba coibe coibo crase crava crave cravo crede credo creem creia creio crema creme cremo crepe crera criai criam criar crias crida crido criei criem cries crime crina criou crise criva crive crivo croma crome cromo cruas crude cruel cruza cruze cruzo cubai cubam cubar cubas cubei cubem cubes cubos cubou cubra cubro cucos cueca cuida cuide cuido cujas cujos culpa culpe culpo culta culto cumes cunhe cunho cupao curai curam curar curas curda curdo curei curem cures curie curou curro cursa curse curso curta curte curti curto curva curve curvo cuspa cuspe cuspi cuspo custa custe custo canon cesio cilio cirio civel codex colon codea dadas dador dados dalgo dalem damos danai danam danar danas dance dando danei danem danes danos danou danca danco daqui dardo darei darem dares daria daras darao datai datal datam datar datas datei datem dates datou davam davas dacao decai decil dedal dedos deduz dedao deita deite deito deixa deixe deixo delas delem deles delis delta demos demao densa denso denta dente dento depor depus depos depoe deram deras derem deres derme desce desci desde despe despi dessa desse desta deste desca desco deter detem deusa devam devas devei devem dever deves deveu devia devim devir deoes diaba dicas dieta digam digas digna digne digno dilam dilas dilua dilui diluo dinar dique direi diria diras dirao disca disco dispa dispo disse disso dista diste disto ditai ditam ditar ditas ditei ditem dites ditos ditou divas dizei dizem dizer dizes dizia doada doado doais doara doava dobai dobam dobar dobas dobei dobem dobes dobou dobra dobre dobro docas doces doeis doera dogma doida doido doira doire doiro domai domam domar domas domei domem domes domou donas donde donos dopai dopam dopar dopas dopei dopem dopes dopou dores dorme dormi dorso dosai dosam dosar dosas dosei dosem doses dosou dotai dotam dotar dotas dotei dotem dotes dotou doura doure douta douto doiam doias draga drago drama drena drene dreno drive droga drusa druso duais ducal duche duelo dueto dumas dunas dupla duplo duque durai duram durar duras durei durem dures durma durmo duros durou dalia debil derbi diodo docil dolar dubia dubio duzia ecoai ecoam ecoar ecoas ecoei ecoem ecoes ecoou ecras edema edita edito educa educo eflua eflui efluo efuso eiras eixos ejeta ejete ejeto elege elegi eleja elejo eleva eleve elevo elida elide elidi elido elite elmos eluda elude eludi eludo email emana emane emano emita emite emiti emito empoa empoe empoo emula emule emulo encha enche enchi encho enfia enfie enfim enfio enjoa enjoe enjoo enoja enoje enojo entes entoa entoe entoo entra entre entro entao envia envie envio ereta ereto ergam ergas ergue ergui erice erige erigi erija erijo erica erico ermos errai erram errar erras errei errem erres erros errou ervas escoa escoe escoo esmos espia espie espio esqui essas esses estai estar estas estes estou estao esvai etano etapa etnia euros evada evade evadi evado evita evite evito evoca evoco exala exale exalo exame exara exare exaro exata exato exiba exibe exibi exibo exige exigi exija exijo exila exile exilo exima exime eximi eximo expia expie expio expor expus expos expoe extra exula exule exulo exuma exume exumo facas faces facho facto facao fadai fadam fadar fadas fadei fadem fades fados fadou faias faina faixa faixe faixo falai falam falar falas falei falem fales falha falhe falho falia falir falis faliu falos falou falsa falso falta falte falto falua famas fanai fanam fanar fanas fanei fanem fanes fanfa fanfe fanfo fanou farad farao farda farde fardo farei farol faros farpa farpe farpo farra farsa farta farte farto faras fasea fasee faseo fases fasto fatal fatia fatie fatio fator fatos fauna fauno faval favas favor favos faxes fazei fazem fazer fazes fazia facam febra febre fecal fecha feche fecho fedam fedas fedei fedem feder fedes fedeu fedia fedor feias feios feira feire feiro feita feito feixe feliz fenda fende fendi fendo fenol fenos feras ferem feres feria ferie ferio ferir feris feriu fermi feroz ferra ferre ferro ferva ferve fervi fervo festa fetal fetos feudo fevra fezes fiada fiado fiais fiapo fiara fiava fibra ficai ficam ficar ficas ficha fiche ficho ficou fieis figas figos filai filam filar filas filei filem files filha filho filia filie filio filma filme filmo filos filou filao finai final finam finar finas finca finco finda finde findo finei finem fines finge fingi finja finjo finos finou finta finte finto fique firam firas firma firme firmo fisco fisga fisgo fitai fitam fitar fitas fitei fitem fites fitou fixai fixam fixar fixas fixei fixem fixes fixos fixou fizer flash flava flete fleti flita flito floco flora flore flori floro fluam fluas fluem fluir fluis fluiu fluxo fluia fluor fobia focai focal focam focar focas focos focou fodam fodas fodei fodem foder fodes fodeu fodia fofas fofos fogem foges fogos fogao foice folar foles folga folgo folha folhe folho folia folie folio fomes fomos fonia fonte foque foral foram foras forca force forco forem fores forja forje forjo forma forme formo forno foros forra forre forro forte fosca fosco fossa fosse fosso foste fotos fotao fouce fraca fraco frade frase freio freis freme fremi frena frene freno fresa frese freso freta frete freto frias frima frimo frios frisa frise friso frita frite frito frota fruam fruas fruem fruir fruis fruiu fruta fruto fruia fugas fugaz fugia fugir fugis fugiu fujam fujas fujao fulas fulos fumai fumam fumar fumas fumei fumem fumes fumos fumou fumao funda funde fundi fundo funga fungo funil funis furai furam furar furas furei furem fures furor furos furou furta furte furto furao fusas fusca fusco fusos fusao fuzil fuzis fucas facil fatuo femur fenix femea femeo fifia forum furia futil gabai gabam gabar gabas gabei gabem gabes gabou gados gagas gagos gaita gajas gajos gajao galai galam galar galas galei galem gales galga galgo galha galho galos galou galao gamai gamam gamar gamas gamba gamei gamem games gamos gamou gamao ganam ganas ganem ganes ganga ganha ganhe ganho gania ganir ganis ganiu ganso garbo gares garfa garfe garfo garra garre garri garro garca gases gasta gaste gasto gatas gatos gauss gazes gazua geada geado geais geara geava geeis geiam geias geiem geies gelai gelam gelar gelas gelei gelem geles gelos gelou gemai gemam gemar gemas gemei gemem gemer gemes gemeu gemia gemou genes genro gente gerai geral geram gerar geras gerei gerem geria gerir geris geriu germe gerou gessa gesse gesso gesta gesto gibao gigas ginga gingo ginja girai giram girar giras girei girem gires giros girou gizai gizam gizar gizas gizei gizem gizes gizou gleba glifo globo glosa glote gnoma gnomo gnose godas godos goela goele goelo goesa golas goles golfa golfe golfo golos golpe gomos gongo gonzo gorai goram gorar goras gorda gordo gorei gorem gores gorou gorra gorro gosta goste gosto gotas gozai gozam gozar gozas gozei gozem gozes gozos gozou graal grada grade grado grafa grafe grafo grama grame gramo grana grane grano grata grato graus grava grave gravo graxa grega grego grela grele grelo greta grete greto greve grifo grilo gripa gripe gripo grisa grise griso grita grite grito grosa grous gruas gruda grude grudo grupo gruta graos guapo guara guare guari guaro gueto guiai guiam guiar guias guiei guiem guies guina guino guiou guisa guise guiso guita guizo guiao gulas gumes gurus galio gavea gemea gemeo genio giria hajam hajas harpa harpe harpo harem hasta haste havei haver havia hemos heras herda herde herdo hertz heroi hiato hidra hiena hindi hindu hinos hirta hirto homem honor honra honre honro horas horda horta horto hoste hotel houve hulha humor hunas hunos hurra habil helio hifen himen humus iambo iates ibera ibero iceis idade ideal ideia idosa idoso ienes iglus igual ilesa ileso ilhai ilhal ilham ilhar ilhas ilhei ilhem ilhes ilhou ilheu iliba ilibe ilibo iluda ilude iludi iludo imago imame imane imbua imbui imbuo imita imite imito imola imole imolo impor impus impos impoe imune imuta imute imuto inala inale inalo inata inato incas incei incem inces incha inche incho incra incre incri incro induz ingre iniba inibe inibi inibo inova inove inovo input insta inste insto intra intua intui intuo inves incai incam incar incou iodai iodam iodar iodas iodei iodem iodes iodou irada irado irais irara irava irdes ireis iriam irias irisa irise iriso irmos irmao irmas iroso iscai iscam iscar iscas iscos iscou isola isole isolo isque istmo itens itera itere itero icada icado icais icara icava ionio jades janta jante janto jarda jarra jarro jatos jaula jazam jazas jazei jazem jazer jazes jazeu jazia jeans jeito jejua jejue jejum jejuo jipes jogai jogam jogar jogas jogos jogou jogue jogao joias jorra jorre jorro joule jovem jubas judeu judia judie judio jugos julga julgo julho junca junco junho junta junte junto jurai juram jurar juras jurei jurem jures juros jurou justa justo juiza juizo jonio juris labor lacas lacei lacem laces lacra lacre lacro lacta lacte lacto lados ladra ladre ladro lagar lagoa lagos laica laico laivo lamas lamba lambe lambi lambo lanar lance lanha lanhe lanho lanca lanco lapas lapso lapao lares larga largo larva lareu lasca lasco laser lassa lasse lasso latam latas latem lates latia latim latir latis latiu latao lauta lauto lavai lavam lavar lavas lavei lavem laves lavor lavou lavra lavre lavro lazer lacai lacam lacar lacos lacou leais lebre ledes ledor legai legal legam legar legas legou legue leiam leias leiga leigo leira leite leito leiva lemas lemes lemos lenda lendo lenha lenhe lenho lenta lente lento lenco leoas lepra leque leram leras lerei lerem leres leria lerao lesai lesam lesar lesas lesei lesem leses lesma lesme lesmo lesou lesse lesta leste lesto lesao letal letra letao letas levai levam levar levas levei levem leves levou leoes libra liceu licor lidai lidam lidar lidas lidei lidem lides lidos lidou ligai ligam ligar ligas ligou ligue lilas limai limam limar limas limbo limei limem limes limou limpa limpe limpo limao lince linda lindo linfa linha linho liras lisas lisos lista liste listo litro livra livre livro lixai lixam lixar lixas lixei lixem lixes lixos lixou licao lobal lobas lobos lobao locai local locam locar locas locou lodos logos logra logre logro loira loire loiro loisa loica lojas lomba lombo lonas longa longe longo loque lorde lorpa lotai lotam lotar lotas lotei lotem lotes lotos lotou louca louco loura loure louro louva louve louvo locao lucra lucre lucro lufai lufam lufar lufas lufei lufem lufes lufou lugar lulas lumes lunar lupas luras lusas lusco lusos lutai lutam lutar lutas lutei lutem lutes lutos lutou luvas luxai luxam luxar luxas luxei luxem luxes luxos luxou luzam luzas luzem luzes luzir luzis luziu labia labio lapis legua libio lider lieis lirio litio lupus macas macei macem maces macha macho macia macio macro magas magia magma magna magno magoa magoe magoo magos magra magro maior major malar malas males malga malha malhe malho malte mamai mamal mamam mamar mamas mambo mamei mamem mames mamou mamae mamao manai manam manar manas manca manco manda mande mando manei manem manes manga mango manha mania manja manje manjo manos manou mansa manso manta manto mapas marca marco mares marga marra marre marro marta masca masco maser massa matai matam matar matas matei matem mates matiz matou macai macam macar macos macou macao meada meado meato mecha medas medem medes media medir medis mediu medos medra medre medro meias meiga meigo meios melai melam melar melas melei melem meles melga meloa melou melra melro melao menir menor menos menta mente menti menus meras merce merda meros mesas meses mesma mesmo messe mesao metal metam metas metei metem meter metes meteu metia metro mexam mexas mexei mexem mexer mexes mexeu mexia mecam mecas miada miado miais miara miava micos micra micro mieis migai migam migar migas migou migra migre migro migue mijai mijam mijar mijas mijei mijem mijes mijos mijou mijao milha milho mimai mimam mimar mimas mimei mimem mimes mimos mimou minai minam minar minas minei minem mines minga mingo minha minou minta minto miolo mirai miram mirar miras mirei mirem mires mirou mirra mirre mirro missa misse misso mista misto mitos mitre mitro miuda miudo moais mocas mocho modal modas modem modos moeda moeis moela moera mofai mofam mofar mofas mofei mofem mofes mofou mogno moina moine moino moira moiro moita molar molas molda molde moldo moles molha molhe molho monas monco monda monde mondo monge monhe monja monta monte monto morai moral moram morar moras morda morde mordi mordo morei morem mores morna morno morou morra morre morri morro morsa morta morte morto mosca mossa mosse mosso mosto motas motel motes motim motor motos mouca mouco mouro movam movas movei movem mover moves moveu movia mocos mocao moiam moias moida moido mudai mudam mudar mudas mudei mudem mudes mudez mudos mudou mugem muges mugia mugir mugis mugiu muita muito mujam mujas mulas multa multe multi multo munam munas mundo munem munes munge mungi munia munir munis muniu munja munjo murai mural muram murar muras murei murem mures muros murou murro musal musas museu musgo mutua mutue mutuo mafia medio medao miope mobil movel mumia nabal nabos nacos nadai nadam nadar nadas nadei nadem nades nadou nafta naifa naipe najas nanai nanam nanar nanas nanei nanem nanes nanou nariz narra narre narro nasal nasce nasci nasca nasco natal natas natos naval naves navio nazis nacao negai negam negar negas negou negra negro negue nelas neles nenes nervo nesga nessa nesse nesta neste netas netos neura neuro nevar nevei nevou nevao nexos nicai nicam nicar nicas nicho nicou nimbo ninai ninam ninar ninas ninei ninem nines ninfa ninha ninhe ninho ninou nique nisso nisto nitra nitre nitro nobre nodal nodos noema noese noite noiva noive noivo nomes nonas noras norma norte nossa nosso notai notam notar notas notei notem notes notou novas novel novos nozes nocao nubla nuble nublo nucal nudez nulas nulos numas nunca nutra nutre nutri nutro nuvem nevoa nivel niveo nodoa nuveo obesa obeso oboes obrai obram obrar obras obrei obrem obres obrou obsta obste obsto obter obtem ocapi ocaso ocupa ocupe ocupo odeia odeie odeio odiai odiar odiei odiou odora odore odoro odres oeste ofega ofego ogiva ogres oirar oiros oicam oicas oleai olear oleei oleia oleie oleio oleou olhai olhal olham olhar olhas olhei olhem olhes olhos olhou olmos ombro omita omite omiti omito ondas onera onere onero ontem oncas opaca opaco opala opera opere opero opiai opiam opiar opias opiei opiem opies opina opine opino opiou opora optai optam optar optas optei optem optes optou opcao opoem opoes orada orado orais orara orava orcas orcei orcem orces ordem oreis orgia orlai orlam orlar orlas orlei orlem orles orlou ornai ornam ornar ornas ornei ornem ornes ornou orcai orcam orcar orcou osgas ossos ostra otite ougai ougam ougar ougas ougou ougue ourai ouram ourar ouras ourei oures ouros ourou ousai ousam ousar ousas ousei ousem ouses ousou outra outro ouvem ouves ouvia ouvir ouvis ouviu oucam oucas ovada ovado ovais ovala ovale ovalo ovara ovava oveis ovino oxala oxida oxide oxido ozona ozone ozono oasis oidio pacto padre pagai pagam pagar pagas pagos pagou pague pagao paiol paios paira paire pairo pajem palas palco palha palia palie palio palma palme palmo palpa palpe palpo palra palre palro panai panal panam panar panas panca panda panei panem panes panos panou papai papal papam papar papei papel papem papes papou papao parai param parar paras parca parco parda pardo parei parem pares paria parir pariu parla parle parlo parou parra parta parte parti parto parva parvo pasma pasme pasmo passa passe passo pasta paste pasto patas patim patos patao pausa pause pauso pauta paute pauto pavio pavoa pavor pavao pazes pecai pecam pecar pecas pecha pecou pedal pedem pedes pedia pedir pedis pediu pedra pegai pegam pegar pegas pegou pegue peito peixe pejai pejam pejar pejas pejei pejem pejes pejou pelai pelam pelar pelas pelei pelem peles pelos pelou pelve penai penal penam penar penas penca pence penda pende pendi pendo penei penem penes penha penou pensa pense penso pente peque peral peras perca perco perda perde perdi perna perra perro persa perto perua perus pesai pesam pesar pesas pesca pesco pesei pesem peses pesos pesou peste petiz pezes peoes peuga piada piado piais piano piara piava picai picam picar picas piche picos picou pieis piela pilai pilam pilas pilei pilem piles pilha pilhe pilho pilou pilao pimba pimpa pimpe pimpo pinga pingo pinha pinho pinos pinta pinte pinca piora piore pioro pipas pique pirai piram pirar piras pirei pirem pirou pisai pisam pisar pisas pisca pisco pisei pisem pises pisga pisgo pisos pisou pista piton pitao piteu pivos pixel pizas pizza pioes placa plana plane plano plebe plena pleno plexo plica plico pluma pneus pobre podai podal podam podar podas podei podem poder podes podia podou podre podao poema poeta poisa poise poiso pojai pojam pojar pojas pojei pojem pojes pojou polar polca polco polia polir polis poliu polos polpa polua polui poluo polvo pomar pomba pombo pomes pomos pompa ponde pondo ponha ponho ponta ponte ponto popos porca porco porei porem pores poria poros porra porta porte poras porao posai posam posar posas posei posem poses posou possa posse posso posta poste posto potes potra potro pouca pouco poupa poupe poupo pousa pouse pouso povoe povoo povos pocas pocos pocao praia prata prato praxe prazo praca prece preda prede predo prega prego prelo prema preme premi premo presa prese preso preta preto previ preve preza preze prezo preco prima prime primo prior priva prive privo priao proas probo profs prole prosa prose proso prova prove provi provo prumo prura prure pruri pruro puder pudim pudor pugna pugne pugno pujai pujam pujar pujas pujei pujem pujes pujou pulai pulam pular pulas pulei pulem pules pulga pulha pulos pulou pulsa pulse pulso pumas pumba punam punas punem punes punge pungi punha punho punia punir punis puniu punja punjo puras purga purgo puros puser putas putos puxai puxam puxar puxas puxei puxem puxes puxos puxou puxao patio penis pifia pifio podio polen ponei pubis quais quase queda quede quedo quero quico quilo quimo quina quine quino quita quite quito quivi quica quota rabos rabao racha rache racho radar radia radie radio rafai rafam rafar rafas rafei rafem rafes rafou raiai raiam raiar raias raiei raiem raies raios raiou raiva ralai ralam ralar ralas ralei ralem rales ralha ralhe ralho ralis ralos ralou ramal ramas ramos rampa rance range rangi ranho ranja ranjo ranca ranco rapai rapam rapar rapas rapaz rapei rapem rapes rapou rapta rapte rapto raras raros rasai rasam rasar rasas rasca rasco rasei rasem rases rasga rasgo rasos rasou raspa raspe raspo rasto ratai ratam ratar ratas ratei ratem rates ratos ratou ratao razia razie razio razoa razoe razoo razao racas racao reage reagi reais reaja reajo reata reate reato reava reave reavi reavo recai recua recue recuo recem redes redor reduz refaz refez refia refie refio refiz refem regai regam regar regas regei regem reger reges regeu regia regos regou regra regre regro regue reiam reias reina reine reino rejam rejas relam relas relei relem reler reles releu relia reluz relva relve relvo remai remam remar remas remei remem remes remia remir remis remiu remoa remoo remos remou remoi renal renas renda rende rendi rendo renha renhe renhi renho rente repas repor repta repte repto repus repos repoe resma resta reste resto retal retas reter retos retro retem reuma reuni reusa reuse reuso rever revia revim revir reviu revoo revem reves rezai rezam rezar rezas rezei rezem rezes rezou rezao reuna reune reuno riais ricas ricos ridas rides ridos rifai rifam rifar rifas rifei rifem rifes rifle rifou rigor rijas rijos rijao rilha rilhe rilho rimai rimam rimar rimas rimei rimem rimes rimos rimou rindo ripai ripam ripar ripas ripei ripem ripes ripou riram riras rirei rirem rires riria rirao risca risco risos risse riste ritma ritme ritmo ritos rival rixai rixam rixar rixas rixei rixem rixes rixou roais robes robos rocei rocem roces rocha rodai rodam rodar rodas rodei rodem rodes rodos rodou roeis roera rogai rogam rogar rogas rogos rogou rogue rojao rolai rolam rolar rolas rolei rolem roles rolha rolhe rolho rolos rolou rolao rombo rompa rompe rompi rompo romas ronca ronco ronda ronde rondo roque rosal rosas rosca rosco rosna rosne rosno rosto rotai rotam rotar rotas rotei rotem rotes rotor rotos rotou rouba roube roubo rouca rouco roupa roxas roxos rocai rocam rocar rocas rocou roiam roias roida roido ruais rubis rublo rubor rubra rubro rudes rudez ruela rufai rufam rufar rufas rufei rufem rufes rufia rufie rufio rufou rugas rugem ruges rugia rugir rugis rugiu ruins ruira ruiva ruivo rujam rujas rumai rumam rumar rumas rumei rumem rumes rumor rumos rumou rupia rural rusga rusgo russa russo rucas rucos ruiam ruias ruida ruido ruina racio radon rafia redea regie regua rieis rosea roseo rubeo sabei sabem saber sabes sabia sabor sabre sabao sacai sacam sacar sacas sacha sache sacho sacia sacie sacio sacos sacou sacra sacro sadia sadio safai safam safar safas safei safem safes safos safou safra sagas sagaz sagra sagre sagro sagui saiam saias saiba saira salas salda salde saldo salga salgo salsa salta salte salto salva salve salvo salao samba sambe sambo sanai sanam sanar sanas sanca sande sanei sanem sanes sanha sanou santa santo sapal sapos saque sarai saram sarar saras sarau sarda sarei sarem sares sarja sarje sarjo sarna sarne sarni sarno sarou sarro sarca sauna saxao saida saido sauda saude saudo seara sebes sebos secai secam secar secas secos secou sedai sedam sedar sedas sedei sedem sedes sedia sedie sedio sedou seduz segai segam segar segas segou segue segui seios seita seiva seixo sejam sejas selai selam selar selas selei selem seles selim selos selou selva senas senda sendo senha senil senis senra senso senta sente senti sento senao septo seque serei serem seres seria serie serio serpe serra serre serro serta serva serve servi servo serze serzi seras serao sesta setas setor sexos sexta sexto shell sidas sidos sidra sigam sigas sigla sigma signo sigui silos silve silvo sinal sinas sinha sinos sinta sinto sique sirga sirva sirvo sirza sirzo sisai sisam sisar sisas sisei sisem sises sismo sisou sites sitia sitie sitio sitos situa situe situo slide soada soado soais soara soava sobem sobes sobra sobre sobro socai socam socar socas socos socou soeis sofra sofre sofri sofro sofas sogra sogro solar solas solda solde soldo solha solos solta solte solto solva solve solvi solvo somai somam somar somas somei somem somes somos somou sonar sonda sonde sondo sonha sonhe sonho sonos sonsa sonso sopas sopra sopre sopro soque sorna sorne sorno soros sorri sorte sorti sorva sorve sorvi sorvo soube sovai sovam sovar sovas sovei sovem soves sovou staff stand stent stops suada suado suais suara suava suave subam subas subia subir subis subiu sucos sueca sueco sueis sueva suevo sufle sugai sugam sugar sugas sugou sugue suite sujai sujam sujar sujas sujei sujem sujes sujos sujou sulca sulco sumam sumas sumia sumir sumis sumiu sumos super supor supra supre supri supro supus supos supoe surda surde surdi surdo surfe surge surgi surja surjo surra surre surro surta surte surti surto sushi susta suste susto sutia suina suino suico sabio savel semen semea silex simio sirio socia socio sodio soror sosia sotao tabus tacha tache tacho tacos tacao taipa talai talam talar talas talco talei talem talha talhe talho talos talou talao tampa tampe tampo tanas tanga tange tangi tango tanja tanjo tanso tanta tanto tapai tapam tapar tapas tapei tapem tapes tapir tapou tarai taram tarar taras tarda tarde tardo tarei tarem tares tarja tarje tarjo tarou tarte tasca tasco tatua tatue tatuo tatus taxai taxam taxar taxas taxei taxem taxes taxou tacas tecei tecem tecer teces teceu tecia tecla tecle teclo teias teima teime teimo teixo telas telex telha telhe telho telao temam temas temei temem temer temes temeu temia temor temos tempo tenaz tenda tende tendi tendo tenha tenho tenor tenra tenro tensa tenso tenta tente tento terce terei terem teres teria termo terna terno teras terao terca terco tesas teses tesos testa teste testo tesao tetas tetos texto tecam tecas tiara tidas tidos tifos tigre tinam tinas tinem tines tinga tinge tingi tinha tinia tinir tinis tiniu tinja tinjo tinta tinto tipas tipos tique tirai tiram tirar tiras tirei tirem tires tiros tirou tisna tisne tisno titas tiver ticao toada toado toais toara toava tocai tocam tocar tocas tocha tocou todas todos toeis togai togam togar togas togou togue toiro tojos tolas tolda tolde toldo tolha tolhe tolhi tolho tolos tomai tomam tomar tomba tombe tombo tomei tomem tomes tomos tomou tonai tonal tonam tonar tonas tonei tonel tonem tones tonou tonta tonto topai topam topar topas topei topem topes topos topou toque torai toram torar toras torce torci torda tordo torei torem tores torna torne torno toros torou torpe torra torre torro torso torta torto torva torve torvo torca torco tosca tosco tosse tossi tosta toste tosto total totem touca touco toura touro trace traem traga trago traia traio trair trais traiu traja traje trajo trama trame tramo trapo trara trata trate trato trava trave travo traca traco trela trema treme tremi tremo trens treno trepa trepe trepo treta treva trevo treze tribo trico trigo trina trine trino trios tripa tripe troai troam troar troas troca troce troco troei troem troes trono troou tropa trota trote troto trova trove trovo trufa trufe trufo trupe truta tubas tubos tufai tufam tufar tufas tufei tufem tufes tufos tufou tufao tugia tugir tugiu tumba tumor tunas tuplo turba turbe turbo turca turco turfa turma turno turne turra turva turve turvo tussa tusso tutor tabua talio tatil taxis tamil tedio tenia tenis tenue tetum tibia tilia torax torio tunel uivai uivam uivar uivas uivei uivem uives uivos uivou ultra ulula ulule ululo unais ungem unges ungia ungir ungis ungiu unhai unham unhar unhas unhei unhem unhes unhou uniam unias unida unido unira uniao unjam unjas untai untam untar untas untei untem untes untou uncao urbes urdam urdas urdem urdes urdia urdir urdis urdiu ureia urgem urges urgia urgir urgis urgiu urina urine urino urjam urjas urnas urrai urram urrar urras urrei urrem urres urros urrou ursas ursos urubu urzal urzes usada usado usais usara usava useis usina usual usura uvaca vacas vades vadia vadie vadio vagai vagam vagar vagas vagem vagos vagou vague vagao vaiai vaiam vaiar vaias vaiei vaiem vaies vaiou valai valam valar valas valei valem valer vales valeu valha valho valia valor valou valsa valse valso valva vamos vapor varai varal varam varar varas varei varem vares varia varie vario variz varou varra varre varri varro varao vasas vasos vasta vasto vazai vazam vazar vazas vazei vazem vazes vazia vazie vazio vazou vazao veada veado vedai vedam vedar vedas vedei vedem vedes vedou veias veios vejam vejas velai velam velar velas velei velem veles velha velho velou veloz vemos vence venci venda vende vendi vendo venha venho venta vento venca venco verba verbo verde verei verem veres verga vergo veria verme versa verse verso verta verte verti verto veras verao vesga vesgo vespa veste vesti vetai vetam vetar vetas vetei vetem vetes vetor vetos vetou vexai vexam vexar vexas vexei vexem vexes vexou vezes viaja viaje viajo vibra vibre vibro vicia vicie vicio vidas vides vidra vidre vidro viela viera vigas vigia vigie vigio vigor vilas vilao vimos vinca vinco vinda vinde vindo vinga vingo vinha vinho vinil vinis vinte viola viole violo virai viral viram virar viras virei virem vires viria viril viris virou virao visai visam visar visas visco visei visem vises visor visos visou visse vista viste visto visao vitae vital vivam vivas vivaz vivei vivem viver vives viveu vivia vivos vizir viuva viuve viuvo voada voado voais voara voava vocal voces vodca voeis voeja voeje voejo vogai vogal vogam vogar vogas vogou vogue volte volto volts volva volve volvi voraz vossa vosso votai votam votar votas votei votem votes votos votou vozes vulgo vulto vulva vacuo venia video vieis virus volei xaile xales xelim xeque xerez xexes xiita xinga xingo xisto xviii xenon zanga zango zarpa zarpe zarpo zebra zebre zebro zelai zelam zelar zelas zelei zelem zeles zelos zelou zeros zinca zinco zoada zoado zoais zoara zoava zoeis zomba zombe zombo zonal zonas zonzo zooms zorra zorro zulos zumba zumbe zumbi zumbo zurra zurre zurro zurza zurze zurzi zurzo zinia agata argon atalo atila avila edipo efeso evora icaro oscar urano abaco acaro ageis aguia alamo album alibi apice arabe ardua arduo areas arias arida arido atomo atrio audio aurea aureo azimo amago ambar anodo ansia ebano ebria ebrio ebulo egide eguas epica epico epoca ereis etica etico etimo exito exodo iamos icone idolo ignea impar impia impio index india indio invio obice obito obvia obvio ocios oculo odios oleos omega orfao orfas orgao ossea osseo otica otico otima otimo ovnis ovulo umero unica unico urica urico uteis utero".split(" "),
Ue = new Set(Z),
$s = "ascii aboim abreu adams aires alges alice alijo allen alpes alves alvim amado amapa amaro amato andre angra anita antas antao apolo apple araao argel arles artur aruba assis basic bescl bacon baiao basto belem benim bento berna berta berto bessa bizet boole borba boris bouro braga brama braun brito bruce bruno cabul cacem cairo canaa carla carmo carol catar ceara celso ceuta chade chang chico chile china circe cobol cohen comba congo corao cosme costa crato creta cunha cadis catia celia cesar curia daire damas dante dario david davis diabo diana diego dinis diogo dirac doris douro dulce durao dacia eanes edgar edite egito elias elisa elvas emile erich ernst estio euler evans faial faria feijo fraga franz freud fritz furna fabio felix gabao gates geres gilda girao goias gomes gomez graca grieg guida guine galia haiti halle hansa hegel helen helga henri hoare inesc ippar intel irene isaac islao ivone jacob jaime james janet janus japao jeova jesus joana jonas jorge josef josue judas jules julie julia julio latex lajes laura leida linux liege lopes lopez louis loule lousa lucas luigi lumen luzia luisa lazio libia lidia lilia lucia lucio macau madre mafra magda maias malta malva manel maome maria marie marim mariz marte marao matos mauro meije mendo miami midas mille milao minho mitra moniz monza moore morin morse morao moura murca mario nanci narva necas neiva nepal neves nobel notre nunes nadia nevis niger odete olhao oliva orfeu ormuz osaca otelo ourem paigc palop pedip paiva palau papas paris parma paula pauli paulo pacos peano pedro peres perez piaui pilar pinto pires pireu pirro porto prado praga psico padua povoa ramon ravel rioja robin romeu romao regio rodao ruben saara saint salmo samoa sarah sarre satan satis scala scott serpa sever silva simon simao sinai sines smith sofia soure sousa souto stern sudao susan sutra suica szabo satao sidon siria sonia tadeu taira taize tales talin tamao tarso tauro tebas teles telmo terra teseu texas thorp tiago tibre timor tirol tirso tomas tonga torga trofa troia tudor tunes turim tania tonia unita urais vanda vasco veiga verdi vesta viana viena vilar vinci vingt virgo viseu volga volta volvo vouga vania venus vitor xhtml zaire zelia abade abafa abafe abafo abala abale abalo abana abane abano abata abate abati abato abduz abeto aboba abobe abobo abole aboli abona abone abono abram abras abrem abres abria abril abrir abris abriu abula abulo abusa abuse abuso acaba acabe acabo acama acame acamo acaso acata acate acato aceda acede acedi acedo acena acene aceno acesa aceso achai acham achar achas achei achem aches achou acida acide acido acima acnes acode acola acuda acudi acudo acume acura acure acuro acusa acuse acuso adaga adais adega adego adeja adeje adejo adere aderi adeus adiai adiam adiar adias adida adido adiei adiem adies adiou adira adiro adita adite adito adobe adoce adora adore adoro adota adote adoto adoca adoco adros aduba adube adubo adufe adula adule adulo aduza aduzi aduzo advim advir advem afaga afago afama afame afamo afana afane afano afara afaca afaco afega afere aferi afeta afete afeto afiai afiam afiar afias afiei afiem afies afifa afife afifo afila afile afilo afina afine afino afins afiou afira afiro afixa afixe afixo aflua aflui afluo afofa afofe afofo afoga afogo afola afole afolo afono afora afore aforo aftas afuma afume afumo agiam agias agida agido agira agita agite agito agora agror aguai aguam aguar aguas aguce aguda agudo aguei aguem agues aguou aguca aguco ainda aipos ajais ajuda ajude ajudo alada alado alaga alago alais alapa alape alapo alara alava albas alcei alcem alces aldea alega alego aleis alema algas algoz algum alhea alhee alheo alhos aliai aliam aliar alias aliei aliem alies alija alije aliou alisa alise aliso almas aloca aloco aloja aloje alojo altar altas alter altos aluai aluam aluar aluas aluda alude aludi aludo aluei aluem alues aluga alugo aluir aluis aluiu aluna alune aluno aluou aluia alvas alvor alvos alcai alcam alcar alcas alcou amada amais amara amare amava ambas ambos ameai amear ameba ameei ameia ameie ameio ameis amena ameno ameou amiba amido amiga amigo amima amime amimo amoja amoje amojo amola amole amolo amora amova amove amovi amovo ampla amplo amuai amuam amuar amuas amuei amuem amues amuos amuou amura amure amuro amens anafa anafe anafo anais anata anate anato ancas ancia andai andam andar andas andei andem andes andor andou anela anele anelo anexa anexe anexo anhos anila anile anilo anima anime animo anisa anise aniso aniao anjos anoja anoje anojo anosa anoso anota anote anoto ansas antes antro anual anuam anuas anuem anuir anuis anuiu anula anule anulo anuia anzol aneis anoes aonde aorta apaga apago apara apare aparo apeai apear apeei apega apego apeia apeie apeio apela apele apelo apeou apipa apipe apipo apita apite apito apoia apoie apoio apora apraz aproa aproe aproo aptas aptos apupa apupe apupo apura apure apuro apoem apoes aquem arada arade arado arais arama arame aramo arara arava arcai arcam arcar arcas arcaz arcos arcou ardam ardas ardei ardem arder ardes ardeu ardia ardil ardis ardor areal areia areis areja areje arejo arena arfai arfam arfar arfas arfei arfem arfes arfou argua argui arguo armai armam armar armas armei armem armes armou aroma arome aromo arpai arpam arpar arpas arpei arpem arpes arpoa arpoe arpoo arpou arpao arque arria arrie arrio arroz arrua arrue arruo artes asada asado asais asara asava ascos aseis asila asile asilo asnal asnas asnos aspas assai assam assar assas assaz assei assem asses assim assoa assoe assoo assou astro ataca ataco atada atado atais atara atava ateai ateam atear ateas ateei ateem atees ateia ateie ateio ateis ateou atera ateus ateve atiam atias atice atida atido atina atine atino atira atire atiro ativa ative ativo atica atico atlas atola atole atolo atona atone atono atrai atriz atroa atroe atroo atroz atras atuai atual atuam atuar atuas atuei atuem atues atuns atuou atura ature aturo atens atois audaz augia augir augiu aulas aunai auras autor autos autua autue autuo avara avaro aveia aveio avela aviai aviam aviar avias avida avido aviei aviem avier avies aviou avira avisa avise aviso aviva avive avivo aviao avens axial axila azara azare azaro azeda azede azedo azota azote azoto azuis azula azule azulo acude acoes aerea aereo aunam aunas aunem aunes babai babam babar babas babei babel babem babes babou babao bacia bacio baeta bafai bafam bafar bafas bafei bafem bafes bafio bafos bafou bagai bagam bagar bagas bagos bagou bague baila baile bailo baixa baixe baixo balas balda balde baldo balia balir baliu balsa balao bamba bambo bambu banal banam banas banca banco banda bando banem banes banha banhe banho bania banir banis baniu banjo banto banza banze banzo baque barba barbe barbo barca barco bardo bares barra barre barro barao basal basca basco bases basta baste batam batas batei batel batem bater bates bateu batia batom bazar bacas bacos baias beata beato bebam bebas bebei bebem beber bebes bebeu bebia becos beija beije beijo beira beire beiro beica beico belas belga belos bemol benta benza benze benzi benzo berma berra berre berro berco besta betao bicai bical bicam bicar bicas bicha biche bicho bicos bicou bidao bides biela bifes bigle bilha bilro bimba bingo bique birma birra birre birro bisai bisam bisar bisas bisca bisco bisei bisem bises bisou bispo bisao bloco blusa boata boate boato bobas bobos bocal bocas boche bodas bodes bofes bogas boiai boiam boiar boias boiei boiem boies boina boiou boiao bojai bojam bojar bojas bojei bojem bojes bojou bolai bolam bolar bolas bolbo bolei bolem boles bolha bolhe bolho bolor bolos bolou bolsa bolse bolso bomba bombo bonde bones borda borde bordo borla boroa borra borre borro bossa bosta boste bosto bosao botai botam botar botas botei botem botes botim botou botao bouce bouca bouco boite brada brade brado brame brami bramo brasa brava bravo braca braco breai brear breca breco breei breia breie breio brejo breou breta breve briga brigo briol brios brisa brita brite broas broca broco broma brome bromo brota brote broto bruma bruna brune bruni bruta bruto bruxa bruxe bruxo bucal bucha bucho bufai bufam bufar bufas bufei bufem bufes bufos bufou bufao bugia bugie bugio bulai bulam bular bulas bulbo bulei bulem bules bulha bulhe bulho bulia bulir bulis buliu bulou bumba burel burgo buril burla burle burlo burra burro busca busco busto buxos baria bario bilis bocio bofia bonus buzio cabal cabaz cabei cabem caber cabes cabia cabos cabra cacau cacei caces cacho cache cacos cafes cagai cagam cagar cagas cagou cague caiai caiam caiar caias caiba caibo caiei caiem caies caiou caira caixa cajus calai calam calar calas calca calce calco calda calde caldo calei calem cales calfe calha calhe calho calma calme calmo calor calos calou calva calve calvo calao camas campa campo canal canas canil canis canja canoa canos cansa canse canso canta cante canto capai capam capar capas capaz capei capem capes capim capou capta capte capto capuz capao caqui caras carda carde cardo carga cargo caria carie caril cario cariz carne caros carpa carpe carpi carpo carro carta carte carao casai casal casam casar casas casca casco casei casem cases casos casou caspa casta casto casao catai catam catas catei catem cates catos catou catre cauda caule causa cause causo cauto cavai cavam cavar cavas cavei cavem caves cavos cavou cacai cacam cacar cacas cacoa cacoe cacoo cacou cacao caida caido ceada ceado ceais ceata ceava cecal cedam cedas cedei cedem ceder cedes cedeu cedia cedro ceeis cegai cegam cegar cegas cegos cegou cegue ceiam ceias ceiem ceies ceifa ceife ceifo ceita celas celha celta cenas censo cento cepas cepos ceras cerca cerco cerna cerne cerni cerno cerra cerre cerro certa certo cervo cerzi cessa cesse cesso cesta cesto cetim cetra cetro chaga chago chale chama chame chamo chapa chape chapo chata chato chave chavo checa checo chefe chega chego cheia cheio cheta chiai chiam chiar chias chibo chiei chiem chies chila chino chiou chips chita chica choca choco chora chore choro chova chove chovi chovo chula chulo chule chupa chupe chupo chuta chute chuto chuva chuco choes ciano ciclo cidra cifra cifre cifro cimas cimos cinco cinda cinde cindi cindo cinge cingi cinja cinjo cinta cinte cinto cinza cinze cinzo ciosa cioso cipos circo cirza cirze cirzo cisai cisam cisar cisas cisco cisei cisem cises cisma cisme cismo cisne cisou cisao citai citam citar citas citei citem cites citou citro ciuma ciume ciumo civil civis clama clame clamo clara claro clava clave clero clica clico clima cliva clive clivo clona clone clono cloro clube coada coado coage coagi coais coaja coajo coara coava coaxa coaxe coaxo cobra cobre cobri cobro cocai cocam cocar cocas cocei cocem coces cocha coche cocho cocos cocou coeis coere coeri coesa coeso cofia cofie cofio cofre coibi coice coifa coima coira coiro coisa coiso coita coite coito colai colam colar colas colei colem coles colha colhe colhi colho colma colme colmo colos colou comam comas comei comem comer comes comeu comia comum conde cones conga conta conte conto copas copia copie copio copos copra copta coque corai coral coram corar coras corda corei corem cores corja corno coroa coroe coroo coros corou corpo corra corre corri corro corsa corso corta corte corto corvo corca corco cosam cosas cosei cosem coser coses coseu cosia cospe cotai cotam cotar cotas cotei cotem cotes cotos cotou cotao coube coura couro cousa couta coute couto couve coval covas covil covis covao coxal coxas coxia coxos coxao cozam cozas cozei cozem cozer cozes cozeu cozia coiba coibe coibo crase crava crave cravo crede credo creem creia creio crema creme cremo crepe crera criai criam criar crias crida crido criei criem cries crime crina criou crise criva crive crivo croma crome cromo cruas crude cruel cruza cruze cruzo cubai cubam cubar cubas cubei cubem cubes cubos cubou cubra cubro cucos cueca cuida cuide cuido cujas cujos culpa culpe culpo culta culto cumes cunhe cunho cupao curai curam curar curas curda curdo curei curem cures curie curou curro cursa curse curso curta curte curti curto curva curve curvo cuspa cuspe cuspi cuspo custa custe custo canon cesio cilio cirio civel codex colon codea dadas dador dados dalgo dalem damos danai danam danar danas dance dando danei danem danes danos danou danca danco daqui dardo darei darem dares daria daras darao datai datal datam datar datas datei datem dates datou davam davas dacao decai decil dedal dedos deduz dedao deita deite deito deixa deixe deixo delas delem deles delis delta demos demao densa denso denta dente dento depor depus depos depoe deram deras derem deres derme desce desci desde despe despi dessa desse desta deste desca desco deter detem deusa devam devas devei devem dever deves deveu devia devim devir deoes diaba dicas dieta digam digas digna digne digno dilam dilas dilua dilui diluo dinar dique direi diria diras dirao disca disco dispa dispo disse disso dista diste disto ditai ditam ditar ditas ditei ditem dites ditos ditou divas dizei dizem dizer dizes dizia doada doado doais doara doava dobai dobam dobar dobas dobei dobem dobes dobou dobra dobre dobro docas doces doeis doera dogma doida doido doira doire doiro domai domam domar domas domei domem domes domou donas donde donos dopai dopam dopar dopas dopei dopem dopes dopou dores dorme dormi dorso dosai dosam dosar dosas dosei dosem doses dosou dotai dotam dotar dotas dotei dotem dotes dotou doura doure douta douto doiam doias draga drago drama drena drene dreno drive droga drusa druso duais ducal duche duelo dueto dumas dunas dupla duplo duque durai duram durar duras durei durem dures durma durmo duros durou dalia debil derbi diodo docil dolar dubia dubio duzia ecoai ecoam ecoar ecoas ecoei ecoem ecoes ecoou ecras edema edita edito educa educo eflua eflui efluo efuso eiras eixos ejeta ejete ejeto elege elegi eleja elejo eleva eleve elevo elida elide elidi elido elite elmos eluda elude eludi eludo email emana emane emano emita emite emiti emito empoa empoe empoo emula emule emulo encha enche enchi encho enfia enfie enfim enfio enjoa enjoe enjoo enoja enoje enojo entes entoa entoe entoo entra entre entro entao envia envie envio ereta ereto ergam ergas ergue ergui erice erige erigi erija erijo erica erico ermos errai erram errar erras errei errem erres erros errou ervas escoa escoe escoo esmos espia espie espio esqui essas esses estai estar estas estes estou estao esvai etano etapa etnia euros evada evade evadi evado evita evite evito evoca evoco exala exale exalo exame exara exare exaro exata exato exiba exibe exibi exibo exige exigi exija exijo exila exile exilo exima exime eximi eximo expia expie expio expor expus expos expoe extra exula exule exulo exuma exume exumo facas faces facho facto facao fadai fadam fadar fadas fadei fadem fades fados fadou faias faina faixa faixe faixo falai falam falar falas falei falem fales falha falhe falho falia falir falis faliu falos falou falsa falso falta falte falto falua famas fanai fanam fanar fanas fanei fanem fanes fanfa fanfe fanfo fanou farad farao farda farde fardo farei farol faros farpa farpe farpo farra farsa farta farte farto faras fasea fasee faseo fases fasto fatal fatia fatie fatio fator fatos fauna fauno faval favas favor favos faxes fazei fazem fazer fazes fazia facam febra febre fecal fecha feche fecho fedam fedas fedei fedem feder fedes fedeu fedia fedor feias feios feira feire feiro feita feito feixe feliz fenda fende fendi fendo fenol fenos feras ferem feres feria ferie ferio ferir feris feriu fermi feroz ferra ferre ferro ferva ferve fervi fervo festa fetal fetos feudo fevra fezes fiada fiado fiais fiapo fiara fiava fibra ficai ficam ficar ficas ficha fiche ficho ficou fieis figas figos filai filam filar filas filei filem files filha filho filia filie filio filma filme filmo filos filou filao finai final finam finar finas finca finco finda finde findo finei finem fines finge fingi finja finjo finos finou finta finte finto fique firam firas firma firme firmo fisco fisga fisgo fitai fitam fitar fitas fitei fitem fites fitou fixai fixam fixar fixas fixei fixem fixes fixos fixou fizer flash flava flete fleti flita flito floco flora flore flori floro fluam fluas fluem fluir fluis fluiu fluxo fluia fluor fobia focai focal focam focar focas focos focou fodam fodas fodei fodem foder fodes fodeu fodia fofas fofos fogem foges fogos fogao foice folar foles folga folgo folha folhe folho folia folie folio fomes fomos fonia fonte foque foral foram foras forca force forco forem fores forja forje forjo forma forme formo forno foros forra forre forro forte fosca fosco fossa fosse fosso foste fotos fotao fouce fraca fraco frade frase freio freis freme fremi frena frene freno fresa frese freso freta frete freto frias frima frimo frios frisa frise friso frita frite frito frota fruam fruas fruem fruir fruis fruiu fruta fruto fruia fugas fugaz fugia fugir fugis fugiu fujam fujas fujao fulas fulos fumai fumam fumar fumas fumei fumem fumes fumos fumou fumao funda funde fundi fundo funga fungo funil funis furai furam furar furas furei furem fures furor furos furou furta furte furto furao fusas fusca fusco fusos fusao fuzil fuzis fucas facil fatuo femur fenix femea femeo fifia forum furia futil gabai gabam gabar gabas gabei gabem gabes gabou gados gagas gagos gaita gajas gajos gajao galai galam galar galas galei galem gales galga galgo galha galho galos galou galao gamai gamam gamar gamas gamba gamei gamem games gamos gamou gamao ganam ganas ganem ganes ganga ganha ganhe ganho gania ganir ganis ganiu ganso garbo gares garfa garfe garfo garra garre garri garro garca gases gasta gaste gasto gatas gatos gauss gazes gazua geada geado geais geara geava geeis geiam geias geiem geies gelai gelam gelar gelas gelei gelem geles gelos gelou gemai gemam gemar gemas gemei gemem gemer gemes gemeu gemia gemou genes genro gente gerai geral geram gerar geras gerei gerem geria gerir geris geriu germe gerou gessa gesse gesso gesta gesto gibao gigas ginga gingo ginja girai giram girar giras girei girem gires giros girou gizai gizam gizar gizas gizei gizem gizes gizou gleba glifo globo glosa glote gnoma gnomo gnose godas godos goela goele goelo goesa golas goles golfa golfe golfo golos golpe gomos gongo gonzo gorai goram gorar goras gorda gordo gorei gorem gores gorou gorra gorro gosta goste gosto gotas gozai gozam gozar gozas gozei gozem gozes gozos gozou graal grada grade grado grafa grafe grafo grama grame gramo grana grane grano grata grato graus grava grave gravo graxa grega grego grela grele grelo greta grete greto greve grifo grilo gripa gripe gripo grisa grise griso grita grite grito grosa grous gruas gruda grude grudo grupo gruta graos guapo guara guare guari guaro gueto guiai guiam guiar guias guiei guiem guies guina guino guiou guisa guise guiso guita guizo guiao gulas gumes gurus galio gavea gemea gemeo genio giria hajam hajas harpa harpe harpo harem hasta haste havei haver havia hemos heras herda herde herdo hertz heroi hiato hidra hiena hindi hindu hinos hirta hirto homem honor honra honre honro horas horda horta horto hoste hotel houve hulha humor hunas hunos hurra habil helio hifen himen humus iambo iates ibera ibero iceis idade ideal ideia idosa idoso ienes iglus igual ilesa ileso ilhai ilhal ilham ilhar ilhas ilhei ilhem ilhes ilhou ilheu iliba ilibe ilibo iluda ilude iludi iludo imago imame imane imbua imbui imbuo imita imite imito imola imole imolo impor impus impos impoe imune imuta imute imuto inala inale inalo inata inato incas incei incem inces incha inche incho incra incre incri incro induz ingre iniba inibe inibi inibo inova inove inovo input insta inste insto intra intua intui intuo inves incai incam incar incou iodai iodam iodar iodas iodei iodem iodes iodou irada irado irais irara irava irdes ireis iriam irias irisa irise iriso irmos irmao irmas iroso iscai iscam iscar iscas iscos iscou isola isole isolo isque istmo itens itera itere itero icada icado icais icara icava ionio jades janta jante janto jarda jarra jarro jatos jaula jazam jazas jazei jazem jazer jazes jazeu jazia jeans jeito jejua jejue jejum jejuo jipes jogai jogam jogar jogas jogos jogou jogue jogao joias jorra jorre jorro joule jovem jubas judeu judia judie judio jugos julga julgo julho junca junco junho junta junte junto jurai juram jurar juras jurei jurem jures juros jurou justa justo juiza juizo jonio juris labor lacas lacei lacem laces lacra lacre lacro lacta lacte lacto lados ladra ladre ladro lagar lagoa lagos laica laico laivo lamas lamba lambe lambi lambo lanar lance lanha lanhe lanho lanca lanco lapas lapso lapao lares larga largo larva lareu lasca lasco laser lassa lasse lasso latam latas latem lates latia latim latir latis latiu latao lauta lauto lavai lavam lavar lavas lavei lavem laves lavor lavou lavra lavre lavro lazer lacai lacam lacar lacos lacou leais lebre ledes ledor legai legal legam legar legas legou legue leiam leias leiga leigo leira leite leito leiva lemas lemes lemos lenda lendo lenha lenhe lenho lenta lente lento lenco leoas lepra leque leram leras lerei lerem leres leria lerao lesai lesam lesar lesas lesei lesem leses lesma lesme lesmo lesou lesse lesta leste lesto lesao letal letra letao letas levai levam levar levas levei levem leves levou leoes libra liceu licor lidai lidam lidar lidas lidei lidem lides lidos lidou ligai ligam ligar ligas ligou ligue lilas limai limam limar limas limbo limei limem limes limou limpa limpe limpo limao lince linda lindo linfa linha linho liras lisas lisos lista liste listo litro livra livre livro lixai lixam lixar lixas lixei lixem lixes lixos lixou licao lobal lobas lobos lobao locai local locam locar locas locou lodos logos logra logre logro loira loire loiro loisa loica lojas lomba lombo lonas longa longe longo loque lorde lorpa lotai lotam lotar lotas lotei lotem lotes lotos lotou louca louco loura loure louro louva louve louvo locao lucra lucre lucro lufai lufam lufar lufas lufei lufem lufes lufou lugar lulas lumes lunar lupas luras lusas lusco lusos lutai lutam lutar lutas lutei lutem lutes lutos lutou luvas luxai luxam luxar luxas luxei luxem luxes luxos luxou luzam luzas luzem luzes luzir luzis luziu labia labio lapis legua libio lider lieis lirio litio lupus macas macei macem maces macha macho macia macio macro magas magia magma magna magno magoa magoe magoo magos magra magro maior major malar malas males malga malha malhe malho malte mamai mamal mamam mamar mamas mambo mamei mamem mames mamou mamae mamao manai manam manar manas manca manco manda mande mando manei manem manes manga mango manha mania manja manje manjo manos manou mansa manso manta manto mapas marca marco mares marga marra marre marro marta masca masco maser massa matai matam matar matas matei matem mates matiz matou macai macam macar macos macou macao meada meado meato mecha medas medem medes media medir medis mediu medos medra medre medro meias meiga meigo meios melai melam melar melas melei melem meles melga meloa melou melra melro melao menir menor menos menta mente menti menus meras merce merda meros mesas meses mesma mesmo messe mesao metal metam metas metei metem meter metes meteu metia metro mexam mexas mexei mexem mexer mexes mexeu mexia mecam mecas miada miado miais miara miava micos micra micro mieis migai migam migar migas migou migra migre migro migue mijai mijam mijar mijas mijei mijem mijes mijos mijou mijao milha milho mimai mimam mimar mimas mimei mimem mimes mimos mimou minai minam minar minas minei minem mines minga mingo minha minou minta minto miolo mirai miram mirar miras mirei mirem mires mirou mirra mirre mirro missa misse misso mista misto mitos mitre mitro miuda miudo moais mocas mocho modal modas modem modos moeda moeis moela moera mofai mofam mofar mofas mofei mofem mofes mofou mogno moina moine moino moira moiro moita molar molas molda molde moldo moles molha molhe molho monas monco monda monde mondo monge monhe monja monta monte monto morai moral moram morar moras morda morde mordi mordo morei morem mores morna morno morou morra morre morri morro morsa morta morte morto mosca mossa mosse mosso mosto motas motel motes motim motor motos mouca mouco mouro movam movas movei movem mover moves moveu movia mocos mocao moiam moias moida moido mudai mudam mudar mudas mudei mudem mudes mudez mudos mudou mugem muges mugia mugir mugis mugiu muita muito mujam mujas mulas multa multe multi multo munam munas mundo munem munes munge mungi munia munir munis muniu munja munjo murai mural muram murar muras murei murem mures muros murou murro musal musas museu musgo mutua mutue mutuo mafia medio medao miope mobil movel mumia nabal nabos nacos nadai nadam nadar nadas nadei nadem nades nadou nafta naifa naipe najas nanai nanam nanar nanas nanei nanem nanes nanou nariz narra narre narro nasal nasce nasci nasca nasco natal natas natos naval naves navio nazis nacao negai negam negar negas negou negra negro negue nelas neles nenes nervo nesga nessa nesse nesta neste netas netos neura neuro nevar nevei nevou nevao nexos nicai nicam nicar nicas nicho nicou nimbo ninai ninam ninar ninas ninei ninem nines ninfa ninha ninhe ninho ninou nique nisso nisto nitra nitre nitro nobre nodal nodos noema noese noite noiva noive noivo nomes nonas noras norma norte nossa nosso notai notam notar notas notei notem notes notou novas novel novos nozes nocao nubla nuble nublo nucal nudez nulas nulos numas nunca nutra nutre nutri nutro nuvem nevoa nivel niveo nodoa nuveo obesa obeso oboes obrai obram obrar obras obrei obrem obres obrou obsta obste obsto obter obtem ocapi ocaso ocupa ocupe ocupo odeia odeie odeio odiai odiar odiei odiou odora odore odoro odres oeste ofega ofego ogiva ogres oirar oiros oicam oicas oleai olear oleei oleia oleie oleio oleou olhai olhal olham olhar olhas olhei olhem olhes olhos olhou olmos ombro omita omite omiti omito ondas onera onere onero ontem oncas opaca opaco opala opera opere opero opiai opiam opiar opias opiei opiem opies opina opine opino opiou opora optai optam optar optas optei optem optes optou opcao opoem opoes orada orado orais orara orava orcas orcei orcem orces ordem oreis orgia orlai orlam orlar orlas orlei orlem orles orlou ornai ornam ornar ornas ornei ornem ornes ornou orcai orcam orcar orcou osgas ossos ostra otite ougai ougam ougar ougas ougou ougue ourai ouram ourar ouras ourei oures ouros ourou ousai ousam ousar ousas ousei ousem ouses ousou outra outro ouvem ouves ouvia ouvir ouvis ouviu oucam oucas ovada ovado ovais ovala ovale ovalo ovara ovava oveis ovino oxala oxida oxide oxido ozona ozone ozono oasis oidio pacto padre pagai pagam pagar pagas pagos pagou pague pagao paiol paios paira paire pairo pajem palas palco palha palia palie palio palma palme palmo palpa palpe palpo palra palre palro panai panal panam panar panas panca panda panei panem panes panos panou papai papal papam papar papei papel papem papes papou papao parai param parar paras parca parco parda pardo parei parem pares paria parir pariu parla parle parlo parou parra parta parte parti parto parva parvo pasma pasme pasmo passa passe passo pasta paste pasto patas patim patos patao pausa pause pauso pauta paute pauto pavio pavoa pavor pavao pazes pecai pecam pecar pecas pecha pecou pedal pedem pedes pedia pedir pedis pediu pedra pegai pegam pegar pegas pegou pegue peito peixe pejai pejam pejar pejas pejei pejem pejes pejou pelai pelam pelar pelas pelei pelem peles pelos pelou pelve penai penal penam penar penas penca pence penda pende pendi pendo penei penem penes penha penou pensa pense penso pente peque peral peras perca perco perda perde perdi perna perra perro persa perto perua perus pesai pesam pesar pesas pesca pesco pesei pesem peses pesos pesou peste petiz pezes peoes peuga piada piado piais piano piara piava picai picam picar picas piche picos picou pieis piela pilai pilam pilas pilei pilem piles pilha pilhe pilho pilou pilao pimba pimpa pimpe pimpo pinga pingo pinha pinho pinos pinta pinte pinca piora piore pioro pipas pique pirai piram pirar piras pirei pirem pirou pisai pisam pisar pisas pisca pisco pisei pisem pises pisga pisgo pisos pisou pista piton pitao piteu pivos pixel pizas pizza pioes placa plana plane plano plebe plena pleno plexo plica plico pluma pneus pobre podai podal podam podar podas podei podem poder podes podia podou podre podao poema poeta poisa poise poiso pojai pojam pojar pojas pojei pojem pojes pojou polar polca polco polia polir polis poliu polos polpa polua polui poluo polvo pomar pomba pombo pomes pomos pompa ponde pondo ponha ponho ponta ponte ponto popos porca porco porei porem pores poria poros porra porta porte poras porao posai posam posar posas posei posem poses posou possa posse posso posta poste posto potes potra potro pouca pouco poupa poupe poupo pousa pouse pouso povoe povoo povos pocas pocos pocao praia prata prato praxe prazo praca prece preda prede predo prega prego prelo prema preme premi premo presa prese preso preta preto previ preve preza preze prezo preco prima prime primo prior priva prive privo priao proas probo profs prole prosa prose proso prova prove provi provo prumo prura prure pruri pruro puder pudim pudor pugna pugne pugno pujai pujam pujar pujas pujei pujem pujes pujou pulai pulam pular pulas pulei pulem pules pulga pulha pulos pulou pulsa pulse pulso pumas pumba punam punas punem punes punge pungi punha punho punia punir punis puniu punja punjo puras purga purgo puros puser putas putos puxai puxam puxar puxas puxei puxem puxes puxos puxou puxao patio penis pifia pifio podio polen ponei pubis quais quase queda quede quedo quero quico quilo quimo quina quine quino quita quite quito quivi quica quota rabos rabao racha rache racho radar radia radie radio rafai rafam rafar rafas rafei rafem rafes rafou raiai raiam raiar raias raiei raiem raies raios raiou raiva ralai ralam ralar ralas ralei ralem rales ralha ralhe ralho ralis ralos ralou ramal ramas ramos rampa rance range rangi ranho ranja ranjo ranca ranco rapai rapam rapar rapas rapaz rapei rapem rapes rapou rapta rapte rapto raras raros rasai rasam rasar rasas rasca rasco rasei rasem rases rasga rasgo rasos rasou raspa raspe raspo rasto ratai ratam ratar ratas ratei ratem rates ratos ratou ratao razia razie razio razoa razoe razoo razao racas racao reage reagi reais reaja reajo reata reate reato reava reave reavi reavo recai recua recue recuo recem redes redor reduz refaz refez refia refie refio refiz refem regai regam regar regas regei regem reger reges regeu regia regos regou regra regre regro regue reiam reias reina reine reino rejam rejas relam relas relei relem reler reles releu relia reluz relva relve relvo remai remam remar remas remei remem remes remia remir remis remiu remoa remoo remos remou remoi renal renas renda rende rendi rendo renha renhe renhi renho rente repas repor repta repte repto repus repos repoe resma resta reste resto retal retas reter retos retro retem reuma reuni reusa reuse reuso rever revia revim revir reviu revoo revem reves rezai rezam rezar rezas rezei rezem rezes rezou rezao reuna reune reuno riais ricas ricos ridas rides ridos rifai rifam rifar rifas rifei rifem rifes rifle rifou rigor rijas rijos rijao rilha rilhe rilho rimai rimam rimar rimas rimei rimem rimes rimos rimou rindo ripai ripam ripar ripas ripei ripem ripes ripou riram riras rirei rirem rires riria rirao risca risco risos risse riste ritma ritme ritmo ritos rival rixai rixam rixar rixas rixei rixem rixes rixou roais robes robos rocei rocem roces rocha rodai rodam rodar rodas rodei rodem rodes rodos rodou roeis roera rogai rogam rogar rogas rogos rogou rogue rojao rolai rolam rolar rolas rolei rolem roles rolha rolhe rolho rolos rolou rolao rombo rompa rompe rompi rompo romas ronca ronco ronda ronde rondo roque rosal rosas rosca rosco rosna rosne rosno rosto rotai rotam rotar rotas rotei rotem rotes rotor rotos rotou rouba roube roubo rouca rouco roupa roxas roxos rocai rocam rocar rocas rocou roiam roias roida roido ruais rubis rublo rubor rubra rubro rudes rudez ruela rufai rufam rufar rufas rufei rufem rufes rufia rufie rufio rufou rugas rugem ruges rugia rugir rugis rugiu ruins ruira ruiva ruivo rujam rujas rumai rumam rumar rumas rumei rumem rumes rumor rumos rumou rupia rural rusga rusgo russa russo rucas rucos ruiam ruias ruida ruido ruina racio radon rafia redea regie regua rieis rosea roseo rubeo sabei sabem saber sabes sabia sabor sabre sabao sacai sacam sacar sacas sacha sache sacho sacia sacie sacio sacos sacou sacra sacro sadia sadio safai safam safar safas safei safem safes safos safou safra sagas sagaz sagra sagre sagro sagui saiam saias saiba saira salas salda salde saldo salga salgo salsa salta salte salto salva salve salvo salao samba sambe sambo sanai sanam sanar sanas sanca sande sanei sanem sanes sanha sanou santa santo sapal sapos saque sarai saram sarar saras sarau sarda sarei sarem sares sarja sarje sarjo sarna sarne sarni sarno sarou sarro sarca sauna saxao saida saido sauda saude saudo seara sebes sebos secai secam secar secas secos secou sedai sedam sedar sedas sedei sedem sedes sedia sedie sedio sedou seduz segai segam segar segas segou segue segui seios seita seiva seixo sejam sejas selai selam selar selas selei selem seles selim selos selou selva senas senda sendo senha senil senis senra senso senta sente senti sento senao septo seque serei serem seres seria serie serio serpe serra serre serro serta serva serve servi servo serze serzi seras serao sesta setas setor sexos sexta sexto shell sidas sidos sidra sigam sigas sigla sigma signo sigui silos silve silvo sinal sinas sinha sinos sinta sinto sique sirga sirva sirvo sirza sirzo sisai sisam sisar sisas sisei sisem sises sismo sisou sites sitia sitie sitio sitos situa situe situo slide soada soado soais soara soava sobem sobes sobra sobre sobro socai socam socar socas socos socou soeis sofra sofre sofri sofro sofas sogra sogro solar solas solda solde soldo solha solos solta solte solto solva solve solvi solvo somai somam somar somas somei somem somes somos somou sonar sonda sonde sondo sonha sonhe sonho sonos sonsa sonso sopas sopra sopre sopro soque sorna sorne sorno soros sorri sorte sorti sorva sorve sorvi sorvo soube sovai sovam sovar sovas sovei sovem soves sovou staff stand stent stops suada suado suais suara suava suave subam subas subia subir subis subiu sucos sueca sueco sueis sueva suevo sufle sugai sugam sugar sugas sugou sugue suite sujai sujam sujar sujas sujei sujem sujes sujos sujou sulca sulco sumam sumas sumia sumir sumis sumiu sumos super supor supra supre supri supro supus supos supoe surda surde surdi surdo surfe surge surgi surja surjo surra surre surro surta surte surti surto sushi susta suste susto sutia suina suino suico sabio savel semen semea silex simio sirio socia socio sodio soror sosia sotao tabus tacha tache tacho tacos tacao taipa talai talam talar talas talco talei talem talha talhe talho talos talou talao tampa tampe tampo tanas tanga tange tangi tango tanja tanjo tanso tanta tanto tapai tapam tapar tapas tapei tapem tapes tapir tapou tarai taram tarar taras tarda tarde tardo tarei tarem tares tarja tarje tarjo tarou tarte tasca tasco tatua tatue tatuo tatus taxai taxam taxar taxas taxei taxem taxes taxou tacas tecei tecem tecer teces teceu tecia tecla tecle teclo teias teima teime teimo teixo telas telex telha telhe telho telao temam temas temei temem temer temes temeu temia temor temos tempo tenaz tenda tende tendi tendo tenha tenho tenor tenra tenro tensa tenso tenta tente tento terce terei terem teres teria termo terna terno teras terao terca terco tesas teses tesos testa teste testo tesao tetas tetos texto tecam tecas tiara tidas tidos tifos tigre tinam tinas tinem tines tinga tinge tingi tinha tinia tinir tinis tiniu tinja tinjo tinta tinto tipas tipos tique tirai tiram tirar tiras tirei tirem tires tiros tirou tisna tisne tisno titas tiver ticao toada toado toais toara toava tocai tocam tocar tocas tocha tocou todas todos toeis togai togam togar togas togou togue toiro tojos tolas tolda tolde toldo tolha tolhe tolhi tolho tolos tomai tomam tomar tomba tombe tombo tomei tomem tomes tomos tomou tonai tonal tonam tonar tonas tonei tonel tonem tones tonou tonta tonto topai topam topar topas topei topem topes topos topou toque torai toram torar toras torce torci torda tordo torei torem tores torna torne torno toros torou torpe torra torre torro torso torta torto torva torve torvo torca torco tosca tosco tosse tossi tosta toste tosto total totem touca touco toura touro trace traem traga trago traia traio trair trais traiu traja traje trajo trama trame tramo trapo trara trata trate trato trava trave travo traca traco trela trema treme tremi tremo trens treno trepa trepe trepo treta treva trevo treze tribo trico trigo trina trine trino trios tripa tripe troai troam troar troas troca troce troco troei troem troes trono troou tropa trota trote troto trova trove trovo trufa trufe trufo trupe truta tubas tubos tufai tufam tufar tufas tufei tufem tufes tufos tufou tufao tugia tugir tugiu tumba tumor tunas tuplo turba turbe turbo turca turco turfa turma turno turne turra turva turve turvo tussa tusso tutor tabua talio tatil taxis tamil tedio tenia tenis tenue tetum tibia tilia torax torio tunel uivai uivam uivar uivas uivei uivem uives uivos uivou ultra ulula ulule ululo unais ungem unges ungia ungir ungis ungiu unhai unham unhar unhas unhei unhem unhes unhou uniam unias unida unido unira uniao unjam unjas untai untam untar untas untei untem untes untou uncao urbes urdam urdas urdem urdes urdia urdir urdis urdiu ureia urgem urges urgia urgir urgis urgiu urina urine urino urjam urjas urnas urrai urram urrar urras urrei urrem urres urros urrou ursas ursos urubu urzal urzes usada usado usais usara usava useis usina usual usura uvaca vacas vades vadia vadie vadio vagai vagam vagar vagas vagem vagos vagou vague vagao vaiai vaiam vaiar vaias vaiei vaiem vaies vaiou valai valam valar valas valei valem valer vales valeu valha valho valia valor valou valsa valse valso valva vamos vapor varai varal varam varar varas varei varem vares varia varie vario variz varou varra varre varri varro varao vasas vasos vasta vasto vazai vazam vazar vazas vazei vazem vazes vazia vazie vazio vazou vazao veada veado vedai vedam vedar vedas vedei vedem vedes vedou veias veios vejam vejas velai velam velar velas velei velem veles velha velho velou veloz vemos vence venci venda vende vendi vendo venha venho venta vento venca venco verba verbo verde verei verem veres verga vergo veria verme versa verse verso verta verte verti verto veras verao vesga vesgo vespa veste vesti vetai vetam vetar vetas vetei vetem vetes vetor vetos vetou vexai vexam vexar vexas vexei vexem vexes vexou vezes viaja viaje viajo vibra vibre vibro vicia vicie vicio vidas vides vidra vidre vidro viela viera vigas vigia vigie vigio vigor vilas vilao vimos vinca vinco vinda vinde vindo vinga vingo vinha vinho vinil vinis vinte viola viole violo virai viral viram virar viras virei virem vires viria viril viris virou virao visai visam visar visas visco visei visem vises visor visos visou visse vista viste visto visao vitae vital vivam vivas vivaz vivei vivem viver vives viveu vivia vivos vizir viuva viuve viuvo voada voado voais voara voava vocal voces vodca voeis voeja voeje voejo vogai vogal vogam vogar vogas vogou vogue volte volto volts volva volve volvi voraz vossa vosso votai votam votar votas votei votem votes votos votou vozes vulgo vulto vulva vacuo venia video vieis virus volei xaile xales xelim xeque xerez xexes xiita xinga xingo xisto xviii xenon zanga zango zarpa zarpe zarpo zebra zebre zebro zelai zelam zelar zelas zelei zelem zeles zelos zelou zeros zinca zinco zoada zoado zoais zoara zoava zoeis zomba zombe zombo zonal zonas zonzo zooms zorra zorro zulos zumba zumbe zumbi zumbo zurra zurre zurro zurza zurze zurzi zurzo zinia agata argon atalo atila avila edipo efeso evora icaro oscar urano abaco acaro ageis aguia alamo album alibi apice arabe ardua arduo areas arias arida arido atomo atrio audio aurea aureo azimo amago ambar anodo ansia ebano ebria ebrio ebulo egide eguas epica epico epoca ereis etica etico etimo exito exodo iamos icone idolo ignea impar impia impio index india indio invio obice obito obvia obvio ocios oculo odios oleos omega orfao orfas orgao ossea osseo otica otico otima otimo ovnis ovulo umero unica unico urica urico uteis utero".split(" "),
Ve = new Set($s),
O = (e, s, t) => {
window.gtag && gtag(e, s, t)
},
R = e => {
Qe && e && navigator.vibrate(1)
},
Ee = (e, s) => {
if ("RelativeTimeFormat" in Intl) {
const i = new Intl.RelativeTimeFormat("en", {
numeric: "auto"
}),
n = s.valueOf() - e.valueOf();
for (const o in ee) {
const u = o;
if (Math.abs(n) > ee[u] || o === "second") return i.format(Math.round(n / ee[u]), u)
}
return `${n} ms`
}
const t = s.getTime() - e.getTime();
let l = Math.floor(t / ee.hour);
return l > 1 ? "in " + l + " hours" : (l = Math.floor(t / ee.minute), l > 1 ? "in " + l + " minutes" : "in " + Math.floor(t / ee.second) + " seconds")
},
_s = e => {
let s = e.length;
for (; s--;) {
const t = Math.floor(Math.random() * s);
[e[s], e[t]] = [e[t], e[s]]
}
return e
},
Ye = (e, s) => {
const t = s.split(""),
l = e.split(""),
i = new Array(se).fill("none"),
n = {};
for (let o = 0; o < se; o++) n[l[o]] = 0;
for (let o = 0; o < se; o++) t[o] === l[o] && (t[o] = " ", n[l[o]] = 2, l[o] = " ", i[o] = "correct");
for (let o = 0; o < se; o++) t.indexOf(l[o]) !== -1 && t[o] !== l[o] && l[o] !== " " && (n[l[o]] != 2 && (n[l[o]] = 1), t[t.indexOf(l[o])] = " ", i[o] = "diff");
return i
},
Se = (e, s) => {
const t = [
[],
[],
[],
[]
];
for (let l = 0; l < s.length; l++) {
const i = e.indexOf(s[l]);
for (let n = 0; n < e.length; n++)(n <= i || i === -1) && t[l].push(Ye(e[n], s[l]))
}
return t
},
ye = e => {
let s;
const t = new is(e);
t.random_int31(), t.random_int31(), t.random_int31(), t.random_int31();
do s = [Z[t.random_int31() % Z.length], Z[t.random_int31() % Z.length], Z[t.random_int31() % Z.length], Z[t.random_int31() % Z.length]]; while (s[0] === s[1] || s[0] === s[2] || s[0] === s[3] || s[1] === s[2] || s[1] === s[3] || s[2] === s[3] || ke.has(s[0]) || ke.has(s[1]) || ke.has(s[2]) || ke.has(s[3]));
return s
};

function Cs() {
const e = new Date,
s = (e.getTime() - Ie.getTime()) / Re >> 0,
t = {
daily: {
seed: 0,
guesses: [],
answers: [],
current: "",
states: [
[],
[],
[],
[]
],
answersCorrect: [-1, -1, -1, -1],
history: new Array(A + 4).fill(0),
currentStreak: 0,
maxStreak: 0
},
free: {
seed: 0,
guesses: [],
answers: [],
current: "",
states: [
[],
[],
[],
[]
],
answersCorrect: [-1, -1, -1, -1],
history: new Array(A + 4).fill(0),
currentStreak: 0,
maxStreak: 0
},
darkMode: !0,
colorblind: !1,
vibration: !0,
enterBsReversed: !1,
keyboardHeight: 1,
gameSize: "fit"
},
l = window.matchMedia("(prefers-color-scheme: dark)").matches;
try {
const o = window.localStorage.getItem("dark_mode");
o === null ? t.darkMode = l : t.darkMode = o === "true"
} catch (o) {
t.darkMode = l
}
try {
const o = window.localStorage.getItem("colorblind");
o === null ? t.colorblind = !1 : t.colorblind = o === "true"
} catch (o) {
t.colorblind = !1
}
try {
const o = window.localStorage.getItem("vibration");
o === null ? t.vibration = !0 : t.vibration = o === "true"
} catch (o) {
t.vibration = !0
}
try {
const o = window.localStorage.getItem("enter_bs_reversed");
o === null ? t.enterBsReversed = !1 : t.enterBsReversed = o === "true"
} catch (o) {
t.enterBsReversed = !1
}
try {
const o = window.localStorage.getItem("keyboard_height");
o === null ? t.keyboardHeight = 1 : t.keyboardHeight = Number(o)
} catch (o) {
t.keyboardHeight = 1
}
try {
const o = window.localStorage.getItem("game_size");
o === null || o !== "fit" && o !== "square" ? t.gameSize = "fit" : t.gameSize = o
} catch (o) {
t.gameSize = "fit"
} ["daily", "free"].forEach(o => {
let u;
try {
const a = Number(window.localStorage.getItem("last_" + o)),
r = window.localStorage.getItem(o + "_guesses") || "",
d = window.localStorage.getItem(o + "_history"),
p = d ? d.split(",").map(Number) : new Array(A + 4).fill(0),
h = Number(window.localStorage.getItem(o + "_current_streak") || 0),
g = Number(window.localStorage.getItem(o + "_max_streak") || 0);
if (a && (o === "free" || a === s)) {
const f = r ? r.split(",") : [],
w = ye(a);
u = {
seed: a,
guesses: f,
answers: w,
current: "",
states: Se(f, w),
answersCorrect: [0, 1, 2, 3].map(S => f.indexOf(w[S])),
history: p,
currentStreak: h,
maxStreak: g
}, O("event", "restore", {
mode: o,
daily_seed: o === "daily" ? a : void 0
})
} else {
const f = o === "daily" ? s : e.getTime(),
w = ye(f);
u = {
seed: f,
guesses: [],
answers: w,
current: "",
states: Se([], w),
answersCorrect: [-1, -1, -1, -1],
history: p,
currentStreak: h,
maxStreak: g
}, O("event", "start", {
mode: o,
daily_seed: o === "daily" ? f : void 0
})
}
} catch (a) {
const r = o === "daily" ? s : e.getTime(),
d = ye(r);
u = {
seed: r,
guesses: [],
answers: d,
current: "",
states: Se([], d),
answersCorrect: [-1, -1, -1, -1],
history: new Array(A + 4).fill(0),
currentStreak: 0,
maxStreak: 0
}, O("event", "start", {
mode: o,
daily_seed: o === "daily" ? r : void 0
})
}
t[o] = u
});
const [i, n] = rs(t);
return _e(() => {
try {
window.localStorage.setItem("dark_mode", String(i.darkMode)), window.localStorage.setItem("colorblind", String(i.colorblind)), window.localStorage.setItem("vibration", String(i.vibration)), window.localStorage.setItem("enter_bs_reversed", String(i.enterBsReversed)), window.localStorage.setItem("keyboard_height", String(i.keyboardHeight)), window.localStorage.setItem("game_size", i.gameSize), ["daily", "free"].forEach(o => {
window.localStorage.setItem("last_" + o, String(i[o].seed)), window.localStorage.setItem(o + "_guesses", i[o].guesses.join(",")), window.localStorage.setItem(o + "_history", i[o].history.join(",")), window.localStorage.setItem(o + "_current_streak", String(i[o].currentStreak)), window.localStorage.setItem(o + "_max_streak", String(i[o].maxStreak))
})
} catch (o) {}
}), [i, n]
}
const Me = os(),
js = e => {
const [s, t] = Cs(), l = a => s[a].guesses.length === A || s[a].answers.filter(r => s[a].guesses.indexOf(r) >= 0).length === 4, i = (a, r) => {
t(V(d => {
d[a].current.length < 5 && !l(a) && (d[a].current += r)
}))
}, n = a => {
t(V(r => {
r[a].current.length > 0 && !l(a) && (r[a].current = r[a].current.slice(0, -1))
}))
}, o = a => {
t(V(r => {
if (r[a].current.length === 5 && (Ue.has(r[a].current) || Ve.has(r[a].current)) && !l(a)) {
const d = r[a].current;
r[a].guesses.push(d), r[a].current = "";
for (let p = 0; p < J; p++) {
const h = r[a].guesses.indexOf(r[a].answers[p]);
(h === -1 || h === r[a].guesses.length - 1) && r[a].states[p].push(Ye(d, r[a].answers[p])), r[a].answersCorrect[p] = r[a].guesses.indexOf(r[a].answers[p])
}
if (O("event", "guess", {
mode: a,
daily_seed: a === "daily" ? r[a].seed : void 0,
word: d
}), l(a)) {
const p = r[a].answersCorrect.reduce((h, g) => h += g >= 0 ? 1 : 0, 0);
if (p === 4) {
const h = Math.max(...r[a].answersCorrect);
r[a].history[h]++, r[a].currentStreak++, r[a].currentStreak > r[a].maxStreak && (r[a].maxStreak = r[a].currentStreak), O("event", "win", {
mode: a,
daily_seed: a === "daily" ? r[a].seed : void 0,
guesses: r[a].guesses,
num_guesses: h + 1
})
} else r[a].history[A + p]++, r[a].currentStreak > 0 && O("event", "streak_reset", {
mode: a,
daily_seed: a === "daily" ? r[a].seed : void 0,
current_streak: r[a].currentStreak,
max_streak: r[a].maxStreak
}), r[a].currentStreak = 0, O("event", "loss", {
mode: a,
daily_seed: a === "daily" ? r[a].seed : void 0,
guesses: r[a].guesses,
total_correct: p
})
}
} else r[a].current = ""
}))
}, u = [s, {
setDarkMode(a) {
t(V(r => {
r.darkMode = a
}))
},
setColorblind(a) {
t(V(r => {
r.colorblind = a
}))
},
setVibration(a) {
t(V(r => {
r.vibration = a
}))
},
setEnterBsReversed(a) {
t(V(r => {
r.enterBsReversed = a
}))
},
setKeyboardHeight(a) {
t(V(r => {
r.keyboardHeight = a
}))
},
setGameSize(a) {
t(V(r => {
r.gameSize = a
}))
},
sendKey(a, r) {
if (!r.ctrlKey)
if (r.key === "Backspace") n(a);
else if (r.key === "Enter") o(a);
else {
const d = r.key.toLowerCase();
if (Ke.indexOf(d) == -1) return;
i(a, d)
}
},
isGameComplete: l,
addLetter: i,
deleteLetter: n,
submitCurrent: o,
resetDailyIfOld() {
const r = (new Date().getTime() - Ie.getTime()) / Re >> 0;
r !== s.daily.seed && t(V(d => {
d.daily.seed = r, d.daily.guesses = [], d.daily.answers = ye(r), d.daily.current = "", d.daily.states = [
[],
[],
[],
[]
], d.daily.answersCorrect = [-1, -1, -1, -1]
}))
},
resetFree() {
const a = new Date().getTime();
t(V(r => {
if (!l("free")) {
const d = r.free.answersCorrect.reduce((p, h) => p += h >= 0 ? 1 : 0, 0);
r.free.history[A + d]++, r.free.currentStreak > 0 && O("event", "streak_reset", {
mode: "free",
daily_seed: void 0,
current_streak: r.free.currentStreak,
max_streak: r.free.maxStreak
}), r.free.currentStreak = 0, O("event", "loss", {
mode: "free",
daily_seed: void 0,
guesses: r.free.guesses,
total_correct: d
}), O("event", "reset", {
mode: "free",
daily_seed: void 0,
guesses: r.free.guesses,
total_correct: d
})
}
r.free.seed = a, r.free.guesses = [], r.free.answers = ye(a), r.free.current = "", r.free.states = [
[],
[],
[],
[]
], r.free.answersCorrect = [-1, -1, -1, -1]
}))
}
}];
return setInterval(() => {
u[1].resetDailyIfOld()
}, 1e3), m(Me.Provider, {
value: u,
get children() {
return e.children
}
})
},
Q = () => {
const e = Pe(Me);
if (!e || !e.length) throw new Error("GamesDataContext has been used outside provider");
return e
},
Ss = v('<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" width="24px" height="24px"><title>Quordle Logo</title><rect x="0" y="0" width="12" height="12" fill="#919191"></rect><rect x="12" y="0" width="12" height="12"></rect><rect x="0" y="12" width="12" height="12"></rect><rect x="12" y="12" width="12" height="12"></rect></svg>'),
qs = v('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><title>Enter Key Icon</title><path d="M0 0h24v24H0V0z" fill="none"></path><path d="M19 7v4H5.83l3.58-3.59L8 6l-6 6 6 6 1.41-1.41L5.83 13H21V7h-2z"></path></svg>'),
Ts = v('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><title>Backspace Key Icon</title><path d="M0 0h24v24H0V0z" fill="none"></path><path d="M22 3H7c-.69 0-1.23.35-1.59.88L0 12l5.41 8.11c.36.53.9.89 1.59.89h15c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H7.07L2.4 12l4.66-7H22v14zm-11.59-2L14 13.41 17.59 17 19 15.59 15.41 12 19 8.41 17.59 7 14 10.59 10.41 7 9 8.41 12.59 12 9 15.59z"></path></svg>'),
Is = v(`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 248 204" fill="currentColor"><title>Twitter Icon</title><g><path d="M221.95,51.29c0.15,2.17,0.15,4.34,0.15,6.53c0,66.73-50.8,143.69-143.69,143.69v-0.04
C50.97,201.51,24.1,193.65,1,178.83c3.99,0.48,8,0.72,12.02,0.73c22.74,0.02,44.83-7.61,62.72-21.66
c-21.61-0.41-40.56-14.5-47.18-35.07c7.57,1.46,15.37,1.16,22.8-0.87C27.8,117.2,10.85,96.5,10.85,72.46c0-0.22,0-0.43,0-0.64
c7.02,3.91,14.88,6.08,22.92,6.32C11.58,63.31,4.74,33.79,18.14,10.71c25.64,31.55,63.47,50.73,104.08,52.76
c-4.07-17.54,1.49-35.92,14.61-48.25c20.34-19.12,52.33-18.14,71.45,2.19c11.31-2.23,22.15-6.38,32.07-12.26
c-3.77,11.69-11.66,21.62-22.2,27.93c10.01-1.18,19.79-3.86,29-7.95C240.37,35.29,231.83,44.14,221.95,51.29z"></path></g></svg>`),
Rs = v('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><title>Github Icon</title><path d="M10.9,2.1c-4.6,0.5-8.3,4.2-8.8,8.7c-0.5,4.7,2.2,8.9,6.3,10.5C8.7,21.4,9,21.2,9,20.8v-1.6c0,0-0.4,0.1-0.9,0.1 c-1.4,0-2-1.2-2.1-1.9c-0.1-0.4-0.3-0.7-0.6-1C5.1,16.3,5,16.3,5,16.2C5,16,5.3,16,5.4,16c0.6,0,1.1,0.7,1.3,1c0.5,0.8,1.1,1,1.4,1 c0.4,0,0.7-0.1,0.9-0.2c0.1-0.7,0.4-1.4,1-1.8c-2.3-0.5-4-1.8-4-4c0-1.1,0.5-2.2,1.2-3C7.1,8.8,7,8.3,7,7.6C7,7.2,7,6.6,7.3,6 c0,0,1.4,0,2.8,1.3C10.6,7.1,11.3,7,12,7s1.4,0.1,2,0.3C15.3,6,16.8,6,16.8,6C17,6.6,17,7.2,17,7.6c0,0.8-0.1,1.2-0.2,1.4 c0.7,0.8,1.2,1.8,1.2,3c0,2.2-1.7,3.5-4,4c0.6,0.5,1,1.4,1,2.3v2.6c0,0.3,0.3,0.6,0.7,0.5c3.7-1.5,6.3-5.1,6.3-9.3 C22,6.1,16.9,1.4,10.9,2.1z"></path></svg>'),
Ms = v('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 30" fill="currentColor"><title>Facebook Icon</title><path d="M15,3C8.373,3,3,8.373,3,15c0,6.016,4.432,10.984,10.206,11.852V18.18h-2.969v-3.154h2.969v-2.099c0-3.475,1.693-5,4.581-5 c1.383,0,2.115,0.103,2.461,0.149v2.753h-1.97c-1.226,0-1.654,1.163-1.654,2.473v1.724h3.593L19.73,18.18h-3.106v8.697 C22.481,26.083,27,21.075,27,15C27,8.373,21.627,3,15,3z"></path></svg>'),
Bs = v('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><title>Reddit Icon</title><path d="M14.238 15.348c.085.084.085.221 0 .306-.465.462-1.194.687-2.231.687l-.008-.002-.008.002c-1.036 0-1.766-.225-2.231-.688-.085-.084-.085-.221 0-.305.084-.084.222-.084.307 0 .379.377 1.008.561 1.924.561l.008.002.008-.002c.915 0 1.544-.184 1.924-.561.085-.084.223-.084.307 0zm-3.44-2.418c0-.507-.414-.919-.922-.919-.509 0-.923.412-.923.919 0 .506.414.918.923.918.508.001.922-.411.922-.918zm13.202-.93c0 6.627-5.373 12-12 12s-12-5.373-12-12 5.373-12 12-12 12 5.373 12 12zm-5-.129c0-.851-.695-1.543-1.55-1.543-.417 0-.795.167-1.074.435-1.056-.695-2.485-1.137-4.066-1.194l.865-2.724 2.343.549-.003.034c0 .696.569 1.262 1.268 1.262.699 0 1.267-.566 1.267-1.262s-.568-1.262-1.267-1.262c-.537 0-.994.335-1.179.804l-2.525-.592c-.11-.027-.223.037-.257.145l-.965 3.038c-1.656.02-3.155.466-4.258 1.181-.277-.255-.644-.415-1.05-.415-.854.001-1.549.693-1.549 1.544 0 .566.311 1.056.768 1.325-.03.164-.05.331-.05.5 0 2.281 2.805 4.137 6.253 4.137s6.253-1.856 6.253-4.137c0-.16-.017-.317-.044-.472.486-.261.82-.766.82-1.353zm-4.872.141c-.509 0-.922.412-.922.919 0 .506.414.918.922.918s.922-.412.922-.918c0-.507-.413-.919-.922-.919z"></path></svg>'),
Ls = v('<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><title>Instagram Icon</title><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"></path></svg>'),
As = v('<svg viewBox="0 0 71 55" fill="none" xmlns="http://www.w3.org/2000/svg"><title>Discord Icon</title><g clip-path="url(#clip0)"><path d="M60.1045 4.8978C55.5792 2.8214 50.7265 1.2916 45.6527 0.41542C45.5603 0.39851 45.468 0.440769 45.4204 0.525289C44.7963 1.6353 44.105 3.0834 43.6209 4.2216C38.1637 3.4046 32.7345 3.4046 27.3892 4.2216C26.905 3.0581 26.1886 1.6353 25.5617 0.525289C25.5141 0.443589 25.4218 0.40133 25.3294 0.41542C20.2584 1.2888 15.4057 2.8186 10.8776 4.8978C10.8384 4.9147 10.8048 4.9429 10.7825 4.9795C1.57795 18.7309 -0.943561 32.1443 0.293408 45.3914C0.299005 45.4562 0.335386 45.5182 0.385761 45.5576C6.45866 50.0174 12.3413 52.7249 18.1147 54.5195C18.2071 54.5477 18.305 54.5139 18.3638 54.4378C19.7295 52.5728 20.9469 50.6063 21.9907 48.5383C22.0523 48.4172 21.9935 48.2735 21.8676 48.2256C19.9366 47.4931 18.0979 46.6 16.3292 45.5858C16.1893 45.5041 16.1781 45.304 16.3068 45.2082C16.679 44.9293 17.0513 44.6391 17.4067 44.3461C17.471 44.2926 17.5606 44.2813 17.6362 44.3151C29.2558 49.6202 41.8354 49.6202 53.3179 44.3151C53.3935 44.2785 53.4831 44.2898 53.5502 44.3433C53.9057 44.6363 54.2779 44.9293 54.6529 45.2082C54.7816 45.304 54.7732 45.5041 54.6333 45.5858C52.8646 46.6197 51.0259 47.4931 49.0921 48.2228C48.9662 48.2707 48.9102 48.4172 48.9718 48.5383C50.038 50.6034 51.2554 52.5699 52.5959 54.435C52.6519 54.5139 52.7526 54.5477 52.845 54.5195C58.6464 52.7249 64.529 50.0174 70.6019 45.5576C70.6551 45.5182 70.6887 45.459 70.6943 45.3942C72.1747 30.0791 68.2147 16.7757 60.1968 4.9823C60.1772 4.9429 60.1437 4.9147 60.1045 4.8978ZM23.7259 37.3253C20.2276 37.3253 17.3451 34.1136 17.3451 30.1693C17.3451 26.225 20.1717 23.0133 23.7259 23.0133C27.308 23.0133 30.1626 26.2532 30.1066 30.1693C30.1066 34.1136 27.28 37.3253 23.7259 37.3253ZM47.3178 37.3253C43.8196 37.3253 40.9371 34.1136 40.9371 30.1693C40.9371 26.225 43.7636 23.0133 47.3178 23.0133C50.9 23.0133 53.7545 26.2532 53.6986 30.1693C53.6986 34.1136 50.9 37.3253 47.3178 37.3253Z" fill="currentColor"></path></g></svg>'),
Ns = v('<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"><title>Help Icon</title><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg>'),
Hs = v('<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"><title>Chevron Down Icon</title><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path></svg>'),
Es = v('<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"><title>Settings Icon</title><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"></path><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"></path></svg>'),
Gs = v('<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"><title>Donate Icon</title><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"></path></svg>'),
Os = v('<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20"><title>Patreon Icon</title><path fill="currentColor" fill-rule="evenodd" d="M124 7408.71c0-8.08 10.32-13.186 16.916-6.892 3.532 3.36 4.143 8.902 1.248 12.951-3.591 4.92-8.282 4.193-12.76 4.193v-9.588c.041-2.117.747-3.943 3.324-4.816 2.245-.664 4.863.581 5.653 2.947.832 2.533-.374 4.234-1.787 5.272-1.413 1.039-3.616 1.039-5.07.042v3.279c3.138 1.5 8.105-.303 9.684-4.4 1.08-2.864.332-6.185-1.912-8.26-2.701-2.2-5.653-2.74-8.811-1.204-2.204 1.12-3.741 3.404-4.116 5.894v10.834h-2.327L124 7408.71z" transform="translate(-124 -7399)"></path></svg>'),
Ds = v('<svg xmlns="http://www.w3.org/2000/svg" class="h-[20px] w-[20px]" fill="none" viewBox="0 0 24 24" stroke="currentColor"><title>Share Icon</title><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8.684 13.342C8.886 12.938 9 12.482 9 12c0-.482-.114-.938-.316-1.342m0 2.684a3 3 0 110-2.684m0 2.684l6.632 3.316m-6.632-6l6.632-3.316m0 0a3 3 0 105.367-2.684 3 3 0 00-5.367 2.684zm0 9.316a3 3 0 105.368 2.684 3 3 0 00-5.368-2.684z"></path></svg>'),
Ps = v('<svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" class="h-[20px] w-[20px]" viewBox="0 0 24 24" fill="currentColor"><title>Share iOS Icon</title><g><rect fill="none" height="24" width="24"></rect></g><g><path d="M16,5l-1.42,1.42l-1.59-1.59V16h-1.98V4.83L9.42,6.42L8,5l4-4L16,5z M20,10v11c0,1.1-0.9,2-2,2H6c-1.11,0-2-0.9-2-2V10 c0-1.11,0.89-2,2-2h3v2H6v11h12V10h-3V8h3C19.1,8,20,8.89,20,10z"></path></g></svg>'),
Fs = v('<svg xmlns="http://www.w3.org/2000/svg" class="h-[20px] w-[20px]" fill="none" viewBox="0 0 24 24" stroke="currentColor"><title>Copy to Clipboard Icon</title><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3"></path></svg>'),
Ws = v('<svg xmlns="http://www.w3.org/2000/svg" class="h-[20px] w-[20px]" fill="none" viewBox="0 0 24 24" stroke="currentColor"><title>Save Icon</title><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4"></path></svg>'),
Ks = v('<svg xmlns="http://www.w3.org/2000/svg" class="h-[20px] w-[20px]" fill="none" viewBox="0 0 24 24" stroke="currentColor"><title>Plus Icon</title><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4"></path></svg>'),
Qs = v('<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"><title>Statistics Icon</title><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19v-6a2 2 0 00-2-2H5a2 2 0 00-2 2v6a2 2 0 002 2h2a2 2 0 002-2zm0 0V9a2 2 0 012-2h2a2 2 0 012 2v10m-6 0a2 2 0 002 2h2a2 2 0 002-2m0 0V5a2 2 0 012-2h2a2 2 0 012 2v14a2 2 0 01-2 2h-2a2 2 0 01-2-2z"></path></svg>'),
Us = v('<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor"><title>Close Icon</title><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"></path></svg>'),
Vs = e => (() => {
const s = Ss.cloneNode(!0),
t = s.firstChild,
l = t.nextSibling,
i = l.nextSibling,
n = i.nextSibling,
o = n.nextSibling;
return be(s, e, !0, !0), j(u => {
const a = e.colorblind ? "#fb923c" : "#00cc88",
r = e.colorblind ? "#fb923c" : "#00cc88",
d = e.colorblind ? "#60a5fa" : "#ffcc00";
return a !== u._v$ && x(i, "fill", u._v$ = a), r !== u._v$2 && x(n, "fill", u._v$2 = r), d !== u._v$3 && x(o, "fill", u._v$3 = d), u
}, {
_v$: void 0,
_v$2: void 0,
_v$3: void 0
}), s
})(),
Ys = e => (() => {
const s = qs.cloneNode(!0);
return j(() => x(s, "height", (e.height ? e.height : 16) + "px")), s
})(),
Xs = e => (() => {
const s = Ts.cloneNode(!0);
return j(() => x(s, "height", (e.height ? e.height : 16) + "px")), s
})(),
Xe = e => (() => {
const s = Is.cloneNode(!0);
return j(() => x(s, "height", (e.height ? e.height : 16) + "px")), s
})(),
Js = e => (() => {
const s = Rs.cloneNode(!0);
return j(t => {
const l = (e.height ? e.height : 24) + "px",
i = (e.height ? e.height : 24) + "px";
return l !== t._v$4 && x(s, "height", t._v$4 = l), i !== t._v$5 && x(s, "width", t._v$5 = i), t
}, {
_v$4: void 0,
_v$5: void 0
}), s
})(),
Zs = e => (() => {
const s = Ms.cloneNode(!0);
return j(t => {
const l = (e.height ? e.height : 24) + "px",
i = (e.height ? e.height : 24) + "px";
return l !== t._v$6 && x(s, "height", t._v$6 = l), i !== t._v$7 && x(s, "width", t._v$7 = i), t
}, {
_v$6: void 0,
_v$7: void 0
}), s
})(),
ea = e => (() => {
const s = Bs.cloneNode(!0);
return j(t => {
const l = (e.height ? e.height : 24) + "px",
i = (e.height ? e.height : 24) + "px";
return l !== t._v$8 && x(s, "height", t._v$8 = l), i !== t._v$9 && x(s, "width", t._v$9 = i), t
}, {
_v$8: void 0,
_v$9: void 0
}), s
})(),
sa = e => (() => {
const s = Ls.cloneNode(!0);
return j(t => {
const l = (e.height ? e.height : 24) + "px",
i = (e.height ? e.height : 24) + "px";
return l !== t._v$10 && x(s, "height", t._v$10 = l), i !== t._v$11 && x(s, "width", t._v$11 = i), t
}, {
_v$10: void 0,
_v$11: void 0
}), s
})(),
aa = e => (() => {
const s = As.cloneNode(!0);
return j(() => x(s, "height", (e.height ? e.height : 24) + "px")), s
})(),
ta = () => Ns.cloneNode(!0),
Je = e => (() => {
const s = Hs.cloneNode(!0);
return be(s, e, !0, !0), s
})(),
ra = e => (() => {
const s = Es.cloneNode(!0);
return be(s, e, !0, !0), s
})(),
oa = e => (() => {
const s = Gs.cloneNode(!0);
return be(s, e, !0, !0), s
})(),
ia = e => (() => {
const s = Os.cloneNode(!0);
return be(s, e, !0, !0), s
})(),
la = () => Ds.cloneNode(!0),
na = () => Ps.cloneNode(!0),
da = () => Fs.cloneNode(!0),
Ge = () => Ws.cloneNode(!0),
ua = () => Ks.cloneNode(!0),
ca = () => Qs.cloneNode(!0),
Be = () => Us.cloneNode(!0),
ga = v('<button type="button"></button>'),
ma = v('<div class="px-4 py-2 text-center" aria-label="Game complete banner"><div class="text-3xl pb-2"></div></div>'),
ha = v('<div class="flex items-center justify-center"><div class="ml-2">New Practice Game</div></div>'),
ya = v('<div class="text-black dark:text-white text-2xl" aria-label="Next Daily Timer">Next Daily </div>'),
ba = v('<div class="mx-2.5 mt-1 px-4 py-2 text-center bg-rose-700 text-white text-xl rounded" aria-label="Daily will reset soon banner">Daily will reset </div>'),
pa = e => (() => {
const s = ga.cloneNode(!0);
return oe(s, "click", e.onClick, !0), c(s, () => e.children), j(t => {
const l = `text-lg min-h-[40px] text-gray-900 bg-gray-300 border border-gray-400 hover:bg-gray-100 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg px-3 text-center dark:bg-gray-600 dark:text-white dark:border-gray-700 dark:hover:bg-gray-700 dark:hover:border-gray-800 dark:focus:ring-gray-900 ${e.class}`,
i = e.ariaLabel;
return l !== t._v$ && (s.className = t._v$ = l), i !== t._v$2 && x(s, "aria-label", t._v$2 = i), t
}, {
_v$: void 0,
_v$2: void 0
}), s
})(),
fa = e => {
const [s, t] = Q(), l = C(() => s[e.mode].answersCorrect.reduce((a, r) => a += r >= 0 ? 1 : 0, 0)), i = C(() => new Date(Ie.getTime() + (s[e.mode].seed + 1) * Re)), [n, o] = W(new Date), u = setInterval(() => o(new Date), 1e3);
return Ce(() => clearInterval(u)), C(() => t.isGameComplete(e.mode) ? (() => {
const a = ma.cloneNode(!0),
r = a.firstChild;
return c(r, (() => {
const d = ae(() => l() === 4, !0);
return () => d() ? "Quordle Complete!" : l() === 3 ? "So Close!" : "Better Luck Next Time!"
})()), c(a, (() => {
const d = ae(() => e.mode === "free", !0);
return () => d() ? m(pa, {
onClick: () => {
R(s.vibration), t.resetFree()
},
ariaLabel: "New Practice Game",
get children() {
const p = ha.cloneNode(!0),
h = p.firstChild;
return c(p, m(ua, {}), h), p
}
}) : (() => {
const p = ya.cloneNode(!0);
return p.firstChild, c(p, () => Ee(n(), i()), null), p
})()
})(), null), j(d => te(r, {
"text-green-600 dark:text-green-500": l() === 4,
"text-amber-600 dark:text-amber-400": l() === 3,
"text-orange-600 dark:text-orange-500": l() === 2,
"text-rose-600": l() <= 1
}, d)), a
})() : e.mode === "daily" && i().getTime() - n().getTime() < ee.minute * 5 ? (() => {
const a = ba.cloneNode(!0);
return a.firstChild, c(a, () => Ee(n(), i()), null), j(() => a.classList.toggle("animate-pulse", i().getTime() - n().getTime() < ee.second * 15)), a
})() : null)
};
de(["click"]);
const K = e => {
if (e < 0) return "\u{1F7E5}";
if (e === 0) return "1\uFE0F\u20E3";
if (e === 1) return "2\uFE0F\u20E3";
if (e === 2) return "3\uFE0F\u20E3";
if (e === 3) return "4\uFE0F\u20E3";
if (e === 4) return "5\uFE0F\u20E3";
if (e === 5) return "6\uFE0F\u20E3";
if (e === 6) return "7\uFE0F\u20E3";
if (e === 7) return "8\uFE0F\u20E3";
if (e === 8) return "9\uFE0F\u20E3"
},
we = e => {
let s = "";
if (!e || e.length === 0) return "\u2B1B\u2B1B\u2B1B\u2B1B\u2B1B";
for (let t = 0; t < e.length; t++) e[t] === "correct" ? s += "\u{1F7E9}" : e[t] === "diff" ? s += "\u{1F7E8}" : e[t] === "none" && (s += "\u2B1C");
return s
},
ve = e => e ? e === "correct" ? "#00cc88" : e === "diff" ? "#ffcc00" : e === "none" ? "#e0e0e0" : "#2d2d2d" : "#2d2d2d";

function he(e, s, t, l, i, n) {
const o = {
tl: n,
tr: n,
br: n,
bl: n
};
e.beginPath(), e.moveTo(s + o.tl, t), e.lineTo(s + l - o.tr, t), e.quadraticCurveTo(s + l, t, s + l, t + o.tr), e.lineTo(s + l, t + i - o.br), e.quadraticCurveTo(s + l, t + i, s + l - o.br, t + i), e.lineTo(s + o.bl, t + i), e.quadraticCurveTo(s, t + i, s, t + i - o.bl), e.lineTo(s, t + o.tl), e.quadraticCurveTo(s, t, s + o.tl, t), e.closePath(), e.fill()
}
const Ze = (e, s) => {
let t = "";
e === "daily" ? t = "Daily Quordle #" + s.seed.toString(10) + `
` + K(s.answersCorrect[0]) + K(s.answersCorrect[1]) + `
` + K(s.answersCorrect[2]) + K(s.answersCorrect[3]) : t = `Practice Quordle
` + K(s.answersCorrect[0]) + K(s.answersCorrect[1]) + (" " + s.answers[0].toUpperCase() + " - " + s.answers[1].toUpperCase()) + `
` + K(s.answersCorrect[2]) + K(s.answersCorrect[3]) + (" " + s.answers[2].toUpperCase() + " - " + s.answers[3].toUpperCase()), t += `
quordle.com`;
const l = t;
t += `
`;
let i = A - 1;
s.answersCorrect[0] >= 0 && s.answersCorrect[1] >= 0 && (i = Math.max(s.answersCorrect[0], s.answersCorrect[1]));
let n = A - 1;
s.answersCorrect[2] >= 0 && s.answersCorrect[3] >= 0 && (n = Math.max(s.answersCorrect[2], s.answersCorrect[3]));
for (let o = 0; o <= i; o++) t += we(s.states[0][o]) + " " + we(s.states[1][o]) + `
`;
t += `
`;
for (let o = 0; o <= n; o++) t += we(s.states[2][o]) + " " + we(s.states[3][o]) + `
`;
return [t, l]
},
xe = (e, s, t) => Ae(as, null, function*() {
const [l, i] = Ze(e, s);
if (O("event", "share", {
mode: e,
share_type: t,
daily_seed: e === "daily" ? s.seed : void 0
}), t === "clipboard") navigator.clipboard.writeText(l).then(() => alert("Copied results to clipboard!")).catch(n => {
console.error(n), alert("Error copying results to clipboard!")
});
else if (t === "share") navigator.share({
text: l
}).catch(n => console.error(n));
else if (t === "image" || t === "image_save") {
const n = document.createElement("canvas");
n.style.display = "none";
let o = A - 1;
s.answersCorrect[0] >= 0 && s.answersCorrect[1] >= 0 && (o = Math.max(s.answersCorrect[0], s.answersCorrect[1]));
let u = A - 1;
s.answersCorrect[2] >= 0 && s.answersCorrect[3] >= 0 && (u = Math.max(s.answersCorrect[2], s.answersCorrect[3]));
const a = 64,
r = a / 16,
d = a / 8,
p = .75,
h = a / 4;
n.width = (a + r) * 11 - r, n.height = (a + r) * (o + 1 + u + 1 + 4) - r;
const g = n.getContext("2d");
if (!g) return;
g.fillStyle = "black", g.fillRect(0, 0, n.width, n.height);
let f = 0,
w = 0;
for (let b = 0; b <= o; b++) {
let y = s.states[0][b];
for (f = 0; f < se; f++) g.fillStyle = ve(y == null ? void 0 : y[f]), he(g, f * (a + r), w * (a + r), a, a, d);
for (y = s.states[1][b], f = 6; f < se + 6; f++) g.fillStyle = ve(y == null ? void 0 : y[f - 6]), he(g, f * (a + r), w * (a + r), a, a, d);
w++
}
g.font = a * p + "px Arial", g.textAlign = "center", g.textBaseline = "alphabetic", g.fillStyle = "#ffffff";
const S = e === "daily" ? "Daily Quordle #" + s.seed.toString(10) : "Practice Quordle";
let T = g.measureText(S),
_ = T.actualBoundingBoxAscent;
g.fillText(S, n.width / 2, w * (a + r) + a - (a - _) / 2, n.width - h * 2), w++;
for (let b = 0; b < 2; b++) {
for (let y = 0; y < 2; y++) {
g.fillStyle = s.answersCorrect[y + b * 2] >= 0 ? "#00a6ed" : "#f8312f";
const M = y * 2 - 1,
H = n.width / 2 + M * (r / 2) + M * (a / 2);
if (he(g, H - a / 2, w * (a + r), a, a, d), s.answersCorrect[y + b * 2] >= 0) {
g.textAlign = "center", g.fillStyle = "#ffffff";
const D = String(s.answersCorrect[y + b * 2] + 1);
T = g.measureText(D), _ = T.actualBoundingBoxAscent + T.actualBoundingBoxDescent, g.fillText(D, H, w * (a + r) + a - (a - _) / 2, a)
}
}
if (e === "free") {
g.textAlign = "right", g.fillStyle = "#ffffff";
let y = s.answers[0 + b * 2].toUpperCase();
T = g.measureText(y), _ = T.actualBoundingBoxAscent + T.actualBoundingBoxDescent, g.fillText(y, n.width / 2 - r / 2 - a - h, w * (a + r) + a - (a - _) / 2, n.width / 2 - r - a - h * 2), g.textAlign = "left", y = s.answers[1 + b * 2].toUpperCase(), T = g.measureText(y), _ = T.actualBoundingBoxAscent + T.actualBoundingBoxDescent, g.fillText(y, n.width / 2 + r / 2 + a + h, w * (a + r) + a - (a - _) / 2, n.width / 2 - r - a - h * 2)
}
w++
}
g.textAlign = "center", g.textBaseline = "middle", g.fillStyle = "#ffffff", g.fillText("quordle.com", n.width / 2, w * (a + r) + a / 2, n.width), w++;
for (let b = 0; b <= u; b++) {
f = 0;
let y = s.states[2][b];
for (f = 0; f < se; f++) g.fillStyle = ve(y == null ? void 0 : y[f]), he(g, f * (a + r), w * (a + r), a, a, d);
for (y = s.states[3][b], f = 6; f < se + 6; f++) g.fillStyle = ve(y == null ? void 0 : y[f - 6]), he(g, f * (a + r), w * (a + r), a, a, d);
w++
}
const k = yield new Promise(b => n.toBlob(b));
if (!k) return;
const $ = `quordle-${e==="daily"?"daily":"practice"}-${s.seed}.png`,
z = new File([k], $, {
type: "image/png"
});
t === "image" ? navigator.share({
files: [z],
text: i
}).catch(b => console.error(b)) : t === "image_save" && ls.saveAs(z, $)
}
}),
ka = v('<button type="button" class="text-lg min-h-[40px] text-white bg-blue-800 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg px-3 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800"></button>'),
wa = v('<span><a target="_blank" aria-label="Link to word definition"></a></span>'),
va = v('<div class="flex flex-col rounded-t-lg text-center px-4 pt-2 pb-4" aria-label="Game results and share banner"><div class="text-2xl flex"><div class="flex flex-1 justify-end items-center"><span class="font-[Arial]"></span></div><div class="flex flex-1 justify-start items-center"><span class="font-[Arial]"></span></div></div><div class="text-2xl flex"><div class="flex flex-1 justify-end items-center"><span class="font-[Arial]"></span></div><div class="flex flex-1 justify-start items-center"><span class="font-[Arial]"></span></div></div><div class="flex items-center justify-center mt-2"></div><textarea class="font-[Courier] w-[100%] text-sm text-black dark:text-white bg-white dark:bg-gray-800 text-center rounded-lg mt-2 resize-none" rows="8" readonly aria-label="Copy to clipboard text area"></textarea></div>'),
xa = v('<div class="flex items-center justify-center"><div class="ml-2">Share</div></div>'),
za = v('<div class="mr-2 inline-flex"></div>'),
$a = v('<div class="inline-flex" role="group"><button type="button" class="text-lg min-h-[40px] text-white bg-blue-800 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-l-lg px-4 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800 border-r-[1px] border-gray-400" aria-label="Share Image"><div class="flex items-center justify-center"><div class="ml-2">Share Image</div></div></button><button type="button" class="text-lg min-h-[40px] text-white bg-blue-800 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-r-lg px-4 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800" aria-label="Save Image"></button></div>'),
_a = v('<div class="flex items-center justify-center"><div class="ml-2">Save Image</div></div>'),
Ca = v('<div class="flex items-center justify-center"><div class="ml-2">Copy to Clipboard</div></div>'),
ja = v('<div class="flex items-center justify-center mt-2"></div>'),
qe = e => (() => {
const s = ka.cloneNode(!0);
return oe(s, "click", e.onClick, !0), c(s, () => e.children), j(() => x(s, "aria-label", e.ariaLabel)), s
})(),
ze = e => {
const [s] = Q(), t = C(() => s[e.mode].answersCorrect[e.gameIndex]), l = C(() => s[e.mode].answers[e.gameIndex].toUpperCase());
return (() => {
const i = wa.cloneNode(!0),
n = i.firstChild;
return c(n, l), j(o => {
const u = {
"mr-4": e.marginSide === "right",
"ml-4": e.marginSide === "left",
"text-green-600 dark:text-green-500": s[e.mode].answersCorrect[e.gameIndex] >= 0,
"text-rose-600": s[e.mode].answersCorrect[e.gameIndex] < 0
},
a = `Answer is ${l()} for game board ${e.gameIndex+1}. ` + (t() >= 0 ? `Solved in ${t()+1} guesses.` : "Unsolved."),
r = ps + s[e.mode].answers[e.gameIndex];
return o._v$ = te(i, u, o._v$), a !== o._v$2 && x(i, "aria-label", o._v$2 = a), r !== o._v$3 && x(n, "href", o._v$3 = r), o
}, {
_v$: void 0,
_v$2: void 0,
_v$3: void 0
}), i
})()
},
Sa = e => {
const [s, t] = Q(), [l, i] = W(void 0), [n, o] = W(!1), u = C(() => Ze(e.mode, s[e.mode])[0]);
return (() => {
const a = va.cloneNode(!0),
r = a.firstChild,
d = r.firstChild,
p = d.firstChild,
h = d.nextSibling,
g = h.firstChild,
f = r.nextSibling,
w = f.firstChild,
S = w.firstChild,
T = w.nextSibling,
_ = T.firstChild,
k = f.nextSibling,
$ = k.nextSibling;
return c(d, m(ze, {
get mode() {
return e.mode
},
gameIndex: 0,
marginSide: "right"
}), p), c(p, () => K(s[e.mode].answersCorrect[0])), c(g, () => K(s[e.mode].answersCorrect[1])), c(h, m(ze, {
get mode() {
return e.mode
},
gameIndex: 1,
marginSide: "left"
}), null), c(w, m(ze, {
get mode() {
return e.mode
},
gameIndex: 2,
marginSide: "right"
}), S), c(S, () => K(s[e.mode].answersCorrect[2])), c(_, () => K(s[e.mode].answersCorrect[3])), c(T, m(ze, {
get mode() {
return e.mode
},
gameIndex: 3,
marginSide: "left"
}), null), c(k, vs && (() => {
const z = za.cloneNode(!0);
return c(z, m(qe, {
onClick: () => {
R(s.vibration), xe(e.mode, s[e.mode], "share")
},
ariaLabel: "Share",
get children() {
const b = xa.cloneNode(!0),
y = b.firstChild;
return c(b, ws ? m(na, {}) : m(la, {}), y), b
}
})), z
})(), null), c(k, xs ? (() => {
const z = $a.cloneNode(!0),
b = z.firstChild,
y = b.firstChild,
M = y.firstChild,
H = b.nextSibling;
return b.$$click = () => {
R(s.vibration), xe(e.mode, s[e.mode], "image")
}, c(y, m(Xe, {
height: 16
}), M), H.$$click = () => {
R(s.vibration), xe(e.mode, s[e.mode], "image_save")
}, c(H, m(Ge, {})), z
})() : m(qe, {
onClick: () => {
R(s.vibration), xe(e.mode, s[e.mode], "image_save")
},
ariaLabel: "Save Image",
get children() {
const z = _a.cloneNode(!0),
b = z.firstChild;
return c(z, m(Ge, {}), b), z
}
}), null), c(a, (() => {
const z = ae(() => !!l(), !0);
return () => z() && (() => {
const b = ja.cloneNode(!0);
return c(b, m(qe, {
onClick: () => {
R(s.vibration), O("event", "share", {
mode: e.mode,
share_type: "clipboard",
daily_seed: e.mode === "daily" ? s[e.mode].seed : void 0
}), o(!0);
const y = l();
if (y) {
y.select(), document.execCommand("copy");
const M = window.getSelection && window.getSelection();
M && M.removeAllRanges(), y.blur()
}
alert("Copied results to clipboard!")
},
ariaLabel: "Copy to Clipboard",
get children() {
const y = Ca.cloneNode(!0),
M = y.firstChild;
return c(y, m(da, {}), M), y
}
})), b
})()
})(), $), i($), c($, u), j(z => te($, {
"absolute top-[100%]": !n()
}, z)), a
})()
};
de(["click"]);
const qa = v('<div class="quordle-box w-[20%]" role="cell"><div class="quordle-box-content"> </div></div>'),
es = e => {
const [s, t] = W(!1), l = C(() => e.rowTemporalState === "present" || e.gameSize === "square" ? e.presentTileHeight : e.tileHeight);
return _e(() => {
if (l() > 0) {
const i = setTimeout(() => {
t(!0)
}, 100);
Ce(() => clearTimeout(i))
}
}), (() => {
const i = qa.cloneNode(!0),
n = i.firstChild,
o = n.firstChild;
return j(u => {
const a = {
"bg-box-correct": e.state === "correct" && !e.colorblind,
"bg-box-correct-alt": e.state === "correct" && e.colorblind,
"bg-box-diff": e.state === "diff" && !e.colorblind,
"bg-box-diff-alt": e.state === "diff" && e.colorblind,
"bg-gray-200 dark:bg-gray-700": e.state === "none" && e.rowTemporalState === "past",
"bg-gray-300 dark:bg-gray-600": e.rowTemporalState === "present" && !e.answered,
"bg-gray-100 dark:bg-gray-900": e.rowTemporalState === "future" || e.rowTemporalState === "never" || e.rowTemporalState === "present" && e.answered,
"text-black": e.state === "correct" || e.state === "diff",
"text-rose-600": e.state === "invalid",
"text-black dark:text-white": e.state === "none",
"quordle-heartbeat-anim dark:quordle-heartbeat-anim-dark": e.activeCol === e.gameCol && e.rowTemporalState === "present" && !e.answered,
"quordle-letter-anim": e.letter !== "" && e.rowTemporalState === "present",
"quordle-box-connected": e.rowTemporalState === "future" || e.rowTemporalState === "never",
"quordle-box-animate": s()
},
r = l() + "px",
d = Math.min(l() * .8, 30) + "px",
p = e.ariaLabel,
h = e.letter;
return u._v$ = te(i, a, u._v$), r !== u._v$2 && i.style.setProperty("height", u._v$2 = r), d !== u._v$3 && i.style.setProperty("font-size", u._v$3 = d), p !== u._v$4 && x(i, "aria-label", u._v$4 = p), h !== u._v$5 && (o.data = u._v$5 = h), u
}, {
_v$: void 0,
_v$2: void 0,
_v$3: void 0,
_v$4: void 0,
_v$5: void 0
}), i
})()
},
Ta = e => {
const s = e.gameX + e.gameY * pe,
[t, l] = Q(),
i = C(() => {
const h = t[e.mode],
g = h.guesses,
f = h.answers[s];
return g.indexOf(f)
}),
n = C(() => i() !== -1 && i() < e.gameRow),
o = C(() => t[e.mode].current.length),
u = C(() => {
const h = t[e.mode],
g = h.current,
f = h.guesses;
return e.gameRow <= i() || i() === -1 && e.gameRow < f.length || i() === -1 && e.gameRow === f.length && e.gameCol < g.length
}),
a = C(() => {
const h = t[e.mode],
g = h.guesses,
f = h.current;
let w = "";
if (u()) e.gameRow < g.length ? w = g[e.gameRow][e.gameCol] : e.gameRow === g.length && (w = f[e.gameCol]);
else return w;
return w.toUpperCase()
}),
r = C(() => {
var S;
const h = t[e.mode],
g = h.guesses,
f = h.states,
w = h.current;
if (u()) {
if (e.gameRow < g.length) return ((S = f[s][e.gameRow]) == null ? void 0 : S[e.gameCol]) || "none";
if (e.gameRow === g.length && w.length === 5 && !Ve.has(w) && !Ue.has(w)) return "invalid"
}
return "none"
}),
d = C(() => {
const g = t[e.mode].guesses;
return e.gameRow === g.length ? l.isGameComplete(e.mode) ? "never" : "present" : n() ? "never" : g.length > e.gameRow ? "past" : "future"
}),
p = C(() => `${a()?`'${a()}'`:"Blank"} (letter ${e.gameCol+1}) is ${n()||d()==="never"?"never guessable (board is complete)":d()==="future"?"a future guess":r()==="invalid"?"an invalid guess":d()==="present"?"being guessed":r()==="diff"?"in a different spot":r()==="none"?"incorrect":"correct"}.`);
return m(es, {
get state() {
return r()
},
get letter() {
return a()
},
get gameRow() {
return e.gameRow
},
get gameCol() {
return e.gameCol
},
get rowTemporalState() {
return d()
},
get activeCol() {
return o()
},
get colorblind() {
return t.colorblind
},
get currentRow() {
return t[e.mode].guesses.length
},
get tileHeight() {
return e.tileHeight
},
get presentTileHeight() {
return e.presentTileHeight
},
get answered() {
return n()
},
get gameSize() {
return t.gameSize
},
get ariaLabel() {
return p()
}
})
},
Ia = v('<div id="options-dropdown" class="absolute flex flex-col bg-gray-100 dark:bg-gray-800 text-black dark:text-white z-20 right-4 rounded-lg border-2 border-gray-400"><button type="button" class="flex flex-row-reverse items-center px-4 py-2 hover:bg-gray-200 dark:hover:bg-gray-700 transition-all my-4" aria-controls="settings-panel" aria-label="Open settings page"><div class="mr-3 text-black dark:text-white">Settings</div></button><button type="button" class="flex flex-row-reverse items-center px-4 py-2 hover:bg-gray-200 dark:hover:bg-gray-700 transition-all mb-4" aria-controls="statistics-panel"><div class="mr-3 text-black dark:text-white"> Stats</div></button><button type="button" class="px-4 py-2 hover:bg-gray-200 dark:hover:bg-gray-700 transition-all mb-4" aria-label="Donate Link"><a class="flex flex-row-reverse items-center " href="https://www.buymeacoffee.com/quordle" target="_blank"><div class="mr-3 text-black dark:text-white">Donate</div></a></button><button type="button" class="px-4 py-2 hover:bg-gray-200 dark:hover:bg-gray-700 transition-all mb-4" aria-label="Patreon Link"><a class="flex flex-row-reverse items-center " href="https://www.patreon.com/quordle" target="_blank"><div class="mr-3 text-black dark:text-white">Patreon</div></a></button></div>'),
Ra = v('<nav class="bg-slate-300 dark:bg-gray-900 w-screen border-b-2 border-white dark:border-gray-800"><div class="flex items-center max-w-[550px] m-auto px-4 py-2 relative"><span class="ml-3 text-black dark:text-white">Quordle</span><div class="flex-1"><div class="flex mx-2"></div></div><div class="flex items-center"><button type="button" class="bg-indigo-500 dark:bg-gray-800 p-1 rounded-full text-white hover:text-gray-200 dark:text-gray-400 dark:hover:text-white transition-colors" aria-controls="tutorial-panel" aria-label="Open help page"></button><button type="button" class="bg-indigo-500 dark:bg-gray-800 p-1 rounded-full text-white hover:text-gray-200 dark:text-gray-400 dark:hover:text-white ml-2 transition" aria-controls="options-dropdown" aria-label="Open options dropdown"></button></div></div></nav>'),
Ma = e => {
const [s] = Q(), [t, l] = Fe(), i = C(() => t.overlay === "tutorial"), n = C(() => t.overlay === "statistics"), o = C(() => t.overlay === "settings"), [u, a] = W(!1), [r, d] = W();
return (() => {
const p = Ra.cloneNode(!0),
h = p.firstChild,
g = h.firstChild,
f = g.nextSibling,
w = f.firstChild,
S = f.nextSibling,
T = S.firstChild,
_ = T.nextSibling;
return c(h, m(Vs, {
get colorblind() {
return s.colorblind
}
}), g), c(w, m(Ne, {
href: "/",
activeClass: "quordle-nav-active",
class: "quordle-nav",
onClick: () => R(s.vibration),
end: !0,
children: "Daily"
}), null), c(w, m(Ne, {
href: "/practice",
activeClass: "quordle-nav-active",
class: "quordle-nav",
onClick: () => R(s.vibration),
end: !0,
children: "Practice"
}), null), oe(T, "click", e.onOpenTutorial, !0), c(T, m(ta, {})), _.$$click = () => R(s.vibration), (k => d(k))(_), c(_, m(Je, {})), c(h, m(ns, {
class: "z-30",
menuButton: r,
open: u,
setOpen: a,
animation: {
name: "quordle-fade"
},
get children() {
const k = Ia.cloneNode(!0),
$ = k.firstChild,
z = $.firstChild,
b = $.nextSibling,
y = b.firstChild,
M = y.firstChild,
H = b.nextSibling,
D = H.firstChild,
re = D.firstChild,
Y = H.nextSibling,
ie = Y.firstChild,
ue = ie.firstChild;
return $.$$click = () => {
a(!1), e.onOpenSettings()
}, c($, m(ra, {}), z), b.$$click = () => {
a(!1), e.onOpenStatistics()
}, c(b, m(ca, {}), y), c(y, () => e.mode === "daily" ? "Daily" : "Practice", M), H.$$click = () => {
R(s.vibration), a(!1)
}, c(D, m(oa, {}), re), Y.$$click = () => {
R(s.vibration), a(!1)
}, c(ie, m(ia, {}), ue), j(P => {
var E;
const le = (((E = r()) == null ? void 0 : E.getBoundingClientRect().bottom) || 0) + 12 + "px",
q = o(),
L = n(),
N = `Open ${e.mode==="daily"?"daily":"practice"} statistics page`;
return le !== P._v$ && k.style.setProperty("top", P._v$ = le), q !== P._v$2 && x($, "aria-expanded", P._v$2 = q), L !== P._v$3 && x(b, "aria-expanded", P._v$3 = L), N !== P._v$4 && x(b, "aria-label", P._v$4 = N), P
}, {
_v$: void 0,
_v$2: void 0,
_v$3: void 0,
_v$4: void 0
}), k
}
}), null), j(k => {
const $ = i(),
z = u(),
b = u();
return $ !== k._v$5 && x(T, "aria-expanded", k._v$5 = $), z !== k._v$6 && _.classList.toggle("rotate-180", k._v$6 = z), b !== k._v$7 && x(_, "aria-expanded", k._v$7 = b), k
}, {
_v$5: void 0,
_v$6: void 0,
_v$7: void 0
}), p
})()
};
de(["click"]);
const Ba = v('<button class="quordle-key border-gray-300 dark:border-gray-700" role="cell"><div class="quordle-box-content"></div></button>'),
La = v('<div class="w-full flex-col p-1 pb-1.5 bg-blue-200 dark:bg-cyan-900 rounded-t shadow" role="table" aria-label="Keyboard"></div>'),
Aa = v('<div class="flex w-full justify-center" role="row"></div>'),
Na = e => {
const [s, t] = Q(), l = C(() => e.key.toLowerCase()), i = C(() => {
if (e.key === "bs" || e.key === "enter") return !1;
const a = s[e.mode].guesses;
let r = !1;
for (let d = 0; d < a.length; d++)
if (a[d].indexOf(l()) >= 0) {
r = !0;
break
} return r
}), n = C(() => {
const a = s[e.mode].guesses,
r = ["none", "none", "none", "none"];
for (let d = 0; d < r.length; d++) {
const p = s[e.mode].states[d];
if (!(s[e.mode].answersCorrect[d] >= 0))
for (let h = 0; h < p.length; h++)
for (let g = 0; g < p[h].length; g++) l() === a[h][g] && (p[h][g] === "correct" || p[h][g] === "diff") && (p[h][g] === "correct" ? r[d] = "correct" : p[h][g] === "diff" && r[d] !== "correct" && (r[d] = "diff"))
}
return r
}), o = C(() => {
if (!i() || n().every(d => d === "none")) return "";
const a = {
none: s.darkMode ? "#9ca3af" : "#d1d5db",
diff: s.colorblind ? "#60a5fa" : "#ffcc00",
correct: s.colorblind ? "#fb923c" : "#00cc88"
},
r = n().map(d => a[d]);
return "background: conic-gradient(" + r[1] + " 0deg 90deg, " + r[3] + " 90deg 180deg, " + r[2] + " 180deg 270deg, " + r[0] + " 270deg 360deg);"
}), u = C(() => e.key === "bs" ? "Backspace key" : e.key === "enter" ? "Enter key" : `'${e.key}' key. ${i()?n().every(a=>a==="none")&&i()?"Incorrect in all game boards.":n().map((a,r)=>(a==="diff"?"Different spot":a==="none"?"Incorrect":"Correct")+` in game board ${r+1}`).join(". "):"Not guessed."}`);
return (() => {
const a = Ba.cloneNode(!0),
r = a.firstChild;
return a.$$click = () => {
R(s.vibration), t.sendKey(e.mode, new KeyboardEvent("keydown", {
keyCode: e.key === "enter" ? 13 : e.key === "bs" ? 8 : Ke.indexOf(e.key.toLowerCase()) + 65,
key: e.key === "enter" ? "Enter" : e.key === "bs" ? "Backspace" : e.key.toLowerCase()
}))
}, c(r, (() => {
const d = ae(() => e.key === "enter", !0);
return () => d() ? m(Ys, {
get height() {
return e.fontSize * .8
}
}) : (() => {
const p = ae(() => e.key === "bs", !0);
return () => p() ? m(Xs, {
get height() {
return e.fontSize * .8
}
}) : e.key
})()
})()), j(d => {
const p = {
"w-[calc(10%-0.25rem)]": e.key !== "enter" && e.key !== "bs",
"w-[calc(15%-0.5rem)]": e.key === "enter" || e.key === "bs",
"text-black dark:text-black border-gray-400": !!o(),
"text-black dark:text-white bg-white dark:bg-gray-500": !o() && !i(),
"text-blue-300 dark:text-cyan-600 bg-blue-100 dark:bg-cyan-800 border-blue-200 dark:border-cyan-900": !o() && i()
},
h = "padding-bottom: calc(" + 10 * s.keyboardHeight + "% - 0.25rem);" + o(),
g = u();
return d._v$ = te(a, p, d._v$), d._v$2 = ds(a, h, d._v$2), g !== d._v$3 && x(a, "aria-label", d._v$3 = g), d
}, {
_v$: void 0,
_v$2: void 0,
_v$3: void 0
}), a
})()
},
Ha = e => {
const [s] = Q();
return (() => {
const t = La.cloneNode(!0);
return c(t, () => (s.enterBsReversed ? ks : fs).map((l, i) => (() => {
const n = Aa.cloneNode(!0);
return x(n, "aria-label", `Keyboard Row ${i+1}`), c(n, () => l.map((o, u) => m(Na, {
get mode() {
return e.mode
},
x: u,
y: i,
key: o,
get fontSize() {
return e.fontSize
}
}))), n
})())), t
})()
};
de(["click"]);

function ss(e) {
const [s, t] = W([]), l = o => t(u => u.concat(o)), i = new Map, n = new us(o => {
if (!!Array.isArray(o))
for (const u of o) {
const a = Math.round(u.contentRect.width),
r = Math.round(u.contentRect.height),
d = i.get(u.target);
if (!d || d.width !== a || d.height !== r) {
const p = {
width: a,
height: r
};
e.onResize(p, u.target), i.set(u.target, {
width: a,
height: r
})
}
}
});
return _e(o => {
let u = [];
if (e.refs) {
const a = typeof e.refs == "function" ? e.refs() : e.refs;
Array.isArray(a) ? u = u.concat(a) : u.push(a)
}
return u = u.concat(s()), o = o || [], o.forEach(a => {
a in u || (n.unobserve(a), i.delete(a))
}), u.forEach(a => {
a in o || n.observe(a)
}), u
}), Ce(() => n.disconnect()), l
}
const Ea = v('<div class="flex items-center m-4"><label class="flex items-center cursor-pointer"><div class="relative"><input type="checkbox" class="sr-only"><div class="block bg-gray-500 dark:bg-gray-600 w-14 h-8 rounded-full"></div><div class="dot absolute left-1 top-1 bg-white w-6 h-6 rounded-full transition"></div></div><div class="ml-3 text-black dark:text-white"></div></label></div>'),
Ga = v('<div id="settings-panel" class="w-full h-full overflow-auto" aria-label="Settings"><div class="max-w-[550px] w-full m-auto flex flex-row-reverse pr-4 pt-2"><button type="button" class="bg-white dark:bg-gray-800 p-1 rounded-full text-gray-900 hover:text-black dark:text-gray-400 dark:hover:text-white" aria-label="Close Settings"></button></div><div class="max-w-[550px] m-auto w-full px-6 mb-8"><div class="text-4xl mt-2 mb-4 text-center">Settings</div><div class="flex flex-col text-base"><div class="m-4"><label for="keyboardHeightRange">Keyboard Height (<!>)</label><input type="range" class="appearance-none w-full h-2 rounded bg-gray-300 dark:bg-gray-600 cursor-pointer" min="0.7" max="1.3" step="0.1" id="keyboardHeightRange"></div><div class="m-4"><label for="gameSizeSelect" class="block text-black dark:text-white mb-1">Game Size</label><div class="relative"><div class="flex items-center text-black dark:text-white absolute top-0 bottom-0 right-3 pointer-events-none"></div><select id="gameSizeSelect" class="bg-gray-50 border border-gray-400 text-black rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-3 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500 cursor-pointer appearance-none"><option value="fit">Fit Screen</option><option value="square">Always Square Tiles</option></select></div></div></div></div></div>'),
Oa = v('<div class="text-center mt-6"><button type="button" class="text-white bg-red-700 hover:bg-red-800 focus:ring-4 focus:ring-red-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center mr-2 mb-2 dark:bg-red-600 dark:hover:bg-red-700 dark:focus:ring-red-900">Reset Current Practice</button><div class="text-center text-base">Warning: Resetting will count as a loss!</div></div>'),
$e = e => (() => {
const s = Ea.cloneNode(!0),
t = s.firstChild,
l = t.firstChild,
i = l.firstChild,
n = i.nextSibling,
o = n.nextSibling,
u = l.nextSibling;
return oe(i, "change", e.onChange), oe(i, "click", e.onClick, !0), c(u, () => e.text), j(a => {
const r = e.id,
d = e.id,
p = e.checked,
h = e.ariaLabel,
g = e.checked,
f = e.checked && !e.colorblind,
w = e.checked && e.colorblind;
return r !== a._v$ && x(t, "for", a._v$ = r), d !== a._v$2 && x(i, "id", a._v$2 = d), p !== a._v$3 && (i.checked = a._v$3 = p), h !== a._v$4 && x(i, "aria-label", a._v$4 = h), g !== a._v$5 && o.classList.toggle("translate-x-[100%]", a._v$5 = g), f !== a._v$6 && o.classList.toggle("bg-box-correct", a._v$6 = f), w !== a._v$7 && o.classList.toggle("bg-box-correct-alt", a._v$7 = w), a
}, {
_v$: void 0,
_v$2: void 0,
_v$3: void 0,
_v$4: void 0,
_v$5: void 0,
_v$6: void 0,
_v$7: void 0
}), s
})(),
Da = e => {
const [s, t] = Q();
return (() => {
const l = Ga.cloneNode(!0),
i = l.firstChild,
n = i.firstChild,
o = i.nextSibling,
u = o.firstChild,
a = u.nextSibling,
r = a.firstChild,
d = r.firstChild,
p = d.firstChild,
h = p.nextSibling;
h.nextSibling;
const g = d.nextSibling,
f = r.nextSibling,
w = f.firstChild,
S = w.nextSibling,
T = S.firstChild,
_ = T.nextSibling;
return oe(n, "click", e.onCloseSettings, !0), c(n, m(Be, {})), c(a, m($e, {
id: "toggleDarkMode",
text: "Dark Mode",
get checked() {
return s.darkMode
},
get colorblind() {
return s.colorblind
},
onClick: () => R(s.vibration),
onChange: k => t.setDarkMode(k.currentTarget.checked)
}), r), c(a, m($e, {
id: "toggleColorblind",
text: "Colorblind Mode",
get checked() {
return s.colorblind
},
get colorblind() {
return s.colorblind
},
onClick: () => R(s.vibration),
onChange: k => t.setColorblind(k.currentTarget.checked)
}), r), c(a, Qe && m($e, {
id: "toggleVibration",
text: "Vibration",
get checked() {
return s.vibration
},
get colorblind() {
return s.colorblind
},
onClick: () => R(s.vibration),
onChange: k => t.setVibration(k.currentTarget.checked)
}), r), c(a, m($e, {
id: "toggleEnterBsReversed",
get text() {
return `Switch Keys (${s.enterBsReversed?"\u23CE":"\u232B"} . . . ${s.enterBsReversed?"\u232B":"\u23CE"})`
},
get checked() {
return s.enterBsReversed
},
get colorblind() {
return s.colorblind
},
onClick: () => R(s.vibration),
onChange: k => t.setEnterBsReversed(k.currentTarget.checked),
get ariaLabel() {
return `Toggle to switch enter and backspace keys on the keyboard. Currently set as ${s.enterBsReversed?"enter on the left and backspace on the right.":"backspace on the left and enter on the right."}`
}
}), r), c(d, () => s.keyboardHeight.toFixed(1), h), g.addEventListener("change", k => t.setKeyboardHeight(Number(k.currentTarget.value))), g.$$input = k => t.setKeyboardHeight(Number(k.currentTarget.value)), c(T, m(Je, {})), _.addEventListener("change", k => t.setGameSize(k.currentTarget.value)), _.$$click = () => R(s.vibration), c(o, (() => {
const k = ae(() => e.mode === "free" && s.free.guesses.length > 0 && !t.isGameComplete(e.mode), !0);
return () => k() && (() => {
const $ = Oa.cloneNode(!0),
z = $.firstChild;
return z.$$click = () => {
R(s.vibration), t.resetFree()
}, $
})()
})(), null), j(k => {
const $ = !s.colorblind,
z = s.colorblind,
b = s.keyboardHeight,
y = s.gameSize;
return $ !== k._v$8 && g.classList.toggle("quordle-range", k._v$8 = $), z !== k._v$9 && g.classList.toggle("quordle-range-alt", k._v$9 = z), b !== k._v$10 && (g.value = k._v$10 = b), y !== k._v$11 && (_.value = k._v$11 = y), k
}, {
_v$8: void 0,
_v$9: void 0,
_v$10: void 0,
_v$11: void 0
}), l
})()
};
de(["click", "input"]);
const Pa = v('<div id="statistics-panel" class="w-full h-full overflow-auto"><div class="max-w-[550px] w-full m-auto flex flex-row-reverse pr-4 pt-2"><button type="button" class="bg-white dark:bg-gray-800 p-1 rounded-full text-gray-900 hover:text-black dark:text-gray-400 dark:hover:text-white" aria-label="Close Statistics"></button></div><div class="max-w-[550px] m-auto w-full px-6 mb-8"><h1 class="text-4xl mt-2 mb-4 text-center"> Statistics</h1><div class="flex flex-row"><div class="flex flex-col text-center flex-1"><span class="text-xl"></span><span class="text-base text-gray-600 dark:text-gray-300">Played</span></div><div class="flex flex-col text-center flex-1"><span class="text-xl"></span><span class="text-base text-gray-600 dark:text-gray-300">Win %</span></div><div class="flex flex-col text-center flex-1"><span class="text-xl"></span><span class="text-base text-gray-600 dark:text-gray-300">Current<br>Streak</span></div><div class="flex flex-col text-center flex-1"><span class="text-xl"></span><span class="text-base text-gray-600 dark:text-gray-300">Max<br>Streak</span></div></div><h1 class="text-4xl mt-8 text-center">Win Distribution</h1><h2 class="text-lg mb-4 text-center">(total # guesses to complete all 4 words)</h2><div class="text-lg"></div></div></div>'),
Oe = v('<div class="flex flex-row mb-1"><div class="mr-2"></div><div class="min-w-min text-right px-2"></div></div>'),
Fa = v('<div class="flex flex-row text-base mt-6 mb-1 px-2"><div class="flex-1">Win - </div><div class="flex-1 text-right"> - Loss</div></div>'),
Wa = v('<div class="text-base font-bold flex flex-row items-center cursor-pointer rounded-l-xl rounded-r-xl overflow-hidden" role="button" aria-controls="loss-distribution" aria-label="Win rate ratio. Click to see loss distribution."><div class="bg-box-correct h-6"></div><div class="bg-rose-600 dark:bg-rose-800 text-right h-6"></div></div>'),
Ka = v('<div id="loss-distribution"><h1 class="text-4xl mt-8 text-center">Loss Distribution</h1><h2 class="text-lg mb-4 text-center">(# words missed)</h2><div class="text-lg"></div></div>'),
Qa = [...Array(A - (J - 1)).keys()].map(e => e + (J - 1)),
Ua = [...Array(J).keys()].map(e => e + A).reverse(),
Va = e => {
const [s, t] = Q(), [l, i] = W(!1), n = C(() => Math.max(...s[e.mode].history.slice(J - 1, A), 1)), o = C(() => Math.max(...s[e.mode].history.slice(A), 1)), u = C(() => s[e.mode].history.slice(J - 1, A).reduce((w, S) => w + S, 0)), a = C(() => s[e.mode].history.slice(A).reduce((w, S) => w + S, 0)), r = C(() => u() + a()), d = C(() => s[e.mode].answersCorrect.reduce((w, S) => w += S >= 0 ? 1 : 0, 0)), p = C(() => Math.max(...s[e.mode].answersCorrect)), h = C(() => t.isGameComplete(e.mode) && d() === J), g = C(() => t.isGameComplete(e.mode) && d() < J), f = C(() => e.mode === "daily" ? "daily" : "practice");
return (() => {
const w = Pa.cloneNode(!0),
S = w.firstChild,
T = S.firstChild,
_ = S.nextSibling,
k = _.firstChild,
$ = k.firstChild,
z = k.nextSibling,
b = z.firstChild,
y = b.firstChild,
M = b.nextSibling,
H = M.firstChild,
D = M.nextSibling,
re = D.firstChild,
Y = D.nextSibling,
ie = Y.firstChild,
ue = z.nextSibling,
P = ue.nextSibling,
le = P.nextSibling;
return oe(T, "click", e.onCloseStatistics, !0), c(T, m(Be, {})), c(k, () => e.mode === "daily" ? "Daily" : "Practice", $), c(y, () => u() + a()), c(H, () => Math.round((r() > 0 ? u() / r() : 0) * 100)), c(re, () => s[e.mode].currentStreak), c(ie, () => s[e.mode].maxStreak), c(le, () => Qa.map(q => (() => {
const L = Oe.cloneNode(!0),
N = L.firstChild,
E = N.nextSibling;
return c(N, q + 1), c(E, () => s[e.mode].history[q]), j(B => {
const G = `${s[e.mode].history[q]} games completed in ${q+1} guesses`,
I = {
" text-black bg-box-correct": h() && p() === q,
"text-black bg-gray-300 dark:text-white dark:bg-gray-700": !(h() && p() === q)
},
U = s[e.mode].history[q] / n() * 100 + "%";
return G !== B._v$6 && x(L, "aria-label", B._v$6 = G), B._v$7 = te(E, I, B._v$7), U !== B._v$8 && E.style.setProperty("width", B._v$8 = U), B
}, {
_v$6: void 0,
_v$7: void 0,
_v$8: void 0
}), L
})())), c(_, (() => {
const q = ae(() => a() > 0, !0);
return () => q() && [(() => {
const L = Fa.cloneNode(!0),
N = L.firstChild;
N.firstChild;
const E = N.nextSibling,
B = E.firstChild;
return c(N, u, null), c(E, a, B), L
})(), (() => {
const L = Wa.cloneNode(!0),
N = L.firstChild,
E = N.nextSibling;
return L.$$click = () => {
R(s.vibration), i(!l())
}, j(B => {
const G = l(),
I = u() / r() * 100 + "%",
U = a() / r() * 100 + "%";
return G !== B._v$9 && x(L, "aria-expanded", B._v$9 = G), I !== B._v$10 && N.style.setProperty("width", B._v$10 = I), U !== B._v$11 && E.style.setProperty("width", B._v$11 = U), B
}, {
_v$9: void 0,
_v$10: void 0,
_v$11: void 0
}), L
})()]
})(), null), c(_, (() => {
const q = ae(() => !!l(), !0);
return () => q() && (() => {
const L = Ka.cloneNode(!0),
N = L.firstChild,
E = N.nextSibling,
B = E.nextSibling;
return c(B, () => Ua.map(G => (() => {
const I = Oe.cloneNode(!0),
U = I.firstChild,
ce = U.nextSibling;
return c(U, J - (G - A)), c(ce, () => s[e.mode].history[G]), j(X => {
const ge = `${s[e.mode].history[G]} games lost with ${J-(G-A)} words missed`,
fe = {
"text-white bg-rose-600 dark:bg-rose-800": g() && d() === G - A,
"text-black bg-gray-300 dark:bg-gray-700 dark:text-white": !(g() && d() === G - A)
},
me = s[e.mode].history[G] / o() * 100 + "%";
return ge !== X._v$12 && x(I, "aria-label", X._v$12 = ge), X._v$13 = te(ce, fe, X._v$13), me !== X._v$14 && ce.style.setProperty("width", X._v$14 = me), X
}, {
_v$12: void 0,
_v$13: void 0,
_v$14: void 0
}), I
})())), L
})()
})(), null), j(q => {
const L = `${f()} statistics`,
N = `total number of ${f()} games played is ${u()+a()}`,
E = `${f()} win percentage is ${Math.round((r()>0?u()/r():0)*100)}%`,
B = `${f()} current win streak is ${s[e.mode].currentStreak} games`,
G = `${f()} maximum win streak is ${s[e.mode].maxStreak} games`;
return L !== q._v$ && x(w, "aria-label", q._v$ = L), N !== q._v$2 && x(b, "aria-label", q._v$2 = N), E !== q._v$3 && x(M, "aria-label", q._v$3 = E), B !== q._v$4 && x(D, "aria-label", q._v$4 = B), G !== q._v$5 && x(Y, "aria-label", q._v$5 = G), q
}, {
_v$: void 0,
_v$2: void 0,
_v$3: void 0,
_v$4: void 0,
_v$5: void 0
}), w
})()
};
de(["click"]);
const Ya = v('<div class="flex w-[100%]" role="row"></div>'),
Xa = v(`<div id="tutorial-panel" class="w-full h-full overflow-auto" aria-label="Tutorial"><div class="max-w-[550px] w-full m-auto flex flex-row-reverse pr-4 pt-2"><button type="button" class="bg-white dark:bg-gray-800 p-1 rounded-full text-gray-900 hover:text-black dark:text-gray-400 dark:hover:text-white" aria-label="Close Tutorial"></button></div><div class="max-w-[550px] m-auto w-full px-6"><h1 class="text-3xl mt-2 mb-1">Guess all four QUORDLE words in 9 tries.</h1><div class="text-base">Each guess must be a valid 5 letter word. Hit the enter button to submit. After each guess, the color of the tiles will change to show how close your guess was to the word.</div><h2 class="text-3xl mt-4 mb-2">Examples</h2><div class="w-[50%] my-2 pr-1" role="table"></div><div class="text-base mb-6">The letter C is in the word and in the correct spot.</div><div class="w-[50%] my-2 pr-1" role="table"></div><div class="text-base mb-6">The letter A is in the word but in the wrong spot.</div><div class="w-[50%] my-2 pr-1" role="table"></div><div class="text-base mb-6">The letters C, O, M, F, Y are not in the word in any spot. When you type a guess in QUORDLE, you will guess that word for all four words that you are solving. All four words you are solving will be different.</div><div class="flex w-[100%] mb-2"><div class="w-[50%] mr-1" role="table"></div><div class="w-[50%] ml-1" role="table"></div></div><div class="flex w-[100%] mt-2 mb-2"><div class="w-[50%] mr-1" role="table"></div><div class="w-[50%] ml-1" role="table"></div></div><div class="text-base">For the guess WORLD:</div><ol class="text-base list-decimal ml-8 mb-6"><li>The top left word has none of the letters.</li><li>The top right word has the R in the wrong spot and the D in the correct spot.</li><li>The bottom left word has the L in the wrong spot.</li><li>The bottom right word has the O in the right spot and the D in the wrong spot.</li></ol><div class="text-base mb-6">You have 9 guesses to get all 4 words correct. Good luck!</div><div class="text-base mb-8">A new QUORDLE will be available each day!</div><div class="text-sm mb-2 text-center">Created by Freddie Meyer</div><div class="flex flex-row items-center justify-between mb-8"><a href="https://twitter.com/quordle" target="_blank" aria-label="Link to Quordle Twitter"></a><a href="https://www.facebook.com/quordle" target="_blank" aria-label="Link to Quordle Facebook Page"></a><a href="https://www.instagram.com/quordlegame/" target="_blank" aria-label="Link to Quordle Instagram Page"></a><a href="https://www.reddit.com/r/Quordle/" target="_blank" aria-label="Link to Quordle Subreddit"></a><a href="https://discord.gg/F7ZBeA2p2S" target="_blank" aria-label="Link to Quordle Discord Server"></a><a href="https://github.com/fireph/quordle" target="_blank" aria-label="Link to Quordle Github"></a></div><h1 class="text-3xl mt-4 text-center">&#128150; Supporters &#128150;</h1><div class="text-base mb-4 text-center">A huge thank you to everyone that supports Quordle and a special thank you to all the Patrons!</div><div class="text-sm text-center mb-6" aria-label="Quordle Patrons"></div><h1 class="text-3xl my-4 text-center">History of Quordle</h1><div class="text-base mb-6">It all started on January 29, 2022 when I saw an article mentioning <a class="underline" href="https://zaratustra.itch.io/dordle" target="_blank">Dordle</a> by Guilherme S. T&#246;ws and we all started playing it as a group. It was a blast to play something more difficult than Wordle, but we still found it uncommon to fail to guess both words in 7 attempts.<br><br>In a moment of evil and genius, <a class="underline" href="https://github.com/DavidMah" target="_blank">David Mah</a> hacked together the first prototype of Quordle on January 30th and linked it to the group chat. It was truly horrific code (it even had 2 keyboards &#128517;), but I knew that I had to continue the madness. With hindsight, he really baited me into finishing his monstrous creation.<br><br>Over the next 2 days I improved the code, removed the second keyboard, and added the color quadrant keyboard. I even added Google Analytics thinking it would be funny to see the stats for our friend group playing.<br><br>At first it was just a few dozen players (there was a group of 20-30 people in Ohio that were playing constantly the first few days). But then Quordle got written about in an article in <a class="underline" href="https://www.theguardian.com/games/2022/feb/06/worried-about-losing-wordle-here-are-some-alternatives-just-in-case" target="_blank">The Guardian</a> and things exploded quickly from there. Now Quordle has over 500K players daily and has had over 1M total players.<br><br>A shoutout to our friend that plays relentlessly while indoor cycling. You were the drive to create a better version and your passion made me realize it could be popular outside of our friend group. I am so glad the world has been thoroughly cursed by Quordle and can't wait to see how Quordle strategies evolve!<br><br>I have no plans to monetize Quordle, I just enjoy watching everyone enjoy this insane game and couldn't have done it without Guilherme S. T&#246;ws and David Mah. If you have any ideas for Quordle or just want to chat, check out the socials posted above.</div></div></div>`),
Ja = _s(["Anna Kalata", "Bill McCosker", "Birko Ruzicka", "Charmiane Claxton", "David", "Dhruv Garg", "Evan Greavu", "Ian Coverdale-McCord", "Jeanne M Sasser", "Jennifer Green", "Jess S", "LadyAdrienne DelaCruz", "Leigh Carroll", "Maria Ashot", "Micha\u0142 Bartoszkiewicz", "Molly Bierman", "Nicky Stopford", "Ruth Kravitz", "Susan Thieme"]),
F = [
["CROWN", ["correct", "none", "none", "none", "none"]],
["BADGE", ["none", "diff", "none", "none", "none"]],
["COMFY", ["none", "none", "none", "none", "none"]],
["WORLD", ["none", "none", "none", "none", "none"]],
["WORLD", ["none", "none", "diff", "none", "correct"]],
["WORLD", ["none", "none", "none", "diff", "none"]],
["WORLD", ["none", "correct", "none", "none", "diff"]]
],
ne = e => (() => {
const s = Ya.cloneNode(!0);
return c(s, () => e.word[0].split("").map((t, l) => m(es, {
get state() {
return e.word[1][l]
},
letter: t,
gameRow: 0,
gameCol: l,
rowTemporalState: "past",
activeCol: 0,
get colorblind() {
return e.colorblind
},
currentRow: 0,
get tileHeight() {
return e.tileHeight
},
get presentTileHeight() {
return e.tileHeight
},
answered: !1,
gameSize: "square",
get ariaLabel() {
return `${t} (column ${l+1}) ${e.word[1][l]==="diff"?"is in a different spot":e.word[1][l]==="none"?"is incorrect":"is correct"}`
}
}))), s
})(),
Za = e => {
const [s] = Q(), [t, l] = W(0), i = ss({
onResize: ({
width: n,
height: o
}) => {
const u = parseFloat(getComputedStyle(document.documentElement).fontSize);
if (n) {
const a = (n - u * .5 - u * .25 * 10) / 10;
l(a)
}
}
});
return (() => {
const n = Xa.cloneNode(!0),
o = n.firstChild,
u = o.firstChild,
a = o.nextSibling,
r = a.firstChild,
d = r.nextSibling,
p = d.nextSibling,
h = p.nextSibling,
g = h.nextSibling,
f = g.nextSibling,
w = f.nextSibling,
S = w.nextSibling,
T = S.nextSibling,
_ = T.nextSibling,
k = _.firstChild,
$ = k.nextSibling,
z = _.nextSibling,
b = z.firstChild,
y = b.nextSibling,
M = z.nextSibling,
H = M.nextSibling,
D = H.nextSibling,
re = D.nextSibling,
Y = re.nextSibling,
ie = Y.nextSibling,
ue = ie.firstChild,
P = ue.nextSibling,
le = P.nextSibling,
q = le.nextSibling,
L = q.nextSibling,
N = L.nextSibling,
E = ie.nextSibling,
B = E.nextSibling,
G = B.nextSibling;
return oe(u, "click", e.onCloseTutorial, !0), c(u, m(Be, {})), i(a), c(h, m(ne, {
get word() {
return F[0]
},
get colorblind() {
return s.colorblind
},
get tileHeight() {
return t()
}
})), c(f, m(ne, {
get word() {
return F[1]
},
get colorblind() {
return s.colorblind
},
get tileHeight() {
return t()
}
})), c(S, m(ne, {
get word() {
return F[2]
},
get colorblind() {
return s.colorblind
},
get tileHeight() {
return t()
}
})), c(k, m(ne, {
get word() {
return F[3]
},
get colorblind() {
return s.colorblind
},
get tileHeight() {
return t()
}
})), c($, m(ne, {
get word() {
return F[4]
},
get colorblind() {
return s.colorblind
},
get tileHeight() {
return t()
}
})), c(b, m(ne, {
get word() {
return F[5]
},
get colorblind() {
return s.colorblind
},
get tileHeight() {
return t()
}
})), c(y, m(ne, {
get word() {
return F[6]
},
get colorblind() {
return s.colorblind
},
get tileHeight() {
return t()
}
})), c(ue, m(Xe, {
height: 30
})), c(P, m(Zs, {
height: 40
})), c(le, m(sa, {
height: 36
})), c(q, m(ea, {
height: 36
})), c(L, m(aa, {
height: 30
})), c(N, m(Js, {
height: 40
})), c(G, () => Ja.map(I => I.replace(/ /g, "\xA0")).join(", ")), j(I => {
const U = `Tutorial guess ${F[0]}.`,
ce = `Tutorial Guess ${F[1]}.`,
X = `Tutorial Guess ${F[2]}.`,
ge = `Tutorial Guess ${F[3]}. Game Board 1.`,
fe = `Tutorial Guess ${F[4]}. Game Board 2.`,
me = `Tutorial Guess ${F[5]}. Game Board 3.`,
Le = `Tutorial Guess ${F[6]}. Game Board 4.`;
return U !== I._v$ && x(h, "aria-label", I._v$ = U), ce !== I._v$2 && x(f, "aria-label", I._v$2 = ce), X !== I._v$3 && x(S, "aria-label", I._v$3 = X), ge !== I._v$4 && x(k, "aria-label", I._v$4 = ge), fe !== I._v$5 && x($, "aria-label", I._v$5 = fe), me !== I._v$6 && x(b, "aria-label", I._v$6 = me), Le !== I._v$7 && x(y, "aria-label", I._v$7 = Le), I
}, {
_v$: void 0,
_v$2: void 0,
_v$3: void 0,
_v$4: void 0,
_v$5: void 0,
_v$6: void 0,
_v$7: void 0
}), n
})()
};
de(["click"]);
const et = v('<div class="absolute w-full h-full text-black dark:text-white bg-white dark:bg-gray-800 overflow-auto transition-all ease-in-out duration-500"></div>'),
st = v('<div class="flex w-full" role="row"></div>'),
at = v('<div class="flex flex-col flex-auto p-1 first:pl-2 last:pr-2" role="table"></div>'),
tt = v('<div class="w-full absolute flex flex-col overflow-hidden"><div class="max-w-[550px] m-auto w-full"></div><div class="quordle-desktop-scrollbar max-w-[550px] m-auto w-full flex-auto"><div class="w-full flex-col" aria-label="Game Boards"></div></div><div class="max-w-[550px] m-auto w-full"></div></div>'),
rt = v('<div class="flex w-full"></div>'),
Te = e => (() => {
const s = et.cloneNode(!0);
return c(s, () => e.children), j(t => {
const l = {
"opacity-100 top-0": e.open,
"opacity-0 top-[100%]": !e.open
},
i = e.fontSize + "px";
return t._v$ = te(s, l, t._v$), i !== t._v$2 && s.style.setProperty("font-size", t._v$2 = i), t
}, {
_v$: void 0,
_v$2: void 0
}), s
})(),
ot = [...Array(pe).keys()],
it = [...Array(We).keys()],
lt = [...Array(A).keys()],
nt = [...Array(se).keys()],
dt = e => {
const [s] = Q(), t = C(() => {
const l = e.gameX + e.gameY * pe,
i = s[e.mode].guesses,
n = s[e.mode].current,
o = i[e.gameRow],
u = s[e.mode].states[l][e.gameRow],
a = s[e.mode].answersCorrect[l];
return e.gameRow === a ? `Row ${e.gameRow+1}. Guess ${o.toUpperCase()} is correct.` : e.gameRow === i.length && a < 0 ? `Row ${e.gameRow+1}. Current guess ${n.toUpperCase()}.` : o && u ? `Row ${e.gameRow+1}. Guess ${o.toUpperCase()}. ` : `Row ${e.gameRow+1}. ` + (e.gameRow > a && a >= 0 ? `Answer already guessed correctly on row ${a+1}.` : "Future guess.")
});
return (() => {
const l = st.cloneNode(!0);
return c(l, () => nt.map(i => m(Ta, {
get mode() {
return e.mode
},
get gameX() {
return e.gameX
},
get gameY() {
return e.gameY
},
get gameRow() {
return e.gameRow
},
gameCol: i,
get tileHeight() {
return e.tileHeight
},
get presentTileHeight() {
return e.presentTileHeight
}
}))), j(() => x(l, "aria-label", t())), l
})()
},
ut = e => (() => {
const s = at.cloneNode(!0);
return c(s, () => lt.map(t => m(dt, {
get mode() {
return e.mode
},
get gameX() {
return e.gameX
},
get gameY() {
return e.gameY
},
gameRow: t,
get tileHeight() {
return e.tileHeight
},
get presentTileHeight() {
return e.presentTileHeight
}
}))), j(() => x(s, "aria-label", `Game Board ${e.gameX+e.gameY*pe+1}`)), s
})(),
De = e => {
const [s, t] = Q(), [l, i] = Fe(), [n, o] = W(35), [u, a] = W(0), [r, d] = W(0), [p, h] = W(!1), g = _ => {
t.sendKey(e.mode, _)
};
document.addEventListener("keydown", g), Ce(() => document.removeEventListener("keydown", g));
const f = C(() => l.overlay === "tutorial"),
w = C(() => l.overlay === "statistics"),
S = C(() => l.overlay === "settings"),
T = ss({
onResize: ({
width: _,
height: k
}) => {
const $ = parseFloat(getComputedStyle(document.documentElement).fontSize);
if (_) {
o(_ / 16);
const z = (_ - 1.5 * $ - $ * .25 * 10) / 10;
if (d(z), k)
if (t.isGameComplete(e.mode)) {
const b = (k - $ - $ * .25 * 18) / 18;
h(b < z / 3), a(Math.max(z / 3, Math.min(z, b)))
} else {
const b = (k - $ - $ * .25 * 18 - z * 2) / 16;
h(b < z / 3), a(Math.max(z / 3, Math.min(z, b)))
}
}
}
});
return (() => {
const _ = tt.cloneNode(!0),
k = _.firstChild,
$ = k.nextSibling,
z = $.firstChild,
b = $.nextSibling;
return te(_, {
"h-full": !He,
"h-[calc(100%-25px)] bottom-[25px]": He
}), c(_, m(Ma, {
get mode() {
return e.mode
},
onOpenTutorial: () => {
R(s.vibration), O("event", "tutorial", {
mode: e.mode
}), i({
overlay: "tutorial"
})
},
onOpenStatistics: () => {
R(s.vibration), O("event", "statistics", {
mode: e.mode
}), i({
overlay: "statistics"
})
},
onOpenSettings: () => {
R(s.vibration), O("event", "settings", {
mode: e.mode
}), i({
overlay: "settings"
})
}
}), k), c(k, m(fa, {
get mode() {
return e.mode
}
})), T($), c(z, () => it.map(y => (() => {
const M = rt.cloneNode(!0);
return x(M, "aria-label", `Game Boards Row ${y+1}`), c(M, () => ot.map(H => m(ut, {
get mode() {
return e.mode
},
gameX: H,
gameY: y,
get tileHeight() {
return u()
},
get presentTileHeight() {
return r()
}
}))), M
})())), c(b, (() => {
const y = ae(() => !!t.isGameComplete(e.mode), !0);
return () => y() ? m(Sa, {
get mode() {
return e.mode
}
}) : m(Ha, {
get mode() {
return e.mode
},
get fontSize() {
return n()
}
})
})()), c(_, m(Te, {
get open() {
return S()
},
get fontSize() {
return n()
},
get children() {
return m(Da, {
get mode() {
return e.mode
},
onCloseSettings: () => {
R(s.vibration), i({
overlay: void 0
})
}
})
}
}), null), c(_, m(Te, {
get open() {
return w()
},
get fontSize() {
return n()
},
get children() {
return m(Va, {
get mode() {
return e.mode
},
onCloseStatistics: () => {
R(s.vibration), i({
overlay: void 0
})
}
})
}
}), null), c(_, m(Te, {
get open() {
return f()
},
get fontSize() {
return n()
},
get children() {
return m(Za, {
onCloseTutorial: () => {
R(s.vibration), i({
overlay: void 0
})
}
})
}
}), null), j(y => {
const M = n() + "px",
H = !f() && !w() && (s.gameSize === "square" || p()),
D = f() || w() || s.gameSize === "fit" && !p(),
re = n() + "px",
Y = n() + "px";
return M !== y._v$3 && k.style.setProperty("font-size", y._v$3 = M), H !== y._v$4 && $.classList.toggle("overflow-auto", y._v$4 = H), D !== y._v$5 && $.classList.toggle("overflow-hidden", y._v$5 = D), re !== y._v$6 && $.style.setProperty("font-size", y._v$6 = re), Y !== y._v$7 && b.style.setProperty("font-size", y._v$7 = Y), y
}, {
_v$3: void 0,
_v$4: void 0,
_v$5: void 0,
_v$6: void 0,
_v$7: void 0
}), _
})()
},
ct = v('<div class="px-5 absolute flex items-center justify-center w-full h-full bg-gradient-to-r from-indigo-600 to-blue-400"><div class="p-10 bg-white rounded-md shadow-xl"><div class="flex flex-col items-center"><h1 class="font-bold text-blue-600 text-9xl">404</h1><h6 class="mb-2 text-2xl font-bold text-center text-gray-800 md:text-3xl"><span class="text-red-500">Oops!</span> Page not found</h6><p class="mb-8 text-center text-gray-500 md:text-lg">The page you\u2019re looking for doesn\u2019t exist.</p></div></div></div>'),
gt = e => (() => {
const s = ct.cloneNode(!0),
t = s.firstChild,
l = t.firstChild;
return l.firstChild.nextSibling.nextSibling, c(l, m(cs, {
href: "/",
class: "px-6 py-2 text-sm font-semibold text-blue-800 bg-blue-100",
children: "Back to Daily Quordle"
}), null), s
})(),
mt = () => {
const e = C(() => Pe(Me));
return _e(() => {
var s;
((s = e()) == null ? void 0 : s[0].darkMode) ? document.documentElement.classList.add("dark"): document.documentElement.classList.remove("dark")
}), e() ? m(gs, {
get children() {
return [m(je, {
path: "/",
get element() {
return m(De, {
mode: "daily"
})
}
}), m(je, {
path: "/practice",
get element() {
return m(De, {
mode: "free"
})
}
}), m(je, {
path: "/*all",
get element() {
return m(gt, {})
}
})]
}
}) : null
};
ms(() => m(hs, {
get source() {
return ys()
},
get children() {
return m(js, {
get children() {
return m(mt, {})
}
})
}
}), document.getElementById("root"))
});
export default ht();
//# sourceMappingURL=index.d2c796da.js.map

Back to list