@adiakys/feeling-lucky 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +674 -0
- package/README.md +227 -2
- package/dist/config/resolve.d.ts +4 -0
- package/dist/config/types.d.ts +62 -0
- package/dist/de-B56NsnDF.js +458 -0
- package/dist/developer/panel.d.ts +61 -0
- package/dist/developer/rig.d.ts +2 -0
- package/dist/developer/settings.d.ts +30 -0
- package/dist/engine/awards.d.ts +12 -0
- package/dist/engine/cards.d.ts +44 -0
- package/dist/engine/cashout.d.ts +32 -0
- package/dist/engine/dealer.d.ts +21 -0
- package/dist/engine/outcome.d.ts +13 -0
- package/dist/engine/pachinko.d.ts +58 -0
- package/dist/engine/random.d.ts +6 -0
- package/dist/engine/rig.d.ts +28 -0
- package/dist/engine/roulette.d.ts +53 -0
- package/dist/engine/scratch.d.ts +40 -0
- package/dist/engine/slot.d.ts +19 -0
- package/dist/engine/themes.d.ts +30 -0
- package/dist/engine/tiers.d.ts +64 -0
- package/dist/engine/wheel.d.ts +47 -0
- package/dist/es-9iWwCe8s.js +458 -0
- package/dist/feeling-lucky.iife.js +1494 -0
- package/dist/feeling-lucky.js +65 -0
- package/dist/fr-Y2BcCS3U.js +458 -0
- package/dist/games/blackjack/blackjack.d.ts +48 -0
- package/dist/games/cards/card.d.ts +5 -0
- package/dist/games/cards/dealer.d.ts +9 -0
- package/dist/games/cards/table.d.ts +12 -0
- package/dist/games/holdem/holdem.d.ts +29 -0
- package/dist/games/index.d.ts +9 -0
- package/dist/games/pachinko/pachinko.d.ts +53 -0
- package/dist/games/roulette/roulette.d.ts +63 -0
- package/dist/games/roulette/table.d.ts +19 -0
- package/dist/games/roulette/track.d.ts +18 -0
- package/dist/games/roulette/wheel.d.ts +9 -0
- package/dist/games/scratch/covers.d.ts +3 -0
- package/dist/games/scratch/double.d.ts +3 -0
- package/dist/games/scratch/forever.d.ts +3 -0
- package/dist/games/scratch/scratch.d.ts +39 -0
- package/dist/games/slot/breakaway.d.ts +32 -0
- package/dist/games/slot/machine.d.ts +18 -0
- package/dist/games/slot/slot.d.ts +32 -0
- package/dist/games/slot/takeoff.d.ts +28 -0
- package/dist/games/wheel/coin.d.ts +19 -0
- package/dist/games/wheel/face.d.ts +18 -0
- package/dist/games/wheel/hunt.d.ts +15 -0
- package/dist/games/wheel/wheel.d.ts +64 -0
- package/dist/i18n-it2FlmVZ.js +490 -0
- package/dist/index.d.ts +4 -0
- package/dist/it-CNSOLgaT.js +458 -0
- package/dist/locales/de/cards.d.ts +68 -0
- package/dist/locales/de/developer.d.ts +71 -0
- package/dist/locales/de/index.d.ts +2 -0
- package/dist/locales/de/pachinko.d.ts +26 -0
- package/dist/locales/de/room.d.ts +86 -0
- package/dist/locales/de/roulette.d.ts +77 -0
- package/dist/locales/de/scratch.d.ts +56 -0
- package/dist/locales/de/slot.d.ts +61 -0
- package/dist/locales/de/wheel.d.ts +45 -0
- package/dist/locales/en/cards.d.ts +68 -0
- package/dist/locales/en/developer.d.ts +71 -0
- package/dist/locales/en/index.d.ts +2 -0
- package/dist/locales/en/pachinko.d.ts +26 -0
- package/dist/locales/en/room.d.ts +86 -0
- package/dist/locales/en/roulette.d.ts +77 -0
- package/dist/locales/en/scratch.d.ts +56 -0
- package/dist/locales/en/slot.d.ts +61 -0
- package/dist/locales/en/wheel.d.ts +45 -0
- package/dist/locales/es/cards.d.ts +68 -0
- package/dist/locales/es/developer.d.ts +71 -0
- package/dist/locales/es/index.d.ts +2 -0
- package/dist/locales/es/pachinko.d.ts +26 -0
- package/dist/locales/es/room.d.ts +86 -0
- package/dist/locales/es/roulette.d.ts +77 -0
- package/dist/locales/es/scratch.d.ts +56 -0
- package/dist/locales/es/slot.d.ts +61 -0
- package/dist/locales/es/wheel.d.ts +45 -0
- package/dist/locales/fr/cards.d.ts +68 -0
- package/dist/locales/fr/developer.d.ts +71 -0
- package/dist/locales/fr/index.d.ts +2 -0
- package/dist/locales/fr/pachinko.d.ts +26 -0
- package/dist/locales/fr/room.d.ts +86 -0
- package/dist/locales/fr/roulette.d.ts +77 -0
- package/dist/locales/fr/scratch.d.ts +56 -0
- package/dist/locales/fr/slot.d.ts +61 -0
- package/dist/locales/fr/wheel.d.ts +45 -0
- package/dist/locales/index.d.ts +7 -0
- package/dist/locales/it/cards.d.ts +68 -0
- package/dist/locales/it/developer.d.ts +71 -0
- package/dist/locales/it/index.d.ts +2 -0
- package/dist/locales/it/pachinko.d.ts +26 -0
- package/dist/locales/it/room.d.ts +86 -0
- package/dist/locales/it/roulette.d.ts +77 -0
- package/dist/locales/it/scratch.d.ts +56 -0
- package/dist/locales/it/slot.d.ts +61 -0
- package/dist/locales/it/wheel.d.ts +45 -0
- package/dist/locales/merge.d.ts +2 -0
- package/dist/merge-iGSNfZkz.js +10 -0
- package/dist/mount-CBUkAcVV.js +7109 -0
- package/dist/panel-tWJMt9kl.js +545 -0
- package/dist/room/boost.d.ts +2 -0
- package/dist/room/certificate.d.ts +22 -0
- package/dist/room/chips.d.ts +21 -0
- package/dist/room/lobby.d.ts +45 -0
- package/dist/room/mount.d.ts +6 -0
- package/dist/room/room.d.ts +74 -0
- package/dist/room/stage.d.ts +18 -0
- package/dist/room/theme.d.ts +15 -0
- package/dist/runtime/context.d.ts +34 -0
- package/dist/runtime/element.d.ts +15 -0
- package/dist/runtime/fx.d.ts +43 -0
- package/dist/runtime/i18n.d.ts +8 -0
- package/dist/runtime/icons.d.ts +2 -0
- package/dist/runtime/motion.d.ts +2 -0
- package/dist/runtime/signal.d.ts +6 -0
- package/dist/runtime/sound.d.ts +11 -0
- package/dist/signal-CAveEGrG.js +19 -0
- package/dist/styles/index.d.ts +1 -0
- package/package.json +56 -4
|
@@ -0,0 +1,1494 @@
|
|
|
1
|
+
var FeelingLucky=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Object.defineProperty,n=(e,t,n)=>()=>{if(n)throw n[0];try{return e&&(t=e(e=0)),t}catch(e){throw n=[e],e}},r=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},i=async e=>typeof e==`function`?e():e;async function a(e){let[t,n,r,a,o,s,c]=await Promise.all([i(e.prizes),e.locale===void 0?void 0:i(e.locale),e.messages===void 0?{}:i(e.messages),e.player===void 0?null:i(e.player),e.developer!==void 0&&i(e.developer),e.logo===void 0?void 0:i(e.logo),e.dealers===void 0?void 0:i(e.dealers)]);if(!t.length)throw Error(`feeling-lucky: at least one prize is needed`);return{prizes:t,locale:n,messages:r,player:a,logo:s,dealers:c,developer:o===!1?null:{passwordHash:o===!0?void 0:o.passwordHash},onWin:e.onWin,onClaim:e.onClaim}}function o(...e){let t={};for(let n of e)for(let[e,r]of Object.entries(n)){let n=t[e];t[e]=typeof r==`object`&&typeof n==`object`?o(n,r):r}return t}var s=n((()=>{})),c,l=n((()=>{c={games:{blackjack:{name:`Blackjack`,summary:`Beat the dealer without going over 21`,rules:`Place up to 5 chips of one prize on the circle in front of your seat: every chip is of the first one's prize. Then beat the dealer without going over 21; the dealer stands on 17. On your first two cards you can double, with a second stack of chips and one card only, or split two cards of the same value into two hands with a stack each; after a split the best hand counts, split aces take one card each. Winning the hand pays the chips' prize: a small prize, a big prize with a dealt blackjack, an ace with a ten or a picture card. The blackjack of spades, ace and jack of spades, is the jackpot.`},holdem:{name:`Texas Hold'em`,summary:`The best hand against the dealer`,rules:`You and the dealer get two cards, then the three of the flop come out: call or fold. If you call, turn and river follow and the best five-card hand wins. Winning with a high card, a pair, two pair or three of a kind pays a small prize, with a straight or better a big prize; the royal flush is the jackpot. Folding loses the hand.`}},cards:{you:`You`,dealer:`Dealer`,deal:`Deal`},blackjack:{print:`Dealer stands on 17 · Blackjack of spades: jackpot`,hit:`Hit`,stand:`Stand`,double:`Double`,split:`Split`,bet:`Place a {prize} chip`,result:{bust:`Bust`,lose:`Dealer wins`,win:`You beat the dealer`,dealerBust:`Dealer busts`,natural:`Blackjack!`,spades:`Blackjack of spades!`}},holdem:{print:`The dealer plays every hand · Royal flush: jackpot`,call:`Call`,fold:`Fold`,hands:{highCard:`High card`,pair:`Pair`,twoPair:`Two pair`,trips:`Three of a kind`,straight:`Straight`,flush:`Flush`,fullHouse:`Full house`,quads:`Four of a kind`,straightFlush:`Straight flush`,royalFlush:`Royal flush`},result:{folded:`You folded`,won:`You win with {hand}`,lost:`Dealer wins with {hand}`,split:`Split`}},detail:{blackjack:{win:`hand won`,dealerBust:`dealer bust`,natural:`dealt blackjack`,spades:`blackjack of spades`},holdem:`won with {hand}`}}})),u,d=n((()=>{u={developer:{title:`Developer controls`,restore:`Open developer controls`,minimize:`Minimize to icon`,close:`Close developer controls`,password:`Password`,unlock:`Unlock`,wrongPassword:`Wrong password.`,hint:`Ctrl+Shift+L opens and closes this panel. Theme and language change at once; game settings apply when the game restarts.`,game:`Game`,multiplier:`Multiplier`,daily:`Daily value`,result:`Result`,automatic:`Automatic`,loss:`Loss`,win:`Win`,jackpot:`Jackpot`,decidedBy:`The advanced setting “{field}” decides the result.`,advanced:`Advanced`,field:{segment:`Segment`,prize:`Prize`,combination:`Combination`,number:`Number`,violet:`Violet orb`,pocket:`Pocket`,award:`Variant`,storm:`Storm number`,booster:`Booster segment`},option:{nothing:`Nothing`,award:`{tier} · {award}`,pair:`Pair of logos`,logos:`Three logos`,sevens:`Three sevens`,infinities:`Three infinities`,hit:`Hit`,miss:`Missed`,pocket:`Pocket {n}`,lands:`Lands`,misses:`Misses`},about:{roulette:`The chosen number always comes out. With a forced result, or a storm number to land on or to miss, the number comes out among those the bets on the table allow; if none does, the draw is normal. With a multiplier the roulette turns into Storm Roulette.`,pachinko:`The violet orb exists only on the coloured Pachinko, with a multiplier. There the prize depends on the reds hit: with the jackpot the reds line up along the fall and the ball takes them all.`,wheel:`With a multiplier the Booster picks a kind of segment that comes out more often: here you choose which. The chosen segment still decides where the wheel stops.`,slot:`Normally the slot is the classic one. On the bonus day the slot of the day takes its place, Takeoff or Breakaway, drawn from the date: it can be set here along with the multiplier. The drawn result is the most one can reach.`,scratch:`Normally the ticket is the classic one. On the bonus day the ticket of the day takes its place, one of the two numbers tickets drawn from the date: it can be set here along with the multiplier. A variant chosen without a prize goes to a prize that pays it.`,blackjack:`The shoe stages the drawn result whatever the player decides: with Win the hand is won, with Jackpot the blackjack of spades comes.`,holdem:`The cards are chosen among those that give the drawn result: with Win you win if you call, with Jackpot the royal flush comes. Folding loses the hand all the same.`},reset:`Reset all games`,apply:`Apply and restart game`,variant:{scratch:`Ticket of the day`,slot:`Slot of the day`},theme:`Room theme`,calendar:`From the calendar`,noTheme:`None`,language:`Language`,autoLanguage:`Automatic`,dealer:`Dealer`,dealerShifts:`From the day's shifts`,dealerAbsent:`Absent`,dealerNumber:`Dealer {n}`}}})),f,p=n((()=>{f={games:{pachinko:{name:`Pachinko`,summary:`The pocket decides the prize`,rules:`Choose the prize and where to drop the ball: the pocket decides what you win, a small prize or a big one; the middle pocket is the jackpot. Pockets with a dash pay nothing.`,bonusRules:`Grand Wheel bonus: the prize stays {prize}. Choose where to drop the ball, the pocket shows what you win.`}},pachinko:{launch:`Drop the ball`,hint:`Move the mouse over the board to choose where it falls, then click. Arrow keys and the space bar work too.`,redHits:`Red pegs hit`,powerOn:`Violet activated`,powerOff:`Hit the violet peg`,chance:`Win probability`,detail:`Pachinko · coloured pegs`,colorRules:`Pockets with a dash pay nothing; the others climb with every red hit, from a small prize up to a big one. With all 8 reds the middle pocket is the jackpot. The violet orb multiplies the day’s odds once more.`,fever:`Gold fever`,feverTitle:`ALL REDS CLEARED!`},detail:{pachinko:`winning pocket`}}})),m,ee=n((()=>{m={title:`Feeling lucky`,room:`Games room`,backToOverview:`Back to overview`,backToGames:`Back to the games`,soundOn:`Sound on`,soundOff:`Sound off`,rules:`Rules`,chips:`Chip prize`,ticker:{1:`Feeling lucky`,2:`Grand Wheel: the jackpot is on the wheel`,3:`Three ∞ on the line: jackpot`,4:`A roulette straight-up is worth the jackpot`,5:`Three matching logos under the foil`,6:`The middle Pachinko pocket pays the jackpot`},win:{title:`You won`,jackpot:`Jackpot`},tier:{small:`Small win`,big:`Big win`,jackpot:`Jackpot`,symbol:{small:`★`,big:`★★`,jackpot:`★★★`}},boost:{badge:`×{n}`,title:`Bonus of the day`,odds:`Bonus of the day: wins {n} times as likely`,dealer:`Dealer at the table`,dealerOdds:`Dealer at the table: wins {n} times as likely`},themes:{christmas:{name:`Christmas`,greeting:`Season's greetings: a prize under the tree`},halloween:{name:`Halloween`,greeting:`Trick or prize?`},easter:{name:`Easter`,greeting:`Happy Easter: what's inside the egg?`},august:{name:`August`,greeting:`Happy summer holidays from the room`}},lobby:{games:`Games room`,private:`Salon Privé`,privateLine:`Reserved tables`,pager:`Rooms`},chipCount:{hint:`Place up to {n} chips`,left:`{n} chips left`,leftOne:`1 chip left`,none:`No chips left`},cert:{title:`Prize won`,prize:`Prize`,variant:`Variant`,fullPrize:`The whole prize`,wonOn:`Won on`,notClaimed:`Not claimed`,claimed:`Claimed`,claim:`Claim prize`,claiming:`Claiming…`,claimFailed:`The prize could not be claimed. Try again.`,seal:`FEELING LUCKY · PRIZE WON ·`,sealClaimed:`CLAIMED · FEELING LUCKY ·`,again:`Play {game} again`,otherGame:`Change game`}}})),te,ne=n((()=>{te={games:{roulette:{name:`Roulette`,summary:`Place your chips, then throw the ball`,rules:`Place up to {n} chips of one prize, on the table or with Nassa, Orphelins and Tiers, which lay them on their straight-ups and splits: every chip is of the first one's prize. A straight-up wins the jackpot; split, street, corner and six line a big prize; columns, dozens and even-money bets a small prize. When several bets win the best one counts.`}},roulette:{launch:`Throw the ball`,clear:`Take back the chips`,table:`Table`,call:{made:`Les jeux sont faits`,closed:`Rien ne va plus`},board:{column:`2 to 1`,dozen1:`1st 12`,dozen2:`2nd 12`,dozen3:`3rd 12`,low:`1–18`,even:`Even`,odd:`Odd`,high:`19–36`},kind:{straight:`Straight-up {numbers}`,split:`Split {numbers}`,street:`Street {numbers}`,corner:`Corner {numbers}`,line:`Six line {numbers}`},spot:{column:{1:`Column 1-34`,2:`Column 2-35`,3:`Column 3-36`},dozen:{1:`First dozen`,2:`Second dozen`,3:`Third dozen`},chance:{low:`1 to 18`,even:`Even`,red:`Red`,black:`Black`,odd:`Odd`,high:`19 to 36`}},track:`Announced bets`,announced:{nassa:`Nassa`,orphans:`Orphelins`,tiers:`Tiers`,cost:`{n} chips`,label:`{name}, {n} chips`},surface:`Where to bet`,storm:{title:`Storm`,rules:`Storm Roulette, the bonus of the day. Lay up to {n} chips as on the roulette; at every throw, once the bets are closed, lightning strikes 3 numbers that come out {m} times as often. A straight-up wins the jackpot, splits, streets, corners and six lines a big prize, columns, dozens and even chances a small prize.`,odds:`Land {n}× as often`,numbers:`Lightning numbers`},undo:`Remove last chip`,rebet:`Repeat the bet`},detail:{roulette:`number {n}`,storm:`lightning number {n}`}}})),re,ie=n((()=>{re={games:{scratch:{name:`Scratch card`,summary:`Three matching logos`,rules:`Three matching logos win that prize; the strip at the bottom says what it pays, up to the jackpot.`}},scratch:{title:`Scratch the prize`,rule:`Three matching logos win the prize. The strip at the bottom says what it pays.`,award:`you win`,series:`FEELING LUCKY · FORTUNE SERIES`,watermark:`LUCKY`,revealAll:`Scratch all`,newTicket:`New ticket`,hint:`Scratch with the mouse or a finger`,locked:`Scratch it with three matching logos`,prize:`PRIZE`,winningNumbers:`WINNING NUMBERS`,yourNumbers:`YOUR NUMBERS`,game:`GAME {n}`,topPrize:`TOP PRIZE: THE JACKPOT`,double:{first:`DOUBLE`,second:`LUCK`,tagline:`2 ways to play!`,rules:`Two ways to win: a winning number among your numbers wins the prize under it; three equal prizes win that prize. Logos have no prize under them: three matching logos win the jackpot.`},forever:{first:`FOR`,middle:`∞`,second:`EVER`,jackpot:`3 matching logos: the jackpot`,pairRule:`Two equal prizes win that prize`,rules:`Game 1: a winning number among your numbers wins the prize under it; logos have no prize under them, but three matching logos win the jackpot. Game 2: two equal prizes win that prize.`},names:{double:`Double Luck`,forever:`Forever`},dayRules:`Ticket of the day: winning tickets come out {n} times as often.`},detail:{scratch:{small:`three matching logos`,big:`three matching logos`,jackpot:`three matching logos`,match:`winning number`,three:`three equal prizes`,pair:`two equal prizes`,logos:`three matching logos`}}}})),ae,oe=n((()=>{ae={games:{slot:{name:`Slot`,summary:`Three symbols on the line`,rules:`Two matching prizes on the line: a small prize. Three prizes or three 7s: a big prize. Three ∞: the jackpot.`}},slot:{sign:`JACKPOT`,ready:`Pull the lever`,spinning:`Reels spinning…`,line:`On the line`,spin:`Spin the reels`,lever:`Pull the lever`,result:{none:`No combination`,small:`Pair on the line`,big:`Three of a kind`,jackpot:`Three ∞`},names:{takeoff:`Takeoff`,breakaway:`Breakaway`},takeoff:{rules:`Flight of the day: wins come out {n} times as often. The plane takes off and the multiplier climbs: cash out before it flies away. From ×2 you win a small prize, from ×10 a big prize, at ×50 the jackpot: the longer you wait, the bigger the prize.`,start:`Take off`,again:`New flight`,cashOut:`Cash out {prize}`,cashFrom:`Cash out from ×{m}`,ready:`Ready for takeoff`,gone:`Flew away!`,cashed:`Cashed out at ×{m}: {prize}`,hint:`Cash out whenever you like: if the plane flies away first, you win nothing`},breakaway:{rules:`Match of the day: wins come out {n} times as often. Move toward the goal choosing a square in each column: one hides the defender. Each column cleared raises the prize and you can cash out whenever you like; in front of the goal, shoot: the goal wins what you collected, up to the jackpot.`,pick:`Choose a square in column {n}`,shoot:`Choose where to shoot`,tackled:`Tackled! The prize collected is lost`,goal:`GOAL!`,again:`New match`,cashOut:`Cash out {prize}`,cashFrom:`Cash out from column {n}`,square:`Column {column}, square {row}`,zone:`Shoot at zone {n}`}},detail:{slot:{small:`pair on the line`,big:`three of a kind`,jackpot:`three ∞`,takeoff:`cashed out at ×{m}`,breakaway:`{n} columns cleared`,goal:`goal`}}}})),se,ce=n((()=>{se={games:{wheel:{name:`Grand Wheel`,summary:`Booster: prize · Wheel: win`,rules:`The Booster picks the prize, the wheel what you win: a small prize or a big prize. Heads or Tails, Prize Hunt and Pachinko reveal the win; Grand Wheel is the jackpot.`}},wheel:{booster:`BOOSTER`,spin:`Spin the wheel`,hint:`Or grab the wheel and fling it; zoom on the wheel for a close-up`,segment:{coin:`HEADS OR TAILS`,hunt:`PRIZE HUNT`,pachinko:`PACHINKO`,jackpot:`GRAND WHEEL`},pachinkoTitle:`Pachinko bonus`,pachinkoText:`The ball decides the win. The prize stays {prize}.`,toPachinko:`Go to Pachinko`,boosterRules:`Booster of the day: at every spin the Booster also picks a kind of segment, which comes out {n} times as often. The Booster picks the prize, the wheel what you win: a small prize or a big prize. Heads or Tails, Prize Hunt and Pachinko reveal the win; Grand Wheel is the jackpot.`},coin:{text:`Gold or ruby: the coin picks the win.`,gold:`gold`,ruby:`ruby`,flip:`Flip the coin`},hunt:{text:`Eighteen tiles, a win under each. Pick one.`,tile:`Tile {n}`},detail:{wheel:{small:`winning segment`,big:`winning segment`,jackpot:`jackpot segment`,coin:`Heads or Tails`,hunt:`Prize Hunt`,pachinko:`Pachinko bonus`}}}})),le,ue=n((()=>{s(),l(),d(),p(),ee(),ne(),ie(),oe(),ce(),le=o(m,se,ae,te,f,re,c,u)})),de,fe=n((()=>{de={games:{blackjack:{name:`Blackjack`,summary:`Batti il banco senza superare 21`,rules:`Punta fino a 5 fiches di un premio nel cerchio davanti al tuo posto: tutte le fiches sono del premio della prima. Poi batti il banco senza superare 21; il banco sta su 17. Sulle prime due carte puoi raddoppiare, con una seconda pila di fiches e una sola carta, o dividere due carte dello stesso valore in due mani con una pila ciascuna; dividendo conta la mano migliore, gli assi divisi ricevono una carta sola. Vincere la mano vale il premio delle fiches: un premio piccolo, un premio grande con il blackjack servito, asso e dieci o figura. Il blackjack di picche, asso e jack di picche, è il jackpot.`},holdem:{name:`Texas Hold'em`,summary:`La mano migliore contro il banco`,rules:`Tu e il banco ricevete due carte, poi escono le tre del flop: vedi o lascia. Se vedi escono turn e river e vince la mano migliore di cinque carte. Vincere con carta alta, coppia, doppia coppia o tris vale un premio piccolo, con una scala o più un premio grande; la scala reale è il jackpot. Se lasci, la mano è persa.`}},cards:{you:`Tu`,dealer:`Banco`,deal:`Distribuisci`},blackjack:{print:`Il banco sta su 17 · Blackjack di picche: jackpot`,hit:`Carta`,stand:`Stai`,double:`Raddoppia`,split:`Dividi`,bet:`Punta una fiche di {prize}`,result:{bust:`Sballato`,lose:`Vince il banco`,win:`Hai battuto il banco`,dealerBust:`Il banco sballa`,natural:`Blackjack!`,spades:`Blackjack di picche!`}},holdem:{print:`Il banco gioca ogni mano · Scala reale: jackpot`,call:`Vedi`,fold:`Lascia`,hands:{highCard:`Carta alta`,pair:`Coppia`,twoPair:`Doppia coppia`,trips:`Tris`,straight:`Scala`,flush:`Colore`,fullHouse:`Full`,quads:`Poker`,straightFlush:`Scala colore`,royalFlush:`Scala reale`},result:{folded:`Hai lasciato la mano`,won:`Vinci con {hand}`,lost:`Il banco vince con {hand}`,split:`Pareggio`}},detail:{blackjack:{win:`mano vinta`,dealerBust:`banco sballato`,natural:`blackjack servito`,spades:`blackjack di picche`},holdem:`vinto con {hand}`}}})),pe,me=n((()=>{pe={developer:{title:`Controlli sviluppatore`,restore:`Apri controlli sviluppatore`,minimize:`Riduci a icona`,close:`Chiudi controlli sviluppatore`,password:`Password`,unlock:`Sblocca`,wrongPassword:`Password errata.`,hint:`Ctrl+Shift+L apre e chiude il pannello. Tema e lingua cambiano subito; le impostazioni dei giochi valgono dal riavvio del gioco.`,game:`Gioco`,multiplier:`Moltiplicatore`,daily:`Valore giornaliero`,result:`Esito`,automatic:`Automatico`,loss:`Perdita`,win:`Vincita`,jackpot:`Jackpot`,decidedBy:`L'esito lo decide l'impostazione avanzata «{field}».`,advanced:`Avanzate`,field:{segment:`Segmento`,prize:`Premio`,combination:`Combinazione`,number:`Numero`,violet:`Pallina viola`,pocket:`Buca`,award:`Variante`,storm:`Numero tempesta`,booster:`Spicchio del Moltiplicatore`},option:{nothing:`Niente`,award:`{tier} · {award}`,pair:`Coppia di loghi`,logos:`Tris di loghi`,sevens:`Tris di sette`,infinities:`Tris di infiniti`,hit:`Presa`,miss:`Mancata`,pocket:`Buca {n}`,lands:`Esce`,misses:`Non esce`},about:{roulette:`Il numero scelto esce comunque. Con un esito forzato, o con un numero tempesta che deve uscire o no, il numero esce tra quelli che lo permettono con le puntate sul tavolo; se nessuno lo permette, l'estrazione è normale. Con il moltiplicatore la roulette diventa Roulette Tempesta.`,pachinko:`La pallina viola c'è solo nel Pachinko a colori, con il moltiplicatore. Lì il premio dipende dai rossi presi: con il jackpot i rossi si dispongono lungo la caduta e la pallina li prende tutti.`,wheel:`Con un moltiplicatore la ruota ha il Moltiplicatore, che sceglie un tipo di spicchio che esce più spesso: qui puoi decidere quale. Il segmento scelto decide comunque dove si ferma la ruota.`,slot:`Normalmente c'è la slot classica. Nel giorno del bonus al suo posto c'è la slot del giorno, Decollo o Contropiede, estratta dalla data: qui si può fissare insieme al moltiplicatore. L'esito estratto è il massimo a cui si può arrivare.`,scratch:`Normalmente c'è il biglietto classico. Nel giorno del bonus al suo posto c'è il biglietto del giorno, uno dei due a numeri estratto dalla data: qui si può fissare insieme al moltiplicatore. Una variante scelta senza premio va a un premio che la paga.`,blackjack:`Il mazzo mette in scena l'esito estratto qualunque cosa decida il giocatore: con Vincita la mano si vince, con Jackpot arriva il blackjack di picche.`,holdem:`Le carte sono scelte tra quelle che danno l'esito estratto: con Vincita si vince se si vede, con Jackpot arriva la scala reale. Chi lascia perde comunque la mano.`},reset:`Azzera tutti i giochi`,apply:`Applica e riavvia gioco`,variant:{scratch:`Biglietto del giorno`,slot:`Slot del giorno`},theme:`Tema della sala`,calendar:`Dal calendario`,noTheme:`Nessuno`,language:`Lingua`,autoLanguage:`Automatica`,dealer:`Croupier`,dealerShifts:`Dai turni del giorno`,dealerAbsent:`Assente`,dealerNumber:`Croupier {n}`}}})),he,ge=n((()=>{he={games:{pachinko:{name:`Pachinko`,summary:`La buca decide il premio`,rules:`Scegli il premio e da dove far cadere la pallina: la buca decide cosa vinci, un premio piccolo o uno grande; la buca centrale è il jackpot. Le buche col trattino non pagano.`,bonusRules:`Bonus dalla Gran Ruota: il premio resta {prize}. Scegli da dove far cadere la pallina, la buca mostra cosa vinci.`}},pachinko:{launch:`Lascia cadere la pallina`,hint:`Muovi il mouse sopra il tavolo per scegliere da dove cade, poi clicca. Anche con le frecce e la barra spaziatrice.`,redHits:`Rossi colpiti`,powerOn:`Viola attivato`,powerOff:`Colpisci il viola`,chance:`Probabilità di vincita`,detail:`Pachinko · pioli colorati`,colorRules:`Le buche col trattino non pagano; le altre salgono di premio a ogni rosso colpito, da un premio piccolo fino a uno grande. Con tutti e 8 i rossi la buca centrale è il jackpot. Il viola moltiplica ancora le probabilità del giorno.`,fever:`Febbre dell’oro`,feverTitle:`TUTTI I ROSSI!`},detail:{pachinko:`buca vincente`}}})),_e,ve=n((()=>{_e={title:`Mi sento fortunato`,room:`Sala giochi`,backToOverview:`Torna alla panoramica`,backToGames:`Torna ai giochi`,soundOn:`Suoni accesi`,soundOff:`Suoni spenti`,rules:`Regole`,chips:`Premio delle fiches`,ticker:{1:`Mi sento fortunato`,2:`Gran Ruota: il jackpot è sulla ruota`,3:`Tris di ∞ sulla linea: jackpot`,4:`Un pieno alla roulette vale il jackpot`,5:`Tre loghi uguali sotto la patina`,6:`La buca centrale del Pachinko paga il jackpot`},win:{title:`Hai vinto`,jackpot:`Jackpot`},tier:{small:`Vittoria piccola`,big:`Vittoria buona`,jackpot:`Jackpot`,symbol:{small:`★`,big:`★★`,jackpot:`★★★`}},boost:{badge:`×{n}`,title:`Bonus del giorno`,odds:`Bonus del giorno: vincite {n} volte più probabili`,dealer:`Croupier al tavolo`,dealerOdds:`Croupier al tavolo: vincite {n} volte più probabili`},themes:{christmas:{name:`Natale`,greeting:`Buone feste: c'è un premio sotto l'albero`},halloween:{name:`Halloween`,greeting:`Dolcetto o premio?`},easter:{name:`Pasqua`,greeting:`Buona Pasqua: chissà cosa c'è nell'uovo`},august:{name:`Agosto`,greeting:`Buon Ferragosto dalla sala`}},lobby:{games:`Sala giochi`,private:`Salon Privé`,privateLine:`Tavoli riservati`,pager:`Sale`},chipCount:{hint:`Posa fino a {n} fiches`,left:`Restano {n} fiches`,leftOne:`Resta 1 fiche`,none:`Fiches finite`},cert:{title:`Premio vinto`,prize:`Premio`,variant:`Variante`,fullPrize:`Premio completo`,wonOn:`Vinto il`,notClaimed:`Da riscattare`,claimed:`Riscattato`,claim:`Riscatta il premio`,claiming:`Riscatto in corso…`,claimFailed:`Non è stato possibile riscattare il premio. Riprova.`,seal:`MI SENTO FORTUNATO · PREMIO VINTO ·`,sealClaimed:`RISCATTATO · MI SENTO FORTUNATO ·`,again:`Gioca ancora a {game}`,otherGame:`Cambia gioco`}}})),ye,be=n((()=>{ye={games:{roulette:{name:`Roulette`,summary:`Punta le fiches, poi lancia la pallina`,rules:`Posa fino a {n} fiches di un premio, sul tavolo o con Nassa, Orfanelli e Serie 5/8, che le mettono sui loro pieni e cavalli: tutte le fiches sono del premio della prima. Il pieno vince il jackpot; cavallo, terzina, carré e sestina un premio grande; colonne, dozzine e chances semplici un premio piccolo. Se vincono più puntate conta la migliore.`}},roulette:{launch:`Lancia la pallina`,clear:`Ritira le fiches`,table:`Tavolo`,call:{made:`Les jeux sont faits`,closed:`Rien ne va plus`},board:{column:`2:1`,dozen1:`1ª 12`,dozen2:`2ª 12`,dozen3:`3ª 12`,low:`1–18`,even:`Pari`,odd:`Dispari`,high:`19–36`},kind:{straight:`Pieno {numbers}`,split:`Cavallo {numbers}`,street:`Terzina {numbers}`,corner:`Carré {numbers}`,line:`Sestina {numbers}`},spot:{column:{1:`Colonna 1-34`,2:`Colonna 2-35`,3:`Colonna 3-36`},dozen:{1:`Prima dozzina`,2:`Seconda dozzina`,3:`Terza dozzina`},chance:{low:`Da 1 a 18`,even:`Pari`,red:`Rosso`,black:`Nero`,odd:`Dispari`,high:`Da 19 a 36`}},track:`Giocate annunciate`,announced:{nassa:`Nassa`,orphans:`Orfanelli`,tiers:`Serie 5/8`,cost:`{n} fiches`,label:`{name}, {n} fiches`},surface:`Dove puntare`,storm:{title:`Tempesta`,rules:`Roulette Tempesta, il bonus del giorno. Posa fino a {n} fiches come alla roulette; a ogni lancio, a puntate chiuse, il fulmine colpisce 3 numeri che escono {m} volte più spesso. Il pieno vince il jackpot, cavalli, terzine, carré e sestine un premio grande, colonne, dozzine e chances semplici un premio piccolo.`,odds:`Escono {n}× più spesso`,numbers:`Numeri fulmine`},undo:`Togli l'ultima fiche`,rebet:`Ripeti la puntata`},detail:{roulette:`numero {n}`,storm:`numero fulmine {n}`}}})),xe,Se=n((()=>{xe={games:{scratch:{name:`Biglietto Fortunato`,summary:`Tre loghi uguali`,rules:`Tre loghi uguali vincono quel premio; la striscia in basso dice cosa paga, fino al jackpot.`}},scratch:{title:`Gratta il premio`,rule:`Tre loghi uguali vincono il premio. La striscia in basso dice cosa paga.`,award:`vinci`,series:`MI SENTO FORTUNATO · SERIE FORTUNA`,watermark:`FORTUNA`,revealAll:`Gratta tutto`,newTicket:`Nuovo biglietto`,hint:`Gratta con il mouse o con il dito`,locked:`Si gratta con tre loghi uguali`,prize:`PREMIO`,winningNumbers:`NUMERI VINCENTI`,yourNumbers:`I TUOI NUMERI`,game:`GIOCO {n}`,topPrize:`PREMIO MASSIMO: IL JACKPOT`,double:{first:`DOPPIA`,second:`FORTUNA`,tagline:`2 modi di giocare!`,rules:`Due modi di vincere: un numero vincente tra i tuoi numeri vince il premio sotto di lui; tre premi uguali vincono quel premio. I loghi non hanno premi sotto: tre loghi uguali vincono il jackpot.`},forever:{first:`PER`,middle:`∞`,second:`SEMPRE`,jackpot:`3 loghi uguali: il jackpot`,pairRule:`Due premi uguali vincono quel premio`,rules:`Gioco 1: un numero vincente tra i tuoi numeri vince il premio sotto di lui; i loghi non hanno premi sotto, ma tre loghi uguali vincono il jackpot. Gioco 2: due premi uguali vincono quel premio.`},names:{double:`Doppia Fortuna`,forever:`Per Sempre`},dayRules:`Biglietto del giorno: i biglietti vincenti escono {n} volte più spesso.`},detail:{scratch:{small:`tre loghi uguali`,big:`tre loghi uguali`,jackpot:`tre loghi uguali`,match:`numero vincente`,three:`tre premi uguali`,pair:`due premi uguali`,logos:`tre loghi uguali`}}}})),Ce,we=n((()=>{Ce={games:{slot:{name:`Slot`,summary:`Tre simboli in linea`,rules:`Due premi uguali sulla linea: un premio piccolo. Tre premi o tre 7: un premio grande. Tre ∞: il jackpot.`}},slot:{sign:`JACKPOT`,ready:`Tira la leva`,spinning:`I rulli girano…`,line:`Sulla linea`,spin:`Gira i rulli`,lever:`Tira la leva`,result:{none:`Nessuna combinazione`,small:`Coppia sulla linea`,big:`Tris sulla linea`,jackpot:`Tre ∞`},names:{takeoff:`Decollo`,breakaway:`Contropiede`},takeoff:{rules:`Volo del giorno: le vincite escono {n} volte più spesso. L'aereo decolla e il moltiplicatore sale: incassa prima che voli via. Da ×2 vinci un premio piccolo, da ×10 un premio grande, a ×50 il jackpot: più aspetti, più il premio è grande.`,start:`Decolla`,again:`Nuovo volo`,cashOut:`Incassa {prize}`,cashFrom:`Si incassa da ×{m}`,ready:`Pronto al decollo`,gone:`Volato via!`,cashed:`Incassato a ×{m}: {prize}`,hint:`Incassa quando vuoi: se l'aereo vola via prima, non vinci nulla`},breakaway:{rules:`Partita del giorno: le vincite escono {n} volte più spesso. Avanza verso la porta scegliendo una casella per colonna: in una c'è il difensore. Ogni colonna superata alza il premio e puoi incassare quando vuoi; davanti alla porta tira: con il gol vinci quello che hai raccolto, fino al jackpot.`,pick:`Scegli una casella della colonna {n}`,shoot:`Scegli dove tirare`,tackled:`Placcato! Il premio raccolto è perso`,goal:`GOL!`,again:`Nuova partita`,cashOut:`Incassa {prize}`,cashFrom:`Si incassa dalla colonna {n}`,square:`Colonna {column}, casella {row}`,zone:`Tira nella zona {n}`}},detail:{slot:{small:`coppia sulla linea`,big:`tris sulla linea`,jackpot:`tre ∞`,takeoff:`incassato a ×{m}`,breakaway:`{n} colonne superate`,goal:`gol`}}}})),Te,Ee=n((()=>{Te={games:{wheel:{name:`Gran Ruota`,summary:`Moltiplicatore: premio · Ruota: vincita`,rules:`Il Moltiplicatore sceglie il premio, la ruota la vincita: un premio piccolo o un premio grande. Testa o Croce, Caccia al Premio e Pachinko rivelano la vincita; Gran Ruota è il jackpot.`}},wheel:{booster:`MOLTIPLICATORE`,spin:`Gira la ruota`,hint:`Oppure afferra la ruota e lanciala; fai zoom sulla ruota per vederla da vicino`,segment:{coin:`TESTA O CROCE`,hunt:`CACCIA AL PREMIO`,pachinko:`PACHINKO`,jackpot:`GRAN RUOTA`},pachinkoTitle:`Bonus Pachinko`,pachinkoText:`La vincita la decide la pallina. Il premio resta {prize}.`,toPachinko:`Vai al Pachinko`,boosterRules:`Moltiplicatore del giorno: a ogni giro il Moltiplicatore sceglie anche un tipo di spicchio, che esce {n} volte più spesso. Il Moltiplicatore sceglie il premio, la ruota la vincita: un premio piccolo o un premio grande. Testa o Croce, Caccia al Premio e Pachinko rivelano la vincita; Gran Ruota è il jackpot.`},coin:{text:`Oro o rubino: la moneta sceglie la vincita.`,gold:`oro`,ruby:`rubino`,flip:`Lancia la moneta`},hunt:{text:`Diciotto caselle, una vincita sotto ognuna. Scegline una.`,tile:`Casella {n}`},detail:{wheel:{small:`spicchio vincente`,big:`spicchio vincente`,jackpot:`spicchio jackpot`,coin:`Testa o Croce`,hunt:`Caccia al Premio`,pachinko:`bonus Pachinko`}}}})),De=r({default:()=>Oe}),Oe,ke=n((()=>{s(),fe(),me(),ge(),ve(),be(),Se(),we(),Ee(),Oe=o(_e,Te,Ce,ye,he,xe,de,pe)})),Ae,je=n((()=>{Ae={games:{blackjack:{name:`Blackjack`,summary:`Gana a la banca sin pasarte de 21`,rules:`Coloca hasta 5 fichas de un premio en el círculo delante de tu puesto: todas las fichas son del premio de la primera. Después gana a la banca sin pasarte de 21; la banca se planta con 17. Con tus dos primeras cartas puedes doblar, con una segunda pila de fichas y una sola carta, o dividir dos cartas del mismo valor en dos manos con una pila cada una; al dividir cuenta la mejor mano, y los ases divididos reciben una sola carta. Ganar la mano vale el premio de las fichas: un premio pequeño, o uno grande con un blackjack servido, as y diez o figura. El blackjack de picas, as y jota de picas, es el jackpot.`},holdem:{name:`Texas Hold'em`,summary:`La mejor mano contra la banca`,rules:`Tú y la banca recibís dos cartas y luego salen las tres del flop: ves o te retiras. Si ves, siguen el turn y el river y gana la mejor mano de cinco cartas. Ganar con carta alta, pareja, doble pareja o trío vale un premio pequeño; con escalera o mejor, un premio grande; la escalera real es el jackpot. Si te retiras, pierdes la mano.`}},cards:{you:`Tú`,dealer:`Banca`,deal:`Repartir`},blackjack:{print:`Banca se planta en 17 · Blackjack de picas: jackpot`,hit:`Pedir`,stand:`Plantarse`,double:`Doblar`,split:`Dividir`,bet:`Apuesta una ficha de {prize}`,result:{bust:`Te pasas`,lose:`Gana la banca`,win:`Ganas a la banca`,dealerBust:`La banca se pasa`,natural:`¡Blackjack!`,spades:`¡Blackjack de picas!`}},holdem:{print:`La banca juega cada mano · Escalera real: jackpot`,call:`Ver`,fold:`Retirarse`,hands:{highCard:`Carta alta`,pair:`Pareja`,twoPair:`Doble pareja`,trips:`Trío`,straight:`Escalera`,flush:`Color`,fullHouse:`Full`,quads:`Póker`,straightFlush:`Escalera de color`,royalFlush:`Escalera real`},result:{folded:`Te has retirado`,won:`Ganas con {hand}`,lost:`La banca gana con {hand}`,split:`Empate`}},detail:{blackjack:{win:`mano ganada`,dealerBust:`la banca se pasa`,natural:`blackjack servido`,spades:`blackjack de picas`},holdem:`ganado con {hand}`}}})),Me,Ne=n((()=>{Me={developer:{title:`Controles de desarrollador`,restore:`Abrir controles de desarrollador`,minimize:`Minimizar a icono`,close:`Cerrar controles de desarrollador`,password:`Contraseña`,unlock:`Desbloquear`,wrongPassword:`Contraseña incorrecta.`,hint:`Ctrl+Shift+L abre y cierra este panel. El tema y el idioma cambian al momento; los ajustes de los juegos se aplican al reiniciar el juego.`,game:`Juego`,multiplier:`Multiplicador`,daily:`Valor del día`,result:`Resultado`,automatic:`Automático`,loss:`Derrota`,win:`Victoria`,jackpot:`Jackpot`,decidedBy:`El ajuste avanzado «{field}» decide el resultado.`,advanced:`Avanzado`,field:{segment:`Sector`,prize:`Premio`,combination:`Combinación`,number:`Número`,violet:`Orbe violeta`,pocket:`Casilla`,award:`Variante`,storm:`Número tormenta`,booster:`Sector del Multiplicador`},option:{nothing:`Nada`,award:`{tier} · {award}`,pair:`Pareja de logos`,logos:`Tres logos`,sevens:`Tres sietes`,infinities:`Tres infinitos`,hit:`Tocado`,miss:`Fallado`,pocket:`Casilla {n}`,lands:`Sale`,misses:`No sale`},about:{roulette:`El número elegido sale siempre. Con un resultado forzado, o con un número tormenta que debe salir o no, el número sale entre los que permiten las apuestas de la mesa; si ninguno lo permite, el sorteo es normal. Con un multiplicador, la ruleta se convierte en Ruleta Tormenta.`,pachinko:`El orbe violeta solo existe en el Pachinko de colores, con un multiplicador. Allí el premio depende de los rojos tocados: con el jackpot, los rojos se alinean a lo largo de la caída y la bola los toca todos.`,wheel:`Con un multiplicador, el Multiplicador elige un tipo de sector que sale más a menudo: aquí eliges cuál. El sector elegido sigue decidiendo dónde se para la rueda.`,slot:`Normalmente la slot es la clásica. El día del bonus la sustituye la slot del día, Despegue o Contraataque, sorteada según la fecha: aquí se puede fijar junto con el multiplicador. El resultado sorteado es lo máximo a lo que se puede llegar.`,scratch:`Normalmente el boleto es el clásico. El día del bonus lo sustituye el boleto del día, uno de los dos boletos de números, sorteado según la fecha: aquí se puede fijar junto con el multiplicador. Una variante elegida sin premio va a un premio que la paga.`,blackjack:`El sabot escenifica el resultado sorteado decida lo que decida el jugador: con Victoria la mano se gana, con Jackpot llega el blackjack de picas.`,holdem:`Las cartas se eligen entre las que dan el resultado sorteado: con Victoria se gana si se ve, con Jackpot llega la escalera real. Quien se retira pierde la mano igualmente.`},reset:`Reiniciar todos los juegos`,apply:`Aplicar y reiniciar el juego`,variant:{scratch:`Boleto del día`,slot:`Slot del día`},theme:`Tema de la sala`,calendar:`Según el calendario`,noTheme:`Ninguno`,language:`Idioma`,autoLanguage:`Automático`,dealer:`Crupier`,dealerShifts:`Según los turnos del día`,dealerAbsent:`Ausente`,dealerNumber:`Crupier {n}`}}})),Pe,Fe=n((()=>{Pe={games:{pachinko:{name:`Pachinko`,summary:`La casilla decide el premio`,rules:`Elige el premio y desde dónde soltar la bola: la casilla decide cuánto ganas, un premio pequeño o uno grande; la casilla central es el jackpot. Las casillas con guion no pagan.`,bonusRules:`Bonus de la Gran Rueda: el premio sigue siendo {prize}. Elige desde dónde soltar la bola; la casilla muestra cuánto ganas.`}},pachinko:{launch:`Suelta la bola`,hint:`Mueve el ratón sobre el tablero para elegir por dónde cae y haz clic. También con las flechas y la barra espaciadora.`,redHits:`Rojos tocados`,powerOn:`Violeta activado`,powerOff:`Toca el violeta`,chance:`Probabilidad de ganar`,detail:`Pachinko · clavos de colores`,colorRules:`Las casillas con guion no pagan; las demás suben de premio con cada rojo tocado, de un premio pequeño hasta uno grande. Con los 8 rojos, la casilla central es el jackpot. El orbe violeta multiplica otra vez las probabilidades del día.`,fever:`Fiebre del oro`,feverTitle:`¡TODOS LOS ROJOS!`},detail:{pachinko:`casilla ganadora`}}})),Ie,Le=n((()=>{Ie={title:`Voy a tener suerte`,room:`Sala de juegos`,backToOverview:`Ir al resumen`,backToGames:`Ir a los juegos`,soundOn:`Sonido activado`,soundOff:`Sonido desactivado`,rules:`Reglas`,chips:`Premio de las fichas`,ticker:{1:`Voy a tener suerte`,2:`Gran Rueda: el jackpot está en la rueda`,3:`Tres ∞ en la línea: jackpot`,4:`Un pleno en la ruleta vale el jackpot`,5:`Tres logos iguales bajo la capa`,6:`La casilla central del Pachinko paga el jackpot`},win:{title:`Has ganado`,jackpot:`Jackpot`},tier:{small:`Premio pequeño`,big:`Premio grande`,jackpot:`Jackpot`,symbol:{small:`★`,big:`★★`,jackpot:`★★★`}},boost:{badge:`×{n}`,title:`Bonus del día`,odds:`Bonus del día: premios {n} veces más probables`,dealer:`Crupier en la mesa`,dealerOdds:`Crupier en la mesa: premios {n} veces más probables`},themes:{christmas:{name:`Navidad`,greeting:`Felices fiestas: hay un premio bajo el árbol`},halloween:{name:`Halloween`,greeting:`¿Truco o premio?`},easter:{name:`Pascua`,greeting:`Felices Pascuas: ¿qué habrá dentro del huevo?`},august:{name:`Agosto`,greeting:`Feliz verano desde la sala`}},lobby:{games:`Sala de juegos`,private:`Salon Privé`,privateLine:`Mesas reservadas`,pager:`Salas`},chipCount:{hint:`Coloca hasta {n} fichas`,left:`Quedan {n} fichas`,leftOne:`Queda 1 ficha`,none:`Sin fichas`},cert:{title:`Premio ganado`,prize:`Premio`,variant:`Variante`,fullPrize:`El premio completo`,wonOn:`Ganado el`,notClaimed:`Sin canjear`,claimed:`Canjeado`,claim:`Canjear premio`,claiming:`Canjeando…`,claimFailed:`No se ha podido canjear el premio. Inténtalo de nuevo.`,seal:`VOY A TENER SUERTE · PREMIO GANADO ·`,sealClaimed:`CANJEADO · VOY A TENER SUERTE ·`,again:`Jugar otra vez a {game}`,otherGame:`Cambiar de juego`}}})),Re,ze=n((()=>{Re={games:{roulette:{name:`Roulette`,summary:`Coloca las fichas y lanza la bola`,rules:`Coloca hasta {n} fichas de un premio, en la mesa o con Nassa, Huérfanos y Tercio, que las reparten en sus plenos y caballos: todas las fichas son del premio de la primera. El pleno gana el jackpot; caballo, transversal, cuadro y seisena un premio grande; columnas, docenas y suertes sencillas un premio pequeño. Si ganan varias apuestas, cuenta la mejor.`}},roulette:{launch:`Lanza la bola`,clear:`Retira las fichas`,table:`Mesa`,call:{made:`Les jeux sont faits`,closed:`Rien ne va plus`},board:{column:`2 a 1`,dozen1:`1ª 12`,dozen2:`2ª 12`,dozen3:`3ª 12`,low:`Falta`,even:`Par`,odd:`Impar`,high:`Pasa`},kind:{straight:`Pleno {numbers}`,split:`Caballo {numbers}`,street:`Transversal {numbers}`,corner:`Cuadro {numbers}`,line:`Seisena {numbers}`},spot:{column:{1:`Columna 1-34`,2:`Columna 2-35`,3:`Columna 3-36`},dozen:{1:`Primera docena`,2:`Segunda docena`,3:`Tercera docena`},chance:{low:`Falta, del 1 al 18`,even:`Par`,red:`Rojo`,black:`Negro`,odd:`Impar`,high:`Pasa, del 19 al 36`}},track:`Apuestas anunciadas`,announced:{nassa:`Nassa`,orphans:`Huérfanos`,tiers:`Tercio`,cost:`{n} fichas`,label:`{name}, {n} fichas`},surface:`Dónde apostar`,storm:{title:`Tormenta`,rules:`Ruleta Tormenta, el bonus del día. Coloca hasta {n} fichas como en la ruleta; en cada tirada, con las apuestas cerradas, el rayo cae sobre 3 números que salen {m} veces más a menudo. El pleno gana el jackpot; caballos, transversales, cuadros y seisenas un premio grande; columnas, docenas y suertes sencillas un premio pequeño.`,odds:`Salen {n}× más a menudo`,numbers:`Números rayo`},undo:`Quita la última ficha`,rebet:`Repite la apuesta`},detail:{roulette:`número {n}`,storm:`número rayo {n}`}}})),Be,Ve=n((()=>{Be={games:{scratch:{name:`Raspadita`,summary:`Tres logos iguales`,rules:`Tres logos iguales ganan ese premio; la franja de abajo dice cuánto paga, hasta el jackpot.`}},scratch:{title:`Rasca el premio`,rule:`Tres logos iguales ganan el premio. La franja de abajo dice cuánto paga.`,award:`ganas`,series:`VOY A TENER SUERTE · SERIE FORTUNA`,watermark:`SUERTE`,revealAll:`Rasca todo`,newTicket:`Nuevo boleto`,hint:`Rasca con el ratón o con el dedo`,locked:`Se rasca con tres logos iguales`,prize:`PREMIO`,winningNumbers:`NÚMEROS GANADORES`,yourNumbers:`TUS NÚMEROS`,game:`JUEGO {n}`,topPrize:`PREMIO MÁXIMO: EL JACKPOT`,double:{first:`DOBLE`,second:`SUERTE`,tagline:`¡2 formas de jugar!`,rules:`Dos formas de ganar: un número ganador entre tus números gana el premio que tiene debajo; tres premios iguales ganan ese premio. Los logos no tienen premio debajo: tres logos iguales ganan el jackpot.`},forever:{first:`PARA`,middle:`∞`,second:`SIEMPRE`,jackpot:`3 logos iguales: el jackpot`,pairRule:`Dos premios iguales ganan ese premio`,rules:`Juego 1: un número ganador entre tus números gana el premio que tiene debajo; los logos no tienen premio debajo, pero tres logos iguales ganan el jackpot. Juego 2: dos premios iguales ganan ese premio.`},names:{double:`Doble Suerte`,forever:`Para Siempre`},dayRules:`Boleto del día: los boletos ganadores salen {n} veces más a menudo.`},detail:{scratch:{small:`tres logos iguales`,big:`tres logos iguales`,jackpot:`tres logos iguales`,match:`número ganador`,three:`tres premios iguales`,pair:`dos premios iguales`,logos:`tres logos iguales`}}}})),He,Ue=n((()=>{He={games:{slot:{name:`Slot`,summary:`Tres símbolos en la línea`,rules:`Dos premios iguales en la línea: un premio pequeño. Tres premios o tres 7: un premio grande. Tres ∞: el jackpot.`}},slot:{sign:`JACKPOT`,ready:`Tira de la palanca`,spinning:`Giran los rodillos…`,line:`En la línea`,spin:`Gira los rodillos`,lever:`Tira de la palanca`,result:{none:`Sin combinación`,small:`Pareja en la línea`,big:`Trío en la línea`,jackpot:`Tres ∞`},names:{takeoff:`Despegue`,breakaway:`Contraataque`},takeoff:{rules:`Vuelo del día: los premios salen {n} veces más a menudo. El avión despega y el multiplicador sube: cobra antes de que se escape. Desde ×2 ganas un premio pequeño, desde ×10 un premio grande y a ×50 el jackpot: cuanto más esperas, mayor es el premio.`,start:`Despega`,again:`Nuevo vuelo`,cashOut:`Cobra {prize}`,cashFrom:`Se cobra desde ×{m}`,ready:`Listo para despegar`,gone:`¡Se ha escapado!`,cashed:`Cobrado a ×{m}: {prize}`,hint:`Cobra cuando quieras: si el avión se escapa antes, no ganas nada`},breakaway:{rules:`Partido del día: los premios salen {n} veces más a menudo. Avanza hacia la portería eligiendo una casilla en cada columna: en una está el defensa. Cada columna superada sube el premio y puedes cobrar cuando quieras; delante de la portería, chuta: con el gol ganas lo acumulado, hasta el jackpot.`,pick:`Elige una casilla de la columna {n}`,shoot:`Elige dónde chutar`,tackled:`¡Entrada! Pierdes el premio acumulado`,goal:`¡GOL!`,again:`Nuevo partido`,cashOut:`Cobra {prize}`,cashFrom:`Se cobra desde la columna {n}`,square:`Columna {column}, casilla {row}`,zone:`Chuta a la zona {n}`}},detail:{slot:{small:`pareja en la línea`,big:`trío en la línea`,jackpot:`tres ∞`,takeoff:`cobrado a ×{m}`,breakaway:`{n} columnas superadas`,goal:`gol`}}}})),We,Ge=n((()=>{We={games:{wheel:{name:`Gran Rueda`,summary:`Multiplicador: premio · Rueda: pago`,rules:`El Multiplicador elige el premio y la rueda cuánto ganas: un premio pequeño o un premio grande. Cara o Cruz, Caza del Premio y Pachinko desvelan cuánto ganas; Gran Rueda es el jackpot.`}},wheel:{booster:`MULTIPLICADOR`,spin:`Gira la rueda`,hint:`O agarra la rueda y lánzala; haz zoom sobre la rueda para verla de cerca`,segment:{coin:`CARA O CRUZ`,hunt:`CAZA DEL PREMIO`,pachinko:`PACHINKO`,jackpot:`GRAN RUEDA`},pachinkoTitle:`Bonus Pachinko`,pachinkoText:`La bola decide cuánto ganas. El premio sigue siendo {prize}.`,toPachinko:`Ir al Pachinko`,boosterRules:`Multiplicador del día: en cada tirada el Multiplicador elige también un tipo de sector, que sale {n} veces más a menudo. El Multiplicador elige el premio y la rueda cuánto ganas: un premio pequeño o un premio grande. Cara o Cruz, Caza del Premio y Pachinko desvelan cuánto ganas; Gran Rueda es el jackpot.`},coin:{text:`Oro o rubí: la moneda decide cuánto ganas.`,gold:`oro`,ruby:`rubí`,flip:`Lanza la moneda`},hunt:{text:`Dieciocho casillas y un premio bajo cada una. Elige una.`,tile:`Casilla {n}`},detail:{wheel:{small:`sector ganador`,big:`sector ganador`,jackpot:`sector jackpot`,coin:`Cara o Cruz`,hunt:`Caza del Premio`,pachinko:`bonus Pachinko`}}}})),Ke=r({default:()=>qe}),qe,Je=n((()=>{s(),je(),Ne(),Fe(),Le(),ze(),Ve(),Ue(),Ge(),qe=o(Ie,We,He,Re,Pe,Be,Ae,Me)})),Ye,Xe=n((()=>{Ye={games:{blackjack:{name:`Blackjack`,summary:`Battez la banque sans dépasser 21`,rules:`Posez jusqu'à 5 jetons d'un même lot dans le cercle devant votre place\xA0: tous les jetons sont du lot du premier. Puis battez la banque sans dépasser 21\xA0; la banque reste à 17. Sur vos deux premières cartes, vous pouvez doubler, avec une seconde pile de jetons et une seule carte, ou séparer deux cartes de même valeur en deux mains avec une pile chacune\xA0; après une séparation, la meilleure main compte et les as séparés reçoivent une seule carte. Gagner la main rapporte le lot des jetons\xA0: un petit lot, ou un gros lot avec un blackjack servi, un as avec un dix ou une figure. Le blackjack de pique, as et valet de pique, est le jackpot.`},holdem:{name:`Texas Hold'em`,summary:`La meilleure main contre la banque`,rules:`Vous et la banque recevez deux cartes, puis les trois cartes du flop sont retournées\xA0: suivez ou couchez-vous. Si vous suivez, viennent le turn et la river, et la meilleure main de cinq cartes gagne. Gagner avec une carte haute, une paire, une double paire ou un brelan rapporte un petit lot, avec une quinte ou mieux un gros lot\xA0; la quinte flush royale est le jackpot. Se coucher fait perdre la main.`}},cards:{you:`Vous`,dealer:`Banque`,deal:`Distribuer`},blackjack:{print:`La banque reste à 17 · Blackjack de pique\xA0: jackpot`,hit:`Carte`,stand:`Rester`,double:`Doubler`,split:`Séparer`,bet:`Miser un jeton {prize}`,result:{bust:`Brûlé`,lose:`La banque gagne`,win:`Vous battez la banque`,dealerBust:`La banque brûle`,natural:`Blackjack\xA0!`,spades:`Blackjack de pique\xA0!`}},holdem:{print:`La banque joue tout · Quinte flush royale\xA0: jackpot`,call:`Suivre`,fold:`Se coucher`,hands:{highCard:`Carte haute`,pair:`Paire`,twoPair:`Double paire`,trips:`Brelan`,straight:`Quinte`,flush:`Couleur`,fullHouse:`Full`,quads:`Carré`,straightFlush:`Quinte flush`,royalFlush:`Quinte flush royale`},result:{folded:`Vous vous êtes couché`,won:`Vous gagnez avec {hand}`,lost:`La banque gagne avec {hand}`,split:`Égalité`}},detail:{blackjack:{win:`main gagnée`,dealerBust:`la banque brûle`,natural:`blackjack servi`,spades:`blackjack de pique`},holdem:`gagné avec {hand}`}}})),Ze,Qe=n((()=>{Ze={developer:{title:`Contrôles développeur`,restore:`Ouvrir les contrôles développeur`,minimize:`Réduire en icône`,close:`Fermer les contrôles développeur`,password:`Mot de passe`,unlock:`Déverrouiller`,wrongPassword:`Mot de passe incorrect.`,hint:`Ctrl+Shift+L ouvre et ferme ce panneau. Le thème et la langue changent aussitôt\xA0; les réglages des jeux s'appliquent au redémarrage du jeu.`,game:`Jeu`,multiplier:`Multiplicateur`,daily:`Valeur du jour`,result:`Résultat`,automatic:`Automatique`,loss:`Perte`,win:`Gain`,jackpot:`Jackpot`,decidedBy:`Le réglage avancé «\xA0{field}\xA0» décide du résultat.`,advanced:`Avancé`,field:{segment:`Secteur`,prize:`Lot`,combination:`Combinaison`,number:`Numéro`,violet:`Orbe violet`,pocket:`Case`,award:`Variante`,storm:`Numéro tempête`,booster:`Secteur du Multiplicateur`},option:{nothing:`Rien`,award:`{tier} · {award}`,pair:`Paire de logos`,logos:`Trois logos`,sevens:`Trois sept`,infinities:`Trois infinis`,hit:`Touché`,miss:`Manqué`,pocket:`Case {n}`,lands:`Sort`,misses:`Ne sort pas`},about:{roulette:`Le numéro choisi sort toujours. Avec un résultat forcé, ou un numéro tempête qui doit sortir ou non, le numéro sort parmi ceux que permettent les mises sur le tapis\xA0; si aucun ne le permet, le tirage est normal. Avec un multiplicateur, la roulette devient la Roulette Tempête.`,pachinko:`L'orbe violet n'existe que sur le Pachinko coloré, avec un multiplicateur. Là, le lot dépend des rouges touchés\xA0: avec le jackpot, les rouges s'alignent le long de la chute et la bille les touche tous.`,wheel:`Avec un multiplicateur, le Multiplicateur choisit un type de secteur qui sort plus souvent\xA0: ici, vous choisissez lequel. Le secteur choisi décide quand même où s'arrête la roue.`,slot:`Normalement, c'est la slot classique. Le jour du bonus, la slot du jour la remplace, Décollage ou Contre-attaque, tirée d'après la date\xA0: on peut la fixer ici avec le multiplicateur. Le résultat tiré est le maximum que l'on peut atteindre.`,scratch:`Normalement, c'est le ticket classique. Le jour du bonus, le ticket du jour le remplace, l'un des deux tickets à numéros, tiré d'après la date\xA0: on peut le fixer ici avec le multiplicateur. Une variante choisie sans lot va à un lot qui la paie.`,blackjack:`Le sabot met en scène le résultat tiré, quoi que décide le joueur\xA0: avec Gain la main est gagnée, avec Jackpot arrive le blackjack de pique.`,holdem:`Les cartes sont choisies parmi celles qui donnent le résultat tiré\xA0: avec Gain on gagne si l'on suit, avec Jackpot arrive la quinte flush royale. Se coucher fait perdre la main quand même.`},reset:`Réinitialiser tous les jeux`,apply:`Appliquer et relancer le jeu`,variant:{scratch:`Ticket du jour`,slot:`Slot du jour`},theme:`Thème de la salle`,calendar:`D'après le calendrier`,noTheme:`Aucun`,language:`Langue`,autoLanguage:`Automatique`,dealer:`Croupier`,dealerShifts:`Selon les services du jour`,dealerAbsent:`Absent`,dealerNumber:`Croupier {n}`}}})),$e,et=n((()=>{$e={games:{pachinko:{name:`Pachinko`,summary:`La case décide du lot`,rules:`Choisissez le lot et d'où lâcher la bille\xA0: la case décide de ce que vous gagnez, un petit lot ou un gros\xA0; la case centrale est le jackpot. Les cases avec un tiret ne paient rien.`,bonusRules:`Bonus de la Grande Roue\xA0: le lot reste {prize}. Choisissez d'où lâcher la bille, la case indique ce que vous gagnez.`}},pachinko:{launch:`Lâcher la bille`,hint:`Déplacez la souris sur le plateau pour choisir d'où elle tombe, puis cliquez. Les flèches et la barre d'espace marchent aussi.`,redHits:`Rouges touchés`,powerOn:`Violet activé`,powerOff:`Touchez le violet`,chance:`Probabilité de gain`,detail:`Pachinko · clous colorés`,colorRules:`Les cases avec un tiret ne paient rien\xA0; les autres montent à chaque rouge touché, d'un petit lot jusqu'à un gros. Avec les 8 rouges, la case centrale est le jackpot. L'orbe violet multiplie encore les chances du jour.`,fever:`Fièvre de l’or`,feverTitle:`TOUS LES ROUGES\xA0!`},detail:{pachinko:`case gagnante`}}})),tt,nt=n((()=>{tt={title:`J'ai de la chance`,room:`Salle de jeux`,backToOverview:`Retour à l'aperçu`,backToGames:`Retour aux jeux`,soundOn:`Son activé`,soundOff:`Son coupé`,rules:`Règles`,chips:`Lot des jetons`,ticker:{1:`J'ai de la chance`,2:`Grande Roue\xA0: le jackpot est sur la roue`,3:`Trois ∞ sur la ligne\xA0: jackpot`,4:`Un plein à la roulette vaut le jackpot`,5:`Trois logos identiques sous la pellicule`,6:`La case centrale du Pachinko paie le jackpot`},win:{title:`Vous avez gagné`,jackpot:`Jackpot`},tier:{small:`Petit gain`,big:`Gros gain`,jackpot:`Jackpot`,symbol:{small:`★`,big:`★★`,jackpot:`★★★`}},boost:{badge:`×{n}`,title:`Bonus du jour`,odds:`Bonus du jour\xA0: gains {n} fois plus probables`,dealer:`Croupier à la table`,dealerOdds:`Croupier à la table : gains {n} fois plus probables`},themes:{christmas:{name:`Noël`,greeting:`Joyeuses fêtes\xA0: un lot vous attend sous le sapin`},halloween:{name:`Halloween`,greeting:`Un bonbon ou un lot\xA0?`},easter:{name:`Pâques`,greeting:`Joyeuses Pâques\xA0: qu'y a-t-il dans l'œuf\xA0?`},august:{name:`Août`,greeting:`Bonnes vacances d'été de la part de la salle`}},lobby:{games:`Salle de jeux`,private:`Salon Privé`,privateLine:`Tables réservées`,pager:`Salles`},chipCount:{hint:`Posez jusqu'à {n} jetons`,left:`Encore {n} jetons`,leftOne:`Encore 1 jeton`,none:`Plus de jetons`},cert:{title:`Lot gagné`,prize:`Lot`,variant:`Variante`,fullPrize:`Le lot complet`,wonOn:`Gagné le`,notClaimed:`Non réclamé`,claimed:`Réclamé`,claim:`Réclamer le lot`,claiming:`Réclamation…`,claimFailed:`Le lot n'a pas pu être réclamé. Réessayez.`,seal:`J'AI DE LA CHANCE · LOT GAGNÉ ·`,sealClaimed:`RÉCLAMÉ · J'AI DE LA CHANCE ·`,again:`Rejouer à {game}`,otherGame:`Changer de jeu`}}})),rt,it=n((()=>{rt={games:{roulette:{name:`Roulette`,summary:`Misez vos jetons, puis lancez la bille`,rules:`Posez jusqu'à {n} jetons d'un même lot, sur le tapis ou avec Nassa, Orphelins et Tiers, qui les placent sur leurs pleins et chevaux\xA0: tous les jetons sont du lot du premier. Le plein gagne le jackpot\xA0; cheval, transversale, carré et sixain un gros lot\xA0; colonnes, douzaines et chances simples un petit lot. Si plusieurs mises gagnent, la meilleure compte.`}},roulette:{launch:`Lancer la bille`,clear:`Retirer les jetons`,table:`Tapis`,call:{made:`Les jeux sont faits`,closed:`Rien ne va plus`},board:{column:`2 à 1`,dozen1:`12P`,dozen2:`12M`,dozen3:`12D`,low:`Manque`,even:`Pair`,odd:`Impair`,high:`Passe`},kind:{straight:`Plein {numbers}`,split:`Cheval {numbers}`,street:`Transversale {numbers}`,corner:`Carré {numbers}`,line:`Sixain {numbers}`},spot:{column:{1:`Colonne 1-34`,2:`Colonne 2-35`,3:`Colonne 3-36`},dozen:{1:`Première douzaine`,2:`Moyenne douzaine`,3:`Dernière douzaine`},chance:{low:`Manque, 1 à 18`,even:`Pair`,red:`Rouge`,black:`Noir`,odd:`Impair`,high:`Passe, 19 à 36`}},track:`Annonces`,announced:{nassa:`Nassa`,orphans:`Orphelins`,tiers:`Tiers`,cost:`{n} jetons`,label:`{name}, {n} jetons`},surface:`Où miser`,storm:{title:`Tempête`,rules:`Roulette Tempête, le bonus du jour. Posez jusqu'à {n} jetons comme à la roulette\xA0; à chaque lancer, une fois les mises closes, la foudre frappe 3 numéros qui sortent {m} fois plus souvent. Le plein gagne le jackpot\xA0; chevaux, transversales, carrés et sixains un gros lot\xA0; colonnes, douzaines et chances simples un petit lot.`,odds:`Sortent {n}× plus souvent`,numbers:`Numéros foudre`},undo:`Retirer le dernier jeton`,rebet:`Rejouer la mise`},detail:{roulette:`numéro {n}`,storm:`numéro foudre {n}`}}})),at,ot=n((()=>{at={games:{scratch:{name:`Grattage`,summary:`Trois logos identiques`,rules:`Trois logos identiques gagnent ce lot\xA0; la bande du bas indique ce qu'il rapporte, jusqu'au jackpot.`}},scratch:{title:`Grattez votre lot`,rule:`Trois logos identiques gagnent le lot. La bande du bas indique ce qu'il rapporte.`,award:`gagné`,series:`J'AI DE LA CHANCE · SÉRIE FORTUNE`,watermark:`CHANCE`,revealAll:`Tout gratter`,newTicket:`Nouveau ticket`,hint:`Grattez avec la souris ou le doigt`,locked:`Se gratte avec trois logos identiques`,prize:`LOT`,winningNumbers:`NUMÉROS GAGNANTS`,yourNumbers:`VOS NUMÉROS`,game:`JEU {n}`,topPrize:`LOT MAXIMUM\xA0: LE JACKPOT`,double:{first:`DOUBLE`,second:`CHANCE`,tagline:`2 façons de jouer\xA0!`,rules:`Deux façons de gagner\xA0: un numéro gagnant parmi vos numéros gagne le lot qu'il cache\xA0; trois lots identiques gagnent ce lot. Les logos ne cachent aucun lot\xA0: trois logos identiques gagnent le jackpot.`},forever:{first:`POUR`,middle:`∞`,second:`TOUJOURS`,jackpot:`3 logos identiques\xA0: le jackpot`,pairRule:`Deux lots identiques gagnent ce lot`,rules:`Jeu 1\xA0: un numéro gagnant parmi vos numéros gagne le lot qu'il cache\xA0; les logos ne cachent aucun lot, mais trois logos identiques gagnent le jackpot. Jeu 2\xA0: deux lots identiques gagnent ce lot.`},names:{double:`Double Chance`,forever:`Pour Toujours`},dayRules:`Ticket du jour\xA0: les tickets gagnants sortent {n} fois plus souvent.`},detail:{scratch:{small:`trois logos identiques`,big:`trois logos identiques`,jackpot:`trois logos identiques`,match:`numéro gagnant`,three:`trois lots identiques`,pair:`deux lots identiques`,logos:`trois logos identiques`}}}})),st,ct=n((()=>{st={games:{slot:{name:`Slot`,summary:`Trois symboles sur la ligne`,rules:`Deux lots identiques sur la ligne\xA0: un petit lot. Trois lots ou trois 7\xA0: un gros lot. Trois ∞\xA0: le jackpot.`}},slot:{sign:`JACKPOT`,ready:`Tirez le levier`,spinning:`Les rouleaux tournent…`,line:`Sur la ligne`,spin:`Lancer les rouleaux`,lever:`Tirer le levier`,result:{none:`Aucune combinaison`,small:`Paire sur la ligne`,big:`Brelan sur la ligne`,jackpot:`Trois ∞`},names:{takeoff:`Décollage`,breakaway:`Contre-attaque`},takeoff:{rules:`Vol du jour\xA0: les gains sortent {n} fois plus souvent. L'avion décolle et le multiplicateur grimpe\xA0: encaissez avant qu'il s'envole. Dès ×2 vous gagnez un petit lot, dès ×10 un gros lot, à ×50 le jackpot\xA0: plus vous attendez, plus le lot est gros.`,start:`Décoller`,again:`Nouveau vol`,cashOut:`Encaisser {prize}`,cashFrom:`Encaissement dès ×{m}`,ready:`Prêt au décollage`,gone:`Envolé\xA0!`,cashed:`Encaissé à ×{m}\xA0: {prize}`,hint:`Encaissez quand vous voulez\xA0: si l'avion s'envole avant, vous ne gagnez rien`},breakaway:{rules:`Match du jour\xA0: les gains sortent {n} fois plus souvent. Avancez vers le but en choisissant une case par colonne\xA0: l'une cache le défenseur. Chaque colonne franchie fait monter le lot et vous pouvez encaisser quand vous voulez\xA0; devant le but, tirez\xA0: un but vous rapporte ce que vous avez accumulé, jusqu'au jackpot.`,pick:`Choisissez une case de la colonne {n}`,shoot:`Choisissez où tirer`,tackled:`Taclé\xA0! Le lot accumulé est perdu`,goal:`BUT\xA0!`,again:`Nouveau match`,cashOut:`Encaisser {prize}`,cashFrom:`Encaissement dès la colonne {n}`,square:`Colonne {column}, case {row}`,zone:`Tirer dans la zone {n}`}},detail:{slot:{small:`paire sur la ligne`,big:`brelan sur la ligne`,jackpot:`trois ∞`,takeoff:`encaissé à ×{m}`,breakaway:`{n} colonnes franchies`,goal:`but`}}}})),lt,ut=n((()=>{lt={games:{wheel:{name:`Grande Roue`,summary:`Multiplicateur\xA0: lot · Roue\xA0: gain`,rules:`Le Multiplicateur choisit le lot, la roue ce que vous gagnez\xA0: un petit lot ou un gros lot. Pile ou Face, Chasse au Trésor et Pachinko révèlent le gain\xA0; Grande Roue, c’est le jackpot.`}},wheel:{booster:`MULTIPLICATEUR`,spin:`Lancer la roue`,hint:`Ou attrapez la roue et lancez-la\xA0; zoomez sur la roue pour la voir de près`,segment:{coin:`PILE OU FACE`,hunt:`CHASSE AU TRÉSOR`,pachinko:`PACHINKO`,jackpot:`GRANDE ROUE`},pachinkoTitle:`Bonus Pachinko`,pachinkoText:`La bille décide du gain. Le lot reste {prize}.`,toPachinko:`Aller au Pachinko`,boosterRules:`Multiplicateur du jour\xA0: à chaque tour, le Multiplicateur choisit aussi un type de secteur, qui sort {n} fois plus souvent. Le Multiplicateur choisit le lot, la roue ce que vous gagnez\xA0: un petit lot ou un gros lot. Pile ou Face, Chasse au Trésor et Pachinko révèlent le gain\xA0; Grande Roue, c’est le jackpot.`},coin:{text:`Or ou rubis\xA0: la pièce décide du gain.`,gold:`or`,ruby:`rubis`,flip:`Lancer la pièce`},hunt:{text:`Dix-huit cases, un gain sous chacune. Choisissez-en une.`,tile:`Case {n}`},detail:{wheel:{small:`secteur gagnant`,big:`secteur gagnant`,jackpot:`secteur jackpot`,coin:`Pile ou Face`,hunt:`Chasse au Trésor`,pachinko:`bonus Pachinko`}}}})),dt=r({default:()=>ft}),ft,pt=n((()=>{s(),Xe(),Qe(),et(),nt(),it(),ot(),ct(),ut(),ft=o(tt,lt,st,rt,$e,at,Ye,Ze)})),mt,ht=n((()=>{mt={games:{blackjack:{name:`Blackjack`,summary:`Schlag die Bank, ohne über 21 zu kommen`,rules:`Setz bis zu 5 Chips eines Preises in den Kreis vor deinem Platz: Alle Chips gehören zum Preis des ersten. Dann schlag die Bank, ohne über 21 zu kommen; die Bank steht bei 17. Auf deine ersten zwei Karten kannst du verdoppeln, mit einem zweiten Stapel Chips und nur einer Karte, oder zwei gleichwertige Karten in zwei Hände mit je einem Stapel teilen; nach dem Teilen zählt die beste Hand, geteilte Asse bekommen nur eine Karte. Gewinnst du die Hand, gibt es den Preis der Chips: einen kleinen Preis, einen großen mit einem ausgeteilten Blackjack, Ass und Zehn oder Bild. Der Pik-Blackjack, Pik-Ass und Pik-Bube, ist der Jackpot.`},holdem:{name:`Texas Hold'em`,summary:`Die beste Hand gegen die Bank`,rules:`Du und die Bank bekommt je zwei Karten, dann kommen die drei Karten des Flops: mitgehen oder aussteigen. Gehst du mit, folgen Turn und River, und die beste Hand aus fünf Karten gewinnt. Ein Sieg mit höchster Karte, Paar, zwei Paaren oder Drilling bringt einen kleinen Preis, mit Straße oder besser einen großen; der Royal Flush ist der Jackpot. Wer aussteigt, verliert die Hand.`}},cards:{you:`Du`,dealer:`Bank`,deal:`Geben`},blackjack:{print:`Bank steht bei 17 · Pik-Blackjack: Jackpot`,hit:`Karte`,stand:`Stehen`,double:`Verdoppeln`,split:`Teilen`,bet:`Chip für {prize} setzen`,result:{bust:`Überkauft`,lose:`Die Bank gewinnt`,win:`Du schlägst die Bank`,dealerBust:`Die Bank überkauft sich`,natural:`Blackjack!`,spades:`Pik-Blackjack!`}},holdem:{print:`Die Bank spielt jede Hand · Royal Flush: Jackpot`,call:`Mitgehen`,fold:`Aussteigen`,hands:{highCard:`Höchste Karte`,pair:`Paar`,twoPair:`Zwei Paare`,trips:`Drilling`,straight:`Straße`,flush:`Flush`,fullHouse:`Full House`,quads:`Vierling`,straightFlush:`Straight Flush`,royalFlush:`Royal Flush`},result:{folded:`Du bist ausgestiegen`,won:`Du gewinnst mit {hand}`,lost:`Die Bank gewinnt mit {hand}`,split:`Unentschieden`}},detail:{blackjack:{win:`Hand gewonnen`,dealerBust:`Bank überkauft`,natural:`ausgeteilter Blackjack`,spades:`Pik-Blackjack`},holdem:`gewonnen mit {hand}`}}})),gt,_t=n((()=>{gt={developer:{title:`Entwickler-Steuerung`,restore:`Entwickler-Steuerung öffnen`,minimize:`Auf Symbol verkleinern`,close:`Entwickler-Steuerung schließen`,password:`Passwort`,unlock:`Entsperren`,wrongPassword:`Falsches Passwort.`,hint:`Strg+Umschalt+L öffnet und schließt dieses Fenster. Design und Sprache wechseln sofort; die Spieleinstellungen gelten ab dem Neustart des Spiels.`,game:`Spiel`,multiplier:`Multiplikator`,daily:`Tageswert`,result:`Ergebnis`,automatic:`Automatisch`,loss:`Verlust`,win:`Gewinn`,jackpot:`Jackpot`,decidedBy:`Die erweiterte Einstellung „{field}“ entscheidet das Ergebnis.`,advanced:`Erweitert`,field:{segment:`Feld`,prize:`Preis`,combination:`Kombination`,number:`Zahl`,violet:`Violette Kugel`,pocket:`Fach`,award:`Variante`,storm:`Sturmzahl`,booster:`Multiplikator-Feld`},option:{nothing:`Nichts`,award:`{tier} · {award}`,pair:`Logo-Paar`,logos:`Drei Logos`,sevens:`Drei Siebenen`,infinities:`Dreimal unendlich`,hit:`Getroffen`,miss:`Verfehlt`,pocket:`Fach {n}`,lands:`Kommt`,misses:`Kommt nicht`},about:{roulette:`Die gewählte Zahl kommt immer. Bei einem erzwungenen Ergebnis oder einer Sturmzahl, die kommen soll oder nicht, kommt die Zahl aus denen, die die Einsätze auf dem Tisch zulassen; lässt keine es zu, wird normal gezogen. Mit einem Multiplikator wird das Roulette zum Sturm-Roulette.`,pachinko:`Die violette Kugel gibt es nur beim bunten Pachinko, mit einem Multiplikator. Dort hängt der Preis von den getroffenen Roten ab: Beim Jackpot reihen sich die Roten entlang der Fallbahn auf und die Kugel trifft sie alle.`,wheel:`Mit einem Multiplikator wählt der Multiplikator eine Feldart, die öfter kommt: Hier legst du fest, welche. Das gewählte Feld entscheidet trotzdem, wo das Rad stehen bleibt.`,slot:`Normalerweise läuft der klassische Slot. Am Bonustag tritt der Slot des Tages an seine Stelle, Abheben oder Konter, nach dem Datum gezogen: Hier lässt er sich zusammen mit dem Multiplikator festlegen. Das gezogene Ergebnis ist das Höchste, was erreichbar ist.`,scratch:`Normalerweise gibt es das klassische Los. Am Bonustag tritt das Los des Tages an seine Stelle, eines der beiden Zahlenlose, nach dem Datum gezogen: Hier lässt es sich zusammen mit dem Multiplikator festlegen. Eine ohne Preis gewählte Variante geht an einen Preis, der sie auszahlt.`,blackjack:`Der Kartenschlitten inszeniert das gezogene Ergebnis, egal was der Spieler entscheidet: Mit Gewinn wird die Hand gewonnen, mit Jackpot kommt der Pik-Blackjack.`,holdem:`Die Karten werden aus denen gewählt, die das gezogene Ergebnis ergeben: Mit Gewinn gewinnt man, wenn man mitgeht, mit Jackpot kommt der Royal Flush. Wer aussteigt, verliert die Hand trotzdem.`},reset:`Alle Spiele zurücksetzen`,apply:`Anwenden und Spiel neu starten`,variant:{scratch:`Los des Tages`,slot:`Slot des Tages`},theme:`Saal-Design`,calendar:`Nach Kalender`,noTheme:`Keins`,language:`Sprache`,autoLanguage:`Automatisch`,dealer:`Croupier`,dealerShifts:`Nach den Schichten des Tages`,dealerAbsent:`Abwesend`,dealerNumber:`Croupier {n}`}}})),vt,yt=n((()=>{vt={games:{pachinko:{name:`Pachinko`,summary:`Das Fach entscheidet den Preis`,rules:`Wähl den Preis und wo die Kugel fällt: Das Fach entscheidet, was du gewinnst, einen kleinen oder einen großen Preis; das mittlere Fach ist der Jackpot. Fächer mit Strich zahlen nichts.`,bonusRules:`Bonus vom Großen Rad: Der Preis bleibt {prize}. Wähl, wo die Kugel fällt; das Fach zeigt, was du gewinnst.`}},pachinko:{launch:`Kugel fallen lassen`,hint:`Fahr mit der Maus über das Brett, um zu wählen, wo sie fällt, dann klick. Pfeiltasten und Leertaste gehen auch.`,redHits:`Rote getroffen`,powerOn:`Violett aktiv`,powerOff:`Triff den Violetten`,chance:`Gewinnchance`,detail:`Pachinko · bunte Stifte`,colorRules:`Fächer mit Strich zahlen nichts; die anderen steigen mit jedem getroffenen Roten, von einem kleinen bis zu einem großen Preis. Mit allen 8 Roten ist das mittlere Fach der Jackpot. Die violette Kugel vervielfacht die Chancen des Tages noch einmal.`,fever:`Goldfieber`,feverTitle:`ALLE ROTEN!`},detail:{pachinko:`Gewinnfach`}}})),bt,xt=n((()=>{bt={title:`Auf gut Glück`,room:`Spielsaal`,backToOverview:`Zur Übersicht`,backToGames:`Zu den Spielen`,soundOn:`Ton an`,soundOff:`Ton aus`,rules:`Regeln`,chips:`Preis der Chips`,ticker:{1:`Auf gut Glück`,2:`Großes Rad: Der Jackpot ist auf dem Rad`,3:`Drei ∞ auf der Linie: Jackpot`,4:`Ein Plein beim Roulette ist den Jackpot wert`,5:`Drei gleiche Logos unter der Rubbelschicht`,6:`Das mittlere Pachinko-Fach zahlt den Jackpot`},win:{title:`Gewonnen`,jackpot:`Jackpot`},tier:{small:`Kleiner Gewinn`,big:`Großer Gewinn`,jackpot:`Jackpot`,symbol:{small:`★`,big:`★★`,jackpot:`★★★`}},boost:{badge:`×{n}`,title:`Bonus des Tages`,odds:`Bonus des Tages: Gewinne {n}-mal so wahrscheinlich`,dealer:`Croupier am Tisch`,dealerOdds:`Croupier am Tisch: Gewinne {n}-mal so wahrscheinlich`},themes:{christmas:{name:`Weihnachten`,greeting:`Frohe Festtage: Unterm Baum wartet ein Preis`},halloween:{name:`Halloween`,greeting:`Süßes oder Preis?`},easter:{name:`Ostern`,greeting:`Frohe Ostern: Was steckt wohl im Ei?`},august:{name:`August`,greeting:`Schöne Sommerferien wünscht der Spielsaal`}},lobby:{games:`Spielsaal`,private:`Salon Privé`,privateLine:`Reservierte Tische`,pager:`Säle`},chipCount:{hint:`Setz bis zu {n} Chips`,left:`Noch {n} Chips`,leftOne:`Noch 1 Chip`,none:`Keine Chips mehr`},cert:{title:`Preis gewonnen`,prize:`Preis`,variant:`Variante`,fullPrize:`Der ganze Preis`,wonOn:`Gewonnen am`,notClaimed:`Einzulösen`,claimed:`Eingelöst`,claim:`Preis einlösen`,claiming:`Wird eingelöst…`,claimFailed:`Der Preis konnte nicht eingelöst werden. Versuch es noch einmal.`,seal:`AUF GUT GLÜCK · PREIS GEWONNEN ·`,sealClaimed:`EINGELÖST · AUF GUT GLÜCK ·`,again:`{game} noch mal spielen`,otherGame:`Spiel wechseln`}}})),St,Ct=n((()=>{St={games:{roulette:{name:`Roulette`,summary:`Setz deine Chips, dann wirf die Kugel`,rules:`Setz bis zu {n} Chips eines Preises, auf den Tisch oder mit Nassa, Orphelins und Tiers, die sie auf ihre Pleins und Chevaux verteilen: Alle Chips gehören zum Preis des ersten. Ein Plein gewinnt den Jackpot; Cheval, Transversale pleine, Carré und Transversale simple einen großen Preis; Kolonnen, Dutzende und einfache Chancen einen kleinen Preis. Gewinnen mehrere Einsätze, zählt der beste.`}},roulette:{launch:`Kugel werfen`,clear:`Chips zurücknehmen`,table:`Tisch`,call:{made:`Les jeux sont faits`,closed:`Rien ne va plus`},board:{column:`2:1`,dozen1:`12P`,dozen2:`12M`,dozen3:`12D`,low:`Manque`,even:`Pair`,odd:`Impair`,high:`Passe`},kind:{straight:`Plein {numbers}`,split:`Cheval {numbers}`,street:`Transversale pleine {numbers}`,corner:`Carré {numbers}`,line:`Transversale simple {numbers}`},spot:{column:{1:`Kolonne 1-34`,2:`Kolonne 2-35`,3:`Kolonne 3-36`},dozen:{1:`Erstes Dutzend`,2:`Mittleres Dutzend`,3:`Letztes Dutzend`},chance:{low:`Manque, 1 bis 18`,even:`Pair`,red:`Rouge`,black:`Noir`,odd:`Impair`,high:`Passe, 19 bis 36`}},track:`Annoncen`,announced:{nassa:`Nassa`,orphans:`Orphelins`,tiers:`Tiers`,cost:`{n} Chips`,label:`{name}, {n} Chips`},surface:`Wo setzen`,storm:{title:`Sturm`,rules:`Sturm-Roulette, der Bonus des Tages. Setz bis zu {n} Chips wie beim Roulette; bei jedem Wurf schlägt nach Rien ne va plus der Blitz in 3 Zahlen ein, die {m}-mal so oft kommen. Ein Plein gewinnt den Jackpot; Chevaux, Transversales pleines, Carrés und Transversales simples einen großen Preis; Kolonnen, Dutzende und einfache Chancen einen kleinen Preis.`,odds:`Kommen {n}× so oft`,numbers:`Blitzzahlen`},undo:`Letzten Chip entfernen`,rebet:`Einsatz wiederholen`},detail:{roulette:`Zahl {n}`,storm:`Blitzzahl {n}`}}})),wt,Tt=n((()=>{wt={games:{scratch:{name:`Rubbellos`,summary:`Drei gleiche Logos`,rules:`Drei gleiche Logos gewinnen diesen Preis; der Streifen unten zeigt, was er zahlt, bis zum Jackpot.`}},scratch:{title:`Rubbel deinen Preis frei`,rule:`Drei gleiche Logos gewinnen den Preis. Der Streifen unten zeigt, was er zahlt.`,award:`Gewinn`,series:`AUF GUT GLÜCK · SERIE FORTUNA`,watermark:`GLÜCK`,revealAll:`Alles freirubbeln`,newTicket:`Neues Los`,hint:`Rubbel mit der Maus oder dem Finger`,locked:`Freirubbeln mit drei gleichen Logos`,prize:`PREIS`,winningNumbers:`GEWINNZAHLEN`,yourNumbers:`DEINE ZAHLEN`,game:`SPIEL {n}`,topPrize:`HAUPTPREIS: DER JACKPOT`,double:{first:`DOPPEL`,second:`GLÜCK`,tagline:`2 Spiele in einem!`,rules:`Zwei Arten zu gewinnen: Eine Gewinnzahl unter deinen Zahlen gewinnt den Preis darunter; drei gleiche Preise gewinnen diesen Preis. Unter den Logos liegt kein Preis: Drei gleiche Logos gewinnen den Jackpot.`},forever:{first:`FÜR`,middle:`∞`,second:`IMMER`,jackpot:`3 gleiche Logos: der Jackpot`,pairRule:`Zwei gleiche Preise gewinnen diesen Preis`,rules:`Spiel 1: Eine Gewinnzahl unter deinen Zahlen gewinnt den Preis darunter; unter den Logos liegt kein Preis, aber drei gleiche Logos gewinnen den Jackpot. Spiel 2: Zwei gleiche Preise gewinnen diesen Preis.`},names:{double:`Doppelglück`,forever:`Für Immer`},dayRules:`Los des Tages: Gewinnlose kommen {n}-mal so oft.`},detail:{scratch:{small:`drei gleiche Logos`,big:`drei gleiche Logos`,jackpot:`drei gleiche Logos`,match:`Gewinnzahl`,three:`drei gleiche Preise`,pair:`zwei gleiche Preise`,logos:`drei gleiche Logos`}}}})),Et,Dt=n((()=>{Et={games:{slot:{name:`Slot`,summary:`Drei Symbole auf der Linie`,rules:`Zwei gleiche Preise auf der Linie: ein kleiner Preis. Drei Preise oder drei 7: ein großer Preis. Drei ∞: der Jackpot.`}},slot:{sign:`JACKPOT`,ready:`Zieh den Hebel`,spinning:`Die Walzen drehen sich…`,line:`Auf der Linie`,spin:`Walzen drehen`,lever:`Hebel ziehen`,result:{none:`Keine Kombination`,small:`Paar auf der Linie`,big:`Drilling auf der Linie`,jackpot:`Drei ∞`},names:{takeoff:`Abheben`,breakaway:`Konter`},takeoff:{rules:`Flug des Tages: Gewinne kommen {n}-mal so oft. Das Flugzeug hebt ab und der Multiplikator steigt: Kassier, bevor es davonfliegt. Ab ×2 gewinnst du einen kleinen Preis, ab ×10 einen großen, bei ×50 den Jackpot: Je länger du wartest, desto größer der Preis.`,start:`Abheben`,again:`Neuer Flug`,cashOut:`{prize} kassieren`,cashFrom:`Kassieren ab ×{m}`,ready:`Bereit zum Abheben`,gone:`Davongeflogen!`,cashed:`Kassiert bei ×{m}: {prize}`,hint:`Kassier, wann du willst: Fliegt das Flugzeug vorher davon, gewinnst du nichts`},breakaway:{rules:`Spiel des Tages: Gewinne kommen {n}-mal so oft. Lauf aufs Tor zu und wähl in jeder Spalte ein Feld: In einem steht der Verteidiger. Jede geschaffte Spalte erhöht den Preis und du kannst jederzeit kassieren; vor dem Tor schießt du: Mit dem Tor gewinnst du, was du gesammelt hast, bis zum Jackpot.`,pick:`Wähl ein Feld in Spalte {n}`,shoot:`Wähl, wohin du schießt`,tackled:`Abgegrätscht! Der gesammelte Preis ist weg`,goal:`TOR!`,again:`Neues Spiel`,cashOut:`{prize} kassieren`,cashFrom:`Kassieren ab Spalte {n}`,square:`Spalte {column}, Feld {row}`,zone:`Auf Zone {n} schießen`}},detail:{slot:{small:`Paar auf der Linie`,big:`Drilling auf der Linie`,jackpot:`drei ∞`,takeoff:`kassiert bei ×{m}`,breakaway:`{n} Spalten geschafft`,goal:`Tor`}}}})),Ot,kt=n((()=>{Ot={games:{wheel:{name:`Großes Rad`,summary:`Multiplikator: Preis · Rad: Gewinn`,rules:`Der Multiplikator wählt den Preis, das Rad den Gewinn: einen kleinen oder einen großen Preis. Kopf oder Zahl, Preisjagd und Pachinko decken den Gewinn auf; Großes Rad ist der Jackpot.`}},wheel:{booster:`MULTIPLIKATOR`,spin:`Rad drehen`,hint:`Oder pack das Rad und schleudere es; zoome auf das Rad, um es aus der Nähe zu sehen`,segment:{coin:`KOPF ODER ZAHL`,hunt:`PREISJAGD`,pachinko:`PACHINKO`,jackpot:`GROSSES RAD`},pachinkoTitle:`Pachinko-Bonus`,pachinkoText:`Die Kugel entscheidet den Gewinn. Der Preis bleibt {prize}.`,toPachinko:`Zum Pachinko`,boosterRules:`Multiplikator des Tages: Bei jeder Drehung wählt der Multiplikator auch eine Feldart, die {n}-mal so oft kommt. Der Multiplikator wählt den Preis, das Rad den Gewinn: einen kleinen oder einen großen Preis. Kopf oder Zahl, Preisjagd und Pachinko decken den Gewinn auf; Großes Rad ist der Jackpot.`},coin:{text:`Gold oder Rubin: Die Münze entscheidet den Gewinn.`,gold:`Gold`,ruby:`Rubin`,flip:`Münze werfen`},hunt:{text:`Achtzehn Felder, unter jedem ein Gewinn. Wähl eins.`,tile:`Feld {n}`},detail:{wheel:{small:`Gewinnfeld`,big:`Gewinnfeld`,jackpot:`Jackpotfeld`,coin:`Kopf oder Zahl`,hunt:`Preisjagd`,pachinko:`Pachinko-Bonus`}}}})),At=r({default:()=>jt}),jt,Mt=n((()=>{s(),ht(),_t(),yt(),xt(),Ct(),Tt(),Dt(),kt(),jt=o(bt,Ot,Et,St,vt,wt,mt,gt)}));async function Nt(e){await Promise.all(e.filter(e=>Pt[e]&&!It[e]).map(async e=>It[e]=(await Pt[e]()).default))}var Pt,Ft,It,Lt,Rt,zt=n((()=>{ue(),Pt={it:()=>Promise.resolve().then(()=>(ke(),De)),es:()=>Promise.resolve().then(()=>(Je(),Ke)),fr:()=>Promise.resolve().then(()=>(pt(),dt)),de:()=>Promise.resolve().then(()=>(Mt(),At))},Ft=[`en`,...Object.keys(Pt)],It={en:le},Lt=e=>It[e],Rt=e=>e.every(e=>!Pt[e]||It[e])}));function Bt(e){let t=e,n=new Set;return{get value(){return t},set value(e){Object.is(e,t)||(t=e,this.notify())},subscribe(e){return n.add(e),()=>n.delete(e)},notify(){n.forEach(e=>e())}}}var Vt=n((()=>{}));function Ht(){Kt.value=Gt(),!(qt||typeof MutationObserver>`u`)&&(qt=!0,new MutationObserver(()=>Kt.value=Gt()).observe(document.documentElement,{attributes:!0,attributeFilter:[`lang`]}))}function Ut(e,t){let n=e;for(let e of t.split(`.`))n=typeof n==`object`?n[e]:void 0;return typeof n==`string`?n:void 0}function Wt(e,t={}){let n=Jt(e).flatMap(e=>[t[e],Lt(e)]);return(e,t={})=>(n.reduce((t,n)=>t??Ut(n,e),void 0)??e).replace(/\{(\w+)\}/g,(e,n)=>n in t?String(t[n]):e)}var Gt,Kt,qt,Jt,Yt,Xt,Zt=n((()=>{zt(),Vt(),Gt=()=>typeof document<`u`&&document.documentElement.lang||(typeof navigator<`u`?navigator.language:``)||`en`,Kt=Bt(Gt()),qt=!1,Jt=e=>[...new Set([e,e.split(`-`)[0],`en`])],Yt=e=>Rt(Jt(e)),Xt=e=>Nt(Jt(e))})),Qt,$t=n((()=>{Qt=`.lk-cards{flex-direction:column;align-items:center;width:min(920px,100cqw - 24px,180cqh - 198px);display:flex}.lk-ctable{--lk-card-w:7cqw;width:100%;padding:0 30px 50px;container-type:inline-size}.lk-ctable-felt{z-index:1;aspect-ratio:9/5;border-radius:0 0 50% 50%/0 0 100% 100%;position:relative;box-shadow:0 46px 60px -10px #000c}.lk-ctable-rail,.lk-ctable-cloth{pointer-events:none;border-radius:0 0 50% 50%/0 0 100% 100%;position:absolute}.lk-ctable-rail{background:#2a120c;inset:-17px;box-shadow:inset 0 0 0 1px #8a6420}.lk-ctable-cloth{background:radial-gradient(60% 70% at 50% 28%,#ffe1aa1f,#0000 70%),radial-gradient(120% 100% at 50% 0,#1d4636,#0a1d16 75%);inset:0;box-shadow:0 0 0 2px #c9a04a,inset 0 0 70px #0000008c}.lk-ctable-rail{-webkit-mask:radial-gradient(calc(100% * var(--lk-notch-x)) calc(100% * var(--lk-notch-y)) at 50% 17px, transparent 99%, #000 100%);mask:radial-gradient(calc(100% * var(--lk-notch-x)) calc(100% * var(--lk-notch-y)) at 50% 17px, transparent 99%, #000 100%)}.lk-ctable-cloth{-webkit-mask:radial-gradient(calc(100% * var(--lk-notch-x)) calc(100% * var(--lk-notch-y)) at 50% 0, transparent 99%, #000 100%);mask:radial-gradient(calc(100% * var(--lk-notch-x)) calc(100% * var(--lk-notch-y)) at 50% 0, transparent 99%, #000 100%)}.lk-ctable-print{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.lk-ctable-print text{font:600 15px var(--lk-display-font);letter-spacing:.22em;text-transform:uppercase;fill:#f3d4886b}.lk-ctable-shoe{width:calc(var(--lk-card-w) * 1.05);aspect-ratio:5/7;position:absolute;top:5%;right:9%}.lk-ctable-shoe b{border-radius:calc(var(--lk-card-w) * .1);box-shadow:inset 0 0 0 calc(var(--lk-card-w) * .05) #f3e3bd, 0 3px 6px #00000080;background:repeating-linear-gradient(45deg,#f3d4882e 0 2px,#0000 2px 7px),linear-gradient(160deg,#7d1c24,#3e0b10);position:absolute;inset:0}.lk-ctable-shoe b:nth-child(2){translate:-3px 3px}.lk-ctable-shoe b:nth-child(3){translate:-6px 6px}.lk-ctable-dealer{justify-items:center;gap:6px;display:grid;position:absolute;top:5%;left:50%;translate:-50%}.lk-ctable-centre{justify-items:center;gap:10px;display:grid;position:absolute;top:33%;left:50%;translate:-50%}.lk-cards--blackjack .lk-ctable-centre{top:37%}.lk-cards--blackjack .lk-ctable-player{top:47%}.lk-ctable-bet{position:absolute;top:81%;left:50%;translate:-50% -50%}.lk-bet{width:calc(var(--lk-card-w) * 1.3);aspect-ratio:1;cursor:default;background:radial-gradient(circle,#0003 0 58%,#0000 60%);border:0;border-radius:50%;padding:0;display:block;position:relative;box-shadow:inset 0 0 0 2px #f3d4888c,inset 0 0 0 6px #0000,inset 0 0 0 7px #f3d48838}.lk-bet.is-open{cursor:pointer;animation:1.6s ease-in-out infinite alternate lk-bet-glow}.lk-bet:focus-visible{outline:2px solid var(--lk-gold);outline-offset:3px}@keyframes lk-bet-glow{to{box-shadow:inset 0 0 0 2px #f6dd96,inset 0 0 0 6px #0000,inset 0 0 0 7px #f3d48866,0 0 18px #ffd36e73}}.lk-bet-chip{aspect-ratio:1;width:64%;translate:calc(-50% + var(--stack,0) * 72%) calc(-50% - var(--n) * 4px);transition:translate .35s var(--lk-ease-out);background:radial-gradient(circle, var(--lk-chip) 0 56%, #fbf3df99 57% 59%, transparent 60%), repeating-conic-gradient(from 7deg, #fbf3df 0 16deg, var(--lk-chip) 16deg 45deg);animation:lk-chip-drop .38s var(--lk-ease-expo) both;border-radius:50%;place-items:center;display:grid;position:absolute;top:50%;left:50%;box-shadow:inset 0 0 0 1px #00000059,0 2px #00000073}.lk-bet-chip img{width:42%}.lk-bet-chip.is-winning{animation:lk-chip-drop .38s var(--lk-ease-expo) both, lk-chip-win .5s ease-in-out infinite alternate}.lk-cards-rack{margin-top:18px}.lk-cards--blackjack .lk-ctable-player{gap:calc(var(--lk-card-w) * .5)}.lk-split{border-radius:12px;align-items:center;gap:8px;padding:6px 8px;transition:box-shadow .3s;display:flex}.lk-split.is-active{box-shadow:0 0 0 1.5px var(--lk-gold), 0 0 18px #ffd36e73}.lk-hand-total small{color:var(--lk-gold);margin-left:4px;font-size:11px}.lk-cards.is-clearing :is(.lk-card,.lk-bet-chip,.lk-board-slot){animation:lk-card-collect .6s var(--lk-ease-in) forwards}.lk-cards.is-clearing :is(.lk-cards-result,.lk-hand-total,.lk-hand-name b){opacity:0;transition:opacity .4s}@keyframes lk-card-collect{to{opacity:0;transform:translate(calc(var(--lk-card-w,64px) * -5), calc(var(--lk-card-w,64px) * -4)) rotate(-35deg) scale(.8)}}.lk-ctable-player{align-items:center;gap:10px;display:flex;position:absolute;top:59%;left:50%;translate:-50%}.lk-cards--holdem .lk-ctable-player{top:64%}.lk-seat{width:calc(var(--lk-card-w) * .8);aspect-ratio:1;color:#e2bd638c;font-size:calc(var(--lk-card-w) * .4);cursor:help;background:radial-gradient(circle at 40% 30%,#2a1a12,#120a07);border-radius:50%;place-items:center;transition:color .2s,box-shadow .2s;display:grid;position:absolute;translate:-50% -50%;box-shadow:inset 0 0 0 1.5px #e2bd6366,0 4px 10px #00000080}.lk-seat.is-mine{z-index:1;width:calc(var(--lk-card-w) * .8);cursor:default;background:radial-gradient(circle at 40% 30%,#3a1a0b,#1e0d06);overflow:visible;box-shadow:0 0 0 2px #f6dd96,0 0 0 4px #2a120c,0 0 0 5px #a77c2c,0 0 16px #ffd36e8c}.lk-seat.is-mine :is(img,.lk-seat-avatar){border-radius:50%;width:100%;height:100%}.lk-seat-avatar{fill:#e2bd6399}.lk-seat.is-mine b{max-width:calc(var(--lk-card-w) * 2.4);color:#2a1a05;font:700 11px var(--font-sans,inherit);text-overflow:ellipsis;white-space:nowrap;background:linear-gradient(#f6dd96,#d4a94e 55%,#a77c2c);border-radius:999px;padding:2px 10px;position:absolute;top:calc(100% + 4px);left:50%;overflow:hidden;translate:-50%;box-shadow:0 2px 6px #00000080}.lk-hand{display:flex}.lk-hand>.lk-card+.lk-card{margin-left:calc(var(--lk-card-w) * -.42)}.lk-board{gap:calc(var(--lk-card-w) * .12);display:flex}.lk-board-slot{width:var(--lk-card-w);aspect-ratio:5/7;border-radius:calc(var(--lk-card-w) * .1);box-shadow:inset 0 0 0 1.5px #e2bd6340}.lk-hand-name{color:var(--lk-text-muted);letter-spacing:.2em;text-transform:uppercase;align-items:center;gap:8px;font-size:11px;font-weight:600;display:flex}.lk-hand-name b,.lk-hand-total{color:var(--lk-gold-hi);box-shadow:inset 0 0 0 1px var(--lk-gold-line);letter-spacing:0;text-transform:none;background:#120a07;border-radius:999px;padding:2px 10px;font-size:13px;font-weight:700}.lk-hand-total{text-align:center;min-width:34px;animation:.3s both lk-fade-in}.lk-hand-total.is-bust{color:#ff9a8f;box-shadow:inset 0 0 0 1px #ff786e80}.lk-cards-result{box-shadow:inset 0 0 0 1px var(--lk-gold-line);color:var(--lk-text);font:italic 700 18px var(--lk-display-font);white-space:nowrap;background:#080403c7;border-radius:999px;margin:0;padding:6px 18px;animation:.3s both lk-fade-in}.lk-cards-result.is-won{color:#fff3c4;box-shadow:inset 0 0 0 1px var(--lk-gold), 0 0 24px #ffd36e73}.lk-cards-controls{flex-direction:row;gap:12px;margin-top:22px}.lk-card{width:var(--lk-card-w,64px);aspect-ratio:5/7;perspective:700px;animation:lk-card-deal .45s var(--lk-ease-out) both;transition:translate .3s var(--lk-ease-out);flex:none;position:relative}@keyframes lk-card-deal{0%{opacity:0;transform:translate(calc(var(--lk-card-w,64px) * 4), calc(var(--lk-card-w,64px) * -3)) rotate(-28deg)}}.lk-card-turn{transform-style:preserve-3d;transition:transform .55s var(--lk-ease-out);position:absolute;inset:0}.lk-card.is-hidden .lk-card-turn{transform:rotateY(180deg)}.lk-card-face,.lk-card-back{border-radius:calc(var(--lk-card-w,64px) * .1);backface-visibility:hidden;position:absolute;inset:0}.lk-card-face{color:#1a120c;background:linear-gradient(160deg,#fffdf6,#efe6cf);box-shadow:inset 0 0 0 1px #3c280a40,0 4px 10px #00000073}.lk-card.is-red .lk-card-face{color:#b3202b}.lk-card-back{box-shadow:inset 0 0 0 calc(var(--lk-card-w,64px) * .05) #f3e3bd, inset 0 0 0 calc(var(--lk-card-w,64px) * .065) #8a6420, 0 4px 10px #00000073;background:repeating-linear-gradient(45deg,#f3d4882e 0 2px,#0000 2px 7px),repeating-linear-gradient(-45deg,#f3d4882e 0 2px,#0000 2px 7px),linear-gradient(160deg,#7d1c24,#3e0b10);transform:rotateY(180deg)}.lk-card-corner{justify-items:center;line-height:1;display:grid;position:absolute;top:5%;left:8%}.lk-card-corner b{font:700 calc(var(--lk-card-w,64px) * .26) var(--lk-display-font)}.lk-card-corner svg{width:calc(var(--lk-card-w,64px) * .17);fill:currentColor;margin-top:2px}.lk-card-corner.is-turned{inset:auto 8% 5% auto;rotate:180deg}.lk-card-pip{width:calc(var(--lk-card-w,64px) * .44);fill:currentColor;position:absolute;top:50%;left:50%;translate:-50% -50%}.lk-card.is-lit{translate:0 -8px}.lk-card.is-lit .lk-card-face{box-shadow:inset 0 0 0 1px #3c280a40,0 0 0 2px #f6dd96,0 0 18px #ffd36ecc}@media (prefers-reduced-motion:reduce){.lk-page,.lk-veil,.lk-card,.lk-card-turn,.lk-mini-hand .lk-card+.lk-card{transition:none;animation:none}}.lk-cards{transition:width .7s var(--lk-ease-out)}.lk-cards:has(.has-dealer){width:min(920px,100cqw - 24px,132cqh - 79.2px)}.lk-cards-rack{transition:width .7s var(--lk-ease-out), margin-top .7s var(--lk-ease-out)}.lk-cards:has(.has-dealer) .lk-cards-rack{width:calc(100cqw - 56px);margin-top:-58px}.lk-ctable{--lk-notch-x:0;--lk-notch-y:0;transition:--lk-notch-x .7s var(--lk-ease-out), --lk-notch-y .7s var(--lk-ease-out)}.lk-ctable.has-dealer{--lk-card-w:5.6cqw;--lk-notch-x:.18;--lk-notch-y:.13}.lk-ctable-notch{width:calc(200% * var(--lk-notch-x) + 34px);height:calc(200% * var(--lk-notch-y) + 34px);clip-path:inset(calc(50% - 17px) -4px -4px);opacity:0;pointer-events:none;border:16px solid #2a120c;border-radius:50%;transition:opacity .4s;position:absolute;top:0;left:50%;translate:-50% -50%;box-shadow:0 0 0 2px #c9a04a,inset 0 0 0 1px #8a6420}.lk-ctable.has-dealer .lk-ctable-notch{opacity:1}.lk-dealer{pointer-events:none;height:0;transition:height .7s var(--lk-ease-out);position:relative}.lk-ctable.has-dealer .lk-dealer{height:16cqw}.lk-dealer-photo{z-index:0;opacity:0;transform-origin:50% 100%;filter:drop-shadow(0 10px 16px #00000080);width:30cqw;transition:opacity .6s ease, translate .7s var(--lk-ease-out);animation:4.2s ease-in-out infinite alternate lk-dealer-breath;position:absolute;top:0;left:50%;translate:-50% 18%}.lk-dealer-photo.is-shown{opacity:1;transition-delay:.25s;translate:-50%}@starting-style{.lk-dealer-photo.is-shown{opacity:0;translate:-50% 18%}}.lk-dealer-photo.is-hands{z-index:2;filter:none}.lk-dealer-photo.is-hands:not(.is-shown){transition:none}@keyframes lk-dealer-breath{to{transform:translateY(-1.5px)scale(1.006)}}.lk-dealer-photo.is-dealing{animation:.48s ease-in-out infinite alternate lk-dealer-deal}@keyframes lk-dealer-deal{0%{transform:rotate(0)}to{transform:rotate(.8deg)translateY(2px)}}@media (prefers-reduced-motion:reduce){.lk-dealer-photo,.lk-dealer-photo.is-dealing{animation:none}}.lk-ctable-dealer,.lk-ctable-centre,.lk-ctable-player{transition:top .6s var(--lk-ease-out)}.lk-ctable.has-dealer .lk-ctable-dealer{top:27%}.lk-ctable.has-dealer .lk-ctable-centre{top:47%}.lk-cards--blackjack .lk-ctable.has-dealer .lk-ctable-player{top:54%}.lk-cards--holdem .lk-ctable.has-dealer .lk-ctable-player{top:70%}`})),en,tn=n((()=>{en=`.lk-dev{--dev-bg:oklch(22% .03 55);--dev-surface:oklch(28% .035 55);--dev-line:oklch(62% .1 80);--dev-ink:oklch(96% .03 85);--dev-muted:oklch(82% .04 80);--dev-gold:oklch(78% .12 82);z-index:200;color:var(--dev-ink);font-size:.875rem;line-height:1.45;position:fixed}.lk-dev *,.lk-dev :before,.lk-dev :after{box-sizing:border-box}.lk-dev button{background:0 0;border:0;margin:0;padding:0}.lk-dev button,.lk-dev select,.lk-dev input{font:inherit}.lk-dev-panel{background:var(--dev-bg);border:1px solid var(--dev-line);border-radius:.75rem;flex-direction:column;width:min(26rem,100vw - 16px);max-height:calc(100dvh - 16px);display:flex;overflow:hidden;box-shadow:0 12px 40px oklch(0% 0 0/.55)}.lk-dev header{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border-bottom:1px solid oklch(62% .1 80/.35);align-items:center;gap:.375rem;padding:.5rem .5rem .5rem .375rem;display:flex}.lk-dev header:active{cursor:grabbing}.lk-dev header strong{flex:1;align-items:center;gap:.5rem;font-weight:600;display:flex}.lk-dev-grip{color:var(--dev-muted)}.lk-dev header button{width:2rem;height:2rem;color:var(--dev-muted);border-radius:.375rem;place-items:center;transition:background-color .15s ease-out,color .15s ease-out;display:grid}.lk-dev header button:hover{color:var(--dev-ink);background:var(--dev-surface)}.lk-dev-body{gap:.75rem;margin:0;padding:.875rem 1rem 1rem;display:grid;overflow-y:auto}.lk-dev-hint,.lk-dev-note{color:var(--dev-muted);text-wrap:pretty;margin:0}.lk-dev-note{font-size:.8125rem}.lk-dev-error{color:oklch(80% .13 25);margin:0}.lk-dev-row{grid-template-columns:7.5rem 1fr;align-items:center;gap:.75rem;display:grid}.lk-dev select,.lk-dev input{min-width:0;height:2.125rem;color:var(--dev-ink);background:var(--dev-surface);border:1px solid oklch(62% .1 80/.6);border-radius:.375rem;margin:0;padding:0 .5rem}.lk-dev select:disabled{opacity:.55}.lk-dev input[aria-invalid=true]{border-color:oklch(70% .16 25)}.lk-dev option{color:var(--dev-ink);background:var(--dev-bg)}.lk-dev-advanced{border-top:1px solid oklch(62% .1 80/.35);padding-top:.75rem}.lk-dev-advanced>:not(summary){margin-top:.75rem}.lk-dev summary{width:fit-content;color:var(--dev-gold);cursor:pointer;align-items:center;gap:.375rem;font-weight:600;list-style:none;display:flex}.lk-dev summary::-webkit-details-marker{display:none}.lk-dev summary .fl-icon{transition:transform .15s ease-out}.lk-dev-advanced[open] summary .fl-icon{transform:rotate(90deg)}.lk-dev footer{flex-wrap:wrap;justify-content:flex-end;gap:.5rem;padding-top:.25rem;display:flex}.lk-dev footer button{height:2.125rem;color:var(--dev-ink);cursor:pointer;border:1px solid oklch(62% .1 80/.6);border-radius:.375rem;align-items:center;gap:.375rem;padding:0 .75rem;transition:background-color .15s ease-out;display:inline-flex}.lk-dev footer button:hover:not(:disabled){background:var(--dev-surface)}.lk-dev footer button.is-primary{color:oklch(20% .03 60);background:var(--dev-gold);border-color:var(--dev-gold);font-weight:600}.lk-dev footer button.is-primary:hover:not(:disabled){background:oklch(85% .11 85)}.lk-dev footer button:disabled{opacity:.5;cursor:not-allowed}.lk-dev .lk-dev-icon{width:3rem;height:3rem;color:var(--dev-gold);background:var(--dev-bg);border:1px solid var(--dev-line);cursor:grab;touch-action:none;border-radius:50%;place-items:center;font-size:1.25rem;transition:transform .15s ease-out;display:grid;box-shadow:0 8px 24px oklch(0% 0 0/.5)}.lk-dev-icon:hover{transform:scale(1.06)}.lk-dev-icon:active{cursor:grabbing}.lk-dev button:focus-visible,.lk-dev select:focus-visible,.lk-dev input:focus-visible,.lk-dev summary:focus-visible{outline:2px solid var(--dev-ink);outline-offset:2px}@media (prefers-reduced-motion:reduce){.lk-dev header button,.lk-dev footer button,.lk-dev-icon,.lk-dev summary .fl-icon{transition:none}}`})),nn,rn=n((()=>{nn=`.lk-pachinko{flex-direction:column;align-items:center;display:flex}.lk-pachinko-cab{background:linear-gradient(#7a3d1c,#4a2410 45%,#2a1208);border-radius:34px 34px 22px 22px;padding:14px;box-shadow:inset 0 0 0 2px #6b4a14,inset 0 0 0 4px #f3d488,inset 0 0 0 6px #8a6420,0 40px 80px -20px #000000d9}.lk-pachinko canvas{aspect-ratio:400/620;touch-action:none;border-radius:24px 24px 12px 12px;width:auto;height:clamp(260px,100cqh - 130px,620px);display:block}.lk-pachinko-controls{align-items:center;gap:22px;margin-top:20px;display:flex}.lk-pachinko canvas.is-aiming{cursor:pointer}.lk-peg-score{color:var(--lk-gold-hi);justify-content:center;align-items:center;gap:24px;margin-bottom:12px;display:flex}.lk-peg-score>span{font-variant-numeric:tabular-nums;grid-template-columns:auto auto;align-items:center;gap:3px 6px;display:grid}.lk-peg-score b{font-size:17px}.lk-peg-score small{color:var(--lk-text-muted);grid-column:1/-1;font-size:11px}.lk-peg-red{color:#ff9aa7}.lk-peg-power{color:#cda9e5}.lk-peg-power.is-active{color:#f4c3ff;text-shadow:0 0 15px #b159ee}.lk-pachinko--color canvas{height:clamp(210px,100cqh - 185px,620px)}.lk-pachinko--color .lk-pachinko-controls{margin-top:12px}.lk-pachinko-cab{position:relative}.lk-peg-fever{z-index:2;pointer-events:none;text-align:center;text-shadow:0 3px #74341b,0 6px 25px #05051a;animation:lk-peg-fever-in .7s var(--lk-ease-expo) both;justify-items:center;gap:6px;display:grid;position:absolute;inset:25% -45% auto;transform:rotate(-8deg)}.lk-peg-fever span{color:#fff4d6;font:italic 700 32px var(--lk-display-font)}.lk-peg-fever strong{color:#ffe18d;font:900 36px var(--lk-display-font)}.lk-pachinko-cab.is-fever{box-shadow:inset 0 0 0 3px #fff1ba,0 0 45px #b279e788,0 0 85px #f9c26f66}.lk-peg-fever:before{content:"";z-index:-1;background:repeating-conic-gradient(#ffd27055 0deg 9deg,#0000 9deg 22.5deg);animation:12s linear infinite lk-peg-rays;position:absolute;inset:-140px -10%;-webkit-mask-image:radial-gradient(#000 5%,#0000 68%);mask-image:radial-gradient(#000 5%,#0000 68%)}@keyframes lk-peg-fever-in{0%{opacity:0;transform:rotate(-8deg)scale(.45)}to{opacity:1;transform:rotate(-8deg)scale(1)}}@media (prefers-reduced-motion:reduce){.lk-peg-fever{animation:none}.lk-peg-fever:before{display:none}}`})),an,on=n((()=>{an=`:where(.lk-room),:where(.lk-room) *,:where(.lk-room) :before,:where(.lk-room) :after,:where(.lk-room) ::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}:where(.lk-room){-webkit-text-size-adjust:100%;tab-size:4;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5}:where(.lk-room) :is(h1,h2,h3,h4,h5,h6){font-size:inherit;font-weight:inherit}:where(.lk-room) a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}:where(.lk-room) :is(b,strong){font-weight:bolder}:where(.lk-room) small{font-size:80%}:where(.lk-room) table{text-indent:0;border-color:inherit;border-collapse:collapse}:where(.lk-room) :is(ol,ul,menu){list-style:none}:where(.lk-room) :is(img,svg,video,canvas,audio,iframe,embed,object){vertical-align:middle;display:block}:where(.lk-room) :is(img,video){max-width:100%;height:auto}:where(.lk-room) :is(button,input,select,optgroup,textarea){font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(.lk-room) ::placeholder{opacity:1;color:color-mix(in oklab, currentcolor 50%, transparent)}:where(.lk-room) [hidden]:where(:not([hidden=until-found])){display:none!important}.lk-room{--lk-page:oklch(14% .02 35);--lk-gold:#e2bd63;--lk-gold-hi:#f6e2a6;--lk-gold-lo:#8a6420;--lk-gold-line:#e2bd6366;--lk-wood:#3a1a0b;--lk-wood-deep:#1e0d06;--lk-text-hi:#fbf3df;--lk-text:#eadfc6;--lk-text-muted:#c9bb98;--lk-text-dim:#a29473;--lk-lamp-on:#ffe3a0;--lk-lamp-off:#4a3a1e;--lk-lamp-alt:#fff8e6;--lk-display:#120a05;--lk-display-ink:#ffd889;--lk-seg-1:#1d3561;--lk-seg-2:#c9a04a;--lk-seg-2-ink:#2a1a05;--lk-seg-5:#7d1c24;--lk-seg-10:#efe4c8;--lk-seg-10-ink:#3a240a;--lk-seg-pk:#22584d;--lk-seg-ch:#1c6136;--lk-rl-red:#9e1b22;--lk-rl-red-deep:#6e1218;--lk-rl-black:#17120e;--lk-rl-black-deep:#0c0906;--lk-rl-zero:#156b3c;--lk-rl-zero-deep:#0e4a29;--lk-rl-bowl:#4a2410;--lk-rl-track:#6b3519;--lk-rl-cone:#8a4a24;--lk-rl-cone-edge:#3a1a0b;--lk-board-top:#4a2614;--lk-board-bottom:#22100a;--lk-board-line:#f3d48824;--lk-peg:#d4a94e;--lk-felt:radial-gradient(#ffffff0b 1px, transparent 1.4px) 0 0 / 5px 5px, radial-gradient(90% 90% at 50% 40%, oklch(40% .09 158), oklch(23% .06 160) 80%);--lk-display-font:"Playfair Display", Georgia, "Times New Roman", serif;--lk-mono:ui-monospace, "SFMono-Regular", "JetBrains Mono", "Fira Code", Menlo, monospace;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";font-family:var(--font-sans);--lk-ease-out:cubic-bezier(.22, 1, .36, 1);--lk-ease-expo:cubic-bezier(.16, 1, .3, 1);--lk-ease-in:cubic-bezier(.55, 0, .85, .4);--lk-shadow-object:0 24px 50px -20px #000000bf, 0 2px 6px #0006;z-index:60;padding-top:env(safe-area-inset-top,0px);color:var(--lk-text);background:radial-gradient(50% 32% at 50% -6%, #ffd68c52, transparent 70%), radial-gradient(70% 55% at 50% 112%, oklch(32% .08 158/.55), transparent 70%), var(--lk-page);clip-path:circle(0 at var(--lk-ox,90%) var(--lk-oy,10%));--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-size:14px;position:fixed;inset:0;overflow:clip}.lk-room.is-open{clip-path:circle(150vmax at var(--lk-ox) var(--lk-oy));transition:clip-path .9s var(--lk-ease-expo)}.lk-room.is-closing{clip-path:circle(0 at var(--lk-ox) var(--lk-oy));transition:clip-path .55s var(--lk-ease-in)}.lk-room:not(.is-ready) *{animation-play-state:paused!important}.lk-room button{font:inherit;color:inherit;cursor:pointer}.fl-logo{object-fit:contain}:is(.lk-wheel-logo,.lk-seal-logo)>:is(.fl-icon,.fl-logo){width:100%;height:100%;display:block}.fl-icon{vertical-align:baseline;flex:none;width:1em;height:1em;display:inline-block;overflow:visible}.lk-pools,.lk-beams,.lk-drapes,.lk-twinkles{pointer-events:none;position:absolute;inset:0;overflow:hidden}.lk-pools i{opacity:.5;will-change:transform;border-radius:50%;width:60vmax;height:60vmax;animation:18s ease-in-out infinite alternate lk-pool;position:absolute}.lk-pools i:first-child{background:radial-gradient(closest-side,#ffc46e38,#0000);top:10vh;left:-20vmax}.lk-pools i:nth-child(2){background:radial-gradient(closest-side,oklch(40% .15 20/.35),#0000);animation-duration:23s;animation-delay:-8s;top:30vh;right:-22vmax}@keyframes lk-pool{to{transform:translate(14vmax,-8vmax)scale(1.15)}}.lk-chandelier{pointer-events:none;will-change:transform;background:radial-gradient(closest-side,#ffe2a047,#ffc87814 55%,#0000);width:70vw;height:52vh;animation:6s ease-in-out infinite alternate lk-chandelier;position:absolute;top:-14vh;left:50%;translate:-50%}.lk-chandelier i{background-image:radial-gradient(2px 2px at 20% 40%,#fff,#0000),radial-gradient(1.5px 1.5px at 34% 62%,#ffe9b8,#0000),radial-gradient(2px 2px at 47% 30%,#fff,#0000),radial-gradient(1.5px 1.5px at 58% 70%,#ffe9b8,#0000),radial-gradient(2px 2px at 69% 44%,#fff,#0000),radial-gradient(1.5px 1.5px at 81% 58%,#ffe9b8,#0000),radial-gradient(1.5px 1.5px at 40% 82%,#fff,#0000);animation:1.9s ease-in-out infinite lk-twinkle;position:absolute;inset:20% 22% 30%}@keyframes lk-chandelier{to{opacity:.75;transform:scale(1.04)}}.lk-beams i{opacity:0;will-change:transform;transform-origin:50% 0;background:conic-gradient(from 180deg at 50% 0,#0000 168deg,#ffe6b40f 175deg,#fff0d221 180deg,#ffe6b40f 185deg,#0000 192deg);width:46vmax;height:140%;animation:1.2s .2s forwards lk-beam-on,14s ease-in-out .2s infinite alternate lk-beam;position:absolute;top:-20%}.lk-beams i:first-child{left:0;rotate:-16deg}.lk-beams i:nth-child(2){animation-delay:.4s,-6s;right:-4%;rotate:14deg}@keyframes lk-beam-on{to{opacity:1}}@keyframes lk-beam{0%{transform:rotate(-7deg)}to{transform:rotate(9deg)}}.lk-drapes i{z-index:1;will-change:transform;transform-origin:50% 0;background:linear-gradient(#00000059,#0000 20% 70%,#00000073),repeating-linear-gradient(90deg,oklch(20% .08 20) 0,oklch(34% .13 22) 1.1vw,oklch(22% .09 20) 2.2vw);width:6.5vw;min-width:54px;animation:8s ease-in-out infinite alternate lk-drape;position:absolute;top:0;bottom:0}.lk-drapes i:after{content:"";background:repeating-linear-gradient(90deg,#f3d488 0 3px,#8a6420 3px 6px);height:14px;position:absolute;top:0;left:0;right:0;box-shadow:0 4px 10px #00000080}.lk-drapes i:first-child{left:0;-webkit-mask-image:linear-gradient(90deg,#000 60%,#0000);mask-image:linear-gradient(90deg,#000 60%,#0000)}.lk-drapes i:nth-child(2){animation-delay:-4s;right:0;-webkit-mask-image:linear-gradient(270deg,#000 60%,#0000);mask-image:linear-gradient(270deg,#000 60%,#0000)}@keyframes lk-drape{to{transform:skew(.8deg)scaleX(1.03)}}.lk-twinkles i{background-image:radial-gradient(1.5px 1.5px at 12% 22%,#fff,#0000),radial-gradient(1.5px 1.5px at 31% 64%,#ffe9b8,#0000),radial-gradient(2px 2px at 58% 18%,#fff,#0000),radial-gradient(1.5px 1.5px at 77% 41%,#ffe9b8,#0000),radial-gradient(1.5px 1.5px at 88% 78%,#fff,#0000),radial-gradient(1.5px 1.5px at 44% 86%,#ffe9b8,#0000);animation:3.4s ease-in-out infinite lk-twinkle;position:absolute;inset:0}.lk-twinkles i+i{animation-delay:-1.7s;transform:translate(7%,11%)}@keyframes lk-twinkle{0%,to{opacity:.15}50%{opacity:.8}}.lk-lights,.lk-fx,.lk-guilloche{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.lk-guilloche{width:120%;height:120%;inset:-10%;-webkit-mask-image:radial-gradient(60% 55% at 50% 42%,#000 10%,#0000 70%);mask-image:radial-gradient(60% 55% at 50% 42%,#000 10%,#0000 70%)}.lk-fx{z-index:90;position:fixed}.lk-theme-sky{z-index:1;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.lk-festoon{top:calc(96px + env(safe-area-inset-top,0px));transition:top .7s var(--lk-ease-expo);z-index:2;pointer-events:none;filter:drop-shadow(0 3px 3px #00000080);height:40px;position:absolute;left:0;right:0;overflow:hidden}.lk-festoon svg{display:block}.lk-fes-thread{stroke:#f3d488b3;stroke-width:.8px}.lk-fes-string{fill:none;stroke:#2a1a12;stroke-width:1.4px}.lk-fes-string--web{stroke:#dcd2eb8c;stroke-width:1px}.lk-fes-fir{fill:none;stroke:#1d4a2c;stroke-width:7px;stroke-linecap:round}.lk-fes-needles{fill:none;stroke:#2f6b3f;stroke-width:9px;stroke-dasharray:1.2 2.4}.lk-fes-light{fill:#ffe3a0;animation:lk-fes-light 1.8s ease-in-out calc(var(--i) * -.6s) infinite}.lk-fes-light:nth-of-type(2n){fill:#ff6b5e}@keyframes lk-fes-light{50%{opacity:.25}}.lk-fes-glow{fill:#ffe08a;animation:2.4s steps(2,end) infinite lk-fes-flicker}@keyframes lk-fes-flicker{40%{fill:#ffb347}}.lk-fes-ribbon{fill:none;stroke:#f3d488;stroke-width:2px;stroke-dasharray:6 3}.lk-scene{z-index:1;pointer-events:none;position:absolute;inset:0;overflow:hidden}.lk-scene-ground{height:80px;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.lk-scene-ground svg{display:block}.lk-scene-side{aspect-ratio:220/280;filter:drop-shadow(0 8px 14px #0000008c);height:clamp(150px,30vh,280px);position:absolute;bottom:6px}.lk-scene-side--left{left:max(4px,.6vw)}.lk-scene-side--right{right:max(4px,.6vw)}.lk-scene-sun{top:calc(118px + env(safe-area-inset-top,0px));filter:drop-shadow(0 0 24px #ffc850b3);width:clamp(90px,13vh,140px);position:absolute;right:1.2vw}.lk-scene-rays{animation:40s linear infinite lk-spin}.lk-scene-waves{animation:4s linear infinite lk-scene-waves}@keyframes lk-scene-waves{to{transform:translate(-70px)}}.lk-scene-light{animation:lk-fes-light 1.6s ease-in-out calc(var(--i) * -.55s) infinite}.lk-scene-star{filter:drop-shadow(0 0 6px #ffd86b)}.lk-scene-flicker{filter:drop-shadow(0 0 6px #ffb347);animation:2.2s steps(3,end) infinite lk-scene-flicker}@keyframes lk-scene-flicker{30%{opacity:.75}60%{opacity:1}80%{opacity:.85}}@media (prefers-reduced-motion:reduce){.lk-fes-light,.lk-fes-glow,.lk-scene-rays,.lk-scene-waves,.lk-scene-light,.lk-scene-flicker{animation:none}}.lk-room[data-theme=christmas] .lk-pools i:first-child{background:radial-gradient(closest-side,oklch(45% .1 150/.35),#0000)}.lk-room[data-theme=christmas] .lk-pools i:nth-child(2){background:radial-gradient(closest-side,oklch(45% .17 25/.4),#0000)}.lk-room[data-theme=halloween] .lk-pools i:first-child{background:radial-gradient(closest-side,oklch(60% .17 55/.3),#0000)}.lk-room[data-theme=halloween] .lk-pools i:nth-child(2){background:radial-gradient(closest-side,oklch(40% .17 305/.45),#0000)}.lk-room[data-theme=easter] .lk-pools i:first-child{background:radial-gradient(closest-side,oklch(75% .09 350/.22),#0000)}.lk-room[data-theme=easter] .lk-pools i:nth-child(2){background:radial-gradient(closest-side,oklch(70% .1 150/.22),#0000)}.lk-room[data-theme=august] .lk-pools i:first-child{background:radial-gradient(closest-side,oklch(72% .15 60/.3),#0000)}.lk-room[data-theme=august] .lk-pools i:nth-child(2){background:radial-gradient(closest-side,oklch(60% .1 195/.3),#0000)}.lk-head{z-index:4;height:60px;padding:0 max(20px, env(safe-area-inset-right,0px)) 0 max(20px, env(safe-area-inset-left,0px));border-bottom:1px solid var(--lk-gold-line);background:linear-gradient(#2a140a,#1a0c06);grid-template-columns:1fr auto 1fr;align-items:center;display:grid;position:relative;box-shadow:0 1px #0009}.lk-head h2{text-align:center;font:700 18px var(--lk-display-font);color:var(--lk-gold-hi);margin:0}.lk-head h2 small{font:500 12px var(--font-sans,inherit);color:var(--lk-text-muted);margin-top:1px;display:block}.lk-head>.lk-btn{justify-self:start}.lk-head .lk-end{justify-content:flex-end;display:flex}.lk-head .lk-sound{width:36px;height:36px;color:var(--lk-gold);background:0 0;border:0;border-radius:50%;place-items:center;padding:0;font-size:20px;transition:color .2s,filter .2s,background-color .2s;display:grid;position:relative}.lk-head .lk-sound .fl-icon{font-size:21px;transition:filter .2s}.lk-head .lk-sound:hover,.lk-head .lk-sound:focus-visible{color:#fff3c4;background:radial-gradient(circle,#ffd36e2e,#0000 70%);outline:none}.lk-head .lk-sound:hover .fl-icon,.lk-head .lk-sound:focus-visible .fl-icon{filter:drop-shadow(0 0 4px #ffe296)drop-shadow(0 0 12px #ffbe50cc)}.lk-head .lk-sound:after{content:attr(data-tip);z-index:10;box-shadow:inset 0 0 0 1px var(--lk-gold-line), 0 6px 16px #0000008c;color:var(--lk-gold-hi);white-space:nowrap;pointer-events:none;opacity:0;background:#1e0d06;border-radius:8px;padding:5px 10px;font-size:12px;font-weight:600;transition:opacity .2s,translate .2s;position:absolute;top:calc(100% + 8px);right:0;translate:0 -4px}.lk-head .lk-sound:hover:after,.lk-head .lk-sound:focus-visible:after{opacity:1;translate:0}.lk-ticker{top:calc(60px + env(safe-area-inset-top,0px));z-index:3;border-bottom:1px solid var(--lk-gold-line);background:linear-gradient(#1a0c06,#2a140a 50%,#1a0c06);height:38px;position:absolute;left:0;right:0;overflow:hidden}.lk-ticker:before,.lk-ticker:after{content:"";background:radial-gradient(circle,#fff 0 1.2px,#ffe3a0 2px,#ffc86e59 2.8px,#0000 3.4px) 0/42px 6px repeat-x,radial-gradient(circle,#6b5226 0 1.6px,#0000 2.2px) 0/14px 6px repeat-x;height:6px;animation:.75s steps(3,end) infinite lk-ticker-bulbs;position:absolute;left:0;right:0}.lk-ticker:before{top:1px}.lk-ticker:after{animation-direction:reverse;bottom:1px}@keyframes lk-ticker-bulbs{to{background-position:42px,0}}.lk-ticker-track{will-change:transform;align-items:center;width:max-content;animation:48s linear infinite lk-ticker;display:flex;position:absolute;top:0;bottom:0}.lk-ticker-track>div{align-items:center;display:flex}.lk-ticker span{font:600 13.5px var(--lk-display-font);letter-spacing:.16em;text-transform:uppercase;color:var(--lk-gold-hi);text-shadow:0 0 8px #ffc86e8c;white-space:nowrap}.lk-ticker b{color:var(--lk-gold);margin:0 22px;font-size:10px}@keyframes lk-ticker{to{transform:translate(-50%)}}.lk-view{inset:calc(98px + env(safe-area-inset-top,0px)) 0 0;z-index:2;transition:top .7s var(--lk-ease-expo);position:absolute;overflow:hidden}.lk-ticker{transition:translate .7s var(--lk-ease-expo), opacity .5s ease}.lk-room.is-private .lk-ticker{opacity:0;pointer-events:none;translate:0 -100%}.lk-room.is-private .lk-view{top:calc(60px + env(safe-area-inset-top,0px))}.lk-btn{isolation:isolate;white-space:nowrap;height:32px;transition:background-color .18s ease, box-shadow .18s ease, transform .12s var(--lk-ease-out), filter .18s ease;border:0;border-radius:.6rem;justify-content:center;align-items:center;gap:7px;padding:0 12px 0 10px;font-size:13px;font-weight:600;display:inline-flex;position:relative;overflow:hidden}.lk-btn .fl-icon{font-size:16px}.lk-btn:active{transform:translateY(1px)}.lk-btn:focus-visible{outline:2px solid var(--lk-gold);outline-offset:2px}.lk-btn--primary{color:#2a1a05;background:linear-gradient(#f6dd96,#d4a94e 55%,#a77c2c);box-shadow:inset 0 1px #ffffff8c,inset 0 -1px #5a3c0a80,0 8px 20px -8px #e2bd6399}.lk-btn--primary:hover{filter:brightness(1.06)}.lk-btn--primary:after{content:"";z-index:-1;background:linear-gradient(105deg,#0000 35%,#ffffff59 50%,#0000 65%);position:absolute;inset:0;translate:-120%}.lk-btn--primary:not(:disabled):hover:after{transition:translate .8s var(--lk-ease-out);translate:120%}.lk-btn--outline{color:var(--lk-text-hi);box-shadow:inset 0 0 0 1px var(--lk-gold-line);background:#ffffff0a}.lk-btn--outline:hover{background:#e2bd631f}.lk-btn--outline .fl-icon{color:var(--lk-gold)}.lk-btn--lg{border-radius:.75rem;height:44px;padding:0 20px 0 16px;font-size:15px}.lk-btn--lg .fl-icon{font-size:18px}.lk-btn:disabled{cursor:default;filter:grayscale();color:var(--lk-text-dim);background:#1a120c;box-shadow:inset 0 0 0 1px #ffffff14}.lk-bulbs{inset:var(--lk-ring-inset,8px);z-index:3;border-radius:var(--lk-ring-radius,1rem);pointer-events:none;position:absolute}.lk-bulbs:before,.lk-bulbs:after{content:"";border-radius:inherit;border:5px dotted #5a4320;position:absolute;inset:0}.lk-bulbs:after{filter:drop-shadow(0 0 3px #ffc86ef2)drop-shadow(0 0 8px #ffaa3c80);border-color:#ffe3a0;animation:1.2s steps(3,end) infinite lk-bulb-chase;-webkit-mask:repeating-linear-gradient(135deg,#000 0 14px,#0000 14px 42px) 0 0/200% 200%;mask:repeating-linear-gradient(135deg,#000 0 14px,#0000 14px 42px) 0 0/200% 200%}@keyframes lk-bulb-chase{to{-webkit-mask-position:59.4px 0;mask-position:59.4px 0}}@keyframes lk-bulb-flash{50%{opacity:.35;border-color:#fff8e6}}.lk-room.is-celebrating .lk-bulbs:after{animation-duration:.15s}.lk-room.is-jackpot .lk-bulbs:after{animation:.14s step-end infinite lk-bulb-flash;-webkit-mask:none;mask:none}.lk-chips{align-items:center;gap:10px;min-width:0;display:flex}.lk-chips>span{min-width:0;color:var(--lk-gold-hi);text-overflow:ellipsis;white-space:nowrap;margin-left:4px;font-size:13px;font-weight:600;overflow:hidden}.lk-chip{background:radial-gradient(circle, var(--lk-chip) 0 56%, #fbf3df99 57% 59%, transparent 60%), repeating-conic-gradient(from 7deg, #fbf3df 0 16deg, var(--lk-chip) 16deg 45deg);width:40px;height:40px;transition:translate .2s var(--lk-ease-out), box-shadow .2s ease;border:0;border-radius:50%;place-items:center;padding:0;display:grid;box-shadow:inset 0 0 0 1px #00000059,0 4px 8px #00000080}.lk-chip img{width:18px}.lk-chip:not(:disabled):hover{translate:0 -2px}.lk-chip.is-chosen{box-shadow:inset 0 0 0 1px #00000059, 0 0 0 2px #1e0d06, 0 0 0 4px var(--lk-gold), 0 0 18px #e2bd638c;translate:0 -3px}.lk-chip:disabled{cursor:default;filter:saturate(.6)}.lk-chip:disabled:not(.is-chosen){opacity:.35}.lk-chips-rack{gap:8px;min-width:0;display:grid}.lk-chip-count{white-space:nowrap;color:var(--lk-text);align-items:center;gap:10px;font-size:13px;font-weight:600;display:flex}.lk-chip:focus-visible{outline:2px solid var(--lk-gold-hi);outline-offset:4px}.lk-rl-pips{gap:4px;display:flex}.lk-rl-pips i{background:var(--lk-gold);border-radius:50%;width:10px;height:10px;transition:background-color .2s,box-shadow .2s;box-shadow:0 0 6px #e2bd6399}.lk-rl-pips i.is-used{background:#ffffff1a;box-shadow:inset 0 0 0 1px #e2bd6359}.lk-chips-strip{--lk-fade-l:0px;--lk-fade-r:0px;overscroll-behavior-x:contain;scroll-snap-type:x proximity;scrollbar-width:none;max-width:260px;-webkit-mask:linear-gradient(90deg, transparent, #000 var(--lk-fade-l), #000 calc(100% - var(--lk-fade-r)), transparent);mask:linear-gradient(90deg, transparent, #000 var(--lk-fade-l), #000 calc(100% - var(--lk-fade-r)), transparent);gap:10px;margin:-10px;padding:10px;display:flex;overflow-x:auto}.lk-chips-strip::-webkit-scrollbar{display:none}.lk-chips-strip.has-left{--lk-fade-l:34px}.lk-chips-strip.has-right{--lk-fade-r:34px}.lk-chips-strip .lk-chip{scroll-snap-align:center;flex:none}.lk-lobby{max-width:1180px;height:100%;padding:22px max(28px, env(safe-area-inset-right,0px)) 24px max(28px, env(safe-area-inset-left,0px));flex-direction:column;margin:0 auto;display:flex}.lk-grid{flex:1;grid-template-rows:repeat(2,minmax(0,1fr));grid-template-columns:repeat(12,1fr);gap:14px;min-height:0;display:grid}.lk-table{isolation:isolate;text-align:left;box-shadow:inset 0 0 0 1px var(--lk-gold-line), inset 0 0 0 4px #1e0d06, inset 0 0 0 5px #e2bd632e, 0 24px 50px -24px #000000e6;opacity:0;transition:box-shadow .2s ease, transform .2s var(--lk-ease-out);background:linear-gradient(#3a1a0b,#1e0d06);border:0;border-radius:1.35rem;padding:0;display:block;position:relative;overflow:hidden}.lk-room.is-ready .lk-table{animation:lk-table-in .6s var(--lk-ease-expo) forwards;animation-delay:calc(var(--i) * 60ms)}@keyframes lk-table-in{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.lk-table:hover{transform:translateY(-3px);box-shadow:inset 0 0 0 1px #e2bd63,inset 0 0 0 4px #1e0d06,inset 0 0 0 5px #e2bd6359,0 30px 60px -22px #ffbe5a66}.lk-table:focus-visible{outline:2px solid var(--lk-gold);outline-offset:3px}.lk-table>.lk-bulbs{--lk-ring-inset:3px;--lk-ring-radius:1.2rem}.lk-table>.lk-bulbs:after{opacity:.65;animation-duration:1.8s}.lk-table:hover>.lk-bulbs:after{opacity:1;animation-duration:.36s}.lk-table-body{grid-template-rows:minmax(0,1fr) auto;display:grid;position:absolute;inset:0}.lk-art{background:conic-gradient(from 180deg at 50% -10%, transparent 160deg, #ffecc814 172deg, #ffecc824 180deg, #ffecc814 188deg, transparent 200deg), var(--lk-felt);min-height:0;box-shadow:inset 0 0 0 1px var(--lk-gold-line), inset 0 0 40px #0000008c;border-radius:calc(1.35rem - 6px);place-items:center;margin:6px 6px 0;display:grid;position:relative;overflow:hidden}.lk-boost{z-index:4;pointer-events:none;position:absolute}.lk-table>.lk-boost,.lk-machine>.lk-boost{animation:lk-sash-in .9s var(--lk-ease-expo) .2s both}@keyframes lk-sash-in{0%{opacity:0;translate:110px -110px}40%{opacity:1}to{translate:0}}.lk-table>.lk-boost,.lk-machine>.lk-boost{background:linear-gradient(#fff3c4,#d4a94e 60%,#8a6420) top/100% 4px no-repeat,linear-gradient(#8a6420,#d4a94e 40%,#fff3c4) bottom/100% 4px no-repeat,repeating-linear-gradient(90deg,#0000001f 0 2px,#0000 2px 6px),radial-gradient(120% 140%,#c22a33,#7d1c24 55%,#3a080b);justify-content:center;align-items:center;gap:8px;width:270px;height:48px;display:flex;top:54px;right:-58px;overflow:hidden;rotate:45deg;box-shadow:0 0 0 1px #6b4a14,0 8px 18px #0009,0 0 26px #ffbe5a66}.lk-boost:before{content:"";filter:drop-shadow(0 0 2px #ffc86ef2);background:radial-gradient(circle,#fff8e6 0 1.4px,#ffd889 2px,#0000 3px) 0 0/12px 7px repeat-x,radial-gradient(circle,#fff8e6 0 1.4px,#ffd889 2px,#0000 3px) 6px 100%/12px 7px repeat-x;position:absolute;inset:6px 0}.lk-room.is-ready .lk-boost:before{animation:.5s step-end infinite lk-sash-bulbs}@keyframes lk-sash-bulbs{50%{background-position:6px 0,0 100%}}.lk-boost:after{content:"";background:linear-gradient(105deg,#0000 38%,#fff0c873 50%,#0000 62%);position:absolute;inset:0;translate:-120%}.lk-room.is-ready .lk-boost:after{animation:3.2s ease-in-out 1s infinite lk-sash-shine}@keyframes lk-sash-shine{0%{translate:-120%}45%,to{translate:120%}}.lk-boost small,.lk-boost b{z-index:1;color:#f8e3a6;text-shadow:0 1px #3a080b,0 0 8px #ffc86ebf;position:relative}.lk-boost small{font:italic 600 13px var(--lk-display-font);white-space:nowrap;align-items:center;gap:8px;display:inline-flex}.lk-boost small:after{content:"◆";color:var(--lk-gold);font-size:8px}.lk-boost b{font:italic 700 30px/1 var(--lk-display-font);color:#fff1c4}.lk-room.is-ready .lk-boost b{animation:.9s ease-in-out infinite alternate lk-sash-glow}@keyframes lk-sash-glow{to{text-shadow:0 1px #3a080b,0 0 12px #ffd682,0 0 26px #ffaa3ccc}}.lk-meta{grid-template-columns:1fr 16px;align-items:center;gap:12px;min-height:98px;padding:13px 18px 15px;display:grid}.lk-meta b{font:700 19px var(--lk-display-font);color:var(--lk-gold-hi);display:block}.lk-meta small{color:var(--lk-text-muted);margin-top:2px;font-size:13px;display:block}.lk-meta .fl-icon{color:var(--lk-gold);transition:transform .2s var(--lk-ease-out)}.lk-table:hover .lk-meta .fl-icon{transform:translate(2px)}.lk-grid>.lk-table:first-child{grid-area:1/1/span 2/span 6}.lk-grid>.lk-table:nth-child(2){grid-area:1/7/auto/span 3}.lk-grid>.lk-table:nth-child(3){grid-area:1/10/auto/span 3}.lk-grid>.lk-table:nth-child(4){grid-area:2/7/auto/span 3}.lk-grid>.lk-table:nth-child(5){grid-area:2/10/auto/span 3}.lk-mini-wheel{width:auto;height:calc(var(--lk-art-h,250) * .8px);aspect-ratio:1;filter:drop-shadow(0 18px 24px #00000080)}.lk-mini-wheel .lk-lamp{animation:1.8s step-end infinite lk-lamp-idle;animation-delay:calc(var(--i) * -.9s)}.lk-table:hover .lk-mini-wheel .lk-lamp{animation:.7s linear infinite lk-lamp-chase;animation-delay:calc(var(--i) * -.0259s)}.lk-mini-slot{zoom:.4;filter:drop-shadow(0 20px 26px #0000008c);margin-right:46px}.lk-mini-slot .lk-reel ul{transition:filter .4s}@media (height<=720px){.lk-slot,.lk-scratch{zoom:.8}}.lk-table:hover .lk-mini-slot .lk-reel ul{filter:blur(1.4px)}.lk-mini-roulette{width:auto;height:calc(var(--lk-art-h,250) * .8px);aspect-ratio:1;filter:drop-shadow(0 14px 18px #00000080)}.lk-mini-pachinko{height:calc(var(--lk-art-h,250) * .8px);filter:drop-shadow(0 14px 18px #00000073)}.lk-mini-pachinko .lk-ball{animation:2.6s cubic-bezier(.45,0,.9,.6) infinite lk-pachi-fall}.lk-mini-takeoff,.lk-mini-breakaway{height:calc(var(--lk-art-h,250) * .72px);filter:drop-shadow(0 14px 18px #00000080)}.lk-mini-breakaway{height:calc(var(--lk-art-h,250) * .66px);max-width:94%}.lk-mini-trail{filter:drop-shadow(0 0 4px #ffcf5a)}.lk-mini-glint{stroke-dasharray:10 90}.lk-mini-rays{transform-origin:0 190px}.lk-mini-plane{animation:1.6s ease-in-out infinite alternate lk-mini-bob}.lk-mini-nose{filter:drop-shadow(0 0 3px #ff3b3b)}@keyframes lk-mini-bob{to{translate:0 -3px}}.lk-mini-football{filter:drop-shadow(0 0 5px #ffcf5a)}.lk-mini-fan-arms{opacity:0;transition:opacity .2s}.lk-table:hover .lk-mini-fan{animation:lk-mini-cheer .36s ease-in-out var(--d) infinite alternate}.lk-table:hover .lk-mini-fan-arms{opacity:1}@keyframes lk-mini-cheer{to{transform:translateY(-3px)}}.lk-mini-multiplier{font:700 27px var(--lk-display-font);font-variant-numeric:tabular-nums;fill:#f6e2a6}.lk-mini-pachinko .lk-ball--gold{filter:drop-shadow(0 0 5px #ffcf5a)}.lk-mini-pachinko .lk-ball-trail{animation-delay:calc(var(--k) * 32ms)}.lk-mini-storm{place-items:center;display:grid;position:relative}.lk-mini-storm>*,.lk-mini-storm .lk-mini-roulette{grid-area:1/1}.lk-mini-roulette .lk-rl-struck{filter:none}.lk-mini-bolts{z-index:1;width:auto;height:calc(var(--lk-art-h,250) * .8px);aspect-ratio:1;pointer-events:none;position:relative;overflow:visible}.lk-mini-bolts polyline{fill:none;stroke:#fff6d8;stroke-width:3.2px;stroke-linejoin:round;stroke-linecap:round;filter:drop-shadow(0 0 3px #ffd36e)drop-shadow(0 0 8px #bfe0ff);opacity:0;animation:lk-mini-strike 2.4s linear var(--d) infinite}@keyframes lk-mini-strike{0%{opacity:0}2%{opacity:1}5%{opacity:.25}8%{opacity:1}24%{opacity:.9}32%,to{opacity:0}}.lk-mini-title{fill:#ffe14d;stroke-width:4px;paint-order:stroke fill;stroke-linejoin:round;font:900 15px Arial Black,Helvetica Neue,Arial,sans-serif}.lk-mini-title--double{stroke:#1d3fa0}.lk-mini-title--forever{stroke:#0f4c9c;font-size:14px}.lk-mini-number{fill:#1d3fa0;font:900 18px Arial Black,Helvetica Neue,Arial,sans-serif}.lk-mini-inf{fill:#0f4c9c;font:900 20px Arial Black,Helvetica Neue,Arial,sans-serif}@keyframes lk-pachi-fall{0%{opacity:0;transform:translate(0)}8%{opacity:1}30%{transform:translate(-12px,52px)}52%{transform:translate(10px,98px)}74%{transform:translate(-6px,146px)}92%{opacity:1;transform:translate(4px,180px)}to{opacity:0;transform:translate(4px,184px)}}.lk-mini-scratch{height:calc(var(--lk-art-h,250) * .8px);filter:drop-shadow(0 14px 18px #00000073);transition:rotate .5s var(--lk-ease-expo);rotate:-6deg}.lk-table:hover .lk-mini-scratch{rotate:-2deg}.lk-mini-scratch .lk-shine{animation:3.6s ease-in-out infinite lk-foil-shine}@keyframes lk-foil-shine{0%,40%{transform:translate(-160px)}to{transform:translate(260px)}}@keyframes lk-spin{to{rotate:360deg}}.lk-stage{max-width:1280px;height:100%;padding:16px max(28px, env(safe-area-inset-right,0px)) 22px max(28px, env(safe-area-inset-left,0px));grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr);gap:16px;margin:0 auto;display:grid}.lk-machine{background:var(--lk-felt);box-shadow:inset 0 0 0 1px var(--lk-gold-line), inset 0 0 0 7px #2a140a, inset 0 0 0 8px #e2bd638c, inset 0 0 90px #0000008c, 0 30px 60px -30px #000000e6;border-radius:1.35rem;place-items:center;padding:28px 24px;display:grid;position:relative;overflow:hidden;container-type:size}.lk-machine:before{content:"";pointer-events:none;background:conic-gradient(from 180deg at 50% 0,#0000 158deg,#ffecc80f 170deg,#ffecc81f 180deg,#ffecc80f 190deg,#0000 202deg);width:120%;height:120%;animation:9s ease-in-out infinite alternate lk-spot-sway;position:absolute;top:-10%;left:50%;translate:-50%}@keyframes lk-spot-sway{0%{transform:rotate(-5deg)}to{transform:rotate(5deg)}}.lk-machine>.lk-backdrop{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;-webkit-mask-image:radial-gradient(55% 55%,#000 30%,#0000 80%);mask-image:radial-gradient(55% 55%,#000 30%,#0000 80%)}.lk-machine>.lk-bulbs{--lk-ring-inset:14px}.lk-machine[data-state=spinning]>.lk-bulbs:after{animation-duration:.27s}.lk-machine[data-state=won]>.lk-bulbs:after{animation:.22s step-end infinite lk-bulb-flash;-webkit-mask:none;mask:none}.lk-machine>.lk-game{animation:lk-machine-in .8s var(--lk-ease-expo) both;position:relative}@keyframes lk-machine-in{0%{opacity:0;transform:translateY(24px)scale(.97)}}.lk-controls{flex-direction:column;align-items:center;margin-top:30px;display:flex}.lk-hint{color:var(--lk-text-muted);text-align:center;margin-top:8px;font-size:12px}.lk-help{z-index:6;position:absolute;top:26px;left:26px}.lk-help .lk-round:after{content:none}.lk-help .lk-round.is-open{color:#fff3c4;box-shadow:inset 0 0 0 1.5px var(--lk-gold-hi), 0 0 0 3px #e2bd6340, 0 0 22px #ffd36ebf, 0 4px 10px #00000080}.lk-rules{width:min(340px,100cqw - 60px);box-shadow:inset 0 0 0 1px var(--lk-gold-line), inset 0 0 0 4px #1e0d06, inset 0 0 0 5px #e2bd6326, 0 16px 36px #000000a6;animation:lk-rules-in .25s var(--lk-ease-out) both;background:#1e0d06;border-radius:12px;padding:12px 16px 14px;position:absolute;top:calc(100% + 10px);left:0}.lk-rules h4{font:700 17px var(--lk-display-font);color:var(--lk-gold-hi);margin:0 0 6px}.lk-rules p{color:var(--lk-text);text-wrap:pretty;margin:0;font-size:13px;line-height:1.55}@keyframes lk-rules-in{0%{opacity:0;translate:0 -6px}}.lk-room.is-private .lk-machine>.lk-bulbs{display:none}@keyframes lk-lamp-idle{0%{fill:var(--lk-lamp-on)}50%{fill:var(--lk-lamp-off)}}@keyframes lk-lamp-chase{0%,60%{fill:var(--lk-lamp-off)}72%{fill:#fff}86%{fill:var(--lk-lamp-on)}to{fill:var(--lk-lamp-off)}}@keyframes lk-lamp-flash{0%{fill:var(--lk-lamp-on)}50%{fill:var(--lk-lamp-alt)}}@keyframes lk-sym-win{0%{transform:scale(1)}to{transform:scale(1.14)rotate(-4deg)}}@keyframes lk-fade-in{0%{opacity:0}}.lk-win{z-index:80;pointer-events:none;color:#fff;background:radial-gradient(circle,#3c1e0a99,#0c0603e0 70%);place-items:center;animation:.25s both lk-fade-in;display:grid;position:fixed;inset:0;overflow:hidden}.lk-win.is-leaving{animation:.3s forwards lk-fade-out}@keyframes lk-fade-out{to{opacity:0}}.lk-win-flash{background:radial-gradient(circle at 50% 48%,#fff6dcf2,#ffc86e73 35%,#0000 70%);animation:.6s ease-out forwards lk-flash;position:absolute;inset:0}@keyframes lk-flash{0%{opacity:1}to{opacity:0}}.lk-rays{pointer-events:none;width:220vmax;height:220vmax;position:fixed;top:50%;left:50%;translate:-50% -50%;-webkit-mask-image:radial-gradient(circle,#000 0 8%,#00000080 20%,#0000 40%);mask-image:radial-gradient(circle,#000 0 8%,#00000080 20%,#0000 40%)}.lk-rays i{background:repeating-conic-gradient(#f3d4883d 0 6deg, #fff4d61a 6deg 15deg, transparent 15deg 26deg);animation:10s linear infinite lk-spin;position:absolute;inset:0}.lk-rays i+i{background:repeating-conic-gradient(#ffe6aa1f 0 2deg, transparent 2deg 11deg);animation-duration:14s;animation-direction:reverse}.lk-searchlights{pointer-events:none;position:absolute;inset:0}.lk-searchlights i{transform-origin:50% 100%;mix-blend-mode:screen;background:conic-gradient(from -8deg at 50% 100%,#ffecbe52,#ffecbe0d 8deg,#0000 9deg 351deg,#ffecbe0d 352deg);width:70vmax;height:140vmax;animation:1.6s ease-in-out infinite alternate lk-sweep;position:absolute;bottom:-10%;translate:-50%}.lk-searchlights i:first-child{animation-delay:-.4s;left:10%}.lk-searchlights i:nth-child(2){animation-duration:1.2s;left:50%}.lk-searchlights i:nth-child(3){animation-direction:alternate-reverse;animation-delay:-1s;left:90%}@keyframes lk-sweep{0%{transform:rotate(-38deg)}to{transform:rotate(38deg)}}.lk-win.is-jackpot{animation:.25s both lk-fade-in,.45s ease-in-out .3s 6 alternate lk-jackpot-pulse}@keyframes lk-jackpot-pulse{to{background-color:#78460a59}}.lk-win-text{text-align:center;position:relative}.lk-win-text h2{font:italic 700 clamp(60px, 9vw, 96px) var(--lk-display-font);white-space:nowrap;color:#fbe7b0;text-shadow:0 2px #6b4a14,0 0 24px #ffc86eb3,0 0 60px #ffaa3c73;margin:0;line-height:1}.lk-win-text h2 span{animation:.7s cubic-bezier(.2,.9,.3,1.25) both lk-word-in;animation-delay:calc(var(--i) * 35ms);display:inline-block}.lk-win.is-jackpot h2{animation:.5s ease-in-out 1.1s infinite alternate lk-jackpot-glow}.lk-win.is-jackpot h2 span{animation:.36s cubic-bezier(.3,1.3,.5,1) both lk-letter-drop;animation-delay:calc(.26s + var(--i) * .11s)}@keyframes lk-word-in{0%{opacity:0;filter:blur(6px);transform:translateY(30px)scale(.6)}}@keyframes lk-letter-drop{0%{opacity:0;transform:translateY(-70vh)rotate(-12deg)}}@keyframes lk-jackpot-glow{to{text-shadow:0 2px #6b4a14,0 0 34px #ffd682f2,0 0 90px #ffaa3cb3}}.lk-win-text p{color:#f0dfb4;opacity:0;animation:lk-rise .5s var(--lk-ease-expo) .35s forwards;margin:14px 0 0;font-size:17px;font-weight:600}.lk-win.is-jackpot .lk-win-text p{animation-delay:1.2s}.lk-win-text:after{content:"";width:0;height:4px;animation:lk-underline .8s var(--lk-ease-expo) .3s forwards;background:linear-gradient(90deg,#0000,#f3d488,#0000);border-radius:4px;margin:18px auto 0;display:block;box-shadow:0 0 18px #ffc86ecc}.lk-win.is-jackpot .lk-win-text:after{animation-delay:1.1s}@keyframes lk-underline{to{width:240px}}@keyframes lk-rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.lk-room.is-celebrating:after{content:"";z-index:4;pointer-events:none;animation:.5s ease-in-out 4 alternate lk-edge-glow;position:absolute;inset:0;box-shadow:inset 0 0 120px #ffc86e8c}@keyframes lk-edge-glow{0%{opacity:.2}to{opacity:1}}.lk-room.is-jackpot .lk-chandelier{opacity:1;animation:.35s ease-in-out infinite alternate lk-chandelier-blaze}@keyframes lk-chandelier-blaze{0%{filter:brightness(1.4);transform:scale(1.1)}to{filter:brightness(2);transform:scale(1.22)}}.lk-room.is-jackpot .lk-ticker:before,.lk-room.is-jackpot .lk-ticker:after{animation-duration:.12s}.lk-cert-layer{z-index:70;padding:24px 24px calc(24px + env(safe-area-inset-bottom,0px));-webkit-backdrop-filter:blur(8px)saturate(1.2);backdrop-filter:blur(8px)saturate(1.2);background:#0e07039e;place-items:safe center center;animation:.35s both lk-fade-in;display:grid;position:fixed;inset:0;overflow-y:auto}.lk-cert{--lk-paper:#f7efdc;--lk-paper-raised:#fbf6ea;--lk-ink-hi:#2a1a0a;--lk-ink:#3d2b14;--lk-ink-muted:#6e5a3a;--lk-ink-dim:#857050;--lk-rule:#8a642029;--lk-edge:#8a642066;width:min(600px,100%);color:var(--lk-ink);background:linear-gradient(#faf3e3,#efe3c6);border-radius:1.35rem;padding:26px 28px 24px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #8a642059,inset 0 0 0 7px #faf3e3,inset 0 0 0 8px #8a642073,0 40px 90px -30px #000000d9;-webkit-mask:radial-gradient(6px at 11px 0,#0000 6px,#000 6.5px) 0 0/22px 14px repeat-x,linear-gradient(#000 0 0) 0 14px/100% calc(100% - 14px) no-repeat;mask:radial-gradient(6px at 11px 0,#0000 6px,#000 6.5px) 0 0/22px 14px repeat-x,linear-gradient(#000 0 0) 0 14px/100% calc(100% - 14px) no-repeat}.lk-cert.is-printing{animation:lk-cert-print 1.5s var(--lk-ease-expo) both}@keyframes lk-cert-print{0%{clip-path:inset(0 0 100%);transform:translateY(-40px)scale(.92)}55%{clip-path:inset(0);transform:translateY(0)scale(.98)}to{clip-path:inset(0);transform:none}}.lk-gift-box,.lk-gift-lid{z-index:2;pointer-events:none;position:absolute;left:50%}.lk-gift-box{transform-origin:50% 100%;background:linear-gradient(90deg,#0000 105px,#f3d488 105px 135px,#0000 135px),linear-gradient(#d63040,#9e1b22);border-radius:6px;width:240px;height:150px;margin-left:-120px;bottom:9vh;box-shadow:inset 0 -14px 24px #00000040,0 30px 50px -20px #000c}.lk-gift-lid{z-index:3;transform-origin:50% calc(100% + 142px);background:linear-gradient(90deg,#0000 115px,#f3d488 115px 149px,#0000 149px),linear-gradient(#e8424f,#b32432);border-radius:6px;width:264px;height:40px;margin-left:-132px;bottom:calc(9vh + 142px);box-shadow:0 8px 14px -6px #0009}.lk-gift-lid:before,.lk-gift-lid:after{content:"";border:8px solid #f3d488;border-radius:50%/60% 60% 40% 40%;width:52px;height:34px;margin-bottom:-6px;position:absolute;bottom:100%;left:50%}.lk-gift-lid:before{margin-left:-54px;rotate:-18deg}.lk-gift-lid:after{margin-left:2px;rotate:18deg}:is(.lk-gift-box,.lk-gift-lid).is-wrapped{animation:lk-gift-drop .6s var(--lk-ease-out) both, lk-gift-wiggle .9s .7s ease-in-out infinite}.lk-gift-lid.is-open{animation:lk-gift-lid .8s var(--lk-ease-out) forwards}.lk-gift-box.is-open{animation:lk-gift-away .6s 1.1s var(--lk-ease-in) forwards}@keyframes lk-gift-drop{0%{translate:0 -70vh}70%{translate:0 8px}}@keyframes lk-gift-wiggle{0%,to{rotate:0deg}20%{rotate:-4deg}40%{rotate:3deg}60%{rotate:-2deg}80%{rotate:1deg}}@keyframes lk-gift-lid{to{opacity:0;translate:-90px -46vh;rotate:-40deg}}@keyframes lk-gift-away{to{opacity:0;translate:0 40vh}}.lk-cert.is-rising{z-index:1;animation:1.4s ease-in-out both lk-cert-rise}@keyframes lk-cert-rise{0%{opacity:0;transform:translateY(calc(41vh - 120px))scale(.16)}10%{opacity:1}35%{transform:translateY(calc(41vh - 250px))scale(.3)}70%{transform:translateY(-4vh)scale(.96)}to{transform:none}}.lk-cert.is-stamped{animation:.38s linear lk-cert-hit}@keyframes lk-cert-hit{20%{transform:translate(-3px,2px)rotate(-.4deg)}45%{transform:translate(3px,-1px)rotate(.3deg)}70%{transform:translate(-1px,1px)}}.lk-cert>svg{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.lk-cert-head{align-items:center;gap:8px;display:flex;position:relative}.lk-cert-head img{width:20px}.lk-cert-head .lk-cert-logo{width:20px;height:20px;color:var(--lk-gold-lo)}.lk-badge{height:24px;color:var(--lk-ink);background:#efe3c6;border-radius:7px;align-items:center;gap:6px;padding:0 9px 0 7px;font-size:12px;font-weight:600;display:inline-flex;box-shadow:inset 0 0 0 1px #8a642040}.lk-badge .fl-icon{font-size:13px}.lk-badge.is-success{color:#6b4a14;animation:lk-value-set .6s var(--lk-ease-expo);background:#e2bd6333;box-shadow:inset 0 0 0 1px #8a642073}.lk-badge--from{color:var(--lk-ink-muted);margin-left:auto}.lk-cert-product{align-items:center;gap:14px;margin:18px 0 4px;padding-right:100px;display:flex;position:relative}.lk-cert-product img{filter:drop-shadow(0 6px 10px #141e3233);width:48px;height:48px}.lk-cert-product h2{font:700 26px var(--lk-display-font);color:var(--lk-ink-hi);margin:0}.lk-cert-product p{color:var(--lk-ink-muted);margin:2px 0 0}.lk-jackpot-tag{vertical-align:5px;color:#2a1a05;font:700 11px var(--font-sans,inherit);letter-spacing:.02em;background:linear-gradient(90deg,#8a6420,#e2bd63,#8a6420);border-radius:6px;margin-left:8px;padding:2px 8px;display:inline-block}.lk-info{background:var(--lk-paper-raised);border-radius:.5rem;margin-top:16px;position:relative;box-shadow:inset 0 0 0 1px #8a642040}.lk-info-row{border-top:1px solid var(--lk-rule);opacity:0;grid-template-columns:140px 1fr;align-items:baseline;gap:12px;padding:10px 14px;display:grid;transform:translateY(6px)}.lk-info-row:first-child{border-top:0}.lk-cert.is-revealed .lk-info-row{animation:lk-rise .5s var(--lk-ease-expo) forwards;animation-delay:calc(80ms + var(--i) * 70ms)}.lk-info-row span{color:var(--lk-ink-muted);font-size:12.5px}.lk-info-row b{min-width:0;color:var(--lk-ink-hi);overflow-wrap:anywhere;font-weight:500}.lk-info-row b.is-identifier{font:500 12.5px var(--lk-mono);letter-spacing:-.01em}.lk-info-row b.is-pending{color:var(--lk-ink-dim);font-style:italic;font-weight:400}.lk-info-row b.is-forever{color:#6b4a14;font-weight:600}.lk-seal{opacity:0;width:92px;height:92px;position:absolute;top:56px;right:24px}.lk-cert.is-stamped .lk-seal,.lk-cert.is-issued .lk-seal{animation:lk-seal-in .5s var(--lk-ease-expo) forwards}@keyframes lk-seal-in{0%{opacity:0;transform:scale(2.6)rotate(-30deg)}to{opacity:1;transform:rotate(-12deg)}}.lk-seal-holo{background:conic-gradient(#8a6420,#f6e2a6,#c79a3e,#fff3c4,#8a6420,#e2bd63,#8a6420);border-radius:50%;animation:6s linear infinite lk-spin;position:absolute;inset:0;-webkit-mask:radial-gradient(circle,#0000 56%,#000 57%);mask:radial-gradient(circle,#0000 56%,#000 57%)}.lk-cert.is-issued .lk-seal-holo{background:conic-gradient(#6b1520,#b23a46,#6b1520,#d4a94e,#6b1520)}.lk-seal svg{width:100%;height:100%;position:absolute;inset:0}.lk-seal-logo{color:var(--lk-gold-lo)}.lk-seal-ring{opacity:0;border:2px solid #b08a3a;border-radius:50%;position:absolute;inset:-10px}.lk-cert.is-stamped .lk-seal-ring{animation:lk-ring .7s var(--lk-ease-out) 80ms}@keyframes lk-ring{0%{opacity:.9;transform:scale(.6)}to{opacity:0;transform:scale(1.8)}}.lk-actions{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex;position:relative}.lk-cert .lk-btn--outline{color:var(--lk-ink-hi);background:#ffffff80;box-shadow:inset 0 0 0 1px #8a642073}.lk-cert .lk-btn--outline:hover{background:#fffc}.lk-cert .lk-btn--outline .fl-icon{color:#8a6420}.lk-cert .lk-btn:disabled{color:var(--lk-ink-dim);background:#e8dcc0}.lk-note{color:var(--lk-ink-muted);gap:8px;margin:14px 0 0;font-size:12.5px;display:flex;position:relative}.lk-spinning{animation:.9s linear infinite lk-spin}@media (prefers-reduced-motion:reduce){.lk-room *,.lk-room :before,.lk-room :after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.lk-room.is-open,.lk-room.is-closing{transition:none}}@keyframes lk-peg-rays{to{rotate:360deg}}.lk-lobby{position:relative}.lk-pages{flex:1;min-height:0;position:relative}.lk-page{transform:translateY(calc((var(--index) - var(--page)) * (100% + 160px))) scale(var(--lk-depth,1));transition:transform .9s var(--lk-ease-expo), opacity .7s ease;flex-direction:column;display:flex;position:absolute;inset:0}.lk-page:not(.is-current){--lk-depth:.94;opacity:.2}.lk-pager{top:50%;right:max(6px, env(safe-area-inset-right,0px));z-index:5;gap:10px;display:grid;position:absolute;translate:0 -50%}.lk-pager button{border:1px solid var(--lk-gold);width:10px;height:10px;transition:height .4s var(--lk-ease-out), background-color .3s ease, box-shadow .3s ease;background:0 0;border-radius:999px;padding:0;position:relative}.lk-pager button:hover,.lk-pager button:focus-visible{outline:none;box-shadow:0 0 0 3px #e2bd6340,0 0 12px #ffd36e99}.lk-pager button.is-current{background:var(--lk-gold);height:26px;box-shadow:0 0 10px #ffd36e99}.lk-pager button:after{content:attr(data-tip);box-shadow:inset 0 0 0 1px var(--lk-gold-line), 0 6px 16px #0000008c;color:var(--lk-gold-hi);white-space:nowrap;pointer-events:none;opacity:0;background:#1e0d06;border-radius:8px;padding:5px 10px;font-size:12px;font-weight:600;transition:opacity .2s,translate .2s;position:absolute;top:50%;right:calc(100% + 10px);translate:4px -50%}.lk-pager button:hover:after,.lk-pager button:focus-visible:after{opacity:1;translate:0 -50%}.lk-veil{z-index:1;pointer-events:none;opacity:0;background:radial-gradient(70% 60% at 50% 45%,#28081859,#080306e0 75%),linear-gradient(#14040c80,#0000 30%,#0a030699);transition:opacity 1s;position:absolute;inset:0}.lk-room.is-private .lk-veil{opacity:1}.lk-chandelier,.lk-beams,.lk-lights,.lk-twinkles,.lk-drapes{transition:filter 1s,opacity 1s}.lk-room.is-private :is(.lk-chandelier,.lk-beams,.lk-twinkles){filter:brightness(.3)saturate(.7)}.lk-room.is-private .lk-lights{opacity:.3}.lk-room.is-private .lk-drapes{filter:brightness(.5)saturate(.85)}.lk-room.is-private .lk-festoon{top:calc(58px + env(safe-area-inset-top,0px))}.lk-room.is-private .lk-stage{--lk-felt:radial-gradient(#ffffff08 1px, transparent 1.4px) 0 0 / 5px 5px, radial-gradient(90% 90% at 50% 30%, #2a141c, #0c0608 80%)}.lk-page--private{gap:14px}.lk-private-head{justify-items:center;gap:4px;padding:4px 0 2px;display:grid;position:relative}.lk-private-head h3{z-index:1;font:italic 700 24px var(--lk-display-font);letter-spacing:.06em;color:#f6dfa8;text-shadow:0 0 16px #ffbe6e59;background:linear-gradient(#1c1310,#0a0605);border-radius:8px;margin:0;padding:6px 26px 7px;position:relative;box-shadow:inset 0 0 0 1px #c9a04a,inset 0 0 0 4px #0a0605,inset 0 0 0 5px #c9a04a73,0 10px 24px #0009}.lk-private-head small{z-index:1;color:var(--lk-text-muted);letter-spacing:.32em;text-transform:uppercase;font-size:11px;position:relative}.lk-rope{pointer-events:none;height:34px;position:absolute;top:4px;left:2%;right:2%}.lk-rope:before,.lk-rope:after{content:"";filter:drop-shadow(0 3px 3px #0009);background:0 0;border-bottom:7px solid #8e1424;border-radius:0 0 50% 50%/0 0 100% 100%;width:44%;height:22px;position:absolute;top:10px}.lk-rope:before{left:6px}.lk-rope:after{right:6px}.lk-rope b{background:linear-gradient(90deg,#8a6420,#f6dd96 45%,#a77c2c);border-radius:3px 3px 2px 2px;width:10px;height:40px;position:absolute;top:0;box-shadow:0 6px 10px #00000080}.lk-rope b:before{content:"";background:radial-gradient(circle at 35% 30%,#fff3c4,#d4a94e 55%,#8a6420);border-radius:50%;width:14px;height:14px;position:absolute;top:-7px;left:50%;translate:-50%}.lk-rope b:first-child{left:0}.lk-rope b:last-child{right:0}.lk-grid.lk-grid--private{grid-template-rows:minmax(0,1fr);grid-template-columns:1fr 1fr;gap:18px}.lk-grid--private.lk-grid>.lk-table:nth-child(n){grid-area:auto}.lk-table--private{background:linear-gradient(#17100c,#070504);box-shadow:inset 0 0 0 1px #c9a04a,inset 0 0 0 5px #070504,inset 0 0 0 6px #c9a04a59,0 30px 60px -24px #000000f2}.lk-table--private:hover{box-shadow:inset 0 0 0 1px #f6dd96,inset 0 0 0 5px #070504,inset 0 0 0 6px #c9a04a8c,0 30px 70px -20px #ffbe5a4d}.lk-table--private .lk-art{background:radial-gradient(50% 60% at 50% 0,#ffdeaa2e,#0000 70%),radial-gradient(90% 90% at 50% 40%,#2a141c,#0c0608 80%);transition:background .4s}.lk-table--private:hover .lk-art{background:radial-gradient(55% 70% at 50% 0,#ffdeaa47,#0000 72%),radial-gradient(90% 90% at 50% 40%,#2e1720,#0c0608 80%)}.lk-table--private .lk-meta b{color:#f6dfa8}.lk-mini-cards{aspect-ratio:9/5;--lk-card-w:13cqw;background:radial-gradient(60% 70% at 50% 25%,#ffe1aa1f,#0000 70%),radial-gradient(120% 100% at 50% 0,#1d4636,#0a1d16 75%);border-radius:0 0 50% 50%/0 0 100% 100%;align-content:start;justify-items:center;gap:5%;width:92%;padding-top:4%;display:grid;position:relative;box-shadow:0 0 0 2px #c9a04a,0 0 0 10px #2a120c,0 0 0 11px #8a6420,0 24px 40px -12px #000000d9;container-type:inline-size}.lk-table--holdem .lk-mini-cards{--lk-card-w:10cqw;gap:3%}.lk-mini-hand{display:flex}.lk-mini-hand .lk-card{animation:none}.lk-mini-hand .lk-card+.lk-card{margin-left:calc(var(--lk-card-w) * -.42);transition:margin-left .4s var(--lk-ease-out)}.lk-table:hover .lk-mini-hand .lk-card+.lk-card{margin-left:calc(var(--lk-card-w) * -.12)}.lk-mini-hand.is-board .lk-card+.lk-card,.lk-table:hover .lk-mini-hand.is-board .lk-card+.lk-card{margin-left:calc(var(--lk-card-w) * .1)}`})),sn,cn=n((()=>{sn=`.lk-roulette{grid-template-rows:minmax(0,1fr) auto auto auto;justify-items:center;gap:12px;width:min(880px,100cqw - 16px);height:calc(100cqh - 8px);display:grid}.lk-rl-board{aspect-ratio:1;height:100%;position:relative;container-type:inline-size}.lk-track{-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block;overflow:visible}.lk-track-cell text{font:700 11px var(--font-sans,inherit);fill:#fbf3df;text-anchor:middle;dominant-baseline:central;pointer-events:none}.lk-track-cell path{transition:filter .2s}.lk-track-cell.is-lit path{filter:brightness(1.7)drop-shadow(0 0 4px #ffe3a0);stroke:#ffe3a0;stroke-width:1.6px}.lk-track-cell.is-result path{stroke:#fff8e6;stroke-width:2px;filter:drop-shadow(0 0 6px #ffe3a0)}.lk-track-sector{cursor:pointer;outline:none}.lk-track-sector path{fill:#120a0559;stroke:#e2bd638c;stroke-width:1px;transition:fill .2s}.lk-track-sector:hover path,.lk-track-sector:focus-visible path{fill:#e2bd6329;stroke:#ffe3a0}.lk-track-sector:focus-visible path{stroke-width:2px}.lk-track-name{font:italic 700 14px var(--lk-display-font);fill:var(--lk-gold-hi);text-anchor:middle;dominant-baseline:central;pointer-events:none}.lk-track-cost{font:600 9.5px var(--font-sans,inherit);fill:var(--lk-text-muted);text-anchor:middle;dominant-baseline:central;pointer-events:none}.lk-track-sector.is-off{cursor:default}.lk-track-sector.is-off text{opacity:.45}.lk-track.is-locked .lk-track-sector{pointer-events:none}.lk-rl-board svg:not(.fl-icon){filter:drop-shadow(0 22px 28px #000000a6);width:100%;height:100%;display:block}.lk-rl-result{z-index:2;aspect-ratio:1;opacity:0;pointer-events:none;border-radius:50%;align-content:center;place-items:center;width:30%;display:grid;position:absolute;top:50%;left:50%;translate:-50% -50%;scale:.6}.lk-rl-result.is-on{opacity:1;transition:opacity .4s ease, scale .6s var(--lk-ease-expo);scale:1}.lk-rl-result b{font-variant-numeric:tabular-nums;color:#fff;font-size:13cqw;font-weight:700;line-height:1}.lk-rl-felt{aspect-ratio:834/284;place-items:center;width:min(80%,93.9718cqh);display:grid;position:relative}.lk-surface-enter-active,.lk-surface-leave-active{transition:opacity .2s ease, translate .25s var(--lk-ease-out)}.lk-surface-enter-from{opacity:0;translate:0 8px}.lk-surface-leave-to{opacity:0;translate:0 -8px}.lk-rl-switch{box-shadow:inset 0 0 0 1px var(--lk-gold-line);background:#120a058c;border-radius:.75rem;padding:3px;display:inline-flex}.lk-rl-switch button{height:28px;color:var(--lk-text-muted);background:0 0;border:0;border-radius:.55rem;align-items:center;gap:7px;padding:0 12px 0 10px;font-size:13px;font-weight:600;transition:background-color .18s,color .18s,box-shadow .18s;display:inline-flex}.lk-rl-switch button .fl-icon{font-size:15px}.lk-rl-switch button:hover{color:var(--lk-text-hi)}.lk-rl-switch button.is-on{color:#2a1a05;background:linear-gradient(#f6dd96,#d4a94e 55%,#a77c2c);box-shadow:inset 0 1px #ffffff8c,0 4px 10px -4px #e2bd6399}.lk-rl-switch button:focus-visible{outline:2px solid var(--lk-gold-hi);outline-offset:2px}.lk-rt{-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block;overflow:visible}.lk-rt-num{font:700 22px var(--lk-display-font);fill:#fbf3df;text-anchor:middle;dominant-baseline:central}.lk-rt-word{font:italic 600 17px var(--lk-display-font);fill:var(--lk-gold-hi);text-anchor:middle;dominant-baseline:central}.lk-rt-print{transition:opacity .3s}.lk-rt.is-locked .lk-rt-print{opacity:.7}.lk-rt-lit,.lk-rt-chips,.lk-rt-dolly{pointer-events:none}.lk-rt-lit>*{fill:#ffecbe42;stroke:#ffe3a0;stroke-width:2px;filter:drop-shadow(0 0 6px #ffc86ed9)}.lk-rt-hits rect{fill:#0000;cursor:pointer;outline:none}.lk-rt-hits rect:focus-visible{stroke:var(--lk-gold-hi);stroke-width:2.5px}.lk-rt.is-locked .lk-rt-hits{pointer-events:none}.lk-rt-chip{transform-box:fill-box;transform-origin:50%;animation:lk-chip-drop .38s var(--lk-ease-expo) both}@keyframes lk-chip-drop{0%{opacity:0;translate:0 -16px;scale:1.3}}.lk-rt-stack{transition:opacity .4s}.lk-rt-stack.is-lost{opacity:.4}.lk-rt-stack.is-winning{animation:.5s ease-in-out infinite alternate lk-chip-win}@keyframes lk-chip-win{to{filter:drop-shadow(0 0 8px #ffe3a0)drop-shadow(0 0 16px #ffaa3ccc)}}.lk-rt-dolly{animation:lk-dolly-drop .6s var(--lk-ease-expo) both}@keyframes lk-dolly-drop{0%{opacity:0;translate:0 -30px}}.lk-rl-call{z-index:2;pointer-events:none;background:radial-gradient(closest-side,#120a05d1,#120a0573 75%,#0000);border-radius:1rem;place-items:center;margin:0;display:grid;position:absolute;inset:-6px -12px}.lk-rl-call span{font:italic 700 clamp(28px, 5.4cqw, 50px) var(--lk-display-font);color:#f8e3a6;text-shadow:0 1px #6b4a14,0 0 18px #ffc86e99,0 0 40px #ffaa3c59;white-space:nowrap;align-items:center;gap:22px;display:flex}.lk-rl-call span:before,.lk-rl-call span:after{content:"";background:linear-gradient(90deg, transparent, var(--lk-gold));width:clamp(30px,8cqw,90px);height:1px}.lk-rl-call span:after{background:linear-gradient(270deg, transparent, var(--lk-gold))}.lk-call-enter-active{transition:opacity .45s ease, filter .6s ease, letter-spacing .9s var(--lk-ease-expo)}.lk-call-leave-active{transition:opacity .3s,filter .3s}.lk-call-enter-from{opacity:0;filter:blur(8px);letter-spacing:.25em}.lk-call-leave-to{opacity:0;filter:blur(4px)}.lk-rl-rack{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;width:100%;display:grid}.lk-rl-rack>.lk-rl-actions{justify-self:end}.lk-rl-actions{align-items:center;gap:10px;display:flex;position:relative}.lk-rl-quick{flex-direction:column;gap:8px;display:flex;position:absolute;bottom:calc(100% + 12px);right:0}.lk-round{width:36px;height:36px;box-shadow:inset 0 0 0 1px var(--lk-gold-line), 0 4px 10px #00000080;color:var(--lk-gold);transition:box-shadow .2s ease, color .2s ease, translate .2s var(--lk-ease-out);background:radial-gradient(circle at 35% 30%,#4a2410,#1e0d06 70%);border:0;border-radius:50%;place-items:center;padding:0;font-size:17px;display:grid;position:relative}.lk-round:not(:disabled):hover,.lk-round:focus-visible{color:#fff3c4;box-shadow:inset 0 0 0 1.5px var(--lk-gold-hi), 0 0 0 3px #e2bd6340, 0 0 22px #ffd36ebf, 0 4px 10px #00000080;outline:none;translate:0 -2px}.lk-round:disabled{opacity:.4;cursor:default}.lk-round:after{content:attr(data-tip);box-shadow:inset 0 0 0 1px var(--lk-gold-line), 0 6px 16px #0000008c;color:var(--lk-gold-hi);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .15s ease, translate .15s var(--lk-ease-out);background:#1e0d06;border-radius:8px;padding:5px 10px;font-size:12px;font-weight:600;position:absolute;top:50%;right:calc(100% + 10px);translate:4px -50%}.lk-round:not(:disabled):hover:after,.lk-round:focus-visible:after{opacity:1;translate:0 -50%}.lk-roulette{position:relative}.lk-rl-dark{z-index:3;opacity:0;pointer-events:none;background:#060814;position:absolute;inset:-100vmax}.lk-rl-sky{z-index:3;pointer-events:none;width:calc(100% + 24px);height:calc(100% + 24px);position:absolute;inset:-12px}.lk-rl-bolts{z-index:4;width:clamp(96px,34cqw,124px);box-shadow:inset 0 0 0 1px var(--lk-gold-line), inset 0 0 0 5px #0b0805, inset 0 0 0 6px #e2bd6340, 0 18px 30px -12px #000c, 0 0 26px -8px #ffd36e73;background:linear-gradient(#1a130b,#0b0805);border-radius:1rem;flex-direction:column;align-items:center;gap:clamp(18px,6.4cqw,24px);padding:clamp(12px,4.4cqw,18px) 10px clamp(16px,5cqw,20px);display:flex;position:absolute;top:50%;right:calc(100% + 16cqw);translate:0 -50%}.lk-rl-bolts-title{font:italic 700 clamp(13px, 4.4cqw, 16px) var(--lk-display-font);color:var(--lk-gold-hi);align-items:center;gap:4px;display:inline-flex}.lk-rl-bolts-title .fl-icon{color:#ffd36e;filter:drop-shadow(0 0 4px #ffd36e)}.lk-rl-bolts p{color:var(--lk-text-muted);text-align:center;text-wrap:balance;margin:0;font-size:11.5px;font-weight:600;line-height:1.35}.lk-rl-medallion{background:radial-gradient(circle at 35% 30%,#2a2016,#0b0805 70%);border-radius:50%;place-items:center;width:clamp(40px,17cqw,60px);height:clamp(40px,17cqw,60px);display:grid;position:relative;overflow:visible;box-shadow:0 0 0 2px #0b0805,0 0 0 4px #b8892f,inset 0 0 0 1px #fff3c440,inset 0 6px 14px #000000b3}.lk-rl-medallion>.fl-icon{color:#e2bd6359;font-size:22px}.lk-rl-medallion b{font:700 clamp(17px, 6.8cqw, 24px) var(--lk-display-font);font-variant-numeric:tabular-nums;color:#fff;background:radial-gradient(circle at 35% 30%, color-mix(in oklab, var(--lk-bolt-number) 70%, white), var(--lk-bolt-number) 65%);border-radius:50%;place-items:center;display:grid;position:absolute;inset:0}.lk-rl-medallion.is-rolling b{filter:blur(.4px)}.lk-rl-medallion.is-struck{animation:lk-bolt-in .5s var(--lk-ease-expo) both;box-shadow:0 0 0 2px #0b0805,0 0 0 4px #f6dd96,0 0 22px #ffd36e}.lk-rl-medallion.is-result{animation:lk-bolt-in .5s var(--lk-ease-expo) both, lk-bolt-win .6s ease-in-out infinite alternate}.lk-rl-medallion small{font:800 11px var(--font-sans,inherit);color:#2a1a05;background:linear-gradient(#fff3c4,#d4a94e 55%,#a77c2c);border-radius:999px;padding:1px 7px;animation:.5s cubic-bezier(.2,.9,.3,1.4) .15s both lk-badge-pop;position:absolute;bottom:-10px;box-shadow:0 0 8px #ffd36ecc}.lk-roll-enter-active,.lk-roll-leave-active{transition:translate 70ms linear,opacity 70ms linear}.lk-roll-enter-from{opacity:0;translate:0 -55%}.lk-roll-leave-to{opacity:0;translate:0 55%}.lk-rl-medallion:not(.is-rolling) .lk-roll-enter-active{transition:translate .35s var(--lk-ease-expo), opacity .2s ease}@keyframes lk-bolt-in{0%{filter:brightness(2.6);scale:1.35}}@keyframes lk-badge-pop{0%{opacity:0;scale:0}}@keyframes lk-bolt-win{to{box-shadow:0 0 0 2px #0b0805,0 0 0 4px #fff4d6,0 0 26px #ffd36e,0 0 44px #ffe9a8}}.lk-rt-struck{pointer-events:none}.lk-rt-bolt>path,.lk-rt-bolt>rect{fill:none;stroke:#f6dd96;stroke-width:3px;filter:drop-shadow(0 0 6px #ffd36e)drop-shadow(0 0 14px #ffbe50b3);animation:lk-struck-in .7s var(--lk-ease-expo) both, lk-struck 1.6s .7s ease-in-out infinite alternate}.lk-rt-bolt>g{transform-box:fill-box;transform-origin:50%;animation:lk-badge-in .5s .15s var(--lk-ease-expo) both}.lk-rt-bolt>g rect{stroke:#3a2a10;stroke-width:1px;filter:drop-shadow(0 0 6px #ffd36ee6)}.lk-rt-bolt>g text{font:800 12px var(--font-sans,inherit);fill:#2a1a05;text-anchor:middle;dominant-baseline:central}@keyframes lk-struck-in{0%{fill:#fffffff2;stroke:#fff;stroke-width:8px}to{fill:#fff0}}@keyframes lk-struck{to{stroke:#fff4d6;filter:drop-shadow(0 0 8px #ffe9a8)drop-shadow(0 0 22px #ffbe50e6)}}@keyframes lk-badge-in{0%{opacity:0;scale:.2}}.lk-track-cell.is-struck path{stroke:#f6dd96;stroke-width:2.4px;filter:brightness(1.35)drop-shadow(0 0 6px #ffd36e);animation:1.6s ease-in-out infinite alternate lk-struck}.lk-rl-struck{fill-opacity:.45;filter:drop-shadow(0 0 6px #ffd36e);animation:1.2s ease-in-out infinite alternate lk-pocket-struck}@keyframes lk-pocket-struck{to{fill-opacity:.75}}.lk-rl-result small{font:800 3.6cqw var(--font-sans,inherit);color:#ffe9a8;text-shadow:0 0 8px #ffd36e;align-items:center;gap:2px;margin-top:2px;display:flex}.lk-rl-result.is-struck{animation:.7s ease-in-out infinite alternate lk-result-struck}@keyframes lk-result-struck{0%{box-shadow:0 0 0 4px #f6dd96,0 0 30px #ffd36e}to{box-shadow:0 0 0 5px #fff4d6,0 0 60px #ffd36e,0 0 110px #ffe9a899}}.lk-roulette--storm .lk-rl-board svg:not(.fl-icon){animation:7s linear infinite lk-rl-charge}@keyframes lk-rl-charge{0%,90%,93.5%,to{filter:drop-shadow(0 22px 28px #000000a6)}91%,94.5%{filter:drop-shadow(0 22px 28px #000000a6)drop-shadow(0 0 14px #ffd66ed9)brightness(1.15)}}@media (prefers-reduced-motion:reduce){.lk-rl-medallion.is-struck,.lk-rl-medallion.is-result,.lk-rl-medallion small,.lk-rt-bolt>path,.lk-rt-bolt>rect,.lk-rt-bolt>g,.lk-track-cell.is-struck path,.lk-rl-struck,.lk-rl-result.is-struck,.lk-roulette--storm .lk-rl-board svg:not(.fl-icon){animation:none}}`})),ln,un=n((()=>{ln=`.lk-scratch{width:410px}.lk-ticket{color:#2a1a0a;background:linear-gradient(#faf3e3,#efe3c6);border-radius:22px;padding:20px;position:relative;overflow:hidden;rotate:-1.2deg;box-shadow:inset 0 0 0 1px #8a642066,inset 0 0 0 6px #faf3e3,inset 0 0 0 7px #8a642080,0 40px 80px -24px #000000d9}.lk-ticket>svg{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.lk-ticket header{align-items:center;gap:10px;margin-bottom:12px;display:flex;position:relative}.lk-ticket header .fl-icon{aspect-ratio:309/366;color:#7d1c24;width:24px;height:auto}.lk-ticket header b{font:italic 700 20px var(--lk-display-font);color:#7d1c24}.lk-ticket header span{font:600 11px var(--lk-mono);color:#6e5a3a;margin-left:auto}.lk-ticket .lk-rule{color:#6e5a3a;margin:0 0 14px;font-size:12.5px;position:relative}.lk-spots{grid-template-columns:repeat(3,1fr);gap:10px;display:grid;position:relative}.lk-spot{background:#fffaf0;border-radius:14px;place-items:center;height:100px;display:grid;position:relative;box-shadow:inset 0 0 0 1px #8a642073}.lk-spot img{width:52px}.lk-spot svg{width:52px;height:52px}.lk-spot-number{font:800 40px var(--lk-display-font);color:#6e5a3a}.lk-spot.is-match{box-shadow:inset 0 0 0 2px #b08a3a,0 0 0 4px #e2bd6359}.lk-spot.is-match img{animation:lk-sym-win .5s var(--lk-ease-out) infinite alternate}.lk-spot--wide{text-align:center;grid-column:1/-1;height:68px;font-size:22px;font-weight:700}.lk-spot--wide.is-locked .lk-foil{pointer-events:none;filter:brightness(.82)saturate(.7)}.lk-lock{z-index:2;font:italic 600 13px var(--lk-display-font);color:#3a2a10;pointer-events:none;justify-content:center;align-items:center;gap:7px;transition:opacity .4s;display:flex;position:absolute;inset:0}.lk-lock .fl-icon{width:1em;height:1em;font-size:15px}.lk-spot--wide:not(.is-locked) .lk-lock{opacity:0}.lk-spot--wide small{color:#6e5a3a;font-size:11px;font-weight:600;display:block}.lk-foil{cursor:crosshair;touch-action:none;border-radius:14px;width:100%;height:100%;position:absolute;inset:0}.lk-ticket footer{font:600 10.5px var(--lk-mono);color:#6e5a3a;justify-content:space-between;margin-top:14px;display:flex;position:relative}.lk-ticket{-webkit-user-select:none;user-select:none}.lk-ticket .lk-tk-logo{object-fit:contain;width:40px;height:40px}.lk-td-cell:not(:has(>small)){grid-template-rows:1fr}.lk-ticket--double,.lk-ticket--forever{--lk-ticket-font:"Arial Black", "Helvetica Neue", Arial, system-ui, sans-serif}:is(.lk-ticket--double,.lk-ticket--forever) .is-match{box-shadow:0 0 0 3px #ffe14d,0 0 18px 2px #ffe14dd9}:is(.lk-ticket--double,.lk-ticket--forever) .is-match b{animation:lk-sym-win .5s var(--lk-ease-out) infinite alternate}.lk-ticket.lk-ticket--double{color:#fff;background:radial-gradient(circle,#ffffff2e 0 2.5px,#0000 3px) 0 0/16px 16px,radial-gradient(circle,#ffffff1a 0 2.5px,#0000 3px) 8px 8px/16px 16px,radial-gradient(at 50% 0,#f2493d,#c8161e 58%,#990c13);padding:12px 16px 10px;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 5px #990c13,0 40px 80px -24px #000000d9}.lk-td-head{text-align:center;position:relative}.lk-td-head h3{font:900 38px/1 var(--lk-ticket-font);letter-spacing:-.5px;color:#ffe14d;-webkit-text-stroke:7px #1d3fa0;paint-order:stroke fill;text-shadow:0 4px #0f2466;justify-content:center;align-items:center;margin:0;display:flex}.lk-td-head h3 svg{filter:drop-shadow(0 3px #0f2466);width:42px;height:50px;margin:-8px 0 0}.lk-td-head p{font:900 15px var(--lk-ticket-font);color:#fff;-webkit-text-stroke:4px #1d3fa0;paint-order:stroke fill;margin:3px 0 8px}.lk-td-band,.lk-td-yours{background:#2fa7e0;border-radius:12px;padding:5px 10px 10px;position:relative;box-shadow:inset 0 0 0 2px #fff,0 0 0 2px #1d3fa0}.lk-td-yours{background:linear-gradient(#8fd8f5,#5cc0ec);margin-top:10px}.lk-td-band h4,.lk-td-yours h4{text-align:center;font:900 11px var(--lk-ticket-font);letter-spacing:1px;color:#fff;-webkit-text-stroke:3px #1d3fa0;paint-order:stroke fill;margin:0 0 5px}.lk-td-coins{justify-content:center;gap:10px;display:flex}.lk-td-coin{background:#fff8dc;border-radius:50%;place-items:center;width:54px;height:54px;display:grid;position:relative;box-shadow:inset 0 0 0 2px #c99a2e}.lk-td-coin b{font:900 22px var(--lk-ticket-font);color:#1d3fa0}.lk-td-coin .lk-foil{border-radius:50%}.lk-td-grid{grid-template-columns:repeat(4,1fr);gap:7px;display:grid}.lk-td-cell{color:#1d3fa0;background:#fffaf0;border-radius:9px;grid-template-rows:1fr auto;place-items:center;height:68px;padding:5px 2px 4px;display:grid;position:relative;box-shadow:inset 0 0 0 1.5px #1d3fa0}.lk-td-cell b{font:900 23px/1 var(--lk-ticket-font)}.lk-td-cell small{font:900 8px/1 var(--lk-ticket-font);letter-spacing:.4px;color:#c8161e;justify-items:center;gap:1px;display:grid}.lk-td-cell small strong,.lk-tf-cell small,.lk-tf-flop b{white-space:nowrap;align-items:center;gap:3px;display:flex}.lk-td-cell small strong img,.lk-tf-cell small img,.lk-tf-flop b img{object-fit:contain;width:11px;height:11px}.lk-td-cell small strong{letter-spacing:0;color:#1d3fa0;white-space:nowrap;font-size:11px}.lk-td-cell .lk-foil{border-radius:9px}.lk-td-foot{font:900 12px var(--lk-ticket-font);color:#ffe14d;-webkit-text-stroke:3px #1d3fa0;paint-order:stroke fill;justify-content:space-between;align-items:center;margin-top:9px;display:flex}.lk-td-foot span{font:600 10px var(--lk-mono);color:#ffd9d6;-webkit-text-stroke:0}.lk-ticket.lk-ticket--forever{color:#0f4c9c;background:linear-gradient(#2b9fe0,#7fd0f5 22%,#c9ecfb 40%,#f3dcab 72%,#e6c27f);padding:10px 14px 8px;box-shadow:inset 0 0 0 3px #fff,inset 0 0 0 5px #1769aa,0 40px 80px -24px #000000d9}.lk-tf-head h3{font:900 33px/1 var(--lk-ticket-font);color:#ffe14d;-webkit-text-stroke:6px #0f4c9c;paint-order:stroke fill;text-shadow:0 3px #082c5e;justify-content:center;align-items:center;gap:6px;margin:0 0 9px;display:flex}.lk-tf-head h3 i{width:30px;height:30px;font:italic 900 12px var(--lk-ticket-font);color:#fff;-webkit-text-stroke:0;text-shadow:none;background:#e5302a;border-radius:50%;place-items:center;display:grid;box-shadow:0 0 0 2px #fff,0 2px 0 2px #082c5e}.lk-tf-game{background:#ffffff4d;border-radius:12px;padding:9px 8px 8px;position:relative;box-shadow:inset 0 0 0 1.5px #ffffffd9}.lk-tf-game+.lk-tf-game{margin-top:10px}.lk-tf-tag{font:italic 900 9.5px var(--lk-ticket-font);color:#fff;background:#e5302a;border-radius:5px;padding:1px 7px;position:absolute;top:-7px;left:-4px;box-shadow:0 0 0 1.5px #fff}.lk-tf-game h4{text-align:center;font:900 10px var(--lk-ticket-font);letter-spacing:1px;color:#0f4c9c;margin:0 0 4px}.lk-tf-sea{align-items:center;gap:8px;margin-bottom:6px;display:flex}.lk-tf-sea>div{flex:1}.lk-tf-boats{justify-content:center;gap:6px;display:flex}.lk-tf-boat{background:#fffaf0;border-radius:9px;place-items:center;width:52px;height:48px;display:grid;position:relative;box-shadow:inset 0 0 0 1.5px #0f4c9c}.lk-tf-boat b{font:900 21px var(--lk-ticket-font);color:#0f4c9c}.lk-tf-boat .lk-foil{border-radius:9px}.lk-tf-jackpot{width:96px;font:900 9.5px/1.15 var(--lk-ticket-font);text-align:center;color:#c8161e;background:#ffe14d;border-radius:10px;justify-items:center;margin:0;padding:6px 6px 7px;display:grid;rotate:-4deg;box-shadow:0 0 0 2px #e5302a,0 3px 0 2px #a3161b}.lk-tf-jackpot b{color:#0f4c9c;font-size:26px;line-height:.9}.lk-tf-beach{background:#fff;border-radius:10px;grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(5,1fr);gap:3px;height:168px;display:grid;position:relative;overflow:hidden;box-shadow:0 0 0 1.5px #fff}.lk-tf-cell{background:#fffaf0f0;place-content:center;justify-items:center;gap:2px;display:grid;position:relative}.lk-tf-cell b{font:900 19px/1 var(--lk-ticket-font);color:#0f4c9c}.lk-tf-cell small{font:900 9px var(--lk-ticket-font);color:#c8161e}.lk-ticket .lk-tf-cell .lk-tk-logo{width:32px;height:32px}.lk-tf-cell .lk-foil{border-radius:0}.lk-tf-game--two{grid-template-columns:1fr;gap:5px;display:grid}.lk-tf-game--two>span{text-align:center;font:900 10px var(--lk-ticket-font);color:#0f4c9c}.lk-tf-flops{grid-template-columns:repeat(5,1fr);gap:6px;display:grid}.lk-tf-flop{background:#fffaf0;border-radius:8px;place-content:center;justify-items:center;gap:2px;height:44px;display:grid;position:relative;box-shadow:inset 0 0 0 1.5px #0f4c9c}.lk-tf-flop b{font:900 12px var(--lk-ticket-font);color:#c8161e}.lk-tf-flop .lk-foil{border-radius:8px}.lk-tf-foot{text-align:right;font:600 10px var(--lk-mono);color:#6b4a14;margin-top:6px}`})),dn,fn=n((()=>{dn=`.lk-slot{width:450px;position:relative}.lk-slot-cab{background:radial-gradient(80% 20% at 50% 0,#ffe6b42e,#0000 70%),linear-gradient(#7a3d1c,#4a2410 45%,#2a1208);border-radius:30px 30px 24px 24px;padding:20px 22px 22px;position:relative;box-shadow:inset 0 0 0 2px #6b4a14,inset 0 0 0 4px #f3d488,inset 0 0 0 6px #8a6420,inset 0 2px 0 7px #ffffff1f,0 40px 80px -20px #000000d9}.lk-slot-sign{background:radial-gradient(circle at 50% 40%,oklch(34% .13 22),oklch(16% .06 20) 80%);border-radius:16px;place-items:center;height:82px;margin-bottom:18px;display:grid;position:relative;overflow:hidden;box-shadow:inset 0 0 0 2px #d4a94e,inset 0 2px 14px #000000b3}.lk-slot-sign svg{width:100%;height:100%;position:absolute;inset:0}.lk-slot-sign b{font:700 32px var(--lk-display-font);letter-spacing:.14em;color:#ffe3a0;text-shadow:0 1px #6b4a14,0 0 10px #ffc86ecc,0 0 26px #ffa03c80;animation:6s step-end infinite lk-neon;position:relative}@keyframes lk-neon{0%,61%,63%,to{opacity:1}62%{opacity:.55}}.lk-slot-sign:after{content:"";width:40%;animation:lk-sheen 5.5s var(--lk-ease-out) infinite;background:linear-gradient(100deg,#0000,#ffffff1f,#0000);position:absolute;top:0;bottom:0;transform:skew(-18deg)}@keyframes lk-sheen{0%,70%{left:-60%}to{left:130%}}.lk-slot{--lk-lamp-off:#5a4320}.lk-slot-lamp{fill:var(--lk-lamp-off)}.lk-slot.is-idle .lk-slot-lamp{animation:1.4s step-end infinite lk-lamp-idle;animation-delay:calc(var(--i) * -.7s)}.lk-slot.is-spinning .lk-slot-lamp,.lk-table:hover .lk-slot-lamp{animation:.6s linear infinite lk-lamp-chase;animation-delay:calc(var(--i) * -.03s)}.lk-slot.is-won .lk-slot-lamp{animation:.18s step-end infinite lk-lamp-flash;animation-delay:calc(var(--i) * -.09s)}.lk-slot-glass{background:linear-gradient(#f6e2a6,#a77c2c 50%,#f1d892);border-radius:16px;grid-template-columns:repeat(3,1fr);gap:7px;padding:9px;display:grid;position:relative;box-shadow:inset 0 0 0 1px #fff9,0 1px #8a6420}.lk-slot-glass:after{content:"";pointer-events:none;background:linear-gradient(115deg,#0000 18%,#fff3 26%,#0000 34%),linear-gradient(115deg,#0000 52%,#ffffff14 56%,#0000 60%);border-radius:10px;position:absolute;inset:9px}.lk-reel{background:linear-gradient(#cdbf9c 0%,#fbf6ea 22% 78%,#cdbf9c 100%);border-radius:10px;height:300px;position:relative;overflow:hidden}.lk-reel:after{content:"";pointer-events:none;background:linear-gradient(#1e140a66,#1e140a0f 18%,#0000 34% 66%,#1e140a0f 82%,#1e140a66);position:absolute;inset:0}.lk-reel ul{will-change:transform;margin:0;padding:0;list-style:none}.lk-reel li{place-items:center;height:100px;display:grid}.lk-reel.is-blur ul{filter:blur(1.8px)saturate(1.2)}.lk-reel.is-suspense{animation:.42s ease-in-out infinite alternate lk-suspense}@keyframes lk-suspense{0%{box-shadow:0 0 0 3px #e2bd63}to{box-shadow:0 0 0 4px #9e1b22,0 0 22px #ffc86e99}}.lk-sym{place-items:center;width:72px;height:72px;display:grid}.lk-sym img{filter:drop-shadow(0 3px 2px #0003);width:58px;height:58px}.lk-sym svg{filter:drop-shadow(0 3px 2px #0003);width:64px;height:64px}.lk-reel li.is-win .lk-sym{animation:lk-sym-win .5s var(--lk-ease-out) infinite alternate}.lk-payline{pointer-events:none;background:#9e1b2299;border-radius:2px;height:2px;position:absolute;top:50%;left:4px;right:4px;translate:0 -50%}.lk-slot.is-won .lk-payline{background:#f3d488;height:3px;animation:.24s steps(2,end) 8 lk-payline;box-shadow:0 0 14px #ffcf7a}@keyframes lk-payline{50%{opacity:.2}}.lk-slot-strip{background:radial-gradient(circle,#fff 0 1.5px,#ffe3a0 2.5px,#ffc86e59 3.6px,#0000 5px) 50% 0/12px 54px repeat-y,radial-gradient(circle,#6b5226 0 1.8px,#0000 2.4px) 50% 0/12px 18px repeat-y,linear-gradient(90deg,#6b4a14,#2a1208,#6b4a14);border-radius:6px;width:12px;animation:.9s steps(3,end) infinite lk-strip-bulbs;position:absolute;top:130px;bottom:110px;box-shadow:0 0 14px #ffbe5a40}.lk-slot-strip--left{left:-6px}.lk-slot-strip--right{right:-6px}.lk-slot.is-spinning .lk-slot-strip{animation-duration:.27s}.lk-slot.is-won .lk-slot-strip{animation-duration:.15s}@keyframes lk-strip-bulbs{to{background-position:50% 54px,50% 0,0 0}}.lk-slot-tray{background:#120a05;border-radius:14px;justify-content:space-between;align-items:center;gap:14px;margin-top:16px;padding:10px 10px 10px 14px;display:flex;box-shadow:inset 0 0 0 1px #e2bd634d,inset 0 2px 8px #000000b3}.lk-readout span{color:#b3a27b;font-size:11px;font-weight:600;display:block}.lk-readout b{font:600 15px var(--lk-mono);color:#ffd889;text-shadow:0 0 10px #ffbe5a99}.lk-lever{background:0 0;border:0;width:50px;height:240px;padding:0;position:absolute;top:140px;right:-56px}.lk-lever .lk-rod{transform-origin:50% 100%;background:linear-gradient(90deg,#8a6420,#f6e2a6 22%,#b8892f 48%,#fff3c4 72%,#8a6420);border-radius:6px;width:10px;height:170px;position:absolute;bottom:30px;left:20px;box-shadow:0 6px 10px #00000040}.lk-lever .lk-knob{background:radial-gradient(circle at 34% 30%,#fff,#ff8a96 22%,#9e1b2a 62%,#3a0710);border-radius:50%;width:32px;height:32px;position:absolute;top:-26px;left:-11px;box-shadow:0 6px 12px #0000004d}.lk-lever .lk-base{background:linear-gradient(90deg,#8a6420,#f6e2a6 22%,#b8892f 48%,#fff3c4 72%,#8a6420);border-radius:10px;width:38px;height:56px;position:absolute;bottom:6px;left:6px;box-shadow:inset 0 0 0 1px #fff9,0 6px 12px #00000040}.lk-takeoff,.lk-breakaway{flex-direction:column;align-items:center;gap:14px;display:flex}.lk-takeoff .lk-controls,.lk-breakaway .lk-controls{margin-top:4px}.lk-takeoff-screen{aspect-ratio:2;border-radius:22px;width:min(720px,100cqw - 32px);position:relative;overflow:hidden;box-shadow:0 0 0 2px #6b4a14,0 0 0 6px #2a1208,0 0 0 7px #e2bd638c,0 30px 60px -24px #000000d9}.lk-takeoff-screen canvas{width:100%;height:100%;display:block}.lk-takeoff-reading{pointer-events:none;text-align:center;place-content:center;justify-items:center;gap:4px;display:grid;position:absolute;inset:0}.lk-takeoff-reading b{font:700 clamp(44px, 9cqw, 76px) / 1 var(--lk-display-font);font-variant-numeric:tabular-nums;color:var(--lk-gold-hi);text-shadow:0 0 26px #ffd36e73,0 4px #3a2608}.lk-takeoff-reading span{font:italic 600 17px var(--lk-display-font);color:var(--lk-gold)}.lk-takeoff-screen.is-gone .lk-takeoff-reading b{color:#e06a72;text-shadow:0 0 26px #e0566a73,0 4px #3a0a10}.lk-takeoff-screen.is-gone .lk-takeoff-reading span{color:#f0a2a8;font-size:22px}.lk-takeoff-screen.is-cashed .lk-takeoff-reading b{color:#fff6d2}.lk-takeoff-steps{gap:6px;margin:0;padding:0;list-style:none;display:flex}.lk-takeoff-steps li{min-width:62px;box-shadow:inset 0 0 0 1px var(--lk-gold-line);color:var(--lk-text-muted);white-space:nowrap;background:#0000004d;border-radius:10px;justify-items:center;padding:5px 6px;font-size:11.5px;font-weight:700;transition:background .25s,color .25s,box-shadow .25s;display:grid}.lk-takeoff-steps small{font:700 12.5px var(--lk-display-font);color:var(--lk-gold)}.lk-takeoff-steps li.is-reached{box-shadow:inset 0 0 0 1px var(--lk-gold);color:var(--lk-gold-hi);background:#e2bd6329}.lk-takeoff-steps li.is-cashed{color:#2a1a05;background:linear-gradient(#f6dd96,#c99a3e);box-shadow:0 0 16px #e2bd6399}.lk-takeoff-steps li.is-cashed small{color:#2a1a05}.lk-takeoff-steps li.is-jackpot small{color:#fff3c4}.lk-breakaway .lk-btn.is-hidden{visibility:hidden}.lk-field-wrap{aspect-ratio:430/590;height:min(560px,100cqh - 120px);position:relative}.lk-field{filter:drop-shadow(0 26px 40px #0009);width:100%;height:100%;display:block}.lk-field-lines{fill:none;stroke:#e2bd63;stroke-opacity:.55;stroke-width:2px}.lk-field-spot{fill:#e2bd63;fill-opacity:.7;stroke:none}.lk-field-keeper{animation:2.2s ease-in-out infinite alternate lk-keeper-sway}@keyframes lk-keeper-sway{0%{transform:translate(-16px)}to{transform:translate(16px)}}.lk-field-prize rect{fill:#12080499;stroke:#e2bd6373}.lk-field-prize text{font:700 12.5px var(--lk-display-font);fill:var(--lk-gold)}.lk-field-prize.is-jackpot rect{stroke:var(--lk-gold)}.lk-field-prize.is-jackpot text{fill:#fff3c4}.lk-field-prize.is-collected rect{fill:#e2bd63;stroke:#fff3c4}.lk-field-prize.is-collected text{fill:#2a1a05}.lk-field-square{fill:#fffaf00d;stroke:#f6e2a638;stroke-width:1px;transition:fill .2s,stroke .2s}.lk-field-square.is-open{cursor:pointer;fill:#fffaf01f;stroke:#f6e2a6b3;animation:1.4s ease-in-out infinite alternate lk-field-open}.lk-field-square.is-open:hover,.lk-field-square.is-open:focus-visible{fill:#f6e2a64d;stroke:#fff3c4;stroke-width:2px;outline:none}@keyframes lk-field-open{to{stroke:#fff3c4;fill:#f6e2a62e}}.lk-field-square.is-path{fill:#e2bd6347;stroke:var(--lk-gold)}.lk-field-defender{animation:lk-field-tackle .35s var(--lk-ease-expo)}@keyframes lk-field-tackle{0%{opacity:0;transform-origin:50%;scale:.4}}.lk-field-striker{transition:transform .48s var(--lk-ease-out)}.lk-field-ball{filter:drop-shadow(0 0 3px #ffcf5a)}.lk-field.is-tackled .lk-field-striker{filter:grayscale(.7)brightness(.8)}.lk-shot{z-index:3;background:linear-gradient(#0000 30%,#1a5c36 30%);border-radius:12px;flex-direction:column;display:flex;position:absolute;inset:0;overflow:hidden;box-shadow:0 0 0 2px #e2bd6373}.lk-shot-stands{width:100%;height:30%;display:block}.lk-fan{transform-box:fill-box}.lk-fan-arms{opacity:0}.lk-shot.is-celebrating .lk-fan{animation:lk-fan-jump .42s ease-in-out var(--d) infinite alternate}.lk-shot.is-celebrating .lk-fan-arms{opacity:1}@keyframes lk-fan-jump{to{transform:translateY(-6px)}}.lk-shot-goal{aspect-ratio:2.2;background:repeating-linear-gradient(45deg,#ffffff2e 0 1px,#0000 1px 9px),repeating-linear-gradient(-45deg,#ffffff2e 0 1px,#0000 1px 9px),#00000040;border:8px solid #f1d892;border-bottom:0;border-radius:8px 8px 0 0;grid-template:repeat(2,1fr)/repeat(3,1fr);width:86%;margin:6% auto 0;display:grid;position:relative;box-shadow:0 0 24px #e2bd6359}.lk-shot-zone{background:0 0;border:0;border-radius:10px;margin:4px;padding:0;transition:background .2s,box-shadow .2s;box-shadow:inset 0 0 0 1px #f6e2a640}.lk-shot-zone:not(:disabled):hover,.lk-shot-zone:focus-visible{box-shadow:inset 0 0 0 2px var(--lk-gold-hi), 0 0 18px #ffd36e80;background:#f6e2a633;outline:none}.lk-shot-zone:disabled{cursor:default}.lk-shot-keeper{pointer-events:none;width:26%;height:82%;transition:translate .5s var(--lk-ease-out), rotate .5s var(--lk-ease-out);position:absolute;bottom:0;left:50%;translate:-50%}.lk-shot-keeper.is-diving-0{translate:-160% -40%;rotate:-70deg}.lk-shot-keeper.is-diving-1{translate:-50% -45%}.lk-shot-keeper.is-diving-2{translate:60% -40%;rotate:70deg}.lk-shot-keeper.is-diving-3{translate:-160%;rotate:-80deg}.lk-shot-keeper.is-diving-4{translate:-50%;scale:1.1}.lk-shot-keeper.is-diving-5{translate:60%;rotate:80deg}.lk-shot-ball{filter:drop-shadow(0 0 6px #ffcf5a);width:34px;height:34px;transition:left .6s var(--lk-ease-out), top .6s var(--lk-ease-out), scale .6s var(--lk-ease-out);position:absolute;top:198%;left:50%;translate:-50% -50%}.lk-shot-ball[class*=is-at-]{scale:.65}.lk-shot-ball.is-at-0{top:25%;left:16.7%}.lk-shot-ball.is-at-1{top:25%;left:50%}.lk-shot-ball.is-at-2{top:25%;left:83.3%}.lk-shot-ball.is-at-3{top:75%;left:16.7%}.lk-shot-ball.is-at-4{top:75%;left:50%}.lk-shot-ball.is-at-5{top:75%;left:83.3%}.lk-shot-striker{aspect-ratio:28/37;width:17%;position:absolute;bottom:2%;left:50%;translate:-40%}.lk-shot-goal-call{font:italic 800 64px var(--lk-display-font);color:var(--lk-gold-hi);text-shadow:0 0 30px #ffd36eb3,0 5px #3a2608;animation:lk-goal-call .6s var(--lk-ease-expo);position:absolute;top:52%;left:50%;translate:-50% -50%}@keyframes lk-goal-call{0%{opacity:0;scale:.4}}.lk-shot{animation:.4s lk-shot-in}@keyframes lk-shot-in{0%{opacity:0}}`})),pn,mn=n((()=>{pn=`.lk-wheel-game{width:clamp(240px,100cqh - 188px,520px)}.lk-wheel-wrap{aspect-ratio:1;touch-action:none;cursor:grab;width:100%;position:relative}.lk-wheel-wrap.is-grabbed{cursor:grabbing}.lk-wheel-wrap{clip-path:inset(-20% round 28px);transition:clip-path .6s var(--lk-ease-out)}.lk-wheel-wrap:after{content:"";z-index:4;pointer-events:none;box-shadow:inset 0 0 0 2px var(--lk-gold), inset 0 0 0 7px #2a140a, inset 0 0 60px #000000b3;opacity:0;border-radius:28px;transition:opacity .6s;position:absolute;inset:0}.lk-wheel-wrap.is-zoomed{clip-path:inset(0 round 28px)}.lk-wheel-wrap.is-zoomed:after{opacity:1}.lk-wheel-zoom{transform-origin:50% var(--lk-zoom-y);transition:transform .7s var(--lk-ease-expo);position:absolute;inset:0}.lk-wheel-wrap.is-zoomed .lk-wheel-zoom{transform:scale(var(--lk-zoom))}@media (prefers-reduced-motion:reduce){.lk-wheel-wrap,.lk-wheel-wrap:after,.lk-wheel-zoom{transition:none}}.lk-wheel{width:100%;height:100%;position:absolute;inset:0}.lk-wheel-zoom:before{content:"";border-radius:50%;position:absolute;inset:2.7%;box-shadow:0 28px 34px #0009,0 0 30px #ffc86e26}.lk-wheel-logo{color:#f3d488;font-size:34px}.lk-wheel-logo .fl-icon{stroke-width:1.6px;display:block}.lk-pointer{z-index:3;transform-origin:50% 24%;filter:drop-shadow(0 4px 4px #0000004d);width:9%;position:absolute;top:-3.2%;left:50%;translate:-50%}.lk-lamp{fill:var(--lk-lamp-off);transition:fill .12s}.lk-wheel-game.is-idle .lk-lamp{animation:1.8s step-end infinite lk-lamp-idle;animation-delay:calc(var(--i) * -.9s)}.lk-wheel-game.is-spinning .lk-lamp{animation:.7s linear infinite lk-lamp-chase;animation-delay:calc(var(--i) * -.0259s)}.lk-wheel-game.is-won .lk-lamp{animation:.26s step-end infinite lk-lamp-flash;animation-delay:calc(var(--i) * -.13s)}.lk-win-seg{opacity:0}.lk-wheel-game.is-won .lk-win-seg{animation:.5s ease-in-out infinite alternate lk-win-pulse}@keyframes lk-win-pulse{0%{opacity:.1}to{opacity:.7}}.lk-booster{z-index:4;width:max-content;box-shadow:inset 0 0 0 1px #d4a94e, var(--lk-shadow-object);background:linear-gradient(#4a2410,#2a1208);border-radius:14px;align-items:center;gap:10px;margin:0 auto 30px;padding:6px 7px 6px 12px;display:flex;position:relative}.lk-booster>span{color:var(--lk-gold);font:700 11px var(--lk-display-font);letter-spacing:.08em}.lk-window{background:var(--lk-display);border-radius:9px;width:160px;height:40px;position:relative;overflow:hidden;box-shadow:inset 0 2px 6px #0009}.lk-window:after{content:"";background:linear-gradient(180deg, var(--lk-display), transparent 30%, transparent 70%, var(--lk-display));position:absolute;inset:0}.lk-window ul{will-change:transform;margin:0;padding:0;list-style:none}.lk-window li{color:#f5ecd6;white-space:nowrap;align-items:center;gap:8px;height:40px;padding:0 10px;font-size:13px;font-weight:600;display:flex}.lk-window li img{width:22px;height:22px}.lk-booster.is-blur ul{filter:blur(1.4px)}.lk-booster.is-set .lk-window{box-shadow:inset 0 2px 6px #0009, 0 0 0 2px var(--lk-gold), 0 0 16px #e2bd6380}.lk-bonus{z-index:6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#140a05cc;place-items:center;animation:.35s both lk-fade-in;display:grid;position:absolute;inset:0}.lk-bonus-card{text-align:center}.lk-bonus-card h3{font:italic 700 32px var(--lk-display-font);color:var(--lk-gold-hi);margin:0 0 4px}.lk-bonus-card p{color:var(--lk-text-muted);margin:0 0 22px}.lk-coin-stage{perspective:900px;width:220px;height:260px;margin:0 auto;position:relative}.lk-coin{width:160px;height:160px;transform-style:preserve-3d;position:absolute;top:60px;left:30px}.lk-coin-face{backface-visibility:hidden;border-radius:50%;place-items:center;font-size:24px;font-weight:700;display:grid;position:absolute;inset:0}.lk-coin-face small{opacity:.85;font-size:11px;font-weight:600;display:block}.lk-coin-face--gold{color:#2a1a05;background:radial-gradient(circle at 34% 28%,#fff3c4,#d4a94e 48%,#6b4a14);box-shadow:inset 0 0 0 7px #ffffff4d,inset 0 0 0 9px #5a3c0a73}.lk-coin-face--ruby{color:#fff;background:radial-gradient(circle at 34% 28%,#ff9aa5,#9e1b2a 50%,#3a0710);transform:rotateX(180deg);box-shadow:inset 0 0 0 7px #ffffff38,inset 0 0 0 9px #ffd68c80}.lk-coin-shadow{background:radial-gradient(closest-side,#00000080,#0000);border-radius:50%;height:18px;position:absolute;bottom:16px;left:50px;right:50px}.lk-hunt{perspective:900px;grid-template-columns:repeat(6,72px);gap:10px;margin:0 auto 8px;display:grid}.lk-hunt button{height:72px;transform-style:preserve-3d;transition:transform .7s var(--lk-ease-expo);background:0 0;border:0;padding:0;position:relative}.lk-hunt button.is-open{transform:rotateY(180deg)}.lk-hunt .lk-face,.lk-hunt .lk-back{backface-visibility:hidden;border-radius:14px;place-items:center;display:grid;position:absolute;inset:0}.lk-hunt .lk-face{color:var(--lk-gold);background:linear-gradient(#4a2410,#2a1208);font-size:22px;box-shadow:inset 0 0 0 1px #d4a94e,0 6px 14px #00000080}.lk-hunt button:not(.is-open):hover .lk-face{box-shadow:inset 0 0 0 2px #f3d488,0 0 18px #ffc86e80}.lk-hunt .lk-back{color:#2a1a0a;background:#f4ead3;font-size:13px;font-weight:600;transform:rotateY(180deg);box-shadow:inset 0 0 0 1px #b08a3a}.lk-hunt .lk-back.is-pick{color:#2a1a05;background:linear-gradient(#f6dd96,#c99a3e);box-shadow:0 0 26px #ffc86e99}.lk-window--boost{width:132px}.lk-window--boost li{color:var(--lk-gold-hi);font:800 12px var(--font-sans,inherit);letter-spacing:.06em;justify-content:center}.lk-window--boost.is-set{box-shadow:inset 0 2px 6px #0009,0 0 0 2px #f6dd96,0 0 18px #ffd36eb3}.lk-booster-x{min-width:38px;height:28px;font:800 14px var(--font-sans,inherit);color:#2a1a058c;background:linear-gradient(#8a6420,#5a3c0e);border-radius:999px;place-items:center;padding:0 8px;transition:color .3s,background .3s,box-shadow .3s;display:grid}.lk-booster-x.is-set{color:#2a1a05;animation:lk-bolt-in .5s var(--lk-ease-expo) both;background:linear-gradient(#fff3c4,#d4a94e 55%,#a77c2c);box-shadow:0 0 14px #ffd36ecc}.lk-wheel-boost{fill:#ffd66e6b;stroke:#fff4d6;stroke-width:3px;animation:lk-wheel-boost-in .6s var(--lk-ease-expo) both, lk-wheel-boost 1s .6s ease-in-out infinite alternate}.lk-wheel-badge{transform-box:fill-box;transform-origin:50%;animation:lk-badge-in .5s .2s var(--lk-ease-expo) both}.lk-wheel-badge text{font:900 13px var(--font-sans,inherit);fill:#2a1a05;text-anchor:middle;dominant-baseline:central}@keyframes lk-wheel-boost-in{0%{fill:#fffffff2}}@keyframes lk-wheel-boost{to{fill:#ffd66e9e;stroke-width:5px}}@media (prefers-reduced-motion:reduce){.lk-booster-x.is-set,.lk-wheel-boost,.lk-wheel-badge,:is(.lk-ticket--double,.lk-ticket--forever) .is-match b{animation:none}}`})),hn,gn=n((()=>{$t(),tn(),rn(),on(),cn(),un(),fn(),mn(),hn=[an,pn,dn,sn,nn,ln,Qt,en].join(`
|
|
2
|
+
`)})),_n,vn=n((()=>{_n=class extends Event{constructor(e,t,n,r){super(`context-request`,{bubbles:!0,composed:!0}),this.context=e,this.contextTarget=t,this.callback=n,this.subscribe=r??!1}}}));function yn(e){return e}var bn=n((()=>{})),xn,Sn=n((()=>{vn(),xn=class{constructor(e,t,n,r){if(this.subscribe=!1,this.provided=!1,this.value=void 0,this.t=(e,t)=>{this.unsubscribe&&(this.unsubscribe!==t&&(this.provided=!1,this.unsubscribe()),this.subscribe||this.unsubscribe()),this.value=e,this.host.requestUpdate(),this.provided&&!this.subscribe||(this.provided=!0,this.callback&&this.callback(e,t)),this.unsubscribe=t},this.host=e,t.context!==void 0){let e=t;this.context=e.context,this.callback=e.callback,this.subscribe=e.subscribe??!1}else this.context=t,this.callback=n,this.subscribe=r??!1;this.host.addController(this)}hostConnected(){this.dispatchRequest()}hostDisconnected(){this.unsubscribe&&=(this.unsubscribe(),void 0)}dispatchRequest(){this.host.dispatchEvent(new _n(this.context,this.host,this.t,this.subscribe))}}})),Cn,wn=n((()=>{Cn=class{get value(){return this.o}set value(e){this.setValue(e)}setValue(e,t=!1){let n=t||!Object.is(e,this.o);this.o=e,n&&this.updateObservers()}constructor(e){this.subscriptions=new Map,this.updateObservers=()=>{for(let[e,{disposer:t}]of this.subscriptions)e(this.o,t)},e!==void 0&&(this.value=e)}addCallback(e,t,n){if(!n)return void e(this.value);this.subscriptions.has(e)||this.subscriptions.set(e,{disposer:()=>{this.subscriptions.delete(e)},consumerHost:t});let{disposer:r}=this.subscriptions.get(e);e(this.value,r)}clearCallbacks(){this.subscriptions.clear()}}})),Tn,En,Dn=n((()=>{vn(),wn(),Tn=class extends Event{constructor(e,t){super(`context-provider`,{bubbles:!0,composed:!0}),this.context=e,this.contextTarget=t}},En=class extends Cn{constructor(e,t,n){super(t.context===void 0?n:t.initialValue),this.onContextRequest=e=>{if(e.context!==this.context)return;let t=e.contextTarget??e.composedPath()[0];t!==this.host&&(e.stopPropagation(),this.addCallback(e.callback,t,e.subscribe))},this.onProviderRequest=e=>{if(e.context!==this.context||(e.contextTarget??e.composedPath()[0])===this.host)return;let t=new Set;for(let[e,{consumerHost:n}]of this.subscriptions)t.has(e)||(t.add(e),n.dispatchEvent(new _n(this.context,n,e,!0)));e.stopPropagation()},this.host=e,this.context=t.context===void 0?t:t.context,this.attachListeners(),this.host.addController?.(this)}attachListeners(){this.host.addEventListener(`context-request`,this.onContextRequest),this.host.addEventListener(`context-provider`,this.onProviderRequest)}hostConnected(){this.host.dispatchEvent(new Tn(this.context,this.host))}}}));function On({context:e}){return(t,n)=>{let r=new WeakMap;if(typeof n==`object`)return{get(){return t.get.call(this)},set(e){return r.get(this).setValue(e),t.set.call(this,e)},init(t){return r.set(this,new En(this,{context:e,initialValue:t})),t}};{t.constructor.addInitializer((t=>{r.set(t,new En(t,{context:e}))}));let i=Object.getOwnPropertyDescriptor(t,n),a;if(i===void 0){let e=new WeakMap;a={get(){return e.get(this)},set(t){r.get(this).setValue(t),e.set(this,t)},configurable:!0,enumerable:!0}}else{let e=i.set;a={...i,set(t){r.get(this).setValue(t),e?.call(this,t)}}}Object.defineProperty(t,n,a);return}}}var kn=n((()=>{Dn()}));function An({context:e,subscribe:t}){return(n,r)=>{typeof r==`object`?r.addInitializer((function(){new xn(this,{context:e,callback:e=>{n.set.call(this,e)},subscribe:t})})):n.constructor.addInitializer((n=>{new xn(n,{context:e,callback:e=>{n[r]=e},subscribe:t})}))}}var jn=n((()=>{Sn()})),Mn=n((()=>{vn(),bn(),Sn(),Dn(),kn(),jn()})),Nn,Pn,Fn,In,Ln,Rn,zn,Bn,Vn=n((()=>{Nn=globalThis,Pn=Nn.ShadowRoot&&(Nn.ShadyCSS===void 0||Nn.ShadyCSS.nativeShadow)&&`adoptedStyleSheets`in Document.prototype&&`replace`in CSSStyleSheet.prototype,Fn=Symbol(),In=new WeakMap,Ln=class{constructor(e,t,n){if(this._$cssResult$=!0,n!==Fn)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=e,this.t=t}get styleSheet(){let e=this.o,t=this.t;if(Pn&&e===void 0){let n=t!==void 0&&t.length===1;n&&(e=In.get(t)),e===void 0&&((this.o=e=new CSSStyleSheet).replaceSync(this.cssText),n&&In.set(t,e))}return e}toString(){return this.cssText}},Rn=e=>new Ln(typeof e==`string`?e:e+``,void 0,Fn),zn=(e,t)=>{if(Pn)e.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(let n of t){let t=document.createElement(`style`),r=Nn.litNonce;r!==void 0&&t.setAttribute(`nonce`,r),t.textContent=n.cssText,e.appendChild(t)}},Bn=Pn?e=>e:e=>e instanceof CSSStyleSheet?(e=>{let t=``;for(let n of e.cssRules)t+=n.cssText;return Rn(t)})(e):e})),Hn,Un,Wn,Gn,Kn,qn,Jn,Yn,Xn,Zn,Qn,$n,er,tr,nr,rr=n((()=>{Vn(),{is:Hn,defineProperty:Un,getOwnPropertyDescriptor:Wn,getOwnPropertyNames:Gn,getOwnPropertySymbols:Kn,getPrototypeOf:qn}=Object,Jn=globalThis,Yn=Jn.trustedTypes,Xn=Yn?Yn.emptyScript:``,Zn=Jn.reactiveElementPolyfillSupport,Qn=(e,t)=>e,$n={toAttribute(e,t){switch(t){case Boolean:e=e?Xn:null;break;case Object:case Array:e=e==null?e:JSON.stringify(e)}return e},fromAttribute(e,t){let n=e;switch(t){case Boolean:n=e!==null;break;case Number:n=e===null?null:Number(e);break;case Object:case Array:try{n=JSON.parse(e)}catch{n=null}}return n}},er=(e,t)=>!Hn(e,t),tr={attribute:!0,type:String,converter:$n,reflect:!1,useDefault:!1,hasChanged:er},Symbol.metadata??=Symbol(`metadata`),Jn.litPropertyMetadata??=new WeakMap,nr=class extends HTMLElement{static addInitializer(e){this._$Ei(),(this.l??=[]).push(e)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(e,t=tr){if(t.state&&(t.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(e)&&((t=Object.create(t)).wrapped=!0),this.elementProperties.set(e,t),!t.noAccessor){let n=Symbol(),r=this.getPropertyDescriptor(e,n,t);r!==void 0&&Un(this.prototype,e,r)}}static getPropertyDescriptor(e,t,n){let{get:r,set:i}=Wn(this.prototype,e)??{get(){return this[t]},set(e){this[t]=e}};return{get:r,set(t){let a=r?.call(this);i?.call(this,t),this.requestUpdate(e,a,n)},configurable:!0,enumerable:!0}}static getPropertyOptions(e){return this.elementProperties.get(e)??tr}static _$Ei(){if(this.hasOwnProperty(Qn(`elementProperties`)))return;let e=qn(this);e.finalize(),e.l!==void 0&&(this.l=[...e.l]),this.elementProperties=new Map(e.elementProperties)}static finalize(){if(this.hasOwnProperty(Qn(`finalized`)))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Qn(`properties`))){let e=this.properties,t=[...Gn(e),...Kn(e)];for(let n of t)this.createProperty(n,e[n])}let e=this[Symbol.metadata];if(e!==null){let t=litPropertyMetadata.get(e);if(t!==void 0)for(let[e,n]of t)this.elementProperties.set(e,n)}this._$Eh=new Map;for(let[e,t]of this.elementProperties){let n=this._$Eu(e,t);n!==void 0&&this._$Eh.set(n,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(e){let t=[];if(Array.isArray(e)){let n=new Set(e.flat(1/0).reverse());for(let e of n)t.unshift(Bn(e))}else e!==void 0&&t.push(Bn(e));return t}static _$Eu(e,t){let n=t.attribute;return!1===n?void 0:typeof n==`string`?n:typeof e==`string`?e.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),this.constructor.l?.forEach(e=>e(this))}addController(e){(this._$EO??=new Set).add(e),this.renderRoot!==void 0&&this.isConnected&&e.hostConnected?.()}removeController(e){this._$EO?.delete(e)}_$E_(){let e=new Map,t=this.constructor.elementProperties;for(let n of t.keys())this.hasOwnProperty(n)&&(e.set(n,this[n]),delete this[n]);e.size>0&&(this._$Ep=e)}createRenderRoot(){let e=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return zn(e,this.constructor.elementStyles),e}connectedCallback(){this.renderRoot??=this.createRenderRoot(),this.enableUpdating(!0),this._$EO?.forEach(e=>e.hostConnected?.())}enableUpdating(e){}disconnectedCallback(){this._$EO?.forEach(e=>e.hostDisconnected?.())}attributeChangedCallback(e,t,n){this._$AK(e,n)}_$ET(e,t){let n=this.constructor.elementProperties.get(e),r=this.constructor._$Eu(e,n);if(r!==void 0&&!0===n.reflect){let i=(n.converter?.toAttribute===void 0?$n:n.converter).toAttribute(t,n.type);this._$Em=e,i==null?this.removeAttribute(r):this.setAttribute(r,i),this._$Em=null}}_$AK(e,t){let n=this.constructor,r=n._$Eh.get(e);if(r!==void 0&&this._$Em!==r){let e=n.getPropertyOptions(r),i=typeof e.converter==`function`?{fromAttribute:e.converter}:e.converter?.fromAttribute===void 0?$n:e.converter;this._$Em=r;let a=i.fromAttribute(t,e.type);this[r]=a??this._$Ej?.get(r)??a,this._$Em=null}}requestUpdate(e,t,n,r=!1,i){if(e!==void 0){let a=this.constructor;if(!1===r&&(i=this[e]),n??=a.getPropertyOptions(e),!((n.hasChanged??er)(i,t)||n.useDefault&&n.reflect&&i===this._$Ej?.get(e)&&!this.hasAttribute(a._$Eu(e,n))))return;this.C(e,t,n)}!1===this.isUpdatePending&&(this._$ES=this._$EP())}C(e,t,{useDefault:n,reflect:r,wrapped:i},a){n&&!(this._$Ej??=new Map).has(e)&&(this._$Ej.set(e,a??t??this[e]),!0!==i||a!==void 0)||(this._$AL.has(e)||(this.hasUpdated||n||(t=void 0),this._$AL.set(e,t)),!0===r&&this._$Em!==e&&(this._$Eq??=new Set).add(e))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}let e=this.scheduleUpdate();return e!=null&&await e,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??=this.createRenderRoot(),this._$Ep){for(let[e,t]of this._$Ep)this[e]=t;this._$Ep=void 0}let e=this.constructor.elementProperties;if(e.size>0)for(let[t,n]of e){let{wrapped:e}=n,r=this[t];!0!==e||this._$AL.has(t)||r===void 0||this.C(t,void 0,n,r)}}let e=!1,t=this._$AL;try{e=this.shouldUpdate(t),e?(this.willUpdate(t),this._$EO?.forEach(e=>e.hostUpdate?.()),this.update(t)):this._$EM()}catch(t){throw e=!1,this._$EM(),t}e&&this._$AE(t)}willUpdate(e){}_$AE(e){this._$EO?.forEach(e=>e.hostUpdated?.()),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(e)),this.updated(e)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(e){return!0}update(e){this._$Eq&&=this._$Eq.forEach(e=>this._$ET(e,this[e])),this._$EM()}updated(e){}firstUpdated(e){}},nr.elementStyles=[],nr.shadowRootOptions={mode:`open`},nr[Qn(`elementProperties`)]=new Map,nr[Qn(`finalized`)]=new Map,Zn?.({ReactiveElement:nr}),(Jn.reactiveElementVersions??=[]).push(`2.1.2`)}));function ir(e,t){if(!_r(e)||!e.hasOwnProperty(`raw`))throw Error(`invalid template strings array`);return lr===void 0?t:lr.createHTML(t)}function ar(e,t,n=e,r){if(t===kr)return t;let i=r===void 0?n._$Cl:n._$Co?.[r],a=gr(t)?void 0:t._$litDirective$;return i?.constructor!==a&&(i?._$AO?.(!1),a===void 0?i=void 0:(i=new a(e),i._$AT(e,n,r)),r===void 0?n._$Cl=i:(n._$Co??=[])[r]=i),i!==void 0&&(t=ar(e,i._$AS(e,t.values),i,r)),t}var or,sr,cr,lr,ur,dr,fr,pr,mr,hr,gr,_r,vr,yr,br,xr,Sr,Cr,wr,Tr,Er,Dr,h,g,Or,kr,_,Ar,jr,Mr,Nr,Pr,Fr,Ir,Lr,Rr,zr,Br,Vr,Hr,Ur,Wr=n((()=>{or=globalThis,sr=e=>e,cr=or.trustedTypes,lr=cr?cr.createPolicy(`lit-html`,{createHTML:e=>e}):void 0,ur=`$lit$`,dr=`lit$${Math.random().toFixed(9).slice(2)}$`,fr=`?`+dr,pr=`<${fr}>`,mr=document,hr=()=>mr.createComment(``),gr=e=>e===null||typeof e!=`object`&&typeof e!=`function`,_r=Array.isArray,vr=e=>_r(e)||typeof e?.[Symbol.iterator]==`function`,yr=`[
|
|
3
|
+
\f\r]`,br=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,xr=/-->/g,Sr=/>/g,Cr=RegExp(`>|${yr}(?:([^\\s"'>=/]+)(${yr}*=${yr}*(?:[^ \t\n\f\r"'\`<>=]|("|')|))|$)`,`g`),wr=/'/g,Tr=/"/g,Er=/^(?:script|style|textarea|title)$/i,Dr=e=>(t,...n)=>({_$litType$:e,strings:t,values:n}),h=Dr(1),g=Dr(2),Or=Dr(3),kr=Symbol.for(`lit-noChange`),_=Symbol.for(`lit-nothing`),Ar=new WeakMap,jr=mr.createTreeWalker(mr,129),Mr=(e,t)=>{let n=e.length-1,r=[],i,a=t===2?`<svg>`:t===3?`<math>`:``,o=br;for(let t=0;t<n;t++){let n=e[t],s,c,l=-1,u=0;for(;u<n.length&&(o.lastIndex=u,c=o.exec(n),c!==null);)u=o.lastIndex,o===br?c[1]===`!--`?o=xr:c[1]===void 0?c[2]===void 0?c[3]!==void 0&&(o=Cr):(Er.test(c[2])&&(i=RegExp(`</`+c[2],`g`)),o=Cr):o=Sr:o===Cr?c[0]===`>`?(o=i??br,l=-1):c[1]===void 0?l=-2:(l=o.lastIndex-c[2].length,s=c[1],o=c[3]===void 0?Cr:c[3]===`"`?Tr:wr):o===Tr||o===wr?o=Cr:o===xr||o===Sr?o=br:(o=Cr,i=void 0);let d=o===Cr&&e[t+1].startsWith(`/>`)?` `:``;a+=o===br?n+pr:l>=0?(r.push(s),n.slice(0,l)+ur+n.slice(l)+dr+d):n+dr+(l===-2?t:d)}return[ir(e,a+(e[n]||`<?>`)+(t===2?`</svg>`:t===3?`</math>`:``)),r]},Nr=class e{constructor({strings:t,_$litType$:n},r){let i;this.parts=[];let a=0,o=0,s=t.length-1,c=this.parts,[l,u]=Mr(t,n);if(this.el=e.createElement(l,r),jr.currentNode=this.el.content,n===2||n===3){let e=this.el.content.firstChild;e.replaceWith(...e.childNodes)}for(;(i=jr.nextNode())!==null&&c.length<s;){if(i.nodeType===1){if(i.hasAttributes())for(let e of i.getAttributeNames())if(e.endsWith(ur)){let t=u[o++],n=i.getAttribute(e).split(dr),r=/([.?@])?(.*)/.exec(t);c.push({type:1,index:a,name:r[2],strings:n,ctor:r[1]===`.`?Lr:r[1]===`?`?Rr:r[1]===`@`?zr:Ir}),i.removeAttribute(e)}else e.startsWith(dr)&&(c.push({type:6,index:a}),i.removeAttribute(e));if(Er.test(i.tagName)){let e=i.textContent.split(dr),t=e.length-1;if(t>0){i.textContent=cr?cr.emptyScript:``;for(let n=0;n<t;n++)i.append(e[n],hr()),jr.nextNode(),c.push({type:2,index:++a});i.append(e[t],hr())}}}else if(i.nodeType===8){if(i.data===fr)c.push({type:2,index:a});else{let e=-1;for(;(e=i.data.indexOf(dr,e+1))!==-1;)c.push({type:7,index:a}),e+=dr.length-1}}a++}}static createElement(e,t){let n=mr.createElement(`template`);return n.innerHTML=e,n}},Pr=class{constructor(e,t){this._$AV=[],this._$AN=void 0,this._$AD=e,this._$AM=t}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(e){let{el:{content:t},parts:n}=this._$AD,r=(e?.creationScope??mr).importNode(t,!0);jr.currentNode=r;let i=jr.nextNode(),a=0,o=0,s=n[0];for(;s!==void 0;){if(a===s.index){let t;s.type===2?t=new Fr(i,i.nextSibling,this,e):s.type===1?t=new s.ctor(i,s.name,s.strings,this,e):s.type===6&&(t=new Br(i,this,e)),this._$AV.push(t),s=n[++o]}a!==s?.index&&(i=jr.nextNode(),a++)}return jr.currentNode=mr,r}p(e){let t=0;for(let n of this._$AV)n!==void 0&&(n.strings===void 0?n._$AI(e[t]):(n._$AI(e,n,t),t+=n.strings.length-2)),t++}},Fr=class e{get _$AU(){return this._$AM?._$AU??this._$Cv}constructor(e,t,n,r){this.type=2,this._$AH=_,this._$AN=void 0,this._$AA=e,this._$AB=t,this._$AM=n,this.options=r,this._$Cv=r?.isConnected??!0}get parentNode(){let e=this._$AA.parentNode,t=this._$AM;return t!==void 0&&e?.nodeType===11&&(e=t.parentNode),e}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(e,t=this){e=ar(this,e,t),gr(e)?e===_||e==null||e===``?(this._$AH!==_&&this._$AR(),this._$AH=_):e!==this._$AH&&e!==kr&&this._(e):e._$litType$===void 0?e.nodeType===void 0?vr(e)?this.k(e):this._(e):this.T(e):this.$(e)}O(e){return this._$AA.parentNode.insertBefore(e,this._$AB)}T(e){this._$AH!==e&&(this._$AR(),this._$AH=this.O(e))}_(e){this._$AH!==_&&gr(this._$AH)?this._$AA.nextSibling.data=e:this.T(mr.createTextNode(e)),this._$AH=e}$(e){let{values:t,_$litType$:n}=e,r=typeof n==`number`?this._$AC(e):(n.el===void 0&&(n.el=Nr.createElement(ir(n.h,n.h[0]),this.options)),n);if(this._$AH?._$AD===r)this._$AH.p(t);else{let e=new Pr(r,this),n=e.u(this.options);e.p(t),this.T(n),this._$AH=e}}_$AC(e){let t=Ar.get(e.strings);return t===void 0&&Ar.set(e.strings,t=new Nr(e)),t}k(t){_r(this._$AH)||(this._$AH=[],this._$AR());let n=this._$AH,r,i=0;for(let a of t)i===n.length?n.push(r=new e(this.O(hr()),this.O(hr()),this,this.options)):r=n[i],r._$AI(a),i++;i<n.length&&(this._$AR(r&&r._$AB.nextSibling,i),n.length=i)}_$AR(e=this._$AA.nextSibling,t){for(this._$AP?.(!1,!0,t);e!==this._$AB;){let t=sr(e).nextSibling;sr(e).remove(),e=t}}setConnected(e){this._$AM===void 0&&(this._$Cv=e,this._$AP?.(e))}},Ir=class{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(e,t,n,r,i){this.type=1,this._$AH=_,this._$AN=void 0,this.element=e,this.name=t,this._$AM=r,this.options=i,n.length>2||n[0]!==``||n[1]!==``?(this._$AH=Array(n.length-1).fill(new String),this.strings=n):this._$AH=_}_$AI(e,t=this,n,r){let i=this.strings,a=!1;if(i===void 0)e=ar(this,e,t,0),a=!gr(e)||e!==this._$AH&&e!==kr,a&&(this._$AH=e);else{let r=e,o,s;for(e=i[0],o=0;o<i.length-1;o++)s=ar(this,r[n+o],t,o),s===kr&&(s=this._$AH[o]),a||=!gr(s)||s!==this._$AH[o],s===_?e=_:e!==_&&(e+=(s??``)+i[o+1]),this._$AH[o]=s}a&&!r&&this.j(e)}j(e){e===_?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,e??``)}},Lr=class extends Ir{constructor(){super(...arguments),this.type=3}j(e){this.element[this.name]=e===_?void 0:e}},Rr=class extends Ir{constructor(){super(...arguments),this.type=4}j(e){this.element.toggleAttribute(this.name,!!e&&e!==_)}},zr=class extends Ir{constructor(e,t,n,r,i){super(e,t,n,r,i),this.type=5}_$AI(e,t=this){if((e=ar(this,e,t,0)??_)===kr)return;let n=this._$AH,r=e===_&&n!==_||e.capture!==n.capture||e.once!==n.once||e.passive!==n.passive,i=e!==_&&(n===_||r);r&&this.element.removeEventListener(this.name,this,n),i&&this.element.addEventListener(this.name,this,e),this._$AH=e}handleEvent(e){typeof this._$AH==`function`?this._$AH.call(this.options?.host??this.element,e):this._$AH.handleEvent(e)}},Br=class{constructor(e,t,n){this.element=e,this.type=6,this._$AN=void 0,this._$AM=t,this.options=n}get _$AU(){return this._$AM._$AU}_$AI(e){ar(this,e)}},Vr={M:ur,P:dr,A:fr,C:1,L:Mr,R:Pr,D:vr,V:ar,I:Fr,H:Ir,N:Rr,U:zr,B:Lr,F:Br},Hr=or.litHtmlPolyfillSupport,Hr?.(Nr,Fr),(or.litHtmlVersions??=[]).push(`3.3.3`),Ur=(e,t,n)=>{let r=n?.renderBefore??t,i=r._$litPart$;if(i===void 0){let e=n?.renderBefore??null;r._$litPart$=i=new Fr(t.insertBefore(hr(),e),e,void 0,n??{})}return i._$AI(e),i}})),Gr,Kr,qr,Jr=n((()=>{rr(),rr(),Wr(),Wr(),Gr=globalThis,Kr=class extends nr{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){let e=super.createRenderRoot();return this.renderOptions.renderBefore??=e.firstChild,e}update(e){let t=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(e),this._$Do=Ur(t,this.renderRoot,this.renderOptions)}connectedCallback(){super.connectedCallback(),this._$Do?.setConnected(!0)}disconnectedCallback(){super.disconnectedCallback(),this._$Do?.setConnected(!1)}render(){return kr}},Kr._$litElement$=!0,Kr.finalized=!0,Gr.litElementHydrateSupport?.({LitElement:Kr}),qr=Gr.litElementPolyfillSupport,qr?.({LitElement:Kr}),(Gr.litElementVersions??=[]).push(`4.2.2`)})),Yr=n((()=>{})),v=n((()=>{rr(),Wr(),Jr(),Yr()})),y,Xr=n((()=>{y=e=>(t,n)=>{n===void 0?customElements.define(e,t):n.addInitializer(()=>{customElements.define(e,t)})}}));function b(e){return(t,n)=>typeof n==`object`?Qr(e,t,n):((e,t,n)=>{let r=t.hasOwnProperty(n);return t.constructor.createProperty(n,e),r?Object.getOwnPropertyDescriptor(t,n):void 0})(e,t,n)}var Zr,Qr,$r=n((()=>{rr(),Zr={attribute:!0,type:String,converter:$n,reflect:!1,hasChanged:er},Qr=(e=Zr,t,n)=>{let{kind:r,metadata:i}=n,a=globalThis.litPropertyMetadata.get(i);if(a===void 0&&globalThis.litPropertyMetadata.set(i,a=new Map),r===`setter`&&((e=Object.create(e)).wrapped=!0),a.set(n.name,e),r===`accessor`){let{name:r}=n;return{set(n){let i=t.get.call(this);t.set.call(this,n),this.requestUpdate(r,i,e,!0,n)},init(t){return t!==void 0&&this.C(r,void 0,e,t),t}}}if(r===`setter`){let{name:r}=n;return function(n){let i=this[r];t.call(this,n),this.requestUpdate(r,i,e,!0,n)}}throw Error(`Unsupported decorator location: `+r)}}));function x(e){return b({...e,state:!0,attribute:!1})}var ei=n((()=>{$r()})),ti=n((()=>{})),ni,ri=n((()=>{ni=(e,t,n)=>(n.configurable=!0,n.enumerable=!0,Reflect.decorate&&typeof t!=`object`&&Object.defineProperty(e,t,n),n)}));function S(e,t){return(n,r,i)=>{let a=t=>t.renderRoot?.querySelector(e)??null;if(t){let{get:e,set:t}=typeof r==`object`?n:i??(()=>{let e=Symbol();return{get(){return this[e]},set(t){this[e]=t}}})();return ni(n,r,{get(){let n=e.call(this);return n===void 0&&(n=a(this),(n!==null||this.hasUpdated)&&t.call(this,n)),n}})}return ni(n,r,{get(){return a(this)}})}}var ii=n((()=>{ri()})),ai=n((()=>{})),oi=n((()=>{})),si=n((()=>{})),ci=n((()=>{})),C=n((()=>{Xr(),$r(),ei(),ti(),ii(),ai(),oi(),si(),ci()})),li,ui,di,fi=n((()=>{li={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},ui=e=>(...t)=>({_$litDirective$:e,values:t}),di=class{constructor(e){}get _$AU(){return this._$AM._$AU}_$AT(e,t,n){this._$Ct=e,this._$AM=t,this._$Ci=n}_$AS(e,t){return this.update(e,t)}update(e,t){return this.render(...t)}}})),pi,mi,hi,gi,_i,vi,yi,bi,xi,Si,Ci=n((()=>{Wr(),{I:pi}=Vr,mi=e=>e,hi=e=>e.strings===void 0,gi=()=>document.createComment(``),_i=(e,t,n)=>{let r=e._$AA.parentNode,i=t===void 0?e._$AB:t._$AA;if(n===void 0){let t=r.insertBefore(gi(),i),a=r.insertBefore(gi(),i);n=new pi(t,a,e,e.options)}else{let t=n._$AB.nextSibling,a=n._$AM,o=a!==e;if(o){let t;n._$AQ?.(e),n._$AM=e,n._$AP!==void 0&&(t=e._$AU)!==a._$AU&&n._$AP(t)}if(t!==i||o){let e=n._$AA;for(;e!==t;){let t=mi(e).nextSibling;mi(r).insertBefore(e,i),e=t}}}return n},vi=(e,t,n=e)=>(e._$AI(t,n),e),yi={},bi=(e,t=yi)=>e._$AH=t,xi=e=>e._$AH,Si=e=>{e._$AR(),e._$AA.remove()}})),wi,Ti=n((()=>{Wr(),fi(),Ci(),wi=ui(class extends di{constructor(){super(...arguments),this.key=_}render(e,t){return this.key=e,t}update(e,[t,n]){return t!==this.key&&(bi(e),this.key=t),n}})})),Ei=n((()=>{Ti()})),Di,Oi,ki,Ai,ji,Mi,Ni=n((()=>{Wr(),Di=Symbol.for(``),Oi=e=>{if(e?.r===Di)return e?._$litStatic$},ki=e=>({_$litStatic$:e,r:Di}),Ai=new Map,ji=e=>(t,...n)=>{let r=n.length,i,a,o=[],s=[],c,l=0,u=!1;for(;l<r;){for(c=t[l];l<r&&(a=n[l],(i=Oi(a))!==void 0);)c+=i+t[++l],u=!0;l!==r&&s.push(a),o.push(c),l++}if(l===r&&o.push(t[r]),u){let e=o.join(`$$lit$$`);(t=Ai.get(e))===void 0&&(o.raw=o,Ai.set(e,t=o)),n=s}return e(t,...n)},Mi=ji(h),ji(g),ji(Or)})),Pi=n((()=>{Ni()})),Fi,Ii=n((()=>{Fi=[[`path`,{d:`m12 19-7-7 7-7`}],[`path`,{d:`M19 12H5`}]]})),Li,Ri=n((()=>{Li=[[`path`,{d:`M5 12h14`}],[`path`,{d:`m12 5 7 7-7 7`}]]})),zi,Bi=n((()=>{zi=[[`path`,{d:`M20 6 9 17l-5-5`}]]})),Vi,Hi=n((()=>{Vi=[[`path`,{d:`m9 18 6-6-6-6`}]]})),Ui,Wi=n((()=>{Ui=[[`path`,{d:`m17 11-5-5-5 5`}],[`path`,{d:`m17 18-5-5-5 5`}]]})),Gi,Ki=n((()=>{Gi=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M12 8v8`}],[`path`,{d:`m8 12 4 4 4-4`}]]})),qi,Ji=n((()=>{qi=[[`path`,{d:`M10.1 2.182a10 10 0 0 1 3.8 0`}],[`path`,{d:`M13.9 21.818a10 10 0 0 1-3.8 0`}],[`path`,{d:`M17.609 3.721a10 10 0 0 1 2.69 2.7`}],[`path`,{d:`M2.182 13.9a10 10 0 0 1 0-3.8`}],[`path`,{d:`M20.279 17.609a10 10 0 0 1-2.7 2.69`}],[`path`,{d:`M21.818 10.1a10 10 0 0 1 0 3.8`}],[`path`,{d:`M3.721 6.391a10 10 0 0 1 2.7-2.69`}],[`path`,{d:`M6.391 20.279a10 10 0 0 1-2.69-2.7`}]]})),Yi,Xi=n((()=>{Yi=[[`circle`,{cx:`12`,cy:`12`,r:`1`}],[`circle`,{cx:`12`,cy:`12`,r:`10`}]]})),Zi,Qi=n((()=>{Zi=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`}],[`path`,{d:`M12 17h.01`}]]})),$i,ea=n((()=>{$i=[[`path`,{d:`M16.17 7.83 2 22`}],[`path`,{d:`M4.02 12a2.827 2.827 0 1 1 3.81-4.17A2.827 2.827 0 1 1 12 4.02a2.827 2.827 0 1 1 4.17 3.81A2.827 2.827 0 1 1 19.98 12a2.827 2.827 0 1 1-3.81 4.17A2.827 2.827 0 1 1 12 19.98a2.827 2.827 0 1 1-4.17-3.81A1 1 0 1 1 4 12`}],[`path`,{d:`m7.83 7.83 8.34 8.34`}]]})),ta,na=n((()=>{ta=[[`path`,{d:`m18 16 4-4-4-4`}],[`path`,{d:`m6 8-4 4 4 4`}],[`path`,{d:`m14.5 4-5 16`}]]})),ra,ia=n((()=>{ra=[[`path`,{d:`M13.744 17.736a6 6 0 1 1-7.48-7.48`}],[`path`,{d:`M15 6h1v4`}],[`path`,{d:`m6.134 14.768.866-.5 2 3.464`}],[`circle`,{cx:`16`,cy:`8`,r:`6`}]]})),aa,oa=n((()=>{aa=[[`line`,{x1:`15`,x2:`15`,y1:`12`,y2:`18`}],[`line`,{x1:`12`,x2:`18`,y1:`15`,y2:`15`}],[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`}]]})),sa,ca=n((()=>{sa=[[`path`,{d:`M21 21H8a2 2 0 0 1-1.42-.587l-3.994-3.999a2 2 0 0 1 0-2.828l10-10a2 2 0 0 1 2.829 0l5.999 6a2 2 0 0 1 0 2.828L12.834 21`}],[`path`,{d:`m5.082 11.09 8.828 8.828`}]]})),la,ua=n((()=>{la=[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`}]]})),da,fa=n((()=>{da=[[`path`,{d:`M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4`}]]})),pa,ma=n((()=>{pa=[[`path`,{d:`M12 7v14`}],[`path`,{d:`M20 11v8a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-8`}],[`path`,{d:`M7.5 7a1 1 0 0 1 0-5A4.8 8 0 0 1 12 7a4.8 8 0 0 1 4.5-5 1 1 0 0 1 0 5`}],[`rect`,{x:`3`,y:`7`,width:`18`,height:`4`,rx:`1`}]]})),ha,ga=n((()=>{ha=[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`}],[`path`,{d:`M3 9h18`}],[`path`,{d:`M3 15h18`}],[`path`,{d:`M9 3v18`}],[`path`,{d:`M15 3v18`}]]})),_a,va=n((()=>{_a=[[`circle`,{cx:`9`,cy:`12`,r:`1`}],[`circle`,{cx:`9`,cy:`5`,r:`1`}],[`circle`,{cx:`9`,cy:`19`,r:`1`}],[`circle`,{cx:`15`,cy:`12`,r:`1`}],[`circle`,{cx:`15`,cy:`5`,r:`1`}],[`circle`,{cx:`15`,cy:`19`,r:`1`}]]})),ya,ba=n((()=>{ya=[[`path`,{d:`M11 15h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 17`}],[`path`,{d:`m7 21 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9`}],[`path`,{d:`m2 16 6 6`}],[`circle`,{cx:`16`,cy:`9`,r:`2.9`}],[`circle`,{cx:`6`,cy:`5`,r:`3`}]]})),xa,Sa=n((()=>{xa=[[`path`,{d:`M18 11V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2`}],[`path`,{d:`M14 10V4a2 2 0 0 0-2-2a2 2 0 0 0-2 2v2`}],[`path`,{d:`M10 10.5V6a2 2 0 0 0-2-2a2 2 0 0 0-2 2v8`}],[`path`,{d:`M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2c-2.8 0-4.5-.86-5.99-2.34l-3.6-3.6a2 2 0 0 1 2.83-2.82L7 15`}]]})),Ca,wa=n((()=>{Ca=[[`path`,{d:`M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z`}],[`path`,{d:`M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12`}],[`path`,{d:`M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17`}]]})),Ta,Ea=n((()=>{Ta=[[`rect`,{width:`7`,height:`7`,x:`3`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`3`,rx:`1`}],[`rect`,{width:`7`,height:`7`,x:`14`,y:`14`,rx:`1`}],[`rect`,{width:`7`,height:`7`,x:`3`,y:`14`,rx:`1`}]]})),Da,Oa=n((()=>{Da=[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`}]]})),ka,Aa=n((()=>{ka=[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`}],[`path`,{d:`M7 11V7a5 5 0 0 1 9.9-1`}]]})),ja,Ma=n((()=>{ja=[[`rect`,{width:`18`,height:`11`,x:`3`,y:`11`,rx:`2`,ry:`2`}],[`path`,{d:`M7 11V7a5 5 0 0 1 10 0v4`}]]})),Na,Pa=n((()=>{Na=[[`path`,{d:`M5 12h14`}]]})),Fa,Ia=n((()=>{Fa=[[`path`,{d:`M20.341 6.484A10 10 0 0 1 10.266 21.85`}],[`path`,{d:`M3.659 17.516A10 10 0 0 1 13.74 2.152`}],[`circle`,{cx:`12`,cy:`12`,r:`3`}],[`circle`,{cx:`19`,cy:`5`,r:`2`}],[`circle`,{cx:`5`,cy:`19`,r:`2`}]]})),La,Ra=n((()=>{La=[[`path`,{d:`M2 22h20`}],[`path`,{d:`M6.36 17.4 4 17l-2-4 1.1-.55a2 2 0 0 1 1.8 0l.17.1a2 2 0 0 0 1.8 0L8 12 5 6l.9-.45a2 2 0 0 1 2.09.2l4.02 3a2 2 0 0 0 2.1.2l4.19-2.06a2.41 2.41 0 0 1 1.73-.17L21 7a1.4 1.4 0 0 1 .87 1.99l-.38.76c-.23.46-.6.84-1.07 1.08L7.58 17.2a2 2 0 0 1-1.22.18Z`}]]})),za,Ba=n((()=>{za=[[`path`,{d:`m17 2 4 4-4 4`}],[`path`,{d:`M3 11v-1a4 4 0 0 1 4-4h14`}],[`path`,{d:`m7 22-4-4 4-4`}],[`path`,{d:`M21 13v1a4 4 0 0 1-4 4H3`}]]})),Va,Ha=n((()=>{Va=[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`}],[`path`,{d:`M3 3v5h5`}]]})),Ua,Wa=n((()=>{Ua=[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`}],[`path`,{d:`M21 3v5h-5`}]]})),Ga,Ka=n((()=>{Ga=[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`}],[`path`,{d:`M20 2v4`}],[`path`,{d:`M22 4h-4`}],[`circle`,{cx:`4`,cy:`20`,r:`2`}]]})),qa,Ja=n((()=>{qa=[[`path`,{d:`M16 3h5v5`}],[`path`,{d:`M8 3H3v5`}],[`path`,{d:`M12 22v-8.3a4 4 0 0 0-1.172-2.872L3 3`}],[`path`,{d:`m15 9 6-6`}]]})),Ya,Xa=n((()=>{Ya=[[`circle`,{cx:`12`,cy:`12`,r:`10`}],[`circle`,{cx:`12`,cy:`12`,r:`6`}],[`circle`,{cx:`12`,cy:`12`,r:`2`}]]})),Za,Qa=n((()=>{Za=[[`path`,{d:`M2 9a3 3 0 0 1 0 6v2a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2a3 3 0 0 1 0-6V7a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2Z`}],[`path`,{d:`M13 5v2`}],[`path`,{d:`M13 17v2`}],[`path`,{d:`M13 11v2`}]]})),$a,eo=n((()=>{$a=[[`path`,{d:`M10 11v6`}],[`path`,{d:`M14 11v6`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`}],[`path`,{d:`M3 6h18`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`}]]})),to,no=n((()=>{to=[[`path`,{d:`M9 14 4 9l5-5`}],[`path`,{d:`M4 9h10.5a5.5 5.5 0 0 1 5.5 5.5a5.5 5.5 0 0 1-5.5 5.5H11`}]]})),ro,io=n((()=>{ro=[[`path`,{d:`M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z`}],[`path`,{d:`M16 9a5 5 0 0 1 0 6`}],[`path`,{d:`M19.364 18.364a9 9 0 0 0 0-12.728`}]]})),ao,oo=n((()=>{ao=[[`path`,{d:`M11 4.702a.7.7 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.7.7 0 0 0 11 19.298z`}],[`path`,{d:`m16.5 14.5 5-5`}],[`path`,{d:`m16.5 9.5 5 5`}]]})),so,co=n((()=>{so=[[`path`,{d:`M18 6 6 18`}],[`path`,{d:`m6 6 12 12`}]]})),lo,uo=n((()=>{lo=[[`path`,{d:`M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z`}]]})),w=n((()=>{Ii(),Ri(),Bi(),Hi(),Wi(),Ki(),Ji(),Xi(),Qi(),ea(),na(),ia(),oa(),ca(),ua(),fa(),ma(),ga(),va(),ba(),Sa(),wa(),Ea(),Oa(),Aa(),Ma(),Pa(),Ia(),Ra(),Ba(),Ha(),Wa(),Ka(),Ja(),Xa(),Qa(),eo(),no(),io(),oo(),co(),uo()})),T,fo,E,D,po,O,k=n((()=>{T=(e,t)=>e+Math.random()*(t-e),fo=(e,t)=>Math.floor(T(e,t+1)),E=e=>e[Math.floor(Math.random()*e.length)],D=e=>e.map(e=>[Math.random(),e]).sort((e,t)=>e[0]-t[0]).map(([,e])=>e),po=(e,t)=>(e%t+t)%t,O=(e,t)=>Array.from({length:t-e+1},(t,n)=>e+n)}));function mo(e){let t=t=>{let n=[...new Set(e.flatMap(e=>yo(e,t).map(bo)))];return e.some(e=>!yo(e,t).length)?[...n,null]:n};return{small:t(`small`),big:t(`big`),jackpot:t(`jackpot`)}}function ho(e,t){if(t===`none`)return null;let n=yo(e,t);return n.length?bo(E(n)):null}function go(e,t,n){let r=e.filter(e=>{let r=yo(e,t);return n===null?!r.length:r.some(e=>bo(e)===n)});return r.length?r:e}async function _o(e,t,n){if(typeof e.variants==`function`)return e.variants(t);let r=yo(e,t);return r.find(e=>bo(e)===n)??(r.length?E(r):null)}var vo,yo,bo,xo,So,A=n((()=>{k(),vo=[`small`,`big`,`jackpot`],yo=(e,t)=>Array.isArray(e.variants)?e.variants.filter(e=>e.tier===t):[],bo=e=>e.short??e.label,xo=(e,t)=>O(0,t-1).map(n=>e[Math.floor(n*e.length/t)]),So=(e,t)=>`${e}:${t??``}`}));function Co(e){To=e}function wo(e){Do.value={game:e}}function j(e,t,n){let r=To[e];return r?r(t,n):n()}var To,Eo,Do,Oo,ko=n((()=>{Vt(),To={},Eo=Bt(!1),Do=Bt(void 0),Oo=Bt(0)}));function Ao(e,t){if(!t)return[];let n=2166136261;for(let t of`${e.getFullYear()}-${e.getMonth()+1}-${e.getDate()}:dealer`)n=Math.imul(n^t.charCodeAt(0),16777619)>>>0;return Array.from({length:No},(e,r)=>{let i=Po+r*Fo+(n>>>r*8)%140;return{start:i,end:i+30+(n>>>r*5+3)%61,dealer:(n+r)%t}})}function jo(e,t){let n=e.getHours()*60+e.getMinutes();return Ao(e,t).find(e=>e.start<=n&&n<e.end)?.dealer??null}function Mo(e=new Date){let t=Io.value;Lo.value=t?j(`dealer`,{count:t},()=>jo(e,t)):null}var No,Po,Fo,Io,Lo,Ro=n((()=>{Vt(),ko(),No=3,Po=600,Fo=260,Io=Bt(0),Lo=Bt(null)}));function zo(e){let t=e%19,n=Math.floor(e/100),r=e%100,i=(19*t+n-Math.floor(n/4)-Math.floor((n-Math.floor((n+8)/25)+1)/3)+15)%30,a=(32+n%4*2+2*Math.floor(r/4)-i-r%4)%7,o=Math.floor((t+11*i+22*a)/451),s=Math.floor((i+a-7*o+114)/31),c=(i+a-7*o+114)%31+1;return new Date(e,s-1,c)}function Bo(e,t){let n=/^easter([+-]\d+)?$/.exec(e);if(n){let e=zo(t);return e.setDate(e.getDate()+Number(n[1]??0)),Go(e)}return e.length===5?`${t}-${e}`:e}function Vo(e=new Date){let t=Go(e),n=e.getFullYear();return Uo.find(({from:e,to:r=e})=>[n-1,n].some(n=>{let i=Bo(e,n),a=Bo(r,n);return a<i&&(a=Bo(r,n+1)),i<=t&&t<=a}))?.theme??null}var Ho,Uo,Wo,Go,Ko,qo,Jo,Yo,Xo=n((()=>{ko(),Ho=[`christmas`,`halloween`,`easter`,`august`],Uo=[{theme:`christmas`,from:`12-08`,to:`01-06`},{theme:`halloween`,from:`10-30`,to:`10-31`},{theme:`easter`,from:`easter-6`,to:`easter+1`},{theme:`august`,from:`08-01`,to:`08-31`}],Wo=e=>String(e).padStart(2,`0`),Go=e=>`${e.getFullYear()}-${Wo(e.getMonth()+1)}-${Wo(e.getDate())}`,Ko=()=>j(`theme`,{},()=>Vo()),qo={christmas:{lights:[`#ffe3a0`,`#fff4d6`,`#ff6b5e`,`#7fd6a0`,`#ffffff`,`#f6d27a`],confetti:[`#c8202f`,`#1c7a45`,`#fff4d6`,`#f3d488`,`#d4a94e`,`#ffffff`]},halloween:{lights:[`#ffb347`,`#ff8a2a`,`#c48bff`,`#ffe3a0`,`#9be36a`],confetti:[`#ff8a2a`,`#6b2fa0`,`#1b1210`,`#f3d488`,`#9be36a`]},easter:{lights:[`#fff4d6`,`#ffc8dd`,`#cdb4ff`,`#b8f0c8`,`#fff1a8`],confetti:[`#ffc8dd`,`#cdb4ff`,`#b8f0c8`,`#fff1a8`,`#a8dcff`,`#f3d488`]},august:{lights:[`#ffe3a0`,`#ffb36b`,`#6ee0d6`,`#ff8f8f`,`#fff4d6`],confetti:[`#ffd23f`,`#3ec1c9`,`#ff6f59`,`#ffffff`,`#f3d488`]}},Jo=(e,t)=>[{d:`M${e+3} 0L${e-1} 7M${e+6} 0L${e+4} 8M${e+15} 0L${e+19} 7M${e+17} 0L${e+22} 6`,stroke:`#6b4220`,width:1.6},{d:`M${e} -4a10 4.5 0 1 0 20 0a10 4.5 0 1 0 -20 0M${e+17} -6L${e+23} -13L${e+26} -11L${e+20} -3Z`,fill:`#8a5a2b`},{d:`M${e+23} -13a4 2.6 0 1 0 8 0a4 2.6 0 1 0 -8 0`,fill:`#9a6634`},{d:`M${e+24} -15L${e+22} -21M${e+23} -18L${e+20} -19M${e+26} -15L${e+27} -21M${e+26.5} -18L${e+29} -20`,stroke:`#e6c79a`,width:1},{d:`M${e+29.5} -13a1.8 1.8 0 1 0 3.6 0a1.8 1.8 0 1 0 -3.6 0`,fill:t?`#ff3b3b`:`#3a2010`,glow:t}],Yo=[{d:`M10 -8L38 -6M10 -8L68 -6`,stroke:`#f3d488`,width:.8},...Jo(30,!1),...Jo(60,!0),{d:`M-19 -12a7 7 0 1 0 14 0a7 7 0 1 0 -14 0`,fill:`#7a4a22`},{d:`M-9 -9a7 7 0 1 0 14 0a7 7 0 1 0 -14 0`,fill:`#c8202f`},{d:`M2 -11L10 -8`,stroke:`#c8202f`,width:3},{d:`M-4 -19a4 4 0 1 0 8 0a4 4 0 1 0 -8 0`,fill:`#f2c9a0`},{d:`M-4.5 -18Q0 -9 4.5 -18Z`,fill:`#fffaf0`},{d:`M-4.5 -21Q0 -28 4.5 -21ZM-2 -25L-9 -27L-3 -22Z`,fill:`#c8202f`},{d:`M-4.8 -22.4h9.6v2.2h-9.6zM-11 -27a1.7 1.7 0 1 0 3.4 0a1.7 1.7 0 1 0 -3.4 0`,fill:`#fffaf0`},{d:`M-18 -6Q-20 -14 -15 -14L-12 -10L12 -6Q20 -4 18 4L-14 4Q-18 4 -18 -6Z`,fill:`#9e1b22`,stroke:`#d4a94e`,width:1.2},{d:`M-20 10L16 10Q24 10 22 4M-10 4v6M8 4v6`,stroke:`#d4a94e`,width:2}]}));function Zo(e=1,t=Math.random()){return t<e*rs.jackpot?`jackpot`:t<e*(rs.jackpot+rs.big)?`big`:t<e*(rs.jackpot+rs.big+rs.small)?`small`:`none`}function Qo(e=new Date){let t=2166136261;for(let n of`${e.getFullYear()}-${e.getMonth()+1}-${e.getDate()}`)t=Math.imul(t^n.charCodeAt(0),16777619)>>>0;return{game:es[t%es.length],multiplier:2+(t>>>8)%4,ticket:t>>>16&1?`forever`:`double`,machine:t>>>20&1?`breakaway`:`takeoff`}}function $o(){let e=Qo().game;return es.filter(e=>M(e)>1).sort((t,n)=>M(n)-M(t)||Number(n===e)-Number(t===e))[0]}var es,ts,ns,rs,is,as,os,ss,M,cs,ls,us,ds,N=n((()=>{Ro(),k(),ko(),es=[`wheel`,`slot`,`roulette`,`pachinko`,`scratch`],ts=[`blackjack`,`holdem`],ns=[...es,...ts],rs={jackpot:1/150,big:1/60,small:1/30},is=[`none`,`small`,`big`,`jackpot`],as=[`double`,`forever`],os=[`takeoff`,`breakaway`],ss=(e,t=new Date)=>{let n=Qo(t);return n.game===e?n.multiplier:1},M=e=>j(`boost`,{game:e},()=>ts.includes(e)?Lo.value===null?1:2:ss(e)),cs=(e,t)=>j(`tier`,{game:e,boost:t},()=>Zo(t)),ls=(e,t)=>j(`prize`,{game:e,prizeIds:t},()=>E(t)),us=()=>j(`slot.machine`,{},()=>Qo().machine),ds=()=>j(`scratch.ticket`,{},()=>Qo().ticket)})),fs,ps,ms,hs=n((()=>{Mn(),fs=yn(Symbol(`fl-room`)),ps=[`#9e1b22`,`#1d3561`,`#1c6136`,`#5b2a6e`,`#7a5418`],ms=e=>ps[e%ps.length]})),P,gs,F=n((()=>{P=()=>matchMedia(`(prefers-reduced-motion: reduce)`).matches,gs=e=>new Promise(t=>setTimeout(t,e))}));function _s(e,t=1){if(P())return;let n=6*t;e.animate([{transform:`translate(0, 0)`},{transform:`translate(${-n}px, ${n*.5}px) rotate(-0.4deg)`},{transform:`translate(${n*.8}px, ${-n*.4}px) rotate(0.3deg)`},{transform:`translate(${-n*.3}px, ${n*.2}px)`},{transform:`translate(0, 0)`}],{duration:240,easing:`linear`})}function vs(e,t,n=1,r=3){return[{R:210,r:58,d:96,turns:29},{R:150,r:42,d:64,turns:21},{R:300,r:77,d:130,turns:77}].slice(0,r).map(({R:r,r:i,d:a,turns:o})=>{let s=[];for(let c=0;c<=2400;c++){let l=c/2400*Math.PI*2*o,u=(r-i)*Math.cos(l)+a*Math.cos((r-i)/i*l),d=(r-i)*Math.sin(l)-a*Math.sin((r-i)/i*l);s.push(`${(e+u*n).toFixed(1)},${(t+d*n).toFixed(1)}`)}return s.join(` `)})}var ys,bs,I,xs=n((()=>{k(),F(),ys=[`#f3d488`,`#d4a94e`,`#fff4d6`,`#1f7a45`,`#8e1f2a`,`#c79a3e`],bs=[`#fff4d6`,`#ffe3a0`,`#f3d488`],I={canvas:null,particles:[],confetti:void 0,running:!1,last:0,attach(e){if(this.canvas=e,this.particles=[],!e)return;let t=Math.min(2,devicePixelRatio);e.width=innerWidth*t,e.height=innerHeight*t,e.getContext(`2d`).setTransform(t,0,0,t,0,0)},burst(e,t,{count:n=60,colors:r,speed:i=520,spread:a=Math.PI*2,angle:o=-Math.PI/2,type:s=`strip`,gravity:c=900,life:l=1.8}={}){if(this.canvas&&!P()){for(let u=0;u<n;u++){let n=o+T(-a/2,a/2),u=i*T(.35,1);this.particles.push({x:e,y:t,type:s,gravity:c,vx:Math.cos(n)*u,vy:Math.sin(n)*u,rotation:T(0,Math.PI*2),spin:T(-9,9),flip:T(0,Math.PI*2),flipSpeed:T(6,14),width:s===`flake`?T(1.5,3.5):T(5,10),height:s===`flake`?T(1.5,3):T(9,16),color:E(r??this.confetti??ys),age:0,life:l*T(.6,1)})}this.running||(this.running=!0,this.last=performance.now(),requestAnimationFrame(e=>this.frame(e)))}},fountain(e){let t=performance.now(),n=()=>{this.canvas&&(this.burst(T(innerWidth*.1,innerWidth*.9),innerHeight+10,{count:14,speed:1150,spread:.5,life:2.6}),performance.now()-t<e&&setTimeout(n,90))};n()},cannons(e){let t=performance.now(),n=()=>{this.canvas&&(this.burst(0,innerHeight,{count:26,speed:1350,spread:.45,angle:-Math.PI/3,life:3.2,gravity:700}),this.burst(innerWidth,innerHeight,{count:26,speed:1350,spread:.45,angle:-2*Math.PI/3,life:3.2,gravity:700}),performance.now()-t<e&&setTimeout(n,280))};n()},frame(e){let t=this.canvas;if(!t){this.running=!1;return}let n=t.getContext(`2d`),r=Math.min(.05,(e-this.last)/1e3);this.last=e,n.clearRect(0,0,innerWidth,innerHeight),this.particles=this.particles.filter(e=>(e.age+=r)<e.life&&e.y<innerHeight+40);for(let e of this.particles){let t=e.type===`strip`?.985:.97;e.vx*=t,e.vy=e.vy*t+e.gravity*r,e.x+=e.vx*r,e.y+=e.vy*r,e.rotation+=e.spin*r,e.flip+=e.flipSpeed*r,n.save(),n.globalAlpha=1-Math.max(0,(e.age-e.life*.7)/(e.life*.3)),e.type===`spark`?(n.globalCompositeOperation=`lighter`,n.strokeStyle=e.color,n.lineWidth=2,n.beginPath(),n.moveTo(e.x,e.y),n.lineTo(e.x-e.vx*.03,e.y-e.vy*.03),n.stroke()):(n.translate(e.x,e.y),n.rotate(e.rotation),n.scale(1,Math.cos(e.flip)),n.fillStyle=e.color,n.fillRect(-e.width/2,-e.height/2,e.width,e.height)),n.restore()}this.particles.length?requestAnimationFrame(e=>this.frame(e)):(this.running=!1,n.clearRect(0,0,innerWidth,innerHeight))}}}));function L(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}var R=n((()=>{})),z,B=n((()=>{Mn(),v(),C(),hs(),R(),z=class extends Kr{constructor(...e){super(...e),this.timers=new Set,this.unsubscribes=[],this.watched=[]}createRenderRoot(){return this}t(e,t){return this.room.t(e,t)}watch(...e){this.watched.push(...e),this.isConnected&&this.unsubscribes.push(...e.map(e=>e.subscribe(()=>this.requestUpdate())))}later(e,t){let n=setTimeout(()=>{this.timers.delete(n),e()},t);return this.timers.add(n),n}connectedCallback(){super.connectedCallback(),this.style.display=`contents`,this.unsubscribes=this.watched.map(e=>e.subscribe(()=>this.requestUpdate()))}disconnectedCallback(){super.disconnectedCallback(),this.timers.forEach(clearTimeout),this.timers.clear(),this.unsubscribes.forEach(e=>e()),this.unsubscribes=[]}},L([An({context:fs,subscribe:!0}),x()],z.prototype,`room`,void 0)})),Ss,Cs=n((()=>{Wr(),fi(),Ss=class extends di{constructor(e){if(super(e),this.it=_,e.type!==li.CHILD)throw Error(this.constructor.directiveName+`() can only be used in child bindings`)}render(e){if(e===_||e==null)return this._t=void 0,this.it=e;if(e===kr)return e;if(typeof e!=`string`)throw Error(this.constructor.directiveName+`() called with a non-string value`);if(e===this.it)return this._t;this.it=e;let t=[e];return t.raw=t,this._t={_$litType$:this.constructor.resultType,strings:t,values:[]}}},Ss.directiveName=`unsafeHTML`,Ss.resultType=1,ui(Ss)})),ws,Ts,Es=n((()=>{fi(),Cs(),ws=class extends Ss{},ws.directiveName=`unsafeSVG`,ws.resultType=2,Ts=ui(ws)})),Ds=n((()=>{Es()}));function V(e,t=``){let n=e.map(([e,t])=>`<${e} ${Object.entries(t).map(([e,t])=>`${e}="${Os(t)}"`).join(` `)}/>`).join(``);return g`<svg class="fl-icon ${t}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${Ts(n)}</svg>`}var Os,H=n((()=>{v(),Ds(),Os=e=>String(e).replace(/[&<>"]/g,e=>`&#${e.charCodeAt(0)};`)})),U,ks=n((()=>{k(),U={enabled:!1,context:null,output:null,last:{},enable(e){if(this.enabled=e,!e)return;if(this.context){this.context.resume();return}this.context=new AudioContext;let t=this.context.createDynamicsCompressor();t.threshold.value=-18,t.ratio.value=4,this.output=this.context.createGain(),this.output.gain.value=.7,this.output.connect(t).connect(this.context.destination)},partial(e,t,n,r){let i=this.context,a=i.createOscillator(),o=i.createGain();return a.frequency.value=e,o.gain.setValueAtTime(0,t),o.gain.linearRampToValueAtTime(r,t+.004),o.gain.exponentialRampToValueAtTime(1e-4,t+n),a.connect(o).connect(this.output),a.start(t),a.stop(t+n+.02),a},noise(e,t,n,r,i=r,a=1.2){let o=this.context,s=Math.ceil(o.sampleRate*t),c=o.createBuffer(1,s,o.sampleRate),l=c.getChannelData(0);for(let e=0;e<s;e++)l[e]=(Math.random()*2-1)*(1-e/s)**2;let u=o.createBufferSource(),d=o.createBiquadFilter(),f=o.createGain();u.buffer=c,d.type=`bandpass`,d.Q.value=a,d.frequency.setValueAtTime(r,e),d.frequency.exponentialRampToValueAtTime(i,e+t),f.gain.value=n,u.connect(d).connect(f).connect(this.output),u.start(e)},play(e,t=1,n=1){if(!this.enabled||!this.context)return;let r=this.context.currentTime;if(r-(this.last[e]??-1)<.03)return;this.last[e]=r;let i=e=>e*T(.97,1.03),a=(e,t,n,i,a,o=[1,2.76])=>t.forEach((t,s)=>o.forEach((o,c)=>this.partial(e*2**(t/12)*o,r+s*n,i,c?a/4:a)));switch(e){case`tick`:this.partial(i(2100*t),r,.05,.18*n),this.noise(r,.03,.25*n,5200);break;case`reel`:this.partial(i(760),r,.06,.06*n);break;case`stop`:this.partial(150,r,.22,.5*n).frequency.exponentialRampToValueAtTime(62,r+.18),this.partial(620,r,.06,.12*n);break;case`whoosh`:this.noise(r,.5,.35*n,300,2600,.8);break;case`bounce`:this.partial(i(2637*t),r,.35,.12*n),this.partial(i(2637*t*2.76),r,.18,.04*n);break;case`chime`:[1,2.76,5.4].forEach((e,a)=>this.partial(i(1046*t*e),r,1.4/(a+1),.16/(a+1)*n));break;case`win`:a(523,[0,4,7,12,16],.09,1.1,.12);break;case`jackpot`:a(392,[0,4,7,12,16,19,24],.11,1.8,.13,[1,2.76,5.4]),this.noise(r,1.2,.2,400,6e3,.6);break;case`stamp`:this.partial(120,r,.3,.7).frequency.exponentialRampToValueAtTime(48,r+.25),this.noise(r,.08,.5,1800,600);break;case`scratch`:this.noise(r,.06,.12*n,3200*t,2400*t,2);break;case`lever`:this.noise(r,.25,.3,1900,700,3),this.partial(170,r,.2,.35);break;case`thunder`:this.noise(r,.09,.9*n,6e3,1200,.7),this.noise(r+.02,.35,.35*n,2400,300,1.5),this.noise(r+.05,1.6,.8*n,180,45,.9);break;case`dealer`:for(let e=0;e<7;e++)this.noise(r+e*.035,.03,.12*n,4200-e*180,2600,2.5);a(659,[0,7],.12,1.2,.07,[1,2.76]);break;case`ambient`:a(E([392,440,523,587,659])*E([1,2]),E([[0,4,7],[0,7,12],[0,4,7,12],[12,7,4,0]]),.085,.7,.018,[1]),Math.random()<.4&&this.noise(r+.3,.12,.05,4200,3e3,3)}}}})),As=n((()=>{}));function js(e){let t=0,n=0;return Fs.flatMap(r=>[r===`small`||r===`pale`?{kind:`small`,award:e.small[t++%e.small.length],pale:r===`pale`}:r===`big`?{kind:`big`,award:e.big[n++%e.big.length]}:{kind:r},{kind:`none`}])}function Ms(e,t){return t===`jackpot`?{index:Rs(e,e=>e.kind===`jackpot`)[0],bonus:!1}:t===`none`?{index:E(Rs(e,e=>e.kind===`none`)),bonus:!1}:Math.random()<Is?{index:E(Rs(e,Ls)),bonus:!0}:{index:E(Rs(e,e=>e.kind===t)),bonus:!1}}function Ns(e,t,n,r=Math.random()){let{small:i,big:a,jackpot:o}=rs,s=t=>e.filter(t).length,c=e=>{if(e.kind===`jackpot`)return o;if(Ls(e))return Is*(i+a)/s(Ls);if(e.kind===`small`||e.kind===`big`){let t=e.kind;return .6*rs[t]/s(e=>e.kind===t)}return 0},l=e.map(e=>c(e)*(zs(e)===t?n:1)),u=(1-l.reduce((e,t)=>e+t,0))/s(e=>e.kind===`none`),d=r,f=e.findIndex((e,t)=>(d-=e.kind===`none`?u:l[t])<0),p=e[f];return Ls(p)?{index:f,tier:Math.random()<i/(i+a)?`small`:`big`}:{index:f,tier:p.kind}}function Ps(e,t){let n=t.kind===`small`||t.kind===`big`?go(e,t.kind,t.award):e,r=ls(`wheel`,n.map(e=>e.id));return e.find(e=>e.id===r)??n[0]}var Fs,Is,Ls,Rs,zs,Bs,Vs=n((()=>{A(),k(),N(),Fs=`jackpot.small.big.coin.pale.small.hunt.big.small.pachinko.pale.small.coin.big.pale.small.hunt.big.small.coin.pale.big.pachinko.small.pale.coin.small`.split(`.`),Is=.4,Ls=e=>e.kind===`coin`||e.kind===`hunt`||e.kind===`pachinko`,Rs=(e,t)=>e.flatMap((e,n)=>t(e)?[n]:[]),zs=e=>e.kind===`small`||e.kind===`big`?So(e.kind,e.award):e.kind,Bs=e=>[...new Set(e.filter(e=>e.kind!==`none`).map(zs))]})),Hs,Us=n((()=>{v(),Hs=(e,t,n=!1)=>h`
|
|
4
|
+
<span class="lk-boost" role="img" aria-label=${e(n?`boost.dealerOdds`:`boost.odds`,{n:t})}>
|
|
5
|
+
<small aria-hidden="true">${e(n?`boost.dealer`:`boost.title`)}</small>
|
|
6
|
+
<b aria-hidden="true">${e(`boost.badge`,{n:t})}</b>
|
|
7
|
+
</span>
|
|
8
|
+
`}));function Ws(e,{state:t,rules:n,multiplier:r,dealer:i},a,o){return h`
|
|
9
|
+
<div class="lk-stage">
|
|
10
|
+
<div class="lk-machine" data-state=${t}>
|
|
11
|
+
<svg class="lk-backdrop" viewBox="0 0 900 800" preserveAspectRatio="xMidYMid slice" aria-hidden="true">
|
|
12
|
+
${Gs.map(e=>g`<polyline points=${e} fill="none" stroke="#d4a94e" stroke-opacity="0.12" stroke-width="0.5" />`)}
|
|
13
|
+
</svg>
|
|
14
|
+
<i class="lk-bulbs" aria-hidden="true"></i>
|
|
15
|
+
${r&&r>1?Hs(e,r,i):_}
|
|
16
|
+
<fl-rules .text=${n}></fl-rules>
|
|
17
|
+
<div class="lk-game">${a}</div>
|
|
18
|
+
${o??_}
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
`}var Gs,Ks,qs=n((()=>{v(),C(),w(),xs(),B(),H(),Us(),R(),Gs=vs(450,400,1.25),Ks=class extends z{constructor(...e){super(...e),this.text=``,this.open=!1,this.key=e=>{this.open&&e.key===`Escape`&&(e.stopPropagation(),this.open=!1)},this.outside=e=>{this.open&&!e.composedPath().includes(this)&&(this.open=!1)}}connectedCallback(){super.connectedCallback(),addEventListener(`keydown`,this.key,!0),addEventListener(`pointerdown`,this.outside,!0)}disconnectedCallback(){super.disconnectedCallback(),removeEventListener(`keydown`,this.key,!0),removeEventListener(`pointerdown`,this.outside,!0)}render(){return h`
|
|
22
|
+
<div class="lk-help">
|
|
23
|
+
<button class="lk-round ${this.open?`is-open`:``}" aria-label=${this.t(`rules`)} aria-expanded=${this.open} aria-controls="lk-rules" @click=${()=>this.open=!this.open}>
|
|
24
|
+
${V(Zi)}
|
|
25
|
+
</button>
|
|
26
|
+
${this.open?h`<div id="lk-rules" class="lk-rules" role="dialog" aria-label=${this.t(`rules`)}><h4>${this.t(`rules`)}</h4><p>${this.text}</p></div>`:_}
|
|
27
|
+
</div>
|
|
28
|
+
`}},L([b()],Ks.prototype,`text`,void 0),L([x()],Ks.prototype,`open`,void 0),Ks=L([y(`fl-rules`)],Ks)})),Js,Ys=n((()=>{v(),C(),w(),A(),B(),H(),F(),ks(),R(),Js=class extends z{constructor(...e){super(...e),this.flipping=!1,this.goldWins=Math.random()<.5}async flip(){this.flipping=!0,U.play(`whoosh`);let e=2880+(this.goldWins?0:180),t=P()?1:1800;this.coin?.animate([{transform:`translateY(0) rotateX(0) scale(1)`,easing:`cubic-bezier(.15,.75,.35,1)`},{transform:`translateY(-150px) rotateX(${e*.55}deg) scale(1.25)`,offset:.45,easing:`cubic-bezier(.6,0,.9,.5)`},{transform:`translateY(0) rotateX(${e-12}deg) scale(1)`,offset:.9},{transform:`translateY(0) rotateX(${e}deg) scale(1)`}],{duration:t,fill:`forwards`}),this.shadow?.animate([{transform:`scale(1)`,opacity:1},{transform:`scale(.45)`,opacity:.25,offset:.45},{transform:`scale(1)`,opacity:1}],{duration:t}),await gs(t),U.play(`stop`),U.play(`chime`,1.2),this.later(()=>this.dispatchEvent(new CustomEvent(`done`)),P()?0:800)}label({tier:e,award:t}){return(e===`none`?void 0:yo(this.room.prize(this.prizeId),e).find(e=>bo(e)===t))?.label??this.room.award(e,t)}render(){let[e,t]=this.goldWins?[this.won,this.other]:[this.other,this.won];return h`
|
|
29
|
+
<div class="lk-bonus">
|
|
30
|
+
<div class="lk-bonus-card">
|
|
31
|
+
<h3>${this.t(`wheel.segment.coin`)}</h3>
|
|
32
|
+
<p>${this.t(`coin.text`)}</p>
|
|
33
|
+
<div class="lk-coin-stage">
|
|
34
|
+
<div class="lk-coin-shadow"></div>
|
|
35
|
+
<div class="lk-coin">
|
|
36
|
+
<div class="lk-coin-face lk-coin-face--gold"><span>${this.label(e)}<small>${this.t(`coin.gold`)}</small></span></div>
|
|
37
|
+
<div class="lk-coin-face lk-coin-face--ruby"><span>${this.label(t)}<small>${this.t(`coin.ruby`)}</small></span></div>
|
|
38
|
+
</div>
|
|
39
|
+
</div>
|
|
40
|
+
<button class="lk-btn lk-btn--primary lk-btn--lg" ?disabled=${this.flipping} @click=${this.flip}>${V(ra)}${this.t(`coin.flip`)}</button>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
`}},L([b({attribute:!1})],Js.prototype,`won`,void 0),L([b({attribute:!1})],Js.prototype,`other`,void 0),L([b({attribute:!1})],Js.prototype,`prizeId`,void 0),L([x()],Js.prototype,`flipping`,void 0),L([S(`.lk-coin`)],Js.prototype,`coin`,void 0),L([S(`.lk-coin-shadow`)],Js.prototype,`shadow`,void 0),Js=L([y(`fl-wheel-coin`)],Js)}));function Xs(e,t,n,r){let[i,a]=Qs(t,n),[o,s]=Qs(t,r),[c,l]=Qs(e,r),[u,d]=Qs(e,n);return`M${u.toFixed(2)} ${d.toFixed(2)}L${i.toFixed(2)} ${a.toFixed(2)}A${t} ${t} 0 0 1 ${o.toFixed(2)} ${s.toFixed(2)}L${c.toFixed(2)} ${l.toFixed(2)}A${e} ${e} 0 0 0 ${u.toFixed(2)} ${d.toFixed(2)}Z`}var Zs,Qs,$s,ec,tc=n((()=>{v(),C(),Vs(),B(),R(),Zs=250,Qs=(e,t)=>{let n=t*Math.PI/180;return[e*Math.sin(n),-e*Math.cos(n)]},$s=Array.from({length:18},(e,t)=>t*10),ec=class extends z{constructor(...e){super(...e),this.rootClass=``,this.prefix=`wheel`,this.boosted=[],this.boostLabel=``,this.winPath=``}get segments(){return js(this.room.board)}highlight(e){let t=360/this.segments.length;this.winPath=e===null?``:Xs(64,Zs,e*t,(e+1)*t)}render(){let{prefix:e,segments:t}=this,n=360/t.length,r={none:{fill:`#2a170c`,ink:`#d4a94e`},small:{fill:`#1d3561`,ink:`#f6e2a6`},big:{fill:`#7d1c24`,ink:`#f6e2a6`},coin:{fill:`#1d3561`,ink:`#fff`},hunt:{fill:`#1c6136`,ink:`#fff`},pachinko:{fill:`#22584d`,ink:`#fff`},jackpot:{fill:`url(#${e}-jackpot)`,ink:`#2a1a05`}},i=t.map((e,t)=>{let i=t*n,a=i+n/2,o=e.kind===`small`&&e.pale;return{path:Xs(64,Zs,i,i+n),split:e.kind===`coin`?Xs(64,Zs,a,i+n):null,fill:o?`#efe4c8`:r[e.kind].fill,ink:o?`#3a240a`:r[e.kind].ink,label:e.kind===`none`?``:e.kind===`small`||e.kind===`big`?this.room.award(e.kind,e.award):this.t(`wheel.segment.${e.kind}`),labelTransform:`rotate(${a-90}) translate(158 0)`,dot:e.kind===`none`?Qs(214,a):null,peg:Qs(247,i),spoke:[Qs(64,i),Qs(Zs,i)]}}),a=this.boosted.map(e=>({path:Xs(64,Zs,e*n,(e+1)*n),badge:`rotate(${e*n+n/2}) translate(0 -226)`})),o=t.map((e,t)=>Qs(268,t*n+n/2));return h`
|
|
44
|
+
<svg class=${this.rootClass} viewBox="-300 -300 600 600">
|
|
45
|
+
<defs>
|
|
46
|
+
<linearGradient id="${e}-jackpot" gradientUnits="userSpaceOnUse" x1="-60" y1="-250" x2="60" y2="-60">
|
|
47
|
+
<stop offset="0" stop-color="#6b4a14" /><stop offset=".45" stop-color="#f3d488" /><stop offset=".6" stop-color="#c79a3e" /><stop offset="1" stop-color="#5a3c0e" />
|
|
48
|
+
</linearGradient>
|
|
49
|
+
<radialGradient id="${e}-shade" cx="0" cy="0" r="250" gradientUnits="userSpaceOnUse">
|
|
50
|
+
<stop offset=".26" stop-color="#000" stop-opacity=".5" /><stop offset=".62" stop-color="#000" stop-opacity=".08" /><stop offset=".95" stop-color="#000" stop-opacity="0" /><stop offset="1" stop-color="#000" stop-opacity=".35" />
|
|
51
|
+
</radialGradient>
|
|
52
|
+
<radialGradient id="${e}-gloss" cx="-90" cy="-140" r="340" gradientUnits="userSpaceOnUse">
|
|
53
|
+
<stop offset="0" stop-color="#fff" stop-opacity=".2" /><stop offset=".6" stop-color="#fff" stop-opacity="0" />
|
|
54
|
+
</radialGradient>
|
|
55
|
+
<radialGradient id="${e}-hub" cx="-.3" cy="-.4" r="1.3"><stop offset="0" stop-color="#3a2010" /><stop offset="1" stop-color="#120a05" /></radialGradient>
|
|
56
|
+
<linearGradient id="${e}-gold" x1="0" y1="0" x2="1" y2="1">
|
|
57
|
+
<stop offset="0" stop-color="#fff3c4" /><stop offset=".42" stop-color="#d4a94e" /><stop offset=".55" stop-color="#8a6420" /><stop offset="1" stop-color="#f1d892" />
|
|
58
|
+
</linearGradient>
|
|
59
|
+
</defs>
|
|
60
|
+
<g class="lk-rotor">
|
|
61
|
+
${i.map(e=>g`
|
|
62
|
+
<path d=${e.path} fill=${e.fill} />
|
|
63
|
+
${e.split?g`<path d=${e.split} fill="#7d1c24" />`:``}
|
|
64
|
+
<line x1=${e.spoke[0][0]} y1=${e.spoke[0][1]} x2=${e.spoke[1][0]} y2=${e.spoke[1][1]} stroke="rgb(243 212 136 / .35)" stroke-width="1.2" />
|
|
65
|
+
`)}
|
|
66
|
+
<circle r=${Zs} fill="url(#${e}-shade)" />
|
|
67
|
+
${a.map(e=>g`<path class="lk-wheel-boost" d=${e.path} />`)}
|
|
68
|
+
${i.map(t=>g`
|
|
69
|
+
${t.label?g`<text
|
|
70
|
+
transform=${t.labelTransform}
|
|
71
|
+
text-anchor="middle"
|
|
72
|
+
dominant-baseline="middle"
|
|
73
|
+
font-weight="800"
|
|
74
|
+
font-size="13"
|
|
75
|
+
letter-spacing="1"
|
|
76
|
+
fill=${t.ink}
|
|
77
|
+
stroke="rgb(0 0 0 / .3)"
|
|
78
|
+
stroke-width="2.2"
|
|
79
|
+
paint-order="stroke"
|
|
80
|
+
>${t.label}</text>`:``}
|
|
81
|
+
${t.dot?g`<circle cx=${t.dot[0]} cy=${t.dot[1]} r="3" fill="#d4a94e" opacity=".55" />`:``}
|
|
82
|
+
<circle cx=${t.peg[0]} cy=${t.peg[1]} r="3.4" fill="url(#${e}-gold)" stroke="#3a2a10" stroke-width=".8" />
|
|
83
|
+
`)}
|
|
84
|
+
<circle r="66" fill="url(#${e}-gold)" />
|
|
85
|
+
<circle r="58" fill="url(#${e}-hub)" />
|
|
86
|
+
${$s.map(e=>g`<ellipse rx="44" ry="15" transform="rotate(${e})" fill="none" stroke="#f3d488" stroke-opacity=".35" stroke-width=".6" />`)}
|
|
87
|
+
<foreignObject class="lk-wheel-logo" x="-17" y="-20" width="34" height="40">${this.room.logo()}</foreignObject>
|
|
88
|
+
${a.map(t=>g`
|
|
89
|
+
<g class="lk-wheel-badge" transform=${t.badge}>
|
|
90
|
+
<rect x="-19" y="-11" width="38" height="22" rx="11" fill="url(#${e}-gold)" stroke="#3a2a10" stroke-width="1" /><text>${this.boostLabel}</text>
|
|
91
|
+
</g>
|
|
92
|
+
`)}
|
|
93
|
+
<path class="lk-win-seg" fill="#fff" d=${this.winPath} />
|
|
94
|
+
</g>
|
|
95
|
+
<circle r="267" fill="none" stroke="url(#${e}-gold)" stroke-width="30" />
|
|
96
|
+
<circle r="252" fill="none" stroke="#120a05" stroke-width="3" />
|
|
97
|
+
<circle r="282" fill="none" stroke="#6b4a14" stroke-width="2" />
|
|
98
|
+
${o.map(([e,t],n)=>g`<circle class="lk-lamp" style="--i: ${n}" cx=${e} cy=${t} r="4.4" />`)}
|
|
99
|
+
<circle r="250" fill="url(#${e}-gloss)" pointer-events="none" />
|
|
100
|
+
</svg>
|
|
101
|
+
`}},L([b()],ec.prototype,`rootClass`,void 0),L([b()],ec.prototype,`prefix`,void 0),L([b({attribute:!1})],ec.prototype,`boosted`,void 0),L([b()],ec.prototype,`boostLabel`,void 0),L([x()],ec.prototype,`winPath`,void 0),L([S(`.lk-rotor`)],ec.prototype,`rotor`,void 0),ec=L([y(`fl-wheel-face`)],ec)})),nc,rc=n((()=>{v(),C(),w(),k(),B(),H(),F(),ks(),R(),nc=class extends z{constructor(...e){super(...e),this.tiles=[],this.picked=null}willUpdate(e){if(super.willUpdate(e),this.tiles.length)return;let{small:t,big:n}=this.room.board,r=[...[...t,...t].map(e=>({tier:`small`,award:e})),...n.map(e=>({tier:`big`,award:e}))];this.tiles=Array.from({length:18},()=>({...E(r),open:!1}))}async choose(e){this.picked===null&&(this.picked=e,this.tiles=this.tiles.map((t,n)=>n===e?{...this.won,open:!0}:t),U.play(`tick`,1.3),await gs(P()?0:700),U.play(`chime`),this.tiles.forEach((e,t)=>this.later(()=>this.tiles=this.tiles.map((e,n)=>n===t?{...e,open:!0}:e),P()?0:t*35)),this.later(()=>this.dispatchEvent(new CustomEvent(`done`)),P()?0:1600))}render(){return h`
|
|
102
|
+
<div class="lk-bonus">
|
|
103
|
+
<div class="lk-bonus-card">
|
|
104
|
+
<h3>${this.t(`wheel.segment.hunt`)}</h3>
|
|
105
|
+
<p>${this.t(`hunt.text`)}</p>
|
|
106
|
+
<div class="lk-hunt">
|
|
107
|
+
${this.tiles.map((e,t)=>h`
|
|
108
|
+
<button class=${e.open?`is-open`:``} aria-label=${this.t(`hunt.tile`,{n:t+1})} @click=${()=>this.choose(t)}>
|
|
109
|
+
<span class="lk-face">${V(Ga)}</span>
|
|
110
|
+
<span class="lk-back ${this.picked===t?`is-pick`:``}">${this.room.award(e.tier,e.award)}</span>
|
|
111
|
+
</button>
|
|
112
|
+
`)}
|
|
113
|
+
</div>
|
|
114
|
+
</div>
|
|
115
|
+
</div>
|
|
116
|
+
`}},L([b({attribute:!1})],nc.prototype,`won`,void 0),L([x()],nc.prototype,`tiles`,void 0),L([x()],nc.prototype,`picked`,void 0),nc=L([y(`fl-wheel-hunt`)],nc)})),ic,ac,W,oc=n((()=>{v(),C(),w(),A(),k(),ko(),N(),Vs(),B(),H(),F(),ks(),qs(),Ys(),tc(),rc(),R(),ic={scale:2.4,originY:-.06},ac=e=>1-(1-e)**3,W=class extends z{constructor(...e){super(...e),this.options={},this.state=`idle`,this.prizeId=null,this.topSet=!1,this.topBlur=!1,this.bonus=null,this.grabbed=!1,this.zoomed=!1,this.boosted=null,this.boost=M(`wheel`),this.boosterDay=this.boost>1,this.angle=T(0,360),this.velocity=0,this.direction=1,this.phase=`idle`,this.freeSince=0,this.brake={from:0,distance:0,start:0,duration:1},this.target=0,this.tier=`none`,this.lastIndex=-1,this.lastTick=0,this.raf=0,this.previous=0,this.top={position:0,state:`idle`,from:0,to:0,start:0,duration:1},this.boostTop={...this.top,key:``},this.prize={won:{tier:`none`,award:null},other:{tier:`none`,award:null}},this.frame=e=>{let t=Math.min(.05,(e-this.previous)/1e3);if(this.previous=e,this.phase===`free`)this.velocity*=Math.exp(-t/2.6),Math.abs(this.velocity)<260&&(this.velocity=260*this.direction),this.angle+=this.velocity*t,this.boostTop.state===`spinning`&&e-this.freeSince>350&&this.stopBoost(e),e-this.freeSince>900&&this.planBrake(e);else if(this.phase===`brake`){let t=Math.min(1,(e-this.brake.start)/this.brake.duration);if(this.angle=this.brake.from+this.brake.distance*ac(t),this.velocity=this.brake.distance*3*(1-t)**2/(this.brake.duration/1e3),t>=1)return this.land()}if(this.boostTop.state===`spinning`&&(this.boostTop.position+=18*t),this.boostTop.state===`stopping`){let t=Math.min(1,(e-this.boostTop.start)/this.boostTop.duration);this.boostTop.position=this.boostTop.from+(this.boostTop.to-this.boostTop.from)*ac(t),t>=1&&this.settleBoost()}if(this.top.state===`spinning`&&(this.top.position+=14*t),this.top.state===`stopping`){let t=Math.min(1,(e-this.top.start)/this.top.duration);this.top.position=this.top.from+(this.top.to-this.top.from)*ac(t),this.topBlur=t<.6,t>=1&&this.settleTop()}this.draw(),this.raf=requestAnimationFrame(this.frame)},this.bonusWon=()=>{this.room.finish({game:`wheel`,tier:this.tier,prizeId:this.prizeId,award:this.prize.won.award,detail:{key:`detail.wheel.${this.bonus}`}})},this.drag=null,this.zoom=e=>{e.deltaY&&(e.preventDefault(),this.zoomed=e.deltaY<0)},this.fingers=new Map,this.pinch=null,this.grab=e=>{this.fingers.set(e.pointerId,{x:e.clientX,y:e.clientY}),this.fingers.size===2?(this.drag=null,this.grabbed=!1,this.pinch=this.spread()):this.phase===`idle`&&(this.wrap.setPointerCapture(e.pointerId),this.grabbed=!0,this.drag={last:this.pointerAngle(e),samples:[{t:performance.now(),a:this.angle}]})},this.move=e=>{if(this.fingers.has(e.pointerId)&&this.fingers.set(e.pointerId,{x:e.clientX,y:e.clientY}),this.pinch!==null&&this.fingers.size===2){let e=this.spread()/this.pinch;(e>1.25||e<.8)&&(this.zoomed=e>1,this.pinch=this.spread());return}if(!this.drag)return;let t=this.pointerAngle(e),n=po(t-this.drag.last+180,360)-180;this.drag.last=t,this.angle+=n;let r=performance.now();this.drag.samples=[...this.drag.samples,{t:r,a:this.angle}].filter(e=>r-e.t<120),this.draw()},this.release=e=>{if(this.fingers.delete(e.pointerId),this.pinch!==null){this.fingers.size||(this.pinch=null);return}if(!this.drag)return;this.grabbed=!1;let[t]=this.drag.samples,n=performance.now(),r=t&&this.drag.samples.length>1&&n-t.t>10?(this.angle-t.a)/(n-t.t)*1e3:0;this.drag=null,Math.abs(r)>220&&this.spin(Math.max(-1900,Math.min(1900,r)))}}get segments(){return js(this.room.board)}get keys(){return Bs(this.segments)}segmentLabel(e){let t=this.segments.find(t=>zs(t)===e);return t.kind===`small`||t.kind===`big`?this.room.award(t.kind,t.award):this.t(`wheel.segment.${t.kind}`)}indexAt(e){return Math.floor(po(-e,360)/(360/this.segments.length))}draw(){this.face?.rotor?.setAttribute(`transform`,`rotate(${this.angle})`),this.strip&&(this.strip.style.transform=`translateY(${-po(this.top.position,this.room.prizeIds.length*9)*40}px)`),this.boostStrip&&(this.boostStrip.style.transform=`translateY(${-po(this.boostTop.position,this.keys.length*9)*40}px)`);let e=this.indexAt(this.angle);e!==this.lastIndex&&(this.lastIndex!==-1&&this.phase!==`idle`&&performance.now()-this.lastTick>40&&(this.lastTick=performance.now(),U.play(`tick`,1+Math.min(.3,Math.abs(this.velocity)/4e3)),this.pointer?.animate([{transform:`rotate(${-this.direction*22}deg)`},{transform:`rotate(0deg)`}],{duration:170,easing:`cubic-bezier(.2,.8,.3,1)`})),this.lastIndex=e)}planBrake(e){let t=360/this.segments.length,n=po(-(this.target+.5+T(-.3,.3))*t,360),r=this.direction>0?po(n-this.angle,360):-po(this.angle-n,360);for(;3*Math.abs(r)/Math.abs(this.velocity)<4.2;)r+=this.direction*360;this.brake={from:this.angle,distance:r,start:e,duration:3*Math.abs(r)/Math.abs(this.velocity)*1e3},this.phase=`brake`;let i=this.room.prizeIds.length,a=Math.ceil(this.top.position/i)*i+i*2;this.top={...this.top,state:`stopping`,from:this.top.position,to:a+this.room.prizeIds.indexOf(this.prizeId),start:e,duration:Math.min(this.brake.duration*.55,1600)}}settleTop(){this.top.state=`set`,this.top.position=this.top.to,this.topSet=!0,this.topBlur=!1,U.play(`stop`,1,.7)}stopBoost(e){let t=this.keys.length,n=Math.ceil(this.boostTop.position/t)*t+t*2;this.boostTop={...this.boostTop,state:`stopping`,from:this.boostTop.position,to:n+this.keys.indexOf(this.boostTop.key),start:e,duration:900}}settleBoost(){this.boostTop={...this.boostTop,state:`set`,position:this.boostTop.to},this.boosted=this.boostTop.key,U.play(`chime`,1.6,.8)}spin(e){if(this.phase!==`idle`)return;this.face?.highlight(null);let t=this.segments,n;if(this.boosterDay){let e=j(`wheel.booster`,{boost:this.boost,segments:t},()=>E(Bs(t))),r=Ns(t,e,this.boost);n=j(`tier`,{game:`wheel`,boost:this.boost},()=>r.tier),this.target=j(`wheel.segment`,{tier:n,segments:t},()=>r.tier===n?r.index:Ms(t,n).index),this.boosted=null,this.boostTop={...this.boostTop,key:e,state:`spinning`}}else n=cs(`wheel`,this.boost),this.target=j(`wheel.segment`,{tier:n,segments:t},()=>Ms(t,n).index);if(this.tier=n,this.prizeId=Ps(this.room.prizes,t[this.target]).id,this.direction=Math.sign(e)||1,this.velocity=e,this.phase=`free`,this.freeSince=performance.now(),this.top={...this.top,state:`spinning`},this.topBlur=!0,this.topSet=!1,this.state=`spinning`,U.play(`whoosh`),P())return this.boosterDay&&(this.boostTop.to=this.keys.indexOf(this.boostTop.key),this.settleBoost()),this.planBrake(performance.now()),this.angle=this.brake.from+this.brake.distance,this.top.position=this.top.to,this.settleTop(),this.draw(),this.land();this.previous=performance.now(),this.raf=requestAnimationFrame(this.frame)}land(){this.phase=`done`,cancelAnimationFrame(this.raf),this.top.state!==`set`&&(this.top.position=this.top.to,this.settleTop()),this.draw(),this.state=`won`,this.face?.highlight(this.target);let e=this.segments[this.target];if(U.play(e.kind===`none`?`stop`:`chime`,e.kind===`jackpot`?1.5:1),e.kind===`none`){this.state=`idle`,this.phase=`idle`;return}let{tier:t}=this,n=this.room.prize(this.prizeId);this.later(()=>{if(e.kind===`coin`||e.kind===`hunt`||e.kind===`pachinko`){let r=t===`small`?`big`:`small`;this.prize={won:{tier:t,award:ho(n,t)},other:{tier:r,award:ho(n,r)}},this.bonus=e.kind;return}let r=`award`in e?e.award:ho(n,t);this.room.finish({game:`wheel`,tier:t,prizeId:this.prizeId,award:r,detail:{key:`detail.wheel.${e.kind}`}})},P()?200:1300)}pointerAngle(e){let t=this.wrap.getBoundingClientRect(),n=this.zoomed?ic.originY+(.5-ic.originY)*ic.scale:.5;return Math.atan2(e.clientY-t.top-t.height*n,e.clientX-t.left-t.width/2)*180/Math.PI}spread(){let[e,t]=[...this.fingers.values()];return Math.hypot(e.x-t.x,e.y-t.y)}async firstUpdated(){await this.face?.updateComplete,this.draw()}disconnectedCallback(){super.disconnectedCallback(),cancelAnimationFrame(this.raf)}overlay(){if(this.bonus===`coin`)return h`<fl-wheel-coin .won=${this.prize.won} .other=${this.prize.other} .prizeId=${this.prizeId} @done=${this.bonusWon}></fl-wheel-coin>`;if(this.bonus===`hunt`)return h`<fl-wheel-hunt .won=${this.prize.won} @done=${this.bonusWon}></fl-wheel-hunt>`;if(this.bonus!==`pachinko`)return;let e={prizeId:this.prizeId,tier:this.tier,award:this.prize.won.award};return h`
|
|
117
|
+
<div class="lk-bonus">
|
|
118
|
+
<div class="lk-bonus-card">
|
|
119
|
+
<h3>${this.t(`wheel.pachinkoTitle`)}</h3>
|
|
120
|
+
<p>${this.t(`wheel.pachinkoText`,{prize:this.room.name(this.prizeId)})}</p>
|
|
121
|
+
<button class="lk-btn lk-btn--primary lk-btn--lg" @click=${()=>this.room.go(`pachinko`,{bonus:e})}>${V(Li)}${this.t(`wheel.toPachinko`)}</button>
|
|
122
|
+
</div>
|
|
123
|
+
</div>
|
|
124
|
+
`}render(){let{boost:e,boosterDay:t,segments:n}=this,r=n.flatMap((e,t)=>zs(e)===this.boosted?[t]:[]),i=t?this.t(`wheel.boosterRules`,{n:e}):this.t(`games.wheel.rules`),a=Array.from({length:10},()=>this.room.prizeIds).flat(),o=Array.from({length:10},()=>this.keys).flat();return Ws(this.room.t,{state:this.state,rules:i,multiplier:e},h`
|
|
125
|
+
<div class="lk-wheel-game is-${this.state}">
|
|
126
|
+
<div class="lk-booster ${this.topBlur?`is-blur`:``} ${this.topSet?`is-set`:``}">
|
|
127
|
+
<span>${this.t(`wheel.booster`)}</span>
|
|
128
|
+
<div class="lk-window">
|
|
129
|
+
<ul>
|
|
130
|
+
${a.map(e=>h`<li><img src=${this.room.icon(e)} alt="" />${this.room.name(e)}</li>`)}
|
|
131
|
+
</ul>
|
|
132
|
+
</div>
|
|
133
|
+
${t?h`
|
|
134
|
+
<div class="lk-window lk-window--boost ${this.boosted?`is-set`:``}">
|
|
135
|
+
<ul>
|
|
136
|
+
${o.map(e=>h`<li>${this.segmentLabel(e)}</li>`)}
|
|
137
|
+
</ul>
|
|
138
|
+
</div>
|
|
139
|
+
<b class="lk-booster-x ${this.boosted?`is-set`:``}">×${e}</b>
|
|
140
|
+
`:_}
|
|
141
|
+
</div>
|
|
142
|
+
<div
|
|
143
|
+
class="lk-wheel-wrap ${this.grabbed?`is-grabbed`:``} ${this.zoomed?`is-zoomed`:``}"
|
|
144
|
+
style="--lk-zoom: ${ic.scale}; --lk-zoom-y: ${ic.originY*100}%"
|
|
145
|
+
@wheel=${this.zoom}
|
|
146
|
+
@pointerdown=${this.grab}
|
|
147
|
+
@pointermove=${this.move}
|
|
148
|
+
@pointerup=${this.release}
|
|
149
|
+
@pointercancel=${this.release}
|
|
150
|
+
>
|
|
151
|
+
<div class="lk-wheel-zoom">
|
|
152
|
+
<fl-wheel-face .rootClass=${`lk-wheel`} .prefix=${`wheel`} .boosted=${r} .boostLabel=${`×${e}`}></fl-wheel-face>
|
|
153
|
+
<svg class="lk-pointer" viewBox="0 0 60 92" aria-hidden="true">
|
|
154
|
+
<path d="M30 90 L8 30 A22 22 0 1 1 52 30 Z" fill="#d4a94e" stroke="#3a2a10" stroke-width="1.5" />
|
|
155
|
+
<path d="M30 80 L16 32 A14 14 0 1 1 44 32 Z" fill="#2a170c" />
|
|
156
|
+
<circle cx="30" cy="22" r="9" fill="#9e1b2a" />
|
|
157
|
+
<circle cx="30" cy="22" r="6" fill="#d6455a" opacity=".8" />
|
|
158
|
+
<circle cx="27" cy="19" r="3" fill="#fff" opacity=".85" />
|
|
159
|
+
</svg>
|
|
160
|
+
</div>
|
|
161
|
+
</div>
|
|
162
|
+
<div class="lk-controls">
|
|
163
|
+
<button class="lk-btn lk-btn--primary lk-btn--lg" ?disabled=${this.state!==`idle`} @click=${()=>this.spin(T(1050,1350))}>
|
|
164
|
+
${V(Ua)}${this.t(`wheel.spin`)}
|
|
165
|
+
</button>
|
|
166
|
+
<div class="lk-hint">${this.t(`wheel.hint`)}</div>
|
|
167
|
+
</div>
|
|
168
|
+
</div>
|
|
169
|
+
`,this.overlay())}},L([b({attribute:!1})],W.prototype,`options`,void 0),L([x()],W.prototype,`state`,void 0),L([x()],W.prototype,`prizeId`,void 0),L([x()],W.prototype,`topSet`,void 0),L([x()],W.prototype,`topBlur`,void 0),L([x()],W.prototype,`bonus`,void 0),L([x()],W.prototype,`grabbed`,void 0),L([x()],W.prototype,`zoomed`,void 0),L([x()],W.prototype,`boosted`,void 0),L([S(`fl-wheel-face`)],W.prototype,`face`,void 0),L([S(`.lk-wheel-wrap`)],W.prototype,`wrap`,void 0),L([S(`.lk-pointer`)],W.prototype,`pointer`,void 0),L([S(`.lk-window ul`)],W.prototype,`strip`,void 0),L([S(`.lk-window--boost ul`)],W.prototype,`boostStrip`,void 0),W=L([y(`fl-wheel`)],W)}));function sc(e){let t=[...Array.from({length:Math.max(9,e.length)},(t,n)=>e[n%e.length]),`seven`,`seven`,`inf`];return[0,1,2].map(()=>D(t))}function cc(e,t,n=E(t)){if(e===`jackpot`)return{symbols:[`inf`,`inf`,`inf`],prizeId:n};if(e===`big`){let e=Math.random()<.3?`seven`:n;return{symbols:[e,e,e],prizeId:n}}if(e===`small`){let e=E([...t.filter(e=>e!==n),`seven`,`inf`]);return{symbols:D([n,n,e]),prizeId:n}}let r=D([...t,`seven`,`inf`]).slice(0,3);for(;r.length<3;)r.push(E([`seven`,`inf`]));return{symbols:r,prizeId:n}}function lc(e,t){let n=t=>e.filter(e=>e===t).length,r=e.filter(e=>n(e)>=2).sort((e,r)=>n(r)-n(e)||Number(r===t)-Number(e===t))[0];return r?e.flatMap((e,t)=>e===r?[t]:[]):[]}var uc=n((()=>{k()})),dc,fc,pc,mc,hc=n((()=>{v(),C(),B(),R(),dc=Array.from({length:22},(e,t)=>({x:22+t%11*37.6,y:t<11?9:77})),fc=g`<svg viewBox="0 0 64 64" role="img" aria-label="∞">
|
|
170
|
+
<path d="M21 22c-6 0-10.5 4.5-10.5 10s4.5 10 10.5 10c8.5 0 13.5-20 22-20 6 0 10.5 4.5 10.5 10s-4.5 10-10.5 10c-8.5 0-13.5-20-22-20z" fill="none" stroke="#1c6136" stroke-width="7.5" stroke-linecap="round" />
|
|
171
|
+
</svg>`,pc=g`<svg viewBox="0 0 64 64" role="img" aria-label="7">
|
|
172
|
+
<text x="32" y="53" text-anchor="middle" font-family="'Playfair Display', Georgia, serif" font-weight="800" font-size="58" fill="#9e1b22" stroke="#4a0a10" stroke-width="2" paint-order="stroke">7</text>
|
|
173
|
+
</svg>`,mc=class extends z{constructor(...e){super(...e),this.strips=[],this.mini=!1,this.state=`idle`,this.rootClass=``,this.pull=()=>{this.mini||this.dispatchEvent(new CustomEvent(`pull`))}}symbol(e){return e===`inf`?fc:e===`seven`?pc:h`<img src=${this.room.icon(e)} alt=${this.room.name(e)} />`}render(){let e=h`<div class="lk-base"></div><div class="lk-rod"><div class="lk-knob"></div></div>`;return h`
|
|
174
|
+
<div class="lk-slot is-${this.state} ${this.rootClass}">
|
|
175
|
+
<div class="lk-slot-strip lk-slot-strip--left"></div>
|
|
176
|
+
<div class="lk-slot-strip lk-slot-strip--right"></div>
|
|
177
|
+
<div class="lk-slot-cab">
|
|
178
|
+
<div class="lk-slot-sign">
|
|
179
|
+
<svg viewBox="0 0 418 86" preserveAspectRatio="none" aria-hidden="true">
|
|
180
|
+
${dc.map((e,t)=>g`<circle class="lk-slot-lamp" style="--i: ${t}" cx=${e.x} cy=${e.y} r="4.2" />`)}
|
|
181
|
+
</svg>
|
|
182
|
+
<b>${this.t(`slot.sign`)}</b>
|
|
183
|
+
</div>
|
|
184
|
+
<div class="lk-slot-glass">
|
|
185
|
+
${this.strips.map(e=>h`
|
|
186
|
+
<div class="lk-reel">
|
|
187
|
+
<ul>
|
|
188
|
+
${[...e,...e,...e].map(e=>h`<li><div class="lk-sym">${this.symbol(e)}</div></li>`)}
|
|
189
|
+
</ul>
|
|
190
|
+
</div>
|
|
191
|
+
`)}
|
|
192
|
+
<div class="lk-payline"></div>
|
|
193
|
+
</div>
|
|
194
|
+
<div class="lk-slot-tray">${this.tray??_}</div>
|
|
195
|
+
</div>
|
|
196
|
+
${this.mini?h`<div class="lk-lever">${e}</div>`:h`<button class="lk-lever" aria-label=${this.t(`slot.lever`)} @click=${this.pull}>${e}</button>`}
|
|
197
|
+
</div>
|
|
198
|
+
`}},L([b({attribute:!1})],mc.prototype,`strips`,void 0),L([b({type:Boolean})],mc.prototype,`mini`,void 0),L([b()],mc.prototype,`state`,void 0),L([b()],mc.prototype,`rootClass`,void 0),L([b({attribute:!1})],mc.prototype,`tray`,void 0),mc=L([y(`fl-slot-machine`)],mc)})),gc,_c,vc,yc=n((()=>{v(),C(),w(),A(),k(),ko(),uc(),N(),qs(),B(),xs(),H(),F(),ks(),hc(),R(),gc=100,_c=22,vc=class extends z{constructor(...e){super(...e),this.options={},this.state=`idle`,this.readout=``,this.strips=[],this.boost=M(`slot`),this.stripsOf=``,this.reels=[],this.raf=0,this.previous=0,this.ticker=0,this.tier=`none`,this.prizeId=``,this.line=[],this.suspense=!1,this.pull=()=>{this.state!==`spinning`&&(U.play(`lever`),this.querySelector(`.lk-rod`)?.animate([{transform:`scaleY(1)`},{transform:`scaleY(-.25)`,offset:.28,easing:`cubic-bezier(.3,0,.2,1)`},{transform:`scaleY(1.04)`,offset:.72},{transform:`scaleY(.98)`,offset:.86},{transform:`scaleY(1)`}],{duration:P()?1:760,easing:`ease-out`}),this.later(()=>this.spin(),P()?0:220))},this.frame=e=>{let t=Math.min(.05,(e-this.previous)/1e3);this.previous=e;let n=this.reels;if(n.forEach((r,i)=>{if(r.phase===`spin`)r.velocity=_c*Math.min(1,(e-r.startedAt)/260)**2,r.pos-=r.velocity*t,i===2&&r.stopAt-e<1100&&n[1].phase!==`spin`&&this.suspense&&this.reelElements()[2]?.classList.add(`is-suspense`),e>=r.stopAt&&Object.assign(r,{phase:`brake`,brakeStart:e,from:r.target+5,to:r.target-.14,pos:r.target+5,brakeDuration:5.14*3*1e3/_c});else if(r.phase===`brake`){let t=Math.min(1,(e-r.brakeStart)/r.brakeDuration);r.pos=r.from+(r.to-r.from)*(1-(1-t)**3),r.velocity=3*(r.from-r.to)*(1-t)**2*1e3/r.brakeDuration,t>=1&&(Object.assign(r,{phase:`settle`,settleStart:e}),U.play(`stop`,1,i===2?1:.75),this.reelElements()[i]?.classList.remove(`is-suspense`))}else if(r.phase===`settle`){let t=Math.min(1,(e-r.settleStart)/220);r.pos=r.to+(r.target-r.to)*(1-(1-t)**2),r.velocity=0,t>=1&&(r.phase=`idle`)}this.draw(i)}),n.every(e=>e.phase===`idle`))return clearInterval(this.ticker),this.settle();this.raf=requestAnimationFrame(this.frame)}}get size(){return this.strips[0].length}reelElements(){return[...this.querySelectorAll(`.lk-reel`)]}draw(e){let t=this.reels[e],n=this.reelElements()[e];n&&(n.querySelector(`ul`).style.transform=`translateY(${-(po(t.pos,this.size)+this.size-1)*gc}px)`,n.classList.toggle(`is-blur`,t.velocity>8))}willUpdate(e){e.has(`room`)&&this.stripsOf!==this.room.prizeIds.join()&&(this.stripsOf=this.room.prizeIds.join(),this.strips=sc(this.room.prizeIds),this.reels=Array.from({length:3},()=>({pos:Math.floor(Math.random()*this.size),phase:`idle`,velocity:0,target:0,startedAt:0,stopAt:0,from:0,to:0,brakeStart:0,brakeDuration:1,settleStart:0})),this.state===`idle`&&(this.readout=this.t(`slot.ready`)))}updated(e){e.has(`strips`)&&this.machine?.updateComplete.then(()=>this.reels.forEach((e,t)=>this.draw(t)))}spin(){if(this.state===`spinning`)return;let{prizeIds:e}=this.room,t=this.tier=cs(`slot`,this.boost),n=this.prizeId=ls(`slot`,e);this.line=j(`slot.line`,{tier:t,prizeId:n},()=>cc(t,e,n).symbols),this.state=`spinning`,this.readout=this.t(`slot.spinning`),this.querySelectorAll(`.lk-reel li.is-win`).forEach(e=>e.classList.remove(`is-win`));let r=performance.now();if(this.suspense=lc(this.line.slice(0,2)).length===2,this.reels.forEach((e,t)=>{let n=this.strips[t].flatMap((e,n)=>e===this.line[t]?[n]:[]);Object.assign(e,{phase:`spin`,startedAt:r,target:E(n),stopAt:r+1e3+t*450+(t===2&&this.suspense?1100:0)})}),P())return this.reels.forEach((e,t)=>{Object.assign(e,{pos:e.target,velocity:0,phase:`idle`}),this.draw(t)}),this.settle();this.ticker=window.setInterval(()=>this.reels.some(e=>e.phase!==`idle`)&&U.play(`reel`),90),this.previous=r,this.raf=requestAnimationFrame(this.frame)}settle(){let{tier:e,prizeId:t}=this;if((e===`none`?[]:lc(this.line,t)).forEach(e=>this.reelElements()[e]?.querySelectorAll(`li`)[po(this.reels[e].pos,this.size)+this.size]?.classList.add(`is-win`)),this.readout=this.t(`slot.result.${e}`),e===`none`){this.state=`idle`;return}if(this.state=`won`,U.play(e===`small`?`chime`:`win`),e!==`small`){let e=this.querySelector(`.lk-slot-glass`)?.getBoundingClientRect();e&&I.burst(e.left+e.width/2,e.top+e.height/2,{count:40,type:`spark`,speed:700,life:.7,gravity:300,colors:bs}),_s(this.querySelector(`.lk-slot-cab`),.6)}let n={game:`slot`,tier:e,prizeId:t,award:ho(this.room.prize(t),e),detail:{key:`detail.slot.${e}`}};this.later(()=>this.room.finish(n),P()?200:e===`small`?1100:1700)}disconnectedCallback(){super.disconnectedCallback(),cancelAnimationFrame(this.raf),clearInterval(this.ticker)}render(){let e=h`
|
|
199
|
+
<div class="lk-readout"><span>${this.t(`slot.line`)}</span><b>${this.readout}</b></div>
|
|
200
|
+
<button class="lk-btn lk-btn--primary lk-btn--lg" ?disabled=${this.state===`spinning`} @click=${this.pull}>${V(Ua)}${this.t(`slot.spin`)}</button>
|
|
201
|
+
`;return Ws(this.room.t,{state:this.state,rules:this.t(`games.slot.rules`),multiplier:this.boost},h`<div><fl-slot-machine .strips=${this.strips} .state=${this.state} .tray=${e} @pull=${this.pull}></fl-slot-machine></div>`)}},L([b({attribute:!1})],vc.prototype,`options`,void 0),L([x()],vc.prototype,`state`,void 0),L([x()],vc.prototype,`readout`,void 0),L([x()],vc.prototype,`strips`,void 0),L([S(`fl-slot-machine`)],vc.prototype,`machine`,void 0),vc=L([y(`fl-slot`)],vc)}));function bc(e,t){let n=t=>e.filter(e=>e?.tier===t),r=Object.fromEntries(vo.map(e=>[e,xo(t[e],n(e).length)]));return e.map(e=>e&&{...e,award:r[e.tier][n(e.tier).indexOf(e)]})}function xc(e,t=Math.random()){let[n,r]=Tc[e];return n===1/0?1/0:n*(r/n)**(1-t)}var Sc,Cc,wc,Tc,Ec,Dc,Oc,kc,Ac,jc=n((()=>{A(),k(),Sc=[{at:2,tier:`small`},{at:3,tier:`small`},{at:4,tier:`small`},{at:5,tier:`small`},{at:6.5,tier:`small`},{at:8,tier:`small`},{at:10,tier:`big`},{at:20,tier:`big`},{at:35,tier:`big`},{at:50,tier:`jackpot`}],Cc=e=>Math.exp(.12*e),wc=e=>Math.log(e)/.12,Tc={none:[1,2],small:[2,10],big:[10,50],jackpot:[1/0,1/0]},Ec=(e,t)=>t.filter(t=>t.at<=e).at(-1),Dc=[null,{tier:`small`},{tier:`small`},{tier:`big`},{tier:`big`},{tier:`jackpot`}],Oc={none:[1,2],small:[3,4],big:[5,6],jackpot:[]},kc=e=>e===`jackpot`?null:E(Oc[e]),Ac=(e,t)=>e?t[e-1]:null}));function Mc(e,t,n,r,i){e.save(),e.translate(t,n),e.rotate(r),e.scale(1.35,1.35),e.translate(-14,-6),e.lineWidth=1.2,e.strokeStyle=`#8a6420`,e.fillStyle=`#7d1c24`,e.beginPath(),e.moveTo(-24,-2),e.lineTo(-34,-15),e.lineTo(-27,-15),e.lineTo(-15,-5),e.closePath(),e.fill(),e.stroke();let a=e.createLinearGradient(0,-8,0,8);a.addColorStop(0,`#fff6dc`),a.addColorStop(1,`#d9c08a`),e.fillStyle=a,e.beginPath(),e.ellipse(0,0,26,7.5,0,0,Math.PI*2),e.fill(),e.stroke(),e.fillStyle=`#d4a94e`,e.fillRect(-18,-1.2,36,2.4),e.fillStyle=`#9e1b22`,e.beginPath(),e.moveTo(-6,2),e.lineTo(7,2),e.lineTo(-3,17),e.lineTo(-14,17),e.closePath(),e.fill(),e.stroke(),e.fillStyle=`#2a1208`,e.beginPath(),e.ellipse(9,-4,6,3,-.2,0,Math.PI*2),e.fill(),e.fillStyle=`#d4a94e`,e.beginPath(),e.arc(26,0,3,0,Math.PI*2),e.fill(),e.fillStyle=`rgb(246 226 166 / 0.85)`,e.beginPath(),e.ellipse(28.5,0,2,13*Math.abs(Math.sin(i/30)),0,0,Math.PI*2),e.fill(),e.restore()}function Nc(e,t,n,r,i){e.save(),e.translate(t,n),e.rotate(r),e.translate(0,Math.sin(i/160)*1.5-8),e.scale(1.25,1.25),e.translate(-30,0),e.lineCap=`round`;for(let t of Ic)e.shadowColor=`#ff3b3b`,e.shadowBlur=t.glow?10+Math.sin(i/200)*4:0,t.fill&&(e.fillStyle=t.fill,e.fill(t.path)),t.stroke&&(e.strokeStyle=t.stroke,e.lineWidth=t.width??1,e.stroke(t.path));e.restore()}var Pc,Fc,Ic,Lc,Rc=n((()=>{v(),C(),w(),A(),jc(),Xo(),N(),qs(),B(),xs(),H(),F(),ks(),R(),Pc=720,Fc=360,Ic=Yo.map(e=>({...e,path:new Path2D(e.d)})),Lc=class extends z{constructor(...e){super(...e),this.options={},this.phase=`ready`,this.multiplier=1,this.cashed=null,this.boost=M(`slot`),this.christmas=Ko()===`christmas`,this.tier=`none`,this.crash=1/0,this.start=0,this.goneAt=0,this.raf=0,this.won=null,this.frame=e=>{if(this.phase===`flying`){let t=Cc((e-this.start)/1e3),n=Math.min(this.crash,50);if(t>=n){this.multiplier=n,this.crash>50&&!this.cashed&&this.cashOut(),this.phase=`gone`,this.goneAt=e;let t=this.won;t?this.later(()=>this.room.finish(t),P()?300:1600):U.play(`stop`,.6)}else this.multiplier=t}this.draw(e),this.raf=requestAnimationFrame(this.frame)}}get steps(){return bc(Sc,this.room.board)}get reached(){return Ec(this.multiplier,this.steps)}label(e){return this.room.award(e.tier,e.award)}takeOff(){this.phase===`flying`||this.cashed||(this.tier=cs(`slot`,this.boost),this.crash=xc(this.tier),this.multiplier=1,this.phase=`flying`,this.start=performance.now(),U.play(`whoosh`,.8))}cashOut(){let e=this.reached;if(this.phase!==`flying`||this.cashed||!e)return;this.cashed={at:this.multiplier,step:e},U.play(e.tier===`jackpot`?`jackpot`:`win`);let t=this.canvas?.getBoundingClientRect();t&&!P()&&I.burst(t.left+t.width/2,t.top+t.height/2,{count:46,type:`spark`,speed:640,life:.8,gravity:300,colors:bs});let n=this.room.prize(ls(`slot`,go(this.room.prizes,e.tier,e.award).map(({id:e})=>e)));this.won={game:`slot`,tier:e.tier,prizeId:n.id,award:e.award,detail:{key:`detail.slot.takeoff`,params:{m:this.multiplier.toFixed(2)}}}}draw(e){let t=this.canvas,n=t?.getContext(`2d`);if(!t||!n)return;let r=Math.min(2,devicePixelRatio);t.width!==Pc*r&&Object.assign(t,{width:Pc*r,height:Fc*r}),n.setTransform(r,0,0,r,0,0);let i=n.createRadialGradient(0,Fc,40,0,Fc,Pc);i.addColorStop(0,`#3a1a0b`),i.addColorStop(1,`#120804`),n.fillStyle=i,n.fillRect(0,0,Pc,Fc),n.save(),n.translate(0,Fc),n.rotate(e/24e3%(Math.PI*2)),n.fillStyle=`rgb(226 189 99 / 0.05)`;for(let e=0;e<24;e++)n.beginPath(),n.moveTo(0,0),n.arc(0,0,Pc*1.6,e*Math.PI/12,e*Math.PI/12+Math.PI/24),n.fill();n.restore();let a=wc(this.multiplier),o=Math.max(8,a*1.18),s=Math.max(1.6,(this.multiplier-1)*1.22),c=e=>({x:34+e/o*652,y:326-(Cc(e)-1)/s*292});n.strokeStyle=`rgb(226 189 99 / 0.22)`,n.lineWidth=1,n.beginPath(),n.moveTo(34,326),n.lineTo(Pc-17,326),n.moveTo(34,326),n.lineTo(34,17),n.stroke();let l=this.christmas?Nc:Mc;if(this.phase===`ready`)return l(n,44,318,-.08,e);let u=Array.from({length:61},(e,t)=>c(a*t/60)),d=u.at(-1),f=n.createLinearGradient(0,d.y,0,326);f.addColorStop(0,`rgb(246 196 83 / 0.28)`),f.addColorStop(1,`rgb(246 196 83 / 0.02)`),n.beginPath(),n.moveTo(34,326),u.forEach(({x:e,y:t})=>n.lineTo(e,t)),n.lineTo(d.x,326),n.closePath(),n.fillStyle=f,n.fill(),n.save(),n.shadowColor=`#ffcf5a`,n.shadowBlur=14;let p=n.createLinearGradient(34,326,d.x,d.y);p.addColorStop(0,`rgb(185 121 28 / 0.4)`),p.addColorStop(.7,`#f6c453`),p.addColorStop(1,`#fff6d2`),n.beginPath(),u.forEach(({x:e,y:t},r)=>r?n.lineTo(e,t):n.moveTo(e,t)),n.strokeStyle=p,n.lineWidth=5,n.lineJoin=`round`,n.lineCap=`round`,n.stroke(),n.restore(),n.fillStyle=`#fffbe8`,u.slice(-30).forEach(({x:t,y:r},i)=>{(i*7+Math.floor(e/70))%5||(n.globalAlpha=i/30*.9,n.beginPath(),n.arc(t+Math.sin(e/90+i)*3,r+Math.cos(e/110+i)*3,1.4,0,Math.PI*2),n.fill())}),n.globalAlpha=1;let m=u.at(-4),ee=Math.atan2(d.y-m.y,d.x-m.x),te=this.phase===`gone`?Math.min(1,(e-this.goneAt)/900):0;l(n,d.x+te*Pc*.6,d.y-te*Fc*.9,ee-te*.4,e)}again(){this.phase=`ready`,this.takeOff()}firstUpdated(){this.raf=requestAnimationFrame(this.frame)}disconnectedCallback(){super.disconnectedCallback(),cancelAnimationFrame(this.raf)}render(){let{phase:e,multiplier:t,cashed:n,reached:r}=this,i=e===`gone`&&!n,a=n?`won`:e===`flying`?`spinning`:`idle`;return Ws(this.room.t,{state:a,rules:this.t(`slot.takeoff.rules`,{n:this.boost}),multiplier:this.boost},h`
|
|
202
|
+
<div class="lk-takeoff">
|
|
203
|
+
<div class="lk-takeoff-screen ${i?`is-gone`:``} ${n?`is-cashed`:``}">
|
|
204
|
+
<canvas aria-label=${this.t(`slot.names.takeoff`)}></canvas>
|
|
205
|
+
<div class="lk-takeoff-reading" aria-live="polite">
|
|
206
|
+
<b>${t.toFixed(2)}×</b>
|
|
207
|
+
${i?h`<span>${this.t(`slot.takeoff.gone`)}</span>`:n?h`<span>${this.t(`slot.takeoff.cashed`,{m:n.at.toFixed(2),prize:this.label(n.step)})}</span>`:e===`ready`?h`<span>${this.t(`slot.takeoff.ready`)}</span>`:``}
|
|
208
|
+
</div>
|
|
209
|
+
</div>
|
|
210
|
+
<ol class="lk-takeoff-steps">
|
|
211
|
+
${this.steps.map(r=>h`
|
|
212
|
+
<li class="${e!==`ready`&&t>=r.at?`is-reached`:``} ${n?.step.at===r.at?`is-cashed`:``} ${r.tier===`jackpot`?`is-jackpot`:``}">
|
|
213
|
+
<small>×${r.at}</small>${this.label(r)}
|
|
214
|
+
</li>
|
|
215
|
+
`)}
|
|
216
|
+
</ol>
|
|
217
|
+
<div class="lk-controls">
|
|
218
|
+
${e===`flying`&&!n?h`<button class="lk-btn lk-btn--primary lk-btn--lg lk-takeoff-cash" ?disabled=${!r} @click=${()=>this.cashOut()}>
|
|
219
|
+
${V(ya)}${r?this.t(`slot.takeoff.cashOut`,{prize:this.label(r)}):this.t(`slot.takeoff.cashFrom`,{m:Sc[0].at})}
|
|
220
|
+
</button>`:h`<button class="lk-btn lk-btn--primary lk-btn--lg" ?disabled=${!!n||e===`flying`} @click=${()=>e===`ready`?this.takeOff():this.again()}>
|
|
221
|
+
${V(La)}${this.t(e===`ready`?`slot.takeoff.start`:`slot.takeoff.again`)}
|
|
222
|
+
</button>`}
|
|
223
|
+
<div class="lk-hint">${this.t(`slot.takeoff.hint`)}</div>
|
|
224
|
+
</div>
|
|
225
|
+
</div>
|
|
226
|
+
`)}},L([b({attribute:!1})],Lc.prototype,`options`,void 0),L([x()],Lc.prototype,`phase`,void 0),L([x()],Lc.prototype,`multiplier`,void 0),L([x()],Lc.prototype,`cashed`,void 0),L([S(`canvas`)],Lc.prototype,`canvas`,void 0),Lc=L([y(`fl-takeoff`)],Lc)})),zc,Bc,G,Vc,Hc,Uc,Wc,Gc,Kc,qc,Jc,Yc=n((()=>{v(),C(),w(),A(),jc(),k(),ko(),N(),qs(),B(),xs(),H(),F(),ks(),R(),zc=Dc.length,Bc=O(0,5),G={width:430,height:590,centre:247,kickOff:548,lanes:[122,205,289,372],lines:[492,432,372,312,252,192]},Vc=O(0,9),Hc=`--shirt: #f6e2a6; --trim: #8a6420; --shorts: #7d1c24`,Uc=`--shirt: #1d3561; --trim: #d4a94e; --shorts: #f6e2a6`,Wc=`--shirt: #c99a3e; --trim: #2a1208; --shorts: #1a1a1a`,Gc=O(0,4).flatMap(e=>O(0,21).map(t=>({x:12+t*18+e%2*9,y:30+e*22,color:E([`#9e1b22`,`#1d3561`,`#d4a94e`,`#f6e2a6`,`#1c6136`,`#5b2a6e`]),delay:`${T(0,.5).toFixed(2)}s`}))),Kc=e=>g`<use href="#lk-fb-player" x="-14" y="-34" width="28" height="37" style=${e} />`,qc=(e,t)=>({x:G.lanes[t],y:G.lines[e-1]}),Jc=class extends z{constructor(...e){super(...e),this.options={},this.phase=`ready`,this.cleared=0,this.runner={line:0,lane:0},this.chosen=[],this.defenders=[],this.aim=null,this.keeper=null,this.boost=M(`slot`),this.tackle=null}get steps(){return bc(Dc,this.room.board)}get collected(){return Ac(this.cleared,this.steps)}get shooting(){return this.phase===`shot`||this.phase===`shooting`||this.phase===`won`&&this.aim!==null}open(e){return(this.phase===`running`||this.phase===`ready`)&&e===this.cleared+1}label(e){return e?this.room.award(e.tier,e.award):`—`}kickOff(){let e=cs(`slot`,this.boost);this.tackle=j(`breakaway.tackle`,{tier:e},()=>kc(e)),this.phase=`running`}step(e,t){this.phase===`ready`&&this.kickOff(),this.phase===`running`&&e===this.cleared+1&&(this.phase=`moving`,this.runner={line:e,lane:t},U.play(`bounce`,1.1),this.later(()=>e===this.tackle?this.tackled(e,t):this.advance(e,t),P()?0:480))}advance(e,t){this.chosen=[...this.chosen,t],this.cleared=e,U.play(`tick`,1+e*.08),this.phase=e===zc?`shot`:`running`}tackled(e,t){this.defenders=O(1,zc).map(n=>n===e?t:E(O(0,3).filter(e=>e!==this.chosen[n-1]))),this.phase=`tackled`,U.play(`stop`,.7)}win(e){let t=this.collected;this.phase=`won`,U.play(t.tier===`jackpot`?`jackpot`:`win`);let n=this.field?.getBoundingClientRect();n&&!P()&&I.burst(n.left+n.width/2,n.top+n.height/3,{count:60,type:`spark`,speed:680,life:.9,gravity:300,colors:bs});let r=this.room.prize(ls(`slot`,go(this.room.prizes,t.tier,t.award).map(({id:e})=>e))),i={game:`slot`,tier:t.tier,prizeId:r.id,award:t.award,detail:e};this.later(()=>this.room.finish(i),P()?300:2600)}cashOut(){this.phase===`running`&&this.collected&&this.win({key:`detail.slot.breakaway`,params:{n:this.cleared}})}shoot(e){this.phase===`shot`&&(this.phase=`shooting`,this.aim=e,this.keeper=E(Bc.filter(t=>t!==e)),U.play(`whoosh`,1.2),this.later(()=>this.win({key:`detail.slot.goal`}),P()?0:700))}again(){this.phase=`ready`,this.runner={line:0,lane:0},this.cleared=0,this.chosen=[],this.defenders=[],this.aim=null,this.keeper=null}get hint(){return this.shooting?this.t(`slot.breakaway.shoot`):this.phase===`tackled`?this.t(`slot.breakaway.tackled`):this.t(`slot.breakaway.pick`,{n:Math.min(zc,this.cleared+1)})}onSquareKey(e,t,n){(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),this.open(t)&&this.step(t,n))}shot(){let{phase:e,aim:t,keeper:n}=this;return h`
|
|
227
|
+
<div class="lk-shot ${e===`won`?`is-celebrating`:``}">
|
|
228
|
+
<svg class="lk-shot-stands" viewBox="0 0 400 120" preserveAspectRatio="xMidYMax slice" aria-hidden="true">
|
|
229
|
+
<rect width="400" height="120" fill="#1e0d06" />
|
|
230
|
+
${O(1,4).map(e=>g`<rect x="0" y=${18+(e-1)*22} width="400" height="22" fill=${e%2?`#2e150a`:`#3a1a0b`} />`)}
|
|
231
|
+
${Gc.map(e=>g`
|
|
232
|
+
<g class="lk-fan" style="--d: ${e.delay}">
|
|
233
|
+
<rect x=${e.x-5} y=${e.y+2} width="10" height="11" rx="3" fill=${e.color} />
|
|
234
|
+
<circle cx=${e.x} cy=${e.y-2} r="4" fill="#f2c9a0" />
|
|
235
|
+
<path class="lk-fan-arms" d=${`M${e.x-5} ${e.y+4}l-4 -9M${e.x+5} ${e.y+4}l4 -9`} stroke=${e.color} stroke-width="2.5" stroke-linecap="round" />
|
|
236
|
+
</g>
|
|
237
|
+
`)}
|
|
238
|
+
</svg>
|
|
239
|
+
<div class="lk-shot-goal">
|
|
240
|
+
${Bc.map(t=>h`<button class="lk-shot-zone" ?disabled=${e!==`shot`} aria-label=${this.t(`slot.breakaway.zone`,{n:t+1})} @click=${()=>this.shoot(t)}></button>`)}
|
|
241
|
+
<svg class="lk-shot-keeper ${n===null?``:`is-diving-${n}`}" viewBox="-14 -34 28 37" aria-hidden="true">${Kc(Wc)}</svg>
|
|
242
|
+
<svg class="lk-shot-ball ${t===null?``:`is-at-${t}`}" viewBox="-6 -6 12 12" aria-hidden="true"><use href="#lk-fb-ball" x="-6" y="-6" width="12" height="12" /></svg>
|
|
243
|
+
</div>
|
|
244
|
+
<svg class="lk-shot-striker" viewBox="-14 -34 28 37" aria-hidden="true">${Kc(Hc)}</svg>
|
|
245
|
+
${e===`won`?h`<strong class="lk-shot-goal-call">${this.t(`slot.breakaway.goal`)}</strong>`:_}
|
|
246
|
+
</div>
|
|
247
|
+
`}render(){let{phase:e,cleared:t,chosen:n,collected:r,shooting:i}=this,a=this.steps,o=this.runner.line?qc(this.runner.line,this.runner.lane):{x:G.centre,y:G.kickOff},s=e===`won`?`won`:e===`ready`||e===`tackled`?`idle`:`spinning`;return Ws(this.room.t,{state:s,rules:this.t(`slot.breakaway.rules`,{n:this.boost}),multiplier:this.boost},h`
|
|
248
|
+
<div class="lk-breakaway">
|
|
249
|
+
<div class="lk-field-wrap">
|
|
250
|
+
<svg class="lk-field ${e===`tackled`?`is-tackled`:``}" viewBox="0 0 ${G.width} ${G.height}" role="group" aria-label=${this.t(`slot.names.breakaway`)}>
|
|
251
|
+
<defs>
|
|
252
|
+
<symbol id="lk-fb-player" viewBox="-14 -34 28 37">
|
|
253
|
+
<ellipse cy="1" rx="9" ry="2.5" fill="rgb(0 0 0 / .35)" />
|
|
254
|
+
<rect x="-6" y="-8" width="4" height="8" rx="1.5" fill="#f2c9a0" />
|
|
255
|
+
<rect x="2" y="-8" width="4" height="8" rx="1.5" fill="#f2c9a0" />
|
|
256
|
+
<rect x="-7" y="-13" width="14" height="6" rx="2" style="fill: var(--shorts)" />
|
|
257
|
+
<path d="M-7 -24h14l5 6-3 2.5-3-3V-12h-12v-8.5l-3 3-3-2.5z" style="fill: var(--shirt); stroke: var(--trim); stroke-width: 1" />
|
|
258
|
+
<circle cy="-28" r="5" fill="#f2c9a0" />
|
|
259
|
+
<path d="M-5 -29a5 5 0 0 1 10 0z" fill="#3a2416" />
|
|
260
|
+
</symbol>
|
|
261
|
+
<symbol id="lk-fb-ball" viewBox="-6 -6 12 12">
|
|
262
|
+
<circle r="5.5" fill="#fff" stroke="#1a1a1a" stroke-width=".7" />
|
|
263
|
+
<path d="M0 -2.4l2.3 1.7-.9 2.7h-2.8l-.9-2.7z" fill="#1a1a1a" />
|
|
264
|
+
</symbol>
|
|
265
|
+
<pattern id="lk-fb-net" width="6" height="6" patternUnits="userSpaceOnUse"><path d="M0 0L6 6M6 0L0 6" stroke="#fff" stroke-opacity=".35" stroke-width=".6" /></pattern>
|
|
266
|
+
</defs>
|
|
267
|
+
|
|
268
|
+
<rect x="70" y="6" width="354" height="578" rx="12" fill="#1a5c36" />
|
|
269
|
+
${Vc.map(e=>g`<rect x="70" y=${6+e*64.2} width="354" height="32.1" fill="#fff" fill-opacity=".035" />`)}
|
|
270
|
+
<g class="lk-field-lines">
|
|
271
|
+
<rect x="80" y="16" width="334" height="558" rx="2" />
|
|
272
|
+
<line x1="80" y1=${G.kickOff} x2="414" y2=${G.kickOff} />
|
|
273
|
+
<circle cx=${G.centre} cy=${G.kickOff} r="42" />
|
|
274
|
+
<rect x="147" y="16" width="200" height="140" />
|
|
275
|
+
<rect x="197" y="16" width="100" height="48" />
|
|
276
|
+
<path d="M210 156a46 46 0 0 0 74 0" />
|
|
277
|
+
<circle cx=${G.centre} cy="116" r="2.5" class="lk-field-spot" />
|
|
278
|
+
<circle cx=${G.centre} cy=${G.kickOff} r="2.5" class="lk-field-spot" />
|
|
279
|
+
</g>
|
|
280
|
+
<rect x="212" y="1" width="70" height="15" fill="url(#lk-fb-net)" stroke="#f1d892" stroke-width="3" />
|
|
281
|
+
<g transform="translate(${G.centre} 54)"><g class="lk-field-keeper">${Kc(Wc)}</g></g>
|
|
282
|
+
|
|
283
|
+
${O(1,zc).map(n=>g`
|
|
284
|
+
<g class="lk-field-prize ${n===t&&e!==`tackled`?`is-collected`:``} ${n===zc?`is-jackpot`:``}" transform="translate(35 ${G.lines[n-1]})">
|
|
285
|
+
<rect x="-31" y="-12" width="62" height="24" rx="12" />
|
|
286
|
+
<text text-anchor="middle" dominant-baseline="central">${this.label(a[n-1])}</text>
|
|
287
|
+
</g>
|
|
288
|
+
`)}
|
|
289
|
+
|
|
290
|
+
${O(1,zc).map(e=>O(0,3).map(t=>{let r=this.open(e);return g`<rect
|
|
291
|
+
class="lk-field-square ${r?`is-open`:``} ${n[e-1]===t?`is-path`:``}"
|
|
292
|
+
x=${qc(e,t).x-35}
|
|
293
|
+
y=${qc(e,t).y-23}
|
|
294
|
+
width="70"
|
|
295
|
+
height="46"
|
|
296
|
+
rx="9"
|
|
297
|
+
role=${r?`button`:_}
|
|
298
|
+
tabindex=${r?0:-1}
|
|
299
|
+
aria-label=${this.t(`slot.breakaway.square`,{column:e,row:t+1})}
|
|
300
|
+
@click=${()=>r&&this.step(e,t)}
|
|
301
|
+
@keydown=${n=>this.onSquareKey(n,e,t)}
|
|
302
|
+
/>`}))}
|
|
303
|
+
|
|
304
|
+
${this.defenders.map((e,t)=>e===null?_:g`<g class="lk-field-defender" transform="translate(${qc(t+1,e).x+(t+1===this.tackle?15:0)} ${qc(t+1,e).y+14})">${Kc(Uc)}</g>`)}
|
|
305
|
+
|
|
306
|
+
<g class="lk-field-striker" style="transform: translate(${o.x}px, ${o.y+14}px)">
|
|
307
|
+
${Kc(Hc)}
|
|
308
|
+
<use class="lk-field-ball" href="#lk-fb-ball" x="2" y="-9" width="11" height="11" />
|
|
309
|
+
</g>
|
|
310
|
+
</svg>
|
|
311
|
+
${i?this.shot():_}
|
|
312
|
+
</div>
|
|
313
|
+
<div class="lk-controls">
|
|
314
|
+
${e===`tackled`?h`<button class="lk-btn lk-btn--primary lk-btn--lg" @click=${()=>this.again()}>${V(Va)}${this.t(`slot.breakaway.again`)}</button>`:h`<button class="lk-btn lk-btn--primary lk-btn--lg ${i?`is-hidden`:``}" ?disabled=${e!==`running`||!r} @click=${()=>this.cashOut()}>
|
|
315
|
+
${V(ya)}${r?this.t(`slot.breakaway.cashOut`,{prize:this.label(r)}):this.t(`slot.breakaway.cashFrom`,{n:2})}
|
|
316
|
+
</button>`}
|
|
317
|
+
<div class="lk-hint">${this.hint}</div>
|
|
318
|
+
</div>
|
|
319
|
+
</div>
|
|
320
|
+
`)}},L([b({attribute:!1})],Jc.prototype,`options`,void 0),L([x()],Jc.prototype,`phase`,void 0),L([x()],Jc.prototype,`cleared`,void 0),L([x()],Jc.prototype,`runner`,void 0),L([x()],Jc.prototype,`chosen`,void 0),L([x()],Jc.prototype,`defenders`,void 0),L([x()],Jc.prototype,`aim`,void 0),L([x()],Jc.prototype,`keeper`,void 0),L([S(`.lk-field`)],Jc.prototype,`field`,void 0),Jc=L([y(`fl-breakaway`)],Jc)})),Xc,Zc=n((()=>{Wr(),fi(),Xc=ui(class extends di{constructor(e){if(super(e),e.type!==li.ATTRIBUTE||e.name!==`class`||e.strings?.length>2)throw Error("`classMap()` can only be used in the `class` attribute and must be the only part in the attribute.")}render(e){return` `+Object.keys(e).filter(t=>e[t]).join(` `)+` `}update(e,[t]){if(this.st===void 0){this.st=new Set,e.strings!==void 0&&(this.nt=new Set(e.strings.join(` `).split(/\s/).filter(e=>e!==``)));for(let e in t)t[e]&&!this.nt?.has(e)&&this.st.add(e);return this.render(t)}let n=e.element.classList;for(let e of this.st)e in t||(n.remove(e),this.st.delete(e));for(let e in t){let r=!!t[e];r===this.st.has(e)||this.nt?.has(e)||(r?(n.add(e),this.st.add(e)):(n.remove(e),this.st.delete(e)))}return kr}})})),Qc=n((()=>{Zc()}));function $c(e,t){return E(O(0,36).flatMap(n=>Array(e.includes(n)?t:1).fill(n)))}function el(e,t){let n=null;for(let r of e){let e=ul(r.spot);if(!e.numbers.includes(t))continue;let i=il[e.kind],a=is.indexOf(i)-(n?is.indexOf(n.tier):0);(!n||a>0||a===0&&r.chips>n.bet.chips)&&(n={bet:r,tier:i})}return n}var tl,nl,rl,il,al,ol,sl,cl,ll,ul,dl,fl,pl,ml=n((()=>{k(),ko(),N(),tl=[0,32,15,19,4,21,2,25,17,34,6,27,13,36,11,30,8,23,10,5,24,16,33,1,20,14,31,9,22,18,29,7,28,12,35,3,26],nl=new Set([1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36]),rl=()=>D(O(0,36)).slice(0,3),il={straight:`jackpot`,split:`big`,street:`big`,corner:`big`,line:`big`,column:`small`,dozen:`small`,chance:`small`},al=(e,t)=>({id:`${e}:${t.join(`-`)}`,kind:e,numbers:t}),ol=(e,t,n)=>({id:`${e}:${t}`,kind:e,numbers:n,name:t}),sl=[...O(0,36).map(e=>al(`straight`,[e])),...[1,2,3].map(e=>al(`split`,[0,e])),...O(1,33).map(e=>al(`split`,[e,e+3])),...O(1,35).filter(e=>e%3!=0).map(e=>al(`split`,[e,e+1])),al(`street`,[0,1,2]),al(`street`,[0,2,3]),...O(0,11).map(e=>al(`street`,O(3*e+1,3*e+3))),al(`corner`,[0,1,2,3]),...O(1,32).filter(e=>e%3!=0).map(e=>al(`corner`,[e,e+1,e+3,e+4])),...O(0,10).map(e=>al(`line`,O(3*e+1,3*e+6))),...[1,2,3].map(e=>ol(`column`,String(e),O(1,36).filter(t=>(t-e)%3==0))),...[1,2,3].map(e=>ol(`dozen`,String(e),O(12*e-11,12*e))),ol(`chance`,`low`,O(1,18)),ol(`chance`,`even`,O(1,36).filter(e=>e%2==0)),ol(`chance`,`red`,O(1,36).filter(e=>nl.has(e))),ol(`chance`,`black`,O(1,36).filter(e=>!nl.has(e))),ol(`chance`,`odd`,O(1,36).filter(e=>e%2==1)),ol(`chance`,`high`,O(19,36))],cl={nassa:[`straight:19`,`straight:26`,`split:0-3`,`split:12-15`,`split:32-35`],orphans:[`straight:1`,`split:6-9`,`split:14-17`,`split:17-20`,`split:31-34`],tiers:[`split:5-8`,`split:10-11`,`split:13-16`,`split:23-24`,`split:27-30`,`split:33-36`]},ll=new Map(sl.map(e=>[e.id,e])),ul=e=>ll.get(e),dl=e=>[...new Set(cl[e].flatMap(e=>ul(e).numbers))],fl=e=>j(`roulette.storm`,{boost:e},rl),pl=(e,t,n)=>j(`roulette.number`,{bets:e,storm:t,boost:n},()=>n>1?$c(t,n):fo(0,36))})),hl,gl,_l=n((()=>{Wr(),fi(),Ci(),hl=(e,t,n)=>{let r=new Map;for(let i=t;i<=n;i++)r.set(e[i],i);return r},gl=ui(class extends di{constructor(e){if(super(e),e.type!==li.CHILD)throw Error(`repeat() can only be used in text expressions`)}dt(e,t,n){let r;n===void 0?n=t:t!==void 0&&(r=t);let i=[],a=[],o=0;for(let t of e)i[o]=r?r(t,o):o,a[o]=n(t,o),o++;return{values:a,keys:i}}render(e,t,n){return this.dt(e,t,n).values}update(e,[t,n,r]){let i=xi(e),{values:a,keys:o}=this.dt(t,n,r);if(!Array.isArray(i))return this.ut=o,a;let s=this.ut??=[],c=[],l,u,d=0,f=i.length-1,p=0,m=a.length-1;for(;d<=f&&p<=m;)if(i[d]===null)d++;else if(i[f]===null)f--;else if(s[d]===o[p])c[p]=vi(i[d],a[p]),d++,p++;else if(s[f]===o[m])c[m]=vi(i[f],a[m]),f--,m--;else if(s[d]===o[m])c[m]=vi(i[d],a[m]),_i(e,c[m+1],i[d]),d++,m--;else if(s[f]===o[p])c[p]=vi(i[f],a[p]),_i(e,i[d],i[f]),f--,p++;else if(l===void 0&&(l=hl(o,p,m),u=hl(s,d,f)),l.has(s[d])){if(l.has(s[f])){let t=u.get(o[p]),n=t===void 0?null:i[t];if(n===null){let t=_i(e,i[d]);vi(t,a[p]),c[p]=t}else c[p]=vi(n,a[p]),_i(e,i[d],n),i[t]=null;p++}else Si(i[f]),f--}else Si(i[d]),d++;for(;p<=m;){let t=_i(e,c[m+1]);vi(t,a[p]),c[p++]=t}for(;d<=f;){let e=i[d++];e!==null&&Si(e)}return this.ut=o,bi(e,c),kr}})})),vl=n((()=>{_l()}));function yl(e){let[t]=e.numbers;if(e.kind===`column`){let t={x:752,y:(3-Number(e.name))*bl,w:K,h:bl};return{spot:e,hit:t,chip:{x:t.x+K/2,y:t.y+bl/2}}}if(e.kind===`dozen`){let t={x:q+(Number(e.name)-1)*4*K,y:174,w:232,h:xl};return{spot:e,hit:t,chip:{x:t.x+116,y:t.y+xl/2}}}if(e.kind===`chance`){let t={x:q+Cl.indexOf(e.name)*2*K,y:218,w:116,h:xl};return{spot:e,hit:t,chip:{x:t.x+K,y:t.y+xl/2}}}if(e.kind===`straight`)return t===0?{spot:e,hit:{x:0,y:0,w:q,h:174},chip:{x:32,y:1.5*bl}}:{spot:e,hit:wl(t),chip:Tl(t)};let n=t===0,r=e.numbers.filter(e=>e!==0),i=e.kind===`line`||e.kind===`street`&&!n||e.kind===`corner`&&n,a=n?q:Dl(r.map(e=>Tl(e).x)),o=i?174:Dl(r.map(e=>Tl(e).y));return e.kind===`split`?{spot:e,hit:n||r[1]-r[0]===3?El(a,o,16,38):El(a,o,38,16),chip:{x:a,y:o}}:e.kind===`street`&&!n?{spot:e,hit:El(a,o,38,16),chip:{x:a,y:o}}:{spot:e,hit:El(a,o,18,18),chip:{x:a,y:o}}}var K,bl,q,xl,Sl,Cl,wl,Tl,El,Dl,Ol,kl,Al,jl,Ml,Nl,Pl=n((()=>{v(),C(),Qc(),vl(),ml(),B(),R(),K=58,bl=58,q=56,xl=44,Sl=696,Cl=[`low`,`even`,`red`,`black`,`odd`,`high`],wl=e=>{let t=Math.floor((e-1)/3);return{x:q+t*K,y:(2-(e-1)%3)*bl,w:K,h:bl}},Tl=e=>{let t=wl(e);return{x:t.x+K/2,y:t.y+bl/2}},El=(e,t,n,r)=>({x:e-n/2,y:t-r/2,w:n,h:r}),Dl=e=>e.reduce((e,t)=>e+t,0)/e.length,Ol=`M${q} 0H22Q14 0 10 8L2 ${1.5*bl-6}Q0 ${1.5*bl} 2 93L10 166Q14 174 22 174H${q}Z`,kl=[`straight`,`column`,`dozen`,`chance`,`split`,`street`,`line`,`corner`],Al=sl.map(yl).sort((e,t)=>kl.indexOf(e.spot.kind)-kl.indexOf(t.spot.kind)),jl=new Map(Al.map(e=>[e.spot.id,e])),Ml=Array.from({length:36},(e,t)=>t+1).map(e=>({number:e,rect:wl(e),red:nl.has(e)})),Nl=class extends z{constructor(...e){super(...e),this.bets=[],this.locked=!1,this.result=null,this.winning=null,this.struck=[],this.strikeLabel=``,this.hovered=null,this.labels=new Map}willUpdate(e){e.has(`locked`)&&this.locked&&(this.hovered=null)}label(e){return this.labelsOf!==this.room.t&&(this.labelsOf=this.room.t,this.labels=new Map(Al.map(({spot:e})=>[e.id,e.name?this.t(`roulette.spot.${e.kind}.${e.name}`):this.t(`roulette.kind.${e.kind}`,{numbers:e.numbers.join(`, `)})]))),this.labels.get(e.id)}choose(e){this.locked||this.dispatchEvent(new CustomEvent(`place`,{detail:e}))}stacks(){let e=new Map;return this.bets.forEach(t=>e.set(t.spot,[...e.get(t.spot)??[],t])),[...e].flatMap(([e,t])=>t.map((n,r)=>{let{chip:i}=jl.get(e),a=(r-(t.length-1)/2)*12,o=this.result!==null&&ul(e).numbers.includes(this.result);return{key:`${e}|${n.prizeId}`,bet:n,x:i.x+a,y:i.y+a/2,winning:this.winning===e,lost:this.result!==null&&!o}}))}render(){let{room:e,result:t}=this,n=new Set(this.hovered?ul(this.hovered).numbers:[]),r=t===null?null:t===0?{x:32,y:1.5*bl-26}:{x:Tl(t).x+15,y:Tl(t).y-15};return h`
|
|
321
|
+
<svg class=${Xc({"lk-rt":!0,"is-locked":this.locked})} viewBox="-8 -8 ${826} ${278}" role="group" aria-label=${this.t(`roulette.table`)}>
|
|
322
|
+
<defs>
|
|
323
|
+
<linearGradient id="lk-rt-gold" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#fff3c4" /><stop offset=".45" stop-color="#d4a94e" /><stop offset="1" stop-color="#8a6420" /></linearGradient>
|
|
324
|
+
<filter id="lk-rt-shadow" x="-50%" y="-50%" width="200%" height="200%"><feDropShadow dx="0" dy="2" stdDeviation="1.6" flood-color="#000" flood-opacity=".6" /></filter>
|
|
325
|
+
</defs>
|
|
326
|
+
|
|
327
|
+
<g class="lk-rt-print">
|
|
328
|
+
<path d=${Ol} fill="#156b3c" data-number="0" />
|
|
329
|
+
<text x=${32} y=${1.5*bl} class="lk-rt-num">0</text>
|
|
330
|
+
${Ml.map(e=>g`
|
|
331
|
+
<rect x=${e.rect.x+4} y=${e.rect.y+4} width=${50} height=${50} rx="6" fill=${e.red?`#9e1b22`:`#17120e`} data-number=${e.number} />
|
|
332
|
+
<text x=${e.rect.x+K/2} y=${e.rect.y+bl/2} class="lk-rt-num">${e.number}</text>
|
|
333
|
+
`)}
|
|
334
|
+
${[1,2,3].map(e=>g`<text x=${781} y=${(3-e)*bl+bl/2} class="lk-rt-word">${this.t(`roulette.board.column`)}</text>`)}
|
|
335
|
+
${[1,2,3].map(e=>g`<text x=${q+(e-1)*4*K+116} y=${196} class="lk-rt-word">${this.t(`roulette.board.dozen${e}`)}</text>`)}
|
|
336
|
+
${Cl.map((e,t)=>e===`red`||e===`black`?g`<path d="M${q+t*2*K+K} ${227}l26 ${xl/2-9}l-26 ${xl/2-9}l-26 ${-13}z" fill=${e===`red`?`#9e1b22`:`#17120e`} stroke="url(#lk-rt-gold)" stroke-width="1.5" />`:g`<text x=${q+t*2*K+K} y=${240} class="lk-rt-word">${this.t(`roulette.board.${e}`)}</text>`)}
|
|
337
|
+
<g fill="none" stroke="url(#lk-rt-gold)" stroke-width="1.6">
|
|
338
|
+
<path d=${Ol} />
|
|
339
|
+
<rect x=${q} y="0" width=${754} height=${174} />
|
|
340
|
+
<path d=${Array.from({length:12},(e,t)=>`M${q+(t+1)*K} 0V174`).join(``)+`M${q} ${bl}H810M${q} 116H810`} />
|
|
341
|
+
<rect x=${q} y=${174} width=${Sl} height=${88} />
|
|
342
|
+
<path d=${`M${q} 218H752`+[1,2].map(e=>`M${q+e*4*K} 174V218`).join(``)+[1,2,3,4,5].map(e=>`M${q+e*2*K} 218V262`).join(``)} />
|
|
343
|
+
</g>
|
|
344
|
+
</g>
|
|
345
|
+
|
|
346
|
+
<g class="lk-rt-lit" aria-hidden="true">
|
|
347
|
+
${n.has(0)?g`<path d=${Ol} />`:_}
|
|
348
|
+
${Ml.filter(e=>n.has(e.number)).map(e=>g`<rect x=${e.rect.x+4} y=${e.rect.y+4} width=${50} height=${50} rx="6" />`)}
|
|
349
|
+
</g>
|
|
350
|
+
|
|
351
|
+
<g class="lk-rt-struck" aria-hidden="true">
|
|
352
|
+
${gl(this.struck,e=>e,e=>g`
|
|
353
|
+
<g class="lk-rt-bolt">
|
|
354
|
+
${e===0?g`<path d=${Ol} />`:g`<rect x=${wl(e).x+3} y=${wl(e).y+3} width=${52} height=${52} rx="7" />`}
|
|
355
|
+
<g transform=${e===0?`translate(32 24)`:`translate(${wl(e).x+K/2} ${wl(e).y+2})`}>
|
|
356
|
+
<rect x="-17" y="-9" width="34" height="18" rx="9" fill="url(#lk-rt-gold)" />
|
|
357
|
+
<text>${this.strikeLabel}</text>
|
|
358
|
+
</g>
|
|
359
|
+
</g>
|
|
360
|
+
`)}
|
|
361
|
+
</g>
|
|
362
|
+
|
|
363
|
+
<g class="lk-rt-chips" aria-hidden="true">
|
|
364
|
+
${gl(this.stacks(),e=>e.key,t=>g`
|
|
365
|
+
<g class=${Xc({"lk-rt-stack":!0,"is-winning":t.winning,"is-lost":t.lost})} transform="translate(${t.x} ${t.y})">
|
|
366
|
+
${gl(Array.from({length:t.bet.chips},(e,t)=>t+1),e=>e,n=>g`
|
|
367
|
+
<g class="lk-rt-chip" transform="translate(0 ${-(n-1)*3.5})" filter="url(#lk-rt-shadow)">
|
|
368
|
+
<circle r="13" fill=${e.color(t.bet.prizeId)} />
|
|
369
|
+
<circle r="11.5" fill="none" stroke="#fbf3df" stroke-width="3" stroke-dasharray="4.5 4.53" />
|
|
370
|
+
<circle r="8.5" fill=${e.color(t.bet.prizeId)} stroke="rgb(251 243 223 / .55)" stroke-width="1" />
|
|
371
|
+
${n===t.bet.chips?g`<image href=${e.icon(t.bet.prizeId)} x="-6" y="-6" width="12" height="12" />`:_}
|
|
372
|
+
</g>
|
|
373
|
+
`)}
|
|
374
|
+
</g>
|
|
375
|
+
`)}
|
|
376
|
+
</g>
|
|
377
|
+
|
|
378
|
+
${r?g`<g class="lk-rt-dolly" transform="translate(${r.x} ${r.y})" aria-hidden="true">
|
|
379
|
+
<circle r="10" fill="url(#lk-rt-gold)" filter="url(#lk-rt-shadow)" />
|
|
380
|
+
<circle r="6.5" fill="#fbf3df" />
|
|
381
|
+
<circle cx="-2" cy="-2" r="2" fill="#fff" />
|
|
382
|
+
</g>`:_}
|
|
383
|
+
|
|
384
|
+
<g class="lk-rt-hits">
|
|
385
|
+
${Al.map(e=>g`
|
|
386
|
+
<rect
|
|
387
|
+
x=${e.hit.x}
|
|
388
|
+
y=${e.hit.y}
|
|
389
|
+
width=${e.hit.w}
|
|
390
|
+
height=${e.hit.h}
|
|
391
|
+
class="is-${e.spot.kind}"
|
|
392
|
+
role="button"
|
|
393
|
+
tabindex=${this.locked||![`straight`,`column`,`dozen`,`chance`].includes(e.spot.kind)?-1:0}
|
|
394
|
+
aria-label=${this.label(e.spot)}
|
|
395
|
+
@pointerenter=${()=>this.hovered=e.spot.id}
|
|
396
|
+
@pointerleave=${()=>this.hovered=null}
|
|
397
|
+
@focus=${()=>this.hovered=e.spot.id}
|
|
398
|
+
@blur=${()=>this.hovered=null}
|
|
399
|
+
@click=${()=>this.choose(e.spot.id)}
|
|
400
|
+
@keydown=${t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),this.choose(e.spot.id))}}
|
|
401
|
+
>
|
|
402
|
+
<title>${this.label(e.spot)}</title>
|
|
403
|
+
</rect>
|
|
404
|
+
`)}
|
|
405
|
+
</g>
|
|
406
|
+
</svg>
|
|
407
|
+
`}},L([b({attribute:!1})],Nl.prototype,`bets`,void 0),L([b({type:Boolean})],Nl.prototype,`locked`,void 0),L([b({attribute:!1})],Nl.prototype,`result`,void 0),L([b({attribute:!1})],Nl.prototype,`winning`,void 0),L([b({attribute:!1})],Nl.prototype,`struck`,void 0),L([b()],Nl.prototype,`strikeLabel`,void 0),L([x()],Nl.prototype,`hovered`,void 0),Nl=L([y(`fl-roulette-table`)],Nl)}));function Fl(e,t){let n=(e%Hl+Hl)%Hl,r=Rl+t;return n<Wl?Gl(409,n/Rl,r):n<Wl+Ll?[409-(n-Wl),Vl+r]:n<Wl+Ll+Math.PI*Rl?Gl(Bl-Ll/2,Math.PI/2+(n-Wl-Ll)/Rl,r):n<Wl+2*Ll+Math.PI*Rl?[Bl-Ll/2+(n-Wl-Ll-Math.PI*Rl),Vl-r]:Gl(409,3*Math.PI/2+(n-Wl-2*Ll-Math.PI*Rl)/Rl,r)}function Il(e,t,n){let r=Math.max(2,Math.ceil((t-e)/6));return Array.from({length:r+1},(i,a)=>Fl(e+(t-e)*a/r,n))}var Ll,Rl,zl,Bl,Vl,Hl,Ul,Wl,Gl,Kl,ql,Jl,Yl,Xl,Zl,Ql,$l,eu,tu=n((()=>{v(),C(),Qc(),vl(),ml(),B(),R(),Ll=330,Rl=62,zl=34,Bl=244,Vl=79,Hl=2*Ll+2*Math.PI*Rl,Ul=Hl/tl.length,Wl=Math.PI*Rl/2,Gl=(e,t,n)=>[e+n*Math.cos(t),Vl+n*Math.sin(t)],Kl=e=>`M${e.map(([e,t])=>`${e.toFixed(1)} ${t.toFixed(1)}`).join(`L`)}Z`,ql=e=>(e+.5)*Ul,Jl=tl.map((e,t)=>{let n=ql(t-1),r=ql(t),[i,a]=Fl(t*Ul,0);return{number:e,d:Kl([...Il(n,r,zl/2),...Il(n,r,-17).reverse()]),x:i,y:a,fill:e===0?`#156b3c`:nl.has(e)?`#9e1b22`:`#17120e`}}),Yl=e=>tl.indexOf(e),Xl={nassa:[[Yl(12)-1,tl.length+Yl(19)]],orphans:[[Yl(17)-1,Yl(6)],[Yl(1)-1,Yl(9)]],tiers:[[Yl(27)-1,Yl(33)]]},Zl=Object.keys(cl).map(e=>{let t=Xl[e].flatMap(([e,t])=>Il(ql(e),ql(t),-18));return{name:e,d:Kl(t),x:Math.min(415,Math.max(Bl-Ll/2-6,t.reduce((e,[t])=>e+t,0)/t.length)),y:Vl,cost:cl[e].length}}),Ql=Kl(Il(0,Hl,20)),$l=Kl(Il(0,Hl,-17)),eu=class extends z{constructor(...e){super(...e),this.plays=[],this.chipsLeft=0,this.locked=!1,this.result=null,this.struck=[],this.hovered=null}willUpdate(e){e.has(`locked`)&&this.locked&&(this.hovered=null)}choose(e,t){!this.locked&&t<=this.chipsLeft&&this.dispatchEvent(new CustomEvent(`announce`,{detail:e}))}render(){let{room:e,chipsLeft:t}=this,n=new Set(this.hovered?dl(this.hovered):[]);return h`
|
|
408
|
+
<svg class=${Xc({"lk-track":!0,"is-locked":this.locked})} viewBox="-4 -4 ${496} ${166}" role="group" aria-label=${this.t(`roulette.track`)}>
|
|
409
|
+
<path d=${Ql} fill="#1e0d06" stroke="#d4a94e" stroke-width="1.6" />
|
|
410
|
+
<path d=${$l} fill="rgb(0 0 0 / .18)" />
|
|
411
|
+
${Jl.map(e=>g`
|
|
412
|
+
<g class=${Xc({"lk-track-cell":!0,"is-lit":n.has(e.number),"is-result":this.result===e.number,"is-struck":this.struck.includes(e.number)})} data-number=${e.number}>
|
|
413
|
+
<path d=${e.d} fill=${e.fill} stroke="#d4a94e" stroke-width=".8" />
|
|
414
|
+
<text x=${e.x} y=${e.y}>${e.number}</text>
|
|
415
|
+
</g>
|
|
416
|
+
`)}
|
|
417
|
+
${Zl.map(n=>{let r=this.plays.filter(e=>e.name===n.name),i=n.cost>t,a=()=>this.choose(n.name,n.cost);return g`
|
|
418
|
+
<g
|
|
419
|
+
class=${Xc({"lk-track-sector":!0,"is-off":i})}
|
|
420
|
+
role="button"
|
|
421
|
+
tabindex=${this.locked||i?-1:0}
|
|
422
|
+
aria-disabled=${this.locked||i}
|
|
423
|
+
aria-label=${this.t(`roulette.announced.label`,{name:this.t(`roulette.announced.${n.name}`),n:n.cost})}
|
|
424
|
+
@pointerenter=${()=>this.hovered=n.name}
|
|
425
|
+
@pointerleave=${()=>this.hovered=null}
|
|
426
|
+
@focus=${()=>this.hovered=n.name}
|
|
427
|
+
@blur=${()=>this.hovered=null}
|
|
428
|
+
@click=${a}
|
|
429
|
+
@keydown=${e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),a())}}
|
|
430
|
+
>
|
|
431
|
+
<path d=${n.d} />
|
|
432
|
+
<text x=${n.x} y=${n.y-16} class="lk-track-name">${this.t(`roulette.announced.${n.name}`)}</text>
|
|
433
|
+
<text x=${n.x} y=${n.y+1} class="lk-track-cost">${this.t(`roulette.announced.cost`,{n:n.cost})}</text>
|
|
434
|
+
${gl(r,e=>e.prizeId,(t,i)=>g`
|
|
435
|
+
<g class="lk-rt-chip" transform="translate(${n.x+(i-(r.length-1)/2)*24} ${n.y+24})">
|
|
436
|
+
<circle r="11" fill=${e.color(t.prizeId)} />
|
|
437
|
+
<circle r="9.7" fill="none" stroke="#fbf3df" stroke-width="2.6" stroke-dasharray="3.8 3.82" />
|
|
438
|
+
<circle r="7" fill=${e.color(t.prizeId)} stroke="rgb(251 243 223 / .55)" stroke-width="1" />
|
|
439
|
+
<image href=${e.icon(t.prizeId)} x="-5" y="-5" width="10" height="10" />
|
|
440
|
+
</g>
|
|
441
|
+
`)}
|
|
442
|
+
</g>
|
|
443
|
+
`})}
|
|
444
|
+
</svg>
|
|
445
|
+
`}},L([b({attribute:!1})],eu.prototype,`plays`,void 0),L([b({type:Number})],eu.prototype,`chipsLeft`,void 0),L([b({type:Boolean})],eu.prototype,`locked`,void 0),L([b({attribute:!1})],eu.prototype,`result`,void 0),L([b({attribute:!1})],eu.prototype,`struck`,void 0),L([x()],eu.prototype,`hovered`,void 0),eu=L([y(`fl-roulette-track`)],eu)}));function nu(e,t,n,r){let[i,a]=iu(t,n),[o,s]=iu(t,r),[c,l]=iu(e,r),[u,d]=iu(e,n);return`M${u.toFixed(2)} ${d.toFixed(2)}L${i.toFixed(2)} ${a.toFixed(2)}A${t} ${t} 0 0 1 ${o.toFixed(2)} ${s.toFixed(2)}L${c.toFixed(2)} ${l.toFixed(2)}A${e} ${e} 0 0 0 ${u.toFixed(2)} ${d.toFixed(2)}Z`}var ru,iu,au,ou,su,cu,lu,uu=n((()=>{v(),C(),ml(),B(),R(),ru=360/tl.length,iu=(e,t)=>{let n=t*Math.PI/180;return[e*Math.sin(n),-e*Math.cos(n)]},au=e=>e===0?[`#156b3c`,`#0e4a29`]:nl.has(e)?[`#9e1b22`,`#6e1218`]:[`#17120e`,`#0c0906`],ou=tl.map((e,t)=>{let n=t*ru-ru/2,[r,i]=au(e);return{number:e,outer:{d:nu(206,236,n,n+ru),fill:r},inner:{d:nu(174,206,n,n+ru),fill:i},whole:nu(176,234,n+.6,n+ru-.6),label:`rotate(${t*ru}) translate(0 -221)`,fret:[iu(174,n),iu(236,n)]}}),su=Array.from({length:8},(e,t)=>t*45+22.5),cu=Array.from({length:24},(e,t)=>t*7.5),lu=class extends z{constructor(...e){super(...e),this.prefix=`rl`,this.ball=!1,this.rootClass=``}render(){let{prefix:e,struck:t}=this,n=`url(#${e}-gold)`;return h`
|
|
446
|
+
<svg class=${this.rootClass||_} viewBox="-320 -320 640 640">
|
|
447
|
+
<defs>
|
|
448
|
+
<radialGradient id="${e}-cone" cx="-.2" cy="-.3" r="1.1"><stop offset="0" stop-color="#8a4a24" /><stop offset="1" stop-color="#3a1a0b" /></radialGradient>
|
|
449
|
+
<radialGradient id="${e}-track" r=".5"><stop offset=".78" stop-color="#0c0906" /><stop offset=".9" stop-color="#6b3519" /><stop offset="1" stop-color="#4a2410" /></radialGradient>
|
|
450
|
+
<radialGradient id="${e}-gloss" cx="-100" cy="-160" r="380" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff" stop-opacity=".18" /><stop offset=".6" stop-color="#fff" stop-opacity="0" /></radialGradient>
|
|
451
|
+
<linearGradient id="${e}-gold" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#fff3c4" /><stop offset=".42" stop-color="#d4a94e" /><stop offset=".55" stop-color="#8a6420" /><stop offset="1" stop-color="#f1d892" /></linearGradient>
|
|
452
|
+
<radialGradient id="${e}-ball" cx=".35" cy=".3" r=".75"><stop offset="0" stop-color="#fff" /><stop offset=".5" stop-color="#ece6d8" /><stop offset="1" stop-color="#8a7f6a" /></radialGradient>
|
|
453
|
+
</defs>
|
|
454
|
+
<circle r="314" fill="#4a2410" />
|
|
455
|
+
<circle r="306" fill="none" stroke=${n} stroke-width="10" />
|
|
456
|
+
<circle r="296" fill="url(#${e}-track)" />
|
|
457
|
+
<circle r="242" fill="#0c0906" />
|
|
458
|
+
${su.map(e=>g`<path transform="rotate(${e}) translate(0 -258)" d="M0 -9 L6 0 L0 9 L-6 0Z" fill=${n} stroke="#3a2a10" stroke-width=".8" />`)}
|
|
459
|
+
<g class="lk-rl-rotor">
|
|
460
|
+
<circle r="238" fill="#0c0906" />
|
|
461
|
+
${ou.map(e=>g`
|
|
462
|
+
<path d=${e.outer.d} fill=${e.outer.fill} />
|
|
463
|
+
<path d=${e.inner.d} fill=${e.inner.fill} />
|
|
464
|
+
${t?.includes(e.number)?g`<path d=${e.whole} class="lk-rl-struck" fill=${n} />`:_}
|
|
465
|
+
<text transform=${e.label} text-anchor="middle" dominant-baseline="middle" font-weight="700" font-size="13" fill="#f6efe0">${e.number}</text>
|
|
466
|
+
<line x1=${e.fret[0][0]} y1=${e.fret[0][1]} x2=${e.fret[1][0]} y2=${e.fret[1][1]} stroke=${n} stroke-width="2" />
|
|
467
|
+
`)}
|
|
468
|
+
<circle r="174" fill="url(#${e}-cone)" />
|
|
469
|
+
${cu.map(e=>g`<ellipse rx="120" ry="34" transform="rotate(${e})" fill="none" stroke="#f3d488" stroke-opacity=".25" stroke-width=".7" />`)}
|
|
470
|
+
<circle r="174" fill="none" stroke=${n} stroke-width="3" />
|
|
471
|
+
<circle r="236" fill="none" stroke=${n} stroke-width="3" />
|
|
472
|
+
<g stroke=${n} stroke-width="9" stroke-linecap="round"><line x1="-62" y1="0" x2="62" y2="0" /><line x1="0" y1="-62" x2="0" y2="62" /></g>
|
|
473
|
+
<circle r="22" fill=${n} stroke="#3a2a10" />
|
|
474
|
+
<circle r="9" fill="#9e1b2a" />
|
|
475
|
+
</g>
|
|
476
|
+
${this.ball?g`<g class="lk-rl-ball"><circle r="9.5" fill="url(#${e}-ball)" /><circle cx="-3" cy="-3" r="2.6" fill="#fff" /></g>`:_}
|
|
477
|
+
<circle r="300" fill="url(#${e}-gloss)" pointer-events="none" />
|
|
478
|
+
</svg>
|
|
479
|
+
`}},L([b()],lu.prototype,`prefix`,void 0),L([b({type:Boolean})],lu.prototype,`ball`,void 0),L([b({attribute:!1})],lu.prototype,`struck`,void 0),L([b()],lu.prototype,`rootClass`,void 0),lu=L([y(`fl-roulette-wheel`)],lu)}));function du(e){if(e<.6)return 282;if(e<.76){let t=(e-.6)/.16;return 282-62*(t<.5?4*t**3:1-(-2*t+2)**3/2)+10*Math.sin(t*Math.PI)**6}if(e<.96){let t=(e-.76)/.2;return 196+22*Math.abs(Math.cos(2.5*Math.PI*t))*(1-t)**1.6}return 192}function fu(e,t,n,r=6){if(r===0)return[e,t];let i={x:(e.x+t.x)/2+T(-n,n),y:(e.y+t.y)/2+T(-n,n)*.3};return[...fu(e,i,n/2,r-1),...fu(i,t,n/2,r-1).slice(1)]}function pu(e){let t=fu(e.from,e.to,46);e.paths=[t,...[.3,.55].map(e=>{let n=t[Math.floor(t.length*e)];return fu(n,{x:n.x+T(-70,70),y:n.y+T(30,80)},18,4)})]}function mu(e,t){e.beginPath(),t.forEach((t,n)=>n?e.lineTo(t.x,t.y):e.moveTo(t.x,t.y)),e.stroke()}async function hu(e,t,n){let[r,i,a]=[`from`,`active`,`to`].map(e=>`${t}-${n}-${e}`),o=e.style;n===`enter`&&(o.transition=`none`),e.classList.add(r,i),n===`enter`&&(getComputedStyle(e).opacity,o.transition=``),await new Promise(e=>requestAnimationFrame(()=>requestAnimationFrame(e))),e.classList.replace(r,a);let s=getComputedStyle(e),c=s.transitionDelay.split(`,`).map(parseFloat),l=Math.max(...s.transitionDuration.split(`,`).map((e,t)=>parseFloat(e)+(c[t%c.length]??0)));await gs(l*1e3),n===`enter`&&e.classList.remove(i,a)}var gu,_u,vu,yu,bu,xu,Su,J,Cu=n((()=>{v(),C(),Qc(),Ei(),w(),A(),k(),ml(),N(),B(),xs(),H(),F(),ks(),qs(),Pl(),tu(),uu(),R(),gu=360/tl.length,_u=[.6,.76,.84,.9,.95],vu=[45,45,50,55,60,70,80,95,115,140,175],yu=vu.reduce((e,t)=>e+t,0)+420,bu=[`#ffffff`,`#fff1c4`,`#ffd36e`,`#bfe0ff`],xu=e=>e===0?`#156b3c`:nl.has(e)?`#9e1b22`:`#17120e`,Su=e=>e<.76||e>.96?1:1+.28*Math.abs(Math.sin(2.5*Math.PI*((e-.76)/.2)))*(1-(e-.76)/.2)**1.4,J=class extends z{constructor(...e){super(...e),this.options={},this.state=`idle`,this.result=null,this.bets=[],this.chosen=``,this.winning=null,this.shownCall=null,this.surface=`table`,this.shownSurface=`table`,this.plays=[],this.history=[],this.lastThrown=null,this.struck=[],this.medallions=Array.from({length:3},()=>({shown:null,rolling:!1})),this.boost=M(`roulette`),this.storm=this.boost>1,this.call=null,this.callChange=Promise.resolve(),this.surfaceChange=Promise.resolve(),this.rotorAngle=T(0,360),this.ballAngle=T(0,360),this.ballRadius=192,this.raf=0,this.previous=performance.now(),this.spin=null,this.bolts=[],this.storming=!1,this.darkness=0}get used(){return this.bets.reduce((e,t)=>e+t.chips,0)}get struckResult(){return this.result!==null&&this.struck.includes(this.result)}willUpdate(){this.room.prizeIds.includes(this.chosen)||(this.chosen=this.room.prizeIds[0])}firstUpdated(){this.raf=requestAnimationFrame(e=>this.frame(e))}disconnectedCallback(){super.disconnectedCallback(),cancelAnimationFrame(this.raf)}draw(e=1){this.board?.querySelector(`.lk-rl-rotor`)?.setAttribute(`transform`,`rotate(${this.rotorAngle})`);let[t,n]=iu(this.ballRadius,this.ballAngle);this.board?.querySelector(`.lk-rl-ball`)?.setAttribute(`transform`,`translate(${t.toFixed(2)} ${n.toFixed(2)}) scale(${e.toFixed(3)})`)}frame(e){let t=Math.min(.05,(e-this.previous)/1e3);this.previous=e;let n=this.spin;if(!n)this.rotorAngle+=14*t,this.ballAngle+=14*t,this.draw();else{let r=Math.min(1,(e-n.start)/n.duration);for(this.rotorAngle+=(14+70*(1-r)**2)*t,this.ballAngle=this.rotorAngle+n.end+n.laps*(1-r)**3,this.ballRadius=du(r);n.cue<_u.length&&r>=_u[n.cue];)U.play(`bounce`,1+n.cue*.06,1-n.cue*.15),n.cue++;r>=.76&&this.call&&this.setCall(null),this.draw(Su(r)),r>=1&&this.land()}this.storm&&this.drawSky(e,t),this.raf=requestAnimationFrame(e=>this.frame(e))}drawSky(e,t){let n=this.sky,r=n?.getContext(`2d`);if(!n||!r)return;let i=Math.min(2,devicePixelRatio);n.width!==Math.round(n.clientWidth*i)&&(n.width=Math.round(n.clientWidth*i),n.height=Math.round(n.clientHeight*i)),r.setTransform(i,0,0,i,0,0),r.clearRect(0,0,n.clientWidth,n.clientHeight),this.darkness+=(+!!this.storming-this.darkness)*Math.min(1,t*(this.storming?6:3)),this.dark&&(this.dark.style.opacity=(.55*this.darkness).toFixed(3)),this.bolts=this.bolts.filter(t=>e-t.start<700),r.lineCap=`round`,r.lineJoin=`round`;for(let t of this.bolts){let n=Math.max(0,e-t.start)/1e3,i=Math.floor(n/.06);i!==t.shape&&(t.shape=i,pu(t));let a=[1,.35,1,.75,.3,.9,.5,.2][i%8]*Math.max(0,1-n/.7),o=r.createRadialGradient(t.to.x,t.to.y,0,t.to.x,t.to.y,90);o.addColorStop(0,`rgb(255 244 210 / ${(.9*a).toFixed(3)})`),o.addColorStop(1,`rgb(255 214 120 / 0)`),r.fillStyle=o,r.fillRect(t.to.x-90,t.to.y-90,180,180),t.paths.forEach((e,t)=>{let n=t?.5:1;r.globalAlpha=a,r.shadowColor=`#ffd36e`,r.shadowBlur=24,r.strokeStyle=`rgb(255 214 120 / 0.35)`,r.lineWidth=11*n,mu(r,e),r.shadowColor=`#bfe0ff`,r.shadowBlur=10,r.strokeStyle=`#fff1c4`,r.lineWidth=4*n,mu(r,e),r.shadowBlur=0,r.strokeStyle=`#ffffff`,r.lineWidth=1.6*n,mu(r,e)})}r.globalAlpha=1}setMedallion(e,t){let n=this.medallions[e];if(n.shown===t.shown&&n.rolling===t.rolling)return;let r=this.querySelectorAll(`.lk-rl-medallion`)[e],i=()=>r?.querySelector(`:scope > b, :scope > .fl-icon`),a=n.shown===t.shown?null:i();if(a){let e=a.cloneNode(!0);e.classList.remove(`lk-roll-enter-from`,`lk-roll-enter-active`,`lk-roll-enter-to`),r.append(e),hu(e,`lk-roll`,`leave`).then(()=>e.remove())}this.medallions=this.medallions.map((n,r)=>r===e?t:n),a&&this.updateComplete.then(()=>{let e=i();e&&hu(e,`lk-roll`,`enter`)})}setCall(e){this.call!==e&&(this.call=e,this.callChange=this.callChange.then(async()=>{if(this.shownCall===this.call)return;let e=this.querySelector(`.lk-rl-call`);e&&await hu(e,`lk-call`,`leave`),this.shownCall=this.call,await this.updateComplete;let t=this.querySelector(`.lk-rl-call`);t&&await hu(t,`lk-call`,`enter`)}))}setSurface(e){this.surface!==e&&(this.surface=e,this.surfaceChange=this.surfaceChange.then(async()=>{if(this.shownSurface===this.surface)return;let e=this.querySelector(`.lk-rl-felt > * > svg`);e&&await hu(e,`lk-surface`,`leave`),this.shownSurface=this.surface,await this.updateComplete;let t=this.querySelector(`.lk-rl-felt > fl-roulette-table, .lk-rl-felt > fl-roulette-track`);await t?.updateComplete;let n=t?.querySelector(`:scope > svg`);n&&await hu(n,`lk-surface`,`enter`)}))}roll(e,t){if(P())return this.setMedallion(e,{shown:t,rolling:!1}),this.strike(e,t);this.setMedallion(e,{shown:this.medallions[e].shown,rolling:!0});let n=0;vu.forEach((r,i)=>{n+=r,this.later(()=>{let n=i===vu.length-1;this.setMedallion(e,{shown:n?t:fo(0,36),rolling:!n}),U.play(`tick`,1.4-i*.03,.5),n&&this.later(()=>this.strike(e,t),160)},n)})}strike(e,t){if(this.struck=[...this.struck,t],U.play(`thunder`,1,.9),P())return;let n=this.sky.getBoundingClientRect(),r=this.root?.querySelector(`.lk-rl-felt [data-number="${t}"]`)?.getBoundingClientRect(),i=this.root?.querySelectorAll(`.lk-rl-medallion`)[e]?.getBoundingClientRect();if(!r||!i)return;let a={x:r.left+r.width/2-n.left,y:r.top+r.height/2-n.top},o={x:i.left+i.width/2-n.left,y:i.top+i.height/2-n.top};this.bolts.push({from:o,to:a,start:performance.now(),shape:-1,paths:[]}),I.burst(r.left+r.width/2,r.top+r.height/2,{count:26,type:`spark`,speed:520,spread:Math.PI*2,life:.55,gravity:500,colors:bu})}layout(){return{bets:this.bets.map(e=>({...e})),plays:[...this.plays]}}placeChips(e){if(this.state!==`idle`||this.used+e.length>6)return!1;this.result=null,this.clearStorm(),this.history=[...this.history,this.layout()];let t=[...this.bets];for(let n of e){let e=t.find(e=>e.spot===n&&e.prizeId===this.chosen);e?e.chips++:t.push({spot:n,prizeId:this.chosen,chips:1})}return this.bets=t,U.play(`tick`),!0}announce(e){this.placeChips(cl[e])&&(this.plays.some(t=>t.name===e&&t.prizeId===this.chosen)||(this.plays=[...this.plays,{name:e,prizeId:this.chosen}]))}restore(e){this.bets=e.bets.map(e=>({...e})),this.plays=[...e.plays],this.result=null,this.clearStorm()}clearChips(){this.history=[...this.history,this.layout()],this.restore({bets:[],plays:[]})}undo(){let e=this.history.at(-1);e&&(this.history=this.history.slice(0,-1),this.restore(e))}rebet(){this.state===`idle`&&!this.bets.length&&this.lastThrown&&(this.history=[...this.history,this.layout()],this.restore(this.lastThrown),U.play(`tick`))}clearStorm(){this.struck=[],this.medallions.forEach((e,t)=>this.setMedallion(t,{shown:null,rolling:!1}))}launch(){if(this.state!==`idle`||!this.bets.length)return;if(this.result=null,this.winning=null,this.clearStorm(),this.lastThrown=this.layout(),this.history=[],this.state=`spinning`,!this.storm)return this.throwBall([]);let e=fl(this.boost),t=P()?0:yu;this.storming=!P(),e.forEach((e,n)=>this.later(()=>this.roll(n,e),350+n*t)),this.later(()=>{this.storming=!1,this.throwBall(e)},350+e.length*t+250)}throwBall(e){let t=pl(this.bets,e,this.boost),n=tl.indexOf(t),r=po(this.ballAngle-this.rotorAngle,360),i=n*gu;this.setCall(`made`),this.later(()=>this.call===`made`&&this.setCall(`closed`),P()?0:1900),this.spin={index:n,end:i,laps:po(r-i,360)+3240,start:performance.now(),duration:P()?1:7200,cue:0},U.play(`whoosh`)}land(){let e=tl[this.spin.index];this.spin=null,this.setCall(null),this.ballRadius=192,this.result=e,U.play(`stop`);let t=this.struckResult;if(t){U.play(`thunder`,1,.7);let e=this.board?.querySelector(`.lk-rl-result`)?.getBoundingClientRect();e&&!P()&&I.burst(e.left+e.width/2,e.top+e.height/2,{count:60,type:`spark`,speed:700,spread:Math.PI*2,life:.8,gravity:300,colors:bu})}let n=el(this.bets,e);if(!n){this.state=`idle`;return}this.state=`won`,this.winning=n.bet.spot,U.play(`chime`,n.tier===`jackpot`?1.5:1.1);let r={game:`roulette`,tier:n.tier,prizeId:n.bet.prizeId,award:ho(this.room.prize(n.bet.prizeId),n.tier),detail:{key:t?`detail.storm`:`detail.roulette`,params:{n:e}}};this.later(()=>this.room.finish(r),P()?200:1500)}render(){let{boost:e,storm:t,result:n,used:r}=this,i=this.state===`idle`,a=this.struckResult,o=n===null?`#17120e`:xu(n),s=this.t(t?`roulette.storm.rules`:`games.roulette.rules`,{n:6,m:e});return Ws(this.room.t,{state:this.state,rules:s,multiplier:e},h`
|
|
480
|
+
<div class="lk-roulette ${t?`lk-roulette--storm`:``}">
|
|
481
|
+
<div class="lk-rl-board">
|
|
482
|
+
${t?h`<div class="lk-rl-bolts" role="status" aria-label=${this.t(`roulette.storm.numbers`)}>
|
|
483
|
+
<span class="lk-rl-bolts-title">${V(lo)}${this.t(`roulette.storm.title`)}</span>
|
|
484
|
+
${this.medallions.map(t=>{let r=!t.rolling&&t.shown!==null&&this.struck.includes(t.shown);return h`
|
|
485
|
+
<div
|
|
486
|
+
class=${Xc({"lk-rl-medallion":!0,"is-rolling":t.rolling,"is-struck":r,"is-result":t.shown!==null&&t.shown===n})}
|
|
487
|
+
style=${t.shown===null?_:`--lk-bolt-number: ${xu(t.shown)}`}
|
|
488
|
+
>
|
|
489
|
+
${t.shown===null?V(lo):wi(t.shown,h`<b>${t.shown}</b>`)}
|
|
490
|
+
${r?h`<small>×${e}</small>`:_}
|
|
491
|
+
</div>
|
|
492
|
+
`})}
|
|
493
|
+
<p>${this.t(`roulette.storm.odds`,{n:e})}</p>
|
|
494
|
+
</div>`:_}
|
|
495
|
+
<fl-roulette-wheel prefix="rl" ball .struck=${this.struck}></fl-roulette-wheel>
|
|
496
|
+
<div
|
|
497
|
+
class=${Xc({"lk-rl-result":!0,"is-on":n!==null,"is-struck":a})}
|
|
498
|
+
style="background: radial-gradient(circle at 35% 30%, color-mix(in oklab, ${o} 70%, white), ${o} 60%); box-shadow: 0 0 0 4px rgb(255 255 255 / .2), 0 0 40px ${o}"
|
|
499
|
+
>
|
|
500
|
+
<b>${n}</b>
|
|
501
|
+
${a?h`<small>${V(lo)}×${e}</small>`:_}
|
|
502
|
+
</div>
|
|
503
|
+
</div>
|
|
504
|
+
<div class="lk-rl-switch" role="radiogroup" aria-label=${this.t(`roulette.surface`)}>
|
|
505
|
+
${[`table`,`track`].map(e=>h`
|
|
506
|
+
<button role="radio" aria-checked=${this.surface===e} class=${this.surface===e?`is-on`:``} @click=${()=>this.setSurface(e)}>
|
|
507
|
+
${V(e===`table`?ha:Fa)}${this.t(`roulette.${e}`)}
|
|
508
|
+
</button>
|
|
509
|
+
`)}
|
|
510
|
+
</div>
|
|
511
|
+
<div class="lk-rl-felt">
|
|
512
|
+
${this.shownSurface===`table`?h`<fl-roulette-table
|
|
513
|
+
.bets=${this.bets}
|
|
514
|
+
?locked=${!i}
|
|
515
|
+
.result=${n}
|
|
516
|
+
.winning=${this.winning}
|
|
517
|
+
.struck=${this.struck}
|
|
518
|
+
.strikeLabel=${`×${e}`}
|
|
519
|
+
@place=${e=>this.placeChips([e.detail])}
|
|
520
|
+
></fl-roulette-table>`:h`<fl-roulette-track
|
|
521
|
+
.plays=${this.plays}
|
|
522
|
+
.chipsLeft=${6-r}
|
|
523
|
+
?locked=${!i}
|
|
524
|
+
.result=${n}
|
|
525
|
+
.struck=${this.struck}
|
|
526
|
+
@announce=${e=>this.announce(e.detail)}
|
|
527
|
+
></fl-roulette-track>`}
|
|
528
|
+
${this.shownCall?wi(this.shownCall,h`<p class="lk-rl-call" aria-live="assertive"><span>${this.t(`roulette.call.${this.shownCall}`)}</span></p>`):_}
|
|
529
|
+
</div>
|
|
530
|
+
<div class="lk-rl-rack">
|
|
531
|
+
<fl-chips
|
|
532
|
+
.chosen=${this.chosen}
|
|
533
|
+
?disabled=${!i}
|
|
534
|
+
.locked=${this.bets[0]?.prizeId??null}
|
|
535
|
+
.count=${{used:r,max:6}}
|
|
536
|
+
@choose=${e=>this.chosen=e.detail}
|
|
537
|
+
></fl-chips>
|
|
538
|
+
<div class="lk-rl-actions">
|
|
539
|
+
<div class="lk-rl-quick">
|
|
540
|
+
<button class="lk-round" aria-label=${this.t(`roulette.undo`)} data-tip=${this.t(`roulette.undo`)} ?disabled=${!this.history.length||!i} @click=${this.undo}>
|
|
541
|
+
${V(to)}
|
|
542
|
+
</button>
|
|
543
|
+
<button class="lk-round" aria-label=${this.t(`roulette.rebet`)} data-tip=${this.t(`roulette.rebet`)} ?disabled=${!this.lastThrown||!!this.bets.length||!i} @click=${this.rebet}>
|
|
544
|
+
${V(za)}
|
|
545
|
+
</button>
|
|
546
|
+
<button class="lk-round" aria-label=${this.t(`roulette.clear`)} data-tip=${this.t(`roulette.clear`)} ?disabled=${!this.bets.length||!i} @click=${this.clearChips}>
|
|
547
|
+
${V($a)}
|
|
548
|
+
</button>
|
|
549
|
+
</div>
|
|
550
|
+
<button class="lk-btn lk-btn--primary lk-btn--lg" ?disabled=${!this.bets.length||!i} @click=${this.launch}>
|
|
551
|
+
${V(Yi)}${this.t(`roulette.launch`)}
|
|
552
|
+
</button>
|
|
553
|
+
</div>
|
|
554
|
+
</div>
|
|
555
|
+
${t?h`<div class="lk-rl-dark" aria-hidden="true"></div><canvas class="lk-rl-sky" aria-hidden="true"></canvas>`:_}
|
|
556
|
+
</div>
|
|
557
|
+
`)}},L([b({attribute:!1})],J.prototype,`options`,void 0),L([x()],J.prototype,`state`,void 0),L([x()],J.prototype,`result`,void 0),L([x()],J.prototype,`bets`,void 0),L([x()],J.prototype,`chosen`,void 0),L([x()],J.prototype,`winning`,void 0),L([x()],J.prototype,`shownCall`,void 0),L([x()],J.prototype,`surface`,void 0),L([x()],J.prototype,`shownSurface`,void 0),L([x()],J.prototype,`plays`,void 0),L([x()],J.prototype,`history`,void 0),L([x()],J.prototype,`lastThrown`,void 0),L([x()],J.prototype,`struck`,void 0),L([x()],J.prototype,`medallions`,void 0),L([S(`.lk-roulette`)],J.prototype,`root`,void 0),L([S(`.lk-rl-board`)],J.prototype,`board`,void 0),L([S(`.lk-rl-sky`)],J.prototype,`sky`,void 0),L([S(`.lk-rl-dark`)],J.prototype,`dark`,void 0),J=L([y(`fl-roulette`)],J)}));function wu(e){let t=t=>xo(e[t],Ou.filter(e=>e===t).length),n={small:t(`small`),big:t(`big`),jackpot:t(`jackpot`)},r={small:0,big:0,jackpot:0};return Ou.map(e=>e===`none`?{tier:e,award:null}:{tier:e,award:n[e][r[e]++]})}function Tu(e,t){let n=Ou.flatMap((t,n)=>t===e?[n]:[]),r=Math.min(...n.map(e=>Math.abs(e-t)));return E(n.filter(e=>Math.abs(e-t)===r))}function Eu(e,t){let n=Au(t),r=ju[Math.min(e,8)];return Ou.map((e,t)=>e===`none`?{tier:e,award:null}:n[Math.max(0,r-Math.min(2,Math.abs(t-4)))])}function Du(e,t){return Math.min(1,(rs.small+rs.big+rs.jackpot)*e*(t?e:1))}var Ou,ku,Au,ju,Mu=n((()=>{A(),k(),N(),Ou=[`none`,`small`,`none`,`big`,`jackpot`,`big`,`none`,`small`,`none`],ku=[180,400],Au=e=>[...xo(e.small,6).map(e=>({tier:`small`,award:e})),...xo(e.big,3).map(e=>({tier:`big`,award:e})),...xo(e.jackpot,1).map(e=>({tier:`jackpot`,award:e}))],ju=[0,2,4,6,7,8,8,8,9]})),Nu,Pu,Fu,Iu,Y,Lu,Ru,zu,Bu,Vu,Hu,Uu,Wu,Gu,Ku=n((()=>{v(),C(),w(),Mu(),k(),ko(),N(),qs(),B(),xs(),H(),F(),ks(),R(),Nu=[`#ff657c`,`#ffbb66`,`#fff19c`,`#8df0b5`,`#6ecbff`,`#c797ff`],Pu=[`#fff6d2`,`#ffe08a`,`#f6c453`,`#e0a12e`,`#b9791c`],Fu=400,Iu=620,Y={x:200,y:220},Lu=560,Ru=376/Ou.length,zu={none:`#2a170c`,small:`#1d3561`,big:`#7d1c24`,jackpot:`#c79a3e`},Bu=72,Vu=Math.sqrt(177**2-(Y.y-Bu)**2)-4,Hu=e=>Math.max(Y.x-Vu,Math.min(Y.x+Vu,e)),Uu={blue:[`#8cc8ff`,`#2f7fe6`,`#163f8c`],red:[`#ffa08c`,`#f0433f`,`#8c1420`],violet:[`#ffc4f4`,`#e04fd0`,`#7a1f8c`]},Wu={blue:7.2,red:7.2,violet:9},Gu=class extends z{constructor(...e){super(...e),this.options={},this.state=`idle`,this.chosen=``,this.redHits=0,this.fever=!1,this.violetHit=!1,this.boost=1,this.colorful=!1,this.dropX=Y.x,this.pegs=[],this.guide=[],this.avoid=[],this.board=null,this.ball=null,this.trail=[],this.target=0,this.tier=`none`,this.wins=!1,this.landed=null,this.raf=0,this.previous=performance.now(),this.time=0,this.stillSince=0,this.slowMotionUntil=0,this.zoom=1,this.camera={x:Y.x,y:Y.y},this.lastFirework=0,this.pending=[],this.frame=e=>{let t=Math.min(.033,(e-this.previous)/1e3);this.previous=e,this.time+=t;let{time:n}=this;if(this.ball){let e=this.colorful&&this.redHits===7?this.pegs.find(e=>e.color===`red`&&!e.lit):void 0,r=e&&Math.hypot(this.ball.x-e.x,this.ball.y-e.y)<65;r&&(this.camera={x:e.x,y:e.y}),this.physics(t*(!P()&&(r||n<this.slowMotionUntil)?.24:1)),this.ball&&(this.trail=[...this.trail,{x:this.ball.x,y:this.ball.y}].slice(this.fever?-40:-8));let i=!P()&&(r||n<this.slowMotionUntil);this.zoom+=((i?2.4:1)-this.zoom)*Math.min(1,t*(i?5:2.5))}else this.zoom+=(1-this.zoom)*Math.min(1,t*2.5);if(this.fever&&!P()&&n-this.lastFirework>.3){this.lastFirework=n;let e=this.canvas.getBoundingClientRect();I.burst(e.left+T(0,e.width),e.top+T(0,e.height*.7),{count:20,colors:Nu,type:`spark`,speed:420,life:.9})}let r=this.canvas?.getContext(`2d`);if(r){let e=Math.min(2,devicePixelRatio);r.setTransform(e,0,0,e,0,0),r.clearRect(0,0,Fu,Iu),this.zoom>1.001&&(r.translate(this.camera.x,this.camera.y),r.scale(this.zoom,this.zoom),r.translate(-this.camera.x,-this.camera.y)),this.drawBoard(r),this.drawBall(r)}this.raf=requestAnimationFrame(this.frame)},this.keydown=e=>{let t=e.composedPath()[0];this.state!==`idle`||e.repeat||t instanceof HTMLElement&&t.closest(`input, select, textarea, [role=dialog] input`)||((e.code===`ArrowLeft`||e.code===`ArrowRight`)&&(e.preventDefault(),this.dropX=Hu(this.dropX+(e.code===`ArrowLeft`?-10:10))),e.code===`Space`&&!(t instanceof HTMLButtonElement)&&(e.preventDefault(),this.drop()))}}get pockets(){let{bonus:e}=this.options;if(this.colorful)return Eu(this.redHits,this.room.board);let t=wu(this.room.board);return e?t.map(t=>t.tier===e.tier?{tier:t.tier,award:e.award}:t):t}willUpdate(e){if(this.hasUpdated)e.has(`room`)&&!this.room.prizeIds.includes(this.chosen)&&(this.chosen=this.room.prizeIds[0]);else{let{bonus:e}=this.options;this.boost=e?1:M(`pachinko`),this.colorful=this.boost>1&&!e,this.chosen=e?.prizeId??this.room.prizeIds[0],this.buildPegs(),this.colorPegs()}}buildPegs(){let e=this.colorful?{rows:10,top:112,rowStep:44,step:50,reach:4}:{rows:16,top:92,rowStep:29,step:28,reach:6};for(let t=0;t<e.rows;t++){let n=e.top+t*e.rowStep;if(n>535)break;for(let r=(t%2?.5-e.reach:-e.reach)*e.step;r<=e.reach*e.step;r+=e.step){let e=Y.x+r;e<24||e>376||Math.hypot(e-Y.x,n-Y.y)>164&&n<Y.y||this.pegs.push({x:e,y:n,hit:-1})}}for(let e=1;e<Ou.length;e++)this.pegs.push({x:12+e*Ru,y:556,hit:-1,divider:!0})}colorPegs(){for(let e of this.pegs)e.hit=-1,e.lit=!1,e.color=void 0;if(!this.colorful)return;let e=this.pegs.filter(e=>!e.divider),t=j(`pachinko.board`,{pegs:e},()=>{let[t,n]=ku,r=D(e.filter(e=>e.y>=t&&e.y<=n))[0];return{violet:r,reds:D(e.filter(e=>e!==r)).slice(0,8)}});this.board=t,e.forEach(e=>e.color=`blue`),t.reds.forEach(e=>e.color=`red`),t.violet.color=`violet`}drawBoard(e){let{colorful:t,time:n,dropX:r}=this,i=e.createLinearGradient(0,0,0,Iu);i.addColorStop(0,t?`#102941`:`#4a2614`),i.addColorStop(1,t?`#080e1c`:`#22100a`),e.fillStyle=i,e.beginPath(),e.moveTo(4,616),e.lineTo(4,Y.y),e.arc(Y.x,Y.y,196,Math.PI,0),e.lineTo(396,616),e.closePath(),e.fill(),e.strokeStyle=`rgb(243 212 136 / 0.14)`,e.lineWidth=.6;for(let n=0;n<(t?0:24);n++)e.beginPath(),e.ellipse(Y.x,380,170,46,n*Math.PI/24,0,Math.PI*2),e.stroke();e.strokeStyle=`#d4a94e`,e.lineWidth=3,e.beginPath(),e.arc(Y.x,Y.y,190,Math.PI,0),e.stroke();for(let t=0;t<30;t++){let r=t/29*Math.PI,i=this.state===`spinning`?(Math.floor(n*18)-t)%6==0:(Math.floor(n*1.6)+t)%2==0;e.fillStyle=i?`#ffe3a0`:`#4a3a1e`,e.shadowColor=`#ffcf7a`,e.shadowBlur=i?10:0,e.beginPath(),e.arc(Y.x+Math.cos(Math.PI-r)*198,Y.y-Math.sin(r)*198,3.2,0,Math.PI*2),e.fill()}e.shadowBlur=0,e.strokeStyle=`rgb(226 189 99 / 0.55)`,e.lineWidth=2,e.beginPath(),e.moveTo(Y.x-Vu,61),e.lineTo(Y.x+Vu,61),e.stroke(),this.state===`idle`&&!this.ball&&(e.setLineDash([3,5]),e.strokeStyle=`rgb(255 227 160 / 0.45)`,e.lineWidth=1.2,e.beginPath(),e.moveTo(r,80),e.lineTo(r,132),e.stroke(),e.setLineDash([]),e.fillStyle=`#d4a94e`,e.beginPath(),e.roundRect(r-9,57,18,8,3),e.fill(),e.globalAlpha=.55+.35*Math.sin(n*4),this.drawSphere(e,r,Bu),e.globalAlpha=1),this.pockets.forEach((t,n)=>{let r=12+n*Ru,i=e.createLinearGradient(0,Lu,0,610);i.addColorStop(0,zu[t.tier]),i.addColorStop(1,`#120a05`),e.fillStyle=i,e.globalAlpha=this.landed===n?1:.85,e.beginPath(),e.roundRect(r+2,Lu,Ru-4,46,8),e.fill(),e.globalAlpha=1,this.landed===n&&(e.strokeStyle=`#fff4d6`,e.lineWidth=2,e.stroke()),e.fillStyle=t.tier===`jackpot`?`#2a1a05`:`#f6e2a6`,e.font=t.tier!==`none`&&t.award===null?`700 14px sans-serif`:`700 10px ui-monospace, Menlo, monospace`,e.textAlign=`center`,e.fillText(t.tier===`none`?`—`:this.room.award(t.tier,t.award),r+Ru/2,590)});for(let r of this.pegs){if(t&&r.divider)continue;let i=r.hit>=0?Math.max(0,1-(n-r.hit)/.35):0;if(i>0&&(e.fillStyle=`rgba(255, 214, 130, ${i*.6})`,e.beginPath(),e.arc(r.x,r.y,4+i*9,0,Math.PI*2),e.fill()),t&&!r.divider){this.drawOrb(e,r.x,r.y,r.color,r.lit===!0,i);continue}let a=e.createRadialGradient(r.x-1.4,r.y-1.4,.5,r.x,r.y,4.6);a.addColorStop(0,`#ffffff`),a.addColorStop(.5,i>0?`#fff4d6`:`#d4a94e`),a.addColorStop(1,`#4b3a1c`),e.fillStyle=a,e.beginPath(),e.arc(r.x,r.y,r.divider?4:3.6,0,Math.PI*2),e.fill()}}drawOrb(e,t,n,r,i,a){let o=r===`violet`&&!i&&!P()?1+.08*Math.sin(this.time*5):1,s=Wu[r]*o*(1+a*.25),[c,l,u]=Uu[r];(i||r===`violet`)&&(e.fillStyle=i?`rgb(255 248 220 / 0.35)`:`rgb(240 120 230 / 0.35)`,e.beginPath(),e.arc(t,n,s+4+a*4,0,Math.PI*2),e.fill());let d=e.createLinearGradient(t,n-s,t,n+s);d.addColorStop(0,i?`#ffffff`:c),d.addColorStop(.45,i?c:l),d.addColorStop(1,i?l:u),e.fillStyle=d,e.beginPath(),e.arc(t,n,s,0,Math.PI*2),e.fill(),e.strokeStyle=`#f1cf72`,e.lineWidth=1.8,e.stroke(),e.strokeStyle=`#5a3a0c`,e.lineWidth=.8,e.beginPath(),e.arc(t,n,s+1.3,0,Math.PI*2),e.stroke(),e.fillStyle=`rgb(255 255 255 / 0.85)`,e.beginPath(),e.ellipse(t-s*.12,n-s*.5,s*.6,s*.28,-.15,0,Math.PI*2),e.fill(),r===`violet`&&(e.fillStyle=`#ffffff`,e.strokeStyle=u,e.lineWidth=2.4,e.font=`900 13px sans-serif`,e.textAlign=`center`,e.textBaseline=`middle`,e.strokeText(`+`,t,n+1),e.fillText(`+`,t,n+1),e.textBaseline=`alphabetic`)}drawSphere(e,t,n){let r=e.createRadialGradient(t-2.2,n-2.4,.6,t,n,7);r.addColorStop(0,`#ffffff`),r.addColorStop(.5,`#ece6d8`),r.addColorStop(1,`#6d6250`),e.fillStyle=r,e.beginPath(),e.arc(t,n,6.5,0,Math.PI*2),e.fill()}drawBall(e){let{ball:t,trail:n}=this;t&&(this.fever?(e.save(),e.shadowColor=`#ffcf5a`,e.shadowBlur=14,n.forEach((t,r)=>{let i=r/n.length;e.globalAlpha=i*.9,e.fillStyle=Pu[Math.floor((1-i)*(Pu.length-1))],e.beginPath(),e.arc(t.x,t.y,2+6*i,0,Math.PI*2),e.fill(),r%4==0&&(e.fillStyle=`#ffffff`,e.beginPath(),e.arc(t.x+T(-5,5),t.y+T(-5,5),T(.6,1.6),0,Math.PI*2),e.fill())}),e.restore()):(n.forEach((t,r)=>{e.fillStyle=`#ffecc8`,e.globalAlpha=r/n.length*.25,e.beginPath(),e.arc(t.x,t.y,6.5*(r/n.length),0,Math.PI*2),e.fill()}),e.globalAlpha=1),this.drawSphere(e,t.x,t.y))}physics(e){let{ball:t,colorful:n}=this;if(!t)return;let r=(t.x-12)/Ru-.5;if(!n&&this.target<0&&t.y>330&&(this.target=j(`pachinko.pocket`,{near:r},()=>Tu(this.tier,r))),n&&t.y<530){let e=Ou.flatMap((e,t)=>e!==`none`===this.wins?[t]:[]);this.target=j(`pachinko.pocket`,{near:r},()=>e.sort((e,t)=>Math.abs(e-r)-Math.abs(t-r))[0])}let i=12+(this.target+.5)*Ru,a=e/4,o=this.guide[0];o&&(o.lit||t.y>o.y+10||this.stillSince&&this.time-this.stillSince>1)&&(this.guide=this.guide.slice(1));let s=this.guide[0];for(let e=0;e<4;e++){if(t.vy+=(n?1150:1500)*a,s&&t.y<s.y-4){let e=(Wu[s.color]+6.5)/2,n=s.x+(t.x<s.x?-e:e),r=s.y-Wu[s.color]-6.5-t.y,i=(-t.vy+Math.sqrt(Math.max(0,t.vy**2+2300*r)))/1150;i>.02&&(t.vx=Math.max(-600,Math.min(600,(n-t.x)/i)))}else n?t.vx+=Math.max(-220,Math.min(220,(i-t.x)*(t.y>470?9:3)))*a:this.target>=0&&(t.vx+=Math.max(-320,Math.min(320,(i-t.x)*(t.y>440?16:5)))*a);for(let e of this.avoid){let n=t.x-e.x;e.y-t.y>-6&&e.y-t.y<90&&Math.abs(n)<30&&(t.vx+=Math.sign(n||1)*2600*a)}if(t.x+=t.vx*a,t.y+=t.vy*a,t.y<Y.y){let e=t.x-Y.x,n=t.y-Y.y,r=Math.hypot(e,n);if(r>177){let i=e/r,a=n/r;t.x=Y.x+i*177,t.y=Y.y+a*177;let o=t.vx*i+t.vy*a;o>0&&(t.vx-=1.5*o*i,t.vy-=1.5*o*a)}}t.x<18&&Object.assign(t,{x:18,vx:Math.abs(t.vx)*.5}),t.x>382&&Object.assign(t,{x:382,vx:-Math.abs(t.vx)*.5});for(let e of this.pegs){if(t.y>540&&e.divider)continue;let r=t.x-e.x,i=t.y-e.y,a=Math.hypot(r,i),o=6.5+(e.divider?4:n?Wu[e.color]:3.6);if(a>=o||a===0)continue;let s=r/a,c=i/a;t.x=e.x+s*o,t.y=e.y+c*o;let l=t.vx*s+t.vy*c;if(l<0){let r=n&&!e.divider?1.78:1.62;t.vx-=r*l*s,t.vy-=r*l*c;let i=n?T(-6,6):T(-38,38);if(t.vx+=-c*i,t.vy+=s*i,this.time-e.hit>.08&&U.play(`bounce`,.8+t.y/Iu*.6,.5),n&&!e.divider&&!e.lit){if(e.lit=!0,e.color===`red`&&(this.redHits++,this.redHits===8&&this.startFever()),e.color===`violet`){let e=Du(this.boost,!1);!this.wins&&e<1&&(this.wins=j(`pachinko.wins`,{boost:this.boost,violet:!0},()=>Math.random()<(Du(this.boost,!0)-e)/(1-e))),this.violetHit=!0}e.color!==`blue`&&U.play(`chime`,e.color===`violet`?1.8:1+this.redHits*.08)}e.hit=this.time}}if(t.y>Lu){let e=12+this.target*Ru+8,n=12+(this.target+1)*Ru-8;if(t.x=Math.max(e,Math.min(n,t.x)),t.y>590)return this.land()}}Math.hypot(t.vx,t.vy)<30?(this.stillSince||=this.time,this.time-this.stillSince>.8&&Object.assign(t,{vx:t.vx+T(-80,80),vy:t.vy-60})):this.stillSince=0}startFever(){if(this.fever||(this.fever=!0,this.slowMotionUntil=this.time+1.5,U.play(`jackpot`),P()))return;let e=this.canvas.getBoundingClientRect();I.burst(e.left+e.width/2,e.top+e.height/3,{count:110,colors:Nu,speed:800,life:2.3})}land(){if(!this.ball)return;this.ball.y=590,this.landed=this.target;let e=this.pockets[this.target];if(U.play(`stop`),e.tier===`none`){this.ball=null,this.colorful?this.pending.push(this.later(()=>{this.colorPegs(),this.state=`idle`},P()?0:600)):this.state=`idle`,this.fever&&this.pending.push(this.later(()=>this.fever=!1,3e3));return}this.colorful&&e.tier===`jackpot`&&this.startFever(),U.play(`chime`,e.tier===`jackpot`?1.5:1.1);let t=this.canvas.getBoundingClientRect();I.burst(t.left+(12+(this.target+.5)*Ru)*t.width/Fu,t.top+Lu*t.height/Iu,{count:30,type:`spark`,speed:520,spread:1.6,life:.7,gravity:600,colors:bs}),this.state=`won`,this.ball=null;let{bonus:n}=this.options,r={game:n?`wheel`:`pachinko`,tier:e.tier,prizeId:this.chosen,award:e.award,detail:{key:n?`detail.wheel.pachinko`:this.colorful?`pachinko.detail`:`detail.pachinko`}};this.pending.push(this.later(()=>this.room.finish(r),P()?300:this.fever?3800:2e3))}aim(e){if(this.state!==`idle`)return;let t=this.canvas.getBoundingClientRect();this.dropX=Hu((e.clientX-t.left)*Fu/t.width)}drop(){if(this.state!==`idle`)return;this.pending.forEach(clearTimeout),this.pending=[];let{bonus:e}=this.options;this.tier=e?.tier??(this.colorful?`none`:cs(`pachinko`,this.boost)),this.redHits=0,this.fever=!1,this.slowMotionUntil=0,this.violetHit=!1,this.wins=j(`pachinko.wins`,{boost:this.boost,violet:!1},()=>Math.random()<Du(this.boost,!1)),{through:this.guide,avoid:this.avoid}=this.colorful&&this.board?j(`pachinko.route`,this.board,()=>({through:[],avoid:[]})):{through:[],avoid:[]},this.target=-1,this.landed=null,this.state=`spinning`,U.play(`whoosh`),this.ball={x:this.dropX,y:Bu,vx:this.colorful?T(-70,70):T(-15,15),vy:90},this.trail=[],P()&&!this.colorful&&(this.target=Tu(this.tier,(this.dropX-12)/Ru-.5),this.land())}firstUpdated(){let e=Math.min(2,devicePixelRatio);this.canvas.width=Fu*e,this.canvas.height=Iu*e,this.canvas.getContext(`2d`).setTransform(e,0,0,e,0,0),this.raf=requestAnimationFrame(this.frame)}connectedCallback(){super.connectedCallback(),addEventListener(`keydown`,this.keydown),this.hasUpdated&&(this.raf=requestAnimationFrame(this.frame))}disconnectedCallback(){super.disconnectedCallback(),cancelAnimationFrame(this.raf),removeEventListener(`keydown`,this.keydown)}render(){let{bonus:e}=this.options,{colorful:t,boost:n,state:r}=this,i=e?this.t(`games.pachinko.bonusRules`,{prize:this.room.name(e.prizeId)}):this.t(t?`pachinko.colorRules`:`games.pachinko.rules`),a=Math.round(Du(n,this.violetHit)*1e3)/10;return Ws(this.room.t,{state:r,rules:i,multiplier:n},h`
|
|
558
|
+
<div class="lk-pachinko ${t?`lk-pachinko--color`:``}">
|
|
559
|
+
${t?h`<div class="lk-peg-score" aria-live="polite">
|
|
560
|
+
<span class="lk-peg-red">${V(Ya)}<b>${this.redHits} / ${8}</b> <small>${this.t(`pachinko.redHits`)}</small></span>
|
|
561
|
+
<span class="lk-peg-power ${this.violetHit?`is-active`:``}">${V(da)}<b>${n}× → ${n*n}×</b><small>${this.t(this.violetHit?`pachinko.powerOn`:`pachinko.powerOff`)}</small></span>
|
|
562
|
+
<span><b>${a}%</b><small>${this.t(`pachinko.chance`)}</small></span>
|
|
563
|
+
</div>`:_}
|
|
564
|
+
<div class="lk-pachinko-cab ${this.fever?`is-fever`:``}">
|
|
565
|
+
${this.fever?h`<div class="lk-peg-fever" aria-live="assertive"><span>${this.t(`pachinko.fever`)}</span><strong>${this.t(`pachinko.feverTitle`)}</strong></div>`:_}
|
|
566
|
+
<canvas width="400" height="620" class=${r===`idle`?`is-aiming`:``} aria-label=${i} @pointermove=${this.aim} @click=${this.drop}></canvas>
|
|
567
|
+
</div>
|
|
568
|
+
<div class="lk-pachinko-controls">
|
|
569
|
+
<fl-chips .chosen=${this.chosen} ?disabled=${r!==`idle`||!!e} @choose=${e=>this.chosen=e.detail}></fl-chips>
|
|
570
|
+
<button class="lk-btn lk-btn--primary lk-btn--lg" ?disabled=${r!==`idle`} @click=${this.drop}>${V(Gi)}${this.t(`pachinko.launch`)}</button>
|
|
571
|
+
</div>
|
|
572
|
+
<div class="lk-hint">${this.t(`pachinko.hint`)}</div>
|
|
573
|
+
</div>
|
|
574
|
+
`)}},L([b({attribute:!1})],Gu.prototype,`options`,void 0),L([x()],Gu.prototype,`state`,void 0),L([x()],Gu.prototype,`chosen`,void 0),L([x()],Gu.prototype,`redHits`,void 0),L([x()],Gu.prototype,`fever`,void 0),L([x()],Gu.prototype,`violetHit`,void 0),L([S(`canvas`)],Gu.prototype,`canvas`,void 0),Gu=L([y(`fl-pachinko`)],Gu)}));function qu(e,t,n=E(t),r=null){let i=e===`none`?null:n,a=D(O(1,50)).map(String),o=D(t.filter(e=>e!==i).flatMap(e=>[e,e])),s=i?3:6,c=o.slice(0,fo(Math.min(1,o.length),Math.min(s-1,o.length))),l=[...c,...a.slice(0,s-c.length)];return{prizeId:n,cells:D(i?[i,i,i,...l]:l),winning:i,award:r}}function Ju(e,t,n,r,i){let a=D(n.flatMap(e=>i&&e===r?[]:[e,e])),o=i?[r,r,r,...a.slice(0,t-3)]:a.slice(0,t),s=D(e.filter(e=>!e.hit));o.forEach((e,t)=>Object.assign(s[t],{value:e,prize:null,hit:i&&e===r}))}function Yu(e,t,n,r){let i=D(t),a=D(n),o=r===`match`?i.find(e=>e.hit):void 0,s=[...e.flatMap((e,t)=>e===o?.value?[`w${t}`]:[]),...i.flatMap((e,t)=>e.hit?[`y${t}`]:[]),...a.flatMap((e,t)=>e.hit?[`s${t}`]:[])];return{winningNumbers:e,yours:i.map(({value:e,prize:t})=>({value:e,prize:t})),second:a.map(({prize:e})=>e),hit:s,how:r}}function Xu(e,t,n,r){let i=D(O(1,50)),a=i.slice(0,5),o=e===`none`?null:e===`jackpot`?`logos`:Math.random()<.5?`match`:`three`,s=o===`match`||o===`three`?ed(e,n,r):null,c=D(Qu(t).filter(e=>!s||$u(e)!==$u(s)).flatMap(e=>[e,e])),l=o===`three`?3:+(o===`match`),u=[...Array(l).fill(s),...O(0,11-l).map(e=>c[e]??null)].map((e,t)=>({value:i[5+t],prize:e,hit:t<l}));return o===`match`&&(u[0].value=E(a)),Ju(u,o===`logos`?3:fo(1,2),t.map(e=>e.id),n,o===`logos`),Yu(a,u,[],o)}function Zu(e,t,n,r){let i=D(O(1,50)),a=i.slice(0,4),o=e===`none`?null:e===`jackpot`?`logos`:Math.random()<.5?`match`:`pair`,s=Qu(t),c=ed(e,n,r),l=O(0,14).map(e=>({value:i[4+e],prize:E(s),hit:!1}));o===`match`&&(l[0]={value:E(a),prize:c,hit:!0}),Ju(l,o===`logos`?4:fo(1,3),t.map(e=>e.id),n,o===`logos`);let u=D(s.filter(e=>o!==`pair`||$u(e)!==$u(c))).map(e=>({prize:e})),d=o===`pair`?[{prize:c,hit:!0},{prize:c,hit:!0},...u.slice(0,3)]:u.slice(0,5);return Yu(a,l,[...d,...O(d.length,4).map(()=>({prize:null}))],o)}var Qu,$u,ed,td=n((()=>{A(),k(),Qu=e=>e.flatMap(e=>[`small`,`big`].flatMap(t=>{let n=[...new Set(yo(e,t).map(bo))];return(n.length?n:[null]).map(n=>({prizeId:e.id,tier:t,award:n}))})),$u=e=>`${e.prizeId} ${So(e.tier,e.award)}`,ed=(e,t,n)=>({prizeId:t,tier:e===`big`?`big`:`small`,award:n})}));function nd(e){return{coin:id(60,60,`
|
|
575
|
+
<defs><radialGradient id="g" cx=".35" cy=".3" r=".85"><stop offset="0" stop-color="#fff7cc"/><stop offset=".45" stop-color="#f4c542"/><stop offset="1" stop-color="#a86e0e"/></radialGradient></defs>
|
|
576
|
+
<circle cx="30" cy="30" r="28.5" fill="url(#g)" stroke="#7a4f08" stroke-width="2"/>
|
|
577
|
+
<circle cx="30" cy="30" r="22" fill="none" stroke="#b07a14" stroke-width="1.4" stroke-dasharray="2.2 2.4"/>
|
|
578
|
+
<text x="30" y="41" text-anchor="middle" font-family="Georgia, serif" font-weight="700" font-size="30" fill="#9a6410" stroke="#fff2b8" stroke-width=".7">₤</text>`),bundle:id(84,72,`
|
|
579
|
+
<rect width="84" height="72" rx="9" fill="#a7e0f6"/>
|
|
580
|
+
<g stroke="#1d5e2b" stroke-width="1">
|
|
581
|
+
<rect x="15" y="7" width="54" height="31" rx="3" fill="#2f8a43" transform="rotate(-9 42 24)"/>
|
|
582
|
+
<rect x="15" y="8" width="54" height="31" rx="3" fill="#3fa356" transform="rotate(6 42 24)"/>
|
|
583
|
+
<rect x="15" y="9" width="54" height="31" rx="3" fill="#5cbd6f"/>
|
|
584
|
+
</g>
|
|
585
|
+
<rect x="19" y="13" width="46" height="23" rx="2" fill="none" stroke="#d3f3d3" stroke-width=".8"/>
|
|
586
|
+
<ellipse cx="29" cy="24.5" rx="6" ry="7" fill="#a5e0ad" stroke="#2f7f3b" stroke-width=".8"/>
|
|
587
|
+
<rect x="44" y="8" width="9" height="33" fill="#f6e8c3" stroke="#b08a3a" stroke-width=".6"/>
|
|
588
|
+
<path d="M6 46h72l-5 9 5 9H6l5-9z" fill="#d7262b" stroke="#8e1414" stroke-width="1"/>
|
|
589
|
+
<text x="42" y="59" text-anchor="middle" font-family="'Arial Black', Arial, sans-serif" font-weight="900" font-size="10.5" letter-spacing=".5" fill="#fff">${ad(e)}</text>`),boat:id(60,56,`
|
|
590
|
+
<rect width="60" height="56" rx="10" fill="#c4ecfc"/>
|
|
591
|
+
<path d="M0 42q7.5-4 15 0t15 0t15 0t15 0v14H0z" fill="#2aa3d6"/>
|
|
592
|
+
<path d="M31 6v32" stroke="#5b4a3a" stroke-width="1.6"/>
|
|
593
|
+
<path d="M30 8v28H12z" fill="#fff" stroke="#9fb7c8" stroke-width=".8"/>
|
|
594
|
+
<path d="M32.5 12v24h13z" fill="#ef4b3c"/>
|
|
595
|
+
<path d="M9 38.5h42l-6 7H15z" fill="#c8321f"/>
|
|
596
|
+
<path d="M2 49q7.5-3 15 0t15 0t15 0t13 0" fill="none" stroke="#fff" stroke-opacity=".7" stroke-width="1.2"/>`),flipflop:id(64,46,`
|
|
597
|
+
<rect width="64" height="46" rx="8" fill="#f3dcab"/>
|
|
598
|
+
${od(21,-12,`#ff7a59`,`#c4502f`,`#2b8fd6`)}
|
|
599
|
+
${od(43,10,`#3cbcae`,`#22857b`,`#ffd23f`)}`),beach:id(370,168,`
|
|
600
|
+
<defs>
|
|
601
|
+
<linearGradient id="sand" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#f7e3b4"/><stop offset="1" stop-color="#e6c180"/></linearGradient>
|
|
602
|
+
<linearGradient id="sea" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#1c8fc4"/><stop offset="1" stop-color="#53c6ea"/></linearGradient>
|
|
603
|
+
</defs>
|
|
604
|
+
<rect width="370" height="168" fill="url(#sand)"/>
|
|
605
|
+
<path d="M0 0h370v38q-23 8-46 0t-46 0t-46 0t-46 0t-46 0t-46 0t-46 0t-48 0z" fill="url(#sea)"/>
|
|
606
|
+
<path d="M0 40q23 8 46 0t46 0t46 0t46 0t46 0t46 0t46 0t48 0" fill="none" stroke="#fff" stroke-width="3" stroke-opacity=".85"/>
|
|
607
|
+
<g opacity=".35" fill="#c99a52"><circle cx="120" cy="70" r="1.4"/><circle cx="175" cy="150" r="1.2"/><circle cx="250" cy="120" r="1.5"/><circle cx="20" cy="140" r="1.2"/><circle cx="340" cy="150" r="1.3"/></g>
|
|
608
|
+
<path d="M298 34l-12 124" stroke="#7a5a3a" stroke-width="3.5" stroke-linecap="round"/>
|
|
609
|
+
<path d="M240 64q58-62 118 0z" fill="#e8322f"/>
|
|
610
|
+
<path d="M262 64q12-36 37-33q-14 6-16 33zM319 64q-2-27-20-33q31-3 41 33z" fill="#fff"/>
|
|
611
|
+
<path d="M240 64q58-62 118 0" fill="none" stroke="#a51e1c" stroke-width="1.5"/>
|
|
612
|
+
<g transform="rotate(-8 175 120)">
|
|
613
|
+
<rect x="128" y="96" width="96" height="46" rx="4" fill="#fff"/>
|
|
614
|
+
<path d="M128 106h96M128 118h96M128 130h96" stroke="#2b8fd6" stroke-width="6"/>
|
|
615
|
+
</g>
|
|
616
|
+
<g>
|
|
617
|
+
<rect x="46" y="44" width="10" height="22" rx="3" fill="none" stroke="#3a3a3a" stroke-width="3.5"/>
|
|
618
|
+
<path d="M40 62h22" stroke="#3a3a3a" stroke-width="3"/>
|
|
619
|
+
<rect x="22" y="62" width="58" height="84" rx="8" fill="#d8262f" stroke="#8e1414" stroke-width="2"/>
|
|
620
|
+
<path d="M36 70v68M51 70v68M66 70v68" stroke="#a51c22" stroke-width="2.5"/>
|
|
621
|
+
<circle cx="31" cy="150" r="5" fill="#2a2a2a"/><circle cx="71" cy="150" r="5" fill="#2a2a2a"/>
|
|
622
|
+
<circle cx="62" cy="86" r="8" fill="#ffd23f" stroke="#c99a18"/><rect x="28" y="106" width="20" height="13" rx="2" fill="#2b8fd6" transform="rotate(-10 38 112)"/>
|
|
623
|
+
</g>
|
|
624
|
+
<path d="M268 112l5 12 13 1-10 8 4 13-12-7-11 7 4-13-10-8 13-1z" fill="#ff8a3d" stroke="#d1601c" stroke-width="1.2" stroke-linejoin="round"/>
|
|
625
|
+
<g transform="translate(110 150) rotate(-15)"><path d="M0 0q8-14 16 0z" fill="#f6c6b4" stroke="#c98a76"/><path d="M8 0v-8M4 0l2-7M12 0l-2-7" stroke="#c98a76" stroke-width=".8"/></g>
|
|
626
|
+
<g transform="translate(318 128)"><circle cx="0" cy="0" r="7" fill="#20303f" stroke="#111"/><circle cx="17" cy="0" r="7" fill="#20303f" stroke="#111"/><path d="M7 -1h3" stroke="#111" stroke-width="2"/></g>`)}}async function rd(e){let t=Object.fromEntries(Object.entries(e).map(([e,t])=>[e,Object.assign(new Image,{src:t})]));return await Promise.all(Object.values(t).map(e=>e.decode())),t}var id,ad,od,sd=n((()=>{id=(e,t,n)=>`data:image/svg+xml,${encodeURIComponent(`<svg xmlns="http://www.w3.org/2000/svg" width="${e}" height="${t}" viewBox="0 0 ${e} ${t}" preserveAspectRatio="none">${n}</svg>`)}`,ad=e=>e.replace(/[&<>"]/g,e=>`&#${e.charCodeAt(0)};`),od=(e,t,n,r,i)=>`
|
|
627
|
+
<g transform="rotate(${t} ${e} 23)">
|
|
628
|
+
<path d="M${e} 4c7 0 9 7 8 15c-1 9-2 16-8 23c-6-7-8-14-8-23c-1-8 1-15 8-15z" fill="${n}" stroke="${r}" stroke-width="1.2"/>
|
|
629
|
+
<path d="M${e-7} 20L${e} 10L${e+7} 20" fill="none" stroke="${i}" stroke-width="2.8" stroke-linecap="round" stroke-linejoin="round"/>
|
|
630
|
+
<circle cx="${e}" cy="10" r="1.8" fill="${i}"/>
|
|
631
|
+
</g>`}));function cd(e,t,n,r){let{t:i}=e,a=e=>n&&t.hit.includes(e)?`is-match`:``;return h`
|
|
632
|
+
<div class="lk-td-head">
|
|
633
|
+
<h3 aria-label=${`${i(`scratch.double.first`)} ${i(`scratch.double.second`)}`}>
|
|
634
|
+
<span>${i(`scratch.double.first`)}</span>
|
|
635
|
+
<svg viewBox="0 0 60 72" aria-hidden="true">
|
|
636
|
+
<g fill="#f6c9a2" stroke="#9c6640" stroke-width="1.6">
|
|
637
|
+
<rect x="14" y="4" width="12" height="40" rx="6" transform="rotate(-16 20 42)" />
|
|
638
|
+
<rect x="30" y="2" width="12" height="42" rx="6" transform="rotate(13 36 42)" />
|
|
639
|
+
<rect x="12" y="34" width="36" height="32" rx="12" />
|
|
640
|
+
<path d="M41 36c5 0 7 3 7 7M43 46c4 0 5 3 5 6" fill="none" />
|
|
641
|
+
<path d="M10 46c4-6 14-6 20 0c-4 5-14 6-20 0z" />
|
|
642
|
+
</g>
|
|
643
|
+
<path d="M14 66h32v6H14z" fill="#2b5bb8" />
|
|
644
|
+
</svg>
|
|
645
|
+
<span>${i(`scratch.double.second`)}</span>
|
|
646
|
+
</h3>
|
|
647
|
+
<p>${i(`scratch.double.tagline`)}</p>
|
|
648
|
+
</div>
|
|
649
|
+
<section class="lk-td-band">
|
|
650
|
+
<h4>${i(`scratch.winningNumbers`)}</h4>
|
|
651
|
+
<div class="lk-td-coins">
|
|
652
|
+
${t.winningNumbers.map((e,t)=>h`
|
|
653
|
+
<div class="lk-td-coin ${a(`w${t}`)}">
|
|
654
|
+
<b>${e}</b>
|
|
655
|
+
<canvas class="lk-foil" data-spot=${`w${t}`} data-cover="coin"></canvas>
|
|
656
|
+
</div>
|
|
657
|
+
`)}
|
|
658
|
+
</div>
|
|
659
|
+
</section>
|
|
660
|
+
<section class="lk-td-yours">
|
|
661
|
+
<h4>${i(`scratch.yourNumbers`)}</h4>
|
|
662
|
+
<div class="lk-td-grid">
|
|
663
|
+
${t.yours.map((t,n)=>h`
|
|
664
|
+
<div class="lk-td-cell ${a(`y${n}`)}">
|
|
665
|
+
${typeof t.value==`string`?h`<img class="lk-tk-logo" src=${e.icon(t.value)} alt=${e.name(t.value)} />`:h`
|
|
666
|
+
<b>${t.value}</b>
|
|
667
|
+
${t.prize?h`<small>
|
|
668
|
+
${i(`scratch.prize`)}
|
|
669
|
+
<strong><img src=${e.icon(t.prize.prizeId)} alt=${e.name(t.prize.prizeId)} />${e.award(t.prize.tier,t.prize.award)}</strong>
|
|
670
|
+
</small>`:_}
|
|
671
|
+
`}
|
|
672
|
+
<canvas class="lk-foil" data-spot=${`y${n}`} data-cover="bundle"></canvas>
|
|
673
|
+
</div>
|
|
674
|
+
`)}
|
|
675
|
+
</div>
|
|
676
|
+
</section>
|
|
677
|
+
<div class="lk-td-foot">
|
|
678
|
+
<strong>${i(`scratch.topPrize`)}</strong>
|
|
679
|
+
<span>N. ${r}</span>
|
|
680
|
+
</div>
|
|
681
|
+
`}var ld=n((()=>{v()}));function ud(e,t,n,r){let{t:i}=e,a=e=>n&&t.hit.includes(e)?`is-match`:``,o=t=>h`<img src=${e.icon(t.prizeId)} alt=${e.name(t.prizeId)} />${e.award(t.tier,t.award)}`;return h`
|
|
682
|
+
<div class="lk-tf-head">
|
|
683
|
+
<h3><span>${i(`scratch.forever.first`)}</span><i>${i(`scratch.forever.middle`)}</i><span>${i(`scratch.forever.second`)}</span></h3>
|
|
684
|
+
</div>
|
|
685
|
+
<section class="lk-tf-game">
|
|
686
|
+
<em class="lk-tf-tag">${i(`scratch.game`,{n:1})}</em>
|
|
687
|
+
<div class="lk-tf-sea">
|
|
688
|
+
<div>
|
|
689
|
+
<h4>${i(`scratch.winningNumbers`)}</h4>
|
|
690
|
+
<div class="lk-tf-boats">
|
|
691
|
+
${t.winningNumbers.map((e,t)=>h`
|
|
692
|
+
<div class="lk-tf-boat ${a(`w${t}`)}">
|
|
693
|
+
<b>${e}</b>
|
|
694
|
+
<canvas class="lk-foil" data-spot=${`w${t}`} data-cover="boat"></canvas>
|
|
695
|
+
</div>
|
|
696
|
+
`)}
|
|
697
|
+
</div>
|
|
698
|
+
</div>
|
|
699
|
+
<p class="lk-tf-jackpot"><b>∞</b>${i(`scratch.forever.jackpot`)}</p>
|
|
700
|
+
</div>
|
|
701
|
+
<h4>${i(`scratch.yourNumbers`)}</h4>
|
|
702
|
+
<div class="lk-tf-beach">
|
|
703
|
+
${t.yours.map((t,n)=>h`
|
|
704
|
+
<div class="lk-tf-cell ${a(`y${n}`)}">
|
|
705
|
+
${typeof t.value==`string`?h`<img class="lk-tk-logo" src=${e.icon(t.value)} alt=${e.name(t.value)} />`:h`<b>${t.value}</b>${t.prize?h`<small>${o(t.prize)}</small>`:``}`}
|
|
706
|
+
<canvas class="lk-foil" data-spot=${`y${n}`} data-cover="beach"></canvas>
|
|
707
|
+
</div>
|
|
708
|
+
`)}
|
|
709
|
+
</div>
|
|
710
|
+
</section>
|
|
711
|
+
<section class="lk-tf-game lk-tf-game--two">
|
|
712
|
+
<em class="lk-tf-tag">${i(`scratch.game`,{n:2})}</em>
|
|
713
|
+
<span>${i(`scratch.forever.pairRule`)}</span>
|
|
714
|
+
<div class="lk-tf-flops">
|
|
715
|
+
${t.second.map((e,t)=>h`
|
|
716
|
+
<div class="lk-tf-flop ${a(`s${t}`)}">
|
|
717
|
+
<b>${e?o(e):`—`}</b>
|
|
718
|
+
<canvas class="lk-foil" data-spot=${`s${t}`} data-cover="flipflop"></canvas>
|
|
719
|
+
</div>
|
|
720
|
+
`)}
|
|
721
|
+
</div>
|
|
722
|
+
</section>
|
|
723
|
+
<div class="lk-tf-foot"><span>N. ${r}</span></div>
|
|
724
|
+
`}var dd=n((()=>{v()})),fd,pd,md,hd=n((()=>{v(),C(),Ei(),w(),A(),k(),ko(),td(),N(),B(),xs(),H(),F(),ks(),qs(),sd(),ld(),dd(),R(),fd=vs(210,300,.85),pd=()=>Math.random().toString(16).slice(2,11).toUpperCase(),md=class extends z{constructor(...e){super(...e),this.options={},this.boost=M(`scratch`),this.kind=this.boost>1?ds():`classic`,this.tier=cs(`scratch`,this.boost),this.serial=pd(),this.revealed=new Set,this.state=`idle`,this.last=null,this.strokes=0}print(e){let{prizeIds:t}=this.room,n=ls(`scratch`,t),r=j(`scratch.award`,{tier:e,prizeId:n},()=>ho(this.room.prize(n),e));return this.kind===`classic`?{kind:`classic`,...qu(e,t,n,r)}:{kind:this.kind,prizeId:n,award:r,...(this.kind===`double`?Xu:Zu)(e,this.room.prizes,n,r)}}willUpdate(){this.card??=this.print(this.tier)}get spots(){let e=this.card;return e.kind===`classic`?[...e.cells.map((e,t)=>String(t)),...e.winning?[`award`]:[]]:[...e.winningNumbers.map((e,t)=>`w${t}`),...e.yours.map((e,t)=>`y${t}`),...e.second.map((e,t)=>`s${t}`)]}get done(){return this.revealed.size===this.spots.length}inLine(e){return this.card.kind===`classic`&&e===this.card.winning}get hit(){let e=this.card;return e.kind===`classic`?e.winning?e.cells.flatMap((e,t)=>this.inLine(e)?[String(t)]:[]):[]:e.hit}get matched(){let{hit:e}=this;return e.length>0&&e.every(e=>this.revealed.has(e))}paint(e){let t=e.parentElement.offsetWidth,n=e.parentElement.offsetHeight,r=Math.min(2,devicePixelRatio);e.width=t*r,e.height=n*r;let i=e.getContext(`2d`);i.globalCompositeOperation=`source-over`,i.setTransform(r,0,0,r,0,0);let a=e.dataset.cover;if(a&&this.covers){let r=e.parentElement,o=r.offsetParent;return a===`beach`?i.drawImage(this.covers.beach,-r.offsetLeft,-r.offsetTop,o.clientWidth,o.clientHeight):i.drawImage(this.covers[a],0,0,t,n),this.ready(e)}let o=i.createLinearGradient(0,0,t,n),s=[`#e9edf1`,`#a8b0bb`,`#f4f6f9`,`#8d96a3`,`#d7dce3`];[0,.35,.5,.7,1].forEach((e,t)=>o.addColorStop(e,s[t])),i.fillStyle=o,i.beginPath(),i.roundRect(0,0,t,n,14),i.fill();for(let e=0;e<t*n*.08;e++)i.fillStyle=`rgba(${Math.random()<.5?`255,255,255`:`40,46,56`},${T(.04,.12)})`,i.fillRect(T(0,t),T(0,n),1,1);i.save(),i.globalAlpha=.14,i.fillStyle=`#2b323c`,i.font=`800 10px ui-monospace, Menlo, monospace`,i.rotate(-.35);let c=this.t(`scratch.watermark`);for(let e=-20;e<n+60;e+=16)for(let n=-60;n<t+40;n+=76)i.fillText(c,n+(e%32?38:0),e);i.restore(),this.ready(e)}ready(e){e.style.opacity=`1`,e.style.pointerEvents=``,e.dataset.clear=String(this.cleared(e)),e.getContext(`2d`).globalCompositeOperation=`destination-out`}cleared(e){let{data:t}=e.getContext(`2d`).getImageData(0,0,e.width,e.height),n=0,r=0;for(let e=3;e<t.length;e+=96)r++,t[e]<40&&n++;return n/r}scratched(e){let t=Number(e.dataset.clear??0);return(this.cleared(e)-t)/(1-t)}reveal(e){let t=e.dataset.spot;this.revealed.has(t)||t===`award`&&!this.matched||(this.revealed=new Set([...this.revealed,t]),e.animate([{opacity:1},{opacity:0}],{duration:P()?1:380,fill:`forwards`}),e.style.pointerEvents=`none`,U.play(`tick`,1.4),this.matched&&t!==`award`&&U.play(`chime`),this.done&&this.finish())}finish(){if(!this.hit.length){this.state=`idle`;return}this.state=`won`;let e=this.ticket.getBoundingClientRect();I.burst(e.left+e.width/2,e.top+e.height/2,{count:50,speed:600});let t=this.card,n=t.kind===`classic`?this.tier:t.how,r={game:`scratch`,tier:this.tier,prizeId:t.prizeId,award:t.award,detail:{key:`detail.scratch.${n}`}};this.later(()=>this.room.finish(r),P()?200:1400)}foilOf(e){let t=e.target;return t.classList.contains(`lk-foil`)?t:null}scratch(e){let t=this.foilOf(e);if(!t||e.type===`pointermove`&&!e.buttons||t.dataset.spot===`award`&&!this.matched)return;let n=t.getContext(`2d`),r=t.getBoundingClientRect(),i={x:e.clientX-r.left,y:e.clientY-r.top},a=this.last??i,o=Math.hypot(i.x-a.x,i.y-a.y),s=Math.max(1,Math.ceil(o/4));for(let e=0;e<=s;e++){let t=a.x+(i.x-a.x)*e/s,r=a.y+(i.y-a.y)*e/s;for(let e=0;e<4;e++)n.beginPath(),n.arc(t+T(-5,5),r+T(-5,5),T(5,10),0,Math.PI*2),n.fill()}o>2&&(I.burst(e.clientX,e.clientY,{count:3,type:`flake`,speed:160,angle:Math.PI/2,spread:2.4,gravity:700,life:.9,colors:[`#c9cfd8`,`#8b94a1`,`#eef1f4`]}),U.play(`scratch`,T(.9,1.2),.8)),this.last=i,++this.strokes%6==0&&this.scratched(t)>.52&&this.reveal(t)}start(e){let t=this.foilOf(e);t&&(t.setPointerCapture(e.pointerId),this.last=null,this.scratch(e))}stop(e){this.last=null;let t=this.foilOf(e);t&&this.scratched(t)>.52&&this.reveal(t)}foils(){return[...this.ticket?.querySelectorAll(`.lk-foil`)??[]]}revealAll(){let e=this.foils().filter(e=>this.spots.includes(e.dataset.spot));e.forEach((t,n)=>this.later(()=>this.reveal(t),P()?0:n*Math.min(180,2400/e.length)))}async newTicket(){this.tier=cs(`scratch`,this.boost),this.card=this.print(this.tier),this.serial=pd(),this.revealed=new Set,await this.updateComplete,this.foils().forEach(e=>{e.getAnimations().forEach(e=>e.cancel()),this.paint(e)})}async firstUpdated(){this.foils().forEach(e=>this.paint(e)),this.covers=await rd(nd(this.t(`scratch.prize`))).catch(()=>void 0),this.foils().forEach(e=>this.paint(e))}classic(e){let{room:t,matched:n}=this,r=new Date().toLocaleDateString(t.locale,{day:`2-digit`,month:`short`,year:`numeric`});return h`
|
|
725
|
+
<svg viewBox="0 0 420 560" preserveAspectRatio="xMidYMid slice" aria-hidden="true">
|
|
726
|
+
${fd.map(e=>g`<polyline points=${e} fill="none" stroke="#b08a3a" stroke-opacity="0.28" stroke-width="0.5" />`)}
|
|
727
|
+
</svg>
|
|
728
|
+
<header>${t.logo()}<b>${this.t(`scratch.title`)}</b><span>N. ${this.serial}</span></header>
|
|
729
|
+
<p class="lk-rule">${this.t(`scratch.rule`)}</p>
|
|
730
|
+
<div class="lk-spots">
|
|
731
|
+
${e.cells.map((e,r)=>h`
|
|
732
|
+
<div class="lk-spot ${n&&this.inLine(e)?`is-match`:``}">
|
|
733
|
+
${t.prizeIds.includes(e)?h`<img src=${t.icon(e)} alt=${t.name(e)} />`:h`<b class="lk-spot-number">${e}</b>`}
|
|
734
|
+
<canvas class="lk-foil" data-spot=${r}></canvas>
|
|
735
|
+
</div>
|
|
736
|
+
`)}
|
|
737
|
+
<div class="lk-spot lk-spot--wide ${n?``:`is-locked`}">
|
|
738
|
+
<span>${e.winning?t.award(this.tier,e.award):`—`}<small>${this.t(`scratch.award`)}</small></span>
|
|
739
|
+
<canvas class="lk-foil" data-spot="award"></canvas>
|
|
740
|
+
${this.revealed.has(`award`)?_:h`<em class="lk-lock">${V(ja)}${this.t(`scratch.locked`)}</em>`}
|
|
741
|
+
</div>
|
|
742
|
+
</div>
|
|
743
|
+
<footer><span>${this.t(`scratch.series`)}</span><span>${r}</span></footer>
|
|
744
|
+
`}render(){let e=this.card,{matched:t,done:n}=this,r=this.kind===`classic`?this.t(`games.scratch.rules`):`${this.t(`scratch.dayRules`,{n:this.boost})} ${this.t(`scratch.${this.kind}.rules`)}`,i=e.kind===`classic`?this.classic(e):e.kind===`double`?cd(this.room,e,t,this.serial):ud(this.room,e,t,this.serial);return Ws(this.room.t,{state:this.state,rules:r,multiplier:this.boost},h`
|
|
745
|
+
<div class="lk-scratch">
|
|
746
|
+
<div class="lk-ticket lk-ticket--${e.kind}" @pointerdown=${this.start} @pointermove=${this.scratch} @pointerup=${this.stop}>${wi(this.serial,i)}</div>
|
|
747
|
+
<div class="lk-controls">
|
|
748
|
+
${n&&this.state===`idle`?h`<button class="lk-btn lk-btn--primary lk-btn--lg" @click=${this.newTicket}>${V(Za)}${this.t(`scratch.newTicket`)}</button>`:h`<button class="lk-btn lk-btn--primary lk-btn--lg" ?disabled=${n} @click=${this.revealAll}>${V(sa)}${this.t(`scratch.revealAll`)}</button>`}
|
|
749
|
+
<div class="lk-hint">${this.t(`scratch.hint`)}</div>
|
|
750
|
+
</div>
|
|
751
|
+
</div>
|
|
752
|
+
`)}},L([b({attribute:!1})],md.prototype,`options`,void 0),L([x()],md.prototype,`tier`,void 0),L([x()],md.prototype,`card`,void 0),L([x()],md.prototype,`serial`,void 0),L([x()],md.prototype,`revealed`,void 0),L([x()],md.prototype,`state`,void 0),L([S(`.lk-ticket`)],md.prototype,`ticket`,void 0),md=L([y(`fl-scratch`)],md)}));function gd(e){let t=e.reduce((e,t)=>e+jd(t),0),n=e.filter(({rank:e})=>e===14).length;for(;t>21&&n;)t-=10,n--;return{total:t,soft:n>0}}function _d(e){let t=fo(12,16),n=fo(Math.max(2,t-10),Math.min(10,t-2)),r=[Ad(n),Ad(t-n)];if(e===`jackpot`)return{player:D([Dd(14,`spades`),Dd(11,`spades`)]),dealer:r};let i;do i=e===`big`?D([Dd(14),Dd(E(kd))]):[Dd(fo(2,14)),Dd(fo(2,14))];while(e===`big`?Pd(i):Md(i));return{player:i,dealer:r}}function vd(e,t){return E(Td.filter(n=>{let{total:r}=gd([...t,n]);return e===`none`?r!==21:r<=21}))}function yd(e,t,n){if(n===null)return[];let{total:r}=gd(t);return e===`none`?[Ad(fo(Math.max(17,n+1),21)-r)]:n>=18&&Math.random()<.5?[Ad(fo(17,n-1)-r)]:[Ad(fo(22-r,10))]}function bd(e){let t=new Map;e.forEach(({rank:e})=>t.set(e,(t.get(e)??0)+1));let n=[...t].sort((e,t)=>t[1]-e[1]||t[0]-e[0]),r=n.map(([e])=>e),i=n.map(([,e])=>e).join(``),a=e.every(({suit:t})=>t===e[0].suit),o=n.length===5?r[0]-r[4]===4?r[0]:r.join()===`14,5,4,3,2`?5:0:0;return{category:o&&a?o===14?9:8:i===`41`?7:i===`32`?6:a?5:o?4:i===`311`?3:i===`221`?2:+(i===`2111`),ranks:o?[o]:r,cards:e}}function xd(e){let t=null;for(let n=0;n<e.length;n++)for(let r=n+1;r<e.length;r++){let i=bd(e.filter((e,t)=>t!==n&&t!==r));(!t||Id(i,t)>0)&&(t=i)}return t??bd(e)}function Sd(e){if(e===`jackpot`){let e=E(wd),t=D(O(10,14).map(t=>Dd(t,e))),n=D(Td.filter(e=>!t.some(t=>Od(t,e))));return{player:t.slice(0,2),dealer:n.slice(2,4),board:D([...t.slice(2),...n.slice(0,2)])}}for(;;){let t=D(Td),n={player:t.slice(0,2),dealer:t.slice(2,4),board:t.slice(4,9)},r=Id(xd([...n.player,...n.board]),xd([...n.dealer,...n.board]))<0;if(e===`none`?r:Ld(xd([...n.player,...n.board]),xd([...n.dealer,...n.board]))===e)return n}}function Cd(e){return[4,5,8,9].includes(e.category)?e.cards:e.category===0?e.cards.filter(({rank:t})=>t===e.ranks[0]).slice(0,1):e.cards.filter(({rank:t})=>e.cards.filter(e=>e.rank===t).length>1)}var wd,Td,Ed,Dd,Od,kd,Ad,jd,Md,Nd,Pd,Fd,Id,Ld,Rd,zd,Bd,Vd=n((()=>{k(),wd=[`spades`,`hearts`,`diamonds`,`clubs`],Td=wd.flatMap(e=>O(2,14).map(t=>({rank:t,suit:e}))),Ed=e=>({11:`J`,12:`Q`,13:`K`,14:`A`})[e]??String(e),Dd=(e,t=E(wd))=>({rank:e,suit:t}),Od=(e,t)=>e.rank===t.rank&&e.suit===t.suit,kd=[10,11,12,13],Ad=e=>Dd(e===1||e===11?14:e===10?E(kd):e),jd=e=>e.rank===14?11:Math.min(10,e.rank),Md=e=>e.length===2&&gd(e).total===21,Nd=e=>e.length===2&&jd(e[0])===jd(e[1]),Pd=e=>e.every(({suit:e})=>e===`spades`)&&e.some(({rank:e})=>e===14)&&e.some(({rank:e})=>e===11),Fd=[`highCard`,`pair`,`twoPair`,`trips`,`straight`,`flush`,`fullHouse`,`quads`,`straightFlush`,`royalFlush`],Id=(e,t)=>e.category-t.category||(e.ranks.map((e,n)=>e-t.ranks[n]).find(Boolean)??0),Ld=(e,t)=>Id(e,t)<=0?`none`:e.category===9?`jackpot`:e.category>=4?`big`:`small`,Rd=(e,t,n)=>{let r=xd([...e,...n]),i=xd([...t,...n]);return{mine:r,theirs:i,tier:Ld(r,i),lost:Id(r,i)<0}},zd={spades:`M10 1C7 5 2 8.5 2 12.5C2 15 4 16.5 6 16.5C7.4 16.5 8.5 15.9 9.1 15.1L8 19H12L10.9 15.1C11.5 15.9 12.6 16.5 14 16.5C16 16.5 18 15 18 12.5C18 8.5 13 5 10 1Z`,hearts:`M10 18C6 15 1.5 11.5 1.5 6.5C1.5 3.8 3.6 2 6 2C7.8 2 9.2 3 10 4.4C10.8 3 12.2 2 14 2C16.4 2 18.5 3.8 18.5 6.5C18.5 11.5 14 15 10 18Z`,diamonds:`M10 1L17 10L10 19L3 10Z`,clubs:`M10 1.5a4 4 0 1 1 0 8a4 4 0 1 1 0-8ZM5.5 7.8a4 4 0 1 1 0 8a4 4 0 1 1 0-8ZM14.5 7.8a4 4 0 1 1 0 8a4 4 0 1 1 0-8ZM9 11.5h2l1.3 7.5h-4.6Z`},Bd=e=>e.suit===`hearts`||e.suit===`diamonds`})),Hd,Ud=n((()=>{v(),C(),B(),R(),Hd=class extends z{constructor(...e){super(...e),this.chosen=``,this.disabled=!1,this.locked=null,this.edges={left:!1,right:!1},this.measure=()=>{let e=this.strip;if(!e)return;let t={left:e.scrollLeft>1,right:e.scrollLeft+e.clientWidth<e.scrollWidth-1};(t.left!==this.edges.left||t.right!==this.edges.right)&&(this.edges=t)},this.wheel=e=>{let t=this.strip;!t||t.scrollWidth<=t.clientWidth||Math.abs(e.deltaX)>Math.abs(e.deltaY)||(e.preventDefault(),e.stopPropagation(),t.scrollLeft+=e.deltaY)}}willUpdate(e){e.has(`locked`)&&this.locked&&this.locked!==this.chosen&&this.choose(this.locked)}updated(e){e.has(`chosen`)&&this.reveal(),this.measure()}reveal(){let e=this.strip,t=e?.querySelector(`.lk-chip.is-chosen`);if(!e||!t)return;let n=t.offsetLeft-e.offsetLeft;(n<e.scrollLeft||n+t.offsetWidth>e.scrollLeft+e.clientWidth)&&e.scrollTo({left:n-(e.clientWidth-t.offsetWidth)/2,behavior:`smooth`})}choose(e){this.dispatchEvent(new CustomEvent(`choose`,{detail:e}))}message(){if(!this.count)return``;let e=this.count.max-this.count.used;return e===this.count.max?this.t(`chipCount.hint`,{n:e}):this.t(e===0?`chipCount.none`:e===1?`chipCount.leftOne`:`chipCount.left`,{n:e})}render(){let{room:e,count:t}=this;return h`
|
|
753
|
+
<div class="lk-chips-rack">
|
|
754
|
+
<div class="lk-chips" role="radiogroup" aria-label=${this.t(`chips`)}>
|
|
755
|
+
<div
|
|
756
|
+
class="lk-chips-strip ${this.edges.left?`has-left`:``} ${this.edges.right?`has-right`:``}"
|
|
757
|
+
@scroll=${this.measure}
|
|
758
|
+
@wheel=${this.wheel}
|
|
759
|
+
>
|
|
760
|
+
${e.prizeIds.map(t=>h`
|
|
761
|
+
<button
|
|
762
|
+
class="lk-chip ${this.chosen===t?`is-chosen`:``}"
|
|
763
|
+
role="radio"
|
|
764
|
+
aria-checked=${this.chosen===t}
|
|
765
|
+
?disabled=${this.disabled||!!this.locked&&t!==this.locked}
|
|
766
|
+
style="--lk-chip: ${e.color(t)}"
|
|
767
|
+
aria-label=${e.name(t)}
|
|
768
|
+
title=${e.name(t)}
|
|
769
|
+
@click=${()=>this.choose(t)}
|
|
770
|
+
>
|
|
771
|
+
<img src=${e.icon(t)} alt="" />
|
|
772
|
+
</button>
|
|
773
|
+
`)}
|
|
774
|
+
</div>
|
|
775
|
+
<span>${this.chosen?e.name(this.chosen):``}</span>
|
|
776
|
+
</div>
|
|
777
|
+
${t?h`<div class="lk-chip-count">
|
|
778
|
+
<span class="lk-rl-pips" aria-hidden="true">${Array.from({length:t.max},(e,n)=>h`<i class=${n<t.used?`is-used`:``}></i>`)}</span>
|
|
779
|
+
${this.message()}
|
|
780
|
+
</div>`:_}
|
|
781
|
+
</div>
|
|
782
|
+
`}},L([b()],Hd.prototype,`chosen`,void 0),L([b({type:Boolean})],Hd.prototype,`disabled`,void 0),L([b()],Hd.prototype,`locked`,void 0),L([b({attribute:!1})],Hd.prototype,`count`,void 0),L([x()],Hd.prototype,`edges`,void 0),L([S(`.lk-chips-strip`)],Hd.prototype,`strip`,void 0),Hd=L([y(`fl-chips`)],Hd)}));function Wd(e,{hidden:t=!1,lit:n=!1}={}){let r=t=>h`<span class="lk-card-corner ${t?`is-turned`:``}"><b>${Ed(e.rank)}</b><svg viewBox="0 0 20 20"><path d=${zd[e.suit]} /></svg></span>`;return h`
|
|
783
|
+
<div class="lk-card ${t?`is-hidden`:``} ${Bd(e)?`is-red`:``} ${n?`is-lit`:``}">
|
|
784
|
+
<div class="lk-card-turn">
|
|
785
|
+
<div class="lk-card-face">
|
|
786
|
+
${r(!1)}
|
|
787
|
+
<svg class="lk-card-pip" viewBox="0 0 20 20"><path d=${zd[e.suit]} /></svg>
|
|
788
|
+
${r(!0)}
|
|
789
|
+
</div>
|
|
790
|
+
<div class="lk-card-back"></div>
|
|
791
|
+
</div>
|
|
792
|
+
</div>
|
|
793
|
+
`}var Gd=n((()=>{v(),Vd()})),Kd,qd,Jd=n((()=>{v(),C(),B(),ks(),R(),Kd=`polygon(0 70%, 30% 80%, 36% 84%, 64% 84%, 70% 80%, 100% 70%, 100% 100%, 0 100%)`,qd=class extends z{constructor(...e){super(...e),this.dealer=null,this.dealing=!1,this.last=null}updated(e){e.has(`dealer`)&&this.dealer!==null&&e.get(`dealer`)==null&&U.play(`dealer`)}render(){this.dealer!==null&&(this.last=this.dealer);let e=this.last===null?void 0:this.room.dealers[this.last];if(!e)return _;let t=`lk-dealer-photo ${this.dealer===null?``:`is-shown`} ${this.dealing?`is-dealing`:``}`;return h`
|
|
794
|
+
<img class=${t} src=${e.image} alt=${e.name??this.t(`cards.dealer`)} />
|
|
795
|
+
<img class="${t} is-hands" style="clip-path: ${e.hands??Kd}" src=${e.image} alt="" aria-hidden="true" />
|
|
796
|
+
`}},L([b({attribute:!1})],qd.prototype,`dealer`,void 0),L([b({type:Boolean})],qd.prototype,`dealing`,void 0),qd=L([y(`fl-dealer`)],qd)}));function Yd(e,t,{dealer:n,centre:r,bet:i,player:a},{on:o,dealing:s}){let{t:c}=e,l=e.player;return h`
|
|
797
|
+
<div class="lk-ctable ${o!==null&&e.dealers[o]?`has-dealer`:``}">
|
|
798
|
+
<div class="lk-dealer"><fl-dealer .dealer=${o} ?dealing=${s}></fl-dealer></div>
|
|
799
|
+
<div class="lk-ctable-felt">
|
|
800
|
+
<i class="lk-ctable-rail" aria-hidden="true"></i>
|
|
801
|
+
<i class="lk-ctable-cloth" aria-hidden="true"></i>
|
|
802
|
+
<i class="lk-ctable-notch" aria-hidden="true"></i>
|
|
803
|
+
<svg class="lk-ctable-print" viewBox="0 0 900 500" aria-hidden="true">
|
|
804
|
+
<path id="lk-ctable-arc" d="M150 170Q450 330 750 170" fill="none" />
|
|
805
|
+
<text><textPath href="#lk-ctable-arc" startOffset="50%" text-anchor="middle">${t}</textPath></text>
|
|
806
|
+
</svg>
|
|
807
|
+
<i class="lk-ctable-shoe" aria-hidden="true"><b></b><b></b><b></b></i>
|
|
808
|
+
<div class="lk-ctable-dealer">${n}</div>
|
|
809
|
+
<div class="lk-ctable-centre">${r}</div>
|
|
810
|
+
<div class="lk-seat is-mine" style=${Xd}>
|
|
811
|
+
${l?.avatar?h`<img src=${l.avatar} alt="" />`:Zd}
|
|
812
|
+
<b>${l?.name||c(`cards.you`)}</b>
|
|
813
|
+
</div>
|
|
814
|
+
${i?h`<div class="lk-ctable-bet">${i}</div>`:_}
|
|
815
|
+
<div class="lk-ctable-player">${a}</div>
|
|
816
|
+
</div>
|
|
817
|
+
</div>
|
|
818
|
+
`}var Xd,Zd,Qd=n((()=>{v(),Jd(),Xd=`left: 50%; top: 100%`,Zd=h`<svg class="lk-seat-avatar" viewBox="0 0 40 40" aria-hidden="true"><circle cx="20" cy="15" r="7" /><path d="M5 40c0-8.5 6.5-14 15-14s15 5.5 15 14Z" /></svg>`})),$d,ef,tf,nf,rf=n((()=>{v(),C(),w(),A(),Vd(),Ro(),N(),Ud(),qs(),B(),xs(),H(),F(),ks(),Gd(),Qd(),R(),$d=5,ef=[`win`,`dealerBust`,`natural`,`spades`],tf=e=>gd(e).total,nf=class extends z{constructor(){super(),this.options={},this.phase=`ready`,this.hands=[],this.active=0,this.dealer=[],this.holeShown=!1,this.clearing=!1,this.result=null,this.chosen=``,this.chips=[],this.history=[],this.lastBet=null,this.boost=M(`blackjack`),this.prizeId=null,this.tier=`none`,this.pace=P()?0:480,this.watch(Lo)}willUpdate(){this.room.prizeIds.includes(this.chosen)||(this.chosen=this.room.prizeIds[0]),this.phase===`ready`&&(this.boost=M(`blackjack`))}get betting(){return this.phase===`ready`}get left(){return $d-this.chips.length}get won(){return!!this.result&&ef.includes(this.result)}get hand(){return this.hands[this.active]}get theirs(){return tf(this.holeShown?this.dealer:this.dealer.slice(0,1))}get canDouble(){return this.phase===`player`&&this.hand?.cards.length===2}get canSplitHand(){return this.phase===`player`&&this.hands.length===1&&Nd(this.hand.cards)}beats(e){return tf(e)<=21&&(this.theirs>21||this.theirs<tf(e))}wait(e){return new Promise(t=>this.later(t,e))}bet(){this.betting&&this.left&&(this.history=[...this.history,[...this.chips]],this.chips=[...this.chips,this.chosen],U.play(`tick`,1.4))}undo(){let e=this.history.at(-1);e&&(this.history=this.history.slice(0,-1),this.chips=e)}rebet(){this.lastBet&&!this.chips.length&&(this.history=[...this.history,[]],this.chips=[...this.lastBet])}clearChips(){this.history=[...this.history,[...this.chips]],this.chips=[]}give(e,t){e.push(t),this.requestUpdate(),U.play(`tick`,1.25)}async deal(){if(this.phase!==`ready`||!this.chips.length)return;let e=this.tier=cs(`blackjack`,this.boost);this.prizeId=ls(`blackjack`,[this.chips[0]]),this.lastBet=[...this.chips],this.history=[];let t=_d(e);this.hands=[{cards:[],stacks:1,done:!1}],this.active=0,this.dealer=[],this.holeShown=!1,this.result=null,this.phase=`dealing`,U.play(`whoosh`,.6);let n=this.hands[0].cards;for(let[e,r]of[[n,t.player[0]],[this.dealer,t.dealer[0]],[n,t.player[1]],[this.dealer,t.dealer[1]]])await this.wait(this.pace),this.give(e,r);if(await this.wait(this.pace),Md(n))return this.settle(e===`jackpot`?`spades`:`natural`);this.phase=`player`}hit(){this.phase===`player`&&(this.give(this.hand.cards,vd(this.tier,this.hand.cards)),tf(this.hand.cards)>=21&&this.next())}double(){this.canDouble&&(this.hand.stacks++,this.give(this.hand.cards,vd(this.tier,this.hand.cards)),this.next())}async split(){if(!this.canSplitHand)return;let[e,t]=this.hand.cards;this.phase=`dealing`,this.hands=[{cards:[e],stacks:1,done:!1},{cards:[t],stacks:1,done:!1}];let n=e.rank===14;for(let e of this.hands)await this.wait(this.pace),this.give(e.cards,vd(this.tier,e.cards)),e.done=n||tf(e.cards)===21;if(this.hands.every(({done:e})=>e))return this.dealerTurn();this.phase=`player`,this.hands[0].done&&(this.active=1)}stand(){this.phase===`player`&&this.next()}next(){this.hand.done=!0;let e=this.hands.findIndex(({done:e})=>!e);e===-1?this.dealerTurn():this.active=e}async dealerTurn(){this.phase=`dealer`;let e=this.hands.map(({cards:e})=>tf(e)).filter(e=>e<=21);if(!e.length)return this.settle(`bust`);await this.wait(this.pace/2),this.holeShown=!0,U.play(`tick`,1);for(let t of yd(this.tier,this.dealer,Math.max(...e)))await this.wait(this.pace*1.4),this.give(this.dealer,t);await this.wait(this.pace),this.settle(this.hands.some(({cards:e})=>this.beats(e))?this.theirs>21?`dealerBust`:`win`:`lose`)}collect(){this.clearing=!0,U.play(`whoosh`,.4),this.later(()=>{this.hands=[],this.dealer=[],this.chips=[],this.holeShown=!1,this.result=null,this.clearing=!1,this.phase=`ready`},P()?0:650)}settle(e){if(this.holeShown=!0,this.result=e,this.phase=`done`,!this.won){U.play(`stop`,.7),this.later(()=>this.collect(),P()?600:2600);return}let{tier:t}=this,n=this.prizeId;U.play(t===`jackpot`?`jackpot`:`win`);let r=this.table?.getBoundingClientRect();r&&!P()&&I.burst(r.left+r.width/2,r.top+r.height*.6,{count:50,type:`spark`,speed:640,life:.8,gravity:300,colors:bs});let i={game:`blackjack`,tier:t,prizeId:n,award:ho(this.room.prize(n),t),detail:{key:`detail.blackjack.${e}`}};this.later(()=>this.room.finish(i),P()?300:1600)}render(){let{room:e,phase:t,hands:n,chips:r,won:i,result:a,betting:o,left:s}=this,c=i?`won`:t===`dealing`||t===`dealer`?`spinning`:`idle`,l=n.reduce((e,{stacks:t})=>e+t,0)||1,u=h`
|
|
819
|
+
<span class="lk-hand-name">${this.t(`cards.dealer`)}${this.dealer.length?h`<b>${this.theirs}</b>`:_}</span>
|
|
820
|
+
<div class="lk-hand">${this.dealer.map((e,t)=>Wd(e,{hidden:t===1&&!this.holeShown}))}</div>
|
|
821
|
+
`,d=h`${a?h`<p class="lk-cards-result ${i?`is-won`:``}">${this.t(`blackjack.result.${a}`)}</p>`:_}`,f=h`
|
|
822
|
+
<button class="lk-bet ${o&&s>0?`is-open`:``}" ?disabled=${!o||!s} aria-label=${this.t(`blackjack.bet`,{prize:e.name(this.chosen)})} @click=${this.bet}>
|
|
823
|
+
${Array.from({length:l},(t,n)=>r.map((t,r)=>h`<i class="lk-bet-chip ${i&&t===this.prizeId?`is-winning`:``}" style="--lk-chip: ${e.color(t)}; --n: ${r}; --stack: ${n-(l-1)/2}"><img src=${e.icon(t)} alt="" /></i>`))}
|
|
824
|
+
</button>
|
|
825
|
+
`,p=h`${n.map((e,r)=>h`
|
|
826
|
+
<div class="lk-split ${n.length>1&&t===`player`&&r===this.active?`is-active`:``}">
|
|
827
|
+
<div class="lk-hand">${e.cards.map(t=>Wd(t,{lit:i&&(a===`natural`||a===`spades`||this.beats(e.cards))}))}</div>
|
|
828
|
+
${e.cards.length?h`<span class="lk-hand-total ${tf(e.cards)>21?`is-bust`:``}">${tf(e.cards)}${e.stacks>1?h`<small>×2</small>`:_}</span>`:_}
|
|
829
|
+
</div>
|
|
830
|
+
`)}`;return Ws(e.t,{state:c,rules:this.t(`games.blackjack.rules`),multiplier:this.boost,dealer:!0},h`
|
|
831
|
+
<div class="lk-cards lk-cards--blackjack ${this.clearing?`is-clearing`:``}">
|
|
832
|
+
${Yd(e,this.t(`blackjack.print`),{dealer:u,centre:d,bet:f,player:p},{on:Lo.value,dealing:t===`dealing`||t===`dealer`})}
|
|
833
|
+
<div class="lk-rl-rack lk-cards-rack">
|
|
834
|
+
<fl-chips
|
|
835
|
+
.chosen=${this.chosen}
|
|
836
|
+
.disabled=${!o}
|
|
837
|
+
.locked=${r[0]??null}
|
|
838
|
+
.count=${{used:r.length,max:$d}}
|
|
839
|
+
@choose=${e=>this.chosen=e.detail}
|
|
840
|
+
></fl-chips>
|
|
841
|
+
<div class="lk-rl-actions">
|
|
842
|
+
<div class="lk-rl-quick">
|
|
843
|
+
<button class="lk-round" aria-label=${this.t(`roulette.undo`)} data-tip=${this.t(`roulette.undo`)} ?disabled=${!this.history.length||!o} @click=${this.undo}>
|
|
844
|
+
${V(to)}
|
|
845
|
+
</button>
|
|
846
|
+
<button class="lk-round" aria-label=${this.t(`roulette.rebet`)} data-tip=${this.t(`roulette.rebet`)} ?disabled=${!this.lastBet||!!r.length||!o} @click=${this.rebet}>
|
|
847
|
+
${V(za)}
|
|
848
|
+
</button>
|
|
849
|
+
<button class="lk-round" aria-label=${this.t(`roulette.clear`)} data-tip=${this.t(`roulette.clear`)} ?disabled=${!r.length||!o} @click=${this.clearChips}>
|
|
850
|
+
${V($a)}
|
|
851
|
+
</button>
|
|
852
|
+
</div>
|
|
853
|
+
${t===`player`?h`
|
|
854
|
+
<button class="lk-btn lk-btn--primary lk-btn--lg" @click=${this.hit}>${V(aa)}${this.t(`blackjack.hit`)}</button>
|
|
855
|
+
<button class="lk-btn lk-btn--outline lk-btn--lg" @click=${this.stand}>${V(xa)}${this.t(`blackjack.stand`)}</button>
|
|
856
|
+
<button class="lk-btn lk-btn--outline lk-btn--lg" ?disabled=${!this.canDouble} @click=${this.double}>${V(Ui)}${this.t(`blackjack.double`)}</button>
|
|
857
|
+
<button class="lk-btn lk-btn--outline lk-btn--lg" ?disabled=${!this.canSplitHand} @click=${this.split}>${V(qa)}${this.t(`blackjack.split`)}</button>
|
|
858
|
+
`:h`<button class="lk-btn lk-btn--primary lk-btn--lg" ?disabled=${!o||!r.length} @click=${this.deal}>${V(Ca)}${this.t(`cards.deal`)}</button>`}
|
|
859
|
+
</div>
|
|
860
|
+
</div>
|
|
861
|
+
</div>
|
|
862
|
+
`)}},L([b({attribute:!1})],nf.prototype,`options`,void 0),L([x()],nf.prototype,`phase`,void 0),L([x()],nf.prototype,`hands`,void 0),L([x()],nf.prototype,`active`,void 0),L([x()],nf.prototype,`dealer`,void 0),L([x()],nf.prototype,`holeShown`,void 0),L([x()],nf.prototype,`clearing`,void 0),L([x()],nf.prototype,`result`,void 0),L([x()],nf.prototype,`chosen`,void 0),L([x()],nf.prototype,`chips`,void 0),L([x()],nf.prototype,`history`,void 0),L([x()],nf.prototype,`lastBet`,void 0),L([S(`.lk-cards`)],nf.prototype,`table`,void 0),nf=L([y(`fl-blackjack`)],nf)})),af,of=n((()=>{v(),C(),w(),A(),Vd(),Ro(),N(),qs(),B(),xs(),H(),F(),ks(),Gd(),Qd(),R(),af=class extends z{constructor(){super(),this.options={},this.phase=`ready`,this.player=[],this.dealer=[],this.board=[],this.shown=0,this.dealerShown=!1,this.folded=!1,this.clearing=!1,this.boost=M(`holdem`),this.prizeId=null,this.tier=`none`,this.pace=P()?0:480,this.watch(Lo)}willUpdate(){this.phase===`ready`&&(this.boost=M(`holdem`))}get result(){return this.dealerShown?Rd(this.player,this.dealer,this.board):null}handName(e){return this.t(`holdem.hands.${Fd[e]}`)}wait(e){return new Promise(t=>this.later(t,e))}async deal(){if(this.phase!==`ready`)return;this.tier=cs(`holdem`,this.boost);let{prizeIds:e}=this.room;this.prizeId=ls(`holdem`,e);let t=Sd(this.tier);this.player=[],this.dealer=[],this.board=t.board,this.shown=0,this.dealerShown=!1,this.folded=!1,this.phase=`dealing`,U.play(`whoosh`,.6);for(let[e,n]of[[`player`,t.player[0]],[`dealer`,t.dealer[0]],[`player`,t.player[1]],[`dealer`,t.dealer[1]]])await this.wait(this.pace),this[e]=[...this[e],n],U.play(`tick`,1.25);await this.turn(3),this.phase=`decide`}async turn(e){for(let t=0;t<e;t++)await this.wait(this.pace*1.2),this.shown++,U.play(`tick`,1.1)}async call(){if(this.phase!==`decide`)return;this.phase=`showdown`,await this.turn(2),await this.wait(this.pace*1.4),this.dealerShown=!0,this.phase=`done`;let e=this.result;if(e.tier===`none`){U.play(`stop`,.7),this.later(()=>this.collect(),P()?600:2600);return}let{tier:t}=this,n=this.prizeId;U.play(t===`jackpot`?`jackpot`:`win`);let r=this.table?.getBoundingClientRect();r&&!P()&&I.burst(r.left+r.width/2,r.top+r.height*.45,{count:50,type:`spark`,speed:640,life:.8,gravity:300,colors:bs});let i={game:`holdem`,tier:t,prizeId:n,award:ho(this.room.prize(n),t),detail:{key:`detail.holdem`,params:{hand:this.handName(e.mine.category)}}};this.later(()=>this.room.finish(i),P()?300:1800)}fold(){this.phase===`decide`&&(this.folded=!0,this.phase=`done`,U.play(`stop`,.6),this.later(()=>this.collect(),P()?600:2e3))}collect(){this.clearing=!0,U.play(`whoosh`,.4),this.later(()=>{this.player=[],this.dealer=[],this.board=[],this.shown=0,this.dealerShown=!1,this.folded=!1,this.clearing=!1,this.phase=`ready`},P()?0:650)}render(){let{room:e,phase:t,result:n}=this,r=!!n&&n.tier!==`none`,i=r?`won`:t===`dealing`||t===`showdown`?`spinning`:`idle`,a=!n||this.clearing?[]:n.lost?Cd(n.theirs):r?Cd(n.mine):[...Cd(n.mine),...Cd(n.theirs)],o=e=>a.includes(e),s=h`
|
|
863
|
+
<span class="lk-hand-name">${this.t(`cards.dealer`)}${n?h`<b>${this.handName(n.theirs.category)}</b>`:_}</span>
|
|
864
|
+
<div class="lk-hand">${this.dealer.map(e=>Wd(e,{hidden:!this.dealerShown,lit:o(e)}))}</div>
|
|
865
|
+
`,c=h`
|
|
866
|
+
<div class="lk-board">${this.board.map((e,t)=>t<this.shown?Wd(e,{lit:o(e)}):h`<i class="lk-board-slot"></i>`)}</div>
|
|
867
|
+
${this.folded||n?h`<p class="lk-cards-result ${r?`is-won`:``}">
|
|
868
|
+
${this.folded?this.t(`holdem.result.folded`):r?this.t(`holdem.result.won`,{hand:this.handName(n.mine.category)}):n.lost?this.t(`holdem.result.lost`,{hand:this.handName(n.theirs.category)}):this.t(`holdem.result.split`)}
|
|
869
|
+
</p>`:_}
|
|
870
|
+
`,l=h`
|
|
871
|
+
<div class="lk-hand">${this.player.map(e=>Wd(e,{lit:o(e)}))}</div>
|
|
872
|
+
${n?h`<span class="lk-hand-total is-name">${this.handName(n.mine.category)}</span>`:_}
|
|
873
|
+
`;return Ws(e.t,{state:i,rules:this.t(`games.holdem.rules`),multiplier:this.boost,dealer:!0},h`
|
|
874
|
+
<div class="lk-cards lk-cards--holdem ${this.clearing?`is-clearing`:``}">
|
|
875
|
+
${Yd(e,this.t(`holdem.print`),{dealer:s,centre:c,player:l},{on:Lo.value,dealing:t===`dealing`||t===`showdown`})}
|
|
876
|
+
<div class="lk-controls lk-cards-controls">
|
|
877
|
+
${t===`decide`?h`
|
|
878
|
+
<button class="lk-btn lk-btn--primary lk-btn--lg" @click=${this.call}>${V(la)}${this.t(`holdem.call`)}</button>
|
|
879
|
+
<button class="lk-btn lk-btn--outline lk-btn--lg" @click=${this.fold}>${V(so)}${this.t(`holdem.fold`)}</button>
|
|
880
|
+
`:h`<button class="lk-btn lk-btn--primary lk-btn--lg" ?disabled=${t!==`ready`} @click=${this.deal}>${V(Ca)}${this.t(`cards.deal`)}</button>`}
|
|
881
|
+
</div>
|
|
882
|
+
</div>
|
|
883
|
+
`)}},L([b({attribute:!1})],af.prototype,`options`,void 0),L([x()],af.prototype,`phase`,void 0),L([x()],af.prototype,`player`,void 0),L([x()],af.prototype,`dealer`,void 0),L([x()],af.prototype,`board`,void 0),L([x()],af.prototype,`shown`,void 0),L([x()],af.prototype,`dealerShown`,void 0),L([x()],af.prototype,`folded`,void 0),L([x()],af.prototype,`clearing`,void 0),L([S(`.lk-cards`)],af.prototype,`table`,void 0),af=L([y(`fl-holdem`)],af)})),sf=n((()=>{oc(),yc(),Rc(),Yc(),Cu(),Ku(),hd(),rf(),of()})),cf,lf,uf=n((()=>{v(),C(),w(),Xo(),xs(),B(),H(),F(),ks(),R(),cf=vs(470,110,.9),lf=class extends z{constructor(...e){super(...e),this.stage=`printing`,this.gift=Ko()===`christmas`&&!P()?`wrapped`:null,this.rising=!1,this.claiming=!1,this.claimed=!1,this.error=null}get jackpot(){return this.outcome.tier===`jackpot`}stamp(){this.stage=`stamped`,U.play(`stamp`);let e=this.seal?.getBoundingClientRect();e&&I.burst(e.left+e.width/2,e.top+e.height/2,{count:26,type:`spark`,speed:620,life:.6,gravity:200,colors:bs})}async unwrap(){await gs(1300),this.gift=`open`,this.rising=!0,U.play(`chime`,1.2),await this.updateComplete;let e=this.lid?.getBoundingClientRect();e&&I.burst(e.left+e.width/2,e.top+e.height/2,{count:70,speed:760,life:1.6,colors:qo.christmas.confetti}),await gs(1400),this.rising=!1}async onClaim(){this.error=null,this.claiming=!0;try{await this.claim(this.win),this.claimed=!0,U.play(`chime`,1.2),requestAnimationFrame(()=>this.stamp())}catch(e){this.error=e instanceof Error&&e.message?e.message:this.t(`cert.claimFailed`)}finally{this.claiming=!1}}async firstUpdated(){this.gift?await this.unwrap():(U.play(`whoosh`),await gs(P()?0:750)),this.stage=`revealed`,await gs(P()?0:900),this.stamp(),this.jackpot&&(I.fountain(2200),I.cannons(900))}render(){let{room:e,outcome:t,win:n}=this,r=this.t(`games.${t.game}.name`),i=[{label:this.t(`cert.prize`),value:n.prize.name},{label:this.t(`cert.variant`),value:n.variant?.label??this.t(`cert.fullPrize`)},...n.variant?.details??[],{label:this.t(`cert.wonOn`),value:new Date().toLocaleDateString(e.locale,{day:`2-digit`,month:`short`,year:`numeric`})}];return h`
|
|
884
|
+
<div class="lk-cert-layer" role="dialog" aria-modal="true" aria-label=${this.t(`cert.title`)}>
|
|
885
|
+
${this.jackpot?h`<div class="lk-rays"><i></i><i></i></div>`:_}
|
|
886
|
+
${this.gift?h`<div class="lk-gift-lid is-${this.gift}" aria-hidden="true"></div><div class="lk-gift-box is-${this.gift}" aria-hidden="true"></div>`:_}
|
|
887
|
+
${this.gift===`wrapped`?_:h`
|
|
888
|
+
<article
|
|
889
|
+
class="lk-cert ${this.rising?`is-rising`:``} ${this.stage===`printing`?`is-printing`:`is-revealed`} ${this.stage===`stamped`?`is-stamped`:``} ${this.claimed?`is-issued`:``}"
|
|
890
|
+
>
|
|
891
|
+
<svg viewBox="0 0 600 520" preserveAspectRatio="xMidYMid slice" aria-hidden="true">
|
|
892
|
+
${cf.map(e=>g`<polyline points=${e} fill="none" stroke="#b08a3a" stroke-opacity="0.18" stroke-width="0.5" />`)}
|
|
893
|
+
</svg>
|
|
894
|
+
<div class="lk-cert-head">
|
|
895
|
+
${e.logo(`lk-cert-logo`)}
|
|
896
|
+
${this.claim?h`<span class="lk-badge ${this.claimed?`is-success`:``}">${V(this.claimed?zi:qi)}${this.t(this.claimed?`cert.claimed`:`cert.notClaimed`)}</span>`:_}
|
|
897
|
+
<span class="lk-badge lk-badge--from">${V($i)}${r} · ${this.t(t.detail.key,t.detail.params)}</span>
|
|
898
|
+
</div>
|
|
899
|
+
<div class="lk-cert-product">
|
|
900
|
+
<img src=${e.icon(n.prize.id)} alt="" />
|
|
901
|
+
<div>
|
|
902
|
+
<h2>${n.prize.name}${this.jackpot?h`<span class="lk-jackpot-tag">JACKPOT</span>`:_}</h2>
|
|
903
|
+
<p>${this.t(`tier.${t.tier}`)} · ${n.variant?.label??this.t(`cert.fullPrize`)}</p>
|
|
904
|
+
</div>
|
|
905
|
+
</div>
|
|
906
|
+
<div class="lk-seal" aria-hidden="true">
|
|
907
|
+
<div class="lk-seal-ring"></div>
|
|
908
|
+
<div class="lk-seal-holo"></div>
|
|
909
|
+
<svg viewBox="-52 -52 104 104">
|
|
910
|
+
<circle r="34" fill="#faf3e3" />
|
|
911
|
+
<circle r="34" fill="none" stroke="#8a6420" stroke-opacity=".5" stroke-dasharray="1.5 3" />
|
|
912
|
+
<path id="lk-seal-path" d="M-26 0a26 26 0 1 1 52 0a26 26 0 1 1 -52 0" fill="none" />
|
|
913
|
+
<text font-size="7.5" font-weight="700" fill="#6e5a3a" letter-spacing="1.6"><textPath href="#lk-seal-path">${this.t(this.claimed?`cert.sealClaimed`:`cert.seal`)}</textPath></text>
|
|
914
|
+
<foreignObject class="lk-seal-logo" x="-12" y="-14" width="24" height="28">${e.logo()}</foreignObject>
|
|
915
|
+
</svg>
|
|
916
|
+
</div>
|
|
917
|
+
<div class="lk-info">
|
|
918
|
+
${i.map((e,t)=>h`<div class="lk-info-row" style="--i: ${t}"><span>${e.label}</span><b>${e.value}</b></div>`)}
|
|
919
|
+
</div>
|
|
920
|
+
${this.error?h`<p class="lk-note" role="alert">${this.error}</p>`:_}
|
|
921
|
+
<div class="lk-actions">
|
|
922
|
+
${this.claim&&!this.claimed?h`<button class="lk-btn lk-btn--primary" ?disabled=${this.claiming} @click=${this.onClaim}>
|
|
923
|
+
${V(this.claiming?Da:pa,this.claiming?`lk-spinning`:``)}${this.t(this.claiming?`cert.claiming`:`cert.claim`)}
|
|
924
|
+
</button>`:_}
|
|
925
|
+
<button class="lk-btn ${this.claim&&!this.claimed?`lk-btn--outline`:`lk-btn--primary`}" @click=${()=>this.dispatchEvent(new Event(`again`))}>
|
|
926
|
+
${V(Va)}${this.t(`cert.again`,{game:r})}
|
|
927
|
+
</button>
|
|
928
|
+
<button class="lk-btn lk-btn--outline" @click=${()=>this.dispatchEvent(new Event(`lobby`))}>${V(Ta)}${this.t(`cert.otherGame`)}</button>
|
|
929
|
+
</div>
|
|
930
|
+
</article>
|
|
931
|
+
`}
|
|
932
|
+
</div>
|
|
933
|
+
`}},L([b({attribute:!1})],lf.prototype,`outcome`,void 0),L([b({attribute:!1})],lf.prototype,`win`,void 0),L([b({attribute:!1})],lf.prototype,`claim`,void 0),L([x()],lf.prototype,`stage`,void 0),L([x()],lf.prototype,`gift`,void 0),L([x()],lf.prototype,`rising`,void 0),L([x()],lf.prototype,`claiming`,void 0),L([x()],lf.prototype,`claimed`,void 0),L([x()],lf.prototype,`error`,void 0),L([S(`.lk-seal`)],lf.prototype,`seal`,void 0),L([S(`.lk-gift-lid`)],lf.prototype,`lid`,void 0),lf=L([y(`fl-certificate`)],lf)})),df,ff,pf,mf,hf,gf,_f,vf,yf,bf,xf,Sf,Cf,wf,Tf,Ef,Df,Of,kf,Af,jf,Mf=n((()=>{v(),C(),w(),jc(),k(),ml(),uc(),Xo(),Ro(),N(),Gd(),sd(),uu(),hc(),tc(),B(),H(),F(),ks(),Us(),R(),df=[`lobby.games`,`lobby.private`],ff={blackjack:{dealer:[{rank:13,suit:`hearts`},{rank:9,suit:`clubs`}],player:[{rank:14,suit:`spades`},{rank:11,suit:`spades`}]},holdem:{dealer:[{rank:12,suit:`diamonds`},{rank:12,suit:`clubs`}],player:[{rank:14,suit:`hearts`},{rank:13,suit:`hearts`}]}},pf=[{rank:12,suit:`hearts`},{rank:11,suit:`hearts`},{rank:10,suit:`hearts`},{rank:4,suit:`spades`},{rank:9,suit:`diamonds`}],mf=[];for(let e=0;e<7;e++){let t=46+e*26;for(let n=e%2?-60:-72;n<=72;n+=24)(t>110||Math.hypot(n,t-110)<90)&&mf.push({x:110+n,y:t})}hf=[`#2a170c`,`#1d3561`,`#7d1c24`,`#c79a3e`,`#7d1c24`,`#1d3561`,`#2a170c`],gf={blue:[`#8cc8ff`,`#2f7fe6`],red:[`#ffa08c`,`#f0433f`],violet:[`#ffc4f4`,`#e04fd0`]},_f=mf.reduce((e,t,n)=>Math.hypot(t.x-110,t.y-124)<Math.hypot(mf[e].x-110,mf[e].y-124)?n:e,0),vf=e=>e===_f?`violet`:e%5==2?`red`:`blue`,yf=[`-14,-10 8,14 0,20 22,28 16,36 36,38`,`-14,232 10,214 2,206 22,198 14,190 36,184`,`234,234 210,214 218,206 196,198 204,190 184,184`],bf=`M10 176C70 174 122 156 160 124`,xf=O(0,23).map(e=>`M0 190L${(Math.cos(e*Math.PI/12)*420).toFixed(1)} ${(190-Math.sin(e*Math.PI/12)*420).toFixed(1)}L${(Math.cos((e+.5)*Math.PI/12)*420).toFixed(1)} ${(190-Math.sin((e+.5)*Math.PI/12)*420).toFixed(1)}Z`),Sf=[`4,0 36,18 36,202 4,220`,`256,0 224,18 224,202 256,220`],Cf=[{x:28,from:30,count:9},{x:12,from:14,count:11},{x:232,from:30,count:9},{x:248,from:14,count:11}].flatMap(({x:e,from:t,count:n},r)=>O(0,n-1).map(n=>({x:e,y:t+n*18.5,color:[`#9e1b22`,`#1d3561`,`#d4a94e`,`#f6e2a6`,`#1c6136`,`#5b2a6e`][(n*5+r*3)%6],delay:`${(n*7+r*3)%10/20}s`}))),wf=[{x:40,y:40,w:26},{x:120,y:62,w:18},{x:70,y:112,w:22},{x:170,y:150,w:16},{x:20,y:140,w:14}],Tf=50,Ef=2e4,Df=(wc(Ef)-wc(Tf)+1.8)*1e3,Of=[{offset:0,transform:`translate(0, 0)`,opacity:1},{offset:.12,transform:`translate(0, 0)`,opacity:1,easing:`ease-out`},{offset:.3,transform:`translate(0, -42px)`,opacity:1},{offset:.42,transform:`translate(0, -42px)`,opacity:1,easing:`ease-out`},{offset:.6,transform:`translate(44px, -72px)`,opacity:1},{offset:.9,transform:`translate(44px, -72px)`,opacity:1},{offset:1,transform:`translate(44px, -72px)`,opacity:0}],kf=[{transform:`translateY(0)`},{transform:`translateY(-1200px)`}],Af={wheel:[{selector:`.lk-mini-wheel`,keyframes:[{rotate:`0deg`},{rotate:`360deg`}],duration:4e4,fast:40/6}],roulette:[{selector:`.lk-mini-roulette`,keyframes:[{rotate:`0deg`},{rotate:`-360deg`}],duration:24e3,fast:24/5}],slot:[...[5e3,6400,7600].map((e,t)=>({selector:`.lk-reel:nth-child(${t+1}) ul`,keyframes:kf,duration:e,fast:e/600})),{selector:`.lk-mini-multiplier`,keyframes:[{opacity:1},{opacity:1}],duration:Df,fast:5},{selector:`.lk-mini-rays`,keyframes:[{rotate:`0deg`},{rotate:`-15deg`}],duration:6e3,fast:5},{selector:`.lk-mini-speed`,keyframes:[{transform:`translate(0, 0)`},{transform:`translate(-220px, 60px)`}],duration:3e3,fast:5},{selector:`.lk-mini-glint`,keyframes:[{strokeDashoffset:100},{strokeDashoffset:0}],duration:2200,fast:5},{selector:`.lk-mini-football`,keyframes:Of,duration:3200,fast:3}]},jf=class extends z{constructor(){super(),this.page=0,this.takeoffShown=Tf,this.strips=[],this.struck=rl(),this.flipping=0,this.touchY=null,this.takeoffRaf=0,this.spins=new Map,this.inRoom=e=>e.composedPath().some(e=>e instanceof Element&&e.classList.contains(`lk-room`)),this.flip=e=>this.inRoom(e)&&Math.abs(e.deltaY)>6&&this.turnPage(this.page+Math.sign(e.deltaY)),this.touchStart=e=>this.touchY=this.inRoom(e)?e.touches[0]?.clientY??null:null,this.touchEnd=e=>{let t=e.changedTouches[0]?.clientY;this.touchY!==null&&t!==void 0&&Math.abs(this.touchY-t)>50&&this.turnPage(this.page+Math.sign(this.touchY-t)),this.touchY=null},this.pageKeys=e=>{(e.key===`PageDown`||e.key===`ArrowDown`)&&this.turnPage(this.page+1),(e.key===`PageUp`||e.key===`ArrowUp`)&&this.turnPage(this.page-1)},this.climb=()=>{let e=this.grid?.querySelector(`.lk-mini-multiplier`)?.getAnimations()[0];e&&(this.takeoffShown=Math.min(Ef,Cc(wc(Tf)+Number(e.currentTime)%Df/1e3))),this.takeoffRaf=requestAnimationFrame(this.climb)},this.watch(Lo)}willUpdate(e){super.willUpdate(e),this.stripsFor!==this.room.prizeIds&&(this.stripsFor=this.room.prizeIds,this.strips=sc(this.room.prizeIds))}turnPage(e){let t=Math.max(0,Math.min(df.length-1,e));t===this.page||performance.now()<this.flipping||(this.page=t,this.flipping=performance.now()+(P()?0:900),U.play(`whoosh`,.5),this.dispatchEvent(new CustomEvent(`page`,{detail:t})))}accelerate(e,t){let n=this.spins.get(e);if(!n)return;cancelAnimationFrame(n.ramp);let r=n.animations.map(({animation:e,fast:n})=>({animation:e,from:e.playbackRate,to:t?n:1})),i=performance.now(),a=e=>{let t=1-(1-Math.min(1,(e-i)/600))**3;r.forEach(({animation:e,from:n,to:r})=>e.playbackRate=n+(r-n)*t),t<1&&(n.ramp=requestAnimationFrame(a))};n.ramp=requestAnimationFrame(a)}connectedCallback(){super.connectedCallback(),addEventListener(`keydown`,this.pageKeys),addEventListener(`wheel`,this.flip,{passive:!0}),addEventListener(`touchstart`,this.touchStart,{passive:!0}),addEventListener(`touchend`,this.touchEnd)}async firstUpdated(){if(await Promise.all([...this.querySelectorAll(`fl-wheel-face, fl-slot-machine, fl-roulette-wheel`)].map(e=>e.updateComplete)),this.isConnected){if(!P()){for(let e of Object.keys(Af)){let t=Af[e].flatMap(({selector:t,keyframes:n,duration:r,fast:i})=>{let a=this.grid?.querySelector(`.lk-table--${e} ${t}`);return a?[{animation:a.animate(n,{duration:r,iterations:1/0}),fast:i}]:[]});this.spins.set(e,{animations:t,ramp:0})}this.takeoffRaf=requestAnimationFrame(this.climb)}this.observer=new ResizeObserver(e=>e.forEach(({target:e,contentRect:{width:t,height:n}})=>{e.style.setProperty(`--lk-art-h`,String(n));let r=e.querySelector(`.lk-mini-slot`);r&&(r.style.zoom=String(Math.min(n*.8/495,t*.72/560)))})),this.grid?.querySelectorAll(`.lk-art`).forEach(e=>this.observer.observe(e))}}disconnectedCallback(){super.disconnectedCallback(),removeEventListener(`keydown`,this.pageKeys),removeEventListener(`wheel`,this.flip),removeEventListener(`touchstart`,this.touchStart),removeEventListener(`touchend`,this.touchEnd),this.observer?.disconnect(),this.spins.forEach(e=>cancelAnimationFrame(e.ramp)),cancelAnimationFrame(this.takeoffRaf)}play(e){U.play(`tick`),this.dispatchEvent(new CustomEvent(`play`,{detail:e}))}meta(e){return h`
|
|
934
|
+
<div class="lk-meta">
|
|
935
|
+
<span>
|
|
936
|
+
<b>${this.t(`games.${e}.name`)}</b>
|
|
937
|
+
<small>${this.t(`games.${e}.summary`)}</small>
|
|
938
|
+
</span>
|
|
939
|
+
${V(Vi)}
|
|
940
|
+
</div>
|
|
941
|
+
`}takeoffArt(){return h`
|
|
942
|
+
<svg class="lk-mini-takeoff" viewBox="0 0 220 190" aria-hidden="true">
|
|
943
|
+
<defs>
|
|
944
|
+
<radialGradient id="lk-mini-sky-wood" cx="0" cy="1" r="1.2"><stop offset="0" stop-color="#3a1a0b" /><stop offset="1" stop-color="#120804" /></radialGradient>
|
|
945
|
+
<linearGradient id="lk-mini-trail" x1="0" y1="1" x2="1" y2="0"><stop offset="0" stop-color="#b9791c" stop-opacity=".3" /><stop offset=".7" stop-color="#f6c453" /><stop offset="1" stop-color="#fff6d2" /></linearGradient>
|
|
946
|
+
</defs>
|
|
947
|
+
<rect width="220" height="190" rx="18" fill="url(#lk-mini-sky-wood)" stroke="#d4a94e" stroke-opacity=".6" stroke-width="2" />
|
|
948
|
+
<clipPath id="lk-mini-takeoff-clip"><rect width="220" height="190" rx="18" /></clipPath>
|
|
949
|
+
<g clip-path="url(#lk-mini-takeoff-clip)">
|
|
950
|
+
<g class="lk-mini-rays" fill="#e2bd63" fill-opacity=".06">${xf.map(e=>g`<path d=${e} />`)}</g>
|
|
951
|
+
<g class="lk-mini-speed" stroke="#f6e2a6" stroke-opacity=".35" stroke-width="1.5" stroke-linecap="round">
|
|
952
|
+
${[1,2].map(e=>wf.map(t=>g`<line x1=${t.x+e*220} y1=${t.y-e*60} x2=${t.x+e*220+t.w} y2=${t.y-e*60-t.w*.27} />`))}
|
|
953
|
+
</g>
|
|
954
|
+
</g>
|
|
955
|
+
<path class="lk-mini-trail" d=${bf} fill="none" stroke="url(#lk-mini-trail)" stroke-width="4" stroke-linecap="round" pathLength="100" />
|
|
956
|
+
<text x="110" y="74" class="lk-mini-multiplier" text-anchor="middle">${this.takeoffShown.toFixed(2)}×</text>
|
|
957
|
+
<path class="lk-mini-glint" d=${bf} fill="none" stroke="#fffbe8" stroke-width="3" stroke-linecap="round" pathLength="100" />
|
|
958
|
+
${Ko()===`christmas`?g`<g class="lk-mini-plane"><g transform="translate(156 128) rotate(-36) scale(.62)">
|
|
959
|
+
${Yo.map(e=>g`<path d=${e.d} fill=${e.fill??`none`} stroke=${e.stroke??_} stroke-width=${e.width??_} stroke-linecap="round" class=${e.glow?`lk-mini-nose`:_} />`)}
|
|
960
|
+
</g></g>`:g`<g class="lk-mini-plane"><g transform="translate(160 124) rotate(-36) scale(.62)">
|
|
961
|
+
<path d="M-24 -2L-34 -15L-27 -15L-15 -5Z" fill="#7d1c24" />
|
|
962
|
+
<ellipse rx="26" ry="7.5" fill="#f6e2a6" stroke="#8a6420" stroke-width="1.2" />
|
|
963
|
+
<path d="M-6 2L7 2L-3 17L-14 17Z" fill="#9e1b22" />
|
|
964
|
+
<circle cx="26" r="3" fill="#d4a94e" />
|
|
965
|
+
</g></g>`}
|
|
966
|
+
</svg>
|
|
967
|
+
`}breakawayArt(){return h`
|
|
968
|
+
<svg class="lk-mini-breakaway" viewBox="0 0 260 220" aria-hidden="true">
|
|
969
|
+
<defs>${Sf.map((e,t)=>g`<clipPath id="lk-mini-stand-${t}"><polygon points=${e} /></clipPath>`)}</defs>
|
|
970
|
+
${Sf.map((e,t)=>g`
|
|
971
|
+
<g>
|
|
972
|
+
<polygon points=${e} fill="#2a1208" />
|
|
973
|
+
<g clip-path="url(#lk-mini-stand-${t})">
|
|
974
|
+
<rect x=${t?224:20} y="0" width="16" height="220" fill="#3a1a0b" />
|
|
975
|
+
<rect x=${t?240:4} y="0" width="16" height="220" fill="#2e150a" />
|
|
976
|
+
</g>
|
|
977
|
+
<polygon points=${e} fill="none" stroke="#d4a94e" stroke-opacity=".5" stroke-linejoin="round" />
|
|
978
|
+
</g>
|
|
979
|
+
`)}
|
|
980
|
+
${Cf.map(e=>g`
|
|
981
|
+
<g class="lk-mini-fan" style="--d: ${e.delay}">
|
|
982
|
+
<path class="lk-mini-fan-arms" d="M${e.x-3.5} ${e.y+2}l-2.5 -5M${e.x+3.5} ${e.y+2}l2.5 -5" stroke=${e.color} stroke-width="1.6" stroke-linecap="round" />
|
|
983
|
+
<rect x=${e.x-3.5} y=${e.y+1} width="7" height="6" rx="2" fill=${e.color} />
|
|
984
|
+
<circle cx=${e.x} cy=${e.y-1.5} r="2.6" fill="#f2c9a0" />
|
|
985
|
+
</g>
|
|
986
|
+
`)}
|
|
987
|
+
<g transform="translate(50 0)">
|
|
988
|
+
<rect width="160" height="220" rx="14" fill="#1a5c36" stroke="#d4a94e" stroke-opacity=".6" stroke-width="2" />
|
|
989
|
+
${O(1,5).map(e=>g`<rect x="2" y=${(e-1)*44+8} width="156" height="22" fill="#fff" fill-opacity=".035" />`)}
|
|
990
|
+
<g fill="none" stroke="#e2bd63" stroke-opacity=".5" stroke-width="1.5">
|
|
991
|
+
<rect x="10" y="10" width="140" height="200" rx="2" />
|
|
992
|
+
<rect x="40" y="10" width="80" height="44" />
|
|
993
|
+
<path d="M10 196H150" />
|
|
994
|
+
<path d="M58 210a22 22 0 0 1 44 0" />
|
|
995
|
+
</g>
|
|
996
|
+
<rect x="62" y="2" width="36" height="8" fill="none" stroke="#f1d892" stroke-width="2.5" />
|
|
997
|
+
${O(1,4).map(e=>O(1,3).map(t=>g`<rect x=${18+(t-1)*44} y=${168-e*30} width="36" height="24" rx="5" fill=${e<3&&t===1+e?`rgb(226 189 99 / .35)`:`rgb(255 250 240 / .08)`} stroke=${e===3?`#f6e2a6`:`rgb(246 226 166 / .3)`} stroke-width="1" />`))}
|
|
998
|
+
<circle class="lk-mini-football" cx="80" cy="180" r="6" fill="#fff" stroke="#1a1a1a" stroke-width="1" />
|
|
999
|
+
</g>
|
|
1000
|
+
</svg>
|
|
1001
|
+
`}rouletteArt(){let e=M(`roulette`)>1;return h`
|
|
1002
|
+
<div class="lk-mini-storm ${e?`is-storm`:``}">
|
|
1003
|
+
<fl-roulette-wheel rootClass="lk-mini-roulette" prefix="mr" .struck=${e?this.struck:void 0}></fl-roulette-wheel>
|
|
1004
|
+
${e?h`<svg class="lk-mini-bolts" viewBox="0 0 220 220" aria-hidden="true">
|
|
1005
|
+
${yf.map((e,t)=>g`<polyline points=${e} style="--d: ${t*.8}s" />`)}
|
|
1006
|
+
</svg>`:_}
|
|
1007
|
+
</div>
|
|
1008
|
+
`}pachinkoArt(){let e=M(`pachinko`)>1;return h`
|
|
1009
|
+
<svg class="lk-mini-pachinko ${e?`is-colorful`:``}" viewBox="0 0 220 260" aria-hidden="true">
|
|
1010
|
+
<defs>
|
|
1011
|
+
<linearGradient id="lk-mini-pachi-board" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#102941" /><stop offset="1" stop-color="#080e1c" /></linearGradient>
|
|
1012
|
+
<radialGradient id="lk-mini-pachi-gold" cx=".35" cy=".3" r=".8"><stop offset="0" stop-color="#fff6d2" /><stop offset=".5" stop-color="#f6c453" /><stop offset="1" stop-color="#b9791c" /></radialGradient>
|
|
1013
|
+
</defs>
|
|
1014
|
+
${e?g`
|
|
1015
|
+
<path d="M10 250V110a100 100 0 0 1 200 0v140z" fill="url(#lk-mini-pachi-board)" stroke="#d4a94e" stroke-width="3" />
|
|
1016
|
+
${mf.map((e,t)=>{let n=vf(t)===`violet`;return g`
|
|
1017
|
+
<g>
|
|
1018
|
+
<circle cx=${e.x} cy=${e.y} r=${n?5.6:4.4} fill=${gf[vf(t)][1]} stroke="#f1cf72" stroke-width=".8" />
|
|
1019
|
+
<circle cx=${e.x-1.3} cy=${e.y-1.3} r=${n?1.9:1.4} fill=${gf[vf(t)][0]} />
|
|
1020
|
+
</g>
|
|
1021
|
+
`})}
|
|
1022
|
+
${hf.map((e,t)=>g`<rect x=${14+t*28} y="226" width="24" height="20" rx="4" fill=${e} />`)}
|
|
1023
|
+
${O(1,8).map(e=>g`<circle class="lk-ball lk-ball-trail" cx="110" cy="30" r=${6-e*.55} fill="#ffd36e" fill-opacity=${.75-e*.08} style="--k: ${e}" />`)}
|
|
1024
|
+
<circle class="lk-ball lk-ball--gold" cx="110" cy="30" r="6" fill="url(#lk-mini-pachi-gold)" />
|
|
1025
|
+
`:g`
|
|
1026
|
+
<path d="M10 250V110a100 100 0 0 1 200 0v140z" fill="#2a140a" stroke="#d4a94e" stroke-width="3" />
|
|
1027
|
+
${mf.map(e=>g`<circle cx=${e.x} cy=${e.y} r="3" fill="#d4a94e" />`)}
|
|
1028
|
+
${hf.map((e,t)=>g`<rect x=${14+t*28} y="226" width="24" height="20" rx="4" fill=${e} />`)}
|
|
1029
|
+
<circle class="lk-ball" cx="110" cy="30" r="6" fill="#f4ecdc" />
|
|
1030
|
+
`}
|
|
1031
|
+
</svg>
|
|
1032
|
+
`}scratchArt(){let e=M(`scratch`)>1?ds():`classic`,t=nd(this.t(`scratch.prize`));return e===`double`?h`
|
|
1033
|
+
<svg class="lk-mini-scratch" viewBox="0 0 200 250" aria-hidden="true">
|
|
1034
|
+
<defs>
|
|
1035
|
+
<clipPath id="lk-mini-double-clip"><rect width="200" height="250" rx="18" /></clipPath>
|
|
1036
|
+
<pattern id="lk-mini-dots" width="12" height="12" patternUnits="userSpaceOnUse"><circle cx="3" cy="3" r="1.8" fill="#fff" fill-opacity=".2" /><circle cx="9" cy="9" r="1.8" fill="#fff" fill-opacity=".12" /></pattern>
|
|
1037
|
+
</defs>
|
|
1038
|
+
<g clip-path="url(#lk-mini-double-clip)">
|
|
1039
|
+
<rect width="200" height="250" fill="#c8161e" />
|
|
1040
|
+
<rect width="200" height="250" fill="url(#lk-mini-dots)" />
|
|
1041
|
+
<text x="100" y="32" class="lk-mini-title lk-mini-title--double" text-anchor="middle">${this.t(`scratch.double.first`)} ${this.t(`scratch.double.second`)}</text>
|
|
1042
|
+
<rect x="10" y="44" width="180" height="42" rx="9" fill="#2fa7e0" stroke="#fff" stroke-width="2" />
|
|
1043
|
+
${O(1,5).map(e=>g`<image href=${t.coin} x=${18+(e-1)*34} y="51" width="28" height="28" />`)}
|
|
1044
|
+
<rect x="10" y="94" width="180" height="146" rx="9" fill="#8fd8f5" stroke="#fff" stroke-width="2" />
|
|
1045
|
+
${O(1,3).map(e=>O(1,4).map(n=>g`<image href=${t.bundle} x=${16+(n-1)*43} y=${101+(e-1)*46} width="40" height="40" />`))}
|
|
1046
|
+
<rect x="59" y="147" width="40" height="40" rx="6" fill="#fffaf0" />
|
|
1047
|
+
<text x="79" y="174" class="lk-mini-number" text-anchor="middle">17</text>
|
|
1048
|
+
<rect class="lk-shine" width="60" height="250" fill="#fff" opacity=".3" transform="skewX(-18)" />
|
|
1049
|
+
</g>
|
|
1050
|
+
</svg>
|
|
1051
|
+
`:e===`forever`?h`
|
|
1052
|
+
<svg class="lk-mini-scratch" viewBox="0 0 200 250" aria-hidden="true">
|
|
1053
|
+
<defs>
|
|
1054
|
+
<clipPath id="lk-mini-forever-clip"><rect width="200" height="250" rx="18" /></clipPath>
|
|
1055
|
+
<linearGradient id="lk-mini-sky" x1="0" y1="0" x2="0" y2="1"><stop offset="0" stop-color="#2b9fe0" /><stop offset=".35" stop-color="#9ddcf7" /><stop offset=".7" stop-color="#f3dcab" /><stop offset="1" stop-color="#e6c27f" /></linearGradient>
|
|
1056
|
+
</defs>
|
|
1057
|
+
<g clip-path="url(#lk-mini-forever-clip)">
|
|
1058
|
+
<rect width="200" height="250" fill="url(#lk-mini-sky)" />
|
|
1059
|
+
<text x="100" y="30" class="lk-mini-title lk-mini-title--forever" text-anchor="middle">${this.t(`scratch.forever.first`)} ${this.t(`scratch.forever.middle`)} ${this.t(`scratch.forever.second`)}</text>
|
|
1060
|
+
${O(1,4).map(e=>g`<image href=${t.boat} x=${12+(e-1)*34} y="42" width="30" height="28" />`)}
|
|
1061
|
+
<rect x="152" y="40" width="38" height="32" rx="6" fill="#ffe14d" stroke="#e5302a" stroke-width="2" transform="rotate(-4 171 56)" />
|
|
1062
|
+
<text x="171" y="64" class="lk-mini-inf" text-anchor="middle">∞</text>
|
|
1063
|
+
<image href=${t.beach} x="10" y="80" width="180" height="96" preserveAspectRatio="none" />
|
|
1064
|
+
<g stroke="#fff" stroke-width="2">
|
|
1065
|
+
${O(1,4).map(e=>g`<line x1=${10+e*36} y1="80" x2=${10+e*36} y2="176" />`)}
|
|
1066
|
+
${O(1,2).map(e=>g`<line x1="10" y1=${80+e*32} x2="190" y2=${80+e*32} />`)}
|
|
1067
|
+
</g>
|
|
1068
|
+
<rect x="83" y="113" width="34" height="30" fill="#fffaf0" />
|
|
1069
|
+
<text x="100" y="135" class="lk-mini-number" text-anchor="middle">17</text>
|
|
1070
|
+
${O(1,5).map(e=>g`<image href=${t.flipflop} x=${12+(e-1)*36} y="190" width="32" height="24" />`)}
|
|
1071
|
+
<rect class="lk-shine" width="60" height="250" fill="#fff" opacity=".3" transform="skewX(-18)" />
|
|
1072
|
+
</g>
|
|
1073
|
+
</svg>
|
|
1074
|
+
`:h`
|
|
1075
|
+
<svg class="lk-mini-scratch" viewBox="0 0 200 250" aria-hidden="true">
|
|
1076
|
+
<defs>
|
|
1077
|
+
<clipPath id="lk-mini-scratch-clip"><rect width="200" height="250" rx="18" /></clipPath>
|
|
1078
|
+
<linearGradient id="lk-mini-foil" x1="0" y1="0" x2="1" y2="1"><stop offset="0" stop-color="#e9edf1" /><stop offset=".45" stop-color="#9aa3af" /><stop offset=".55" stop-color="#7d8692" /><stop offset="1" stop-color="#e4e8ee" /></linearGradient>
|
|
1079
|
+
</defs>
|
|
1080
|
+
<g clip-path="url(#lk-mini-scratch-clip)">
|
|
1081
|
+
<rect width="200" height="250" fill="#f7efdc" />
|
|
1082
|
+
${O(1,3).map(e=>g`
|
|
1083
|
+
<rect x=${16+(e-1)*58} y="56" width="52" height="56" rx="10" fill="url(#lk-mini-foil)" />
|
|
1084
|
+
<rect x=${16+(e-1)*58} y="122" width="52" height="56" rx="10" fill="url(#lk-mini-foil)" />
|
|
1085
|
+
`)}
|
|
1086
|
+
<rect x="16" y="190" width="168" height="40" rx="10" fill="url(#lk-mini-foil)" />
|
|
1087
|
+
<rect x="74" y="122" width="52" height="56" rx="10" fill="#fffaf0" />
|
|
1088
|
+
<image href=${this.room.icon(this.room.prizeIds[0])} x="84" y="130" width="32" height="40" />
|
|
1089
|
+
<rect class="lk-shine" width="60" height="250" fill="#fff" opacity=".35" transform="skewX(-18)" />
|
|
1090
|
+
<rect x="16" y="20" width="90" height="12" rx="6" fill="#7d1c24" opacity=".75" />
|
|
1091
|
+
</g>
|
|
1092
|
+
</svg>
|
|
1093
|
+
`}art(e){if(e===`wheel`)return h`<fl-wheel-face rootClass="lk-mini-wheel" prefix="mw"></fl-wheel-face>`;if(e===`slot`){let e=M(`slot`)>1?us():`classic`;return e===`takeoff`?this.takeoffArt():e===`breakaway`?this.breakawayArt():h`<div class="lk-mini-slot"><fl-slot-machine .strips=${this.strips} mini></fl-slot-machine></div>`}return e===`roulette`?this.rouletteArt():e===`pachinko`?this.pachinkoArt():this.scratchArt()}render(){let{page:e}=this,t=$o(),n=t?[t,...es.filter(e=>e!==t)]:es;return h`
|
|
1094
|
+
<div class="lk-lobby" style="--page: ${e}">
|
|
1095
|
+
<div class="lk-pages">
|
|
1096
|
+
<section class="lk-page ${e===0?`is-current`:``}" style="--index: 0" ?inert=${e!==0} aria-label=${this.t(df[0])}>
|
|
1097
|
+
<div class="lk-grid">
|
|
1098
|
+
${n.map((e,t)=>h`
|
|
1099
|
+
<button
|
|
1100
|
+
class="lk-table lk-table--${e}"
|
|
1101
|
+
style="--i: ${t}"
|
|
1102
|
+
@pointerenter=${()=>this.accelerate(e,!0)}
|
|
1103
|
+
@pointerleave=${()=>this.accelerate(e,!1)}
|
|
1104
|
+
@click=${()=>this.play(e)}
|
|
1105
|
+
>
|
|
1106
|
+
<i class="lk-bulbs" aria-hidden="true"></i>
|
|
1107
|
+
${M(e)>1?Hs(this.room.t,M(e)):_}
|
|
1108
|
+
<div class="lk-table-body">
|
|
1109
|
+
<div class="lk-art">${this.art(e)}</div>
|
|
1110
|
+
${this.meta(e)}
|
|
1111
|
+
</div>
|
|
1112
|
+
</button>
|
|
1113
|
+
`)}
|
|
1114
|
+
</div>
|
|
1115
|
+
</section>
|
|
1116
|
+
|
|
1117
|
+
<section class="lk-page lk-page--private ${e===1?`is-current`:``}" style="--index: 1" ?inert=${e!==1} aria-label=${this.t(df[1])}>
|
|
1118
|
+
<header class="lk-private-head">
|
|
1119
|
+
<i class="lk-rope" aria-hidden="true"><b></b><b></b></i>
|
|
1120
|
+
<h3>${this.t(`lobby.private`)}</h3>
|
|
1121
|
+
<small>${this.t(`lobby.privateLine`)}</small>
|
|
1122
|
+
</header>
|
|
1123
|
+
<div class="lk-grid lk-grid--private">
|
|
1124
|
+
${ts.map((e,t)=>h`
|
|
1125
|
+
<button class="lk-table lk-table--private lk-table--${e}" style="--i: ${t}" @click=${()=>this.play(e)}>
|
|
1126
|
+
${M(e)>1?Hs(this.room.t,M(e),!0):_}
|
|
1127
|
+
<div class="lk-table-body">
|
|
1128
|
+
<div class="lk-art">
|
|
1129
|
+
<div class="lk-mini-cards">
|
|
1130
|
+
<div class="lk-mini-hand is-dealer">${ff[e].dealer.map((e,t)=>Wd(e,{hidden:t===1}))}</div>
|
|
1131
|
+
${e===`holdem`?h`<div class="lk-mini-hand is-board">${pf.map(e=>Wd(e))}</div>`:_}
|
|
1132
|
+
<div class="lk-mini-hand is-player">${ff[e].player.map(e=>Wd(e))}</div>
|
|
1133
|
+
</div>
|
|
1134
|
+
</div>
|
|
1135
|
+
${this.meta(e)}
|
|
1136
|
+
</div>
|
|
1137
|
+
</button>
|
|
1138
|
+
`)}
|
|
1139
|
+
</div>
|
|
1140
|
+
</section>
|
|
1141
|
+
</div>
|
|
1142
|
+
|
|
1143
|
+
<nav class="lk-pager" aria-label=${this.t(`lobby.pager`)}>
|
|
1144
|
+
${df.map((t,n)=>h`<button
|
|
1145
|
+
type="button"
|
|
1146
|
+
class=${e===n?`is-current`:``}
|
|
1147
|
+
aria-current=${e===n?`page`:_}
|
|
1148
|
+
aria-label=${this.t(t)}
|
|
1149
|
+
data-tip=${this.t(t)}
|
|
1150
|
+
@click=${()=>this.turnPage(n)}
|
|
1151
|
+
></button>`)}
|
|
1152
|
+
</nav>
|
|
1153
|
+
</div>
|
|
1154
|
+
`}},L([b({type:Number})],jf.prototype,`page`,void 0),L([x()],jf.prototype,`takeoffShown`,void 0),L([S(`.lk-grid`)],jf.prototype,`grid`,void 0),jf=L([y(`fl-lobby`)],jf)}));function Nf(e,t){e.globalAlpha=.25+t.size*.15,e.fillStyle=`#fffaf0`,e.beginPath(),e.arc(t.x,t.y,t.size,0,Math.PI*2),e.fill(),e.globalAlpha=1}function Pf(e,t,n,r){e.save(),e.translate(t.x,t.y),e.rotate(t.phase+n*t.spin),e.scale(1,Math.cos(n*2.4+t.phase)),e.globalAlpha=.8,e.fillStyle=t.color,e.beginPath(),r===`halloween`?(e.moveTo(-t.size,0),e.quadraticCurveTo(0,-t.size*.8,t.size,0),e.quadraticCurveTo(0,t.size*.8,-t.size,0)):e.ellipse(0,0,t.size*.6,t.size*.38,0,0,Math.PI*2),e.fill(),e.restore()}function Ff(e,t,n,r,i){e.save(),e.translate(t,n),e.scale(r,Math.abs(r)),e.fillStyle=`rgb(74 38 98 / 0.9)`,e.shadowColor=`rgb(255 140 50 / 0.7)`,e.shadowBlur=8;for(let t of[-1,1])e.save(),e.scale(t,.35+.65*Math.abs(i)),e.beginPath(),e.moveTo(2,-2),e.quadraticCurveTo(10,-12,22,-6),e.quadraticCurveTo(19,-1,20,3),e.quadraticCurveTo(15,0,13,4),e.quadraticCurveTo(8,1,3,4),e.closePath(),e.fill(),e.restore();e.beginPath(),e.ellipse(0,0,3.6,5.2,0,0,Math.PI*2),e.moveTo(-3,-4),e.lineTo(-2.2,-8),e.lineTo(-.8,-4.6),e.moveTo(3,-4),e.lineTo(2.2,-8),e.lineTo(.8,-4.6),e.fill(),e.restore()}var If,Lf,Rf,zf,Bf,Vf,Hf,Uf,Wf,Gf,Kf,qf,Jf,Yf,Xf,Zf,Qf,$f,ep,tp,np,rp,ip,ap=n((()=>{v(),C(),k(),Xo(),B(),F(),R(),If=140,Lf=Array.from({length:20},(e,t)=>t*If),Rf=`M0 2Q${If/2} 24 ${If} 2`,zf=e=>({x:e*If,y:2+2*(1-e)*e*22}),Bf=[.2,.5,.8].map(zf),Vf=[.08,.25,.42,.58,.75,.92].map(zf),Hf=[.1,.3,.5,.7,.9].map(zf),Uf=[`#ffc8dd`,`#cdb4ff`,`#b8f0c8`],Wf=[`#ffd23f`,`#3ec1c9`,`#ff6f59`,`#fff4d6`,`#3ec1c9`,`#ff6f59`],Gf=(e,t,n,r)=>Array.from({length:10},(i,a)=>{let o=a*Math.PI/5-Math.PI/2,s=a%2?r:n;return`${(e+Math.cos(o)*s).toFixed(1)},${(t+Math.sin(o)*s).toFixed(1)}`}).join(` `),Kf=Gf(110,40,14,6),qf=[{d:`M30 245L110 120L190 245Q150 236 110 246Q70 236 30 245Z`,snow:`M30 245Q70 236 110 246Q150 236 190 245`},{d:`M45 185L110 80L175 185Q142 177 110 187Q78 177 45 185Z`,snow:`M45 185Q78 177 110 187Q142 177 175 185`},{d:`M62 128L110 42L158 128Q134 121 110 130Q86 121 62 128Z`,snow:`M62 128Q86 121 110 130Q134 121 158 128`}],Jf=[[78,110,140,122],[66,165,154,178],[50,222,172,236]].flatMap(([e,t,n,r],i)=>Array.from({length:6+i},(a,o)=>{let s=(o+.5)/(6+i);return{x:e+(n-e)*s,y:t+(r-t)*s+Math.sin(Math.PI*s)*6,color:[`#ffe3a0`,`#ff6b5e`,`#7fd6ff`,`#fff4d6`][(o+i)%4],delay:(o+i)%3}})),Yf=[1,2,3].map(e=>`M${Jf.filter((t,n)=>n>=[0,6,13][e-1]&&n<[6,13,21][e-1]).map(e=>`${e.x.toFixed(1)} ${e.y.toFixed(1)}`).join(`L`)}`),Xf=[{x:100,y:90,color:`#c8202f`},{x:92,y:142,color:`#d4a94e`},{x:130,y:150,color:`#c8202f`},{x:84,y:200,color:`#1d6fb8`},{x:120,y:206,color:`#d4a94e`},{x:152,y:198,color:`#c8202f`}],Zf=[{x:40,y:200,width:80,height:70,box:`#1c6136`,lid:`#237a45`,ribbon:`#c8202f`},{x:128,y:222,width:60,height:48,box:`#c8202f`,lid:`#d63040`,ribbon:`#f3d488`},{x:54,y:162,width:50,height:38,box:`#d4a94e`,lid:`#e2bd63`,ribbon:`#9e1b22`}],Qf=[{x:104,y:200,color:`#6b2fa0`},{x:122,y:198,color:`#9be36a`},{x:92,y:203,color:`#ffd23f`}],$f=[{x:56,y:0,scale:1},{x:34,y:120,scale:.55}].reverse(),ep=[{x:110,y:270,color:`#9be36a`},{x:204,y:272,color:`#6b2fa0`}],tp=[{x:70,y:210,color:`#ffc8dd`},{x:150,y:210,color:`#fff1a8`},{x:96,y:200,color:`#cdb4ff`},{x:124,y:202,color:`#b8f0c8`},{x:110,y:214,color:`#a8dcff`}],np=[12,48,86,118],rp=({x:e,y:t,color:n})=>g`<g>
|
|
1155
|
+
<path d=${`M${e-14} ${t-5}L${e-8} ${t}L${e-14} ${t+5}ZM${e+14} ${t-5}L${e+8} ${t}L${e+14} ${t+5}Z`} fill=${n} />
|
|
1156
|
+
<ellipse cx=${e} cy=${t} rx="9" ry="6" fill=${n} />
|
|
1157
|
+
</g>`,ip=class extends z{constructor(...e){super(...e),this.raf=0}firstUpdated(){this.start()}disconnectedCallback(){super.disconnectedCallback(),cancelAnimationFrame(this.raf)}start(){let e=this.canvas;if(!e||P())return;let t=this.theme,n=e.getContext(`2d`),r=Math.min(2,devicePixelRatio);e.width=innerWidth*r,e.height=innerHeight*r,n.setTransform(r,0,0,r,0,0);let i=innerWidth,a=innerHeight,o=qo[t].confetti,s={christmas:120,halloween:30,easter:46,august:0}[t],c=Array.from({length:s},()=>({x:T(0,i),y:T(-a,a),size:t===`christmas`?T(1,3.4):T(5,9),speed:t===`christmas`?T(18,55):T(26,60),drift:T(-12,12),phase:T(0,Math.PI*2),spin:T(-2,2),color:E(t===`halloween`?[`#c2561b`,`#8f3a12`,`#d98a2b`,`#6b2a10`]:o)})),l=t===`halloween`?Array.from({length:6},()=>({x:T(0,i),y:T(a*.15,a*.7),speed:T(50,110)*E([-1,1]),size:T(1,1.7),phase:T(0,6)})):[],u=[],d=600,f=performance.now(),p=e=>{let r=Math.min(.05,(e-f)/1e3);f=e;let s=e/1e3;n.clearRect(0,0,i,a);for(let e of c)e.y+=e.speed*r,e.x+=(e.drift+Math.sin(s*.9+e.phase)*14)*r,e.y>a+12&&Object.assign(e,{y:-12,x:T(0,i)}),t===`christmas`?Nf(n,e):Pf(n,e,s,t);for(let e of l)e.x+=e.speed*r,e.x<-60&&(e.x=i+60),e.x>i+60&&(e.x=-60),Ff(n,e.x,e.y+Math.sin(s*1.6+e.phase)*18,e.size*Math.sign(e.speed),Math.sin(s*14+e.phase));if(t===`august`){if(d-=r*1e3,d<=0){d=T(900,2600);let e=T(i*.12,i*.88),t=T(a*.16,a*.45),n=E(o);for(let r=0;r<46;r++){let i=r/46*Math.PI*2,a=T(60,150);u.push({x:e,y:t,vx:Math.cos(i)*a,vy:Math.sin(i)*a,age:0,life:T(1.1,1.8),color:n})}}n.globalCompositeOperation=`lighter`;for(let e=u.length-1;e>=0;e--){let t=u[e];t.age+=r,t.age>t.life?u.splice(e,1):(t.vx*=.985,t.vy=t.vy*.985+40*r,t.x+=t.vx*r,t.y+=t.vy*r,n.globalAlpha=.5*(1-t.age/t.life),n.fillStyle=t.color,n.beginPath(),n.arc(t.x,t.y,1.8,0,Math.PI*2),n.fill())}n.globalCompositeOperation=`source-over`,n.globalAlpha=1}this.raf=requestAnimationFrame(p)};this.raf=requestAnimationFrame(p)}ground(e){return e===`christmas`?g`
|
|
1158
|
+
<path d="M0 46Q35 34 70 44T140 46V80H0Z" fill="#cfdcec" />
|
|
1159
|
+
<path d="M0 54Q35 44 70 52T140 54V80H0Z" fill="#f4f8fc" />`:e===`halloween`?g`
|
|
1160
|
+
<path d="M0 52Q17 46 35 52T70 52T105 52T140 52V80H0Z" fill="#1d1220" />
|
|
1161
|
+
<path d="M20 52l3-9 2 9M90 52l2-7 3 7M120 52l-2-8 4 8" stroke="#2e2036" stroke-width="2" fill="none" />`:e===`easter`?g`
|
|
1162
|
+
<path d="M0 50Q17 42 35 50T70 50T105 50T140 50V80H0Z" fill="#4a8a3a" />
|
|
1163
|
+
<path d="M0 58Q17 52 35 58T70 58T105 58T140 58V80H0Z" fill="#5e9e4a" />
|
|
1164
|
+
${np.map(e=>g`<g transform=${`translate(${e+8} ${62+e%3*4})`}>
|
|
1165
|
+
${[1,2,3,4,5,6].map(e=>g`<circle cx=${Math.cos(e)*3} cy=${Math.sin(e)*3} r="2" fill="#fff" />`)}
|
|
1166
|
+
<circle r="1.6" fill="#ffd23f" />
|
|
1167
|
+
</g>`)}`:g`
|
|
1168
|
+
<rect y="22" width="140" height="30" fill="#1e8fa0" />
|
|
1169
|
+
<rect y="22" width="140" height="8" fill="#3ec1c9" />
|
|
1170
|
+
<path class="lk-scene-waves" d="M0 30Q17.5 25 35 30T70 30T105 30T140 30T175 30T210 30T245 30T280 30" stroke="#e8fbff" stroke-opacity=".7" stroke-width="1.5" fill="none" />
|
|
1171
|
+
<path d="M0 50Q35 44 70 50T140 50V80H0Z" fill="#e9c98a" />
|
|
1172
|
+
<path d="M0 50Q35 44 70 50T140 50" stroke="#fff6e0" stroke-opacity=".8" stroke-width="2" fill="none" />`}left(e){return e===`christmas`?g`
|
|
1173
|
+
<defs>
|
|
1174
|
+
<linearGradient id="lk-scene-fir" x1="0" x2="1"><stop offset="0" stop-color="#2f8a4e" /><stop offset="1" stop-color="#164226" /></linearGradient>
|
|
1175
|
+
</defs>
|
|
1176
|
+
<rect x="100" y="238" width="20" height="30" fill="#5a3418" />
|
|
1177
|
+
${qf.map(e=>g`<g>
|
|
1178
|
+
<path d=${e.d} fill="url(#lk-scene-fir)" />
|
|
1179
|
+
<path d=${e.snow} fill="none" stroke="#f4f8fc" stroke-width="4" stroke-linecap="round" opacity=".9" />
|
|
1180
|
+
</g>`)}
|
|
1181
|
+
${Yf.map(e=>g`<path d=${e} fill="none" stroke="#f3d488" stroke-opacity=".6" />`)}
|
|
1182
|
+
${Xf.map(e=>g`<circle cx=${e.x} cy=${e.y} r="6" fill=${e.color} />`)}
|
|
1183
|
+
${Xf.map(e=>g`<circle cx=${e.x-2} cy=${e.y-2} r="1.8" fill="#fff" opacity=".7" />`)}
|
|
1184
|
+
${Jf.map(e=>g`<circle class="lk-scene-light" cx=${e.x} cy=${e.y} r="2.6" fill=${e.color} style=${`--i: ${e.delay}`} />`)}
|
|
1185
|
+
<polygon class="lk-scene-star" points=${Kf} fill="#ffd86b" stroke="#fff4d6" stroke-width="1" />
|
|
1186
|
+
<rect x="26" y="240" width="40" height="30" fill="#c8202f" />
|
|
1187
|
+
<path d="M43 240h6v30h-6zM26 252h40v6h-40z" fill="#f3d488" />
|
|
1188
|
+
<path d="M46 240c-12-12-20 0 0 0M46 240c12-12 20 0 0 0" stroke="#f3d488" stroke-width="3" fill="none" />
|
|
1189
|
+
<rect x="152" y="246" width="38" height="24" fill="#1d3561" />
|
|
1190
|
+
<path d="M168 246h6v24h-6z" fill="#fff4d6" />`:e===`halloween`?g`
|
|
1191
|
+
<ellipse cx="34" cy="254" rx="26" ry="20" fill="#c95a14" />
|
|
1192
|
+
<ellipse cx="34" cy="254" rx="12" ry="20" fill="#de6f1e" />
|
|
1193
|
+
<path d="M32 236q1-8 7-11" stroke="#4a6b22" stroke-width="4" fill="none" stroke-linecap="round" />
|
|
1194
|
+
<ellipse cx="100" cy="228" rx="58" ry="44" fill="#d9661a" />
|
|
1195
|
+
<ellipse cx="100" cy="228" rx="36" ry="44" fill="#e57a24" />
|
|
1196
|
+
<ellipse cx="100" cy="228" rx="15" ry="44" fill="#f08d34" />
|
|
1197
|
+
<path d="M96 186q1-12 12-18l4 4q-8 6-8 16z" fill="#4a6b22" />
|
|
1198
|
+
<g class="lk-scene-flicker">
|
|
1199
|
+
<path d="M70 216l14-14 6 18zM130 216l-14-14-6 18zM100 224l-6 10h12zM66 240q34 26 68 0l-8 4-6-6-8 8-12-6-12 6-8-8-6 6z" fill="#ffd36e" />
|
|
1200
|
+
</g>
|
|
1201
|
+
<ellipse cx="178" cy="252" rx="32" ry="24" fill="#c95a14" />
|
|
1202
|
+
<ellipse cx="178" cy="252" rx="14" ry="24" fill="#de6f1e" />
|
|
1203
|
+
<path d="M176 230q2-9 9-12" stroke="#4a6b22" stroke-width="4" fill="none" stroke-linecap="round" />`:e===`easter`?g`
|
|
1204
|
+
<ellipse cx="96" cy="234" rx="48" ry="38" fill="#f5efe6" />
|
|
1205
|
+
<circle cx="50" cy="234" r="12" fill="#fffaf2" />
|
|
1206
|
+
<path d="M128 182Q116 118 132 114Q146 118 142 180Z" fill="#f5efe6" />
|
|
1207
|
+
<path d="M132 176Q124 128 133 124Q140 128 138 176Z" fill="#ffc8dd" />
|
|
1208
|
+
<path d="M148 182Q150 114 168 120Q176 132 158 184Z" fill="#ebe3d6" />
|
|
1209
|
+
<circle cx="142" cy="198" r="26" fill="#f5efe6" />
|
|
1210
|
+
<circle cx="152" cy="192" r="3.2" fill="#2a1a12" />
|
|
1211
|
+
<circle cx="166" cy="202" r="3" fill="#ff8fb1" />
|
|
1212
|
+
<path d="M160 206l18-2M160 209l17 4" stroke="#c9bb98" stroke-width="1" />
|
|
1213
|
+
<ellipse cx="124" cy="268" rx="24" ry="7" fill="#ebe3d6" />`:g`
|
|
1214
|
+
<defs><clipPath id="lk-scene-canopy"><path d="M30 122Q118 30 206 122Q184 112 162 122Q140 112 118 122Q96 112 74 122Q52 112 30 122Z" /></clipPath></defs>
|
|
1215
|
+
<line x1="118" y1="74" x2="112" y2="270" stroke="#f5f0e6" stroke-width="4" />
|
|
1216
|
+
<g transform="rotate(-8 118 100)">
|
|
1217
|
+
<g clip-path="url(#lk-scene-canopy)">
|
|
1218
|
+
<rect x="20" y="20" width="200" height="110" fill="#ff6f59" />
|
|
1219
|
+
<path d="M118 40L52 130H90ZM118 40L146 130H184Z" fill="#fff4e6" />
|
|
1220
|
+
</g>
|
|
1221
|
+
<circle cx="118" cy="72" r="4" fill="#fff4e6" />
|
|
1222
|
+
</g>
|
|
1223
|
+
<path d="M30 270L74 190M92 270L44 222M38 246H86" stroke="#8a5a2b" stroke-width="4" stroke-linecap="round" fill="none" />
|
|
1224
|
+
<path d="M72 196Q56 238 96 258" stroke="#3ec1c9" stroke-width="10" fill="none" />
|
|
1225
|
+
<path d="M72 196Q56 238 96 258" stroke="#fff4e6" stroke-width="10" stroke-dasharray="6 6" fill="none" />`}right(e){return e===`christmas`?g`
|
|
1226
|
+
<path d="M0 280Q40 262 90 268Q150 258 220 272V280Z" fill="#f4f8fc" />
|
|
1227
|
+
${Zf.map(e=>g`<g transform="translate(16 0)">
|
|
1228
|
+
<rect x=${e.x} y=${e.y} width=${e.width} height=${e.height} fill=${e.box} />
|
|
1229
|
+
<rect x=${e.x-4} y=${e.y-4} width=${e.width+8} height="11" fill=${e.lid} />
|
|
1230
|
+
<rect x=${e.x+e.width/2-4} y=${e.y-4} width="8" height=${e.height+4} fill=${e.ribbon} />
|
|
1231
|
+
<path d=${`M${e.x+e.width/2} ${e.y-4}c-14-14-22 0 0 0M${e.x+e.width/2} ${e.y-4}c14-14 22 0 0 0`} stroke=${e.ribbon} stroke-width="4" fill="none" />
|
|
1232
|
+
</g>`)}
|
|
1233
|
+
<path d="M214 270V204Q214 188 200 188Q186 188 186 200" stroke="#fff" stroke-width="8" fill="none" stroke-linecap="round" />
|
|
1234
|
+
<path d="M214 270V204Q214 188 200 188Q186 188 186 200" stroke="#c8202f" stroke-width="8" stroke-dasharray="6 6" fill="none" />`:e===`halloween`?g`
|
|
1235
|
+
${$f.map(e=>g`<g transform=${`translate(${e.x} ${e.y}) scale(${e.scale})`}>
|
|
1236
|
+
<path d="M62 210Q100 150 138 210" stroke="#1b1210" stroke-width="3" fill="none" />
|
|
1237
|
+
<circle cx="82" cy="180" r="9" fill="#ff5fa2" />
|
|
1238
|
+
<path d="M82 180m-5 0a5 5 0 1 1 10 0" stroke="#fff" stroke-width="1.5" fill="none" />
|
|
1239
|
+
<line x1="84" y1="188" x2="88" y2="206" stroke="#fff4e6" stroke-width="2" />
|
|
1240
|
+
${Qf.map(rp)}
|
|
1241
|
+
<path d="M60 210Q56 270 100 272Q144 270 140 210Z" fill="#e8781e" />
|
|
1242
|
+
<ellipse cx="100" cy="210" rx="40" ry="8" fill="#b5520f" />
|
|
1243
|
+
<path d="M80 228l8-8 4 10zM120 228l-8-8-4 10zM78 246q22 16 44 0l-6 3-5-4-6 5-5-5-5 5-6-5-5 4z" fill="#2a1208" />
|
|
1244
|
+
</g>`)}
|
|
1245
|
+
${ep.map(rp)}`:e===`easter`?g`
|
|
1246
|
+
<ellipse cx="44" cy="262" rx="11" ry="14" fill="#ffc8dd" transform="rotate(-24 44 262)" />
|
|
1247
|
+
<g transform="translate(34 0)">
|
|
1248
|
+
<path d="M50 222Q110 116 170 222" stroke="#9a6a32" stroke-width="8" fill="none" />
|
|
1249
|
+
${tp.map(e=>g`<g>
|
|
1250
|
+
<ellipse cx=${e.x} cy=${e.y} rx="13" ry="17" fill=${e.color} />
|
|
1251
|
+
<path d=${`M${e.x-13} ${e.y}q6.5-4 13 0t13 0`} stroke="#fff" stroke-width="2" fill="none" opacity=".85" />
|
|
1252
|
+
</g>`)}
|
|
1253
|
+
<path d="M40 220H180L166 272H54Z" fill="#b98544" />
|
|
1254
|
+
<path d="M44 234H176M48 248H172M52 262H168" stroke="#8a5a2b" stroke-width="2" />
|
|
1255
|
+
<path d="M40 220H180" stroke="#7fbf5a" stroke-width="5" stroke-dasharray="3 4" />
|
|
1256
|
+
</g>`:g`
|
|
1257
|
+
<g transform="translate(40 0)">
|
|
1258
|
+
<path d="M58 270V200h12v8h8v-8h12v8h8v-8h12v70Z" fill="#e2bd7a" />
|
|
1259
|
+
<path d="M44 270v-44h10v6h8v-6h10v44ZM110 270v-44h10v6h8v-6h10v44Z" fill="#d6ad68" />
|
|
1260
|
+
<path d="M80 270v-22a8 8 0 0 1 16 0v22Z" fill="#a8844c" />
|
|
1261
|
+
<line x1="88" y1="200" x2="88" y2="172" stroke="#8a5a2b" stroke-width="2" />
|
|
1262
|
+
<path d="M88 172l18 6-18 6z" fill="#ff6f59" />
|
|
1263
|
+
</g>
|
|
1264
|
+
<circle cx="196" cy="254" r="18" fill="#fff" />
|
|
1265
|
+
<path d="M196 236a18 18 0 0 1 0 36a10 18 0 0 0 0-36Z" fill="#ff6f59" />
|
|
1266
|
+
<path d="M196 236a18 18 0 0 0 0 36a10 18 0 0 1 0-36Z" fill="#3ec1c9" />
|
|
1267
|
+
<path d="M196 236a10 18 0 0 1 0 36a4 18 0 0 0 0-36Z" fill="#ffd23f" />`}festoon(e,t){return e===`christmas`?g`
|
|
1268
|
+
<path d=${Rf} class="lk-fes-fir" />
|
|
1269
|
+
<path d=${Rf} class="lk-fes-needles" />
|
|
1270
|
+
${Bf.map((e,t)=>g`<g transform=${`translate(${e.x} ${e.y})`}>
|
|
1271
|
+
<line y2="7" class="lk-fes-thread" />
|
|
1272
|
+
<circle cy="12" r="5" fill=${t===1?`#c8202f`:`#d4a94e`} />
|
|
1273
|
+
<circle cx="-1.6" cy="10.4" r="1.4" fill="#fff" opacity=".6" />
|
|
1274
|
+
</g>`)}
|
|
1275
|
+
${Hf.map((e,n)=>g`<circle cx=${e.x} cy=${e.y} r="1.8" class="lk-fes-light" style=${`--i: ${(t+n)%3}`} />`)}`:e===`halloween`?g`
|
|
1276
|
+
<path d=${Rf} class="lk-fes-string lk-fes-string--web" />
|
|
1277
|
+
<g transform=${`translate(${Bf[1].x} ${Bf[1].y})`}>
|
|
1278
|
+
<line y2="5" class="lk-fes-thread" />
|
|
1279
|
+
<ellipse cy="13" rx="9" ry="7.5" fill="#e0731f" />
|
|
1280
|
+
<path d="M-3 7.5Q0 13 -3 20.5M3 7.5Q0 13 3 20.5" fill="none" stroke="#a84a10" stroke-width="1" />
|
|
1281
|
+
<path d="M-1 4.5h2v2.5h-2z" fill="#3d5a1e" />
|
|
1282
|
+
<path d="M-5.5 10.5l2.2-2 1.2 2.4zM5.5 10.5l-2.2-2-1.2 2.4zM-5 15.5q5 3.5 10 0l-2 1.6-1.4-1-1.6 1.2-1.6-1.2-1.4 1z" class="lk-fes-glow" />
|
|
1283
|
+
</g>
|
|
1284
|
+
${[0,2].map(e=>g`<g transform=${`translate(${Bf[e].x} ${Bf[e].y+7}) scale(.5)`}>
|
|
1285
|
+
<line y1="-14" y2="-4" class="lk-fes-thread" />
|
|
1286
|
+
<path d="M0-4c-3 0-4 2-4 2-4-5-11-5-15-1 3 0 4 3 3 5 2-2 5-1 6 1 1-2 4-3 6-1 0 2 2 4 4 4s4-2 4-4c2-2 5-1 6 1 1-2 4-3 6-1-1-2 0-5 3-5-4-4-11-4-15 1 0 0-1-2-4-2z" fill="#5a2f78" stroke="#c48bff" stroke-opacity=".6" stroke-width="1.2" />
|
|
1287
|
+
</g>`)}`:e===`easter`?g`
|
|
1288
|
+
<path d=${Rf} class="lk-fes-ribbon" />
|
|
1289
|
+
${Bf.map((e,n)=>g`<g transform=${`translate(${e.x} ${e.y})`}>
|
|
1290
|
+
<line y2="5" class="lk-fes-thread" />
|
|
1291
|
+
<ellipse cy="13" rx="6" ry="8" fill=${Uf[(t+n)%3]} />
|
|
1292
|
+
<path d="M-6 12q3-2.4 6 0t6 0" fill="none" stroke="#fff" stroke-width="1.4" opacity=".85" />
|
|
1293
|
+
${[-3,0,3].map(e=>g`<circle cx=${e} cy="17" r=".9" fill="#fff" opacity=".85" />`)}
|
|
1294
|
+
</g>`)}`:g`
|
|
1295
|
+
<path d=${Rf} class="lk-fes-string" />
|
|
1296
|
+
${Vf.map((e,t)=>g`<path d=${`M${e.x-6} ${e.y}h12l-6 13z`} fill=${Wf[t]} transform=${`rotate(${(2.5-t)*6} ${e.x} ${e.y})`} />`)}`}render(){let e=this.theme,t=Lf.length*If;return h`
|
|
1297
|
+
<canvas class="lk-theme-sky" aria-hidden="true"></canvas>
|
|
1298
|
+
<div class="lk-scene lk-scene--${e}" aria-hidden="true">
|
|
1299
|
+
<div class="lk-scene-ground">
|
|
1300
|
+
<svg viewBox="0 0 ${t} 80" width=${t} height="80" preserveAspectRatio="xMinYMax meet">
|
|
1301
|
+
${Lf.map(t=>g`<g transform=${`translate(${t} 0)`}>${this.ground(e)}</g>`)}
|
|
1302
|
+
</svg>
|
|
1303
|
+
</div>
|
|
1304
|
+
|
|
1305
|
+
${e===`august`?h`<svg class="lk-scene-sun" viewBox="-70 -70 140 140">
|
|
1306
|
+
<defs>
|
|
1307
|
+
<radialGradient id="lk-scene-sun"><stop offset="0" stop-color="#fff6c8" /><stop offset=".6" stop-color="#ffd23f" /><stop offset="1" stop-color="#ff9f2e" /></radialGradient>
|
|
1308
|
+
</defs>
|
|
1309
|
+
<g class="lk-scene-rays">${[1,2,3,4,5,6,7,8,9,10,11,12].map(e=>g`<path d="M-4-40L0-64L4-40Z" fill="#ffd23f" transform=${`rotate(${e*30})`} />`)}</g>
|
|
1310
|
+
<circle r="34" fill="url(#lk-scene-sun)" />
|
|
1311
|
+
</svg>`:_}
|
|
1312
|
+
|
|
1313
|
+
<svg class="lk-scene-side lk-scene-side--left" viewBox="0 0 220 280">${this.left(e)}</svg>
|
|
1314
|
+
<svg class="lk-scene-side lk-scene-side--right" viewBox="0 0 220 280">${this.right(e)}</svg>
|
|
1315
|
+
</div>
|
|
1316
|
+
<div class="lk-festoon lk-festoon--${e}" aria-hidden="true">
|
|
1317
|
+
<svg viewBox="0 0 ${t} 40" width=${t} height="40">
|
|
1318
|
+
${Lf.map((t,n)=>g`<g transform=${`translate(${t} 0)`}>${this.festoon(e,n)}</g>`)}
|
|
1319
|
+
</svg>
|
|
1320
|
+
</div>
|
|
1321
|
+
`}},L([b({attribute:!1})],ip.prototype,`theme`,void 0),L([S(`.lk-theme-sky`)],ip.prototype,`canvas`,void 0),ip=L([y(`fl-theme`)],ip)})),op,sp=n((()=>{Wr(),fi(),Ci(),op=ui(class extends di{constructor(e){if(super(e),e.type!==li.PROPERTY&&e.type!==li.ATTRIBUTE&&e.type!==li.BOOLEAN_ATTRIBUTE)throw Error("The `live` directive is not allowed on child or event bindings");if(!hi(e))throw Error("`live` bindings can only contain a single expression")}render(e){return e}update(e,[t]){if(t===kr||t===_)return t;let n=e.element,r=e.name;if(e.type===li.PROPERTY){if(t===n[r])return kr}else if(e.type===li.BOOLEAN_ATTRIBUTE){if(!!t===n.hasAttribute(r))return kr}else if(e.type===li.ATTRIBUTE&&n.getAttribute(r)===t+``)return kr;return bi(e),t}})})),cp=n((()=>{sp()}));function lp(e){let t=e.indexOf(`:`);return{tier:e.slice(0,t),award:e.slice(t+1)||null}}async function up(e,t){let n=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(e));return[...new Uint8Array(n)].map(e=>e.toString(16).padStart(2,`0`)).join(``)===t.toLowerCase()}var dp,fp,pp,mp,X,hp,gp,Z,_p,vp=n((()=>{N(),dp=[`automatic`,`loss`,`win`,`jackpot`],fp={wheel:[`segment`,`booster`,`prize`],slot:[`combination`,`prize`],roulette:[`number`,`storm`],pachinko:[`pocket`,`violet`],scratch:[`award`,`prize`],blackjack:[`prize`],holdem:[`prize`]},pp=[`segment`,`combination`,`number`,`pocket`,`award`],mp={},X={prizes:[]},hp=()=>({multiplier:void 0,variant:void 0,result:`automatic`,advanced:{}}),gp={slot:os,scratch:as},Z=e=>mp[e]??hp(),_p={none:`none`,pair:`small`,logos:`big`,sevens:`big`,infinities:`jackpot`}}));function yp(e,t){let{result:n,advanced:r}=Z(e);if(e===`wheel`&&r.segment){let e=r.segment.split(`:`)[0];return e===`coin`||e===`hunt`||e===`pachinko`?t()===`big`?`big`:`small`:e}return e===`slot`&&r.combination?_p[r.combination]:e===`pachinko`&&r.pocket?Ou[Number(r.pocket)-1]:e===`scratch`&&r.award?lp(r.award).tier:xp[n]??t()}function bp(e,t){let n=Math.min(...e.map(e=>e.x))+16,r=Math.max(...e.map(e=>e.x))-16,i=(n+r)/2;return[...new Set(e.map(e=>e.y))].sort((e,t)=>e-t).slice(1,1+t).flatMap(t=>{let a=Math.max(n,Math.min(r,i+T(-25,25))),o=e.filter(e=>e.y===t).sort((e,t)=>Math.abs(e.x-a)-Math.abs(t.x-a))[0];return o?(i=o.x,[o]):[]})}var xp,Sp,Cp,wp,Tp=n((()=>{A(),Mu(),k(),ml(),Vs(),vp(),xp={automatic:void 0,loss:`none`,win:`small`,jackpot:`jackpot`},Sp=Ou.indexOf(`jackpot`),Cp=()=>Z(`pachinko`).result===`jackpot`&&!Z(`pachinko`).advanced.pocket,wp={boost:({game:e},t)=>Z(e).multiplier??t(),tier:({game:e},t)=>yp(e,t),prize:({game:e,prizeIds:t},n)=>{let{prize:r,award:i}=Z(e).advanced;if(r&&t.includes(r))return r;if(e!==`scratch`||!i)return n();let{tier:a,award:o}=lp(i),s=go(X.prizes.filter(({id:e})=>t.includes(e)),a,o);return s.length?E(s).id:n()},"wheel.segment":({segments:e},t)=>{let n=Z(`wheel`).advanced.segment,r=n?e.flatMap((e,t)=>zs(e)===n?[t]:[]):[];return r.length?E(r):t()},"wheel.booster":({segments:e},t)=>{let n=Z(`wheel`).advanced.booster;return n&&Bs(e).includes(n)?n:t()},"slot.line":({prizeId:e},t)=>{let{combination:n}=Z(`slot`).advanced,r=n===`logos`?e:n===`sevens`?`seven`:void 0;return r?[r,r,r]:t()},"roulette.number":({bets:e,storm:t,boost:n},r)=>{let{result:i,advanced:a}=Z(`roulette`);if(a.number)return Number(a.number);let o=xp[i];if(!o&&!a.storm)return r();let s=tl.filter(n=>{let r=el(e,n)?.tier??`none`;return(!o||(o===`small`?r!==`none`:r===o))&&(!a.storm||t.includes(n)===(a.storm===`hit`))});return s.length?E(s.flatMap(e=>Array(t.includes(e)?n:1).fill(e))):r()},"pachinko.board":({pegs:e},t)=>{let n=t();if(!Cp())return n;let[r,i]=ku,a=e=>e.y>=r&&e.y<=i;if(Z(`pachinko`).advanced.violet===`hit`){let t=bp(e,9),n=E(t.filter(a));return{violet:n,reds:t.filter(e=>e!==n)}}let o=bp(e,8),s=e.filter(e=>!o.includes(e)&&a(e));return{violet:s.includes(n.violet)?n.violet:E(s),reds:o}},"pachinko.route":({violet:e,reds:t},n)=>{let{violet:r}=Z(`pachinko`).advanced;return!Cp()&&!r?n():{through:[...Cp()?t:[],...r===`hit`?[e]:[]].sort((e,t)=>e.y-t.y),avoid:r===`miss`?[e]:[]}},"pachinko.wins":(e,t)=>{let n=xp[Z(`pachinko`).result];return n?n!==`none`:t()},"pachinko.pocket":(e,t)=>{let{pocket:n}=Z(`pachinko`).advanced;return n?Number(n)-1:Cp()?Sp:t()},"scratch.ticket":(e,t)=>Z(`scratch`).variant??t(),locale:(e,t)=>X.locale??t(),dealer:({count:e},t)=>X.dealer===void 0?t():X.dealer===`none`?null:X.dealer<e?X.dealer:t(),theme:(e,t)=>X.theme===void 0?t():X.theme===`none`?null:X.theme,"slot.machine":(e,t)=>Z(`slot`).variant??t(),"breakaway.tackle":(e,t)=>xp[Z(`slot`).result]&&xp[Z(`slot`).result]!==`none`?null:t(),"scratch.award":(e,t)=>{let{award:n}=Z(`scratch`).advanced;return n?lp(n).award:t()}}})),Ep=r({Developer:()=>Q}),Dp,Op,kp,Ap,Q,jp=n((()=>{v(),C(),Ei(),cp(),w(),A(),Mu(),ko(),Xo(),N(),Vs(),B(),H(),Tp(),vp(),R(),Dp=`feeling-lucky.developer`,Op=8,kp=[`small`,`big`,`coin`,`hunt`,`pachinko`,`jackpot`],Ap=!1,Q=class extends z{constructor(){super(),this.open=!0,this.unlocked=Ap,this.password=``,this.wrong=!1,this.minimized=!1,this.position={x:innerWidth-416-16,y:108},this.selected=`wheel`,this.draft=hp(),this.loads=0,this.advancedOpen=!1,this.drag=null,this.dragged=!1,this.lastFocus=null,this.grab=e=>{if(e.button!==0||!this.minimized&&e.target.closest(`button`))return;let t=this.box.getBoundingClientRect();this.drag={offsetX:e.clientX-t.left,offsetY:e.clientY-t.top,startX:e.clientX,startY:e.clientY},this.dragged=!1,e.currentTarget.setPointerCapture(e.pointerId)},this.move=e=>{this.drag&&(!this.dragged&&Math.hypot(e.clientX-this.drag.startX,e.clientY-this.drag.startY)<4||(this.dragged=!0,this.place(e.clientX-this.drag.offsetX,e.clientY-this.drag.offsetY)))},this.release=()=>{this.drag&&this.dragged&&this.save(),this.drag=null},this.restore=()=>{this.dragged?this.dragged=!1:this.minimize(!1)},this.unlock=async e=>{e.preventDefault();let t=this.password;this.password=``,this.wrong=!await up(t,this.passwordHash??``),!this.wrong&&(this.grant(),this.focusFirst())},this.apply=()=>{let e=Object.fromEntries(Object.entries(this.draft.advanced).filter(([,e])=>e!==void 0));this.draft.multiplier!==void 0||this.draft.variant!==void 0||this.draft.result!==`automatic`||Object.keys(e).length?mp[this.selected]={...this.draft,advanced:e}:delete mp[this.selected],wo(this.selected)},this.reset=()=>{for(let e of ns)delete mp[e];this.load(this.selected),wo(this.selected)},this.toggle=()=>{this.open=!this.open,this.open?(this.lastFocus=this.activeElement,this.focusFirst()):this.lastFocus instanceof HTMLElement&&this.lastFocus.isConnected&&this.lastFocus.focus()},this.shortcut=e=>{e.ctrlKey&&e.shiftKey&&e.code===`KeyL`&&(e.preventDefault(),e.stopPropagation(),e.repeat||this.toggle())},this.keydown=e=>{e.stopPropagation(),e.key===`Escape`&&this.toggle()},this.fit=()=>this.place(this.position.x,this.position.y),this.segmentOption=e=>{if(e===`none`)return{value:e,label:this.t(`developer.option.nothing`)};if(e===`jackpot`)return{value:e,label:this.t(`developer.jackpot`)};if(e===`coin`||e===`hunt`||e===`pachinko`)return{value:e,label:this.t(`wheel.segment.${e}`)};let{tier:t,award:n}=lp(e);return{value:e,label:this.awardLabel(t,n)}},this.selectGame=e=>{this.selected=e.target.value,this.load(this.selected)};try{let e=JSON.parse(localStorage.getItem(Dp)??`null`);e&&(this.position={x:e.x,y:e.y},this.minimized=e.minimized)}catch{}this.load(this.selected)}willUpdate(){X.prizes=this.room.prizes,!this.unlocked&&this.passwordHash===void 0&&this.grant()}get activeElement(){return this.getRootNode().activeElement}load(e){this.draft=structuredClone(Z(e)),this.loads++}save(){try{localStorage.setItem(Dp,JSON.stringify({...this.position,minimized:this.minimized}))}catch{}}place(e,t){let n=this.box?.offsetWidth??0,r=this.box?.offsetHeight??0;this.position={x:Math.max(Op,Math.min(innerWidth-n-Op,e)),y:Math.max(Op,Math.min(innerHeight-r-Op,t))}}async focusFirst(){await this.updateComplete,this.place(this.position.x,this.position.y),(this.minimized&&this.unlocked?this.iconButton:this.first)?.focus()}minimize(e){this.minimized=e,this.save(),this.focusFirst()}grant(){Co(wp),this.unlocked=Ap=!0}setLanguage(e){X.locale=e||void 0,Oo.value++}setDealer(e){X.dealer=e===``?void 0:e===`none`?`none`:Number(e),Oo.value++,this.requestUpdate()}setTheme(e){X.theme=e||void 0,Oo.value++,this.requestUpdate()}connectedCallback(){super.connectedCallback(),this.lastFocus=this.activeElement,addEventListener(`keydown`,this.shortcut,!0),addEventListener(`resize`,this.fit)}firstUpdated(){this.focusFirst()}disconnectedCallback(){super.disconnectedCallback(),removeEventListener(`keydown`,this.shortcut,!0),removeEventListener(`resize`,this.fit)}awardLabel(e,t){return this.t(`developer.option.award`,{tier:this.t(`tier.${e}`),award:this.room.award(e,t)})}options(e){let t=(e,t)=>[{value:`hit`,label:this.t(`developer.option.${e}`)},{value:`miss`,label:this.t(`developer.option.${t}`)}],n=()=>Bs(js(this.room.board)).sort((e,t)=>kp.indexOf(e.split(`:`)[0])-kp.indexOf(t.split(`:`)[0]));switch(e){case`segment`:return[`none`,...n()].map(this.segmentOption);case`booster`:return n().map(this.segmentOption);case`prize`:return this.room.prizes.map(e=>({value:e.id,label:e.name}));case`combination`:return[`none`,`pair`,`logos`,`sevens`,`infinities`].map(e=>({value:e,label:this.t(`developer.option.${e}`)}));case`number`:return Array.from({length:37},(e,t)=>({value:String(t),label:String(t)}));case`storm`:return t(`lands`,`misses`);case`violet`:return t(`hit`,`miss`);case`pocket`:return Ou.map((e,t)=>({value:String(t+1),label:this.t(`developer.option.pocket`,{n:t+1})}));case`award`:return vo.flatMap(e=>this.room.board[e].map(t=>({value:So(e,t),label:this.awardLabel(e,t)})))}}change(e,t){this.draft={...this.draft,[e]:t}}changeAdvanced(e,t){this.draft={...this.draft,advanced:{...this.draft.advanced,[e]:t||void 0}}}choices(e,t,n){return h`<option value="" ?selected=${t===void 0}>${n}</option>
|
|
1322
|
+
${e.map(e=>h`<option value=${e.value} ?selected=${e.value===t}>${e.label}</option>`)}`}renderBody(){if(!this.unlocked)return h`<form class="lk-dev-body" @submit=${this.unlock}>
|
|
1323
|
+
<label class="lk-dev-row">${this.t(`developer.password`)}
|
|
1324
|
+
<input
|
|
1325
|
+
data-first
|
|
1326
|
+
type="password"
|
|
1327
|
+
autocomplete="off"
|
|
1328
|
+
.value=${op(this.password)}
|
|
1329
|
+
aria-invalid=${this.wrong}
|
|
1330
|
+
aria-describedby=${this.wrong?`lk-dev-wrong`:_}
|
|
1331
|
+
@input=${e=>{this.password=e.target.value,this.wrong=!1}}
|
|
1332
|
+
/>
|
|
1333
|
+
</label>
|
|
1334
|
+
${this.wrong?h`<p id="lk-dev-wrong" class="lk-dev-error" role="alert">${this.t(`developer.wrongPassword`)}</p>`:_}
|
|
1335
|
+
<footer>
|
|
1336
|
+
<button type="submit" class="is-primary" ?disabled=${!this.password}>${V(ka)}${this.t(`developer.unlock`)}</button>
|
|
1337
|
+
</footer>
|
|
1338
|
+
</form>`;let{selected:e,draft:t}=this,n=fp[e].find(e=>pp.includes(e)&&t.advanced[e]!==void 0),r=gp[e],i=e=>e.target.value;return h`<div class="lk-dev-body">
|
|
1339
|
+
<p class="lk-dev-hint">${this.t(`developer.hint`)}</p>
|
|
1340
|
+
<label class="lk-dev-row">${this.t(`developer.theme`)}
|
|
1341
|
+
<select data-first @change=${e=>this.setTheme(i(e))}>
|
|
1342
|
+
${this.choices([{value:`none`,label:this.t(`developer.noTheme`)},...Ho.map(e=>({value:e,label:this.t(`themes.${e}.name`)}))],X.theme,this.t(`developer.calendar`))}
|
|
1343
|
+
</select>
|
|
1344
|
+
</label>
|
|
1345
|
+
<label class="lk-dev-row">${this.t(`developer.language`)}
|
|
1346
|
+
<select @change=${e=>this.setLanguage(i(e))}>
|
|
1347
|
+
${this.choices(this.room.locales.map(e=>({value:e,label:new Intl.DisplayNames([e],{type:`language`}).of(e)??e})),X.locale,this.t(`developer.autoLanguage`))}
|
|
1348
|
+
</select>
|
|
1349
|
+
</label>
|
|
1350
|
+
${this.room.dealers.length?h`<label class="lk-dev-row">${this.t(`developer.dealer`)}
|
|
1351
|
+
<select @change=${e=>this.setDealer(i(e))}>
|
|
1352
|
+
${this.choices([{value:`none`,label:this.t(`developer.dealerAbsent`)},...this.room.dealers.map((e,t)=>({value:String(t),label:e.name??this.t(`developer.dealerNumber`,{n:t+1})}))],X.dealer===void 0?void 0:String(X.dealer),this.t(`developer.dealerShifts`))}
|
|
1353
|
+
</select>
|
|
1354
|
+
</label>`:_}
|
|
1355
|
+
<label class="lk-dev-row">${this.t(`developer.game`)}
|
|
1356
|
+
<select @change=${this.selectGame}>
|
|
1357
|
+
${ns.map(t=>h`<option value=${t} ?selected=${t===e}>${this.t(`games.${t}.name`)}</option>`)}
|
|
1358
|
+
</select>
|
|
1359
|
+
</label>
|
|
1360
|
+
${wi(this.loads,h`<label class="lk-dev-row">${this.t(`developer.multiplier`)}
|
|
1361
|
+
<select @change=${e=>this.change(`multiplier`,Number(i(e))||void 0)}>
|
|
1362
|
+
${this.choices([1,2,3,4,5].map(e=>({value:String(e),label:`×${e}`})),t.multiplier?.toString(),this.t(`developer.daily`))}
|
|
1363
|
+
</select>
|
|
1364
|
+
</label>
|
|
1365
|
+
${r?h`<label class="lk-dev-row">${this.t(`developer.variant.${e}`)}
|
|
1366
|
+
<select @change=${e=>this.change(`variant`,i(e)||void 0)}>
|
|
1367
|
+
${this.choices(r.map(t=>({value:t,label:this.t(`${e}.names.${t}`)})),t.variant,this.t(`developer.daily`))}
|
|
1368
|
+
</select>
|
|
1369
|
+
</label>`:_}
|
|
1370
|
+
<label class="lk-dev-row">${this.t(`developer.result`)}
|
|
1371
|
+
<select ?disabled=${!!n} @change=${e=>this.change(`result`,i(e))}>
|
|
1372
|
+
${dp.map(e=>h`<option value=${e} ?selected=${e===t.result}>${this.t(`developer.${e}`)}</option>`)}
|
|
1373
|
+
</select>
|
|
1374
|
+
</label>
|
|
1375
|
+
${n?h`<p class="lk-dev-note">${this.t(`developer.decidedBy`,{field:this.t(`developer.field.${n}`)})}</p>`:_}
|
|
1376
|
+
|
|
1377
|
+
<details
|
|
1378
|
+
class="lk-dev-advanced"
|
|
1379
|
+
?open=${this.advancedOpen||fp[e].some(e=>t.advanced[e]!==void 0)}
|
|
1380
|
+
@toggle=${e=>this.advancedOpen=e.target.open}
|
|
1381
|
+
>
|
|
1382
|
+
<summary>${V(Vi)}${this.t(`developer.advanced`)}</summary>
|
|
1383
|
+
${fp[e].map(e=>h`<label class="lk-dev-row">${this.t(`developer.field.${e}`)}
|
|
1384
|
+
<select @change=${t=>this.changeAdvanced(e,i(t))}>
|
|
1385
|
+
${this.choices(this.options(e),t.advanced[e],this.t(`developer.automatic`))}
|
|
1386
|
+
</select>
|
|
1387
|
+
</label>`)}
|
|
1388
|
+
<p class="lk-dev-note">${this.t(`developer.about.${e}`)}</p>
|
|
1389
|
+
</details>`)}
|
|
1390
|
+
|
|
1391
|
+
<footer>
|
|
1392
|
+
<button type="button" @click=${this.reset}>${V(Va)}${this.t(`developer.reset`)}</button>
|
|
1393
|
+
<button type="button" class="is-primary" @click=${this.apply}>${V(zi)}${this.t(`developer.apply`)}</button>
|
|
1394
|
+
</footer>
|
|
1395
|
+
</div>`}render(){if(!this.open)return _;let e=this.unlocked&&this.minimized;return h`<div class="lk-dev ${e?`is-icon`:``}" style="left: ${this.position.x}px; top: ${this.position.y}px" @keydown=${this.keydown}>
|
|
1396
|
+
${e?h`<button
|
|
1397
|
+
type="button"
|
|
1398
|
+
class="lk-dev-icon"
|
|
1399
|
+
aria-label=${this.t(`developer.restore`)}
|
|
1400
|
+
title=${this.t(`developer.restore`)}
|
|
1401
|
+
@pointerdown=${this.grab}
|
|
1402
|
+
@pointermove=${this.move}
|
|
1403
|
+
@pointerup=${this.release}
|
|
1404
|
+
@pointercancel=${this.release}
|
|
1405
|
+
@click=${this.restore}
|
|
1406
|
+
>
|
|
1407
|
+
${V(ta)}
|
|
1408
|
+
</button>`:h`<section class="lk-dev-panel" aria-label=${this.t(`developer.title`)}>
|
|
1409
|
+
<header @pointerdown=${this.grab} @pointermove=${this.move} @pointerup=${this.release} @pointercancel=${this.release}>
|
|
1410
|
+
${V(_a,`lk-dev-grip`)}
|
|
1411
|
+
<strong>${V(ta)}${this.t(`developer.title`)}</strong>
|
|
1412
|
+
${this.unlocked?h`<button type="button" aria-label=${this.t(`developer.minimize`)} title=${this.t(`developer.minimize`)} @click=${()=>this.minimize(!0)}>
|
|
1413
|
+
${V(Na)}
|
|
1414
|
+
</button>`:_}
|
|
1415
|
+
<button type="button" aria-label=${this.t(`developer.close`)} title=${this.t(`developer.close`)} @click=${this.toggle}>${V(so)}</button>
|
|
1416
|
+
</header>
|
|
1417
|
+
${this.renderBody()}
|
|
1418
|
+
</section>`}
|
|
1419
|
+
</div>`}},L([b({attribute:!1})],Q.prototype,`passwordHash`,void 0),L([x()],Q.prototype,`open`,void 0),L([x()],Q.prototype,`unlocked`,void 0),L([x()],Q.prototype,`password`,void 0),L([x()],Q.prototype,`wrong`,void 0),L([x()],Q.prototype,`minimized`,void 0),L([x()],Q.prototype,`position`,void 0),L([x()],Q.prototype,`selected`,void 0),L([x()],Q.prototype,`draft`,void 0),L([x()],Q.prototype,`loads`,void 0),L([x()],Q.prototype,`advancedOpen`,void 0),L([S(`.lk-dev`)],Q.prototype,`box`,void 0),L([S(`.lk-dev [data-first]`)],Q.prototype,`first`,void 0),L([S(`.lk-dev-icon`)],Q.prototype,`iconButton`,void 0),Q=L([y(`fl-developer`)],Q)})),Mp,Np,Pp,$,Fp=n((()=>{Mn(),v(),C(),Ei(),Pi(),w(),A(),k(),Ro(),ko(),Xo(),N(),hs(),xs(),Zt(),B(),H(),F(),ks(),As(),zt(),sf(),uf(),Mf(),ap(),R(),Mp={wheel:`fl-wheel`,slot:`fl-slot`,roulette:`fl-roulette`,pachinko:`fl-pachinko`,scratch:`fl-scratch`,blackjack:`fl-blackjack`,holdem:`fl-holdem`},Np=e=>e===`slot`&&M(`slot`)>1?us()===`takeoff`?`fl-takeoff`:`fl-breakaway`:Mp[e],Pp=vs(700,450,1.4),$=class extends z{constructor(){super(),this.origin={x:innerWidth/2,y:innerHeight/2},this.phase=`closed`,this.view=`lobby`,this.lobbyPage=0,this.options={},this.round=0,this.certificate=null,this.banner=null,this.celebrating=null,this.soundOn=U.enabled,this.developerLoaded=!1,this.lightsFrame=0,this.dutyCheck=-1,this.dutyClock=0,this.ambient=0,this.boost=0,this.onKey=e=>{this.config.developer&&!this.developerLoaded&&e.ctrlKey&&e.shiftKey&&e.code===`KeyL`?(e.preventDefault(),e.stopPropagation(),Promise.resolve().then(()=>(jp(),Ep)).then(()=>this.developerLoaded=!0)):e.key!==`Escape`||this.banner||(this.certificate?this.certificate=null:this.view===`lobby`?this.close():this.go(`lobby`))},this.previousOverflow=``,this.watch(Kt,Do,Oo,Lo)}get theme(){return Ko()}willUpdate(e){let t=this.locale();Yt(t)||Xt(t).then(()=>this.requestUpdate(),()=>void 0),(e.has(`config`)||this.dutyCheck!==Oo.value)&&(Io.value=this.dealers.length,this.dutyCheck=Oo.value,Mo()),(!this.room||Yt(t)&&(e.has(`config`)||this.room.locale!==t))&&(this.room=this.context()),I.confetti=this.theme?qo[this.theme].confetti:void 0;let n=Do.value;n&&(Do.value=void 0,this.banner=null,this.celebrating=null,this.boost=0,this.go(n.game))}get dealers(){return this.config.dealers??[{image:`data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20900%20735'%3e%3cdefs%3e%3clinearGradient%20id='skin'%20x1='0'%20y1='0'%20x2='0'%20y2='1'%3e%3cstop%20offset='0'%20stop-color='%23f1c6a8'/%3e%3cstop%20offset='1'%20stop-color='%23e0a888'/%3e%3c/linearGradient%3e%3clinearGradient%20id='shirt'%20x1='0'%20y1='0'%20x2='0'%20y2='1'%3e%3cstop%20offset='0'%20stop-color='%23fbf7f0'/%3e%3cstop%20offset='1'%20stop-color='%23e6ddd0'/%3e%3c/linearGradient%3e%3clinearGradient%20id='vest'%20x1='0'%20y1='0'%20x2='1'%20y2='1'%3e%3cstop%20offset='0'%20stop-color='%237e1a26'/%3e%3cstop%20offset='1'%20stop-color='%234c0d16'/%3e%3c/linearGradient%3e%3clinearGradient%20id='hair'%20x1='0'%20y1='0'%20x2='0'%20y2='1'%3e%3cstop%20offset='0'%20stop-color='%235a2f1f'/%3e%3cstop%20offset='1'%20stop-color='%232e1710'/%3e%3c/linearGradient%3e%3c/defs%3e%3c!--%20bun%20behind%20the%20head%20--%3e%3cellipse%20cx='450'%20cy='58'%20rx='62'%20ry='50'%20fill='url(%23hair)'/%3e%3c!--%20shoulders%20and%20sleeves%20--%3e%3cpath%20d='M248%20350%20Q300%20318%20372%20308%20L528%20308%20Q600%20318%20652%20350%20Q706%20388%20716%20480%20L790%20640%20Q735%20668%20690%20640%20L640%20700%20L260%20700%20L210%20640%20Q165%20668%20110%20640%20L184%20480%20Q194%20388%20248%20350Z'%20fill='url(%23shirt)'/%3e%3cpath%20d='M262%20600%20Q246%20470%20292%20380%20M638%20600%20Q654%20470%20608%20380'%20fill='none'%20stroke='%23d9cdbd'%20stroke-width='5'/%3e%3c!--%20vest%20--%3e%3cpath%20d='M300%20340%20L405%20330%20L450%20520%20L495%20330%20L600%20340%20Q640%20420%20634%20600%20L640%20700%20L260%20700%20L266%20600%20Q260%20420%20300%20340Z'%20fill='url(%23vest)'/%3e%3cpath%20d='M405%20330%20L450%20520%20L495%20330'%20fill='none'%20stroke='%23d4a94e'%20stroke-width='6'%20stroke-linejoin='round'/%3e%3cpath%20d='M300%20340%20Q262%20420%20266%20600%20M600%20340%20Q638%20420%20634%20600'%20fill='none'%20stroke='%23d4a94e'%20stroke-width='4'%20opacity='.7'/%3e%3ccircle%20cx='450'%20cy='545'%20r='7'%20fill='%23e2bd63'/%3e%3ccircle%20cx='450'%20cy='580'%20r='7'%20fill='%23e2bd63'/%3e%3c!--%20shirt%20front%20and%20collar%20--%3e%3cpath%20d='M405%20330%20L450%20520%20L495%20330%20Z'%20fill='url(%23shirt)'/%3e%3cpath%20d='M392%20300%20L450%20340%20L508%20300%20L520%20330%20L450%20370%20L380%20330%20Z'%20fill='%23fffdf8'%20stroke='%23d9cdbd'%20stroke-width='3'/%3e%3c!--%20neck%20--%3e%3cpath%20d='M410%20250%20L410%20312%20Q450%20336%20490%20312%20L490%20250%20Z'%20fill='url(%23skin)'/%3e%3cpath%20d='M410%20296%20Q450%20318%20490%20296'%20fill='none'%20stroke='%23c98d70'%20stroke-width='3'%20opacity='.6'/%3e%3c!--%20bow%20tie%20--%3e%3cpath%20d='M450%20330%20L404%20306%20L404%20354%20Z%20M450%20330%20L496%20306%20L496%20354%20Z'%20fill='%2317120e'/%3e%3crect%20x='438'%20y='318'%20width='24'%20height='24'%20rx='6'%20fill='%232a211b'/%3e%3c!--%20head%20--%3e%3cellipse%20cx='450'%20cy='172'%20rx='92'%20ry='112'%20fill='url(%23skin)'/%3e%3cellipse%20cx='358'%20cy='182'%20rx='14'%20ry='24'%20fill='%23e7b293'/%3e%3cellipse%20cx='542'%20cy='182'%20rx='14'%20ry='24'%20fill='%23e7b293'/%3e%3ccircle%20cx='356'%20cy='214'%20r='6'%20fill='%23e2bd63'/%3e%3ccircle%20cx='544'%20cy='214'%20r='6'%20fill='%23e2bd63'/%3e%3c!--%20hair,%20swept%20back%20with%20a%20side%20part%20--%3e%3cpath%20d='M352%20196%20Q340%2070%20450%2056%20Q562%2062%20548%20196%20Q540%20120%20504%20100%20Q452%20136%20378%20122%20Q360%20150%20352%20196Z'%20fill='url(%23hair)'/%3e%3cpath%20d='M420%2066%20Q470%2064%20520%2096'%20fill='none'%20stroke='%237a4a33'%20stroke-width='5'%20stroke-linecap='round'/%3e%3c!--%20face%20--%3e%3cpath%20d='M392%20158%20Q410%20148%20428%20156%20M472%20156%20Q490%20148%20508%20158'%20fill='none'%20stroke='%233a2016'%20stroke-width='6'%20stroke-linecap='round'/%3e%3cpath%20d='M396%20184%20Q410%20174%20426%20184%20Q410%20192%20396%20184Z%20M474%20184%20Q490%20174%20504%20184%20Q490%20192%20474%20184Z'%20fill='%232a1a12'/%3e%3ccircle%20cx='413'%20cy='182'%20r='3'%20fill='%23fff'%20opacity='.8'/%3e%3ccircle%20cx='491'%20cy='182'%20r='3'%20fill='%23fff'%20opacity='.8'/%3e%3cpath%20d='M450%20192%20Q444%20222%20452%20232'%20fill='none'%20stroke='%23c98d70'%20stroke-width='4'%20stroke-linecap='round'/%3e%3cellipse%20cx='402'%20cy='218'%20rx='20'%20ry='11'%20fill='%23e88f80'%20opacity='.28'/%3e%3cellipse%20cx='498'%20cy='218'%20rx='20'%20ry='11'%20fill='%23e88f80'%20opacity='.28'/%3e%3cpath%20d='M424%20250%20Q450%20262%20476%20250%20Q450%20272%20424%20250Z'%20fill='%23b4434a'/%3e%3c!--%20forearms%20resting%20on%20the%20rim,%20hands%20joined%20in%20front%20--%3e%3cpath%20d='M110%20640%20Q160%20610%20210%20640%20L420%20676%20Q440%20704%20420%20722%20L150%20712%20Q96%20700%20110%20640Z'%20fill='url(%23shirt)'/%3e%3cpath%20d='M790%20640%20Q740%20610%20690%20640%20L480%20676%20Q460%20704%20480%20722%20L750%20712%20Q804%20700%20790%20640Z'%20fill='url(%23shirt)'/%3e%3cpath%20d='M396%20668%20L420%20676%20L420%20722%20L396%20718%20Z%20M504%20668%20L480%20676%20L480%20722%20L504%20718%20Z'%20fill='%23fffdf8'%20stroke='%23d9cdbd'%20stroke-width='3'/%3e%3ccircle%20cx='406'%20cy='694'%20r='5'%20fill='%23e2bd63'/%3e%3ccircle%20cx='494'%20cy='694'%20r='5'%20fill='%23e2bd63'/%3e%3cpath%20d='M418%20674%20Q452%20652%20486%20674%20Q500%20700%20482%20720%20Q450%20734%20418%20720%20Q400%20700%20418%20674Z'%20fill='url(%23skin)'/%3e%3cpath%20d='M432%20680%20Q450%20668%20468%20680%20M428%20694%20Q450%20684%20472%20694%20M430%20708%20Q450%20700%20470%20708'%20fill='none'%20stroke='%23c98d70'%20stroke-width='3'%20stroke-linecap='round'%20opacity='.7'/%3e%3c/svg%3e`}]}locale(){return j(`locale`,{},()=>this.config.locale??Kt.value)}context(){let{prizes:e,player:t,messages:n}=this.config,r=this.locale(),i=Wt(r,n),a=new Map(e.map((e,t)=>[e.id,{prize:e,index:t}])),o=t=>a.get(t)??{prize:e[0],index:0};return{prizes:e,prizeIds:e.map(e=>e.id),board:mo(e),player:t,dealers:this.dealers,locale:r,locales:[...new Set([...Ft,...Object.keys(n)])],t:i,prize:e=>o(e).prize,icon:e=>o(e).prize.icon,name:e=>o(e).prize.name,color:e=>o(e).prize.color??ms(o(e).index),award:(e,t)=>t??i(`tier.symbol.${e}`),logo:(e=``)=>this.config.logo?h`<img class="fl-icon fl-logo ${e}" src=${this.config.logo} alt="" />`:V($i,e),finish:e=>void this.finish(e),go:(e,t)=>this.go(e,t)}}go(e,t={}){this.certificate=null,this.options=t,this.view=e,this.round++}async finish(e){if(e.tier===`none`)return;let t=this.round,n=this.room.prize(e.prizeId),r=await _o(n,e.tier,e.award),i={prize:n,variant:r,tier:e.tier,game:e.game};this.config.onWin?.(i);let a=e.tier===`jackpot`;await this.celebrate({title:this.t(a?`win.jackpot`:`win.title`),line:`${n.name} · ${r?.label??this.t(`cert.fullPrize`)}`,jackpot:a}),this.round===t&&(this.certificate={outcome:e,win:i})}async celebrate(e){let t=this.round;this.banner=e,this.celebrating=e.jackpot?`jackpot`:`win`,this.boost=e.jackpot?2.4:1,setTimeout(()=>this.round===t&&(this.celebrating=null),e.jackpot?6e3:1800),U.play(e.jackpot?`jackpot`:`win`),!P()&&e.jackpot?(await this.updateComplete,this.querySelectorAll(`.lk-win-text h2 span`).forEach((e,n)=>setTimeout(()=>{if(this.round!==t||!this.section)return;_s(this.section,.5+n*.08);let r=e.getBoundingClientRect();I.burst(r.left+r.width/2,r.top+r.height*.6,{count:18,type:`spark`,speed:640,life:.6,gravity:300,colors:bs}),U.play(`tick`,1+n*.08)},260+n*110)),I.cannons(2400),setTimeout(()=>this.round===t&&I.fountain(2600),700)):I.burst(innerWidth/2,innerHeight*.45,{count:70,speed:820}),await gs(P()?700:e.jackpot?2500:1250),this.round===t&&(this.banner=null)}close(){this.phase=`closing`,this.stopLights(),setTimeout(()=>this.dispatchEvent(new Event(`closed`)),P()?0:560)}toggleSound(){this.soundOn=!this.soundOn,U.enable(this.soundOn),U.play(`chime`)}startLights(){let e=this.lightsCanvas;if(!e||P())return;let t=e.getContext(`2d`),n=Math.min(2,devicePixelRatio);e.width=innerWidth*n,e.height=innerHeight*n,t.setTransform(n,0,0,n,0,0);let r=[`#ffe3a0`,`#f6d27a`,`#fff4d6`,`#e8b45c`,`#ffffff`,`#ffcf7a`,`#f9e7bd`,`#7fd6a0`],i=Array.from({length:90},()=>{let e=Math.random()<.7;return{x:Math.random(),y:Math.random(),radius:e?T(2.5,9):T(14,34),tone:Math.floor(T(0,840)),alpha:e?T(.35,.8):T(.08,.2),phase:T(0,Math.PI*2),speed:T(.6,2.6),blink:e&&Math.random()<.35?T(2,6):0,drift:T(-.006,-.002)}}),a=performance.now(),o=e=>{let n=Math.min(.05,(e-a)/1e3);a=e,this.boost=Math.max(0,this.boost-n*.6);let s=e/1e3;t.clearRect(0,0,innerWidth,innerHeight),t.globalCompositeOperation=`lighter`;let c=this.theme,l=c?qo[c].lights:r;for(let e of i){let r=l[e.tone%l.length];e.y=(e.y+e.drift*n+1)%1;let i=e.blink?Math.sin(s*e.blink+e.phase)>.2?1:.12:.55+.45*Math.sin(s*e.speed+e.phase),a=e.x*innerWidth,o=e.y*innerHeight,c=e.radius*(1+this.boost*.35),u=t.createRadialGradient(a,o,0,a,o,c);u.addColorStop(0,r),u.addColorStop(.35,`${r}aa`),u.addColorStop(1,`${r}00`),t.globalAlpha=Math.min(1,e.alpha*i*(1+this.boost*2.2)),t.fillStyle=u,t.beginPath(),t.arc(a,o,c,0,Math.PI*2),t.fill()}t.globalAlpha=1,this.lightsFrame=requestAnimationFrame(o)};this.lightsFrame=requestAnimationFrame(o);let s=()=>{U.play(`ambient`),this.ambient=window.setTimeout(s,T(2600,6200))};this.ambient=window.setTimeout(s,1800)}stopLights(){cancelAnimationFrame(this.lightsFrame),clearTimeout(this.ambient)}connectedCallback(){super.connectedCallback(),Eo.value=!0,this.previousOverflow=document.body.style.overflow,document.body.style.overflow=`hidden`,addEventListener(`keydown`,this.onKey),this.dutyClock=window.setInterval(()=>Mo(),15e3)}firstUpdated(){I.attach(this.fxCanvas??null),U.play(`whoosh`),requestAnimationFrame(()=>{this.phase=`open`,setTimeout(()=>{this.phase===`open`&&(this.phase=`ready`,this.startLights())},P()?0:850)})}disconnectedCallback(){super.disconnectedCallback(),Eo.value=!1,this.stopLights(),I.attach(null),document.body.style.overflow=this.previousOverflow,removeEventListener(`keydown`,this.onKey),clearInterval(this.dutyClock)}render(){let{view:e,phase:t,celebrating:n,banner:r,theme:i}=this,a=e===`lobby`?this.lobbyPage===1:ts.includes(e),o=e===`lobby`?this.t(`room`):this.t(`games.${e}.name`),s=[...i?[this.t(`themes.${i}.greeting`)]:[],...[1,2,3,4,5,6].map(e=>this.t(`ticker.${e}`))],c=[`lk-room`,t===`open`||t===`ready`?`is-open`:``,t===`ready`?`is-ready`:``,t===`closing`?`is-closing`:``,n?`is-celebrating`:``,n===`jackpot`?`is-jackpot`:``,a?`is-private`:``].join(` `);return h`
|
|
1420
|
+
<section
|
|
1421
|
+
class=${c}
|
|
1422
|
+
style="--lk-ox: ${this.origin.x}px; --lk-oy: ${this.origin.y}px"
|
|
1423
|
+
data-theme=${i??_}
|
|
1424
|
+
role="dialog"
|
|
1425
|
+
aria-modal="true"
|
|
1426
|
+
aria-label=${this.t(`title`)}
|
|
1427
|
+
>
|
|
1428
|
+
<div class="lk-pools" aria-hidden="true"><i></i><i></i></div>
|
|
1429
|
+
<div class="lk-chandelier" aria-hidden="true"><i></i></div>
|
|
1430
|
+
<div class="lk-beams" aria-hidden="true"><i></i><i></i></div>
|
|
1431
|
+
<canvas class="lk-lights" aria-hidden="true"></canvas>
|
|
1432
|
+
<div class="lk-drapes" aria-hidden="true"><i></i><i></i></div>
|
|
1433
|
+
<div class="lk-veil" aria-hidden="true"></div>
|
|
1434
|
+
<svg class="lk-guilloche" viewBox="0 0 1400 900" preserveAspectRatio="xMidYMid slice" aria-hidden="true">
|
|
1435
|
+
${Pp.map(e=>g`<polyline points=${e} fill="none" stroke="#d4a94e" stroke-opacity="0.16" stroke-width="0.5" />`)}
|
|
1436
|
+
</svg>
|
|
1437
|
+
<div class="lk-twinkles" aria-hidden="true"><i></i><i></i></div>
|
|
1438
|
+
|
|
1439
|
+
<header class="lk-head">
|
|
1440
|
+
<button class="lk-btn lk-btn--outline" @click=${()=>e===`lobby`?this.close():this.go(`lobby`)}>
|
|
1441
|
+
${V(Fi)} ${e===`lobby`?this.t(`backToOverview`):this.t(`backToGames`)}
|
|
1442
|
+
</button>
|
|
1443
|
+
<h2>${o}${e===`lobby`?_:h`<small>${this.t(`title`)}</small>`}</h2>
|
|
1444
|
+
<div class="lk-end">
|
|
1445
|
+
<button
|
|
1446
|
+
class="lk-sound"
|
|
1447
|
+
aria-pressed=${this.soundOn}
|
|
1448
|
+
aria-label=${this.t(this.soundOn?`soundOn`:`soundOff`)}
|
|
1449
|
+
data-tip=${this.t(this.soundOn?`soundOn`:`soundOff`)}
|
|
1450
|
+
@click=${this.toggleSound}
|
|
1451
|
+
>
|
|
1452
|
+
${V(this.soundOn?ro:ao)}
|
|
1453
|
+
</button>
|
|
1454
|
+
</div>
|
|
1455
|
+
</header>
|
|
1456
|
+
<div class="lk-ticker" aria-hidden="true">
|
|
1457
|
+
<div class="lk-ticker-track">
|
|
1458
|
+
${[0,1].map(()=>h`<div>${s.map(e=>h`<span>${e}</span><b>•</b>`)}</div>`)}
|
|
1459
|
+
</div>
|
|
1460
|
+
</div>
|
|
1461
|
+
|
|
1462
|
+
${i?wi(i,h`<fl-theme .theme=${i}></fl-theme>`):_}
|
|
1463
|
+
|
|
1464
|
+
<div class="lk-view">
|
|
1465
|
+
${e===`lobby`?h`<fl-lobby
|
|
1466
|
+
.page=${this.lobbyPage}
|
|
1467
|
+
@page=${e=>this.lobbyPage=e.detail}
|
|
1468
|
+
@play=${e=>this.go(e.detail)}
|
|
1469
|
+
></fl-lobby>`:wi(this.round,Mi`<${ki(Np(e))} .options=${this.options}></${ki(Np(e))}>`)}
|
|
1470
|
+
</div>
|
|
1471
|
+
|
|
1472
|
+
${this.certificate?h`<fl-certificate
|
|
1473
|
+
.outcome=${this.certificate.outcome}
|
|
1474
|
+
.win=${this.certificate.win}
|
|
1475
|
+
.claim=${this.config.onClaim}
|
|
1476
|
+
@again=${()=>this.go(this.certificate.outcome.game)}
|
|
1477
|
+
@lobby=${()=>this.go(`lobby`)}
|
|
1478
|
+
></fl-certificate>`:_}
|
|
1479
|
+
${r?h`<div class="lk-win ${r.jackpot?`is-jackpot`:``}" aria-live="polite">
|
|
1480
|
+
<div class="lk-win-flash"></div>
|
|
1481
|
+
${r.jackpot?h`<div class="lk-rays"><i></i><i></i></div><div class="lk-searchlights"><i></i><i></i><i></i></div>`:_}
|
|
1482
|
+
<div class="lk-win-text">
|
|
1483
|
+
<h2>${[...r.title].map((e,t)=>h`<span style="--i: ${t}">${e===` `?`\xA0`:e}</span>`)}</h2>
|
|
1484
|
+
<p>${r.line}</p>
|
|
1485
|
+
</div>
|
|
1486
|
+
</div>`:_}
|
|
1487
|
+
${this.developerLoaded?h`<fl-developer .passwordHash=${this.config.developer?.passwordHash}></fl-developer>`:_}
|
|
1488
|
+
|
|
1489
|
+
<canvas class="lk-fx" aria-hidden="true"></canvas>
|
|
1490
|
+
</section>
|
|
1491
|
+
`}},L([b({attribute:!1})],$.prototype,`config`,void 0),L([b({attribute:!1})],$.prototype,`origin`,void 0),L([On({context:fs}),x()],$.prototype,`room`,void 0),L([x()],$.prototype,`phase`,void 0),L([x()],$.prototype,`view`,void 0),L([x()],$.prototype,`lobbyPage`,void 0),L([x()],$.prototype,`options`,void 0),L([x()],$.prototype,`round`,void 0),L([x()],$.prototype,`certificate`,void 0),L([x()],$.prototype,`banner`,void 0),L([x()],$.prototype,`celebrating`,void 0),L([x()],$.prototype,`soundOn`,void 0),L([x()],$.prototype,`developerLoaded`,void 0),L([S(`.lk-room`)],$.prototype,`section`,void 0),L([S(`.lk-lights`)],$.prototype,`lightsCanvas`,void 0),L([S(`.lk-fx`)],$.prototype,`fxCanvas`,void 0),$=L([y(`fl-room`)],$)})),Ip=r({mountRoom:()=>Rp});function Lp(){document.getElementById(`feeling-lucky-properties`)||document.head.append(Object.assign(document.createElement(`style`),{id:`feeling-lucky-properties`,textContent:Bp}))}function Rp(e,t,n){Lp();let r=e.attachShadow({mode:`open`});zp??=new CSSStyleSheet,zp.cssRules.length||zp.replaceSync(hn),r.adoptedStyleSheets=[zp];let i=document.createElement(`fl-room`);return i.config=t,n&&(i.origin=n),r.append(i),i}var zp,Bp,Vp=n((()=>{gn(),Fp(),Bp=`
|
|
1492
|
+
@property --lk-notch-x { syntax: '<number>'; inherits: true; initial-value: 0; }
|
|
1493
|
+
@property --lk-notch-y { syntax: '<number>'; inherits: true; initial-value: 0; }
|
|
1494
|
+
`}));Zt(),zt(),ue();function Hp(e){let t=e,n=null,r=null,i=()=>{n?.remove(),n=null,r=null};return{open({from:e}={}){if(n)return;Ht();let o=e instanceof Element?e.getBoundingClientRect():null,s=o?{x:o.left+o.width/2,y:o.top+o.height/2}:e;n=document.body.appendChild(document.createElement(`feeling-lucky`));let c=n;(async()=>{let[e,{mountRoom:o}]=await Promise.all([a(t),Promise.resolve().then(()=>(Vp(),Ip))]);await Xt(e.locale??Kt.value).catch(()=>void 0),n===c&&(r=o(c,e,s),r.addEventListener(`closed`,i))})().catch(e=>{n===c&&i(),console.error(e)})},close(){r?r.close():i()},update(e){t={...t,...e};let n=r;n&&a(t).then(e=>n===r&&(n.config=e))},destroy(){i()}}}return e.createFeelingLucky=Hp,e.en=le,e})({});
|