{"version":3,"sources":["assets/img/ingredients/rice-grain-2.png","assets/img/meals/meal-shawarma-poutin.png","assets/img/ingredients/poutine-sauce.png","assets/img/ingredients/rice-grain.png","assets/img/ingredients/corn-piece.png","assets/img/badge-10-off.png","assets/img/bowl.png","assets/img/ingredients/lettuce.png","assets/img/ingredients/chipotle-sauce.png","assets/svg/arc-arrow-up.svg","assets/img/ingredients/rice-grain-red.png","assets/img/ingredients/fries-piece.png","assets/img/ingredients/tomato.png","assets/img/ingredients/pickle.png","assets/svg/start-screen-header.svg","assets/svg/start-screen-footer.svg","assets/img/screen-texture.jpg","assets/img/game-bg.jpg","assets/svg/you-messed-up.svg","assets/img/logo-slogan-light.png","assets/svg/arc-arrow-down.svg","assets/img/avatars/avatar-tomato.png","assets/img/avatars/avatar-chicken.png","assets/img/avatars/avatar-corn.png","assets/img/avatars/avatar-fries.png","assets/img/avatars/avatar-garlic.png","assets/img/avatars/avatar-parsley.png","assets/img/avatars/avatar-rice.png","assets/img/avatars/avatar-tahini.png","assets/img/avatars/avatar-pickels.png","assets/img/meals/meal-chicken-rice-bowl.png","assets/img/meals/meal-shelbys-wrap.png","assets/img/meals/meal-shawarma-burito.png","assets/img/meals/meal-traditional-wrap.png","assets/img/table.png","assets/img/ingredients/garlic.png","assets/img/ingredients/chicken.png","assets/img/ingredients/tahini.png","assets/img/ingredients/parsley.png","assets/img/ingredients/parsley-2.png","assets/audio/jazz-1.mp3","assets/audio/select-1.wav","assets/audio/select-2.wav","assets/audio/pick-up.mp3","assets/audio/missed.mp3","assets/audio/lost.mp3","assets/audio/level-up.mp3","assets/audio/winning-music.mp3","components/Screen.tsx","assets/audio/index.ts","hooks/useAudioStore.ts","assets/svg/sound-on.svg","assets/svg/sound-off.svg","pages/StartScreen.tsx","components/Button.tsx","pages/LoseScreen.tsx","pages/WinScreen.tsx","pages/DiscountScreen.tsx","assets/svg/check-mark.svg","pages/GameScreen/components/IngredientAvatar.tsx","pages/GameScreen/components/HealthBar.tsx","utils/index.ts","pages/GameScreen/store.ts","pages/HowToPlayScreen.tsx","pages/GameScreen/components/Meal.tsx","pages/GameScreen/components/Score.tsx","assets/svg/resume-arrowhead.svg","pages/GameScreen/components/Dialogs.tsx","pages/GameScreen/components/ActionFeedBack.tsx","pages/GameScreen/components/Ingredients.tsx","pages/GameScreen/components/Ingredient.tsx","pages/GameScreen/components/Falling.tsx","pages/GameScreen/GameScreen.tsx","pages/GameScreen/hooks/useBowlDrag.ts","pages/LoseCompletedScreen.tsx","App.tsx","serviceWorker.ts","index.tsx"],"names":["module","exports","ScreenWrapper","children","className","ScreenContent","forwardRef","ref","props","ScreenDark","ScreenGameRoom","src","gameBG","alt","DarkTexture","texture","bg","Audio","require","select1","select2","pickup","missed","lost","levelup","winnerMusic","useAudioStore","create","set","get","sound","_soundLoaded","toggleSound","Object","values","audio","forEach","prepareAudioForSafari","playBackgroundMusic","volume","muted","loop","play","canAutoplay","timeout","then","r","setState","result","getState","playAudio","pause","currentTime","_extends","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","createElement","id","d","_ref","svgRef","title","viewBox","ForwardRef","StartScreen","state","onClick","header","to","href","rel","footer","Button","e","LoseScreen","useEffect","style","top","left","youMessedUo","fontFamily","WinScreen","badge","submitDiscount","inputs","a","data","app_id","fetch","method","headers","appToken","body","JSON","stringify","response","ok","Error","status","statusText","json","code","message","DiscountSentScreen","logo","DiscountScreen","useForm","register","handleSubmit","errors","formState","setError","clearErrors","onSubmit","type","isSubmitSuccessful","right","htmlFor","name","autoComplete","disabled","isSubmitting","server","split","map","text","width","height","IngredientAvatar","ingredient","done","IngredientSrc","useMemo","Tomatos","tomato","Chicken","chicken","Corn","corn","Fries","fries","garlic","Parsley","parsley","rice","Tahini","tahini","Pickle","pickels","Lettuce","lettuce","poutineSauce","chipotleSauce","useIngredientAvatarImageSrc","HealthBar","health","useSpring","transform","backgroundColor","div","clamp","min","max","value","Math","random","arr","floor","probability","ingredients","meals","mealsRecipes","mealsWrongIngredients","mealsOnPlate","useStore","getLevels","array","slice","j","temp","shuffle","createLevelForMeal","getNextIngredients","currentLevel","fallingIngredients","level","getCurrentLevelNumber","getLevelsCount","ings","ing1","ingredientsLeft","wrongIngredients","ing2","filter","push","nextFallingIngredientId","isAllLevelsCompleted","levels","every","completed","canWinWithCurrentScore","score","winScore","getInitialState","lastAction","lastActionIndex","paused","reset","resume","findIndex","getNextLevel","currentLevelNumber","isLevelLost","isGameFinished","didWin","didCompleteWithScoreLow","startNextLevel","onCatchIngredient","goodCatch","canCatchIngredient","setItemsCatched","onMissedIngredient","meal","recipe","item","some","recipeIngredient","find","isMealOnPlate","x","HowToPlayScreenComponent","useRouteMatch","path","url","replace","useHistory","onNext","HowToPlayScreen","HowToPlayScreenPage1","arcArrowUp","bottom","discountBadge","mealShawermaPoutin","clipPath","HowToPlayScreenPage2","arcArrowDown","bowl","Meal","progressPercent","onPlate","shelbysWrap","riceBowl","shawarmaBurito","shawarmaPoutin","traditionalWrap","useMealAvatarImageSrc","img","toUpperCase","Score","scoreRef","useRef","current","prevScore","spring","config","slow","from","update","stop","decreased","stiff","span","round","_ref6","_ref7","_ref8","_ref9","_ref10","_ref11","_ref12","_ref13","_ref14","_ref15","_ref16","_ref17","y","enableBackground","xmlSpace","Dialog","LevelCompletedDialog","onStartNextLevel","nextMeal","StartLevelDialog","onStart","GamePausedDialog","mealProgressPercent","onResume","soundOn","ActionFeedBack","action","opacity","actionLabel","useRotationSpring","duration","direction","Rice","riceGrainRed","riceGrain","riceGrain2","cornPiece","Garlic","PoutineSauce","ChipotleSauce","parsley2","friesPiece","pickle","Ingredient","IngredientComponent","useIngredientComponent","Falling","fieldWidth","fieldHeight","fallDuration","onFrame","onHitGround","delayIndex","ingredientRef","useMeasure","ingredientMeasureRef","ingredientBounds","onFrameDebounced","useCallback","throttle","leading","trailing","fromX","toX","fromY","toY","delay","onChange","cancel","mergeRefs","Ingredients","onIngredientFallingChange","onIngredientHitGround","levelNumber","levelsCount","min1","min2","useFallDuration","ingredientsRef","index","Dialogs","nextLevel","useState","showStartDialog","setShowStartDialog","progress","GameScreen","store","bowlRef","fieldRef","bowlMeasureRef","bowlBounds","fieldMeasureRef","fieldBounds","onCatchIngredientDebounced","callbacks","debounce","useOnCatchIngredientDebouncedCallback","options","bind","useDrag","offset","bowlWidth","axis","useBowlDrag","history","levelLost","win","completeWithLowScore","useChangeScreen","resetStore","useResetStoreOnUnmount","items","maxWidth","element","rect1","rect2","getBoundingClientRect","rect","DOMRect","fixBowlDOMRect","table","LoseCompletedScreenComponent","LoseCompletedScreen","App","component","Boolean","window","location","hostname","match","ReactDOM","render","StrictMode","document","getElementById","navigator","serviceWorker","ready","registration","unregister","catch","error","console"],"mappings":"wIAAAA,EAAOC,QAAU,0lF,oBCAjBD,EAAOC,QAAU,IAA0B,kD,iBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,shF,cCAjBD,EAAOC,QAAU,0gW,uBCAjBD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,kC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,4C,kBCA3CD,EAAOC,QAAU,IAA0B,0C,cCA3CD,EAAOC,QAAU,88I,gBCAjBD,EAAOC,QAAU,IAA0B,yC,sBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,qBCA3CD,EAAOC,QAAU,IAA0B,iD,gBCA3CD,EAAOC,QAAU,IAA0B,iD,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,qC,kBCA3CD,EAAOC,QAAU,IAA0B,2C,iBCA3CD,EAAOC,QAAU,IAA0B,+C,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,4C,kBCA3CD,EAAOC,QAAU,IAA0B,oD,gBCA3CD,EAAOC,QAAU,IAA0B,+C,gBCA3CD,EAAOC,QAAU,IAA0B,kD,gBCA3CD,EAAOC,QAAU,IAA0B,mD,gBCA3CD,EAAOC,QAAU,IAA0B,mC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,4DCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,kC,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,2C,sfCIrCC,EAAgE,SAAC,GAGhE,IAFLC,EAEI,EAFJA,SACAC,EACI,EADJA,UAEA,OACE,0BACEA,UAAS,+EAA0EA,IAClFD,IAKDE,EAAgBC,sBAGpB,WAAoCC,GAAS,IAA1CJ,EAAyC,EAAzCA,SAAUC,EAA+B,EAA/BA,UAAcI,EAAiB,wCAC5C,OACE,yCACMA,EADN,CAEED,IAAKA,EACLH,UAAS,8CAAyCA,KACjDD,MAiBDM,GAZSH,sBACb,WAAyBC,GAAS,IAA/BJ,EAA8B,EAA9BA,SAAaK,EAAiB,4BAC/B,OACE,kBAAC,EAAD,CAAeJ,UAAU,YACvB,kBAACC,EAAD,iBAAmBG,EAAnB,CAA0BD,IAAKA,IAC5BJ,OAOQG,sBAGjB,WAAyBC,GAAS,IAA/BJ,EAA8B,EAA9BA,SAAaK,EAAiB,4BACjC,OACE,kBAAC,EAAD,CAAeJ,UAAU,sBACvB,kBAAC,EAAD,MACA,kBAACC,EAAD,iBAAmBG,EAAnB,CAA0BD,IAAKA,IAC5BJ,QAMHO,EAAiBJ,sBAGrB,WAAyBC,GAAS,IAA/BJ,EAA8B,EAA9BA,SAAaK,EAAiB,4BACnC,OACE,kBAAC,EAAD,CAAeJ,UAAU,sBACtB,yBACCO,IAAKC,IACLC,IAAI,UACJT,UAAU,iDAEZ,kBAACC,EAAD,iBAAmBG,EAAnB,CAA0BD,IAAKA,IAC5BJ,OAMDW,EAAc,WAClB,OACE,yBACEH,IAAKI,IACLF,IAAI,UACJT,UAAU,6D,QC/EVY,EAAK,IAAIC,MAAMC,EAAQ,MACvBC,EAAU,IAAIF,MAAMC,EAAQ,MAC5BE,EAAU,IAAIH,MAAMC,EAAQ,MAC5BG,EAAS,IAAIJ,MAAMC,EAAQ,MAC3BI,EAAS,IAAIL,MAAMC,EAAQ,MAC3BK,EAAO,IAAIN,MAAMC,EAAQ,MACzBM,EAAU,IAAIP,MAAMC,EAAQ,MAC5BO,EAAc,IAAIR,MAAMC,EAAQ,M,QCGhCQ,EAAgBC,aAAc,SAACC,EAAKC,GACxC,MAAO,CACLC,OAAO,EACPC,cAAc,EACdC,YAHK,WAG8B,IAAvBF,EAAsB,wDAAbD,IAAMC,MACzBF,EAAI,CAAEE,WAEqB,IAAvBD,IAAME,eACRE,OAAOC,OAAOC,GAAOC,QAAQC,GAC7BT,EAAI,CAAEG,cAAc,KAGtBO,SAKN,SAASD,EAAsBF,GAC7BA,EAAMI,OAAS,EACfJ,EAAMK,OAAQ,EACdL,EAAMM,MAAO,EACbN,EAAMO,OAIRC,IAAYR,MAAM,CAAES,QAAS,MAAOC,MAAK,SAACC,GACxCpB,EAAcqB,SAAS,CAAEjB,MAAOgB,EAAEE,SAE9BtB,EAAcuB,WAAWnB,OAC3BJ,EAAcuB,WAAWjB,aAAY,MAI1BN,QAER,SAASY,IAA2C,IAAvBI,IAAsB,yDACpDA,EAAMQ,EAAUf,EAAU,IAAK,GAC9BA,EAASgB,QAGT,SAASD,EAAUf,GAAsD,IAA7BI,EAA4B,uDAAnB,GAAKE,EAAc,wDACzEf,EAAcuB,WAAWnB,OAC3BK,EAAMiB,YAAc,EACpBjB,EAAMI,OAASA,EACfJ,EAAMK,OAAQ,EACdL,EAAMM,KAAOA,EACbN,EAAMO,QACDP,EAAMgB,QCzDf,SAASE,IAA2Q,OAA9PA,EAAWpB,OAAOqB,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAc1B,OAAO4B,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQL,EAAOK,GAAOD,EAAOC,IAAY,OAAOL,IAA2BS,MAAMC,KAAMR,WAEhT,SAASS,EAAyBP,EAAQQ,GAAY,GAAc,MAAVR,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnED,EAEzF,SAAuCI,EAAQQ,GAAY,GAAc,MAAVR,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5DD,EAAS,GAAQa,EAAanC,OAAOoC,KAAKV,GAAqB,IAAKH,EAAI,EAAGA,EAAIY,EAAWV,OAAQF,IAAOI,EAAMQ,EAAWZ,GAAQW,EAASG,QAAQV,IAAQ,IAAaL,EAAOK,GAAOD,EAAOC,IAAQ,OAAOL,EAFxMgB,CAA8BZ,EAAQQ,GAAuB,GAAIlC,OAAOuC,sBAAuB,CAAE,IAAIC,EAAmBxC,OAAOuC,sBAAsBb,GAAS,IAAKH,EAAI,EAAGA,EAAIiB,EAAiBf,OAAQF,IAAOI,EAAMa,EAAiBjB,GAAQW,EAASG,QAAQV,IAAQ,GAAkB3B,OAAO4B,UAAUa,qBAAqBX,KAAKJ,EAAQC,KAAgBL,EAAOK,GAAOD,EAAOC,IAAU,OAAOL,EAMne,IAAI,EAAqB,IAAMoB,cAAc,IAAK,CAChDC,GAAI,UACJ,YAAa,WACC,IAAMD,cAAc,IAAK,CACvCC,GAAI,YACJ,YAAa,WACC,IAAMD,cAAc,OAAQ,CAC1CE,EAAG,+LACY,IAAMF,cAAc,OAAQ,CAC3CE,EAAG,2ZACY,IAAMF,cAAc,OAAQ,CAC3CE,EAAG,gRACY,IAAMF,cAAc,OAAQ,CAC3CE,EAAG,oRACY,IAAMF,cAAc,OAAQ,CAC3CE,EAAG,yRAGD,EAAa,SAAoBC,GACnC,IAAIC,EAASD,EAAKC,OACdC,EAAQF,EAAKE,MACbxE,EAAQ0D,EAAyBY,EAAM,CAAC,SAAU,UAEtD,OAAoB,IAAMH,cAAc,MAAOtB,EAAS,CACtD4B,QAAS,iBACT1E,IAAKwE,GACJvE,GAAQwE,EAAqB,IAAML,cAAc,QAAS,KAAMK,GAAS,KAAM,IAGhFE,EAA0B,IAAM5E,YAAW,SAAUE,EAAOD,GAC9D,OAAoB,IAAMoE,cAAc,EAAYtB,EAAS,CAC3D0B,OAAQxE,GACPC,OAEU,IC1Cf,SAAS,IAA2Q,OAA9P,EAAWyB,OAAOqB,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAc1B,OAAO4B,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQL,EAAOK,GAAOD,EAAOC,IAAY,OAAOL,IAA2BS,MAAMC,KAAMR,WAEhT,SAAS,EAAyBE,EAAQQ,GAAY,GAAc,MAAVR,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnED,EAEzF,SAAuCI,EAAQQ,GAAY,GAAc,MAAVR,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5DD,EAAS,GAAQa,EAAanC,OAAOoC,KAAKV,GAAqB,IAAKH,EAAI,EAAGA,EAAIY,EAAWV,OAAQF,IAAOI,EAAMQ,EAAWZ,GAAQW,EAASG,QAAQV,IAAQ,IAAaL,EAAOK,GAAOD,EAAOC,IAAQ,OAAOL,EAFxM,CAA8BI,EAAQQ,GAAuB,GAAIlC,OAAOuC,sBAAuB,CAAE,IAAIC,EAAmBxC,OAAOuC,sBAAsBb,GAAS,IAAKH,EAAI,EAAGA,EAAIiB,EAAiBf,OAAQF,IAAOI,EAAMa,EAAiBjB,GAAQW,EAASG,QAAQV,IAAQ,GAAkB3B,OAAO4B,UAAUa,qBAAqBX,KAAKJ,EAAQC,KAAgBL,EAAOK,GAAOD,EAAOC,IAAU,OAAOL,EAMne,IAAI,EAAqB,IAAMoB,cAAc,IAAK,CAChDC,GAAI,UACJ,YAAa,WACC,IAAMD,cAAc,IAAK,CACvCC,GAAI,YACJ,YAAa,WACC,IAAMD,cAAc,OAAQ,CAC1CE,EAAG,4LACY,IAAMF,cAAc,OAAQ,CAC3CE,EAAG,urBACY,IAAMF,cAAc,OAAQ,CAC3CE,EAAG,oQAGD,EAAc,SAAqBC,GACrC,IAAIC,EAASD,EAAKC,OACdC,EAAQF,EAAKE,MACbxE,EAAQ,EAAyBsE,EAAM,CAAC,SAAU,UAEtD,OAAoB,IAAMH,cAAc,MAAO,EAAS,CACtDM,QAAS,iBACT1E,IAAKwE,GACJvE,GAAQwE,EAAqB,IAAML,cAAc,QAAS,KAAMK,GAAS,KAAM,IAGhF,EAA0B,IAAM1E,YAAW,SAAUE,EAAOD,GAC9D,OAAoB,IAAMoE,cAAc,EAAa,EAAS,CAC5DI,OAAQxE,GACPC,OC+BU2E,GD7BA,IC5BK,WAClB,IAAMrD,EAAQJ,GAAc,SAAC0D,GAAD,OAAWA,EAAMtD,SACvCE,EAAcN,GAAc,SAAC0D,GAAD,OAAWA,EAAMpD,eAEnD,OACE,kBAAC,EAAD,CAAQ5B,UAAU,+BAChB,yBAAKA,UAAU,uCACb,4BACEiF,QAAS,kBAAMrD,KACf5B,UAAU,wEAFZ,SAGS0B,EAAQ,KAAO,MACvBA,EACC,kBAAC,EAAD,CAAS1B,UAAU,0BAEnB,kBAAC,EAAD,CAAUA,UAAU,6CAKxB,gCACE,yBACEO,IAAK2E,IACLzE,IAAI,gBACJT,UAAU,2DAId,yBAAKA,UAAU,4CACb,kBAAC,IAAD,CAAMmF,GAAG,SACP,4BACEnF,UAAU,uKACViF,QAAS,kBAAMnC,EAAUf,KACzB,0BAAM/B,UAAU,4BAAhB,WAGJ,kBAAC,IAAD,CAAMmF,GAAG,gBACP,4BACEnF,UAAU,mNACViF,QAAS,kBAAMnC,EAAUf,KAF3B,iBAQJ,gCACE,uBAAGqD,KAAK,oBAAoBjC,OAAO,SAASkC,IAAI,uBAC9C,yBACE9E,IAAK+E,IACL7E,IAAI,gBACJT,UAAU,kEC1CPuF,EAbmD,SAACnF,GACjE,OACE,4CACMA,EADN,CAEEJ,UAAS,2LAAsLI,EAAMJ,WACrMiF,QAAS,SAACO,GACR1C,EAAUf,GACV3B,EAAM6E,SAAW7E,EAAM6E,QAAQO,Q,iBC0BxBC,EA7BI,WAKjB,OAJAC,qBAAU,WACR5C,EAAUf,KACT,IAGD,kBAAC,EAAD,CAAQ/B,UAAU,qCAEhB,yBACEA,UAAU,mIACV2F,MAAO,CAAEC,IAAK,UAAWC,KAAM,YAFjC,cAMA,6BACE,yBAAKtF,IAAKuF,IAAarF,IAAI,gBAAgBT,UAAU,wBAErD,kBAAC,IAAD,CAAMmF,GAAG,SACP,kBAAC,EAAD,CACEnF,UAAU,yBACV2F,MAAO,CAAEI,WAAY,eAFvB,iB,oBCMKC,GA1BG,WAChB,OACE,kBAAC,EAAD,CAAQhG,UAAU,qCAChB,6BACE,4BAAQA,UAAU,oCAEhB,wBAAIA,UAAU,gEACZ,0BAAMA,UAAU,SAAhB,OACA,0BAAMA,UAAU,oDAAhB,QAMF,yBAAKO,IAAK0F,KAAOxF,IAAI,UAAUT,UAAU,8BAI3C,kBAAC,IAAD,CAAMmF,GAAG,aACP,kBAAC,EAAD,CAAQnF,UAAU,2BAAlB,yB,iECTJkG,GAAc,yCAAG,WACrBC,GADqB,0BAAAC,EAAA,mFAKfC,EALe,6BAK6BF,GAL7B,IAKqCG,OAAQ,MAL7C,SAMEC,MAAM,gCAAiC,CAC5DC,OAAQ,OACRC,QAAS,CACP,eAAgB,mBAChBC,SAAU,iDAEZC,KAAMC,KAAKC,UAAUR,KAZF,WAMfS,EANe,QAePC,GAfO,sBAgBb,IAAIC,MAAMF,EAASG,OAAS,IAAMH,EAASI,YAhB9B,wBA2BiCJ,EAASK,OA3B1C,oBA2BbF,EA3Ba,EA2BbA,OAAQG,EA3BK,EA2BLA,KAAMC,EA3BD,EA2BCA,QAEjBJ,EA7BgB,oBA8BN,MAATG,EA9Be,uBA+BX,IAAIJ,MAAMK,GA/BC,cAkCb,IAAIL,MACRK,GAAW,yDAnCM,iCAuCdA,GAvCc,4CAAH,sDAiKPC,GAAqB,WAChC,OACE,kBAAC,EAAD,CAAQtH,UAAU,2DAChB,gCACE,yBAAKO,IAAKgH,KAAM9G,IAAI,gBAAgBT,UAAU,iCAEhD,wBAAIA,UAAU,gDAAd,iCAGA,uBAAGA,UAAU,sBAAb,2DAGA,uBAAGoF,KAAK,wBAAwBjC,OAAO,SAASkC,IAAI,uBAClD,4BAAQrF,UAAU,+BAAlB,gBAMOwH,GA1IQ,WAAO,IAAD,IAQvBC,eANFC,EAFyB,EAEzBA,SACAC,EAHyB,EAGzBA,aACAC,EAJyB,EAIzBA,OACAC,EALyB,EAKzBA,UACAC,EANyB,EAMzBA,SACAC,EAPyB,EAOzBA,YAGIC,EAA2D,yCAAG,WAClE7B,GADkE,UAAAC,EAAA,+EAI1DF,GAAeC,GAJ2C,4DAMhE2B,EAAS,SAAU,CAAEG,KAAM,SAAUZ,QAAO,OAAC,EAAD,yBAAE,KAAOA,UANW,6DAAH,sDAWjE,OAAIQ,EAAUK,mBACL,kBAAC,GAAD,MAIP,kBAAC,EAAD,CAAQlI,UAAU,QAEhB,yBACEA,UAAU,gJACV2F,MAAO,CAAEC,IAAK,UAAWuC,MAAO,YAFlC,WAIE,6BAJF,SAME,yBAAKnI,UAAU,kBAIjB,wBAAIA,UAAU,6GACZ,0BAAMA,UAAU,kBAAhB,eACA,0BAAMA,UAAU,mDAAhB,YAMF,0BACEA,UAAU,gBACVgI,SAAU,SAACxC,GAET,OADAuC,EAAY,UACLJ,EAAaK,EAAbL,CAAuBnC,KAEhC,2BAAO4C,QAAQ,YAAYpI,UAAU,YAArC,aAGA,2BACEiI,KAAK,OACLI,KAAK,OACLC,aAAa,MACbnI,IAAKuH,EACL1H,UAAU,uFAGZ,2BAAOoI,QAAQ,QAAQpI,UAAU,0BAAjC,gBAGA,2BACEiI,KAAK,QACLI,KAAK,SACLC,aAAa,MACbnI,IAAKuH,EACL1H,UAAU,uFAGZ,2BAAOoI,QAAQ,QAAQpI,UAAU,0BAAjC,SAGA,2BACEiI,KAAK,QACLI,KAAK,QACLC,aAAa,MACbnI,IAAKuH,EACL1H,UAAU,uFAGZ,2BAAOoI,QAAQ,QAAQpI,UAAU,0BAAjC,gBAGA,2BACEiI,KAAK,UACLI,KAAK,UACLC,aAAa,MACbnI,IAAKuH,EACL1H,UAAU,uFAGZ,4BAAQA,UAAU,QAEhB,4BACEiI,KAAK,SACLM,SAAUV,EAAUW,aACpBxI,UAAU,2DACT6H,EAAUW,aAAe,cAAgB,qBAI3CZ,EAAOa,QACN,wBAAIzI,UAAU,kDAAd,UACG4H,EAAOa,OAAOpB,eADjB,aACG,EAAuBqB,MAAM,MAAMC,KAAI,SAACC,EAAMxF,GAAP,OACtC,wBAAII,IAAKJ,GAAIwF,W,gUCvK7B,SAAS,KAA2Q,OAA9P,GAAW/G,OAAOqB,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAc1B,OAAO4B,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQL,EAAOK,GAAOD,EAAOC,IAAY,OAAOL,IAA2BS,MAAMC,KAAMR,WAEhT,SAAS,GAAyBE,EAAQQ,GAAY,GAAc,MAAVR,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnED,EAEzF,SAAuCI,EAAQQ,GAAY,GAAc,MAAVR,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5DD,EAAS,GAAQa,EAAanC,OAAOoC,KAAKV,GAAqB,IAAKH,EAAI,EAAGA,EAAIY,EAAWV,OAAQF,IAAOI,EAAMQ,EAAWZ,GAAQW,EAASG,QAAQV,IAAQ,IAAaL,EAAOK,GAAOD,EAAOC,IAAQ,OAAOL,EAFxM,CAA8BI,EAAQQ,GAAuB,GAAIlC,OAAOuC,sBAAuB,CAAE,IAAIC,EAAmBxC,OAAOuC,sBAAsBb,GAAS,IAAKH,EAAI,EAAGA,EAAIiB,EAAiBf,OAAQF,IAAOI,EAAMa,EAAiBjB,GAAQW,EAASG,QAAQV,IAAQ,GAAkB3B,OAAO4B,UAAUa,qBAAqBX,KAAKJ,EAAQC,KAAgBL,EAAOK,GAAOD,EAAOC,IAAU,OAAOL,EAMne,IAAI,GAAqB,IAAMoB,cAAc,OAAQ,CACnDE,EAAG,iIAGD,GAAe,SAAsBC,GACvC,IAAIC,EAASD,EAAKC,OACdC,EAAQF,EAAKE,MACbxE,EAAQ,GAAyBsE,EAAM,CAAC,SAAU,UAEtD,OAAoB,IAAMH,cAAc,MAAO,GAAS,CACtDsE,MAAO,GACPC,OAAQ,GACRjE,QAAS,YACT1E,IAAKwE,GACJvE,GAAQwE,EAAqB,IAAML,cAAc,QAAS,KAAMK,GAAS,KAAM,KAGhF,GAA0B,IAAM1E,YAAW,SAAUE,EAAOD,GAC9D,OAAoB,IAAMoE,cAAc,GAAc,GAAS,CAC7DI,OAAQxE,GACPC,OCiBU2I,IDfA,ICT2C,SAAC,GAIpD,IAHLC,EAGI,EAHJA,WACAC,EAEI,EAFJA,KACG7I,EACC,qCACE8I,EAqBR,SAAqCF,GACnC,OAAOG,mBAAQ,WAgBb,MAf0D,CACxDC,QAASC,KACTC,QAASC,KACTC,KAAMC,KACNC,MAAOC,KACP,gBAAiBC,KACjBC,QAASC,KACT,eAAgBC,KAChBC,OAAQC,KACRC,OAAQC,KACRC,QAASC,KACT,gBAAiBC,KACjB,iBAAkBC,MAGKvB,KACxB,CAACA,IAvCkBwB,CAA4BxB,GAElD,OACE,0CAAQhJ,UAAU,uCAA0CI,GAC1D,yBACEG,IAAK2I,EACLlJ,UAAS,2CACPiJ,EAAO,aAAe,IAExBxI,IAAI,mBAELwI,GACC,kBAAC,GAAD,CAAWjJ,UAAU,gEAEvB,gCAAYA,UAAU,sDAAsDgJ,M,YCbnEyB,GAtB6B,SAAC,GAItC,IAHLC,EAGI,EAHJA,OACA1K,EAEI,EAFJA,UACGI,EACC,sCACEuF,EAAQgF,qBAAU,CACtBC,UAAU,UAAD,OAAYF,EAAS,IAArB,KACTG,gBAAiBH,EAAS,GAAK,MAAQ,YAGzC,OACE,yCACMtK,EADN,CAEEJ,UAAS,8DAAyDA,KAClE,kBAAC,YAAS8K,IAAV,CAEEnF,MAAOA,EACP3F,UAAU,sBCtBX,SAAS+K,GAAMC,EAAaC,EAAaC,GAC9C,OAAOC,KAAKF,IAAID,EAAKG,KAAKH,IAAIC,EAAKC,IAG9B,SAASE,GAAUC,GACxB,OAAOA,EAAIF,KAAKG,MAAMH,KAAKC,SAAWC,EAAI/H,SA4BrC,SAASiI,GAAYA,GAC1B,OAAOJ,KAAKC,SAAWG,EC5BzB,IAAMC,GAAc,CAClB,gBACA,eACA,UACA,OACA,SACA,UACA,QACA,SACA,gBACA,iBACA,UACA,WAGIC,GAAQ,CACZ,yBACA,YACA,eACA,mBACA,oBAMIC,GAAmD,CACvD,eAAgB,CAAC,UAAW,SAAU,WACtC,YAAa,CAAC,eAAgB,gBAAiB,UAC/C,mBAAoB,CAAC,eAAgB,OAAQ,kBAC7C,yBAA0B,CAAC,UAAW,QAAS,iBAC/C,mBAAoB,CAAC,UAAW,SAAU,kBAGtCC,GAA4D,CAChE,eAAgB,CAAC,iBAAkB,OAAQ,WAC3C,YAAa,CAAC,gBAAiB,UAAW,SAC1C,mBAAoB,CAAC,gBAAiB,UAAW,UACjD,yBAA0B,CAAC,SAAU,SAAU,gBAC/C,mBAAoB,CAAC,UAAW,UAAW,WAGvCC,GAAe,CAAC,yBAA0B,aA+D5CC,GAAWtK,aAAc,SAACC,EAAKC,GACjC,SAASqK,IACP,OD/FG,SAAoBC,GAEzB,IADA,IAAMV,EAAMU,EAAMC,QACT5I,EAAIiI,EAAI/H,OAAS,EAAGF,EAAI,EAAGA,IAAK,CACvC,IAAI6I,EAAId,KAAKG,MAAMH,KAAKC,UAAYhI,EAAI,IACpC8I,EAAOb,EAAIjI,GACfiI,EAAIjI,GAAKiI,EAAIY,GACbZ,EAAIY,GAAKC,EAEX,OAAOb,ECuFEc,CAAQV,GAAMO,SAASrD,IAAIyD,IAGpC,SAASC,EAAmBC,GAC1B,GAAI7K,IAAM8K,mBAAmBjJ,OAAQ,OAAO7B,IAAM8K,mBAElD,IAAMC,EAAeF,GAAgB7K,IAAM6K,aAK3C,GAJoB7K,IAAMgL,wBACNhL,IAAMiL,iBACwB,GAE7BnB,GAAY,IAAM,CACrC,IAAMoB,EAAO,GACPC,EAAOxB,GACXG,GAAY,KAAQiB,EAAMK,gBAAkBL,EAAMM,kBAG9CC,EAAO3B,GACXG,GAAY,KACRiB,EAAMK,gBAAgBG,QAAO,SAACxH,GAAD,OAAOA,IAAMoH,KAC1CJ,EAAMM,iBAAiBE,QAAO,SAACxH,GAAD,OAAOA,IAAMoH,MAMjD,OAHAD,EAAKM,KAAK,CAAEzI,KAAM0I,EAAyB7E,KAAMuE,IAC7CG,GAAMJ,EAAKM,KAAK,CAAEzI,KAAM0I,EAAyB7E,KAAM0E,IAEpDJ,EAEP,MAAO,CACL,CACEnI,KAAM0I,EACN7E,KAAM+C,GACJG,GAAY,IAAOiB,EAAMK,gBAAkBL,EAAMM,oBAO3D,SAASK,IACP,OAAOC,EAAOC,OAAM,SAACb,GAAD,OAAWA,EAAMc,aAGvC,SAASC,IAA0B,IAAD,EACJ9L,IAC5B,OAFgC,EACxB+L,MADwB,EACjBC,SAIjB,SAASC,IACP,MAAO,CACLF,MAAO,EACPC,SAAU,KACVnB,aAAcc,EAAO,GACrBO,WAAY,KACZC,gBAAiB,EACjBlD,OAAQ,IACR6B,mBAAoB,CAAC,CAAE/H,GAAI,EAAG6D,KAAM+C,GAAOI,MAC3CqC,QAAQ,GAIZ,IAAIT,EAAStB,IACToB,EAA0B,EAE9B,OAAO,6BACFQ,KADL,IAEEI,MAFF,WAGIV,EAAStB,IACToB,EAA0B,EAC1B1L,EAAI,gBAAKkM,OAEX3K,MAPF,WAQIvB,EAAI,CAAEqM,QAAQ,KAEhBE,OAVF,WAWIvM,EAAI,CACFqM,QAAQ,EACRtB,mBAAoB,CAClB,CAAE/H,KAAM0I,EAAyB7E,KAAM+C,GAAOI,SAIpDkB,eAlBF,WAmBI,OAAOU,EAAO9J,QAEhBmJ,sBArBF,WAqB2B,IAAD,OAEtB,OADcW,EAAOY,WAAU,SAACxB,GAAD,OAAW,EAAKF,eAAiBE,KACjD,GAEjByB,aAzBF,WA0BI,IAAMC,EAAqBrK,KAAK4I,wBAChC,OAAIyB,IAAuBd,EAAO9J,OAAe,KAC1C8J,EAAOc,IAEhBC,YA9BF,WA+BI,OAAO1M,IAAMiJ,QAAU,GAEzB0D,eAjCF,WAkCI,OAAO3M,IAAM0M,eAAiBhB,KAEhCkB,OApCF,WAqCI,OAAOlB,KAA0BI,KAEnCe,wBAvCF,WAwCI,OAAOnB,MAA2BI,KAKpCgB,eA7CF,WA8CQ9M,IAAM4M,WAEV7M,EAAI,CAAE8K,aAAcc,EAAO3L,IAAMgL,2BAEjCjL,GAAI,SAACwD,GAAD,MAAY,CACd0F,OAAQ,IACRiD,WAAY,KACZC,gBAAiB5I,EAAM4I,gBAAkB,EACzCrB,mBAAoBF,UAIxBmC,kBA1DF,SA0DoBxF,GAChBxH,EAAI,CACF+K,mBAAoB9K,IAAM8K,mBAAmBS,QAC3C,SAACxH,GAAD,OAAOwD,EAAWxE,KAAOgB,EAAEhB,QAHH,IAOpB8H,EAAiB7K,IAAjB6K,aAEFmC,EAAYnC,EAAaoC,mBAAmB1F,EAAWX,MAEzDoG,GAAWnC,EAAaqC,gBAAgB3F,EAAWX,MAGrDiE,EAAagB,WACb7L,IAAMgL,0BAA4BhL,IAAMiL,kBAExCxK,GAAoB,GACpBY,EAAUf,EAAmB,IAG/Be,EACEwJ,EAAagB,UACTvL,EACA0M,EACA1M,EACAA,GAINP,GAAI,SAACwD,GAAD,MAAY,CACd0F,OAAQK,GAAM,EAAG,IAAK/F,EAAM0F,QAAU+D,EAAY,IAAM,KACxDjB,MAAOxI,EAAMwI,OAASiB,EAAY,KAAO,SAGtCA,GACHjN,GAAI,SAACwD,GAAD,MAAY,CAAEwI,MAAOxI,EAAMwI,MAAQ,QAGrClB,EAAagB,UACf9L,GAAI,SAACwD,GAAD,MAAY,CAAEwI,MAAOxI,EAAMwI,MAAQ,QAEvChM,EAAI,CAAE+K,mBAAoBF,MAG5B7K,GAAI,SAACwD,GAAD,MAAY,CACd2I,WAAYc,EAAY,QAAU,aAClCb,gBAAiB5I,EAAM4I,gBAAkB,OAI7CgB,mBA7GF,SA6GqB5F,GACjBxH,EAAI,CACF+K,mBAAoB9K,IAAM8K,mBAAmBS,QAC3C,SAACxH,GAAD,OAAOwD,EAAWxE,KAAOgB,EAAEhB,QAHF,IAOrB8H,EAAiB7K,IAAjB6K,aAEJA,EAAagB,YAEJhB,EAAaoC,mBAAmB1F,EAAWX,QAGtDvF,EAAUf,GACVP,GAAI,SAACwD,GAAD,MAAY,CACd0F,OAAQK,GAAM,EAAG,IAAK/F,EAAM0F,OAAS,IACrC8C,MAAOxI,EAAMwI,MAAQ,IACrBG,WAAY,OACZC,gBAAiB5I,EAAM4I,gBAAkB,OAI7CpM,EAAI,CAAE+K,mBAAoBF,aAKjBR,MAcf,SAASO,GAAmByC,GAC1B,IAAMC,EAASpD,GAAamD,GAAMlG,KAAI,SAACK,GAAD,MAAiB,CACrDX,KAAMW,EACNC,MAAM,MAGR,MAAO,CACL,WACE,OAAO4F,GAET,aACE,OAAOC,EAAOnG,KAAI,SAACoG,GAAD,OAAUA,EAAK1G,SAEnC,YACE,OAAOyG,GAET,sBACE,OAAOA,EAAO9B,QAAO,SAAC+B,GAAD,OAAWA,EAAK9F,QAAMN,KAAI,SAACoG,GAAD,OAAUA,EAAK1G,SAEhE,uBACE,OAAOsD,GAAsBkD,IAE/B,gBACE,OAAOC,EAAOzB,OAAM,SAACrE,GAAD,OAAgBA,EAAWC,SAEjD,eACE,OACE6F,EAAO9B,QAAO,SAAChE,GAAD,OAAgBA,EAAWC,QAAM3F,OAASwL,EAAOxL,QAGnEoL,mBAxBK,SAwBc1F,GACjB,OAAO8F,EAAOE,MACZ,SAACC,GAAD,OAAsBA,EAAiB5G,OAASW,MAGpD2F,gBA7BK,SA6BW3F,GACd,IAAM+F,EAAOD,EAAOI,MAAK,SAAC1J,GAAD,OAAOA,EAAE6C,OAASW,KACvC+F,IAAMA,EAAK9F,MAAO,KAKrB,SAASkG,GAAcN,GAC5B,OAAsD,IAA/CjD,GAAaoC,WAAU,SAACoB,GAAD,OAAOA,IAAMP,KCjWtC,IAAMQ,GAAoE,SAAC,GAE3E,IADL5B,EACI,EADJA,SACI,EACkB6B,cAAdC,EADJ,EACIA,KAAMC,EADV,EACUA,IACNC,EAAYC,cAAZD,QAER,OACE,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAOF,KAAI,UAAKA,EAAL,OACT,kBAAC,GAAD,CAAsBI,OAAQ,kBAAMF,EAAQ,SAE9C,kBAAC,IAAD,CAAOF,KAAMA,GACX,kBAAC,GAAD,CACEI,OAAQ,kBAAMF,EAAQ,GAAD,OAAID,EAAJ,QACrB/B,SAAUA,OAYLmC,GALS,WACtB,IAAMnC,EAAW5B,IAAS,SAAC7G,GAAD,OAAWA,EAAMyI,YAC3C,OAAO,kBAAC,GAAD,CAA0BA,SAAUA,KAUhCoC,GAA4D,SAAC,GAGnE,IAFLpC,EAEI,EAFJA,SACAkC,EACI,EADJA,OAEA,OACE,kBAAC,EAAD,CAAQ3P,UAAU,+CAChB,gCAEE,6BAASA,UAAU,qHACjB,kBAAC,GAAD,CAAkBgJ,WAAW,UAC7B,kBAAC,GAAD,CAAkBA,WAAW,kBAC7B,kBAAC,GAAD,CAAkBA,WAAW,aAG/B,kBAAC,GAAD,CAAW0B,OAAQ,GAAI1K,UAAU,cAGjC,uBAAGA,UAAU,gEACX,yBACEO,IAAKuP,KACLrP,IAAI,iBACJT,UAAU,6BACV2F,MAAO,CAAEoK,OAAQ,UALrB,wCAQE,0BAAM/P,UAAU,gBAAhB,4BAIF,uBAAGA,UAAU,8EACX,yBACEO,IAAKuP,KACLrP,IAAI,iBACJT,UAAU,4BACV2F,MAAO,CAAEoK,OAAQ,OAAQnF,UAAW,gBAEtC,0BAAM5K,UAAU,gBAAhB,aAPF,OAQE,6BACA,0BAAMA,UAAU,gBAAhB,eAIF,uBAAGA,UAAU,iEACX,0BAAMA,UAAU,8DAAhB,QAGA,yBACEO,IAAKuP,KACLrP,IAAI,iBACJT,UAAU,kBACV2F,MAAO,CAAEiF,UAAW,aAAcmF,OAAQ,SAR9C,gBAWE,6BACA,0BAAM/P,UAAU,gBAAgByN,GAChC,6BAbF,SAeE,6BACA,yBAAKlN,IAAKyP,KAAevP,IAAI,UAAUT,UAAU,WAIrD,yBAAKA,UAAU,wBAEb,4BAAQA,UAAU,gCAChB,yBAAKA,UAAU,sBACb,yBACEO,IAAK0P,KACLxP,IAAI,uBACJT,UAAU,eAEZ,yBACEO,IAAK0P,KACLxP,IAAI,uBACJT,UAAU,2BACV2F,MAAO,CACLuK,SAAU,mDAIhB,gCAAYlQ,UAAU,gHAAtB,WAEE,6BAFF,OAGM,0BAAMA,UAAU,gBAAhB,WAKV,yBAAKA,UAAU,cACb,kBAAC,EAAD,CAAQA,UAAU,8BAA8BiF,QAAS0K,GAAzD,gBAYKQ,GAA4D,SAAC,GAEnE,IADLR,EACI,EADJA,OAEA,OACE,kBAAC,EAAD,CAAQ3P,UAAU,iCAEhB,6BAASA,UAAU,qHACjB,kBAAC,GAAD,CAAkBgJ,WAAW,UAC7B,kBAAC,GAAD,CAAkBA,WAAW,gBAAgBC,MAAI,IACjD,kBAAC,GAAD,CAAkBD,WAAW,UAAUC,MAAI,KAG7C,kBAAC,GAAD,CAAWyB,OAAQ,GAAI1K,UAAU,cAGjC,0BAAMA,UAAU,kEAAhB,QAKA,4BAAQA,UAAU,qCAChB,yBAAKA,UAAU,sBACb,yBACEO,IAAK0P,KACLxP,IAAI,uBACJT,UAAU,eAEZ,yBACEO,IAAK0P,KACLxP,IAAI,uBACJT,UAAU,2BACV2F,MAAO,CACLuK,SAAU,oDAMlB,yBAAKlQ,UAAU,uCACb,kBAAC,EAAD,CACEA,UAAU,wCACV2F,MAAO,CAAEoK,OAAQ,MAAO5H,MAAO,OAC/BlD,QAAS0K,GAHX,UAMA,yBACEpP,IAAK+J,KACL7J,IAAI,gBACJT,UAAU,qCAEZ,yBACEO,IAAK6P,KACL3P,IAAI,iBACJT,UAAU,8BAEZ,yBAAKO,IAAK8P,KAAM5P,IAAI,OAAOT,UAAU,gCAGvC,yBAAKA,UAAU,yEACb,uBAAGA,UAAU,4BACX,0BAAMA,UAAU,gBAAe,0BAAMA,UAAU,aAAhB,KAA/B,SADF,qBAEE,6BACA,0BAAMA,UAAU,gBAAe,0BAAMA,UAAU,aAAhB,KAA/B,QAHF,uBAIE,6BACA,0BAAMA,UAAU,gBAAe,0BAAMA,UAAU,aAAhB,KAA/B,QALF,sBAME,6BACA,0BAAMA,UAAU,gBAAe,0BAAMA,UAAU,aAAhB,KAA/B,QAPF,gBASA,uBAAGA,UAAU,uBAAb,WACU,0BAAMA,UAAU,gBAAhB,mB,sIChKHsQ,GA7CmB,SAAC,GAM5B,IALLzB,EAKI,EALJA,KACA0B,EAII,EAJJA,gBACAC,EAGI,EAHJA,QACAxQ,EAEI,EAFJA,UACGI,EACC,gEACEG,EAwCR,SAA+BsO,GAC7B,OAAO1F,mBAAQ,WASb,MAR4C,CAC1C,eAAgBsH,KAChB,YAAaC,KACb,mBAAoBC,KACpB,yBAA0BC,KAC1B,mBAAoBC,MAGLhC,KAChB,CAACA,IAnDQiC,CAAsBjC,GAC5BlJ,EAAQgF,qBAAU,CACtBuF,SAAS,cAAD,OAAgB,IAAMK,EAAtB,mBACN,IAAMA,EADA,2BAKV,OACE,4CAAYnQ,EAAZ,CAAmBJ,UAAS,gCAA2BA,KACrD,yBAAKA,UAAU,qCAEZwQ,GACC,yBAAKxQ,UAAU,0DACb,yBAAKA,UAAU,kFACb,yBAAKA,UAAU,uDAKrB,yBAAKO,IAAKA,EAAKE,IAAI,uBAAuBT,UAAU,oBACpD,kBAAC,YAAS+Q,IAAV,CACExQ,IAAKA,EACLE,IAAI,uBAEJkF,MAAOA,EACP3F,UAAU,kCAId,gCACEA,UAAU,oHACV2F,MAAO,CAAEI,WAAY,cACpB8I,EAAKmC,iBChDd,IAuCeC,GAvC4D,SAAC,GAGrE,IAFLzD,EAEI,EAFJA,MACGpN,EACC,yBACE8Q,EAAWC,iBAAO3D,GACxB9H,qBAAU,WACRwL,EAASE,QAAU5D,KAErB,IAAM6D,EAAYH,EAASE,QAErBE,EAAS3G,qBAAU,CAAE6C,QAAO+D,OAAQA,UAAOC,OAP7C,EAQY7G,sBACd,iBAAO,CACL8G,KAAM,CAAE7G,UAAW,yBACnBzF,GAAG,WAAD,8BAAE,WAAOuM,EAAQC,GAAf,gBAAAvL,EAAA,6DACIwL,EAAYpE,EAAQ6D,EAAY,EADpC,SAEIK,EAAO,CACX9G,UAAU,SAAD,OAAWgH,EAAY,MAAQ,MAA/B,oBACPA,EAAY,IAAM,IADX,UAHT,uBAOIF,EAAO,CAAE9G,UAAW,0BAPxB,2CAAF,qDAAC,GASH2G,OAAQA,UAAOM,SAEjB,CAACrE,IAdI7H,EARH,qBAyBJ,OACE,wBAASvF,EACP,kBAAC,YAAS0R,KAAV,CACEnM,MAAOA,EACP3F,UAAU,uCACTsR,EAAO9D,MAAMrI,IAAG,SAACiK,GAAD,OAAOjE,KAAK4G,MAAM3C,SCxC3C,SAAS,KAA2Q,OAA9P,GAAWvN,OAAOqB,QAAU,SAAUC,GAAU,IAAK,IAAIC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,IAAK,CAAE,IAAIG,EAASF,UAAUD,GAAI,IAAK,IAAII,KAAOD,EAAc1B,OAAO4B,UAAUC,eAAeC,KAAKJ,EAAQC,KAAQL,EAAOK,GAAOD,EAAOC,IAAY,OAAOL,IAA2BS,MAAMC,KAAMR,WAEhT,SAAS,GAAyBE,EAAQQ,GAAY,GAAc,MAAVR,EAAgB,MAAO,GAAI,IAAkEC,EAAKJ,EAAnED,EAEzF,SAAuCI,EAAQQ,GAAY,GAAc,MAAVR,EAAgB,MAAO,GAAI,IAA2DC,EAAKJ,EAA5DD,EAAS,GAAQa,EAAanC,OAAOoC,KAAKV,GAAqB,IAAKH,EAAI,EAAGA,EAAIY,EAAWV,OAAQF,IAAOI,EAAMQ,EAAWZ,GAAQW,EAASG,QAAQV,IAAQ,IAAaL,EAAOK,GAAOD,EAAOC,IAAQ,OAAOL,EAFxM,CAA8BI,EAAQQ,GAAuB,GAAIlC,OAAOuC,sBAAuB,CAAE,IAAIC,EAAmBxC,OAAOuC,sBAAsBb,GAAS,IAAKH,EAAI,EAAGA,EAAIiB,EAAiBf,OAAQF,IAAOI,EAAMa,EAAiBjB,GAAQW,EAASG,QAAQV,IAAQ,GAAkB3B,OAAO4B,UAAUa,qBAAqBX,KAAKJ,EAAQC,KAAgBL,EAAOK,GAAOD,EAAOC,IAAU,OAAOL,EAMne,IAAI,GAAqB,IAAMoB,cAAc,IAAK,KAAmB,IAAMA,cAAc,OAAQ,CAC/FE,EAAG,sKAGD,GAAqB,IAAMF,cAAc,IAAK,MAE9C,GAAqB,IAAMA,cAAc,IAAK,MAE9C,GAAqB,IAAMA,cAAc,IAAK,MAE9CyN,GAAqB,IAAMzN,cAAc,IAAK,MAE9C0N,GAAqB,IAAM1N,cAAc,IAAK,MAE9C2N,GAAqB,IAAM3N,cAAc,IAAK,MAE9C4N,GAAqB,IAAM5N,cAAc,IAAK,MAE9C6N,GAAsB,IAAM7N,cAAc,IAAK,MAE/C8N,GAAsB,IAAM9N,cAAc,IAAK,MAE/C+N,GAAsB,IAAM/N,cAAc,IAAK,MAE/CgO,GAAsB,IAAMhO,cAAc,IAAK,MAE/CiO,GAAsB,IAAMjO,cAAc,IAAK,MAE/CkO,GAAsB,IAAMlO,cAAc,IAAK,MAE/CmO,GAAsB,IAAMnO,cAAc,IAAK,MAE/CoO,GAAsB,IAAMpO,cAAc,IAAK,MAE/C,GAAqB,SAA4BG,GACnD,IAAIC,EAASD,EAAKC,OACdC,EAAQF,EAAKE,MACbxE,EAAQ,GAAyBsE,EAAM,CAAC,SAAU,UAEtD,OAAoB,IAAMH,cAAc,MAAO,GAAS,CACtDC,GAAI,SACJ4K,EAAG,MACHwD,EAAG,MACH/J,MAAO,YACPC,OAAQ,YACRjE,QAAS,sBACTc,MAAO,CACLkN,iBAAkB,2BAEpBC,SAAU,WACV3S,IAAKwE,GACJvE,GAAQwE,EAAqB,IAAML,cAAc,QAAS,KAAMK,GAAS,KAAM,GAAO,GAAO,GAAO,GAAOoN,GAAOC,GAAOC,GAAOC,GAAOC,GAAQC,GAAQC,GAAQC,GAAQC,GAAQC,GAAQC,GAAQC,KAGhM,GAA0B,IAAMzS,YAAW,SAAUE,EAAOD,GAC9D,OAAoB,IAAMoE,cAAc,GAAoB,GAAS,CACnEI,OAAQxE,GACPC,OCpDC2S,IDsDS,ICtDuB,SAAC,GAAyB,IAAvBhT,EAAsB,EAAtBA,SAAU6E,EAAY,EAAZA,MACjD,OACE,yBAAK5E,UAAU,kEACb,yBAAKA,UAAU,sDACb,wBAAIA,UAAU,yDACX4E,GAEF7E,MAYIiT,GAA4D,SAAC,GAInE,IAHLC,EAGI,EAHJA,iBACAC,EAEI,EAFJA,SACA1F,EACI,EADJA,MAEA,OACE,yBAAKxN,UAAU,kEACb,yBAAKA,UAAU,kDACb,4BAAQA,UAAU,8BAChB,wBAAIA,UAAU,4CACX,oBAEH,yBAAKA,UAAU,yDAAf,SAGA,yBAAKA,UAAU,eACb,0BAAMA,UAAU,gCAAhB,SAGA,kBAAC,GAAD,CACEA,UAAU,uBACVwN,MAAOA,MAKb,yBAAKxN,UAAU,OACb,wBAAIA,UAAU,gEAAd,QAGA,yBAAKA,UAAU,4BACb,kBAAC,GAAD,CAAM6O,KAAMqE,EAAU3C,gBAAiB,IAAKC,SAAS,KAEvD,4BACExQ,UAAU,wCACViF,QAASgO,GAFX,gBAgBGE,GAAoD,SAAC,GAG3D,IAFLtE,EAEI,EAFJA,KACAuE,EACI,EADJA,QAEA,OACE,kBAAC,GAAD,CAAQxO,MAAM,aACZ,yBAAK5E,UAAU,4BACb,kBAAC,GAAD,CAAM6O,KAAMA,EAAM0B,gBAAiB,IAAKC,SAAS,KAEnD,4BAAQxQ,UAAU,8BAA8BiF,QAASmO,GAAzD,WAaOC,GAAoD,SAAC,GAI3D,IAHLxE,EAGI,EAHJA,KACAyE,EAEI,EAFJA,oBACAC,EACI,EADJA,SAEMC,EAAUlS,GAAc,SAAC0D,GAAD,OAAWA,EAAMtD,SACzCE,EAAcN,GAAc,SAAC0D,GAAD,OAAWA,EAAMpD,eAEnD,OACE,kBAAC,GAAD,CAAQgD,MAAM,eACZ,4BACEK,QAAS,kBAAMrD,KACf5B,UAAU,4EACTwT,EACC,kBAAC,EAAD,CAASxT,UAAU,iBAEnB,kBAAC,EAAD,CAAUA,UAAU,kBAGxB,yBAAKA,UAAU,4BACb,kBAAC,GAAD,CACE6O,KAAMA,EACN0B,gBAAiB+C,EACjB9C,QAASrB,GAAcN,MAG3B,4BAAQ7O,UAAU,8BAA8BiF,QAASsO,GACvD,kBAAC,GAAD,CAAiBvT,UAAU,2CAA4C,IADzE,Y,oBC7HN,SAASoL,GAAOC,GACd,OAAOA,EAAIF,KAAKG,MAAMH,KAAKC,SAAWC,EAAI/H,SAM5C,IA0CemQ,GA1CuC,SAAC,GAGhD,IAFLC,EAEI,EAFJA,OACGtT,EACC,4BAEYuK,sBAAU,iBAAO,CAC/B4G,OAAQA,UAAOM,MACfJ,KAAM,CAAEkC,QAAS,EAAG/I,UAAU,YAE9BzF,GAAG,WAAD,8BAAE,WAAOuM,EAAQC,GAAf,UAAAvL,EAAA,sEACIsL,EAAO,CAAEiC,QAAS,EAAG/I,UAAU,eADnC,uBAEI8G,EAAO,CAAEiC,QAAS,EAAG/I,UAAW,2BAFpC,2CAAF,qDAAC,OAJEjF,EAFH,qBAYEiO,EAAczK,mBAAQ,WAC1B,MAAkB,UAAXuK,EACHtI,GAAO,CAAC,QAAS,cAAe,UACrB,eAAXsI,EACAtI,GAAO,CAAC,QAAS,oBAAqB,QAC3B,SAAXsI,EACAtI,GAAO,CAAC,OAAQ,YAAa,YAC7B,OACH,IAEH,OAAIwI,EAEA,wBAASxT,EACP,kBAAC,YAAS0R,KAAV,CAEEnM,MAAOA,EACP3F,UAAS,2BACI,UAAX0T,EAAqB,aAAe,eAErCE,IAKF,M,gPC/BHC,GAAoB,WAAsB,IAArBC,EAAoB,uDAAT,IAC9BjG,EAAShC,IAAS,SAAC7G,GAAD,OAAWA,EAAM6I,UADI,EAG7BlD,sBACd,iBAAO,CACL5H,MAAO8K,EACP0D,OAAQ,CAAEuC,SAAUA,EAA2B,IAAhB3I,KAAKC,SAAiB,KACrDjG,GAAG,WAAD,8BAAE,WAAOuM,EAAQC,GAAf,gBAAAvL,EAAA,sDACI2N,EAAY5I,KAAKC,SAAW,GAAM,IAAM,GAD5C,uBAGMsG,EAAO,CACX9G,UAAU,UAAD,OAAYmJ,EAAZ,WACTtC,KAAM,CAAE7G,UAAW,kBALrB,iEAAF,qDAAC,MAUL,CAACiD,IAjB0C,oBAGtClI,EAHsC,KAmB7C,OAAOA,GAGIqO,GAAO9T,sBAA2B,SAACE,EAAOD,GACrD,OACE,yCAASC,EAAT,CAAgBD,IAAKA,IACnB,kBAAC,YAAS4Q,IAAV,CACExQ,IAAK0T,KACLxT,IAAI,OACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,eAEZ,kBAAC,YAAS+Q,IAAV,CACExQ,IAAK2T,KACLzT,IAAI,OACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,oBAEZ,kBAAC,YAAS+Q,IAAV,CACExQ,IAAK2T,KACLzT,IAAI,OACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,mBAEZ,kBAAC,YAAS+Q,IAAV,CACExQ,IAAK2T,KACLzT,IAAI,OACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,aAEZ,kBAAC,YAAS+Q,IAAV,CACExQ,IAAK4T,KACL1T,IAAI,OACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,oBAEZ,kBAAC,YAAS+Q,IAAV,CACExQ,IAAK0T,KACLxT,IAAI,OACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,cAEZ,kBAAC,YAAS+Q,IAAV,CACExQ,IAAK2T,KACLzT,IAAI,OACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,eAEZ,kBAAC,YAAS+Q,IAAV,CACExQ,IAAK2T,KACLzT,IAAI,OACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,cAEZ,kBAAC,YAAS+Q,IAAV,CACExQ,IAAK4T,KACL1T,IAAI,OACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,cAEZ,kBAAC,YAAS+Q,IAAV,CACExQ,IAAK4T,KACL1T,IAAI,OACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,oBAEZ,kBAAC,YAAS+Q,IAAV,CACExQ,IAAK4T,KACL1T,IAAI,OACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,oBAEZ,kBAAC,YAAS+Q,IAAV,CACExQ,IAAK4T,KACL1T,IAAI,OACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,oBAEZ,kBAAC,YAAS+Q,IAAV,CACExQ,IAAK4T,KACL1T,IAAI,OACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,cAEZ,kBAAC,YAAS+Q,IAAV,CACExQ,IAAK4T,KACL1T,IAAI,OACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,cAEZ,kBAAC,YAAS+Q,IAAV,CACExQ,IAAK4T,KACL1T,IAAI,OACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,cAEZ,kBAAC,YAAS+Q,IAAV,CACExQ,IAAK0T,KACLxT,IAAI,OACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,wBAMLoK,GAAU,WACrB,OACE,6BACE,kBAAC,YAAS2G,IAAV,CACExQ,IAAK8J,KACL5J,IAAI,UACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,WAMLwJ,GAAO,WAClB,OACE,6BACE,kBAAC,YAASuH,IAAV,CACExQ,IAAK6T,KACL3T,IAAI,OACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,aAEZ,kBAAC,YAAS+Q,IAAV,CACExQ,IAAK6T,KACL3T,IAAI,OACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,aAEZ,kBAAC,YAAS+Q,IAAV,CACExQ,IAAK6T,KACL3T,IAAI,OACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,cAEZ,kBAAC,YAAS+Q,IAAV,CACExQ,IAAK6T,KACL3T,IAAI,OACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,oBAEZ,kBAAC,YAAS+Q,IAAV,CACExQ,IAAK6T,KACL3T,IAAI,OACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,sBAMLsJ,GAAU,WACrB,OACE,6BACE,kBAAC,YAASyH,IAAV,CACExQ,IAAKgJ,KACL9I,IAAI,UACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,iBAMLoJ,GAAUlJ,sBAA2B,SAACE,EAAOD,GACxD,OACE,yCAASC,EAAT,CAAgBD,IAAKA,IACnB,kBAAC,YAAS4Q,IAAV,CACExQ,IAAK8I,KACL5I,IAAI,SACJT,UAAU,YACV2F,MAAOkO,GAAkB,OAE3B,kBAAC,YAAS9C,IAAV,CACExQ,IAAK8I,KACL5I,IAAI,SACJT,UAAU,oBACV2F,MAAOkO,GAAkB,WAMpB7J,GAAS,WACpB,OACE,6BACE,kBAAC,YAAS+G,IAAV,CACExQ,IAAK0J,KACLxJ,IAAI,SACJkF,MAAOkO,GAAkB,KACzB7T,UAAU,WAMLqU,GAAS,WACpB,OACE,6BACE,kBAAC,YAAStD,IAAV,CACExQ,IAAKqJ,KACLnJ,IAAI,gBACJT,UAAU,OACV2F,MAAOkO,GAAkB,SAMpBS,GAAe,WAC1B,OACE,6BACE,kBAAC,YAASvD,IAAV,CACExQ,IAAK+J,KACL7J,IAAI,gBACJT,UAAU,OACV2F,MAAOkO,GAAkB,SAMpBU,GAAgB,WAC3B,OACE,6BACE,kBAAC,YAASxD,IAAV,CACExQ,IAAKgK,KACL9J,IAAI,iBACJT,UAAU,OACV2F,MAAOkO,GAAkB,SAMpBhK,GAAU,WACrB,OACE,6BACE,kBAAC,YAASkH,IAAV,CACExQ,IAAKuJ,KACLrJ,IAAI,UACJT,UAAU,OACV2F,MAAOkO,GAAkB,OAE3B,kBAAC,YAAS9C,IAAV,CACExQ,IAAKiU,KACL/T,IAAI,UACJT,UAAU,cACV2F,MAAOkO,GAAkB,SAMpBnK,GAAQxJ,sBAA2B,SAACE,EAAOD,GACtD,OACE,yCAASC,EAAT,CAAgBD,IAAKA,IACnB,kBAAC,YAAS4Q,IAAV,CACExQ,IAAKkU,KACLhU,IAAI,QACJT,UAAU,YACV2F,MAAOkO,GAAkB,OAE3B,kBAAC,YAAS9C,IAAV,CACExQ,IAAKkU,KACLhU,IAAI,QACJT,UAAU,cACV2F,MAAOkO,GAAkB,QAE3B,kBAAC,YAAS9C,IAAV,CACExQ,IAAKkU,KACLhU,IAAI,QACJT,UAAU,kBACV2F,MAAOkO,GAAkB,WAMpB3J,GAAShK,sBAA2B,SAACE,EAAOD,GACvD,OACE,yCAASC,EAAT,CAAgBD,IAAKA,IACnB,kBAAC,YAAS4Q,IAAV,CACExQ,IAAKmU,KACLjU,IAAI,SACJT,UAAU,YACV2F,MAAOkO,GAAkB,OAE3B,kBAAC,YAAS9C,IAAV,CACExQ,IAAKmU,KACLjU,IAAI,SACJT,UAAU,mBACV2F,MAAOkO,GAAkB,WCpTlBc,GAN+B,SAAC,GAAoB,IAC3DC,EAOR,SAAgC5L,GAC9B,OAAOG,mBAAQ,WAgBb,MAfqE,CACnEC,WACA,gBAAiBiL,GACjB,eAAgBL,GAChB1K,WACAE,QACAQ,UACAH,WACAH,SACAQ,UACAE,WACA,gBAAiBkK,GACjB,iBAAkBC,IAGSvL,KAC5B,CAACA,IAzBwB6L,CADoC,EAAjB7L,YAG/C,OAAO4L,EAAsB,kBAACA,EAAD,MAA0B,M,cCqE1CE,GA9EC5U,sBACd,WAYEC,GACI,IAXF4U,EAWC,EAXDA,WACAC,EAUC,EAVDA,YACAC,EASC,EATDA,aACAC,EAQC,EARDA,QACAC,EAOC,EAPDA,YACApV,EAMC,EANDA,SACAgD,EAKC,EALDA,MACAqS,EAIC,EAJDA,WACGhV,EAGF,mHACGiV,EAAgBlE,mBADnB,EAE8CmE,eAF9C,oBAEIC,EAFJ,KAE0BC,EAF1B,KAGGC,EAAmBC,sBACvBC,aAAST,EAAS,GAAI,CAAEU,SAAS,EAAMC,UAAU,IACjD,IALC,EAQ8B1M,mBAAQ,WAQvC,MAAO,CANJ4L,GAA8B,GAAhB5J,KAAKC,UAAkB,IAAoB,GAAb2J,EAAmB,IAE/DA,GAA8B,GAAhB5J,KAAKC,UAAkB,IAAoB,GAAb2J,EAAmB,KACnD5J,KAAKF,IAAIuK,EAAiB1M,QAAU,EAAG0M,EAAiB3M,OAErEmM,EAAc7J,KAAKF,IAAIuK,EAAiB1M,QAAU,EAAG0M,EAAiB3M,UAEvE,CACDmM,EACAD,EACAS,EAAiB1M,OACjB0M,EAAiB3M,QArBhB,oBAQIiN,EARJ,KAQWC,EARX,KAQgBC,EARhB,KAQuBC,EARvB,KAwBGC,EAAQ/M,mBAAQ,kBAAMiM,GAA8B,IAAhBjK,KAAKC,SAAkB,OAAM,IAxBpE,EA0BaT,sBACd,iBAAO,CACL5H,QACAmT,QACApI,OAAO,EACPqI,SAAUV,EACVlE,OAAQ,CAAEuC,SAAUmB,GACpBxD,KAAM,CAAE7G,UAAU,eAAD,OAAiBkL,EAAjB,eAA6BE,EAA7B,WACjB7Q,GAAG,WAAD,8BAAE,WAAOuM,EAAQC,GAAf,UAAAvL,EAAA,sEACIsL,EAAO,CAAE9G,UAAU,eAAD,OAAiBmL,EAAjB,eAA2BE,EAA3B,YADtB,OAEFd,IAFE,2CAAF,qDAAC,GAIHiB,QACGpB,IACAD,IACAS,EAAiB1M,SACjB0M,EAAiB3M,SAEtB,CACEmM,EACAD,EACAS,EAAiB1M,OACjB0M,EAAiB3M,MACjB9F,IAvBG4C,EA1BJ,qBAqDH,OACE,kBAAC,YAASmF,IAAV,iBACM1K,EADN,CAEED,IAAKkW,aAAU,CAAChB,EAAeE,EAAsBpV,IACrDwF,MAAOA,IACN5F,MCiEHuW,GAA0C,SAAC,GAK1C,IAJLtB,EAII,EAJJA,YACAD,EAGI,EAHJA,WACAwB,EAEI,EAFJA,0BACAC,EACI,EADJA,sBAEMjK,EAAqBV,IAAS,SAAC7G,GAAD,OAAWA,EAAMuH,sBAC/CsB,EAAShC,IAAS,SAAC7G,GAAD,OAAWA,EAAM6I,UACnCoH,EA8HR,WACE,IAAMwB,EAAc5K,IAAS,SAAC7G,GAAD,OAAWA,EAAMyH,2BACxCiK,EAAc7K,IAAS,SAAC7G,GAAD,OAAWA,EAAM0H,oBAG9C,OAAOvD,mBACL,kBAA0DsN,GX3R5DE,EW2RkB,KAFE,MXvRpBC,EWsRoB,OAGCF,EXrR8BC,GAAQC,EAPtD,IACLD,EAEAC,IW0RE,CAACH,EAAaC,IArIKG,GACfC,EAAiB3F,iBAAuC,IAQ9D,OANAzL,qBAAU,WAC0B,IAA9B6G,EAAmBjJ,SACrBwT,EAAe1F,QAAU,MAE1B,CAAC7E,IAGF,oCACGA,EAAmB5D,KAAI,SAACK,EAAY+N,GAAb,OACtB,kBAAC,GAAD,CACEvT,IAAKwF,EAAWxE,GAChBrE,IAAG,+GAAE,SAACA,GACQ,OAARA,IAAc2W,EAAe1F,QAAQpI,EAAWxE,IAAMrE,MAE5D4C,MAAO8K,EACPuH,WAAY2B,EACZ/B,YAAaA,EACbD,WAAYA,EACZE,aAAcA,EACdE,YAAa,kBAAMqB,EAAsBxN,IACzCkM,QAAS,WACP4B,EAAe1F,QAAQpI,EAAWxE,KAChC+R,EACEvN,EACA8N,EAAe1F,QAAQpI,EAAWxE,MAGxCxE,UAAU,6CACV,kBAAC,GAAD,CAAYgJ,WAAYA,EAAWX,aAOvC2O,GAAU,WACd,IAAMxJ,EAAQ3B,IAAS,SAAC7G,GAAD,OAAWA,EAAMwI,SAClCK,EAAShC,IAAS,SAAC7G,GAAD,OAAWA,EAAM6I,UACnCE,EAASlC,IAAS,SAAC7G,GAAD,OAAWA,EAAM+I,UACnCc,EAAOhD,IAAS,SAAC7G,GAAD,OAAWA,EAAMsH,aAAauC,QAC9CvC,EAAeT,IAAS,SAAC7G,GAAD,OAAWA,EAAMsH,gBACzC2K,EAAYpL,IAAS,SAAC7G,GAAD,OAAWA,EAAMiJ,kBACtCM,EAAiB1C,IAAS,SAAC7G,GAAD,OAAWA,EAAMuJ,kBAC3CjB,EAAYzB,IAAS,SAAC7G,GAAD,OAAWA,EAAMsH,aAAagB,aACnDY,EAAqBrC,IAAS,SAAC7G,GAAD,OAAWA,EAAMyH,2BATjC,EAU0ByK,oBAAS,GAVnC,oBAUbC,EAVa,KAUIC,EAVJ,KAYpB,OAAI9J,GAAa2J,EAEb,kBAAC,GAAD,CACEzJ,MAAOA,EACP0F,SAAU+D,EAAUpI,KACpBoE,iBAAkB1E,IAIG,IAAvBL,GAA4BiJ,EAE5B,kBAAC,GAAD,CACEtI,KAAMA,EACNuE,QAAS,WACPgE,GAAmB,GACnBrJ,OAKJF,EAEA,kBAAC,GAAD,CACEgB,KAAMA,EACNyE,oBAA6C,IAAxBhH,EAAa+K,SAClC9D,SAAUxF,IAIT,MA8EMuJ,OA7Rc,WAC3B,IAAMC,EAAQ1L,KACR2L,EAAUrG,iBAAgC,MAC1CsG,EAAWtG,iBAA8B,MAHd,EAIImE,eAJJ,oBAI1BoC,EAJ0B,KAIVC,EAJU,OAKMrC,eALN,oBAK1BsC,EAL0B,KAKTC,EALS,KAO3BC,EAkQR,WACE,IAAMvL,EAAqBV,IAAS,SAAC7G,GAAD,OAAWA,EAAMuH,sBAC/CiC,EAAoB3C,IAAS,SAAC7G,GAAD,OAAWA,EAAMwJ,qBAC9CuJ,EAAY5G,iBAAiD,IAYnE,OAVAzL,qBAAU,WACRqS,EAAU3G,QAAU,GADN,qBAEW7E,GAFX,IAEd,2BAA6C,CAAC,IAAnCvD,EAAkC,QAC3C+O,EAAU3G,QAAQpI,EAAWxE,IAAMwT,aAASxJ,EAAmB,IAAK,CAClEoH,SAAS,EACTC,UAAU,KALA,iCAQb,CAACtJ,EAAoBiC,IAEjBkH,uBAAY,SAAC1M,GAClB,OAAO+O,EAAU3G,QAAQpI,EAAWxE,IAAIwE,KACvC,IAnRgCiP,GAPF,EC7BR,SAACC,GAGrB,IAAD,EACiBvN,sBAAU,iBAAO,CACpCC,UAAU,wBACV2G,OAAQA,UAAOM,UAHb,oBACGlM,EADH,KACUnE,EADV,KAKJ,MAAO,CACLmE,QACAwS,KAAMC,cACJ,YAAiB,IAAdC,EAAa,EAAbA,OACOC,EAA0BJ,EAA1BI,UAAWvD,EAAemD,EAAfnD,WACnB,GAAKuD,GAAcvD,EAAnB,CACA,IAAM3F,EACW,IAAZiJ,EAAO,GAAYtD,EAAcA,EAAcuD,EAAY,GAChE9W,EAAI,CACFoJ,UAAU,eAAD,OAAiBwE,EAAjB,iBAGb,CACEmJ,KAAM,ODiBYC,CAAY,CAClCF,UAAWX,EAAW9O,MACtBkM,WAAY8C,EAAYhP,QAFlBsP,EATyB,EASzBA,KAAMxS,EATmB,EASnBA,OAsOhB,WACE,IAAM8S,EAAU/I,cACVgJ,EAAY7M,IAAS,SAAC7G,GAAD,OAAWA,EAAMmJ,iBACtCwK,EAAM9M,IAAS,SAAC7G,GAAD,OAAWA,EAAMqJ,YAChCuK,EAAuB/M,IAAS,SAAC7G,GAAD,OACpCA,EAAMsJ,6BAGR5I,qBAAU,WACJiT,EAAKF,EAAQhJ,QAAQ,QAChBiJ,EAAWD,EAAQhJ,QAAQ,SAC3BmJ,GAAsBH,EAAQhJ,QAAQ,gBAC9C,CAACgJ,EAASE,EAAKD,EAAWE,IA7O7BC,GAsNF,WACE,IAAMC,EAAajN,IAAS,SAAC7G,GAAD,OAAWA,EAAM8I,SAE7CpI,qBAAU,WACR,OAAO,WAELoT,OAED,CAACA,IA7NJC,GAgBA,OACE,kBAAC,EAAD,eAAQ5Y,IAAKkW,aAAU,CAACoB,EAAUG,KAAuBO,KACvD,kBAAC,GAAD,MAEA,4BAAQnY,UAAU,4CAEhB,4BAAQA,UAAU,0BAA0BiF,QAASsS,EAAMxU,OACzD,yBACE8F,MAAM,KACNC,OAAO,KACPjE,QAAQ,YACR7E,UAAU,6BACV,0BAAMyE,EAAE,6CAKZ,kBAAC,IAAD,CAAMU,GAAG,KACP,4BAAQnF,UAAU,wEAAlB,SAKF,wBAAIA,UAAU,gDACXuX,EAAMjL,aAAa0M,MAAMrQ,KAAI,SAACoG,GAAD,OAC5B,kBAAC,GAAD,CACEvL,IAAKuL,EAAK1G,KACVW,WAAY+F,EAAK1G,KACjBY,KAAM8F,EAAK9F,WAIjB,kBAAC,GAAD,CAAWyB,OAAQ6M,EAAM7M,SACzB,kBAAC,GAAD,CACEmE,KAAM0I,EAAMjL,aAAauC,KACzB0B,gBAA+C,IAA9BgH,EAAMjL,aAAa+K,SACpCrX,UAAU,QACV2F,MAAO,CAAEsT,SAAU,QACnBzI,SAAS,IAEX,kBAAC,GAAD,CACEhD,MAAO+J,EAAM/J,MACbxN,UAAU,uEAId,kBAAC,GAAD,CACE+U,WAAY8C,EAAYhP,MACxBmM,YAAa6C,EAAY/O,OACzByN,0BA/DkB,SACtBvN,EACAkQ,GACI,IAAD,EA8LgBC,EAAgBC,EA7L7BzB,EAAU,UAAGH,EAAQpG,eAAX,aAAG,EAAiBiI,wBAC9B7D,EAAmB0D,EAAQG,wBAE7B1B,GAAcnC,IA0LC2D,EASvB,SAAwBG,GACtB,IAAM1G,EAAI0G,EAAK1G,EAAkB,IAAd0G,EAAKxQ,OAClBsG,EAAIkK,EAAKlK,EAAiB,GAAbkK,EAAKzQ,MAClBA,EAAqB,GAAbyQ,EAAKzQ,MACbC,EAAuB,GAAdwQ,EAAKxQ,OAEpB,OAAO,IAAIyQ,QAAQnK,EAAGwD,EAAG/J,EAAOC,GAxMV0Q,CAAe7B,GAyLAyB,EAzLa5D,EA2LhD2D,EAAMvT,IAAMwT,EAAMrJ,QAClBoJ,EAAMhR,MAAQiR,EAAMvT,MACpBsT,EAAMpJ,OAASqJ,EAAMxT,KACrBuT,EAAMtT,KAAOuT,EAAMjR,OA7Lf2P,EAA2B9O,KAuD3BwN,sBAAuB,SAACxN,GAAD,OACrBuO,EAAM3I,mBAAmB5F,MAI7B,kBAAC,GAAD,CACExF,IAAK+T,EAAM3J,gBACX8F,OAAQ6D,EAAM5J,WACd3N,UAAU,2IAIZ,kBAAC,YAAS+Q,IAAV,CACEtQ,IAAI,OACJF,IAAK8P,KACLlQ,IAAKkW,aAAU,CAACmB,EAASE,IACzB/R,MAAOA,EACP3F,UAAU,+FAGZ,yBACEO,IAAKkZ,KACLhZ,IAAI,QACJT,UAAU,wDE3HL0Z,GAA4E,SAAC,GAGnF,IAFLlM,EAEI,EAFJA,MACAC,EACI,EADJA,SAMA,OAJA/H,qBAAU,WACR5C,EAAUf,KACT,IAGD,kBAAC,EAAD,CAAQ/B,UAAU,+DAEhB,yBACEA,UAAU,mIACV2F,MAAO,CAAEC,IAAK,UAAWC,KAAM,YAFjC,cAMA,6BACE,wBAAI7F,UAAU,qCACZ,0BAAMA,UAAU,2CAAhB,OACA,0BAAMA,UAAU,oFAAhB,SAKF,yBAAKA,UAAU,6BAAf,QACQ,IACN,0BAAMA,UAAU,uCAAuCwN,IAGzD,yBAAKxN,UAAU,oDAAf,mBACkB,0BAAMA,UAAU,gBAAhB,OAChB,6BAFF,mBAGkB,0BAAMA,UAAU,gBAAgByN,GAChD,6BAJF,UAOA,kBAAC,IAAD,CAAMtI,GAAG,SACP,kBAAC,EAAD,CAAQnF,UAAU,eAAlB,iBAcK2Z,GAPa,WAC1B,IAAMnM,EAAQ3B,IAAS,SAAC7G,GAAD,OAAWA,EAAMwI,SAClCC,EAAW5B,IAAS,SAAC7G,GAAD,OAAWA,EAAMyI,YAE3C,OAAO,kBAAC,GAAD,CAA8BD,MAAOA,EAAOC,SAAUA,KCpChDmM,OAhBf,WACE,OACE,kBAAC,IAAD,KACE,kBAAC,IAAD,KACE,kBAAC,IAAD,CAAOrK,KAAK,aAAasK,UAAWF,KACpC,kBAAC,IAAD,CAAOpK,KAAK,QAAQsK,UAAWpU,IAC/B,kBAAC,IAAD,CAAO8J,KAAK,OAAOsK,UAAW7T,KAC9B,kBAAC,IAAD,CAAOuJ,KAAK,YAAYsK,UAAWrS,KACnC,kBAAC,IAAD,CAAO+H,KAAK,eAAesK,UAAWjK,KACtC,kBAAC,IAAD,CAAOL,KAAK,QAAQsK,UAAWvC,KAC/B,kBAAC,IAAD,CAAO/H,KAAK,IAAIsK,UAAW9U,OCRf+U,QACW,cAA7BC,OAAOC,SAASC,UAEe,UAA7BF,OAAOC,SAASC,UAEhBF,OAAOC,SAASC,SAASC,MACvB,2DCbNC,IAASC,OACP,kBAAC,IAAMC,WAAP,KACE,kBAAC,GAAD,OAEFC,SAASC,eAAe,SDkIpB,kBAAmBC,WACrBA,UAAUC,cAAcC,MACrBjY,MAAK,SAAAkY,GACJA,EAAaC,gBAEdC,OAAM,SAAAC,GACLC,QAAQD,MAAMA,EAAMzT,e","file":"static/js/main.51781bf5.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/meal-shawarma-poutin.50acde5a.png\";","module.exports = __webpack_public_path__ + \"static/media/poutine-sauce.2ef2c50b.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/badge-10-off.d0f8dba3.png\";","module.exports = __webpack_public_path__ + \"static/media/bowl.df9394cf.png\";","module.exports = __webpack_public_path__ + \"static/media/lettuce.9e988ecf.png\";","module.exports = __webpack_public_path__ + \"static/media/chipotle-sauce.712ecca8.png\";","module.exports = __webpack_public_path__ + \"static/media/arc-arrow-up.c9b617dd.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAqCAYAAACz+XvQAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGsGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDIxLTA2LTE4VDAxOjExOjMzKzAzOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMS0wNi0xOFQwMToxMzozNyswMzowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMS0wNi0xOFQwMToxMzozNyswMzowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxMzdmZjExYS0wNWI5LTljNGEtYjFhMC1lZWEzZDRjNTRkODQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDgxYTQ0N2EtMzdlNS0wMDQ1LWE0ZTMtNmEyYzViMTM1MmY1IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6NDgxYTQ0N2EtMzdlNS0wMDQ1LWE0ZTMtNmEyYzViMTM1MmY1Ij4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0iY3JlYXRlZCIgc3RFdnQ6aW5zdGFuY2VJRD0ieG1wLmlpZDo0ODFhNDQ3YS0zN2U1LTAwNDUtYTRlMy02YTJjNWIxMzUyZjUiIHN0RXZ0OndoZW49IjIwMjEtMDYtMThUMDE6MTE6MzMrMDM6MDAiIHN0RXZ0OnNvZnR3YXJlQWdlbnQ9IkFkb2JlIFBob3Rvc2hvcCAyMS4wIChXaW5kb3dzKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YzQwYmRmYjQtNjE5MS1kMzRmLWI1NDctYWEyNDI2OGVmODQ1IiBzdEV2dDp3aGVuPSIyMDIxLTA2LTE4VDAxOjEzOjE1KzAzOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjEzN2ZmMTFhLTA1YjktOWM0YS1iMWEwLWVlYTNkNGM1NGQ4NCIgc3RFdnQ6d2hlbj0iMjAyMS0wNi0xOFQwMToxMzozNyswMzowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIDIxLjAgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PmaKICAAAAY9SURBVEgNBcFLj53nQQDg5718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\"","module.exports = __webpack_public_path__ + \"static/media/fries-piece.3a93351b.png\";","module.exports = __webpack_public_path__ + \"static/media/tomato.01266b72.png\";","module.exports = __webpack_public_path__ + \"static/media/pickle.23685da9.png\";","module.exports = __webpack_public_path__ + \"static/media/start-screen-header.063d9185.svg\";","module.exports = __webpack_public_path__ + \"static/media/start-screen-footer.ff6f628c.svg\";","module.exports = __webpack_public_path__ + \"static/media/screen-texture.cfc9809d.jpg\";","module.exports = __webpack_public_path__ + \"static/media/game-bg.15405168.jpg\";","module.exports = __webpack_public_path__ + \"static/media/you-messed-up.a29025c8.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo-slogan-light.33d08b3c.png\";","module.exports = __webpack_public_path__ + \"static/media/arc-arrow-down.c823e347.svg\";","module.exports = __webpack_public_path__ + \"static/media/avatar-tomato.3588cd3c.png\";","module.exports = __webpack_public_path__ + \"static/media/avatar-chicken.ce205d92.png\";","module.exports = __webpack_public_path__ + \"static/media/avatar-corn.0903462c.png\";","module.exports = __webpack_public_path__ + \"static/media/avatar-fries.cd9480ff.png\";","module.exports = __webpack_public_path__ + \"static/media/avatar-garlic.35ce5127.png\";","module.exports = __webpack_public_path__ + \"static/media/avatar-parsley.f63786f0.png\";","module.exports = __webpack_public_path__ + \"static/media/avatar-rice.dc100482.png\";","module.exports = __webpack_public_path__ + \"static/media/avatar-tahini.a0ff8359.png\";","module.exports = __webpack_public_path__ + \"static/media/avatar-pickels.65317f4b.png\";","module.exports = __webpack_public_path__ + \"static/media/meal-chicken-rice-bowl.12153342.png\";","module.exports = __webpack_public_path__ + \"static/media/meal-shelbys-wrap.8d124733.png\";","module.exports = __webpack_public_path__ + \"static/media/meal-shawarma-burito.716f21d1.png\";","module.exports = __webpack_public_path__ + \"static/media/meal-traditional-wrap.8eb48434.png\";","module.exports = __webpack_public_path__ + \"static/media/table.6345b710.png\";","module.exports = __webpack_public_path__ + \"static/media/garlic.e212d85d.png\";","module.exports = __webpack_public_path__ + \"static/media/chicken.ce205d92.png\";","module.exports = __webpack_public_path__ + \"static/media/tahini.a0ff8359.png\";","module.exports = __webpack_public_path__ + \"static/media/parsley.60c631c2.png\";","module.exports = __webpack_public_path__ + \"static/media/parsley-2.6249dae5.png\";","module.exports = __webpack_public_path__ + \"static/media/jazz-1.0740af77.mp3\";","module.exports = __webpack_public_path__ + \"static/media/select-1.08a46097.wav\";","module.exports = __webpack_public_path__ + \"static/media/select-2.9a104abc.wav\";","module.exports = __webpack_public_path__ + \"static/media/pick-up.043f63ee.mp3\";","module.exports = __webpack_public_path__ + \"static/media/missed.093eed4f.mp3\";","module.exports = __webpack_public_path__ + \"static/media/lost.b1bd33b2.mp3\";","module.exports = __webpack_public_path__ + \"static/media/level-up.b30ab501.mp3\";","module.exports = __webpack_public_path__ + \"static/media/winning-music.43a00e46.mp3\";","import React, { forwardRef } from \"react\";\r\nimport texture from \"assets/img/screen-texture.jpg\";\r\nimport gameBG from \"assets/img/game-bg.jpg\";\r\n\r\nconst ScreenWrapper: React.FC> = ({\r\n children,\r\n className,\r\n}) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nconst ScreenContent = forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes\r\n>(({ children, className, ...props }, ref) => {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n});\r\n\r\nconst Screen = forwardRef>(\r\n ({ children, ...props }, ref) => {\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n }\r\n);\r\n\r\nconst ScreenDark = forwardRef<\r\n HTMLDivElement,\r\n React.HTMLAttributes\r\n>(({ children, ...props }, ref) => {\r\n return (\r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n});\r\n\r\nconst ScreenGameRoom = forwardRef<\r\nHTMLDivElement,\r\nReact.HTMLAttributes\r\n>(({ children, ...props }, ref) => {\r\nreturn (\r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n);\r\n});\r\n\r\nconst DarkTexture = () => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport { ScreenDark, Screen, ScreenGameRoom };\r\n","const bg = new Audio(require(\"./jazz-1.mp3\"));\r\nconst select1 = new Audio(require(\"./select-1.wav\"));\r\nconst select2 = new Audio(require(\"./select-2.wav\"));\r\nconst pickup = new Audio(require(\"./pick-up.mp3\"));\r\nconst missed = new Audio(require(\"./missed.mp3\"));\r\nconst lost = new Audio(require(\"./lost.mp3\"));\r\nconst levelup = new Audio(require(\"./level-up.mp3\"));\r\nconst winnerMusic = new Audio(require(\"./winning-music.mp3\"));\r\n\r\nexport { bg, select1, select2, pickup, missed, lost, levelup, winnerMusic };\r\n","import create from \"zustand\";\r\nimport * as audio from \"assets/audio\";\r\nimport canAutoplay from \"can-autoplay\";\r\n\r\ntype State = {\r\n sound: boolean;\r\n _soundLoaded: boolean;\r\n toggleSound: (sound?: boolean) => void;\r\n};\r\n\r\nconst useAudioStore = create((set, get) => {\r\n return {\r\n sound: false,\r\n _soundLoaded: false,\r\n toggleSound(sound = !get().sound) {\r\n set({ sound });\r\n\r\n if (get()._soundLoaded === false) {\r\n Object.values(audio).forEach(prepareAudioForSafari);\r\n set({ _soundLoaded: true });\r\n }\r\n\r\n playBackgroundMusic();\r\n },\r\n };\r\n});\r\n\r\nfunction prepareAudioForSafari(audio: HTMLAudioElement) {\r\n audio.volume = 0;\r\n audio.muted = true;\r\n audio.loop = false;\r\n audio.play();\r\n}\r\n\r\n// set initial sound\r\ncanAutoplay.audio({ timeout: 500 }).then((r) => {\r\n useAudioStore.setState({ sound: r.result });\r\n\r\n if (useAudioStore.getState().sound) {\r\n useAudioStore.getState().toggleSound(true);\r\n }\r\n});\r\n\r\nexport default useAudioStore;\r\n\r\nexport function playBackgroundMusic(play: boolean = true) {\r\n if (play) playAudio(audio.bg, 0.9, true);\r\n else audio.bg.pause();\r\n}\r\n\r\nexport function playAudio(audio: HTMLAudioElement, volume = 0.6, loop = false) {\r\n if (useAudioStore.getState().sound) {\r\n audio.currentTime = 0;\r\n audio.volume = volume;\r\n audio.muted = false;\r\n audio.loop = loop;\r\n audio.play();\r\n } else audio.pause();\r\n}\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Layer_2\",\n \"data-name\": \"Layer 2\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Layer_1-2\",\n \"data-name\": \"Layer 1\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0,79.64c3.12-5.87,8.1-7.87,14.6-7.75,12.49.25,25,.17,37.5,0,3.44,0,4.48,1.13,4.47,4.54q-.12,78.18,0,156.37c0,3.4-1,4.61-4.46,4.56-12.37-.16-24.76-.27-37.12,0-6.64.16-11.75-1.77-15-7.76Z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M384,169.64c-1.51,10.37-3,20.74-5.86,30.85a168.32,168.32,0,0,1-42.37,72.71c-3.48,3.54-7.55,5.32-12.54,3.73-4.62-1.47-7.16-4.83-8-9.49-.73-3.89.75-7.11,3.38-9.86a154.88,154.88,0,0,0,23.7-31.28A142.48,142.48,0,0,0,360.64,164c2.43-43.46-11.79-80.67-41.8-112-3.38-3.53-4.8-7.55-3.1-12.33A11.22,11.22,0,0,1,325.06,32c4.33-.71,7.77,1.12,10.72,4.12a168.34,168.34,0,0,1,42.36,72.72c2.9,10.11,4.35,20.48,5.86,30.84Z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M228.23,154.84q0,66.16,0,132.33c0,13.17-10.14,22.8-23.05,22.16a22.8,22.8,0,0,1-9.91-3.16q-56.81-31.26-113.6-62.51c-2.24-1.23-3.21-2.63-3.21-5.26q.09-83.77,0-167.56c0-2.64,1-4,3.24-5.24Q138.35,34.5,195,3.28c16.18-8.89,33.24,1.17,33.26,19.62Q228.27,88.87,228.23,154.84Z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M339.35,154.59c-.33,33.78-12.12,62.87-35.76,87.09-4.13,4.23-9.1,5.07-14,2.67a11.49,11.49,0,0,1-6.25-11.45c.3-3.45,2.26-6,4.55-8.37,13.57-14.31,22.76-31,26.24-50.48q9.13-51-26.14-89.18c-2.34-2.53-4.42-5.09-4.66-8.7a11.58,11.58,0,0,1,19.9-9,122.51,122.51,0,0,1,36.14,87.37Z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M294.29,154.62c-.09,21.18-7.38,39.5-22.1,54.79-5.41,5.62-12.23,6-17.27,1.12-4.81-4.66-4.73-11.67.44-17.08a55.65,55.65,0,0,0,.29-77.26c-2.69-2.83-4.56-6-4.14-10a11.17,11.17,0,0,1,7.8-10c4.61-1.65,8.63-.47,12,2.87a76.47,76.47,0,0,1,21.36,39.23A63.93,63.93,0,0,1,294.29,154.62Z\"\n})));\n\nvar SvgSoundOn = function SvgSoundOn(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 384 309.36\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgSoundOn, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/sound-on.13e8a473.svg\";\nexport { ForwardRef as ReactComponent };","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Layer_2\",\n \"data-name\": \"Layer 2\"\n}, /*#__PURE__*/React.createElement(\"g\", {\n id: \"Layer_1-2\",\n \"data-name\": \"Layer 1\"\n}, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0,79.47c3.12-5.86,8.1-7.86,14.6-7.73,12.49.24,25,.16,37.5,0,3.44,0,4.48,1.13,4.47,4.53q-.12,78,0,156.07c0,3.39-1,4.6-4.46,4.55-12.37-.16-24.76-.26-37.12,0-6.64.15-11.75-1.78-15-7.75Z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M384,213.46c-5,9.44-13.4,10.82-21,3.31q-21.4-21.22-42.63-42.63c-2.57-2.61-4-2.94-6.74-.11-14.15,14.44-28.57,28.62-42.86,42.93-3.38,3.4-7.22,5.36-12.11,4.19a11.34,11.34,0,0,1-7.29-17.06,26,26,0,0,1,4.06-4.85c13.94-14,27.85-27.93,41.92-41.76,2.47-2.43,2.45-3.89,0-6.31-14.33-14.1-28.49-28.35-42.73-42.54-3.22-3.21-5.58-6.81-4.82-11.59a11.67,11.67,0,0,1,19.6-6.61c4,3.74,7.83,7.7,11.72,11.58,11,10.93,22,21.78,32.8,32.86,2.51,2.57,3.87,2.24,6.19-.11,14.22-14.38,28.6-28.6,42.89-42.91,3.58-3.59,7.61-5.63,12.79-4.28,4.1,1.06,6.55,3.91,8.19,7.62v7.49a35.12,35.12,0,0,1-5.9,7.2c-13.9,13.82-27.7,27.73-41.68,41.47-2.36,2.32-2.35,3.63,0,6,14,13.74,27.79,27.64,41.69,41.46A35.13,35.13,0,0,1,384,206Z\"\n}), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M228.23,154.32q0,66.23,0,132.44a21.53,21.53,0,0,1-22.83,22,22.37,22.37,0,0,1-9.94-3.06q-57-31.29-113.93-62.56c-2.32-1.27-3.06-2.81-3-5.35q.08-83.43,0-166.86c0-2.78,1-4.23,3.4-5.52q56.51-30.95,113-62c16.4-9,33.43,1,33.44,19.65Q228.27,88.67,228.23,154.32Z\"\n})));\n\nvar SvgSoundOff = function SvgSoundOff(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 384 308.74\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgSoundOff, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/sound-off.f474d040.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport header from \"assets/svg/start-screen-header.svg\";\r\nimport footer from \"assets/svg/start-screen-footer.svg\";\r\nimport { ScreenDark as Screen } from \"components/Screen\";\r\nimport useAudioStore, { playAudio } from \"hooks/useAudioStore\";\r\nimport * as audio from \"assets/audio\";\r\nimport { ReactComponent as SoundOn } from \"assets/svg/sound-on.svg\";\r\nimport { ReactComponent as SoundOff } from \"assets/svg/sound-off.svg\";\r\n\r\nconst StartScreen = () => {\r\n const sound = useAudioStore((state) => state.sound);\r\n const toggleSound = useAudioStore((state) => state.toggleSound);\r\n\r\n return (\r\n \r\n
\r\n toggleSound()}\r\n className='font-headline-rust text-light text-2xl sm:text-3xl flex items-center'>\r\n Sound {sound ? \"On\" : \"Off\"}\r\n {sound ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n playAudio(audio.select1)}>\r\n Start\r\n \r\n \r\n \r\n playAudio(audio.select2)}>\r\n How to play\r\n \r\n \r\n
\r\n\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default StartScreen;\r\n","import React from \"react\";\r\nimport * as audio from \"assets/audio\";\r\nimport { playAudio } from \"hooks/useAudioStore\";\r\n\r\nconst Button: React.FC> = (props) => {\r\n return (\r\n {\r\n playAudio(audio.select1);\r\n props.onClick && props.onClick(e);\r\n }}\r\n />\r\n );\r\n};\r\n\r\nexport default Button;\r\n","import React, { useEffect } from \"react\";\r\nimport { ScreenDark as Screen } from \"components/Screen\";\r\nimport { Link } from \"react-router-dom\";\r\nimport Button from \"components/Button\";\r\nimport youMessedUo from \"assets/svg/you-messed-up.svg\";\r\nimport { playAudio } from \"hooks/useAudioStore\";\r\nimport * as audio from \"assets/audio\";\r\n\r\nconst LoseScreen = () => {\r\n useEffect(() => {\r\n playAudio(audio.lost)\r\n }, []);\r\n\r\n return (\r\n \r\n {/* Badge */}\r\n \r\n this sucks\r\n \r\n\r\n
\r\n \"You\r\n\r\n \r\n \r\n Try Again\r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default LoseScreen;\r\n","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { ScreenDark as Screen } from \"components/Screen\";\r\nimport badge from \"assets/img/badge-10-off.png\";\r\nimport Button from \"components/Button\";\r\n\r\nconst WinScreen = () => {\r\n return (\r\n \r\n
\r\n
\r\n {/* You Win */}\r\n

\r\n You\r\n \r\n Won\r\n \r\n

\r\n\r\n {/* Badge */}\r\n 10% Off\r\n
\r\n\r\n {/* Order Button */}\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default WinScreen;\r\n","import React from \"react\";\r\nimport { ScreenDark as Screen } from \"components/Screen\";\r\nimport { SubmitHandler, useForm } from \"react-hook-form\";\r\nimport logo from \"assets/img/logo-slogan-light.png\";\r\n\r\ntype DiscountSubmitionRequestUserInputs = {\r\n name: string;\r\n email: string;\r\n mobile: string;\r\n address: string;\r\n};\r\n\r\ntype DiscountSubmitionRequestInputs = DiscountSubmitionRequestUserInputs & {\r\n app_id: string;\r\n};\r\n\r\nconst submitDiscount = async (\r\n inputs: DiscountSubmitionRequestUserInputs\r\n): Promise => {\r\n if (process.env.NODE_ENV !== \"production\") return \"server response\";\r\n\r\n const data: DiscountSubmitionRequestInputs = { ...inputs, app_id: \"4\" };\r\n const response = await fetch(\"/shelbeys/public/api/sendForm\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n appToken: \"6019bf0f1c10c05bc1b5733da1425001e1da7f0283ece\",\r\n },\r\n body: JSON.stringify(data),\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error(response.status + \" \" + response.statusText);\r\n }\r\n\r\n type JSONResponse = {\r\n status: boolean;\r\n code:\r\n | 200 // success\r\n | 201; // failed\r\n message: string;\r\n };\r\n\r\n const { status, code, message }: JSONResponse = await response.json();\r\n\r\n if (!status) {\r\n if (code === 201) {\r\n throw new Error(message);\r\n }\r\n\r\n throw new Error(\r\n message || \"Unknown error happend check your internet connection.\"\r\n );\r\n }\r\n\r\n return message;\r\n};\r\n\r\nconst DiscountScreen = () => {\r\n const {\r\n register,\r\n handleSubmit,\r\n errors,\r\n formState,\r\n setError,\r\n clearErrors,\r\n } = useForm();\r\n\r\n const onSubmit: SubmitHandler = async (\r\n inputs\r\n ) => {\r\n try {\r\n await submitDiscount(inputs);\r\n } catch (error) {\r\n setError(\"server\", { type: \"server\", message: error?.message });\r\n throw error;\r\n }\r\n };\r\n\r\n if (formState.isSubmitSuccessful) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n {/* Badge */}\r\n \r\n Shelby's\r\n
\r\n Winner\r\n
\r\n \r\n\r\n {/* Title */}\r\n

\r\n You deserve\r\n \r\n 10% off\r\n \r\n

\r\n\r\n {/* Form */}\r\n {\r\n clearErrors(\"server\");\r\n return handleSubmit(onSubmit)(e);\r\n }}>\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n
\r\n {/* Order Button */}\r\n \r\n {formState.isSubmitting ? \"Wait please\" : \"GET YOUR DISCOUNT\"}\r\n \r\n\r\n {/* Errors */}\r\n {errors.server && (\r\n
    \r\n {errors.server.message?.split(\"\\n\").map((text, i) => (\r\n
  • {text}
  • \r\n ))}\r\n
\r\n )}\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport const DiscountSentScreen = () => {\r\n return (\r\n \r\n
\r\n \"Shelby's\r\n
\r\n

\r\n We hope you enjoyed the game!\r\n

\r\n

\r\n We’ve sent the discount coupon code to your email.\r\n

\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default DiscountScreen;\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0 11.386l1.17-1.206c1.951.522 5.313 1.731 8.33 3.597 3.175-4.177 9.582-9.398 13.456-11.777l1.044 1.073-14 18.927-10-10.614z\"\n});\n\nvar SvgCheckMark = function SvgCheckMark(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgCheckMark, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/check-mark.495b4261.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useMemo } from \"react\";\r\nimport { IngredientName } from \"../store\";\r\nimport tomato from \"assets/img/avatars/avatar-tomato.png\";\r\nimport chicken from \"assets/img/avatars/avatar-chicken.png\";\r\nimport corn from \"assets/img/avatars/avatar-corn.png\";\r\nimport fries from \"assets/img/avatars/avatar-fries.png\";\r\nimport garlic from \"assets/img/avatars/avatar-garlic.png\";\r\nimport parsley from \"assets/img/avatars/avatar-parsley.png\";\r\nimport rice from \"assets/img/avatars/avatar-rice.png\";\r\nimport tahini from \"assets/img/avatars/avatar-tahini.png\";\r\nimport pickels from \"assets/img/avatars/avatar-pickels.png\";\r\nimport lettuce from \"assets/img/ingredients/lettuce.png\";\r\nimport poutineSauce from \"assets/img/ingredients/poutine-sauce.png\";\r\nimport chipotleSauce from \"assets/img/ingredients/chipotle-sauce.png\";\r\nimport { ReactComponent as CheckMark } from \"assets/svg/check-mark.svg\";\r\n\r\ntype IngredientAvatarProps = {\r\n ingredient: IngredientName;\r\n done?: boolean;\r\n};\r\n\r\nconst IngredientAvatar: React.FC = ({\r\n ingredient,\r\n done,\r\n ...props\r\n}) => {\r\n const IngredientSrc = useIngredientAvatarImageSrc(ingredient);\r\n\r\n return (\r\n
\r\n \r\n {done && (\r\n \r\n )}\r\n
{ingredient}
\r\n
\r\n );\r\n};\r\n\r\nexport default IngredientAvatar;\r\n\r\nfunction useIngredientAvatarImageSrc(ingredient: IngredientName) {\r\n return useMemo(() => {\r\n const ingredientsImages: Record = {\r\n Tomatos: tomato,\r\n Chicken: chicken,\r\n Corn: corn,\r\n Fries: fries,\r\n \"Creamy Garlic\": garlic,\r\n Parsley: parsley,\r\n \"Basmati Rice\": rice,\r\n Tahini: tahini,\r\n Pickle: pickels,\r\n Lettuce: lettuce,\r\n \"Poutine Sauce\": poutineSauce,\r\n \"Chipotle Sauce\": chipotleSauce,\r\n };\r\n\r\n return ingredientsImages[ingredient];\r\n }, [ingredient]);\r\n}\r\n","import React from \"react\";\r\nimport { useSpring, animated } from \"react-spring\";\r\n\r\ntype HealthBarProps = React.HTMLAttributes & { health: number };\r\n\r\nconst HealthBar: React.FC = ({\r\n health,\r\n className,\r\n ...props\r\n}) => {\r\n const style = useSpring({\r\n transform: `scaleX(${health / 100})`,\r\n backgroundColor: health < 35 ? \"red\" : \"#E76208\",\r\n });\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default HealthBar;\r\n","export function clamp(min: number, max: number, value: number) {\r\n return Math.max(min, Math.min(max, value));\r\n}\r\n\r\nexport function random(arr: ReadonlyArray) {\r\n return arr[Math.floor(Math.random() * arr.length)];\r\n}\r\n\r\nexport function linearMap(\r\n min1: number,\r\n max1: number,\r\n min2: number,\r\n max2: number,\r\n value1: number\r\n) {\r\n return ((value1 - min1) * (max2 - min2)) / (max1 - min1) + min2;\r\n}\r\n\r\nexport function shuffle(array: Array) {\r\n const arr = array.slice();\r\n for (var i = arr.length - 1; i > 0; i--) {\r\n var j = Math.floor(Math.random() * (i + 1));\r\n var temp = arr[i];\r\n arr[i] = arr[j];\r\n arr[j] = temp;\r\n }\r\n return arr;\r\n}\r\n\r\n/**\r\n *\r\n * @param probability 0 - 1\r\n */\r\nexport function probability(probability: number) {\r\n return Math.random() < probability;\r\n}\r\n","import create from \"zustand\";\r\nimport * as audio from \"assets/audio\";\r\nimport { playAudio, playBackgroundMusic } from \"hooks/useAudioStore\";\r\nimport { clamp, probability, random, shuffle } from \"utils\";\r\nimport { useEffect } from \"react\";\r\n\r\nconst ingredients = [\r\n \"Creamy Garlic\",\r\n \"Basmati Rice\",\r\n \"Chicken\",\r\n \"Corn\",\r\n \"Tahini\",\r\n \"Parsley\",\r\n \"Fries\",\r\n \"Pickle\",\r\n \"Poutine Sauce\",\r\n \"Chipotle Sauce\",\r\n \"Lettuce\",\r\n \"Tomatos\",\r\n] as const;\r\n\r\nconst meals = [\r\n \"Shawarma Fries Poutine\",\r\n \"Rice Bowl\",\r\n \"Shelbys Wrap\",\r\n \"Shawarma Burrito\",\r\n \"Traditional Wrap\",\r\n] as const;\r\n\r\nexport type IngredientName = typeof ingredients[number];\r\nexport type MealName = typeof meals[number];\r\n\r\nconst mealsRecipes: Record = {\r\n \"Shelbys Wrap\": [\"Tomatos\", \"Tahini\", \"Lettuce\"],\r\n \"Rice Bowl\": [\"Basmati Rice\", \"Creamy Garlic\", \"Tahini\"],\r\n \"Shawarma Burrito\": [\"Basmati Rice\", \"Corn\", \"Chipotle Sauce\"],\r\n \"Shawarma Fries Poutine\": [\"Parsley\", \"Fries\", \"Poutine Sauce\"],\r\n \"Traditional Wrap\": [\"Chicken\", \"Pickle\", \"Creamy Garlic\"],\r\n};\r\n\r\nconst mealsWrongIngredients: Record = {\r\n \"Shelbys Wrap\": [\"Chipotle Sauce\", \"Corn\", \"Parsley\"],\r\n \"Rice Bowl\": [\"Poutine Sauce\", \"Parsley\", \"Fries\"],\r\n \"Shawarma Burrito\": [\"Poutine Sauce\", \"Parsley\", \"Tahini\"],\r\n \"Shawarma Fries Poutine\": [\"Pickle\", \"Tahini\", \"Basmati Rice\"],\r\n \"Traditional Wrap\": [\"Lettuce\", \"Tomatos\", \"Tahini\"],\r\n};\r\n\r\nconst mealsOnPlate = [\"Shawarma Fries Poutine\", \"Rice Bowl\"];\r\n\r\ntype Level = {\r\n readonly meal: MealName;\r\n readonly recipe: IngredientName[];\r\n readonly ingredientsLeft: IngredientName[];\r\n readonly wrongIngredients: IngredientName[];\r\n readonly completed: boolean;\r\n readonly items: { name: IngredientName; done: boolean }[];\r\n /**\r\n * @returns 0 to 1 progress\r\n */\r\n readonly progress: number;\r\n canCatchIngredient: (ingredient: IngredientName) => boolean;\r\n setItemsCatched: (ingredient: IngredientName) => void;\r\n};\r\n\r\nexport type LastAction = \"miss\" | \"catch\" | \"wrongCatch\" | null;\r\n\r\ntype State = {\r\n /**\r\n * 0 to 100\r\n */\r\n health: number;\r\n score: number;\r\n winScore: number;\r\n paused: boolean;\r\n currentLevel: Level;\r\n lastAction: LastAction;\r\n /**\r\n * For determining if last action changed even\r\n * if to same action\r\n */\r\n lastActionIndex: number;\r\n fallingIngredients: FallingIngredient[];\r\n getCurrentLevelNumber: () => number;\r\n getNextLevel: () => Level | null;\r\n getLevelsCount: () => number;\r\n isLevelLost: () => boolean;\r\n /**\r\n * Could be lost or won\r\n */\r\n isGameFinished: () => boolean;\r\n /**\r\n * Winned the whole game\r\n */\r\n didWin: () => boolean;\r\n didCompleteWithScoreLow: () => boolean;\r\n\r\n // Actions\r\n pause: () => void;\r\n resume: () => void;\r\n startNextLevel: () => void;\r\n onCatchIngredient: (ingredient: FallingIngredient) => void;\r\n onMissedIngredient: (ingredient: FallingIngredient) => void;\r\n reset: () => void;\r\n};\r\n\r\nexport type FallingIngredient = {\r\n id: number;\r\n name: IngredientName;\r\n};\r\n\r\nlet useStore = create((set, get) => {\r\n function getLevels() {\r\n return shuffle(meals.slice()).map(createLevelForMeal);\r\n }\r\n\r\n function getNextIngredients(currentLevel?: Level): FallingIngredient[] {\r\n if (get().fallingIngredients.length) return get().fallingIngredients; // wait until no falling ingredients\r\n\r\n const level: Level = currentLevel || get().currentLevel;\r\n const levelNumber = get().getCurrentLevelNumber();\r\n const levelsCount = get().getLevelsCount();\r\n const startDoubling = levelNumber > levelsCount / 2;\r\n\r\n if (startDoubling && probability(0.3)) {\r\n const ings = [];\r\n const ing1 = random(\r\n probability(0.25) ? level.ingredientsLeft : level.wrongIngredients\r\n );\r\n\r\n const ing2 = random(\r\n probability(0.25)\r\n ? level.ingredientsLeft.filter((e) => e !== ing1)\r\n : level.wrongIngredients.filter((e) => e !== ing1)\r\n );\r\n\r\n ings.push({ id: ++nextFallingIngredientId, name: ing1 });\r\n if (ing2) ings.push({ id: ++nextFallingIngredientId, name: ing2 });\r\n\r\n return ings;\r\n } else {\r\n return [\r\n {\r\n id: ++nextFallingIngredientId,\r\n name: random(\r\n probability(0.3) ? level.ingredientsLeft : level.wrongIngredients\r\n ),\r\n },\r\n ];\r\n }\r\n }\r\n\r\n function isAllLevelsCompleted() {\r\n return levels.every((level) => level.completed);\r\n }\r\n\r\n function canWinWithCurrentScore() {\r\n const { score, winScore } = get();\r\n return score > winScore;\r\n }\r\n\r\n function getInitialState() {\r\n return {\r\n score: 0,\r\n winScore: 3600,\r\n currentLevel: levels[0],\r\n lastAction: null,\r\n lastActionIndex: 0,\r\n health: 100,\r\n fallingIngredients: [{ id: 0, name: random(ingredients) }],\r\n paused: true, // starts pausing\r\n };\r\n }\r\n\r\n let levels = getLevels();\r\n let nextFallingIngredientId = 0;\r\n\r\n return {\r\n ...getInitialState(),\r\n reset() {\r\n levels = getLevels();\r\n nextFallingIngredientId = 0;\r\n set({ ...getInitialState() });\r\n },\r\n pause() {\r\n set({ paused: true });\r\n },\r\n resume() {\r\n set({\r\n paused: false,\r\n fallingIngredients: [\r\n { id: ++nextFallingIngredientId, name: random(ingredients) },\r\n ],\r\n });\r\n },\r\n getLevelsCount() {\r\n return levels.length;\r\n },\r\n getCurrentLevelNumber() {\r\n const index = levels.findIndex((level) => this.currentLevel === level);\r\n return index + 1;\r\n },\r\n getNextLevel() {\r\n const currentLevelNumber = this.getCurrentLevelNumber();\r\n if (currentLevelNumber === levels.length) return null;\r\n return levels[currentLevelNumber];\r\n },\r\n isLevelLost() {\r\n return get().health <= 0;\r\n },\r\n isGameFinished() {\r\n return get().isLevelLost() || isAllLevelsCompleted();\r\n },\r\n didWin() {\r\n return isAllLevelsCompleted() && canWinWithCurrentScore();\r\n },\r\n didCompleteWithScoreLow() {\r\n return isAllLevelsCompleted() && !canWinWithCurrentScore();\r\n },\r\n\r\n // Actions\r\n\r\n startNextLevel() {\r\n if (get().didWin()) return;\r\n\r\n set({ currentLevel: levels[get().getCurrentLevelNumber()] });\r\n\r\n set((state) => ({\r\n health: 100,\r\n lastAction: null,\r\n lastActionIndex: state.lastActionIndex + 1,\r\n fallingIngredients: getNextIngredients(),\r\n }));\r\n },\r\n\r\n onCatchIngredient(ingredient) {\r\n set({\r\n fallingIngredients: get().fallingIngredients.filter(\r\n (e) => ingredient.id !== e.id\r\n ),\r\n });\r\n\r\n const { currentLevel } = get();\r\n\r\n const goodCatch = currentLevel.canCatchIngredient(ingredient.name);\r\n\r\n if (goodCatch) currentLevel.setItemsCatched(ingredient.name);\r\n\r\n if (\r\n currentLevel.completed &&\r\n get().getCurrentLevelNumber() === get().getLevelsCount()\r\n ){\r\n playBackgroundMusic(false);\r\n playAudio(audio.winnerMusic, 1);\r\n }\r\n else {\r\n playAudio(\r\n currentLevel.completed\r\n ? audio.levelup\r\n : goodCatch\r\n ? audio.pickup\r\n : audio.missed\r\n );\r\n }\r\n\r\n set((state) => ({\r\n health: clamp(0, 100, state.health + (goodCatch ? 20 : -20)),\r\n score: state.score + (goodCatch ? 100 : -100),\r\n }));\r\n\r\n if (!goodCatch) {\r\n set((state) => ({ score: state.score - 100 }));\r\n }\r\n\r\n if (currentLevel.completed) {\r\n set((state) => ({ score: state.score + 1000 }));\r\n } else {\r\n set({ fallingIngredients: getNextIngredients() });\r\n }\r\n\r\n set((state) => ({\r\n lastAction: goodCatch ? \"catch\" : \"wrongCatch\",\r\n lastActionIndex: state.lastActionIndex + 1,\r\n }));\r\n },\r\n\r\n onMissedIngredient(ingredient) {\r\n set({\r\n fallingIngredients: get().fallingIngredients.filter(\r\n (e) => ingredient.id !== e.id\r\n ),\r\n });\r\n\r\n const { currentLevel } = get();\r\n\r\n if (currentLevel.completed) return;\r\n\r\n const miss = currentLevel.canCatchIngredient(ingredient.name);\r\n\r\n if (miss) {\r\n playAudio(audio.missed);\r\n set((state) => ({\r\n health: clamp(0, 100, state.health - 20),\r\n score: state.score - 100,\r\n lastAction: \"miss\",\r\n lastActionIndex: state.lastActionIndex + 1,\r\n }));\r\n }\r\n\r\n set({ fallingIngredients: getNextIngredients() });\r\n },\r\n };\r\n});\r\n\r\nexport default useStore;\r\n\r\n// Hooks\r\n\r\nexport function useLevelLost(onLevelLost: () => void) {\r\n const health = useStore((state) => state.health);\r\n useEffect(() => {\r\n if (health <= 0) onLevelLost();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [health]);\r\n}\r\n\r\n// Helpers\r\n\r\nfunction createLevelForMeal(meal: MealName): Level {\r\n const recipe = mealsRecipes[meal].map((ingredient) => ({\r\n name: ingredient,\r\n done: false,\r\n }));\r\n\r\n return {\r\n get meal() {\r\n return meal;\r\n },\r\n get recipe() {\r\n return recipe.map((item) => item.name);\r\n },\r\n get items() {\r\n return recipe;\r\n },\r\n get ingredientsLeft() {\r\n return recipe.filter((item) => !item.done).map((item) => item.name);\r\n },\r\n get wrongIngredients() {\r\n return mealsWrongIngredients[meal];\r\n },\r\n get completed() {\r\n return recipe.every((ingredient) => ingredient.done);\r\n },\r\n get progress() {\r\n return (\r\n recipe.filter((ingredient) => ingredient.done).length / recipe.length\r\n );\r\n },\r\n canCatchIngredient(ingredient) {\r\n return recipe.some(\r\n (recipeIngredient) => recipeIngredient.name === ingredient\r\n );\r\n },\r\n setItemsCatched(ingredient) {\r\n const item = recipe.find((e) => e.name === ingredient);\r\n if (item) item.done = true;\r\n },\r\n };\r\n}\r\n\r\nexport function isMealOnPlate(meal: MealName) {\r\n return mealsOnPlate.findIndex((x) => x === meal) !== -1;\r\n}\r\n","import React from \"react\";\r\nimport mealShawermaPoutin from \"assets/img/meals/meal-shawarma-poutin.png\";\r\nimport poutineSauce from \"assets/img/ingredients/poutine-sauce.png\";\r\nimport arcArrowUp from \"assets/svg/arc-arrow-up.svg\";\r\nimport arcArrowDown from \"assets/svg/arc-arrow-down.svg\";\r\nimport bowl from \"assets/img/bowl.png\";\r\nimport discountBadge from \"assets/img/badge-10-off.png\";\r\nimport { ScreenDark as Screen } from \"components/Screen\";\r\nimport IngredientAvatar from \"pages/GameScreen/components/IngredientAvatar\";\r\nimport { Route, Switch, useHistory, useRouteMatch } from \"react-router-dom\";\r\nimport HealthBar from \"./GameScreen/components/HealthBar\";\r\nimport Button from \"components/Button\";\r\nimport useStore from \"./GameScreen/store\";\r\n\r\ntype HowToPlayScreenComponentProps = {\r\n winScore: number;\r\n};\r\n\r\nexport const HowToPlayScreenComponent: React.FC = ({\r\n winScore,\r\n}) => {\r\n const { path, url } = useRouteMatch();\r\n const { replace } = useHistory();\r\n\r\n return (\r\n \r\n \r\n replace(\"/\")} />\r\n \r\n \r\n replace(`${url}/2`)}\r\n winScore={winScore}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nconst HowToPlayScreen = () => {\r\n const winScore = useStore((state) => state.winScore);\r\n return ;\r\n};\r\n\r\nexport default HowToPlayScreen;\r\n\r\ntype HowToPlayScreenPage1Props = {\r\n winScore: number;\r\n onNext: () => void;\r\n};\r\n\r\nexport const HowToPlayScreenPage1: React.FC = ({\r\n winScore,\r\n onNext,\r\n}) => {\r\n return (\r\n \r\n
\r\n {/* Ingredients */}\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n\r\n {/* Only These */}\r\n

\r\n \r\n MAKE UP SHELBYS MENU ITEM BY CATCHING\r\n ONLY THESE INGREDIENTS\r\n

\r\n\r\n {/* Health Bar */}\r\n

\r\n \r\n Watch out the\r\n
\r\n Health Bar\r\n

\r\n\r\n {/* Score */}\r\n

\r\n \r\n 1500\r\n \r\n \r\n score a Total\r\n
\r\n {winScore}\r\n
\r\n To win\r\n
\r\n 10% off\r\n

\r\n
\r\n\r\n
\r\n {/* Complete The Meal */}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n Complete\r\n
\r\n the meal\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\ntype HowToPlayScreenPage2Props = {\r\n onNext: () => void;\r\n};\r\n\r\nexport const HowToPlayScreenPage2: React.FC = ({\r\n onNext,\r\n}) => {\r\n return (\r\n \r\n {/* Ingredients */}\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n \r\n\r\n {/* Score */}\r\n \r\n 1500\r\n \r\n\r\n {/* Meal */}\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n Got it\r\n \r\n \r\n \r\n Bowl\r\n
\r\n\r\n
\r\n

\r\n + 1000 Completing A Meal\r\n
\r\n + 100 Catching Ingredient\r\n
\r\n - 100 Missing Ingredient\r\n
\r\n - 200 Wrong Catch\r\n

\r\n

\r\n Collect ingredients\r\n

\r\n
\r\n
\r\n );\r\n};\r\n","import React, { useMemo } from \"react\";\r\n\r\nimport riceBowl from \"assets/img/meals/meal-chicken-rice-bowl.png\";\r\nimport shelbysWrap from \"assets/img/meals/meal-shelbys-wrap.png\";\r\nimport shawarmaBurito from \"assets/img/meals/meal-shawarma-burito.png\";\r\nimport shawarmaPoutin from \"assets/img/meals/meal-shawarma-poutin.png\";\r\nimport traditionalWrap from \"assets/img/meals/meal-traditional-wrap.png\";\r\nimport { animated, useSpring } from \"react-spring\";\r\nimport { MealName } from \"../store\";\r\n\r\ntype MealProps = React.HTMLAttributes & {\r\n meal: MealName;\r\n progressPercent: number;\r\n onPlate: boolean;\r\n};\r\n\r\nconst Meal: React.FC = ({\r\n meal,\r\n progressPercent,\r\n onPlate,\r\n className,\r\n ...props\r\n}) => {\r\n const src = useMealAvatarImageSrc(meal);\r\n const style = useSpring({\r\n clipPath: `polygon(0% ${100 - progressPercent}%, 100% ${\r\n 100 - progressPercent\r\n }%, 100% 100%, 0 100%)`,\r\n });\r\n\r\n return (\r\n
\r\n
\r\n {/* Plate */}\r\n {onPlate && (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )}\r\n\r\n Meal Shawerma Poutin\r\n \r\n
\r\n\r\n \r\n {meal.toUpperCase()}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Meal;\r\n\r\nfunction useMealAvatarImageSrc(meal: MealName) {\r\n return useMemo(() => {\r\n const mealsSrcs: Record = {\r\n \"Shelbys Wrap\": shelbysWrap,\r\n \"Rice Bowl\": riceBowl,\r\n \"Shawarma Burrito\": shawarmaBurito,\r\n \"Shawarma Fries Poutine\": shawarmaPoutin,\r\n \"Traditional Wrap\": traditionalWrap,\r\n };\r\n\r\n return mealsSrcs[meal];\r\n }, [meal]);\r\n}\r\n","import React, { useEffect, useRef } from \"react\";\r\nimport { animated, config, useSpring } from \"react-spring\";\r\n\r\ntype ScoreProps = {\r\n score: number;\r\n};\r\n\r\nconst Score: React.FC & ScoreProps> = ({\r\n score,\r\n ...props\r\n}) => {\r\n const scoreRef = useRef(score);\r\n useEffect(() => {\r\n scoreRef.current = score;\r\n });\r\n const prevScore = scoreRef.current;\r\n\r\n const spring = useSpring({ score, config: config.slow });\r\n const [style] = useSpring(\r\n () => ({\r\n from: { transform: \"scale(1) rotate(0deg)\" },\r\n to: async (update, stop) => {\r\n const decreased = score - prevScore < 0;\r\n await update({\r\n transform: `scale(${decreased ? \"0.8\" : \"1.5\"}) rotate(${\r\n decreased ? \"0\" : \"5\"\r\n }deg)`,\r\n });\r\n await update({ transform: \"scale(1) rotate(0deg)\" });\r\n },\r\n config: config.stiff,\r\n }),\r\n [score]\r\n );\r\n\r\n return (\r\n
\r\n \r\n {spring.score.to((x) => Math.round(x))}\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Score;\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.857,3.613C20.084-4.861,8.107,2.081,8.107,19.106v125.637c0,17.042,11.977,23.975,26.75,15.509L144.67,97.275 c14.778-8.477,14.778-22.211,0-30.686L34.857,3.613z\"\n}));\n\nvar _ref3 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref4 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref5 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref6 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref7 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref8 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref9 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref10 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref11 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref12 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref13 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref14 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref15 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref16 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar _ref17 = /*#__PURE__*/React.createElement(\"g\", null);\n\nvar SvgResumeArrowhead = function SvgResumeArrowhead(_ref) {\n var svgRef = _ref.svgRef,\n title = _ref.title,\n props = _objectWithoutProperties(_ref, [\"svgRef\", \"title\"]);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Capa_1\",\n x: \"0px\",\n y: \"0px\",\n width: \"163.861px\",\n height: \"163.861px\",\n viewBox: \"0 0 163.861 163.861\",\n style: {\n enableBackground: \"new 0 0 163.861 163.861\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", null, title) : null, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9, _ref10, _ref11, _ref12, _ref13, _ref14, _ref15, _ref16, _ref17);\n};\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(function (props, ref) {\n return /*#__PURE__*/React.createElement(SvgResumeArrowhead, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/resume-arrowhead.bd511318.svg\";\nexport { ForwardRef as ReactComponent };","import useAudioStore from \"hooks/useAudioStore\";\r\nimport React from \"react\";\r\nimport { isMealOnPlate, MealName } from \"../store\";\r\nimport Meal from \"./Meal\";\r\nimport Score from \"./Score\";\r\nimport { ReactComponent as ResumeArrowHead } from \"assets/svg/resume-arrowhead.svg\";\r\nimport { ReactComponent as SoundOn } from \"assets/svg/sound-on.svg\";\r\nimport { ReactComponent as SoundOff } from \"assets/svg/sound-off.svg\";\r\n\r\ntype DialogProps = {\r\n title: string;\r\n};\r\n\r\nconst Dialog: React.FC = ({ children, title }) => {\r\n return (\r\n
\r\n
\r\n

\r\n {title}\r\n

\r\n {children}\r\n
\r\n
\r\n );\r\n};\r\n\r\ntype LevelCompletedDialogProps = {\r\n onStartNextLevel: () => void;\r\n nextMeal: MealName;\r\n score: number;\r\n};\r\n\r\nexport const LevelCompletedDialog: React.FC = ({\r\n onStartNextLevel,\r\n nextMeal,\r\n score,\r\n}) => {\r\n return (\r\n
\r\n
\r\n
\r\n

\r\n {\"Recipe Completed\"}\r\n

\r\n
\r\n +1000\r\n
\r\n
\r\n \r\n Score\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n

\r\n Next\r\n

\r\n
\r\n \r\n
\r\n \r\n Let's Go\r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\ntype LevelStartDialogProps = {\r\n meal: MealName;\r\n onStart: () => void;\r\n};\r\n\r\nexport const StartLevelDialog: React.FC = ({\r\n meal,\r\n onStart,\r\n}) => {\r\n return (\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\ntype GamePausedDialogProps = {\r\n meal: MealName;\r\n mealProgressPercent: number;\r\n onResume: () => void;\r\n};\r\n\r\nexport const GamePausedDialog: React.FC = ({\r\n meal,\r\n mealProgressPercent,\r\n onResume,\r\n}) => {\r\n const soundOn = useAudioStore((state) => state.sound);\r\n const toggleSound = useAudioStore((state) => state.toggleSound);\r\n\r\n return (\r\n \r\n toggleSound()}\r\n className='-rotate-5 absolute h-8 left-0 ml-4 mt-4 text-primary top-0 transform w-8'>\r\n {soundOn ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n );\r\n};\r\n","import React, { useMemo } from \"react\";\r\nimport { animated, useSpring, config } from \"react-spring\";\r\nimport { LastAction } from \"../store\";\r\n\r\nfunction random(arr: Array) {\r\n return arr[Math.floor(Math.random() * arr.length)];\r\n}\r\ntype ActionFeedBackProps = {\r\n action: LastAction;\r\n} & React.HTMLAttributes;\r\n\r\nconst ActionFeedBack: React.FC = ({\r\n action,\r\n ...props\r\n}) => {\r\n //@ts-ignore\r\n const [style] = useSpring(() => ({\r\n config: config.stiff,\r\n from: { opacity: 0, transform: `scale(1)` },\r\n // @ts-ignore\r\n to: async (update, stop) => {\r\n await update({ opacity: 1, transform: `scale(1.5)` });\r\n await update({ opacity: 0, transform: \"translate3d(0,-100%,0)\" });\r\n },\r\n }));\r\n\r\n const actionLabel = useMemo(() => {\r\n return action === \"catch\"\r\n ? random([\"Good!\", \"Keep gowing\", \"Great\"])\r\n : action === \"wrongCatch\"\r\n ? random([\"WRONG\", \"CHECK INGREDIENTS\", \"NO!\"])\r\n : action === \"miss\"\r\n ? random([\"Oops\", \"Watch Out\", \"Missed!\"])\r\n : null;\r\n }, []);\r\n\r\n if (actionLabel)\r\n return (\r\n
\r\n \r\n {actionLabel}\r\n \r\n
\r\n );\r\n\r\n return null;\r\n};\r\n\r\nexport default ActionFeedBack;\r\n","import React, { forwardRef } from \"react\";\r\nimport { animated, useSpring } from \"react-spring\";\r\nimport tomato from \"assets/img/ingredients/tomato.png\";\r\nimport garlic from \"assets/img/ingredients/garlic.png\";\r\nimport riceGrain from \"assets/img/ingredients/rice-grain.png\";\r\nimport riceGrainRed from \"assets/img/ingredients/rice-grain-red.png\";\r\nimport riceGrain2 from \"assets/img/ingredients/rice-grain-2.png\";\r\nimport chicken from \"assets/img/ingredients/chicken.png\";\r\nimport cornPiece from \"assets/img/ingredients/corn-piece.png\";\r\nimport tahini from \"assets/img/ingredients/tahini.png\";\r\nimport friesPiece from \"assets/img/ingredients/fries-piece.png\";\r\nimport parsley from \"assets/img/ingredients/parsley.png\";\r\nimport parsley2 from \"assets/img/ingredients/parsley-2.png\";\r\nimport pickle from \"assets/img/ingredients/pickle.png\";\r\nimport lettuce from \"assets/img/ingredients/lettuce.png\";\r\nimport poutineSauce from \"assets/img/ingredients/poutine-sauce.png\";\r\nimport chipotleSauce from \"assets/img/ingredients/chipotle-sauce.png\";\r\nimport useStore from \"../store\";\r\n\r\nconst useRotationSpring = (duration = 2000) => {\r\n const paused = useStore((state) => state.paused);\r\n // @ts-ignore\r\n const [style] = useSpring(\r\n () => ({\r\n pause: paused,\r\n config: { duration: duration + Math.random() * 400 - 200 },\r\n to: async (update, stop) => {\r\n const direction = Math.random() < 0.5 ? \"-\" : \"\";\r\n while (true) {\r\n await update({\r\n transform: `rotate(${direction}360deg)`,\r\n from: { transform: \"rotate(0deg)\" },\r\n });\r\n }\r\n },\r\n }),\r\n [paused]\r\n );\r\n return style;\r\n};\r\n\r\nexport const Rice = forwardRef((props, ref) => {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n});\r\n\r\nexport const Lettuce = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport const Corn = () => {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport const Chicken = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport const Tomatos = forwardRef((props, ref) => {\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n});\r\n\r\nexport const Tahini = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport const Garlic = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport const PoutineSauce = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport const ChipotleSauce = () => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nexport const Parsley = () => {\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport const Fries = forwardRef((props, ref) => {\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n});\r\n\r\nexport const Pickle = forwardRef((props, ref) => {\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n});\r\n","import React, { useMemo } from \"react\";\r\nimport { IngredientName } from \"../store\";\r\nimport {\r\n Tomatos,\r\n Garlic,\r\n Rice,\r\n Chicken,\r\n Corn,\r\n Tahini,\r\n Parsley,\r\n Fries,\r\n Pickle,\r\n Lettuce,\r\n PoutineSauce,\r\n ChipotleSauce,\r\n} from \"./Ingredients\";\r\n\r\ntype IngredientProps = {\r\n ingredient: IngredientName;\r\n};\r\n\r\nconst Ingredient: React.FC = ({ ingredient }) => {\r\n const IngredientComponent = useIngredientComponent(ingredient);\r\n\r\n return IngredientComponent ? : null;\r\n};\r\n\r\nexport default Ingredient;\r\n\r\nfunction useIngredientComponent(ingredient: IngredientName) {\r\n return useMemo(() => {\r\n const ingredientsComponents: Record> = {\r\n Tomatos,\r\n \"Creamy Garlic\": Garlic,\r\n \"Basmati Rice\": Rice,\r\n Chicken,\r\n Corn,\r\n Tahini,\r\n Parsley,\r\n Fries,\r\n Pickle,\r\n Lettuce,\r\n \"Poutine Sauce\": PoutineSauce,\r\n \"Chipotle Sauce\": ChipotleSauce,\r\n };\r\n\r\n return ingredientsComponents[ingredient];\r\n }, [ingredient]);\r\n}\r\n","import React, { forwardRef, useCallback, useMemo, useRef } from \"react\";\r\nimport { animated, useSpring } from \"react-spring\";\r\nimport useMeasure from \"react-use-measure\";\r\nimport mergeRefs from \"react-merge-refs\";\r\nimport { throttle } from \"lodash-es\";\r\n\r\ntype FallingProps = {\r\n fieldWidth: number;\r\n fieldHeight: number;\r\n fallDuration: number;\r\n delayIndex: number;\r\n pause?: boolean;\r\n onFrame: () => void;\r\n onHitGround: () => void;\r\n} & React.HTMLAttributes;\r\nconst Falling = forwardRef(\r\n (\r\n {\r\n fieldWidth,\r\n fieldHeight,\r\n fallDuration,\r\n onFrame,\r\n onHitGround,\r\n children,\r\n pause,\r\n delayIndex,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const ingredientRef = useRef();\r\n const [ingredientMeasureRef, ingredientBounds] = useMeasure();\r\n const onFrameDebounced = useCallback(\r\n throttle(onFrame, 16, { leading: true, trailing: false }),\r\n []\r\n );\r\n\r\n const [fromX, toX, fromY, toY] = useMemo(() => {\r\n const fromX =\r\n (fieldWidth * (Math.random() * 80)) / 100 + (fieldWidth * 10) / 100;\r\n const toX =\r\n (fieldWidth * (Math.random() * 80)) / 100 + (fieldWidth * 10) / 100;\r\n const fromY = -Math.max(ingredientBounds.height || 1, ingredientBounds.width);\r\n const toY =\r\n fieldHeight + Math.max(ingredientBounds.height || 1, ingredientBounds.width);\r\n return [fromX, toX, fromY, toY];\r\n }, [\r\n fieldHeight,\r\n fieldWidth,\r\n ingredientBounds.height,\r\n ingredientBounds.width,\r\n ]);\r\n\r\n const delay = useMemo(() => delayIndex * (Math.random() * 1000 + 400), []);\r\n\r\n const [style] = useSpring(\r\n () => ({\r\n pause,\r\n delay,\r\n reset: true,\r\n onChange: onFrameDebounced,\r\n config: { duration: fallDuration },\r\n from: { transform: `translate3d(${fromX}px, ${fromY}px, 0)` },\r\n to: async (update, stop) => {\r\n await update({ transform: `translate3d(${toX}px, ${toY}px, 0)` });\r\n onHitGround();\r\n },\r\n cancel:\r\n !fieldHeight ||\r\n !fieldWidth ||\r\n !ingredientBounds.height ||\r\n !ingredientBounds.width,\r\n }),\r\n [\r\n fieldHeight,\r\n fieldWidth,\r\n ingredientBounds.height,\r\n ingredientBounds.width,\r\n pause,\r\n ]\r\n );\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n }\r\n);\r\n\r\nexport default Falling;\r\n","import React, {\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n useState,\r\n} from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { animated } from \"react-spring\";\r\nimport useMeasure from \"react-use-measure\";\r\nimport mergeRefs from \"react-merge-refs\";\r\nimport { debounce } from \"lodash-es\";\r\nimport useStore, { FallingIngredient, isMealOnPlate } from \"./store\";\r\nimport { useBowlDrag } from \"./hooks/useBowlDrag\";\r\nimport { Link } from \"react-router-dom\";\r\nimport {\r\n StartLevelDialog,\r\n LevelCompletedDialog,\r\n GamePausedDialog,\r\n} from \"./components/Dialogs\";\r\nimport IngredientAvatar from \"./components/IngredientAvatar\";\r\nimport HealthBar from \"./components/HealthBar\";\r\nimport Score from \"./components/Score\";\r\nimport { ScreenGameRoom as Screen } from \"components/Screen\";\r\nimport bowl from \"assets/img/bowl.png\";\r\nimport table from \"assets/img/table.png\";\r\nimport ActionFeedBack from \"./components/ActionFeedBack\";\r\nimport Ingredient from \"./components/Ingredient\";\r\nimport Meal from \"./components/Meal\";\r\nimport Falling from \"./components/Falling\";\r\nimport { linearMap } from \"utils\";\r\n\r\nconst GameScreen: React.FC = () => {\r\n const store = useStore();\r\n const bowlRef = useRef(null);\r\n const fieldRef = useRef(null);\r\n const [bowlMeasureRef, bowlBounds] = useMeasure();\r\n const [fieldMeasureRef, fieldBounds] = useMeasure();\r\n\r\n const onCatchIngredientDebounced = useOnCatchIngredientDebouncedCallback();\r\n\r\n const { bind, style } = useBowlDrag({\r\n bowlWidth: bowlBounds.width,\r\n fieldWidth: fieldBounds.width,\r\n });\r\n\r\n useChangeScreen();\r\n useResetStoreOnUnmount();\r\n\r\n const onFallingChange = (\r\n ingredient: FallingIngredient,\r\n element: HTMLDivElement\r\n ) => {\r\n const bowlBounds = bowlRef.current?.getBoundingClientRect();\r\n const ingredientBounds = element.getBoundingClientRect();\r\n\r\n if (bowlBounds && ingredientBounds) {\r\n if (rectsCollides(fixBowlDOMRect(bowlBounds), ingredientBounds)) {\r\n onCatchIngredientDebounced(ingredient);\r\n }\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n\r\n
\r\n {/* Pause */}\r\n \r\n\r\n {/* Exit */}\r\n \r\n \r\n \r\n\r\n

\r\n {store.currentLevel.items.map((item) => (\r\n \r\n ))}\r\n

\r\n \r\n \r\n \r\n
\r\n\r\n \r\n store.onMissedIngredient(ingredient)\r\n }\r\n />\r\n\r\n \r\n\r\n {/* Bowl */}\r\n \r\n\r\n \r\n
\r\n );\r\n};\r\n\r\ntype IngredientsProps = {\r\n fieldHeight: number;\r\n fieldWidth: number;\r\n onIngredientFallingChange: (\r\n ingredient: FallingIngredient,\r\n ref: HTMLDivElement\r\n ) => void;\r\n onIngredientHitGround: (ingredient: FallingIngredient) => void;\r\n};\r\n\r\nconst Ingredients: React.FC = ({\r\n fieldHeight,\r\n fieldWidth,\r\n onIngredientFallingChange,\r\n onIngredientHitGround,\r\n}) => {\r\n const fallingIngredients = useStore((state) => state.fallingIngredients);\r\n const paused = useStore((state) => state.paused);\r\n const fallDuration = useFallDuration();\r\n const ingredientsRef = useRef>({});\r\n\r\n useEffect(() => {\r\n if (fallingIngredients.length === 0) {\r\n ingredientsRef.current = {};\r\n }\r\n }, [fallingIngredients]);\r\n\r\n return (\r\n <>\r\n {fallingIngredients.map((ingredient, index) => (\r\n {\r\n if (ref !== null) ingredientsRef.current[ingredient.id] = ref;\r\n }}\r\n pause={paused}\r\n delayIndex={index}\r\n fieldHeight={fieldHeight}\r\n fieldWidth={fieldWidth}\r\n fallDuration={fallDuration}\r\n onHitGround={() => onIngredientHitGround(ingredient)}\r\n onFrame={() => {\r\n ingredientsRef.current[ingredient.id] &&\r\n onIngredientFallingChange(\r\n ingredient,\r\n ingredientsRef.current[ingredient.id]\r\n );\r\n }}\r\n className='absolute inline-block pointer-events-none'>\r\n \r\n \r\n ))}\r\n \r\n );\r\n};\r\n\r\nconst Dialogs = () => {\r\n const score = useStore((state) => state.score);\r\n const paused = useStore((state) => state.paused);\r\n const resume = useStore((state) => state.resume);\r\n const meal = useStore((state) => state.currentLevel.meal);\r\n const currentLevel = useStore((state) => state.currentLevel);\r\n const nextLevel = useStore((state) => state.getNextLevel());\r\n const startNextLevel = useStore((state) => state.startNextLevel);\r\n const completed = useStore((state) => state.currentLevel.completed);\r\n const currentLevelNumber = useStore((state) => state.getCurrentLevelNumber());\r\n const [showStartDialog, setShowStartDialog] = useState(true);\r\n\r\n if (completed && nextLevel)\r\n return (\r\n \r\n );\r\n\r\n if (currentLevelNumber === 1 && showStartDialog)\r\n return (\r\n {\r\n setShowStartDialog(false);\r\n resume();\r\n }}\r\n />\r\n );\r\n\r\n if (paused)\r\n return (\r\n \r\n );\r\n\r\n return null;\r\n};\r\n\r\nfunction rectsCollides(rect1: DOMRect, rect2: DOMRect) {\r\n return !(\r\n rect1.top > rect2.bottom ||\r\n rect1.right < rect2.left ||\r\n rect1.bottom < rect2.top ||\r\n rect1.left > rect2.right\r\n );\r\n}\r\n\r\nfunction fixBowlDOMRect(rect: DOMRect) {\r\n const y = rect.y + rect.height * 0.25;\r\n const x = rect.x + rect.width * 0.3;\r\n const width = rect.width * 0.3;\r\n const height = rect.height * 0.5;\r\n\r\n return new DOMRect(x, y, width, height);\r\n}\r\n\r\nfunction useResetStoreOnUnmount() {\r\n const resetStore = useStore((state) => state.reset);\r\n\r\n useEffect(() => {\r\n return () => {\r\n // Reset store on screen un-mount's\r\n resetStore();\r\n };\r\n }, [resetStore]);\r\n}\r\n\r\nfunction useChangeScreen() {\r\n const history = useHistory();\r\n const levelLost = useStore((state) => state.isLevelLost());\r\n const win = useStore((state) => state.didWin());\r\n const completeWithLowScore = useStore((state) =>\r\n state.didCompleteWithScoreLow()\r\n );\r\n\r\n useEffect(() => {\r\n if (win) history.replace(\"/won\");\r\n else if (levelLost) history.replace(\"/lost\");\r\n else if (completeWithLowScore) history.replace(\"/low-score\");\r\n }, [history, win, levelLost, completeWithLowScore]);\r\n}\r\n\r\nfunction useFallDuration() {\r\n const levelNumber = useStore((state) => state.getCurrentLevelNumber());\r\n const levelsCount = useStore((state) => state.getLevelsCount());\r\n const minDuration = 2000;\r\n const maxDuration = 1100;\r\n return useMemo(\r\n () => linearMap(1, levelsCount, minDuration, maxDuration, levelNumber),\r\n [levelNumber, levelsCount]\r\n );\r\n}\r\n\r\nfunction useOnCatchIngredientDebouncedCallback() {\r\n const fallingIngredients = useStore((state) => state.fallingIngredients);\r\n const onCatchIngredient = useStore((state) => state.onCatchIngredient);\r\n const callbacks = useRef>({});\r\n\r\n useEffect(() => {\r\n callbacks.current = {};\r\n for (const ingredient of fallingIngredients) {\r\n callbacks.current[ingredient.id] = debounce(onCatchIngredient, 400, {\r\n leading: true,\r\n trailing: false,\r\n });\r\n }\r\n }, [fallingIngredients, onCatchIngredient]);\r\n\r\n return useCallback((ingredient: FallingIngredient) => {\r\n return callbacks.current[ingredient.id](ingredient);\r\n }, []);\r\n}\r\n\r\nexport default GameScreen;\r\n","import { useDrag } from \"react-use-gesture\";\r\nimport { useSpring, config } from \"react-spring\";\r\n\r\nexport const useBowlDrag = (options: {\r\n bowlWidth: number;\r\n fieldWidth: number;\r\n}) => {\r\n const [style, set] = useSpring(() => ({\r\n transform: `translate3d(100%,0,0)`,\r\n config: config.stiff,\r\n }));\r\n return {\r\n style,\r\n bind: useDrag(\r\n ({ offset }) => {\r\n const { bowlWidth, fieldWidth } = options;\r\n if (!bowlWidth && !fieldWidth) return;\r\n const x =\r\n (((offset[0] * 100) / fieldWidth) * fieldWidth) / bowlWidth + 50;\r\n set({\r\n transform: `translate3d(${x}%, 0, 0)`,\r\n });\r\n },\r\n {\r\n axis: \"x\",\r\n }\r\n ),\r\n };\r\n};\r\n","import React, { useEffect } from \"react\";\r\nimport { ScreenDark as Screen } from \"components/Screen\";\r\nimport { Link } from \"react-router-dom\";\r\nimport Button from \"components/Button\";\r\nimport useStore from \"./GameScreen/store\";\r\nimport { playAudio } from \"hooks/useAudioStore\";\r\nimport * as audio from \"assets/audio\";\r\n\r\ntype LoseCompletedScreenComponentProps = {\r\n score: number;\r\n winScore: number;\r\n};\r\n\r\nexport const LoseCompletedScreenComponent: React.FC = ({\r\n score,\r\n winScore,\r\n}) => {\r\n useEffect(() => {\r\n playAudio(audio.lost)\r\n }, []);\r\n\r\n return (\r\n \r\n {/* Badge */}\r\n \r\n this sucks\r\n \r\n\r\n
\r\n

\r\n You\r\n \r\n Lost\r\n \r\n

\r\n\r\n
\r\n score{\" \"}\r\n {score}\r\n
\r\n\r\n
\r\n Meals Completed But\r\n
\r\n Score More Than {winScore}\r\n
\r\n To Win\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nconst LoseCompletedScreen = () => {\r\n const score = useStore((state) => state.score);\r\n const winScore = useStore((state) => state.winScore);\r\n\r\n return ;\r\n};\r\n\r\nexport default LoseCompletedScreen;\r\n","import React from \"react\";\nimport { MemoryRouter as Router, Switch, Route } from \"react-router-dom\";\nimport StartScreen from \"./pages/StartScreen\";\nimport LoseScreen from \"pages/LoseScreen\";\nimport WinScreen from \"pages/WinScreen\";\nimport DiscountScreen from \"pages/DiscountScreen\";\nimport HowToPlayScreen from \"pages/HowToPlayScreen\";\nimport GameScreen from \"pages/GameScreen/GameScreen\";\nimport LoseCompletedScreen from \"pages/LoseCompletedScreen\";\n\nfunction App() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(\n process.env.PUBLIC_URL,\n window.location.href\n );\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' }\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from 'App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}