@jeremyckahn/farmhand 1.22.0 → 1.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -151,7 +151,7 @@ You earned: ${n}`,LOAN_PAYOFF=e=>`You paid off your loan to the bank! You're fin
151
151
  `;return Object.keys(t).sort().forEach(e=>n+=` - ${t[e]} ${e}${t[e]>1?`s`:``}
152
152
  `),n},NEW_COW_OFFERED_FOR_TRADE=(e,t)=>`A new cow is being offered for trade by ${getPlayerName(t.playerId)}!`,FOREST_EXPANDED=(e,t)=>`The Forest has expanded! You can now plant up to ${t} trees.`,EXPERIENCE_GAUGE_TOOLTIP_LABEL=(e,t,n)=>t===1?`Just 1 more experience point needed to reach level ${integerString(n)}!`:`${integerString(t)} more experience points needed to reach level ${integerString(n)}`,inventorySpaceConsumed=memoize(e=>e.reduce((e,{quantity:t=0})=>e+t,0),{}),inventorySpaceRemaining=({inventory:e,inventoryLimit:t})=>t===-1?1/0:Math.max(0,t-inventorySpaceConsumed(e)),addItemToInventory=(e,t,n=1,a=!1)=>{let{id:o}=t,s=[...e.inventory],l=a?n:Math.min(n,inventorySpaceRemaining(e));if(l===0)return e;let u=s.findIndex(({id:e})=>o===e);if(~u){let e=s[u];s[u]={...e,quantity:e.quantity+l}}else s.push({id:o,quantity:l});return{...e,inventory:s}},showNotification=(e,t,n=`info`,a=void 0)=>{let{showNotifications:o,todaysNotifications:s}=e;return{...e,...o&&{latestNotification:{message:t,onClick:a,severity:n}},todaysNotifications:s.find(e=>e.message===t)?s:s.concat({message:t,onClick:a,severity:n})}},unlockTool=(e,t)=>{let{toolLevels:n}=e;return n[t]===toolLevel.UNAVAILABLE?{...e,toolLevels:{...n,[t]:toolLevel.DEFAULT}}:e},processLevelUp=(e,t)=>{let{experience:n,selectedItemId:a}=e,o=levelAchieved(n);for(let s=o;s>t;s--){let t=levels[s]||{},o;if(Object.keys(t).length<2)o=getRandomLevelUpReward(s),e=addItemToInventory(e,o,getRandomLevelUpRewardQuantity(s),!0);else if(t?.unlocksTool)for(let n of t.unlocksTool)e=unlockTool(e,n);else if(t&&t.increasesSprinklerRange&&a===`sprinkler`){let{sprinklerRange:t}=getLevelEntitlements(levelAchieved(n));t>e.hoveredPlotRangeSize&&(e={...e,hoveredPlotRangeSize:t})}e=showNotification(e,LEVEL_GAINED_NOTIFICATION(``,s,o),`success`)}return e},addExperience=(e,t)=>{let{experience:n}=e,a=levelAchieved(n),o={...e,experience:n+t};return o=processLevelUp(o,a),o},addPeer=(e,t)=>{let n={...e.peers};return n[t]=null,{...e,peers:n,activePlayers:(e.activePlayers??1)+1}},addRevenue=(e,t)=>{let{money:n,revenue:a,todaysRevenue:o}=e;return{...e,money:moneyTotal(n,t),revenue:moneyTotal(a,t),todaysRevenue:moneyTotal(o,t)}},adjustLoan=(e,t)=>{let n=moneyTotal(e.loanBalance,t),a=moneyTotal(e.money,t);return n===0&&t<0?e=showNotification(e,LOAN_PAYOFF(),`success`):t>0&&(e={...showNotification(e,LOAN_INCREASED(``,n),`info`),loansTakenOut:e.loansTakenOut+1}),{...e,loanBalance:n,money:a}},getInventoryQuantityMap=memoize(e=>e.reduce((e,{id:t,quantity:n})=>(e[t]=n,e),{})),shouldStormToday=()=>random$1()<STORM_CHANCE,getPlotContentType=({itemId:e})=>e?itemsMap[e].type:null,memoizationSerializer=e=>JSON.stringify([...e].map(e=>typeof e==`function`?e.toString():e)),findInField=memoize((e,t)=>{for(let n of e)for(let e of n)if(t(e))return e;return null},{serializer:memoizationSerializer}),setWasWateredProperty=(e,t)=>e===null?null:getPlotContentType(e)===itemType.CROP?{...e,wasWateredToday:t}:{...e},setWasWatered=e=>setWasWateredProperty(e,!0),fieldHasScarecrow=e=>!!(e&&findInField(e,plotContainsScarecrow)),applyChanceEvent=(e,t)=>e.reduce((e,[t,n])=>t()?n(e):e,t),plotContainsScarecrow=e=>!!(e&&e.itemId===`scarecrow`),applyDestructionYield=(e,t)=>t?.destructionYield?addItemToInventory(e,itemsMap[t.destructionYield.itemId],t.destructionYield.quantity):e,plotContainsLightningRod=e=>!!(e&&itemsMap[e.itemId]?.type===itemType.LIGHTNING_ROD),fieldHasLightningRod=e=>!!(e&&findInField(e,plotContainsLightningRod));function updateField(e,t){return e.map((e,n)=>e.map((e,a)=>t(e,a,n)))}var decrementItemFromInventory=(e,t,n=1)=>{let a=[...e.inventory],o=a.findIndex(({id:e})=>e===t);if(o===-1)return e;let{quantity:s}=a[o];return s>n?a[o]={...a[o],quantity:s-n}:a.splice(o,1),{...e,inventory:a}},waterField=e=>({...e,field:updateField(e.field,setWasWatered)}),applyPrecipitation=e=>{let{field:t}=e,n=0,a,o=[],s=[];if(shouldStormToday())if(fieldHasLightningRod(t)){let n={...getInventoryQuantityMap(e.inventory)},l=!1,u=!1;t=updateField(t,e=>{if(!e||!plotContainsLightningRod(e))return e;let t=itemsMap[e.itemId],a=(e.lightningStrikesSustained??0)+1;if(a>=(t.lightningStrikeCapacity??1/0)){let a=n[e.itemId]||0;return e.fertilizerType===fertilizerType.RAINBOW&&a>0?(n[e.itemId]=a-1,s.push(e.itemId),u=!0,{...e,lightningStrikesSustained:0}):(l=!0,o.push(t),null)}return{...e,lightningStrikesSustained:a}}),a={message:l?LIGHTNING_ROD_DESTROYED_MESSAGE:u?LIGHTNING_ROD_REPLANTED_MESSAGE:LIGHTNING_ROD_STRUCK_MESSAGE,severity:l?`error`:u?`success`:`info`}}else if(fieldHasScarecrow(t)){a={message:STORM_DESTROYS_SCARECROWS_MESSAGE,severity:`error`};let{scarecrow:o=0}=getInventoryQuantityMap(e.inventory);t=updateField(t,e=>plotContainsScarecrow(e)?o&&e&&e.fertilizerType===fertilizerType.RAINBOW?(o--,n++,e):null:e)}else a={message:STORM_MESSAGE,severity:`info`};else a={message:RAIN_MESSAGE,severity:`info`};e=decrementItemFromInventory({...e,field:t},`scarecrow`,n);for(let t of s)e=decrementItemFromInventory(e,t);for(let t of o)e=applyDestructionYield(e,t);return e={...e,newDayNotifications:[...e.newDayNotifications,a]},e=waterField(e),e},areHuggingMachinesInInventory=memoize(e=>e.some(({id:e})=>e===HUGGING_MACHINE_ITEM_ID)),modifyCow=(e,t,n)=>{let a=[...e.cowInventory],o=a.find(({id:e})=>e===t);if(!o)return e;let s=a.indexOf(o);return s===-1?e:(a[s]={...o,...n(o)},{...e,cowInventory:a})},changeCowAutomaticHugState=(e,t,n)=>n&&(t.isUsingHuggingMachine||!areHuggingMachinesInInventory(e.inventory))?e:(e=modifyCow(e,t.id,e=>({...e,isUsingHuggingMachine:n})),e=n?decrementItemFromInventory(e,HUGGING_MACHINE_ITEM_ID):addItemToInventory(e,itemsMap[HUGGING_MACHINE_ITEM_ID]),e),cowCanBeAdded=(e,t,n)=>{let{cowId1:a,cowId2:o}=t,s=a!==null&&o!==null,l=a===e.id||o===e.id;return!!n.find(({id:t})=>t===e.id)&&!s&&!l},changeCowBreedingPenResident=(e,t,n)=>{let{cowBreedingPen:a,cowInventory:o}=e,{cowId1:s,cowId2:l}=a,u=s===t.id||l===t.id,d={...a};if(n&&!cowCanBeAdded(t,a,o)||!n&&!u)return e;if(n){let e=s===null?`cowId1`:`cowId2`;d={...d,[e]:t.id}}else s===t.id&&(d={...d,cowId1:d.cowId2}),d={...d,cowId2:null};return{...e,cowBreedingPen:{...d,daysUntilBirth:3}}},changeCowName=(e,t,n)=>modifyCow(e,t,()=>({name:n.slice(0,30)})),doesInventorySpaceRemain=e=>inventorySpaceRemaining(e)>0,getChopWoodYieldRange=(e,t)=>{let n=AXE_WOOD_YIELD_RANGE[e];if(!n)return null;let[a,o]=n;return t?[a,o]:[Math.max(1,Math.floor(a/2)),Math.max(1,Math.floor(o/2))]},{SEED:SEED$5,GROWN:GROWN$11}=cropLifeStage,getFruitLifeStage=(e,t)=>{if((t??getTreeLifeStage(e))!==GROWN$11)return SEED$5;let{itemId:n,daysSinceLastHarvest:a=0}=e,o=itemsMap[n];if(!o)throw Error(`${n} is not a valid item`);let{fruitTimeline:s}=o;if(!s)throw Error(`${n} has no fruitTimeline`);return getLifeStageForTimeline(s,a)},modifyForestPlotAt=(e,t,n,a)=>{let{forest:o}=e,s=o[n];if(!s)return e;let l=[...s];l[t]=a(l[t]);let u=[...o];return u[n]=l,{...e,forest:u}},{GROWN:GROWN$10}=cropLifeStage,{DEAD:DEAD$2}=treeLifeStage,{UNAVAILABLE:UNAVAILABLE$1}=toolLevel,getWoodYield=(e,t)=>{let n=getChopWoodYieldRange(e,t);if(!n)return 0;let[a,o]=n;return a+Math.floor(random$1()*(o-a+1))},chopForestPlot=(e,t,n)=>{let a=e.forest[n]?.[t];if(!isPlantedTree(a)||e.toolLevels[toolType.AXE]===UNAVAILABLE$1||!doesInventorySpaceRemain(e))return e;let o=getTreeLifeStage(a);if(getFruitLifeStage(a,o)===GROWN$10){let t=itemsMap[a.itemId];t&&(e=addItemToInventory(e,t),e={...e,treeFruitsHarvested:{...e.treeFruitsHarvested,[t.id]:(e.treeFruitsHarvested[t.id]||0)+1}})}let s=itemsMap.wood;if(s){let t=getWoodYield(e.toolLevels[toolType.AXE],o===GROWN$10||o===DEAD$2);t>0&&(e=addItemToInventory(e,s,t))}return e={...e,treesChopped:e.treesChopped+1},modifyForestPlotAt(e,t,n,()=>null)},{SEED:SEED$4,GROWING:GROWING$2,GROWN:GROWN$9}=cropLifeStage,getCropLifeStage=e=>{let{itemId:t,daysWatered:n=0}=e,{cropTimeline:a}=itemsMap[t];if(!a)throw Error(`${t} has no cropTimeline`);return getLifeStageRange(a)[Math.floor(n)]||GROWN$9},getSeedItemIdFromFinalStageCropItemId=memoize(e=>{let t=Object.values(itemsMap).find(t=>{let{growsInto:n}=t;return Array.isArray(n)?n.includes(e):n===e})?.id;if(!t)throw Error(`Crop item ID ${e} does not have a corresponding seed`);return t},{cacheSize:Object.keys(itemsMap).length}),modifyFieldPlotAt=(e,t,n,a)=>{let{field:o}=e,s=[...o[n]];s[t]=a(s[t]);let l=[...o];return l[n]=s,{...e,field:l}},removeFieldPlotAt=(e,t,n)=>modifyFieldPlotAt(e,t,n,()=>null),{GROWN:GROWN$8}=cropLifeStage,clearPlot=(e,t,n)=>{let a=e.field[n][t],o=e.toolLevels[toolType.HOE];if(!a||a.isShoveled)return e;if(getPlotContentType(a)===itemType.LIGHTNING_ROD){let o=itemsMap[a.itemId];return e=removeFieldPlotAt(e,t,n),a.lightningStrikesSustained?e:applyDestructionYield(e,o)}if(getPlotContentType(a)===itemType.CROP&&getCropLifeStage(a)!==GROWN$8&&randomNumberService.isRandomNumberLessThan(HOE_LEVEL_TO_SEED_RECLAIM_RATE[o]||0)){let t=getSeedItemIdFromFinalStageCropItemId(a.itemId);e=addItemToInventory(e,itemsMap[t])}let s=itemsMap[a.itemId];return s.isReplantable&&!doesInventorySpaceRemain(e)?e:(e=removeFieldPlotAt(e,t,n),s.isReplantable||getPlotContentType(a)===itemType.WEED||getCropLifeStage(a)===GROWN$8?addItemToInventory(e,s):e)},computeCowInventoryForNextDay=e=>({...e,cowInventory:e.cowInventory.map(e=>({...e,daysOld:e.daysOld+1,daysSinceMilking:e.daysSinceMilking+1,daysSinceProducingFertilizer:(e.daysSinceProducingFertilizer||0)+1,happiness:Math.max(0,e.isUsingHuggingMachine?Math.min(1,e.happiness+2*COW_HUG_BENEFIT):e.happiness-COW_HUG_BENEFIT),happinessBoostsToday:e.isUsingHuggingMachine?3:0}))}),byteToHex=[];for(let e=0;e<256;++e)byteToHex.push((e+256).toString(16).slice(1));function unsafeStringify(e,t=0){return(byteToHex[e[t+0]]+byteToHex[e[t+1]]+byteToHex[e[t+2]]+byteToHex[e[t+3]]+`-`+byteToHex[e[t+4]]+byteToHex[e[t+5]]+`-`+byteToHex[e[t+6]]+byteToHex[e[t+7]]+`-`+byteToHex[e[t+8]]+byteToHex[e[t+9]]+`-`+byteToHex[e[t+10]]+byteToHex[e[t+11]]+byteToHex[e[t+12]]+byteToHex[e[t+13]]+byteToHex[e[t+14]]+byteToHex[e[t+15]]).toLowerCase()}var rnds8=new Uint8Array(16);function rng(){return crypto.getRandomValues(rnds8)}function v4(e,t,n){return!t&&!e&&crypto.randomUUID?crypto.randomUUID():_v4(e,t,n)}function _v4(e,t,n){e||={};let a=e.random??e.rng?.()??rng();if(a.length<16)throw Error(`Random bytes length must be >= 16`);if(a[6]=a[6]&15|64,a[8]=a[8]&63|128,t){if(n||=0,n<0||n+16>t.length)throw RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let e=0;e<16;++e)t[n+e]=a[e];return t}return unsafeStringify(a)}var generateCow=(e={})=>{let t=e.gender||chooseRandom(Object.values(genders)),n=e.color||chooseRandom(Object.values(standardCowColors)),a=e.id||v4(),o={baseWeight:Math.round(COW_STARTING_WEIGHT_BASE*(t===genders.MALE?MALE_COW_WEIGHT_MULTIPLIER:1)-200+random$1()*400),color:n,colorsInBloodline:{[n]:!0},daysOld:1,daysSinceMilking:0,daysSinceProducingFertilizer:0,gender:t,happiness:0,happinessBoostsToday:0,id:a,isBred:!1,isUsingHuggingMachine:!1,name:``,ownerId:``,originalOwnerId:``,timesTraded:0,weightMultiplier:1,...e};return o.name=getDefaultCowName(o),o},castToMoney=e=>Math.round(e*100)/100,applyLoanInterest=e=>{let t=moneyTotal(e.loanBalance,castToMoney(e.loanBalance*LOAN_INTEREST_RATE)),n=t>0?[...e.newDayNotifications,{severity:`warning`,message:LOAN_BALANCE_NOTIFICATION(``,t)}]:e.newDayNotifications;return{...e,loanBalance:t,newDayNotifications:n}},getPriceEventForCrop=e=>({itemId:e.id,daysRemaining:getCropLifecycleDuration(e)-1}),getFinalCropItemIdFromSeedItemId=(e,t=0)=>{let{growsInto:n}=itemsMap[e];return Array.isArray(n)?n[t]:n},getRandomUnlockedCrop=e=>{let t=chooseRandom(e),n=itemsMap[t],a=getFinalCropItemIdFromSeedItemId(t,Array.isArray(n.growsInto)?chooseRandomIndex(n.growsInto):0);if(!a)throw Error(`Seed item ID ${t} has no corresponding final crop ID`);return itemsMap[a]},createPriceEvent=(e,t,n)=>({...e,[n]:{...e[n],[t.itemId]:t}}),TYPE_CRASH=`priceCrashes`,TYPE_SURGE=`priceSurges`,generatePriceEvents=e=>{let t={...e.priceCrashes},n={...e.priceSurges},a=[...e.newDayNotifications],o;if(random$1()<.2){let{items:s}=getLevelEntitlements(levelAchieved(e.experience)),l=getRandomUnlockedCrop(filterItemIdsToSeeds(Object.keys(s))),{id:u}=l;if(!(t[u]||n[u])){let t=random$1()<.5?TYPE_CRASH:TYPE_SURGE;o=createPriceEvent(e,getPriceEventForCrop(l),t),a.push(t===TYPE_CRASH?{message:PRICE_CRASH(``,l),severity:`warning`}:{message:PRICE_SURGE(``,l),severity:`success`})}}return{...e,...o,newDayNotifications:a}},WineService=class{maturityDayMultiplier=3;getDaysToMature=e=>wineVarietyValueMap[e]*this.maturityDayMultiplier;isWineRecipe=e=>`recipeType`in e&&e.recipeType===recipeType.WINE;getMaxWineYield=({grape:e,inventory:t,cellarInventory:n,cellarSize:a})=>{let{[e.id]:o=0,[itemsMap.yeast?.id??``]:s=0}=getInventoryQuantityMap(t),l=a-n.length,u=Math.floor(o/50),d=Math.floor(s/getYeastRequiredForWine(e.variety));return Math.min(l,u,d)}},wineService=new WineService,getKegDisplayName=e=>wineService.isWineRecipe(e)?e.name:FERMENTED_CROP_NAME(``,e),CellarService=class{_uuid=v4;getItemInstancesInCellar=memoize((e,t)=>e.filter(e=>e.itemId===t.id).length,{cacheSize:Object.keys(fermentableItemsMap).length});generateKeg=e=>{let t={id:this._uuid(),itemId:e.id,daysUntilMature:e.daysToFerment??0};return wineService.isWineRecipe(e)&&(t.daysUntilMature=getYeastRequiredForWine(e.variety)),t};doesCellarSpaceRemain=(e,t)=>e.length<(PURCHASEABLE_CELLARS.get(t)?.space??0);doesKegSpoil=e=>{let t=itemsMap[e.itemId];return!wineService.isWineRecipe(t)}},cellarService=new CellarService,getKegSpoilageRate=e=>!cellarService.doesKegSpoil(e)||e.daysUntilMature>0?0:Math.abs(e.daysUntilMature)*KEG_SPOILAGE_RATE_MULTIPLIER,removeKegFromCellar=(e,t)=>{let{cellarInventory:n}=e,a=n.findIndex(({id:e})=>e===t);if(a===-1)return console.error(`removeKegFromCellar: kegId ${t} not found`),e;let o=[...n.slice(0,a),...n.slice(a+1,n.length)];return e={...e,cellarInventory:o},e},processCellarSpoilage=e=>{let{cellarInventory:t}=e,n=[...t];for(let t=n.length-1;t>-1;t--){let a=n[t],o=itemsMap[a.itemId],s=getKegSpoilageRate(a);!wineService.isWineRecipe(o)&&randomNumberService.isRandomNumberLessThan(s)&&(e=removeKegFromCellar(e,a.id),e={...e,newDayNotifications:[...e.newDayNotifications,{message:KEG_SPOILED_MESSAGE`${a}`,severity:`error`}]})}return e={...e},e},processCellar=e=>{e=processCellarSpoilage(e);let{cellarInventory:t}=e,n=[...t],a={};for(let e=0;e<n.length;e++){let t=n[e],o=t.daysUntilMature-1,s=itemsMap[t.itemId];if(wineService.isWineRecipe(s)&&t.daysUntilMature>0&&o<=0){let e=getKegDisplayName(s);a[e]=(a[e]||0)+1}n[e]={...t,daysUntilMature:o}}let o=[...e.newDayNotifications];return Object.keys(a).length&&o.push({message:KEGS_READY_TO_SELL(``,a),severity:`success`}),e={...e,cellarInventory:n,newDayNotifications:o},e},removeCowFromInventory=(e,t)=>{let n=[...e.cowInventory],{isUsingHuggingMachine:a}=t;return n.splice(n.indexOf(t),1),a&&(e=addItemToInventory(e,itemsMap[HUGGING_MACHINE_ITEM_ID])),e=changeCowBreedingPenResident(e,t,!1),{...e,cowInventory:n}},processCowAttrition=e=>{let t=[...e.newDayNotifications],n=[...e.cowInventory];for(let a=0;a<n.length;a++){let o=n[a];Number(o.weightMultiplier.toFixed(2))===.5&&(e=removeCowFromInventory(e,o),t.push({message:COW_ATTRITION_MESSAGE(``,o),severity:`error`}))}return{...e,newDayNotifications:t}},findCowById=memoize((e,t)=>e.find(e=>t===e.id)),generateOffspringCow=(e,t,n,a={})=>{if(e.gender===t.gender)throw Error(`${JSON.stringify(e)} ${JSON.stringify(t)} cannot produce offspring because they have the same gender`);let o=e.gender===genders.MALE?e:t,s=e.gender===genders.MALE?t:e,l={[o.color]:!0,[s.color]:!0,...o.colorsInBloodline,...s.colorsInBloodline};return delete l[cowColors.RAINBOW],generateCow({color:Object.keys(l).length===Object.keys(standardCowColors).length?cowColors.RAINBOW:chooseRandom([s.color,o.color]),colorsInBloodline:l,baseWeight:(o.baseWeight+s.baseWeight)/2,isBred:!0,ownerId:n,originalOwnerId:n,...a})},processCowBreeding=e=>{let{cowBreedingPen:t,cowInventory:n,playerId:a,newDayNotifications:o,purchasedCowPen:s}=e,{cowId1:l,cowId2:u}=t;if(!u)return e;let d=l?findCowById(n,l):null,f=u?findCowById(n,u):null;if(!d||!f||d.gender===f.gender)return e;let m=d.happiness>=.8&&f.happiness>=.8?t.daysUntilBirth-1:3,h=PURCHASEABLE_COW_PENS.get(s),v=h&&n.length<h.cows&&m===0,y=v?generateOffspringCow(d,f,a):null;if(y){let t=y.color===cowColors.RAINBOW?EXPERIENCE_VALUES.RAINBOW_COW_BRED:EXPERIENCE_VALUES.COW_BRED;e=addExperience(e,t)}return{...e,cowInventory:v&&y?[...n,y]:n,cowBreedingPen:{...t,daysUntilBirth:v?3:m},newDayNotifications:y?[...o,{message:COW_BORN_MESSAGE(``,d,f,y),severity:`success`}]:o}},getCowFertilizerItem=({color:e})=>itemsMap[e===cowColors.RAINBOW?`rainbow-fertilizer`:`fertilizer`],scaleNumber=(e,t,n,a,o)=>(e-t)*(o-a)/(n-t)+a,getCowFertilizerProductionRate=e=>e.gender===genders.MALE?scaleNumber(e.weightMultiplier,COW_WEIGHT_MULTIPLIER_MINIMUM,COW_WEIGHT_MULTIPLIER_MAXIMUM,7,1):1/0,processCowFertilizerProduction=e=>{let t=[...e.cowInventory],n=[...e.newDayNotifications],{length:a}=t,o={},s=e.hasProducedRainbowFertilizer;for(let n=0;n<a;n++){let a=t[n];if((a.daysSinceProducingFertilizer||0)>getCowFertilizerProductionRate(a)){t[n]={...a,daysSinceProducingFertilizer:0};let l=getCowFertilizerItem(a),{name:u}=l;if(!doesInventorySpaceRemain(e))break;o[u]=(o[u]||0)+1,e=addItemToInventory(e,l),l.id===`rainbow-fertilizer`&&(s=!0)}}return Object.keys(o).length&&n.push({message:FERTILIZERS_PRODUCED(``,o),severity:`success`}),{...e,cowInventory:t,hasProducedRainbowFertilizer:s,newDayNotifications:n}},clampNumber=(e,t,n)=>e<=t?t:e>=n?n:e,processFeedingCows=e=>{let t=[...e.cowInventory],{length:n}=t,a=[...e.newDayNotifications],o=[...e.inventory],s=o[o.findIndex(({id:e})=>e===COW_FEED_ITEM_ID)],l=s?s.quantity:0,u=0;for(let e=0;e<n;e++){let n=t[e],a=u<l;t[e]={...n,weightMultiplier:clampNumber(a?n.weightMultiplier+COW_WEIGHT_MULTIPLIER_FEED_BENEFIT:n.weightMultiplier-COW_WEIGHT_MULTIPLIER_FEED_BENEFIT,COW_WEIGHT_MULTIPLIER_MINIMUM,COW_WEIGHT_MULTIPLIER_MAXIMUM)},a&&u++}return l<=n&&n>0&&a.push({message:OUT_OF_COW_FEED_NOTIFICATION,severity:`error`}),decrementItemFromInventory({...e,cowInventory:t,inventory:o,newDayNotifications:a},COW_FEED_ITEM_ID,u)},incrementPlotContentAge=e=>e&&getPlotContentType(e)===itemType.CROP?{...e,daysOld:(e.daysOld||0)+1,daysWatered:(e.daysWatered||0)+(e.wasWateredToday?1+(e.fertilizerType===fertilizerType.NONE?0:FERTILIZER_BONUS):0)}:e,updatePlotShoveledState=e=>e&&e.isShoveled&&e.daysUntilClear!==void 0&&e.daysUntilClear>1?{...e,daysUntilClear:e.daysUntilClear-1}:e&&!e.isShoveled?e:null,getPlotContentFromItemId=e=>({itemId:e,fertilizerType:fertilizerType.NONE});function spawnWeeds(e){if(e)return e;let t=null;return randomNumberService.isRandomNumberLessThan(.15)&&(t=getPlotContentFromItemId(weed.id)),t}var fieldReducer=(e,t)=>t(e),resetWasWatered=e=>setWasWateredProperty(e,!1),fieldUpdaters=[incrementPlotContentAge,resetWasWatered,spawnWeeds,updatePlotShoveledState],processField=e=>({...e,field:updateField(e.field,e=>fieldUpdaters.reduce(fieldReducer,e))}),{GROWN:GROWN$7}=cropLifeStage,{NONE:NONE$2,RAINBOW:RAINBOW$1}=fertilizerType,incrementTreeAge=e=>{if(!e)return null;let t=e.daysOld+1;if(!isPlantedTree(e))return{...e,daysOld:t};let n=e.fertilizerType!=null&&e.fertilizerType!==NONE$2,a=e.fertilizerType===RAINBOW$1,o=(e.daysGrown??e.daysOld)+(n?1+FERTILIZER_BONUS:1),s={...e,daysOld:t,daysGrown:o};return{...s,daysSinceLastHarvest:getTreeLifeStage(s)===GROWN$7?s.daysSinceLastHarvest+(a?1+FERTILIZER_BONUS:1):s.daysSinceLastHarvest}},processForest=e=>{let t=e.forest.map(e=>e.map(incrementTreeAge)),n={};t.forEach((t,a)=>t.forEach((t,o)=>{let s=e.forest[a]?.[o];if(!isPlantedTree(s)||!isPlantedTree(t)||getFruitLifeStage(s)===GROWN$7||getFruitLifeStage(t)!==GROWN$7)return;let{name:l}=itemsMap[t.itemId]??{};l&&(n[l]=(n[l]||0)+1)}));let a=[...e.newDayNotifications];return Object.keys(n).length&&a.push({message:FRUIT_READY_TO_HARVEST(``,n),severity:`success`}),{...e,forest:t,newDayNotifications:a}},getCowMilkItem=({color:e,happiness:t})=>{if(e===cowColors.BROWN)return chocolateMilk;let n=e===cowColors.RAINBOW;return t<1/3?n?rainbowMilk1:milk1:t<2/3?n?rainbowMilk2:milk2:n?rainbowMilk3:milk3},getCowMilkRate=e=>e.gender===genders.FEMALE?scaleNumber(e.weightMultiplier,COW_WEIGHT_MULTIPLIER_MINIMUM,COW_WEIGHT_MULTIPLIER_MAXIMUM,7,2):1/0,processMilkingCows=e=>{let t=[...e.cowInventory],n=[...e.newDayNotifications],{length:a}=t,o={};for(let n=0;n<a;n++){let a=t[n];if(a.daysSinceMilking>getCowMilkRate(a)){t[n]={...a,daysSinceMilking:0};let s=getCowMilkItem(a),{name:l}=s;if(!doesInventorySpaceRemain(e))break;o[l]=(o[l]||0)+1,e=addItemToInventory(e,s)}}return Object.keys(o).length&&n.push({message:MILKS_PRODUCED(``,o),severity:`success`}),{...e,cowInventory:t,newDayNotifications:n}},doesPlotContainCrop=e=>e!==null&&getPlotContentType(e)===itemType.CROP;function forEachPlot(e,t){e.field.forEach((e,n)=>e.forEach((e,a)=>t(e,a,n)))}var applyCrows=e=>{let{field:t,purchasedField:n}=e;if(fieldHasScarecrow(t)||randomNumberService.isRandomNumberLessThan(.6))return e;let a=[...e.newDayNotifications],o=[],s=[];forEachPlot(e,(t,n,a)=>{doesPlotContainCrop(e.field[a][n])&&s.push({x:n,y:a})});let l=Math.min(s.length,Math.floor(random$1()*(n+1)*5)),u=0;for(let t=0;t<l;t++){let t=Math.floor(random$1()*s.length),n=s.splice(t,1)[0];e=modifyFieldPlotAt(e,n.x,n.y,()=>null),u+=1}return u>0&&o.push(CROWS_DESTROYED(``,u)),o.length&&a.push({message:o.join(`
153
153
 
154
- `),severity:`error`}),{...e,newDayNotifications:a}},processNerfs=e=>applyChanceEvent([[()=>!0,applyCrows]],e),getRangeCoords=(e,t,n)=>{let a=2*e+1,o=t-e,s=n-e;return Array(a).fill(null).map((e,t)=>Array(a).fill(null).map((e,n)=>({x:o+n,y:s+t})))},processSprinklers=e=>{let{field:t,experience:n}=e,a=new Map,o=[...t],{sprinklerRange:s}=getLevelEntitlements(levelAchieved(n));return t.forEach((n,l)=>{n.forEach((n,u)=>{!n||getPlotContentType(n)!==itemType.SPRINKLER||getRangeCoords(s,u,l).flat().forEach(({x:n,y:s})=>{let l=t[s];if(!l)return;let u=l[n];u&&getPlotContentType(u)===itemType.CROP&&(a.has(u)||(o=modifyFieldPlotAt({...e,field:o},n,s,setWasWatered).field),a.set(u,{x:n,y:s}))})})}),{...e,field:o}},shouldPrecipitateToday=()=>random$1()<PRECIPITATION_CHANCE,processWeather=e=>applyChanceEvent([[shouldPrecipitateToday,applyPrecipitation]],e),rotateNotificationLogs=e=>{let t=[...e.notificationLog],{dayCount:n,newDayNotifications:a}=e,o={error:[],info:[],success:[],warning:[]};return a.forEach(({message:e,severity:t})=>o[t].push(e)),a.length&&t.unshift({day:n,notifications:o}),t.length=Math.min(t.length,14),{...e,notificationLog:t}},get7DayAverage=e=>e.reduce((e,t)=>moneyTotal(e,t),0)/7,getProfit=(e,t)=>moneyTotal(e,t),updateFinancialRecords=e=>{let{profitabilityStreak:t,todaysLosses:n,todaysRevenue:a,record7dayProfitAverage:o,recordProfitabilityStreak:s}=e,{historicalDailyLosses:l,historicalDailyRevenue:u,recordSingleDayProfit:d}=e;l=[n,...l].slice(0,7),u=[a,...u].slice(0,7);let f=get7DayAverage(l.map((e,t)=>moneyTotal(u[t],e))),m=a+n>0?t+1:0;return{...e,historicalDailyLosses:l,historicalDailyRevenue:u,profitabilityStreak:m,record7dayProfitAverage:Math.max(o,f),recordProfitabilityStreak:Math.max(s,m),recordSingleDayProfit:Math.max(d,getProfit(a,n)),todaysLosses:0,todaysRevenue:0}},updateInventoryRecordsForNextDay=e=>({...e,todaysPurchases:{},todaysStartingInventory:e.inventory.reduce((e,{id:t,quantity:n})=>(e[t]=n,e),{})}),decrementPriceEventDays=e=>Object.keys(e).reduce((t,n)=>{let a=e[n];if(!a)return t;let{itemId:o,daysRemaining:s}=a;return s>1&&(t[n]={itemId:o,daysRemaining:s-1}),t},{}),updatePriceEvents=e=>{let{priceCrashes:t,priceSurges:n}=e;return{...e,priceCrashes:decrementPriceEventDays(t),priceSurges:decrementPriceEventDays(n)}},adjustItemValues=e=>({...e,historicalValueAdjustments:[e.valueAdjustments],valueAdjustments:generateValueAdjustments(e.priceCrashes,e.priceSurges)}),computeStateForNextDay=(e,t=!1)=>(e=(t?[processField]:[computeCowInventoryForNextDay,processCowBreeding,processField,processForest,processNerfs,processWeather,processSprinklers,processFeedingCows,processCowAttrition,processMilkingCows,processCowFertilizerProduction,processCellar,updatePriceEvents,updateFinancialRecords,updateInventoryRecordsForNextDay,generatePriceEvents,applyLoanInterest,rotateNotificationLogs]).concat([adjustItemValues]).reduce((e,t)=>t({...e}),{...e,cowForSale:generateCow(),dayCount:e.dayCount+1,todaysNotifications:[]}),e.dayCount%60==0&&(e=addExperience(e,EXPERIENCE_VALUES.NEW_YEAR)),e),{FERTILIZE:FERTILIZE$3,OBSERVE:OBSERVE$5}=fieldMode,fertilizerItemIdToTypeMap={[itemsMap.fertilizer.id]:fertilizerType.STANDARD,[itemsMap[`rainbow-fertilizer`].id]:fertilizerType.RAINBOW},fertilizePlot=(e,t,n)=>{let{field:a,selectedItemId:o}=e,s=a[n][t];if(!s||itemsMap[o]?.type!==itemType.FERTILIZER)return e;let{id:l}=itemsMap[o],u=e.inventory.find(e=>e.id===l),d=getPlotContentType(s);if(!s||!u||s.fertilizerType!==fertilizerType.NONE||o===`fertilizer`&&d!==itemType.CROP||o===`rainbow-fertilizer`&&d!==itemType.CROP&&d!==itemType.SCARECROW)return e;let{quantity:f}=u;e=decrementItemFromInventory(e,l);let m=f>1;return e=modifyFieldPlotAt(e,t,n,e=>e&&{...e,fertilizerType:fertilizerItemIdToTypeMap[l]}),{...e,fieldMode:m?FERTILIZE$3:OBSERVE$5,selectedItemId:m?l:``}},forRange=(e,t,n,a,o,...s)=>{let l=Math.max(a-n,0),u=Math.min(a+n,e.field[0].length-1),d=Math.max(o-n,0),f=Math.min(o+n,e.field.length-1);for(let n=d;n<=f;n++)for(let a=l;a<=u;a++)e=t(e,a,n,...s);return e},{GROWN:GROWN$6}=cropLifeStage,{UNAVAILABLE}=toolLevel,harvestForestPlot=(e,t,n)=>{let a=e.forest[n]?.[t];if(!a||!(`itemId`in a)||e.toolLevels[toolType.PICKER_POLE]===UNAVAILABLE||!doesInventorySpaceRemain(e)||getFruitLifeStage(a)!==GROWN$6)return e;let o=itemsMap[a.itemId];if(!o)return e;let s=PICKER_POLE_LEVEL_TO_FRUIT_YIELD[e.toolLevels[toolType.PICKER_POLE]]??1,l=Math.min(s,inventorySpaceRemaining(e));return e=addItemToInventory(e,o,s),e={...e,treeFruitsHarvested:{...e.treeFruitsHarvested,[o.id]:(e.treeFruitsHarvested[o.id]||0)+l}},modifyForestPlotAt(e,t,n,e=>e&&`itemId`in e?{...e,daysSinceLastHarvest:0}:e)},getCropFromItemId=e=>({...getPlotContentFromItemId(e),daysOld:0,daysWatered:0,wasWateredToday:!1}),plantInPlot=(e,t,n,a)=>{if(!a||!e.inventory.some(({id:e})=>e===a))return e;let{field:o}=e;if(o[n][t])return e;let{growsInto:s}=itemsMap[a],l=getFinalCropItemIdFromSeedItemId(a,Array.isArray(s)?chooseRandomIndex(s):0);return l?(e=modifyFieldPlotAt(e,t,n,()=>getCropFromItemId(l)),e=decrementItemFromInventory(e,a),e=processSprinklers(e),{...e,selectedItemId:e.inventory.find(({id:e})=>e===a)?a:``}):e},{GROWN:GROWN$5}=cropLifeStage;function getHarvestedQuantity(e){let t=1;switch(e.toolLevels[toolType.SCYTHE]){case toolLevel.BRONZE:t+=1;break;case toolLevel.IRON:t+=2;break;case toolLevel.SILVER:t+=3;break;case toolLevel.GOLD:t+=4;break;default:t=1}return t}function harvestCrops(e,t,n){let a=e.field[n][t];if(!a)return e;let o=itemsMap[a.itemId];if(!o)return e;let s=getSeedItemIdFromFinalStageCropItemId(o.id),l=a.fertilizerType===fertilizerType.RAINBOW,u=getHarvestedQuantity(e);e=removeFieldPlotAt(e,t,n),e=addItemToInventory(e,o,u);let{cropType:d}=o;if(!d)return e;l&&getInventoryQuantityMap(e.inventory)[s]>0&&(e=plantInPlot(e,t,n,s),e=modifyFieldPlotAt(e,t,n,e=>e&&{...e,fertilizerType:fertilizerType.RAINBOW}));let{cropsHarvested:f}=e;return{...e,cropsHarvested:{...f,[d]:(f[d]||0)+u}}}function harvestWeed(e,t,n){let a=e.field[n][t];if(!a)return e;let o=itemsMap[a.itemId],s=getHarvestedQuantity(e);return e=removeFieldPlotAt(e,t,n),e=addItemToInventory(e,o,s),e}var harvestPlot=(e,t,n)=>{let a=e.field[n][t];return!a||!doesInventorySpaceRemain(e)?e:getPlotContentType(a)===itemType.CROP&&getCropLifeStage(a)===GROWN$5?harvestCrops(e,t,n):getPlotContentType(a)===itemType.WEED?harvestWeed(e,t,n):e},hugCow=(e,t)=>modifyCow(e,t,e=>e.happinessBoostsToday>=3?e:{happiness:Math.min(1,e.happiness+COW_HUG_BENEFIT),happinessBoostsToday:e.happinessBoostsToday+1}),maxYieldOfRecipe=memoize(({ingredients:e},t)=>{let n=getInventoryQuantityMap(t);return Math.min(...Object.keys(e).map(t=>Math.floor(n[t]/e[t])))||0},{}),canMakeRecipe=(e,t,n)=>maxYieldOfRecipe(e,t)>=n,consumeIngredients=(e,t,n=1,a=0)=>t.ingredients&&!canMakeRecipe(t,e.inventory,n)?e:(e=addExperience(e,a),Object.keys(t.ingredients||{}).reduce((e,a)=>decrementItemFromInventory(e,a,t.ingredients[a]*n),e)),EXPERIENCE_FOR_RECIPE={[recipeType.FERMENTATION]:EXPERIENCE_VALUES.FERMENTATION_RECIPE_MADE,[recipeType.FORGE]:EXPERIENCE_VALUES.FORGE_RECIPE_MADE,[recipeType.KITCHEN]:EXPERIENCE_VALUES.KITCHEN_RECIPE_MADE,[recipeType.RECYCLING]:EXPERIENCE_VALUES.RECYCLING_RECIPE_MADE,[recipeType.WOOD_CHIPPER]:EXPERIENCE_VALUES.WOOD_CHIPPER_RECIPE_MADE},makeRecipe=(e,t,n=1)=>{let a=e;return e=consumeIngredients(e,t,n,EXPERIENCE_FOR_RECIPE[t.recipeType]||0),e===a?e:(e={...e,recipesMade:{...e.recipesMade,[t.id]:(e.recipesMade[t.id]||0)+n}},addItemToInventory(e,t,n))},saltRequirementMultiplier=2/3,getSaltRequirementsForFermentationRecipe=e=>{let{daysToFerment:t=0,tier:n=1}=e;return Math.ceil((t??0)*saltRequirementMultiplier)*n},getMaxYieldOfFermentationRecipe=(e,t,n,a)=>{let{[e.id]:o=0,[itemsMap.salt.id]:s=0}=getInventoryQuantityMap(t),l=Math.floor(s/getSaltRequirementsForFermentationRecipe(e));return Math.min(a-n.length,o,l)},addKegToCellarInventory=(e,t)=>{let{cellarInventory:n}=e;return{...e,cellarInventory:[...n,t]}},makeFermentationRecipe=(e,t,n=1)=>{let{inventory:a,cellarInventory:o,purchasedCellar:s}=e,{space:l}=PURCHASEABLE_CELLARS.get(s)??{space:0};if(getMaxYieldOfFermentationRecipe(t,a,o,l)<n)return e;for(let a=0;a<n;a++){let n=cellarService.generateKeg(t);e=addKegToCellarInventory(e,n)}let u=getSaltRequirementsForFermentationRecipe(t);return e=decrementItemFromInventory(e,t.id,n),e=decrementItemFromInventory(e,itemsMap.salt.id,n*u),e},makeWine=(e,t,n=1)=>{let{inventory:a,cellarInventory:o,purchasedCellar:s}=e,{space:l}=PURCHASEABLE_CELLARS.get(s)??{space:0},u=wineService.getMaxWineYield({grape:t,inventory:a,cellarInventory:o,cellarSize:l}),d=itemsMap[t.wineId],f=Math.min(n,u);for(let t=0;t<f;t++){let t=cellarService.generateKeg(d);e=addKegToCellarInventory(e,t)}e=decrementItemFromInventory(e,t.id,f*50);let m=getYeastRequiredForWine(t.variety);return e=decrementItemFromInventory(e,itemsMap.yeast.id,f*m),e};function randomChoice(e){let t=0,n=[];for(let a of e)t+=a.weight,n.push(a);n.sort((e,t)=>e.weight-t.weight);let a=random$1()*t,o,s=0;for(let e in n){if(o=n[e],a<o.weight+s)return o;s+=o.weight}return n[n.length-1]}var Factory=class{},SPAWNABLE_ORES=[goldOre,ironOre,bronzeOre,silverOre],OreFactory=class extends Factory{oreOptions=[];constructor(){super();for(let e of SPAWNABLE_ORES)this.oreOptions.push({ore:e,weight:e.spawnChance||0})}generate(){return[this.spawn()]}spawn(){return randomChoice(this.oreOptions).ore}},CoalFactory=class extends Factory{generate(){let e=[],t=chooseRandom([1,1,1,2,3]);for(let n=0;n<t;n++)e.push(this.spawnCoal());return e.push(this.spawnStone()),e}spawnCoal(){return coal$1}spawnStone(){return stone}},spawnableResources=[{resource:stone,spawnChance:STONE_SPAWN_CHANCE},{resource:saltRock,spawnChance:SALT_ROCK_SPAWN_CHANCE},{resource:coal$1,spawnChance:COAL_SPAWN_CHANCE}],StoneFactory=class extends Factory{generate(){let e=[];for(let{resource:t,spawnChance:n}of spawnableResources)randomNumberService.isRandomNumberLessThan(n)&&e.push(t);return e}},factoryInstances={},instance=null,ResourceFactory=class e{resourceOptions;constructor(){this.resourceOptions=[{weight:ORE_SPAWN_CHANCE,itemType:itemType.ORE},{weight:COAL_SPAWN_CHANCE,itemType:itemType.FUEL},{weight:STONE_SPAWN_CHANCE,itemType:itemType.STONE}]}static instance(){return instance||=new e,instance}static generateFactoryInstance(e){switch(e){case itemType.STONE:return new StoneFactory;case itemType.FUEL:return new CoalFactory;case itemType.ORE:return new OreFactory;default:return null}}static getFactoryForItemType=t=>(factoryInstances[t]||(factoryInstances[t]=e.generateFactoryInstance(t)),factoryInstances[t]);generateResources(t){let n=[],a=RESOURCE_SPAWN_CHANCE;switch(t){case toolLevel.BRONZE:a+=.1;break;case toolLevel.IRON:a+=.2;break;case toolLevel.SILVER:a+=.3;break;case toolLevel.GOLD:a+=.5;break;default:}if(randomNumberService.isRandomNumberLessThan(a)){let t=randomChoice(this.resourceOptions),a=e.getFactoryForItemType(t.itemType);if(a){let e=a.generate();e&&(n=Array.isArray(e)?e:[e])}}return n}},daysUntilClearPeriods=[1,2,2,3],minePlot=(e,t,n)=>{let{field:a}=e;if(a[n][t])return e;if(!doesInventorySpaceRemain(e))return showNotification(e,INVENTORY_FULL_NOTIFICATION);let o=e.toolLevels[toolType.SHOVEL],s=ResourceFactory.instance().generateResources(o),[l]=s,u=chooseRandom(daysUntilClearPeriods);if(l){let e=s.map(({spawnChance:e})=>e).filter(e=>e!=null),t=Math.min(...e);u+=Math.round(random$1()*(1-t)*10)}for(let t of s)e=addItemToInventory(e,t);return e=modifyFieldPlotAt(e,t,n,()=>({itemId:``,fertilizerType:fertilizerType.NONE,isShoveled:!0,daysUntilClear:u,oreId:l?.id??null})),{...e}},{FERTILIZE:FERTILIZE$2,OBSERVE:OBSERVE$4}=fieldMode,mulchItemIdToTypeMap={mulch:fertilizerType.STANDARD,"rainbow-mulch":fertilizerType.RAINBOW},mulchForestPlot=(e,t,n)=>{let{forest:a,selectedItemId:o}=e,s=a[n]?.[t];if(!s||!isPlantedTree(s)||itemsMap[o]?.type!==itemType.MULCH)return e;let l=o,u=e.inventory.find(e=>e.id===l);if(!u||(s.fertilizerType??fertilizerType.NONE)!==fertilizerType.NONE)return e;let{quantity:d}=u;e=decrementItemFromInventory(e,l);let f=d>1;return e={...e,mulchApplied:{...e.mulchApplied,[l]:(e.mulchApplied[l]||0)+1}},e=modifyForestPlotAt(e,t,n,e=>!e||!isPlantedTree(e)?e:{...e,fertilizerType:mulchItemIdToTypeMap[l]}),{...e,fieldMode:f?FERTILIZE$2:OBSERVE$4,selectedItemId:f?l:``}},offerCow=(e,t)=>(e={...e,cowIdOfferedForTrade:t},e),getTreeDeathChance=e=>Math.min(TREE_DEATH_CHANCE_MAX,TREE_DEATH_CHANCE_BASE+e*TREE_DEATH_CHANCE_INCREMENT_PER_DAY),MAX_ITERATIONS=1e3,getRandomLifespanExtension=()=>{let e=0;for(;e<MAX_ITERATIONS&&random$1()>=getTreeDeathChance(e);)e++;return e},getRandomizedLifespan=e=>{let t=e*(1-random$1()*TREE_LIFESPAN_VARIANCE_MAX);return Math.round(t+getRandomLifespanExtension())},{NONE:NONE$1}=fertilizerType,plantTreeInPlot=(e,t,n,a)=>{if(!a||!e.inventory.some(({id:e})=>e===a))return e;let o=e.forest[n];if(!o||o[t])return e;let s=getFinalCropItemIdFromSeedItemId(a);if(!s)return e;let l=itemsMap[s]?.lifespan,u=l===void 0?void 0:getRandomizedLifespan(l);return e=modifyForestPlotAt(e,t,n,()=>({itemId:s,daysOld:0,daysSinceLastHarvest:0,daysGrown:0,fertilizerType:NONE$1,...u!==void 0&&{lifespan:u}})),e=decrementItemFromInventory(e,a),{...e,selectedForestItemId:e.inventory.find(({id:e})=>e===a)?a:``}},prependPendingPeerMessage=(e,t,n=`info`)=>({...e,pendingPeerMessages:[{playerId:e.playerId,message:t,severity:n},...e.pendingPeerMessages].slice(0,5)}),purchaseCombine=(e,t)=>{let{money:n,purchasedCombine:a}=e;if(a>=t)return e;let o=PURCHASEABLE_COMBINES.get(t)?.price||0;return{...e,purchasedCombine:t,money:moneyTotal(n,-o)}},updateLearnedRecipes=e=>({...e,learnedRecipes:Object.keys(recipesMap).reduce((t,n)=>(recipesMap[n].condition(e)&&(t[n]=!0),t),{})}),purchaseComposter=(e,t)=>{let{money:n,purchasedComposter:a}=e;return a>=t?e:(e={...e,purchasedComposter:t,money:moneyTotal(n,-(PURCHASEABLE_COMPOSTERS.get(t)?.price??0))},e=showNotification(e,RECYCLING_AVAILABLE_NOTIFICATION),e=addExperience(e,EXPERIENCE_VALUES.COMPOSTER_ACQUIRED),updateLearnedRecipes(e))},getCowWeight=({baseWeight:e,weightMultiplier:t})=>Math.round(e*t),getCowValue=(e,t=!1)=>t?getCowWeight(e)*clampNumber(scaleNumber(e.daysOld,1,100,0,1),0,1):getCowWeight(e)*1.5,purchaseCow=(e,t)=>{let{cowInventory:n,cowColorsPurchased:a,playerId:o,money:s,purchasedCowPen:l}=e,{color:u}=t,d=getCowValue(t,!1);return s<d||l===0||n.length>=(PURCHASEABLE_COW_PENS.get(l)?.cows??0)?e:(e=addCowToInventory(e,{...t,ownerId:o,originalOwnerId:o}),{...e,cowColorsPurchased:{...a,[u]:(a[u]||0)+1},money:moneyTotal(s,-d),cowForSale:generateCow()})},purchaseCowPen=(e,t)=>{let{money:n,purchasedCowPen:a}=e;if(a>=t)return e;let o=PURCHASEABLE_COW_PENS.get(t);if(!o)return e;let{cows:s,price:l}=o;e=showNotification(e,COW_PEN_PURCHASED(``,s),`success`);let u=t>1?EXPERIENCE_VALUES.COW_PEN_EXPANDED:EXPERIENCE_VALUES.COW_PEN_ACQUIRED;return e=addExperience(e,u),{...e,purchasedCowPen:t,money:moneyTotal(n,-l)}},purchaseCellar=(e,t)=>{let{money:n,purchasedCellar:a}=e;if(a>=t)return e;let o=PURCHASEABLE_CELLARS.get(t);if(!o)return e;let{price:s,space:l}=o;e=showNotification(e,CELLAR_PURCHASED(``,l),`success`);let u=t>1?EXPERIENCE_VALUES.CELLAR_EXPANDED:EXPERIENCE_VALUES.CELLAR_ACQUIRED;return e=addExperience(e,u),{...e,purchasedCellar:t,money:moneyTotal(n,-s)}},nullArray=memoize(e=>Object.freeze(Array(e).fill(null)),{cacheSize:30}),purchaseField=(e,t)=>{let{field:n,money:a,purchasedField:o}=e;if(o>=t)return e;e=addExperience(e,EXPERIENCE_VALUES.FIELD_EXPANDED);let s=PURCHASEABLE_FIELD_SIZES.get(t);if(!s)return e;let{columns:l,price:u,rows:d}=s;return{...e,purchasedField:t,field:nullArray(d).map((e,t)=>nullArray(l).map((e,a)=>n[t]&&n[t][a]||null)),money:moneyTotal(a,-u)}},purchaseForest=(e,t)=>{let{forest:n,money:a,purchasedForest:o}=e;if(o>=t)return e;e=addExperience(e,EXPERIENCE_VALUES.FOREST_EXPANDED);let s=PURCHASABLE_FOREST_SIZES.get(t);if(!s)return e;let{columns:l,price:u,rows:d}=s,f=t===1?FOREST_AVAILABLE_NOTIFICATION:FOREST_EXPANDED`${d*l}`;return e=showNotification(e,f,`success`),{...e,purchasedForest:t,forest:nullArray(d).map((e,t)=>nullArray(l).map((e,a)=>n[t]&&n[t][a]||null)),money:moneyTotal(a,-u)}},getAdjustedItemValue=(e,t)=>Number(((e[t]||1)*itemsMap[t].value).toFixed(2)),purchaseItem=(e,t,n=1)=>{let{money:a,todaysPurchases:o,valueAdjustments:s}=e,l=Math.min(n,inventorySpaceRemaining(e));if(l===0)return e;let u=getAdjustedItemValue(s,t.id)*l;return u>a?e:(e=prependPendingPeerMessage(e,PURCHASED_ITEM_PEER_NOTIFICATION(``,n,t)),addItemToInventory({...e,money:moneyTotal(a,-u),todaysPurchases:{...o,[t.id]:(o[t.id]||0)+l}},t,l))},purchaseSmelter=(e,t)=>{let{money:n,purchasedSmelter:a}=e;return a>=t?e:(e={...e,purchasedSmelter:t,money:moneyTotal(n,-(PURCHASEABLE_SMELTERS.get(t)?.price??0))},e=showNotification(e,FORGE_AVAILABLE_NOTIFICATION),e=addExperience(e,EXPERIENCE_VALUES.SMELTER_ACQUIRED),updateLearnedRecipes(e))},getCostOfNextStorageExpansion=e=>500+(e-100)/100*50,purchaseStorageExpansion=e=>{let{money:t,inventoryLimit:n}=e,a=getCostOfNextStorageExpansion(n);return t<a||n===-1?e:{...e,inventoryLimit:n+100,money:moneyTotal(t,-a)}},purchaseWoodChipper=(e,t)=>{let{money:n,purchasedWoodChipper:a}=e;return a>=t?e:(e={...e,purchasedWoodChipper:t,money:moneyTotal(n,-(PURCHASEABLE_WOOD_CHIPPERS.get(t)?.price??0))},e=showNotification(e,WOOD_CHIPPER_AVAILABLE_NOTIFICATION),e=addExperience(e,EXPERIENCE_VALUES.WOOD_CHIPPER_ACQUIRED),updateLearnedRecipes(e))},removePeer=(e,t)=>{let n={...e.peers};return delete n[t],{...e,peers:n,activePlayers:(e.activePlayers??1)-1}},selectCow=(e,{id:t})=>({...e,selectedCowId:t}),cowColorToIdMap={[cowColors.BLUE]:`blue`,[cowColors.BROWN]:`brown`,[cowColors.GREEN]:`green`,[cowColors.ORANGE]:`orange`,[cowColors.PURPLE]:`purple`,[cowColors.RAINBOW]:`rainbow`,[cowColors.WHITE]:`white`,[cowColors.YELLOW]:`yellow`},getCowColorId=({color:e})=>`${cowColorToIdMap[e]}-cow`,sellCow=(e,t)=>{let{cowsSold:n}=e,a=getCowColorId(t),o=getCowValue(t,!0);e=removeCowFromInventory(e,t),e=addRevenue(e,o);let s={...n,[a]:(n[a]||0)+1};return e={...e,cowsSold:s},e},SEASON_ORDER=[season.SPRING,season.SUMMER,season.FALL,season.WINTER],seasonNameMap={[season.SPRING]:`Spring`,[season.SUMMER]:`Summer`,[season.FALL]:`Fall`,[season.WINTER]:`Winter`},seasonFilterMap={[season.SPRING]:`none`,[season.SUMMER]:`sepia(0.26) hue-rotate(-10deg) saturate(1.91) brightness(0.93) contrast(1.47)`,[season.FALL]:`sepia(0.13) hue-rotate(-38deg) saturate(1.34) brightness(0.97) contrast(1)`,[season.WINTER]:`sepia(0.59) hue-rotate(129deg) saturate(0.98) brightness(0.93) contrast(1.02)`},getCurrentSeason=e=>SEASON_ORDER[Math.floor(e/15)%SEASON_ORDER.length],getResaleValue=({id:e})=>itemsMap[e].value/2,getSalePriceMultiplier=(e={})=>{let t=1;return e[`i-am-rich-3`]?t+=I_AM_RICH_BONUSES[2]:e[`i-am-rich-2`]?t+=I_AM_RICH_BONUSES[1]:e[`i-am-rich-1`]&&(t+=I_AM_RICH_BONUSES[0]),t},getSeasonalDemandStatus=(e,t)=>e.highDemandSeasons?.includes(t)?`HIGH`:e.lowDemandSeasons?.includes(t)?`LOW`:null,getSeasonalDemandMultiplier=(e,t)=>{let n=getSeasonalDemandStatus(e,t);return n===`HIGH`?1+SEASON_HIGH_DEMAND_BONUS:n===`LOW`?1-SEASON_LOW_DEMAND_PENALTY:1},inventory$1=[cowFeed$1,huggingMachine],inventory=[appleSapling,bananaSapling,mulch,asparagusSeed,carrotSeed,cornSeed,grapeSeed,garlicSeed,jalapenoSeed,oliveSeed,onionSeed,peaSeed,potatoSeed,pumpkinSeed,soybeanSeed,spinachSeed,sunflowerSeed,strawberrySeed,sugarcaneSeed,sweetPotatoSeed,tomatoSeed,watermelonSeed,wheatSeed,fertilizer,scarecrow,sprinkler,cowFeed$1,huggingMachine],itemIds$1=new Set(inventory.map(e=>e.id)),purchasableItemMap=[...inventory$1,...inventory].reduce((e,t)=>(e[t.id]=t,e),{}),isItemSoldInShop=({id:e})=>!!purchasableItemMap[e],sellItem=(e,{id:t},n=1)=>{if(n===0)return e;let a=itemsMap[t],{completedAchievements:o,dayCount:s,itemsSold:l,money:u,valueAdjustments:d}=e,{loanBalance:f}=e,m=isItemSoldInShop(a),h=m?getResaleValue(a):getAdjustedItemValue(d,t),v=m?1:getSeasonalDemandMultiplier(a,getCurrentSeason(s)),y=isItemAFarmProduct(a),b=h*(y?getSalePriceMultiplier(o):1)*v,x=0,S=0;for(let e=0;e<n;e++){let e=y?Math.min(f,castToMoney(b*LOAN_GARNISHMENT_RATE)):0;y&&(S+=EXPERIENCE_VALUES.ITEM_SOLD);let t=b-e;f=moneyTotal(f,-e),x=moneyTotal(x,t)}y&&(e=adjustLoan(e,moneyTotal(f,-e.loanBalance)));let C={...l,[t]:(l[t]||0)+n};return e=a.isPlantableCrop?{...e,money:moneyTotal(u,x)}:addRevenue({...e,money:u},x),e=addExperience(e,S),e={...e,itemsSold:C},e=decrementItemFromInventory(e,t,n),e=prependPendingPeerMessage(e,SOLD_ITEM_PEER_NOTIFICATION(``,n,a),`warning`),updateLearnedRecipes(e)},getItemBaseValue=e=>itemsMap[e].value,getKegValue=e=>{let{itemId:t,daysUntilMature:n}=e,a=itemsMap[t];if(n>0)return 0;let o=0,s=0,l=0;return wineService.isWineRecipe(a)?(o=a.value,s=WINE_INTEREST_RATE,l=Math.min(Math.max(-n,1),100)):(o=(a.tier??1)*getItemBaseValue(t),s=KEG_INTEREST_RATE,l=Math.abs(e.daysUntilMature)),o*(1+s)**l},sellKeg=(e,t)=>{let{itemId:n}=t,a=itemsMap[n],{cellarItemsSold:o,completedAchievements:s,itemsSold:l,money:u}=e,{loanBalance:d}=e,f=0,m=getKegValue(t),h=Math.min(d,castToMoney(m*LOAN_GARNISHMENT_RATE)),v=m*getSalePriceMultiplier(s)-h;d=moneyTotal(d,-h),f=moneyTotal(f,v),e=adjustLoan(e,moneyTotal(d,-e.loanBalance));let y={...l,[n]:(l[n]??0)+1},b={...o,[n]:(o[n]??0)+1};return e={...e,itemsSold:y,cellarItemsSold:b},e=addRevenue({...e,money:u},f),e=addExperience(e,EXPERIENCE_VALUES.KEG_SOLD),e=removeKegFromCellar(e,t.id),e=prependPendingPeerMessage(e,SOLD_FERMENTED_ITEM_PEER_NOTIFICATION`${a}`,`warning`),e=updateLearnedRecipes(e),e},{OBSERVE:OBSERVE$3,SET_LIGHTNING_ROD:SET_LIGHTNING_ROD$2}=fieldMode,setLightningRod=(e,t,n)=>{if(e.field[n][t]!==null)return e;let{selectedItemId:a}=e;e=decrementItemFromInventory(e,a);let o=e.inventory.some(e=>e.id===a);return e=modifyFieldPlotAt(e,t,n,()=>({itemId:a,fertilizerType:fertilizerType.NONE,lightningStrikesSustained:0})),{...e,fieldMode:o?SET_LIGHTNING_ROD$2:OBSERVE$3,selectedItemId:o?a:``}},{OBSERVE:OBSERVE$2,SET_SCARECROW:SET_SCARECROW$2}=fieldMode,setScarecrow=(e,t,n)=>{if(e.field[n][t]!==null)return e;e=decrementItemFromInventory(e,SCARECROW_ITEM_ID);let a=e.inventory.some(e=>e.id===SCARECROW_ITEM_ID);return e=modifyFieldPlotAt(e,t,n,()=>getPlotContentFromItemId(SCARECROW_ITEM_ID)),{...e,fieldMode:a?SET_SCARECROW$2:OBSERVE$2,selectedItemId:a?SCARECROW_ITEM_ID:``}},{OBSERVE:OBSERVE$1,SET_SPRINKLER:SET_SPRINKLER$2}=fieldMode,setSprinkler=(e,t,n)=>{let{field:a}=e;if(a[n][t]!==null)return e;e=decrementItemFromInventory(e,SPRINKLER_ITEM_ID);let o=e.inventory.some(e=>e.id===SPRINKLER_ITEM_ID);return e=modifyFieldPlotAt(e,t,n,()=>getPlotContentFromItemId(SPRINKLER_ITEM_ID)),e=processSprinklers(e),{...e,fieldMode:o?SET_SPRINKLER$2:OBSERVE$1,selectedItemId:o?SPRINKLER_ITEM_ID:``}},dollarString=e=>toDecimal(dinero({amount:Math.round(e),currency:USD,scale:0}),({value:e})=>Number(e).toLocaleString(`en-US`,{style:`currency`,currency:`USD`,minimumFractionDigits:0,maximumFractionDigits:0})),getProfitRecord=(e,t,n)=>Math.max(e,getProfit(t,n)),isOctober=()=>new Date().getMonth()===9,percentageString=e=>`${Math.round(e*100)}%`,{SEED:SEED$3}=cropLifeStage,addMoney=(e,t)=>({...e,money:moneyTotal(e.money,t)}),sumOfCropsHarvested=memoize(e=>Object.values(e).reduce((e,t)=>e+t,0),{}),sumOfPartialRecordValues=memoize(e=>Object.values(e).reduce((e,t)=>e+(t||0),0),{}),PIE_RECIPE_IDS=Object.values(recipesMap).filter(e=>e.isPie).map(e=>e.id),sumOfPiesMade=memoize(e=>PIE_RECIPE_IDS.reduce((t,n)=>t+(e[n]||0),0),{}),cowFeed=itemsMap[COW_FEED_ITEM_ID],progressAchievement=(e,t)=>({condition:n=>t(n)>=e,getProgress:n=>({currentValue:t(n),goal:e})}),achievements=[((e=100)=>({id:`plant-crop`,name:`Plant a Crop`,description:`Purchase a seed and plant it in the field.`,rewardDescription:dollarString(e),condition:e=>!!findInField(e.field,e=>e!==null&&doesPlotContainCrop(e)&&getCropLifeStage(e)===SEED$3),reward:t=>addMoney(t,e)}))(),((e=150)=>({id:`water-crop`,name:`Water a Crop`,description:`Water a crop that you planted.`,rewardDescription:dollarString(e),condition:e=>!!findInField(e.field,e=>doesPlotContainCrop(e)&&!!e.wasWateredToday),reward:t=>addMoney(t,e)}))(),((e=200)=>({id:`harvest-crop`,name:`Harvest a Crop`,description:`Harvest a crop that you planted.`,rewardDescription:dollarString(e),condition:e=>sumOfCropsHarvested(e.cropsHarvested)>=1,reward:t=>addMoney(t,e)}))(),((e=EXPERIENCE_VALUES.LOAN_PAID_OFF)=>({id:`financial-freedom`,name:`Financial Freedom`,description:`Pay off your initial loan from the bank.`,rewardDescription:`${e} experience points`,condition:e=>e.loanBalance===0,reward:t=>addExperience(t,e)}))(),((e=1e4)=>({id:`unlock-crop-price-guide`,name:`Prove Yourself as a Farmer`,description:`Show that you can run a farm by earning at least ${dollarString(e)}. Proven farmers get access to the Crop Price Guide, an invaluable tool for making better buying and selling decisions!`,rewardDescription:`Crop Price Guide`,...progressAchievement(e,e=>e.revenue),reward:e=>e}))(),((e=15)=>({id:`purchase-cow-pen`,name:`Purchase a Cow Pen`,description:`Construct any size cow pen to let your bovine buddies moo-ve on in!`,rewardDescription:`${e} units of ${cowFeed.name}`,condition:e=>e.purchasedCowPen>0,reward:t=>addItemToInventory(t,cowFeed,e,!0)}))(),((e=100,t=Object.keys(standardCowColors).length)=>({id:`purchase-all-cow-colors`,name:`Cows of Many Colors`,description:`Show that you love all cows and purchase one of every color.`,rewardDescription:`${e} units of ${cowFeed.name}`,...progressAchievement(t,e=>Object.values(standardCowColors).filter(t=>(e.cowColorsPurchased[t]||0)>0).length),reward:t=>addItemToInventory(t,cowFeed,e,!0)}))(),((e=150)=>({id:`play-during-october`,name:`Halloween Harvest`,description:`Play Farmhand in October and get the gift of the season.`,rewardDescription:`${e} units of ${itemsMap.jackolantern.name}`,condition:()=>isOctober(),reward:t=>addItemToInventory(t,itemsMap.jackolantern,e,!0)}))(),((e=100,t=1e4)=>({id:`sell-10000-jack-o-lanterns`,name:`Spooky Pumpkin Patch`,description:`Sell ${integerString(t)} units of ${itemsMap.jackolantern.name}. That's enough to fill a whole pumpkin patch!`,rewardDescription:`${e} units of ${itemsMap.scarecrow.name}`,...progressAchievement(t,e=>e.itemsSold.jackolantern||0),reward:t=>addItemToInventory(t,itemsMap.scarecrow,e,!0)}))(),((e=5e3,t=25)=>({id:`daily-profit-1`,name:`Daily profit: ${dollarString(e)}`,description:`Earn ${dollarString(e)} of profit in a single day.`,rewardDescription:`${t} units of ${itemsMap.fertilizer.name}`,...progressAchievement(e,e=>getProfitRecord(e.recordSingleDayProfit,e.todaysRevenue,e.todaysLosses)),reward:e=>addItemToInventory(e,itemsMap.fertilizer,t,!0)}))(),((e=15e3,t=50)=>({id:`daily-profit-2`,name:`Daily profit: ${dollarString(e)}`,description:`Earn ${dollarString(e)} of profit in a single day.`,rewardDescription:`${t} units of ${itemsMap[`onion-seed`].name}`,...progressAchievement(e,e=>getProfitRecord(e.recordSingleDayProfit,e.todaysRevenue,e.todaysLosses)),reward:e=>addItemToInventory(e,itemsMap[`onion-seed`],t,!0)}))(),((e=5e4,t=100)=>({id:`daily-profit-3`,name:`Daily profit: ${dollarString(e)}`,description:`Earn ${dollarString(e)} of profit in a single day.`,rewardDescription:`${t} units of ${itemsMap[`tomato-seed`].name}`,...progressAchievement(e,e=>getProfitRecord(e.recordSingleDayProfit,e.todaysRevenue,e.todaysLosses)),reward:e=>addItemToInventory(e,itemsMap[`tomato-seed`],t,!0)}))(),((e=2500,t=35,n=itemsMap[`pumpkin-seed`])=>({id:`profit-average-1`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=1e4,t=100,n=itemsMap[`potato-seed`])=>({id:`profit-average-2`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=25e3,t=250,n=itemsMap[`soybean-seed`])=>({id:`profit-average-3`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=5e4,t=300,n=itemsMap[`chocolate-milk`])=>({id:`profit-average-4`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=15e4,t=500,n=itemsMap[`rainbow-milk-3`])=>({id:`profit-average-5`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=1e6,t=1e3,n=itemsMap.rainbowCheese)=>({id:`profit-average-6`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=1e4,t=itemsMap[`milk-3`],n=5e3,a=itemsMap.fertilizer)=>({id:`sale-goal-1`,name:`Dairy Master`,description:`Sell ${integerString(e)} units of ${t.name}.`,rewardDescription:`${integerString(n)} ${a.name} units`,...progressAchievement(e,e=>e.itemsSold[t.id]||0),reward:e=>addItemToInventory(e,a,n,!0)}))(),((e=1e3,t=itemsMap[`rainbow-milk-2`],n=500,a=itemsMap.scarecrow)=>({id:`sale-goal-2`,name:`A Big Average Rainbow`,description:`Sell ${integerString(e)} units of ${t.name}.`,rewardDescription:`${integerString(n)} ${a.name} units`,...progressAchievement(e,e=>e.itemsSold[t.id]||0),reward:e=>addItemToInventory(e,a,n,!0)}))(),((e=1e4,t=itemsMap.burger,n=5e3)=>({id:`sale-goal-3`,name:`Burger Master`,description:`Sell ${integerString(e)} ${t.name} units.`,rewardDescription:`${integerString(n)} additional inventory spaces`,...progressAchievement(e,e=>e.itemsSold[t.id]||0),reward:e=>({...e,inventoryLimit:e.inventoryLimit+n})}))(),((e=1e3,t=100)=>({id:`steady-stasher`,name:`Steady Stasher`,description:`Expand your storage capacity to ${integerString(e)} units.`,rewardDescription:`${integerString(t)} additional inventory spaces`,...progressAchievement(e,e=>e.inventoryLimit),reward:e=>({...e,inventoryLimit:e.inventoryLimit+t})}))(),((e=1e4,t=1e3)=>({id:`heavy-hoarder`,name:`Heavy Hoarder`,description:`Expand your storage capacity to ${integerString(e)} units.`,rewardDescription:`${integerString(t)} additional inventory spaces`,...progressAchievement(e,e=>e.inventoryLimit),reward:e=>({...e,inventoryLimit:e.inventoryLimit+t})}))(),((e=1e5,t=1e4)=>({id:`pro-prepper`,name:`Pro Prepper`,description:`Expand your storage capacity to ${integerString(e)} units.`,rewardDescription:`${integerString(t)} additional inventory spaces`,...progressAchievement(e,e=>e.inventoryLimit),reward:e=>({...e,inventoryLimit:e.inventoryLimit+t})}))(),((e=5e5)=>({id:`i-am-rich-1`,name:`I am Rich!`,description:`Earn ${dollarString(e)}.`,rewardDescription:`All sales receive a ${percentageString(I_AM_RICH_BONUSES[0])} bonus`,...progressAchievement(e,e=>e.revenue),reward:e=>e}))(),((e=1e6)=>({id:`i-am-rich-2`,name:`Millionaire`,description:`Earn ${dollarString(e)}.`,rewardDescription:`All sales receive a ${percentageString(I_AM_RICH_BONUSES[1])} bonus`,...progressAchievement(e,e=>e.revenue),reward:e=>e}))(),((e=1e9)=>({id:`i-am-rich-3`,name:`Billionaire`,description:`Earn ${dollarString(e)}.`,rewardDescription:`All sales receive a ${percentageString(I_AM_RICH_BONUSES[2])} bonus`,...progressAchievement(e,e=>e.revenue),reward:e=>e}))(),((e=Math.floor(Math.PI*1e6),t=1e3)=>({id:`lord-of-the-pies`,name:`Lord of the Pies`,description:`Have ${dollarString(e)} on hand.`,rewardDescription:`${integerString(t)} units of ${itemsMap[`pumpkin-pie`].name}`,condition:t=>Math.floor(t.money)===e,reward:e=>addItemToInventory(e,itemsMap[`pumpkin-pie`],t,!0)}))(),{id:`gold-digger`,name:`Gold Digger`,description:`Dig up your first piece of gold.`,rewardDescription:`A Gold Ingot`,condition:e=>!!e.inventory.find(e=>e.id===`gold-ore`),reward:e=>addItemToInventory(e,itemsMap[`gold-ingot`],1,!0)},((e=1e3,t=50)=>({id:`orchardist`,name:`Orchardist`,description:`Pick ${integerString(e)} fruits from trees in the Forest.`,rewardDescription:`${t} units of ${itemsMap[`apple-sapling`].name}`,...progressAchievement(e,e=>sumOfPartialRecordValues(e.treeFruitsHarvested)),reward:e=>addItemToInventory(e,itemsMap[`apple-sapling`],t,!0)}))(),((e=100,t=1e5)=>({id:`piemaker`,name:`Piemaker`,description:`Make ${integerString(e)} pies.`,rewardDescription:dollarString(t),...progressAchievement(e,e=>sumOfPiesMade(e.recipesMade)),reward:e=>addMoney(e,t)}))(),((e=250,t=500)=>({id:`deforestation`,name:`Deforestation`,description:`Chop down ${integerString(e)} trees in the Forest.`,rewardDescription:`${t} units of ${itemsMap.wood.name}`,...progressAchievement(e,e=>e.treesChopped),reward:e=>addItemToInventory(e,itemsMap.wood,t,!0)}))(),((e=100,t=25)=>({id:`landscaper`,name:`Landscaper`,description:`Spread ${integerString(e)} bags of mulch (of any type) on trees in the Forest.`,rewardDescription:`${t} units of ${itemsMap[`rainbow-mulch`].name}`,...progressAchievement(e,e=>sumOfPartialRecordValues(e.mulchApplied)),reward:e=>addItemToInventory(e,itemsMap[`rainbow-mulch`],t,!0)}))()],achievementsMap=achievements.reduce((e,t)=>(e[t.id]=t,e),{}),updateAchievements=(e,t)=>achievements.reduce((e,n)=>(!e.completedAchievements[n.id]&&n.condition(e,t)&&(e={...n.reward(e),completedAchievements:{...e.completedAchievements,[n.id]:!0}},e=showNotification(e,ACHIEVEMENT_COMPLETED(``,{name:n.name,rewardDescription:n.rewardDescription}),`success`)),e),e),updatePeer=(e,t,n,a)=>{let o={...e.peers},s=o[a]?.cowOfferedForTrade?.id,l=n.cowOfferedForTrade?.id,u=l&&s!==l;o[a]=n;let{pendingPeerMessages:d=[]}=n;return u&&(e=showNotification(e,NEW_COW_OFFERED_FOR_TRADE`${n}`,`info`,()=>{t.openDialogView(dialogView.ONLINE_PEERS)})),{...e,peers:o,latestPeerMessages:[...d,...e.latestPeerMessages].slice(0,30)}},upgradeTool=(e,t)=>{if(!t.toolType||!t.level)return e;let n=e;if(e=consumeIngredients(e,{...t,ingredients:t.ingredients||{}},1,EXPERIENCE_VALUES.FORGE_RECIPE_MADE),e===n)return e;e=addItemToInventory(e,t,1);let a=upgrades[t.toolType],o=e.toolLevels[t.toolType],s=a?.[o]?.name||``;return e.toolLevels[t.toolType]=t.level,e=showNotification(e,TOOL_UPGRADED_NOTIFICATION(``,s,t.name)),{...e}},waterAllPlots=e=>waterField(e),waterPlot=(e,t,n)=>{let a=e.field[n][t];return a&&getPlotContentType(a)===itemType.CROP?modifyFieldPlotAt(e,t,n,e=>e&&{...e,wasWateredToday:!0}):e},withdrawCow=(e,t)=>{let{cowIdOfferedForTrade:n}=e;return t===n&&(e={...e,cowIdOfferedForTrade:``}),e},reducers_exports=__exportAll({addCowToInventory:()=>addCowToInventory,addExperience:()=>addExperience,addItemToInventory:()=>addItemToInventory,addPeer:()=>addPeer,addRevenue:()=>addRevenue,adjustLoan:()=>adjustLoan,applyPrecipitation:()=>applyPrecipitation,changeCowAutomaticHugState:()=>changeCowAutomaticHugState,changeCowBreedingPenResident:()=>changeCowBreedingPenResident,changeCowName:()=>changeCowName,chopForestPlot:()=>chopForestPlot,clearPlot:()=>clearPlot,computeCowInventoryForNextDay:()=>computeCowInventoryForNextDay,computeStateForNextDay:()=>computeStateForNextDay,createPriceEvent:()=>createPriceEvent,decrementItemFromInventory:()=>decrementItemFromInventory,fertilizePlot:()=>fertilizePlot,forRange:()=>forRange,generatePriceEvents:()=>generatePriceEvents,harvestForestPlot:()=>harvestForestPlot,harvestPlot:()=>harvestPlot,hugCow:()=>hugCow,incrementPlotContentAge:()=>incrementPlotContentAge,makeFermentationRecipe:()=>makeFermentationRecipe,makeRecipe:()=>makeRecipe,makeWine:()=>makeWine,minePlot:()=>minePlot,modifyCow:()=>modifyCow,modifyFieldPlotAt:()=>modifyFieldPlotAt,modifyForestPlotAt:()=>modifyForestPlotAt,mulchForestPlot:()=>mulchForestPlot,offerCow:()=>offerCow,plantInPlot:()=>plantInPlot,plantTreeInPlot:()=>plantTreeInPlot,prependPendingPeerMessage:()=>prependPendingPeerMessage,processCowAttrition:()=>processCowAttrition,processCowBreeding:()=>processCowBreeding,processCowFertilizerProduction:()=>processCowFertilizerProduction,processFeedingCows:()=>processFeedingCows,processField:()=>processField,processForest:()=>processForest,processLevelUp:()=>processLevelUp,processMilkingCows:()=>processMilkingCows,processNerfs:()=>processNerfs,processSprinklers:()=>processSprinklers,processWeather:()=>processWeather,purchaseCellar:()=>purchaseCellar,purchaseCombine:()=>purchaseCombine,purchaseComposter:()=>purchaseComposter,purchaseCow:()=>purchaseCow,purchaseCowPen:()=>purchaseCowPen,purchaseField:()=>purchaseField,purchaseForest:()=>purchaseForest,purchaseItem:()=>purchaseItem,purchaseSmelter:()=>purchaseSmelter,purchaseStorageExpansion:()=>purchaseStorageExpansion,purchaseWoodChipper:()=>purchaseWoodChipper,removeCowFromInventory:()=>removeCowFromInventory,removeFieldPlotAt:()=>removeFieldPlotAt,removeKegFromCellar:()=>removeKegFromCellar,removePeer:()=>removePeer,rotateNotificationLogs:()=>rotateNotificationLogs,selectCow:()=>selectCow,sellCow:()=>sellCow,sellItem:()=>sellItem,sellKeg:()=>sellKeg,setLightningRod:()=>setLightningRod,setScarecrow:()=>setScarecrow,setSprinkler:()=>setSprinkler,showNotification:()=>showNotification,spawnWeeds:()=>spawnWeeds,unlockTool:()=>unlockTool,updateAchievements:()=>updateAchievements,updateFinancialRecords:()=>updateFinancialRecords,updateInventoryRecordsForNextDay:()=>updateInventoryRecordsForNextDay,updateLearnedRecipes:()=>updateLearnedRecipes,updatePeer:()=>updatePeer,updatePlotShoveledState:()=>updatePlotShoveledState,updatePriceEvents:()=>updatePriceEvents,upgradeTool:()=>upgradeTool,waterAllPlots:()=>waterAllPlots,waterField:()=>waterField,waterPlot:()=>waterPlot,withdrawCow:()=>withdrawCow}),{CHOP:CHOP$2,CLEANUP:CLEANUP$4,FERTILIZE:FERTILIZE$1,HARVEST:HARVEST$3,HARVEST_FRUIT:HARVEST_FRUIT$2,MINE:MINE$3,PLANT:PLANT$2,SET_LIGHTNING_ROD:SET_LIGHTNING_ROD$1,SET_SCARECROW:SET_SCARECROW$1,SET_SPRINKLER:SET_SPRINKLER$1,WATER:WATER$3}=fieldMode,{GROWN:GROWN$4}=cropLifeStage,ui_events_default={handleItemPurchaseClick(e,t=1){this.purchaseItem(e,t)},handleMakeRecipeClick(e,t=1){this.makeRecipe(e,t)},handleMakeFermentationRecipeClick(e,t=1){this.makeFermentationRecipe(e,t)},handleMakeWineClick(e,t=1){this.makeWine(e,t)},handleSellKegClick(e){this.sellKeg(e)},handleThrowAwayKegClick(e){this.removeKegFromCellar(e.id)},handleUpgradeTool(e){this.upgradeTool(e)},handleCowPurchaseClick(e){this.purchaseCow(e)},handleCowSellClick(e){this.sellCow(e)},handleCowTradeClick(e){this.tradeForPeerCow(e)},handleCowAutomaticHugChange({target:{checked:e}},t){this.changeCowAutomaticHugState(t,e)},handleCowBreedChange({target:e},t){let{checked:n}=e;this.changeCowBreedingPenResident(t,n)},handleCowHugClick(e){this.hugCow(e.id)},handleCowOfferClick(e){this.offerCow(e.id)},handleCowWithdrawClick(e){this.withdrawCow(e.id)},handleCowNameInputChange(e,t){this.changeCowName(t.id,e)},handleItemSellClick(e,t=1){this.sellItem(e,t)},handleViewChange({target:e}){let{value:t}=e;this.setState({stageFocus:t})},handleViewChangeButtonClick(e){this.setState({stageFocus:e})},handleFieldModeSelect(e){this.setState(({selectedItemId:t})=>({selectedItemId:e!==PLANT$2||TOOLBELT_FIELD_MODES.has(e)?``:t,selectedForestItemId:``,fieldMode:e}))},handleItemSelectClick({id:e,enablesFieldMode:t}){this.setState({fieldMode:t,selectedItemId:e})},handleForestItemSelectClick({id:e}){this.setState({fieldMode:PLANT$2,selectedForestItemId:e})},handlePlotClick(e,t){let{fieldMode:n,hoveredPlotRangeSize:a,selectedItemId:o}=this.state;n===PLANT$2?this.forRange(plantInPlot,a,e,t,o):n===HARVEST$3?this.forRange(harvestPlot,a,e,t):n===MINE$3?this.forRange(minePlot,a,e,t):n===CLEANUP$4?this.forRange(clearPlot,a,e,t):n===WATER$3?this.forRange(waterPlot,a,e,t):n===FERTILIZE$1?this.forRange(fertilizePlot,a,e,t):n===SET_SPRINKLER$1?this.setSprinkler(e,t):n===SET_SCARECROW$1?this.setScarecrow(e,t):n===SET_LIGHTNING_ROD$1&&this.setLightningRod(e,t)},handleFieldActionRangeChange(e){this.setState(()=>({hoveredPlotRangeSize:e}))},handleClickEndDayButton(){this.incrementDay(),document.activeElement?.blur()},handleAddMoneyClick(e){this.setState(({money:t})=>({money:moneyTotal(t,e)}))},handleClearPersistedDataClick(){this.clearPersistedData()},handleWaterAllPlotsClick(){this.waterAllPlots(this.state)},handleFieldPurchase(e){this.purchaseField(e)},handleForestPurchase(e){this.purchaseForest(e)},handleForestPlotClick(e,t){let n=this.state.forest[t]?.[e];if(this.state.fieldMode===CHOP$2){isPlantedTree(n)&&this.chopForestPlot(e,t);return}if(this.state.fieldMode===FERTILIZE$1){isPlantedTree(n)&&this.mulchForestPlot(e,t);return}if(!n){let{selectedForestItemId:n,inventory:a}=this.state;n&&a.some(({id:e})=>e===n)&&this.plantTreeInPlot(e,t,n);return}this.state.fieldMode===HARVEST_FRUIT$2&&isPlantedTree(n)&&getTreeLifeStage(n)===GROWN$4&&this.harvestForestPlot(e,t)},handleCombinePurchase(e){this.purchaseCombine(e)},handleComposterPurchase(e){this.purchaseComposter(e)},handleSmelterPurchase(e){this.purchaseSmelter(e)},handleWoodChipperPurchase(e){this.purchaseWoodChipper(e)},handleCowPenPurchase(e){this.purchaseCowPen(e)},handleCellarPurchase(e){this.purchaseCellar(e)},handleStorageExpansionPurchase(){this.purchaseStorageExpansion()},handleMenuToggle(e=void 0){this.setState(({isMenuOpen:t})=>({isMenuOpen:e??!t}))},handleClickNextMenuButton(){this.focusNextView()},handleClickPreviousMenuButton(){this.focusPreviousView()},handleCowSelect(e){this.selectCow(e)},handleCowClick(e){this.selectCow(e),this.hugCow(e.id)},handleCowPenUnmount(){this.setState({selectedCowId:``})},handleClickDialogViewButton(e){this.openDialogView(e)},handleCloseDialogView(){this.state.isAwaitingCowTradeRequest||this.closeDialogView()},handleDialogViewExited(){this.setState({currentDialogView:dialogView.NONE})},handleClickLoanPaydownButton(e){this.adjustLoan(-e)},handleClickTakeOutLoanButton(e){this.adjustLoan(e)},handleExportDataClick(){let e=new Blob([JSON.stringify(reduceByPersistedKeys(this.state),null,2)],{type:`application/json;charset=utf-8`}),[t]=new Date().toISOString().split(`T`);(0,import_FileSaver_min.saveAs)(e,`farmhand-${t}.json`)},handleImportDataClick([e]){let[,t]=e,n=new FileReader;n.addEventListener(`loadend`,e=>{try{let t=e.target,n=String(t?.result),a=reduceByPersistedKeys(transformStateDataForImport(JSON.parse(n)));if(Object.keys(a).some(e=>typeof this.state[e]!=typeof a[e]))throw Error(INVALID_DATA_PROVIDED);this.setState({...transformStateDataForImport({...this.createInitialState?this.createInitialState():{},...a}),hasBooted:!0}),this.showNotification(`Data loaded!`,`success`)}catch(e){console.error(e),this.showNotification(e.message,`error`)}}),n.readAsText(t.slice())},async handleSaveButtonClick(){await this.persistState(),this.showNotification(PROGRESS_SAVED_MESSAGE,`info`)},handleFarmNameUpdate(e){this.setState({farmName:e})},handleCombineEnabledChange(e,t){this.setState({isCombineEnabled:t})},handleUseAlternateEndDayButtonPositionChange(e,t){this.setState({useAlternateEndDayButtonPosition:t})},handleAllowCustomPeerCowNamesChange(e,t){this.setState({allowCustomPeerCowNames:t})},handleShowHomeScreenChange(e,t){this.state.stageFocus===stageFocusType.HOME&&!t&&this.focusNextView(),this.setState({showHomeScreen:t})},handleShowNotificationsChange({target:{checked:e}}){this.setState({showNotifications:e})},handleClickNotificationIndicator(){this.openDialogView(dialogView.FARMERS_LOG)},handleOnlineToggleChange(e){e||this.showNotification(DISCONNECTING_FROM_SERVER,`info`),this.setState(({room:t,cowIdOfferedForTrade:n})=>e?{redirect:withCurrentHashQuery(`/online/${encodeURIComponent(t)}`),cowIdOfferedForTrade:n,isOnline:!0}:{redirect:withCurrentHashQuery(`/`),cowIdOfferedForTrade:``})},handleRoomChange(e){this.setState(()=>({room:e,redirect:withCurrentHashQuery(`/online/${encodeURIComponent(e.trim()||`global`)}`)}))},handleActivePlayerButtonClick(){this.openDialogView(dialogView.ONLINE_PEERS)},handleRNGSeedChange(e){let{origin:t,pathname:n,search:a,hash:o}=import_window.default.location,s=new URLSearchParams(a),l=e.trim();l===``?(randomNumberService.unseedRandomNumber(),s.delete(`seed`),this.showNotification(`Random seed reset`,`info`)):(randomNumberService.seedRandomNumber(l),s.set(`seed`,l),this.showNotification(`Random seed set to "${l}"`,`success`));let u=s.toString(),d=`${t}${n}${u.length>0?`?${u}`:``}${o}`;import_window.default.history.replaceState({},``,d)},handleChatRoomOpenStateChange(e){this.setState({isChatOpen:e})},handleGameUpdateAvailable(e){this.showNotification(UPDATE_AVAILABLE,`success`,()=>{e(!0)})}},createContextData=()=>({gameState:{viewTitle:``,viewList:[],features:{},blockInput:!1,shopInventory:[],isChatAvailable:!1,playerInventory:[],levelEntitlements:{items:{},tools:{},sprinklerRange:0,stageFocusType:{}},fieldToolInventory:[],mulchInventory:[],plantableCropInventory:[],plantableTreeInventory:[],playerInventoryQuantities:{},activePlayers:null,allowCustomPeerCowNames:!1,cellarInventory:[],currentDialogView:`NONE`,completedAchievements:{},cowForSale:generateCow(),cowBreedingPen:{cowId1:null,cowId2:null,daysUntilBirth:0},cowInventory:[],cowColorsPurchased:{BLUE:0,BROWN:0,GREEN:0,ORANGE:0,PURPLE:0,RAINBOW:0,WHITE:0,YELLOW:0},cowIdOfferedForTrade:``,cowsSold:{},cowsTraded:0,cowTradeTimeoutId:null,cropsHarvested:{ASPARAGUS:0,CARROT:0,CORN:0,GARLIC:0,GRAPE:0,JALAPENO:0,OLIVE:0,ONION:0,PEA:0,POTATO:0,PUMPKIN:0,SOYBEAN:0,SPINACH:0,SUNFLOWER:0,STRAWBERRY:0,SWEET_POTATO:0,TOMATO:0,WATERMELON:0,WHEAT:0,WEED:0},dayCount:0,experience:0,farmName:``,field:[[]],forest:[[]],treesChopped:0,treeFruitsHarvested:{},mulchApplied:{},fieldMode:`OBSERVE`,getCowAccept:()=>{},getCowReject:()=>{},getCowTradeRequest:()=>{},getPeerMetadata:()=>{},hasBooted:!0,hasProducedRainbowFertilizer:!1,heartbeatTimeoutId:-1,historicalDailyLosses:[],historicalDailyRevenue:[],historicalValueAdjustments:[],hoveredPlotRangeSize:0,playerId:``,inventory:[{id:scarecrow.id,quantity:1}],inventoryLimit:-1,isAwaitingCowTradeRequest:!1,isAwaitingNetworkRequest:!1,isCombineEnabled:!0,isMenuOpen:!1,itemsSold:{},cellarItemsSold:{},isChatOpen:!1,isDialogViewOpen:!1,isOnline:!0,isWaitingForDayToCompleteIncrementing:!1,learnedRecipes:{},loanBalance:0,loansTakenOut:0,money:0,latestNotification:null,newDayNotifications:[],notificationLog:[],peers:{},peerRoom:null,pendingPeerMessages:[],latestPeerMessages:[],sendCowAccept:()=>{},sendCowReject:()=>{},sendCowTradeRequest:()=>{},sendPeerMetadata:()=>{},selectedCowId:``,selectedForestItemId:``,selectedItemId:``,priceCrashes:{},priceSurges:{},purchasedCombine:0,purchasedComposter:0,purchasedCowPen:0,purchasedCellar:0,purchasedField:0,purchasedForest:0,purchasedSmelter:0,purchasedWoodChipper:0,profitabilityStreak:0,recipesMade:{},record7dayProfitAverage:0,recordProfitabilityStreak:0,recordSingleDayProfit:0,revenue:0,redirect:``,room:``,showHomeScreen:!0,showNotifications:!0,stageFocus:`HOME`,todaysLosses:0,todaysPurchases:{},todaysRevenue:0,todaysStartingInventory:{},toolLevels:{AXE:`UNAVAILABLE`,PICKER_POLE:`UNAVAILABLE`,SCYTHE:`DEFAULT`,SHOVEL:`DEFAULT`,HOE:`DEFAULT`,WATERING_CAN:`DEFAULT`},valueAdjustments:{},version:`1.0.0`,todaysNotifications:[],useAlternateEndDayButtonPosition:!1},handlers:{...ui_events_default,debounced:{...ui_events_default}}}),FarmhandContext=(0,import_react$24.createContext)(createContextData()),getDayOfSeason=e=>e%15+1,usePrefersReducedMotion=()=>{let[e,t]=(0,import_react$24.useState)(()=>typeof window>`u`||!window.matchMedia?!1:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches);return(0,import_react$24.useEffect)(()=>{if(typeof window>`u`||!window.matchMedia)return;let e=window.matchMedia(`(prefers-reduced-motion: reduce)`),n=e=>{t(e.matches)};return e.addEventListener?e.addEventListener(`change`,n):`addListener`in e&&e.addListener(n),()=>{e.removeEventListener?e.removeEventListener(`change`,n):`removeListener`in e&&e.removeListener(n)}},[]),e},MoneyDisplay=({money:e})=>{let t=`rgb(255, 255, 255)`,n=usePrefersReducedMotion(),[a,o]=(0,import_react$24.useState)(e),[s,l]=(0,import_react$24.useState)(t),u=(0,import_react$24.useRef)(e),d=(0,import_react$24.useRef)(null);return(0,import_react$24.useEffect)(()=>{if(d.current?.cancel(),d.current=null,n||u.current===e){u.current=e,o(e),l(t);return}let a=e>u.current?`rgb(0, 255, 0)`:`rgb(255, 0, 0)`;return d.current=(0,import_shifty.tween)({easing:`easeOutQuad`,duration:750,render:({color:e,money:t})=>{l(String(e)),o(Number(t))},from:{color:a,money:u.current},to:{color:t,money:e}}),u.current=e,()=>{d.current?.cancel(),d.current=null}},[e,n]),(0,import_jsx_runtime.jsx)(`span`,{style:{color:s},children:moneyString(a)})},AppBar=({dayCount:e,handleClickNotificationIndicator:t,money:n,showNotifications:a,todaysNotifications:o,viewTitle:s,areAnyNotificationsErrors:l=o.some(({severity:e})=>e===`error`)})=>(0,import_jsx_runtime.jsx)(AppBar$1,{className:`AppBar top-level`,position:`fixed`,sx:{"& .toolbar":{display:`flex`,"& h2":{color:`#fff`,fontFamily:`"Francois One", monospace`,fontSize:`1.2em`},"& .stage-header":{display:`none`,marginLeft:`1em`,[`@media (min-width: ${breakpoints.largePhone}px)`]:{display:`block`}},"& .season-display":{marginLeft:`1em`,[`@media (min-width: ${breakpoints.largePhone}px)`]:{position:`absolute`,left:`50%`,marginLeft:0,transform:`translateX(-50%)`}},"& .money-display":{position:`absolute`,right:`1em`},"& .notification-indicator-container":{display:`flex`,"& .error-indicator":{marginLeft:`1em`}}}},children:(0,import_jsx_runtime.jsxs)(Toolbar,{className:`toolbar`,children:[!a&&(0,import_jsx_runtime.jsxs)(`div`,{className:`notification-indicator-container`,onClick:t,children:[(0,import_jsx_runtime.jsx)(Typography,{children:(0,import_jsx_runtime.jsx)(StepIcon,{icon:o.length})}),l&&(0,import_jsx_runtime.jsx)(Typography,{className:`error-indicator`,children:(0,import_jsx_runtime.jsx)(StepIcon,{error:!0,icon:``})})]}),(0,import_jsx_runtime.jsx)(Typography,{className:`stage-header`,variant:`h2`,children:s}),(0,import_jsx_runtime.jsx)(Typography,{className:`season-display`,variant:`h2`,children:`Day ${getDayOfSeason(e)} of ${seasonNameMap[getCurrentSeason(e)]}`}),(0,import_jsx_runtime.jsx)(Typography,{className:`money-display`,variant:`h2`,children:(0,import_jsx_runtime.jsx)(MoneyDisplay,{money:n})})]})});AppBar.propTypes={dayCount:import_prop_types$1.number.isRequired,handleClickNotificationIndicator:import_prop_types$1.func.isRequired,money:import_prop_types$1.number.isRequired,showNotifications:import_prop_types$1.bool.isRequired,todaysNotifications:import_prop_types$1.array.isRequired,viewTitle:import_prop_types$1.string.isRequired};function Consumer$29(e){return(0,import_jsx_runtime.jsx)(FarmhandContext.Consumer,{children:({gameState:t,handlers:n})=>(0,import_jsx_runtime.jsx)(AppBar,{...t,...n,...e})})}var require_lib$5=__commonJSMin(((e,t)=>{function n(e){return e&&typeof e==`object`&&`default`in e?e.default:e}var a=require_react(),o=n(a);function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var u=!!(typeof window<`u`&&window.document&&window.document.createElement);function d(e,t,n){if(typeof e!=`function`)throw Error(`Expected reducePropsToState to be a function.`);if(typeof t!=`function`)throw Error(`Expected handleStateChangeOnClient to be a function.`);if(n!==void 0&&typeof n!=`function`)throw Error(`Expected mapStateOnServer to either be undefined or a function.`);function d(e){return e.displayName||e.name||`Component`}return function(f){if(typeof f!=`function`)throw Error(`Expected WrappedComponent to be a React component.`);var m=[],h;function v(){h=e(m.map(function(e){return e.props})),y.canUseDOM?t(h):n&&(h=n(h))}var y=function(e){l(t,e);function t(){return e.apply(this,arguments)||this}t.peek=function(){return h},t.rewind=function(){if(t.canUseDOM)throw Error(`You may only call rewind() on the server. Call peek() to read the current state.`);var e=h;return h=void 0,m=[],e};var n=t.prototype;return n.UNSAFE_componentWillMount=function(){m.push(this),v()},n.componentDidUpdate=function(){v()},n.componentWillUnmount=function(){var e=m.indexOf(this);m.splice(e,1),v()},n.render=function(){return o.createElement(f,this.props)},t}(a.PureComponent);return s(y,`displayName`,`SideEffect(`+d(f)+`)`),s(y,`canUseDOM`,u),y}}t.exports=d})),require_react_fast_compare=__commonJSMin(((e,t)=>{var n=typeof Element<`u`,a=typeof Map==`function`,o=typeof Set==`function`,s=typeof ArrayBuffer==`function`&&!!ArrayBuffer.isView;function l(e,t){if(e===t)return!0;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(e.constructor!==t.constructor)return!1;var u,d,f;if(Array.isArray(e)){if(u=e.length,u!=t.length)return!1;for(d=u;d--!==0;)if(!l(e[d],t[d]))return!1;return!0}var m;if(a&&e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(m=e.entries();!(d=m.next()).done;)if(!t.has(d.value[0]))return!1;for(m=e.entries();!(d=m.next()).done;)if(!l(d.value[1],t.get(d.value[0])))return!1;return!0}if(o&&e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(m=e.entries();!(d=m.next()).done;)if(!t.has(d.value[0]))return!1;return!0}if(s&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if(u=e.length,u!=t.length)return!1;for(d=u;d--!==0;)if(e[d]!==t[d])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf&&typeof e.valueOf==`function`&&typeof t.valueOf==`function`)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&typeof e.toString==`function`&&typeof t.toString==`function`)return e.toString()===t.toString();if(f=Object.keys(e),u=f.length,u!==Object.keys(t).length)return!1;for(d=u;d--!==0;)if(!Object.prototype.hasOwnProperty.call(t,f[d]))return!1;if(n&&e instanceof Element)return!1;for(d=u;d--!==0;)if(!((f[d]===`_owner`||f[d]===`__v`||f[d]===`__o`)&&e.$$typeof)&&!l(e[f[d]],t[f[d]]))return!1;return!0}return e!==e&&t!==t}t.exports=function(e,t){try{return l(e,t)}catch(e){if((e.message||``).match(/stack|recursion/i))return console.warn(`react-fast-compare cannot handle circular refs`),!1;throw e}}})),import_lib$1=__toESM(require_lib$5()),import_react_fast_compare=__toESM(require_react_fast_compare()),import_object_assign=__toESM(require_object_assign()),ATTRIBUTE_NAMES={BODY:`bodyAttributes`,HTML:`htmlAttributes`,TITLE:`titleAttributes`},TAG_NAMES={BASE:`base`,BODY:`body`,HEAD:`head`,HTML:`html`,LINK:`link`,META:`meta`,NOSCRIPT:`noscript`,SCRIPT:`script`,STYLE:`style`,TITLE:`title`};Object.keys(TAG_NAMES).map(function(e){return TAG_NAMES[e]});var TAG_PROPERTIES={CHARSET:`charset`,CSS_TEXT:`cssText`,HREF:`href`,HTTPEQUIV:`http-equiv`,INNER_HTML:`innerHTML`,ITEM_PROP:`itemprop`,NAME:`name`,PROPERTY:`property`,REL:`rel`,SRC:`src`,TARGET:`target`},REACT_TAG_MAP={accesskey:`accessKey`,charset:`charSet`,class:`className`,contenteditable:`contentEditable`,contextmenu:`contextMenu`,"http-equiv":`httpEquiv`,itemprop:`itemProp`,tabindex:`tabIndex`},HELMET_PROPS={DEFAULT_TITLE:`defaultTitle`,DEFER:`defer`,ENCODE_SPECIAL_CHARACTERS:`encodeSpecialCharacters`,ON_CHANGE_CLIENT_STATE:`onChangeClientState`,TITLE_TEMPLATE:`titleTemplate`},HTML_TAG_MAP=Object.keys(REACT_TAG_MAP).reduce(function(e,t){return e[REACT_TAG_MAP[t]]=t,e},{}),SELF_CLOSING_TAGS=[TAG_NAMES.NOSCRIPT,TAG_NAMES.SCRIPT,TAG_NAMES.STYLE],HELMET_ATTRIBUTE=`data-react-helmet`,_typeof$3=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},classCallCheck=function(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)},createClass=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,`value`in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}(),_extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},inherits=function(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function, not `+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)},objectWithoutProperties$1=function(e,t){var n={};for(var a in e)t.indexOf(a)>=0||Object.prototype.hasOwnProperty.call(e,a)&&(n[a]=e[a]);return n},possibleConstructorReturn=function(e,t){if(!e)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return t&&(typeof t==`object`||typeof t==`function`)?t:e},encodeSpecialCharacters=function(e){return(arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0)===!1?String(e):String(e).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#x27;`)},getTitleFromPropsList=function(e){var t=getInnermostProperty(e,TAG_NAMES.TITLE),n=getInnermostProperty(e,HELMET_PROPS.TITLE_TEMPLATE);if(n&&t)return n.replace(/%s/g,function(){return Array.isArray(t)?t.join(``):t});var a=getInnermostProperty(e,HELMET_PROPS.DEFAULT_TITLE);return t||a||void 0},getOnChangeClientState=function(e){return getInnermostProperty(e,HELMET_PROPS.ON_CHANGE_CLIENT_STATE)||function(){}},getAttributesFromPropsList=function(e,t){return t.filter(function(t){return t[e]!==void 0}).map(function(t){return t[e]}).reduce(function(e,t){return _extends({},e,t)},{})},getBaseTagFromPropsList=function(e,t){return t.filter(function(e){return e[TAG_NAMES.BASE]!==void 0}).map(function(e){return e[TAG_NAMES.BASE]}).reverse().reduce(function(t,n){if(!t.length)for(var a=Object.keys(n),o=0;o<a.length;o++){var s=a[o].toLowerCase();if(e.indexOf(s)!==-1&&n[s])return t.concat(n)}return t},[])},getTagsFromPropsList=function(e,t,n){var a={};return n.filter(function(t){return Array.isArray(t[e])?!0:(t[e]!==void 0&&warn$1(`Helmet: `+e+` should be of type "Array". Instead found type "`+_typeof$3(t[e])+`"`),!1)}).map(function(t){return t[e]}).reverse().reduce(function(e,n){var o={};n.filter(function(e){for(var n=void 0,s=Object.keys(e),l=0;l<s.length;l++){var u=s[l],d=u.toLowerCase();t.indexOf(d)!==-1&&!(n===TAG_PROPERTIES.REL&&e[n].toLowerCase()===`canonical`)&&!(d===TAG_PROPERTIES.REL&&e[d].toLowerCase()===`stylesheet`)&&(n=d),t.indexOf(u)!==-1&&(u===TAG_PROPERTIES.INNER_HTML||u===TAG_PROPERTIES.CSS_TEXT||u===TAG_PROPERTIES.ITEM_PROP)&&(n=u)}if(!n||!e[n])return!1;var f=e[n].toLowerCase();return a[n]||(a[n]={}),o[n]||(o[n]={}),a[n][f]?!1:(o[n][f]=!0,!0)}).reverse().forEach(function(t){return e.push(t)});for(var s=Object.keys(o),l=0;l<s.length;l++){var u=s[l];a[u]=(0,import_object_assign.default)({},a[u],o[u])}return e},[]).reverse()},getInnermostProperty=function(e,t){for(var n=e.length-1;n>=0;n--){var a=e[n];if(a.hasOwnProperty(t))return a[t]}return null},reducePropsToState=function(e){return{baseTag:getBaseTagFromPropsList([TAG_PROPERTIES.HREF,TAG_PROPERTIES.TARGET],e),bodyAttributes:getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY,e),defer:getInnermostProperty(e,HELMET_PROPS.DEFER),encode:getInnermostProperty(e,HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML,e),linkTags:getTagsFromPropsList(TAG_NAMES.LINK,[TAG_PROPERTIES.REL,TAG_PROPERTIES.HREF],e),metaTags:getTagsFromPropsList(TAG_NAMES.META,[TAG_PROPERTIES.NAME,TAG_PROPERTIES.CHARSET,TAG_PROPERTIES.HTTPEQUIV,TAG_PROPERTIES.PROPERTY,TAG_PROPERTIES.ITEM_PROP],e),noscriptTags:getTagsFromPropsList(TAG_NAMES.NOSCRIPT,[TAG_PROPERTIES.INNER_HTML],e),onChangeClientState:getOnChangeClientState(e),scriptTags:getTagsFromPropsList(TAG_NAMES.SCRIPT,[TAG_PROPERTIES.SRC,TAG_PROPERTIES.INNER_HTML],e),styleTags:getTagsFromPropsList(TAG_NAMES.STYLE,[TAG_PROPERTIES.CSS_TEXT],e),title:getTitleFromPropsList(e),titleAttributes:getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE,e)}},rafPolyfill=function(){var e=Date.now();return function(t){var n=Date.now();n-e>16?(e=n,t(n)):setTimeout(function(){rafPolyfill(t)},0)}}(),cafPolyfill=function(e){return clearTimeout(e)},requestAnimationFrame$1=typeof window<`u`?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||rafPolyfill:{}.requestAnimationFrame||rafPolyfill,cancelAnimationFrame$1=typeof window<`u`?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||cafPolyfill:{}.cancelAnimationFrame||cafPolyfill,warn$1=function(e){return console&&typeof console.warn==`function`&&console.warn(e)},_helmetCallback=null,handleClientStateChange=function(e){_helmetCallback&&cancelAnimationFrame$1(_helmetCallback),e.defer?_helmetCallback=requestAnimationFrame$1(function(){commitTagChanges(e,function(){_helmetCallback=null})}):(commitTagChanges(e),_helmetCallback=null)},commitTagChanges=function(e,t){var n=e.baseTag,a=e.bodyAttributes,o=e.htmlAttributes,s=e.linkTags,l=e.metaTags,u=e.noscriptTags,d=e.onChangeClientState,f=e.scriptTags,m=e.styleTags,h=e.title,v=e.titleAttributes;updateAttributes(TAG_NAMES.BODY,a),updateAttributes(TAG_NAMES.HTML,o),updateTitle(h,v);var y={baseTag:updateTags(TAG_NAMES.BASE,n),linkTags:updateTags(TAG_NAMES.LINK,s),metaTags:updateTags(TAG_NAMES.META,l),noscriptTags:updateTags(TAG_NAMES.NOSCRIPT,u),scriptTags:updateTags(TAG_NAMES.SCRIPT,f),styleTags:updateTags(TAG_NAMES.STYLE,m)},b={},x={};Object.keys(y).forEach(function(e){var t=y[e],n=t.newTags,a=t.oldTags;n.length&&(b[e]=n),a.length&&(x[e]=y[e].oldTags)}),t&&t(),d(e,b,x)},flattenArray=function(e){return Array.isArray(e)?e.join(``):e},updateTitle=function(e,t){e!==void 0&&document.title!==e&&(document.title=flattenArray(e)),updateAttributes(TAG_NAMES.TITLE,t)},updateAttributes=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var a=n.getAttribute(HELMET_ATTRIBUTE),o=a?a.split(`,`):[],s=[].concat(o),l=Object.keys(t),u=0;u<l.length;u++){var d=l[u],f=t[d]||``;n.getAttribute(d)!==f&&n.setAttribute(d,f),o.indexOf(d)===-1&&o.push(d);var m=s.indexOf(d);m!==-1&&s.splice(m,1)}for(var h=s.length-1;h>=0;h--)n.removeAttribute(s[h]);o.length===s.length?n.removeAttribute(HELMET_ATTRIBUTE):n.getAttribute(HELMET_ATTRIBUTE)!==l.join(`,`)&&n.setAttribute(HELMET_ATTRIBUTE,l.join(`,`))}},updateTags=function(e,t){var n=document.head||document.querySelector(TAG_NAMES.HEAD),a=n.querySelectorAll(e+`[`+HELMET_ATTRIBUTE+`]`),o=Array.prototype.slice.call(a),s=[],l=void 0;return t&&t.length&&t.forEach(function(t){var n=document.createElement(e);for(var a in t)if(t.hasOwnProperty(a))if(a===TAG_PROPERTIES.INNER_HTML)n.innerHTML=t.innerHTML;else if(a===TAG_PROPERTIES.CSS_TEXT)n.styleSheet?n.styleSheet.cssText=t.cssText:n.appendChild(document.createTextNode(t.cssText));else{var u=t[a]===void 0?``:t[a];n.setAttribute(a,u)}n.setAttribute(HELMET_ATTRIBUTE,`true`),o.some(function(e,t){return l=t,n.isEqualNode(e)})?o.splice(l,1):s.push(n)}),o.forEach(function(e){return e.parentNode.removeChild(e)}),s.forEach(function(e){return n.appendChild(e)}),{oldTags:o,newTags:s}},generateElementAttributesAsString=function(e){return Object.keys(e).reduce(function(t,n){var a=e[n]===void 0?``+n:n+`="`+e[n]+`"`;return t?t+` `+a:a},``)},generateTitleAsString=function(e,t,n,a){var o=generateElementAttributesAsString(n),s=flattenArray(t);return o?`<`+e+` `+HELMET_ATTRIBUTE+`="true" `+o+`>`+encodeSpecialCharacters(s,a)+`</`+e+`>`:`<`+e+` `+HELMET_ATTRIBUTE+`="true">`+encodeSpecialCharacters(s,a)+`</`+e+`>`},generateTagsAsString=function(e,t,n){return t.reduce(function(t,a){var o=Object.keys(a).filter(function(e){return!(e===TAG_PROPERTIES.INNER_HTML||e===TAG_PROPERTIES.CSS_TEXT)}).reduce(function(e,t){var o=a[t]===void 0?t:t+`="`+encodeSpecialCharacters(a[t],n)+`"`;return e?e+` `+o:o},``),s=a.innerHTML||a.cssText||``,l=SELF_CLOSING_TAGS.indexOf(e)===-1;return t+`<`+e+` `+HELMET_ATTRIBUTE+`="true" `+o+(l?`/>`:`>`+s+`</`+e+`>`)},``)},convertElementAttributestoReactProps=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(e).reduce(function(t,n){return t[REACT_TAG_MAP[n]||n]=e[n],t},t)},convertReactPropstoHtmlAttributes=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(e).reduce(function(t,n){return t[HTML_TAG_MAP[n]||n]=e[n],t},t)},generateTitleAsReactComponent=function(e,t,n){var a,o=convertElementAttributestoReactProps(n,(a={key:t},a[HELMET_ATTRIBUTE]=!0,a));return[import_react$24.createElement(TAG_NAMES.TITLE,o,t)]},generateTagsAsReactComponent=function(e,t){return t.map(function(t,n){var a,o=(a={key:n},a[HELMET_ATTRIBUTE]=!0,a);return Object.keys(t).forEach(function(e){var n=REACT_TAG_MAP[e]||e;n===TAG_PROPERTIES.INNER_HTML||n===TAG_PROPERTIES.CSS_TEXT?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]}),import_react$24.createElement(e,o)})},getMethodsForTag=function(e,t,n){switch(e){case TAG_NAMES.TITLE:return{toComponent:function(){return generateTitleAsReactComponent(e,t.title,t.titleAttributes,n)},toString:function(){return generateTitleAsString(e,t.title,t.titleAttributes,n)}};case ATTRIBUTE_NAMES.BODY:case ATTRIBUTE_NAMES.HTML:return{toComponent:function(){return convertElementAttributestoReactProps(t)},toString:function(){return generateElementAttributesAsString(t)}};default:return{toComponent:function(){return generateTagsAsReactComponent(e,t)},toString:function(){return generateTagsAsString(e,t,n)}}}},mapStateOnServer=function(e){var t=e.baseTag,n=e.bodyAttributes,a=e.encode,o=e.htmlAttributes,s=e.linkTags,l=e.metaTags,u=e.noscriptTags,d=e.scriptTags,f=e.styleTags,m=e.title,h=m===void 0?``:m,v=e.titleAttributes;return{base:getMethodsForTag(TAG_NAMES.BASE,t,a),bodyAttributes:getMethodsForTag(ATTRIBUTE_NAMES.BODY,n,a),htmlAttributes:getMethodsForTag(ATTRIBUTE_NAMES.HTML,o,a),link:getMethodsForTag(TAG_NAMES.LINK,s,a),meta:getMethodsForTag(TAG_NAMES.META,l,a),noscript:getMethodsForTag(TAG_NAMES.NOSCRIPT,u,a),script:getMethodsForTag(TAG_NAMES.SCRIPT,d,a),style:getMethodsForTag(TAG_NAMES.STYLE,f,a),title:getMethodsForTag(TAG_NAMES.TITLE,{title:h,titleAttributes:v},a)}},HelmetExport=function(e){var t,n;return n=t=function(t){inherits(n,t);function n(){return classCallCheck(this,n),possibleConstructorReturn(this,t.apply(this,arguments))}return n.prototype.shouldComponentUpdate=function(e){return!(0,import_react_fast_compare.default)(this.props,e)},n.prototype.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case TAG_NAMES.SCRIPT:case TAG_NAMES.NOSCRIPT:return{innerHTML:t};case TAG_NAMES.STYLE:return{cssText:t}}throw Error(`<`+e.type+` /> elements are self-closing and can not contain children. Refer to our API for more information.`)},n.prototype.flattenArrayTypeChildren=function(e){var t,n=e.child,a=e.arrayTypeChildren,o=e.newChildProps,s=e.nestedChildren;return _extends({},a,(t={},t[n.type]=[].concat(a[n.type]||[],[_extends({},o,this.mapNestedChildrenToProps(n,s))]),t))},n.prototype.mapObjectTypeChildren=function(e){var t,n,a=e.child,o=e.newProps,s=e.newChildProps,l=e.nestedChildren;switch(a.type){case TAG_NAMES.TITLE:return _extends({},o,(t={},t[a.type]=l,t.titleAttributes=_extends({},s),t));case TAG_NAMES.BODY:return _extends({},o,{bodyAttributes:_extends({},s)});case TAG_NAMES.HTML:return _extends({},o,{htmlAttributes:_extends({},s)})}return _extends({},o,(n={},n[a.type]=_extends({},s),n))},n.prototype.mapArrayTypeChildrenToProps=function(e,t){var n=_extends({},t);return Object.keys(e).forEach(function(t){var a;n=_extends({},n,(a={},a[t]=e[t],a))}),n},n.prototype.warnOnInvalidChildren=function(e,t){return!0},n.prototype.mapChildrenToProps=function(e,t){var n=this,a={};return import_react$24.Children.forEach(e,function(e){if(!(!e||!e.props)){var o=e.props,s=o.children,l=convertReactPropstoHtmlAttributes(objectWithoutProperties$1(o,[`children`]));switch(n.warnOnInvalidChildren(e,s),e.type){case TAG_NAMES.LINK:case TAG_NAMES.META:case TAG_NAMES.NOSCRIPT:case TAG_NAMES.SCRIPT:case TAG_NAMES.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:s});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:s});break}}}),t=this.mapArrayTypeChildrenToProps(a,t),t},n.prototype.render=function(){var t=this.props,n=t.children,a=_extends({},objectWithoutProperties$1(t,[`children`]));return n&&(a=this.mapChildrenToProps(n,a)),import_react$24.createElement(e,a)},createClass(n,null,[{key:`canUseDOM`,set:function(t){e.canUseDOM=t}}]),n}(import_react$24.Component),t.propTypes={base:import_prop_types$1.default.object,bodyAttributes:import_prop_types$1.default.object,children:import_prop_types$1.default.oneOfType([import_prop_types$1.default.arrayOf(import_prop_types$1.default.node),import_prop_types$1.default.node]),defaultTitle:import_prop_types$1.default.string,defer:import_prop_types$1.default.bool,encodeSpecialCharacters:import_prop_types$1.default.bool,htmlAttributes:import_prop_types$1.default.object,link:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),meta:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),noscript:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),onChangeClientState:import_prop_types$1.default.func,script:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),style:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),title:import_prop_types$1.default.string,titleAttributes:import_prop_types$1.default.object,titleTemplate:import_prop_types$1.default.string},t.defaultProps={defer:!0,encodeSpecialCharacters:!0},t.peek=e.peek,t.rewind=function(){var t=e.rewind();return t||=mapStateOnServer({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:``,titleAttributes:{}}),t},n}((0,import_lib$1.default)(reducePropsToState,handleClientStateChange,mapStateOnServer)(function(){return null}));HelmetExport.renderStatic=HelmetExport.rewind,init_generateUtilityClasses(),init_generateUtilityClass();function getButtonUtilityClass(e){return generateUtilityClass(`MuiButton`,e)}var buttonClasses=generateUtilityClasses(`MuiButton`,`root.text.textInherit.textPrimary.textSecondary.textSuccess.textError.textInfo.textWarning.outlined.outlinedInherit.outlinedPrimary.outlinedSecondary.outlinedSuccess.outlinedError.outlinedInfo.outlinedWarning.contained.containedInherit.containedPrimary.containedSecondary.containedSuccess.containedError.containedInfo.containedWarning.disableElevation.focusVisible.disabled.colorInherit.colorPrimary.colorSecondary.colorSuccess.colorError.colorInfo.colorWarning.textSizeSmall.textSizeMedium.textSizeLarge.outlinedSizeSmall.outlinedSizeMedium.outlinedSizeLarge.containedSizeSmall.containedSizeMedium.containedSizeLarge.sizeMedium.sizeSmall.sizeLarge.fullWidth.startIcon.endIcon.icon.iconSizeSmall.iconSizeMedium.iconSizeLarge`.split(`.`)),ButtonGroupContext=import_react$24.createContext({}),ButtonGroupButtonContext=import_react$24.createContext(void 0);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_resolveProps(),init_composeClasses(),init_styled(),init_DefaultPropsProvider(),init_capitalize();var _excluded$52=[`children`,`color`,`component`,`className`,`disabled`,`disableElevation`,`disableFocusRipple`,`endIcon`,`focusVisibleClassName`,`fullWidth`,`size`,`startIcon`,`type`,`variant`],useUtilityClasses$46=e=>{let{color:t,disableElevation:n,fullWidth:a,size:o,variant:s,classes:l}=e;return _extends$3({},l,composeClasses({root:[`root`,s,`${s}${capitalize_default(t)}`,`size${capitalize_default(o)}`,`${s}Size${capitalize_default(o)}`,`color${capitalize_default(t)}`,n&&`disableElevation`,a&&`fullWidth`],label:[`label`],startIcon:[`icon`,`startIcon`,`iconSize${capitalize_default(o)}`],endIcon:[`icon`,`endIcon`,`iconSize${capitalize_default(o)}`]},getButtonUtilityClass,l))},commonIconStyles=e=>_extends$3({},e.size===`small`&&{"& > *:nth-of-type(1)":{fontSize:18}},e.size===`medium`&&{"& > *:nth-of-type(1)":{fontSize:20}},e.size===`large`&&{"& > *:nth-of-type(1)":{fontSize:22}}),ButtonRoot=styled$1(ButtonBase,{shouldForwardProp:e=>rootShouldForwardProp(e)||e===`classes`,name:`MuiButton`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[n.variant],t[`${n.variant}${capitalize_default(n.color)}`],t[`size${capitalize_default(n.size)}`],t[`${n.variant}Size${capitalize_default(n.size)}`],n.color===`inherit`&&t.colorInherit,n.disableElevation&&t.disableElevation,n.fullWidth&&t.fullWidth]}})(({theme:e,ownerState:t})=>{var n,a;let o=e.palette.mode===`light`?e.palette.grey[300]:e.palette.grey[800],s=e.palette.mode===`light`?e.palette.grey.A100:e.palette.grey[700];return _extends$3({},e.typography.button,{minWidth:64,padding:`6px 16px`,borderRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create([`background-color`,`box-shadow`,`border-color`,`color`],{duration:e.transitions.duration.short}),"&:hover":_extends$3({textDecoration:`none`,backgroundColor:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(e.palette.text.primary,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},t.variant===`text`&&t.color!==`inherit`&&{backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},t.variant===`outlined`&&t.color!==`inherit`&&{border:`1px solid ${(e.vars||e).palette[t.color].main}`,backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},t.variant===`contained`&&{backgroundColor:e.vars?e.vars.palette.Button.inheritContainedHoverBg:s,boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2],backgroundColor:(e.vars||e).palette.grey[300]}},t.variant===`contained`&&t.color!==`inherit`&&{backgroundColor:(e.vars||e).palette[t.color].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t.color].main}}),"&:active":_extends$3({},t.variant===`contained`&&{boxShadow:(e.vars||e).shadows[8]}),[`&.${buttonClasses.focusVisible}`]:_extends$3({},t.variant===`contained`&&{boxShadow:(e.vars||e).shadows[6]}),[`&.${buttonClasses.disabled}`]:_extends$3({color:(e.vars||e).palette.action.disabled},t.variant===`outlined`&&{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`},t.variant===`contained`&&{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground})},t.variant===`text`&&{padding:`6px 8px`},t.variant===`text`&&t.color!==`inherit`&&{color:(e.vars||e).palette[t.color].main},t.variant===`outlined`&&{padding:`5px 15px`,border:`1px solid currentColor`},t.variant===`outlined`&&t.color!==`inherit`&&{color:(e.vars||e).palette[t.color].main,border:e.vars?`1px solid rgba(${e.vars.palette[t.color].mainChannel} / 0.5)`:`1px solid ${(0,import_colorManipulator.alpha)(e.palette[t.color].main,.5)}`},t.variant===`contained`&&{color:e.vars?e.vars.palette.text.primary:(a=e.palette).getContrastText?.call(a,e.palette.grey[300]),backgroundColor:e.vars?e.vars.palette.Button.inheritContainedBg:o,boxShadow:(e.vars||e).shadows[2]},t.variant===`contained`&&t.color!==`inherit`&&{color:(e.vars||e).palette[t.color].contrastText,backgroundColor:(e.vars||e).palette[t.color].main},t.color===`inherit`&&{color:`inherit`,borderColor:`currentColor`},t.size===`small`&&t.variant===`text`&&{padding:`4px 5px`,fontSize:e.typography.pxToRem(13)},t.size===`large`&&t.variant===`text`&&{padding:`8px 11px`,fontSize:e.typography.pxToRem(15)},t.size===`small`&&t.variant===`outlined`&&{padding:`3px 9px`,fontSize:e.typography.pxToRem(13)},t.size===`large`&&t.variant===`outlined`&&{padding:`7px 21px`,fontSize:e.typography.pxToRem(15)},t.size===`small`&&t.variant===`contained`&&{padding:`4px 10px`,fontSize:e.typography.pxToRem(13)},t.size===`large`&&t.variant===`contained`&&{padding:`8px 22px`,fontSize:e.typography.pxToRem(15)},t.fullWidth&&{width:`100%`})},({ownerState:e})=>e.disableElevation&&{boxShadow:`none`,"&:hover":{boxShadow:`none`},[`&.${buttonClasses.focusVisible}`]:{boxShadow:`none`},"&:active":{boxShadow:`none`},[`&.${buttonClasses.disabled}`]:{boxShadow:`none`}}),ButtonStartIcon=styled$1(`span`,{name:`MuiButton`,slot:`StartIcon`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.startIcon,t[`iconSize${capitalize_default(n.size)}`]]}})(({ownerState:e})=>_extends$3({display:`inherit`,marginRight:8,marginLeft:-4},e.size===`small`&&{marginLeft:-2},commonIconStyles(e))),ButtonEndIcon=styled$1(`span`,{name:`MuiButton`,slot:`EndIcon`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.endIcon,t[`iconSize${capitalize_default(n.size)}`]]}})(({ownerState:e})=>_extends$3({display:`inherit`,marginRight:-4,marginLeft:8},e.size===`small`&&{marginRight:-2},commonIconStyles(e))),Button=import_react$24.forwardRef(function(e,t){let n=import_react$24.useContext(ButtonGroupContext),a=import_react$24.useContext(ButtonGroupButtonContext),o=useDefaultProps({props:resolveProps(n,e),name:`MuiButton`}),{children:s,color:l=`primary`,component:u=`button`,className:d,disabled:f=!1,disableElevation:m=!1,disableFocusRipple:h=!1,endIcon:v,focusVisibleClassName:y,fullWidth:b=!1,size:x=`medium`,startIcon:S,type:C,variant:T=`text`}=o,E=_objectWithoutPropertiesLoose$3(o,_excluded$52),D=_extends$3({},o,{color:l,component:u,disabled:f,disableElevation:m,disableFocusRipple:h,fullWidth:b,size:x,type:C,variant:T}),O=useUtilityClasses$46(D),k=S&&(0,import_jsx_runtime.jsx)(ButtonStartIcon,{className:O.startIcon,ownerState:D,children:S}),j=v&&(0,import_jsx_runtime.jsx)(ButtonEndIcon,{className:O.endIcon,ownerState:D,children:v}),M=a||``;return(0,import_jsx_runtime.jsxs)(ButtonRoot,_extends$3({ownerState:D,className:clsx$1(n.className,O.root,d,M),component:u,disabled:f,focusRipple:!h,focusVisibleClassName:clsx$1(O.focusVisible,y),ref:t,type:C},E,{classes:O,children:[k,s,j]}))});init_generateUtilityClasses(),init_generateUtilityClass();function getDialogUtilityClass(e){return generateUtilityClass(`MuiDialog`,e)}var dialogClasses=generateUtilityClasses(`MuiDialog`,[`root`,`scrollPaper`,`scrollBody`,`container`,`paper`,`paperScrollPaper`,`paperScrollBody`,`paperWidthFalse`,`paperWidthXs`,`paperWidthSm`,`paperWidthMd`,`paperWidthLg`,`paperWidthXl`,`paperFullWidth`,`paperFullScreen`]),DialogContext=import_react$24.createContext({});init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_useId$1(),init_capitalize(),init_DefaultPropsProvider(),init_styled();var _excluded$51=[`aria-describedby`,`aria-labelledby`,`BackdropComponent`,`BackdropProps`,`children`,`className`,`disableEscapeKeyDown`,`fullScreen`,`fullWidth`,`maxWidth`,`onBackdropClick`,`onClick`,`onClose`,`open`,`PaperComponent`,`PaperProps`,`scroll`,`TransitionComponent`,`transitionDuration`,`TransitionProps`],DialogBackdrop=styled$1(Backdrop,{name:`MuiDialog`,slot:`Backdrop`,overrides:(e,t)=>t.backdrop})({zIndex:-1}),useUtilityClasses$45=e=>{let{classes:t,scroll:n,maxWidth:a,fullWidth:o,fullScreen:s}=e;return composeClasses({root:[`root`],container:[`container`,`scroll${capitalize_default(n)}`],paper:[`paper`,`paperScroll${capitalize_default(n)}`,`paperWidth${capitalize_default(String(a))}`,o&&`paperFullWidth`,s&&`paperFullScreen`]},getDialogUtilityClass,t)},DialogRoot=styled$1(Modal,{name:`MuiDialog`,slot:`Root`,overridesResolver:(e,t)=>t.root})({"@media print":{position:`absolute !important`}}),DialogContainer=styled$1(`div`,{name:`MuiDialog`,slot:`Container`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.container,t[`scroll${capitalize_default(n.scroll)}`]]}})(({ownerState:e})=>_extends$3({height:`100%`,"@media print":{height:`auto`},outline:0},e.scroll===`paper`&&{display:`flex`,justifyContent:`center`,alignItems:`center`},e.scroll===`body`&&{overflowY:`auto`,overflowX:`hidden`,textAlign:`center`,"&::after":{content:`""`,display:`inline-block`,verticalAlign:`middle`,height:`100%`,width:`0`}})),DialogPaper=styled$1(Paper,{name:`MuiDialog`,slot:`Paper`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.paper,t[`scrollPaper${capitalize_default(n.scroll)}`],t[`paperWidth${capitalize_default(String(n.maxWidth))}`],n.fullWidth&&t.paperFullWidth,n.fullScreen&&t.paperFullScreen]}})(({theme:e,ownerState:t})=>_extends$3({margin:32,position:`relative`,overflowY:`auto`,"@media print":{overflowY:`visible`,boxShadow:`none`}},t.scroll===`paper`&&{display:`flex`,flexDirection:`column`,maxHeight:`calc(100% - 64px)`},t.scroll===`body`&&{display:`inline-block`,verticalAlign:`middle`,textAlign:`left`},!t.maxWidth&&{maxWidth:`calc(100% - 64px)`},t.maxWidth===`xs`&&{maxWidth:e.breakpoints.unit===`px`?Math.max(e.breakpoints.values.xs,444):`max(${e.breakpoints.values.xs}${e.breakpoints.unit}, 444px)`,[`&.${dialogClasses.paperScrollBody}`]:{[e.breakpoints.down(Math.max(e.breakpoints.values.xs,444)+64)]:{maxWidth:`calc(100% - 64px)`}}},t.maxWidth&&t.maxWidth!==`xs`&&{maxWidth:`${e.breakpoints.values[t.maxWidth]}${e.breakpoints.unit}`,[`&.${dialogClasses.paperScrollBody}`]:{[e.breakpoints.down(e.breakpoints.values[t.maxWidth]+64)]:{maxWidth:`calc(100% - 64px)`}}},t.fullWidth&&{width:`calc(100% - 64px)`},t.fullScreen&&{margin:0,width:`100%`,maxWidth:`100%`,height:`100%`,maxHeight:`none`,borderRadius:0,[`&.${dialogClasses.paperScrollBody}`]:{margin:0,maxWidth:`100%`}})),Dialog=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiDialog`}),a=useTheme$1(),o={enter:a.transitions.duration.enteringScreen,exit:a.transitions.duration.leavingScreen},{"aria-describedby":s,"aria-labelledby":l,BackdropComponent:u,BackdropProps:d,children:f,className:m,disableEscapeKeyDown:h=!1,fullScreen:v=!1,fullWidth:y=!1,maxWidth:b=`sm`,onBackdropClick:x,onClick:S,onClose:C,open:T,PaperComponent:E=Paper,PaperProps:D={},scroll:O=`paper`,TransitionComponent:k=Fade,transitionDuration:j=o,TransitionProps:M}=n,N=_objectWithoutPropertiesLoose$3(n,_excluded$51),F=_extends$3({},n,{disableEscapeKeyDown:h,fullScreen:v,fullWidth:y,maxWidth:b,scroll:O}),I=useUtilityClasses$45(F),L=import_react$24.useRef(),R=e=>{L.current=e.target===e.currentTarget},z=e=>{S&&S(e),L.current&&(L.current=null,x&&x(e),C&&C(e,`backdropClick`))},B=useId(l),V=import_react$24.useMemo(()=>({titleId:B}),[B]);return(0,import_jsx_runtime.jsx)(DialogRoot,_extends$3({className:clsx$1(I.root,m),closeAfterTransition:!0,components:{Backdrop:DialogBackdrop},componentsProps:{backdrop:_extends$3({transitionDuration:j,as:u},d)},disableEscapeKeyDown:h,onClose:C,open:T,ref:t,onClick:z,ownerState:F},N,{children:(0,import_jsx_runtime.jsx)(k,_extends$3({appear:!0,in:T,timeout:j,role:`presentation`},M,{children:(0,import_jsx_runtime.jsx)(DialogContainer,{className:clsx$1(I.container),onMouseDown:R,ownerState:F,children:(0,import_jsx_runtime.jsx)(DialogPaper,_extends$3({as:E,elevation:24,role:`dialog`,"aria-describedby":s,"aria-labelledby":B},D,{className:clsx$1(I.paper,D.className),ownerState:F,children:(0,import_jsx_runtime.jsx)(DialogContext.Provider,{value:V,children:f})}))})}))}))});init_generateUtilityClasses(),init_generateUtilityClass();function getDialogTitleUtilityClass(e){return generateUtilityClass(`MuiDialogTitle`,e)}var dialogTitleClasses=generateUtilityClasses(`MuiDialogTitle`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$50=[`className`,`id`],useUtilityClasses$44=e=>{let{classes:t}=e;return composeClasses({root:[`root`]},getDialogTitleUtilityClass,t)},DialogTitleRoot=styled$1(Typography,{name:`MuiDialogTitle`,slot:`Root`,overridesResolver:(e,t)=>t.root})({padding:`16px 24px`,flex:`0 0 auto`}),DialogTitle=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiDialogTitle`}),{className:a,id:o}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$50),l=n,u=useUtilityClasses$44(l),{titleId:d=o}=import_react$24.useContext(DialogContext);return(0,import_jsx_runtime.jsx)(DialogTitleRoot,_extends$3({component:`h2`,className:clsx$1(u.root,a),ownerState:l,ref:t,variant:`h6`,id:o??d},s))});init_generateUtilityClasses(),init_generateUtilityClass();function getDialogContentUtilityClass(e){return generateUtilityClass(`MuiDialogContent`,e)}var dialogContentClasses=generateUtilityClasses(`MuiDialogContent`,[`root`,`dividers`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$49=[`className`,`dividers`],useUtilityClasses$43=e=>{let{classes:t,dividers:n}=e;return composeClasses({root:[`root`,n&&`dividers`]},getDialogContentUtilityClass,t)},DialogContentRoot=styled$1(`div`,{name:`MuiDialogContent`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.dividers&&t.dividers]}})(({theme:e,ownerState:t})=>_extends$3({flex:`1 1 auto`,WebkitOverflowScrolling:`touch`,overflowY:`auto`,padding:`20px 24px`},t.dividers?{padding:`16px 24px`,borderTop:`1px solid ${(e.vars||e).palette.divider}`,borderBottom:`1px solid ${(e.vars||e).palette.divider}`}:{[`.${dialogTitleClasses.root} + &`]:{paddingTop:0}})),DialogContent=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiDialogContent`}),{className:a,dividers:o=!1}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$49),l=_extends$3({},n,{dividers:o}),u=useUtilityClasses$43(l);return(0,import_jsx_runtime.jsx)(DialogContentRoot,_extends$3({className:clsx$1(u.root,a),ownerState:l,ref:t},s))});init_generateUtilityClasses(),init_generateUtilityClass();function getDialogActionsUtilityClass(e){return generateUtilityClass(`MuiDialogActions`,e)}var dialogActionsClasses=generateUtilityClasses(`MuiDialogActions`,[`root`,`spacing`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$48=[`className`,`disableSpacing`],useUtilityClasses$42=e=>{let{classes:t,disableSpacing:n}=e;return composeClasses({root:[`root`,!n&&`spacing`]},getDialogActionsUtilityClass,t)},DialogActionsRoot=styled$1(`div`,{name:`MuiDialogActions`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,!n.disableSpacing&&t.spacing]}})(({ownerState:e})=>_extends$3({display:`flex`,alignItems:`center`,padding:8,justifyContent:`flex-end`,flex:`0 0 auto`},!e.disableSpacing&&{"& > :not(style) ~ :not(style)":{marginLeft:8}})),DialogActions=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiDialogActions`}),{className:a,disableSpacing:o=!1}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$48),l=_extends$3({},n,{disableSpacing:o}),u=useUtilityClasses$42(l);return(0,import_jsx_runtime.jsx)(DialogActionsRoot,_extends$3({className:clsx$1(u.root,a),ownerState:l,ref:t},s))}),chitchatterDomain=`https://chitchatter.im`,ChatRoom=()=>{let e=`chat-title`,t=`chat-content`,{handlers:{handleChatRoomOpenStateChange:n},gameState:{playerId:a,isChatOpen:o,room:s}}=(0,import_react$24.useContext)(FarmhandContext),l=()=>{n(!1)},u=(0,import_jsx_runtime.jsx)(`chat-room`,{"root-url":chitchatterDomain,room:`__farmhand__${s}`,"user-id":a,style:{height:`100%`,width:`100%`,border:`none`},"color-mode":`light`});return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(HelmetExport,{children:(0,import_jsx_runtime.jsx)(`script`,{src:`${chitchatterDomain}/sdk.js`})}),(0,import_jsx_runtime.jsxs)(Dialog,{className:(0,import_classnames.default)(`Farmhand`,`ChatRoom`),fullWidth:!0,keepMounted:!0,fullScreen:!0,open:o,onClose:l,sx:{"& .MuiDialog-container":{padding:`1em`,height:`calc(100% - 2em)`}},"aria-describedby":e,"aria-labelledby":t,children:[(0,import_jsx_runtime.jsx)(DialogTitle,{id:e,children:`Chat room`}),(0,import_jsx_runtime.jsx)(DialogContent,{id:t,children:u}),(0,import_jsx_runtime.jsx)(DialogActions,{children:(0,import_jsx_runtime.jsx)(Button,{onClick:l,color:`primary`,autoFocus:!0,children:`Close`})})]})]})},AccordionContext=import_react$24.createContext({});init_extends(),init_objectWithoutPropertiesLoose(),init_useForkRef$1(),init_appendOwnerState(),init_resolveComponentProps(),init_mergeSlotProps();var _excluded$47=[`className`,`elementType`,`ownerState`,`externalForwardedProps`,`getSlotOwnerState`,`internalForwardedProps`],_excluded2$3=[`component`,`slots`,`slotProps`],_excluded3$1=[`component`];function useSlot(e,t){let{className:n,elementType:a,ownerState:o,externalForwardedProps:s,getSlotOwnerState:l,internalForwardedProps:u}=t,d=_objectWithoutPropertiesLoose$3(t,_excluded$47),{component:f,slots:m={[e]:void 0},slotProps:h={[e]:void 0}}=s,v=_objectWithoutPropertiesLoose$3(s,_excluded2$3),y=m[e]||a,b=resolveComponentProps(h[e],o),x=mergeSlotProps(_extends$3({className:n},d,{externalForwardedProps:e===`root`?v:void 0,externalSlotProps:b})),{props:{component:S},internalRef:C}=x,T=_objectWithoutPropertiesLoose$3(x.props,_excluded3$1),E=useForkRef(C,b?.ref,t.ref),D=l?l(T):{},O=_extends$3({},o,D),k=e===`root`?S||f:S,j=appendOwnerState(y,_extends$3({},e===`root`&&!f&&!m[e]&&u,e!==`root`&&!m[e]&&u,T,k&&{as:k},{ref:E}),O);return Object.keys(D).forEach(e=>{delete j[e]}),[y,j]}init_generateUtilityClasses(),init_generateUtilityClass();function getAccordionUtilityClass(e){return generateUtilityClass(`MuiAccordion`,e)}var accordionClasses=generateUtilityClasses(`MuiAccordion`,[`root`,`rounded`,`expanded`,`disabled`,`gutters`,`region`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider(),init_useControlled();var _excluded$46=[`children`,`className`,`defaultExpanded`,`disabled`,`disableGutters`,`expanded`,`onChange`,`square`,`slots`,`slotProps`,`TransitionComponent`,`TransitionProps`],useUtilityClasses$41=e=>{let{classes:t,square:n,expanded:a,disabled:o,disableGutters:s}=e;return composeClasses({root:[`root`,!n&&`rounded`,a&&`expanded`,o&&`disabled`,!s&&`gutters`],region:[`region`]},getAccordionUtilityClass,t)},AccordionRoot=styled$1(Paper,{name:`MuiAccordion`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[{[`& .${accordionClasses.region}`]:t.region},t.root,!n.square&&t.rounded,!n.disableGutters&&t.gutters]}})(({theme:e})=>{let t={duration:e.transitions.duration.shortest};return{position:`relative`,transition:e.transitions.create([`margin`],t),overflowAnchor:`none`,"&::before":{position:`absolute`,left:0,top:-1,right:0,height:1,content:`""`,opacity:1,backgroundColor:(e.vars||e).palette.divider,transition:e.transitions.create([`opacity`,`background-color`],t)},"&:first-of-type":{"&::before":{display:`none`}},[`&.${accordionClasses.expanded}`]:{"&::before":{opacity:0},"&:first-of-type":{marginTop:0},"&:last-of-type":{marginBottom:0},"& + &":{"&::before":{display:`none`}}},[`&.${accordionClasses.disabled}`]:{backgroundColor:(e.vars||e).palette.action.disabledBackground}}},({theme:e})=>({variants:[{props:e=>!e.square,style:{borderRadius:0,"&:first-of-type":{borderTopLeftRadius:(e.vars||e).shape.borderRadius,borderTopRightRadius:(e.vars||e).shape.borderRadius},"&:last-of-type":{borderBottomLeftRadius:(e.vars||e).shape.borderRadius,borderBottomRightRadius:(e.vars||e).shape.borderRadius,"@supports (-ms-ime-align: auto)":{borderBottomLeftRadius:0,borderBottomRightRadius:0}}}},{props:e=>!e.disableGutters,style:{[`&.${accordionClasses.expanded}`]:{margin:`16px 0`}}}]})),Accordion=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiAccordion`}),{children:a,className:o,defaultExpanded:s=!1,disabled:l=!1,disableGutters:u=!1,expanded:d,onChange:f,square:m=!1,slots:h={},slotProps:v={},TransitionComponent:y,TransitionProps:b}=n,x=_objectWithoutPropertiesLoose$3(n,_excluded$46),[S,C]=useControlled_default({controlled:d,default:s,name:`Accordion`,state:`expanded`}),T=import_react$24.useCallback(e=>{C(!S),f&&f(e,!S)},[S,f,C]),[E,...D]=import_react$24.Children.toArray(a),O=import_react$24.useMemo(()=>({expanded:S,disabled:l,disableGutters:u,toggle:T}),[S,l,u,T]),k=_extends$3({},n,{square:m,disabled:l,disableGutters:u,expanded:S}),j=useUtilityClasses$41(k),[M,N]=useSlot(`transition`,{elementType:Collapse,externalForwardedProps:{slots:_extends$3({transition:y},h),slotProps:_extends$3({transition:b},v)},ownerState:k});return(0,import_jsx_runtime.jsxs)(AccordionRoot,_extends$3({className:clsx$1(j.root,o),ref:t,ownerState:k,square:m},x,{children:[(0,import_jsx_runtime.jsx)(AccordionContext.Provider,{value:O,children:E}),(0,import_jsx_runtime.jsx)(M,_extends$3({in:S,timeout:`auto`},N,{children:(0,import_jsx_runtime.jsx)(`div`,{"aria-labelledby":E.props.id,id:E.props[`aria-controls`],role:`region`,className:j.region,children:D})}))]}))});init_generateUtilityClasses(),init_generateUtilityClass();function getAccordionSummaryUtilityClass(e){return generateUtilityClass(`MuiAccordionSummary`,e)}var accordionSummaryClasses=generateUtilityClasses(`MuiAccordionSummary`,[`root`,`expanded`,`focusVisible`,`disabled`,`gutters`,`contentGutters`,`content`,`expandIconWrapper`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$45=[`children`,`className`,`expandIcon`,`focusVisibleClassName`,`onClick`],useUtilityClasses$40=e=>{let{classes:t,expanded:n,disabled:a,disableGutters:o}=e;return composeClasses({root:[`root`,n&&`expanded`,a&&`disabled`,!o&&`gutters`],focusVisible:[`focusVisible`],content:[`content`,n&&`expanded`,!o&&`contentGutters`],expandIconWrapper:[`expandIconWrapper`,n&&`expanded`]},getAccordionSummaryUtilityClass,t)},AccordionSummaryRoot=styled$1(ButtonBase,{name:`MuiAccordionSummary`,slot:`Root`,overridesResolver:(e,t)=>t.root})(({theme:e})=>{let t={duration:e.transitions.duration.shortest};return{display:`flex`,minHeight:48,padding:e.spacing(0,2),transition:e.transitions.create([`min-height`,`background-color`],t),[`&.${accordionSummaryClasses.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${accordionSummaryClasses.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},[`&:hover:not(.${accordionSummaryClasses.disabled})`]:{cursor:`pointer`},variants:[{props:e=>!e.disableGutters,style:{[`&.${accordionSummaryClasses.expanded}`]:{minHeight:64}}}]}}),AccordionSummaryContent=styled$1(`div`,{name:`MuiAccordionSummary`,slot:`Content`,overridesResolver:(e,t)=>t.content})(({theme:e})=>({display:`flex`,flexGrow:1,margin:`12px 0`,variants:[{props:e=>!e.disableGutters,style:{transition:e.transitions.create([`margin`],{duration:e.transitions.duration.shortest}),[`&.${accordionSummaryClasses.expanded}`]:{margin:`20px 0`}}}]})),AccordionSummaryExpandIconWrapper=styled$1(`div`,{name:`MuiAccordionSummary`,slot:`ExpandIconWrapper`,overridesResolver:(e,t)=>t.expandIconWrapper})(({theme:e})=>({display:`flex`,color:(e.vars||e).palette.action.active,transform:`rotate(0deg)`,transition:e.transitions.create(`transform`,{duration:e.transitions.duration.shortest}),[`&.${accordionSummaryClasses.expanded}`]:{transform:`rotate(180deg)`}})),AccordionSummary=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiAccordionSummary`}),{children:a,className:o,expandIcon:s,focusVisibleClassName:l,onClick:u}=n,d=_objectWithoutPropertiesLoose$3(n,_excluded$45),{disabled:f=!1,disableGutters:m,expanded:h,toggle:v}=import_react$24.useContext(AccordionContext),y=e=>{v&&v(e),u&&u(e)},b=_extends$3({},n,{expanded:h,disabled:f,disableGutters:m}),x=useUtilityClasses$40(b);return(0,import_jsx_runtime.jsxs)(AccordionSummaryRoot,_extends$3({focusRipple:!1,disableRipple:!0,disabled:f,component:`div`,"aria-expanded":h,className:clsx$1(x.root,o),focusVisibleClassName:clsx$1(x.focusVisible,l),onClick:y,ref:t,ownerState:b},d,{children:[(0,import_jsx_runtime.jsx)(AccordionSummaryContent,{className:x.content,ownerState:b,children:a}),s&&(0,import_jsx_runtime.jsx)(AccordionSummaryExpandIconWrapper,{className:x.expandIconWrapper,ownerState:b,children:s})]}))});init_generateUtilityClasses(),init_generateUtilityClass();function getAccordionDetailsUtilityClass(e){return generateUtilityClass(`MuiAccordionDetails`,e)}var accordionDetailsClasses=generateUtilityClasses(`MuiAccordionDetails`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$44=[`className`],useUtilityClasses$39=e=>{let{classes:t}=e;return composeClasses({root:[`root`]},getAccordionDetailsUtilityClass,t)},AccordionDetailsRoot=styled$1(`div`,{name:`MuiAccordionDetails`,slot:`Root`,overridesResolver:(e,t)=>t.root})(({theme:e})=>({padding:e.spacing(1,2,2)})),AccordionDetails=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiAccordionDetails`}),{className:a}=n,o=_objectWithoutPropertiesLoose$3(n,_excluded$44),s=n,l=useUtilityClasses$39(s);return(0,import_jsx_runtime.jsx)(AccordionDetailsRoot,_extends$3({className:clsx$1(l.root,a),ref:t,ownerState:s},o))}),FormControlContext=import_react$24.createContext(void 0);function useFormControl(){return import_react$24.useContext(FormControlContext)}init_generateUtilityClasses(),init_generateUtilityClass();function getSwitchBaseUtilityClass(e){return generateUtilityClass(`PrivateSwitchBase`,e)}var switchBaseClasses=generateUtilityClasses(`PrivateSwitchBase`,[`root`,`checked`,`disabled`,`input`,`edgeStart`,`edgeEnd`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_capitalize(),init_styled(),init_useControlled();var _excluded$43=[`autoFocus`,`checked`,`checkedIcon`,`className`,`defaultChecked`,`disabled`,`disableFocusRipple`,`edge`,`icon`,`id`,`inputProps`,`inputRef`,`name`,`onBlur`,`onChange`,`onFocus`,`readOnly`,`required`,`tabIndex`,`type`,`value`],useUtilityClasses$38=e=>{let{classes:t,checked:n,disabled:a,edge:o}=e;return composeClasses({root:[`root`,n&&`checked`,a&&`disabled`,o&&`edge${capitalize_default(o)}`],input:[`input`]},getSwitchBaseUtilityClass,t)},SwitchBaseRoot=styled$1(ButtonBase,{name:`MuiSwitchBase`})(({ownerState:e})=>_extends$3({padding:9,borderRadius:`50%`},e.edge===`start`&&{marginLeft:e.size===`small`?-3:-12},e.edge===`end`&&{marginRight:e.size===`small`?-3:-12})),SwitchBaseInput=styled$1(`input`,{name:`MuiSwitchBase`,shouldForwardProp:rootShouldForwardProp})({cursor:`inherit`,position:`absolute`,opacity:0,width:`100%`,height:`100%`,top:0,left:0,margin:0,padding:0,zIndex:1}),SwitchBase=import_react$24.forwardRef(function(e,t){let{autoFocus:n,checked:a,checkedIcon:o,className:s,defaultChecked:l,disabled:u,disableFocusRipple:d=!1,edge:f=!1,icon:m,id:h,inputProps:v,inputRef:y,name:b,onBlur:x,onChange:S,onFocus:C,readOnly:T,required:E=!1,tabIndex:D,type:O,value:k}=e,j=_objectWithoutPropertiesLoose$3(e,_excluded$43),[M,N]=useControlled_default({controlled:a,default:!!l,name:`SwitchBase`,state:`checked`}),F=useFormControl(),I=e=>{C&&C(e),F&&F.onFocus&&F.onFocus(e)},L=e=>{x&&x(e),F&&F.onBlur&&F.onBlur(e)},R=e=>{if(e.nativeEvent.defaultPrevented)return;let t=e.target.checked;N(t),S&&S(e,t)},z=u;F&&z===void 0&&(z=F.disabled);let B=O===`checkbox`||O===`radio`,V=_extends$3({},e,{checked:M,disabled:z,disableFocusRipple:d,edge:f}),H=useUtilityClasses$38(V);return(0,import_jsx_runtime.jsxs)(SwitchBaseRoot,_extends$3({component:`span`,className:clsx$1(H.root,s),centerRipple:!0,focusRipple:!d,disabled:z,tabIndex:null,role:void 0,onFocus:I,onBlur:L,ownerState:V,ref:t},j,{children:[(0,import_jsx_runtime.jsx)(SwitchBaseInput,_extends$3({autoFocus:n,checked:a,defaultChecked:l,className:H.input,disabled:z,id:B?h:void 0,name:b,onChange:R,readOnly:T,ref:y,required:E,ownerState:V,tabIndex:D,type:O},O===`checkbox`&&k===void 0?{}:{value:k},v)),M?o:m]}))});init_createSvgIcon();var CheckBoxOutlineBlank_default=createSvgIcon((0,import_jsx_runtime.jsx)(`path`,{d:`M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z`}),`CheckBoxOutlineBlank`);init_createSvgIcon();var CheckBox_default=createSvgIcon((0,import_jsx_runtime.jsx)(`path`,{d:`M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z`}),`CheckBox`);init_createSvgIcon();var IndeterminateCheckBox_default=createSvgIcon((0,import_jsx_runtime.jsx)(`path`,{d:`M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z`}),`IndeterminateCheckBox`);init_generateUtilityClasses(),init_generateUtilityClass();function getCheckboxUtilityClass(e){return generateUtilityClass(`MuiCheckbox`,e)}var checkboxClasses=generateUtilityClasses(`MuiCheckbox`,[`root`,`checked`,`disabled`,`indeterminate`,`colorPrimary`,`colorSecondary`,`sizeSmall`,`sizeMedium`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_capitalize(),init_DefaultPropsProvider(),init_styled();var _excluded$42=[`checkedIcon`,`color`,`icon`,`indeterminate`,`indeterminateIcon`,`inputProps`,`size`,`className`],useUtilityClasses$37=e=>{let{classes:t,indeterminate:n,color:a,size:o}=e;return _extends$3({},t,composeClasses({root:[`root`,n&&`indeterminate`,`color${capitalize_default(a)}`,`size${capitalize_default(o)}`]},getCheckboxUtilityClass,t))},CheckboxRoot=styled$1(SwitchBase,{shouldForwardProp:e=>rootShouldForwardProp(e)||e===`classes`,name:`MuiCheckbox`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.indeterminate&&t.indeterminate,t[`size${capitalize_default(n.size)}`],n.color!=="default"&&t[`color${capitalize_default(n.color)}`]]}})(({theme:e,ownerState:t})=>_extends$3({color:(e.vars||e).palette.text.secondary},!t.disableRipple&&{"&:hover":{backgroundColor:e.vars?`rgba(${t.color==="default"?e.vars.palette.action.activeChannel:e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(t.color==="default"?e.palette.action.active:e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}}},t.color!=="default"&&{[`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]:{color:(e.vars||e).palette[t.color].main},[`&.${checkboxClasses.disabled}`]:{color:(e.vars||e).palette.action.disabled}})),defaultCheckedIcon=(0,import_jsx_runtime.jsx)(CheckBox_default,{}),defaultIcon=(0,import_jsx_runtime.jsx)(CheckBoxOutlineBlank_default,{}),defaultIndeterminateIcon=(0,import_jsx_runtime.jsx)(IndeterminateCheckBox_default,{}),Checkbox=import_react$24.forwardRef(function(e,t){var n,a;let o=useDefaultProps({props:e,name:`MuiCheckbox`}),{checkedIcon:s=defaultCheckedIcon,color:l=`primary`,icon:u=defaultIcon,indeterminate:d=!1,indeterminateIcon:f=defaultIndeterminateIcon,inputProps:m,size:h=`medium`,className:v}=o,y=_objectWithoutPropertiesLoose$3(o,_excluded$42),b=d?f:u,x=d?f:s,S=_extends$3({},o,{color:l,indeterminate:d,size:h}),C=useUtilityClasses$37(S);return(0,import_jsx_runtime.jsx)(CheckboxRoot,_extends$3({type:`checkbox`,inputProps:_extends$3({"data-indeterminate":d},m),icon:import_react$24.cloneElement(b,{fontSize:b.props.fontSize??h}),checkedIcon:import_react$24.cloneElement(x,{fontSize:x.props.fontSize??h}),ownerState:S,ref:t,className:clsx$1(C.root,v)},y,{classes:C}))});function hasValue(e){return e!=null&&!(Array.isArray(e)&&e.length===0)}function isFilled(e,t=!1){return e&&(hasValue(e.value)&&e.value!==``||t&&hasValue(e.defaultValue)&&e.defaultValue!==``)}function isAdornedStart(e){return e.startAdornment}init_generateUtilityClasses(),init_generateUtilityClass();function getFormControlUtilityClasses(e){return generateUtilityClass(`MuiFormControl`,e)}var formControlClasses=generateUtilityClasses(`MuiFormControl`,[`root`,`marginNone`,`marginNormal`,`marginDense`,`fullWidth`,`disabled`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_DefaultPropsProvider(),init_styled(),init_capitalize(),init_isMuiElement();var _excluded$41=[`children`,`className`,`color`,`component`,`disabled`,`error`,`focused`,`fullWidth`,`hiddenLabel`,`margin`,`required`,`size`,`variant`],useUtilityClasses$36=e=>{let{classes:t,margin:n,fullWidth:a}=e;return composeClasses({root:[`root`,n!==`none`&&`margin${capitalize_default(n)}`,a&&`fullWidth`]},getFormControlUtilityClasses,t)},FormControlRoot=styled$1(`div`,{name:`MuiFormControl`,slot:`Root`,overridesResolver:({ownerState:e},t)=>_extends$3({},t.root,t[`margin${capitalize_default(e.margin)}`],e.fullWidth&&t.fullWidth)})(({ownerState:e})=>_extends$3({display:`inline-flex`,flexDirection:`column`,position:`relative`,minWidth:0,padding:0,margin:0,border:0,verticalAlign:`top`},e.margin===`normal`&&{marginTop:16,marginBottom:8},e.margin===`dense`&&{marginTop:8,marginBottom:4},e.fullWidth&&{width:`100%`})),FormControl=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiFormControl`}),{children:a,className:o,color:s=`primary`,component:l=`div`,disabled:u=!1,error:d=!1,focused:f,fullWidth:m=!1,hiddenLabel:h=!1,margin:v=`none`,required:y=!1,size:b=`medium`,variant:x=`outlined`}=n,S=_objectWithoutPropertiesLoose$3(n,_excluded$41),C=_extends$3({},n,{color:s,component:l,disabled:u,error:d,fullWidth:m,hiddenLabel:h,margin:v,required:y,size:b,variant:x}),T=useUtilityClasses$36(C),[E,D]=import_react$24.useState(()=>{let e=!1;return a&&import_react$24.Children.forEach(a,t=>{if(!isMuiElement_default(t,[`Input`,`Select`]))return;let n=isMuiElement_default(t,[`Select`])?t.props.input:t;n&&isAdornedStart(n.props)&&(e=!0)}),e}),[O,k]=import_react$24.useState(()=>{let e=!1;return a&&import_react$24.Children.forEach(a,t=>{isMuiElement_default(t,[`Input`,`Select`])&&(isFilled(t.props,!0)||isFilled(t.props.inputProps,!0))&&(e=!0)}),e}),[j,M]=import_react$24.useState(!1);u&&j&&M(!1);let N=f!==void 0&&!u?f:j,F,I=import_react$24.useMemo(()=>({adornedStart:E,setAdornedStart:D,color:s,disabled:u,error:d,filled:O,focused:N,fullWidth:m,hiddenLabel:h,size:b,onBlur:()=>{M(!1)},onEmpty:()=>{k(!1)},onFilled:()=>{k(!0)},onFocus:()=>{M(!0)},registerEffect:void 0,required:y,variant:x}),[E,s,u,d,O,N,m,h,void 0,y,b,x]);return(0,import_jsx_runtime.jsx)(FormControlContext.Provider,{value:I,children:(0,import_jsx_runtime.jsx)(FormControlRoot,_extends$3({as:l,ownerState:C,className:clsx$1(T.root,o),ref:t},S,{children:a}))})});init_styled(),init_DefaultPropsProvider();var Stack=createStack({createStyledComponent:styled$1(`div`,{name:`MuiStack`,slot:`Root`,overridesResolver:(e,t)=>t.root}),useThemeProps:e=>useDefaultProps({props:e,name:`MuiStack`})});init_generateUtilityClasses(),init_generateUtilityClass();function getFormControlLabelUtilityClasses(e){return generateUtilityClass(`MuiFormControlLabel`,e)}var formControlLabelClasses=generateUtilityClasses(`MuiFormControlLabel`,[`root`,`labelPlacementStart`,`labelPlacementTop`,`labelPlacementBottom`,`disabled`,`label`,`error`,`required`,`asterisk`]);function formControlState({props:e,states:t,muiFormControl:n}){return t.reduce((t,a)=>(t[a]=e[a],n&&e[a]===void 0&&(t[a]=n[a]),t),{})}init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_capitalize(),init_styled(),init_DefaultPropsProvider();var _excluded$40=[`checked`,`className`,`componentsProps`,`control`,`disabled`,`disableTypography`,`inputRef`,`label`,`labelPlacement`,`name`,`onChange`,`required`,`slotProps`,`value`],useUtilityClasses$35=e=>{let{classes:t,disabled:n,labelPlacement:a,error:o,required:s}=e;return composeClasses({root:[`root`,n&&`disabled`,`labelPlacement${capitalize_default(a)}`,o&&`error`,s&&`required`],label:[`label`,n&&`disabled`],asterisk:[`asterisk`,o&&`error`]},getFormControlLabelUtilityClasses,t)},FormControlLabelRoot=styled$1(`label`,{name:`MuiFormControlLabel`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[{[`& .${formControlLabelClasses.label}`]:t.label},t.root,t[`labelPlacement${capitalize_default(n.labelPlacement)}`]]}})(({theme:e,ownerState:t})=>_extends$3({display:`inline-flex`,alignItems:`center`,cursor:`pointer`,verticalAlign:`middle`,WebkitTapHighlightColor:`transparent`,marginLeft:-11,marginRight:16,[`&.${formControlLabelClasses.disabled}`]:{cursor:`default`}},t.labelPlacement===`start`&&{flexDirection:`row-reverse`,marginLeft:16,marginRight:-11},t.labelPlacement===`top`&&{flexDirection:`column-reverse`,marginLeft:16},t.labelPlacement===`bottom`&&{flexDirection:`column`,marginLeft:16},{[`& .${formControlLabelClasses.label}`]:{[`&.${formControlLabelClasses.disabled}`]:{color:(e.vars||e).palette.text.disabled}}})),AsteriskComponent$1=styled$1(`span`,{name:`MuiFormControlLabel`,slot:`Asterisk`,overridesResolver:(e,t)=>t.asterisk})(({theme:e})=>({[`&.${formControlLabelClasses.error}`]:{color:(e.vars||e).palette.error.main}})),FormControlLabel=import_react$24.forwardRef(function(e,t){var n,a;let o=useDefaultProps({props:e,name:`MuiFormControlLabel`}),{className:s,componentsProps:l={},control:u,disabled:d,disableTypography:f,label:m,labelPlacement:h=`end`,required:v,slotProps:y={}}=o,b=_objectWithoutPropertiesLoose$3(o,_excluded$40),x=useFormControl(),S=d??u.props.disabled??x?.disabled,C=v??u.props.required,T={disabled:S,required:C};[`checked`,`name`,`onChange`,`value`,`inputRef`].forEach(e=>{u.props[e]===void 0&&o[e]!==void 0&&(T[e]=o[e])});let E=_extends$3({},o,{disabled:S,labelPlacement:h,required:C,error:formControlState({props:o,muiFormControl:x,states:[`error`]}).error}),D=useUtilityClasses$35(E),O=y.typography??l.typography,k=m;return k!=null&&k.type!==Typography&&!f&&(k=(0,import_jsx_runtime.jsx)(Typography,_extends$3({component:`span`},O,{className:clsx$1(D.label,O?.className),children:k}))),(0,import_jsx_runtime.jsxs)(FormControlLabelRoot,_extends$3({className:clsx$1(D.root,s),ownerState:E,ref:t},b,{children:[import_react$24.cloneElement(u,T),C?(0,import_jsx_runtime.jsxs)(Stack,{display:`block`,children:[k,(0,import_jsx_runtime.jsxs)(AsteriskComponent$1,{ownerState:E,"aria-hidden":!0,className:D.asterisk,children:[` `,`*`]})]}):k]}))}),require_ExpandMore=__commonJSMin((e=>{var t=require_interopRequireDefault();Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(require_createSvgIcon()),a=require_jsx_runtime();e.default=(0,n.default)((0,a.jsx)(`path`,{d:`M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z`}),`ExpandMore`)})),require_KeyboardArrowUp=__commonJSMin((e=>{var t=require_interopRequireDefault();Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(require_createSvgIcon()),a=require_jsx_runtime();e.default=(0,n.default)((0,a.jsx)(`path`,{d:`M7.41 15.41 12 10.83l4.59 4.58L18 14l-6-6-6 6z`}),`KeyboardArrowUp`)})),require_KeyboardArrowDown=__commonJSMin((e=>{var t=require_interopRequireDefault();Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(require_createSvgIcon()),a=require_jsx_runtime();e.default=(0,n.default)((0,a.jsx)(`path`,{d:`M7.41 8.59 12 13.17l4.59-4.58L18 10l-6 6-6-6z`}),`KeyboardArrowDown`)}));init_generateUtilityClasses();var boxClasses=generateUtilityClasses(`MuiBox`,[`root`]);init_ClassNameGenerator$1(),init_createTheme(),init_identifier();var Box=createBox({themeId:identifier_default,defaultTheme:createTheme(),defaultClassName:boxClasses.root,generateClassName:ClassNameGenerator.generate});init_generateUtilityClasses(),init_generateUtilityClass();function getCardUtilityClass(e){return generateUtilityClass(`MuiCard`,e)}var cardClasses=generateUtilityClasses(`MuiCard`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$39=[`className`,`raised`],useUtilityClasses$34=e=>{let{classes:t}=e;return composeClasses({root:[`root`]},getCardUtilityClass,t)},CardRoot=styled$1(Paper,{name:`MuiCard`,slot:`Root`,overridesResolver:(e,t)=>t.root})(()=>({overflow:`hidden`})),Card=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiCard`}),{className:a,raised:o=!1}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$39),l=_extends$3({},n,{raised:o}),u=useUtilityClasses$34(l);return(0,import_jsx_runtime.jsx)(CardRoot,_extends$3({className:clsx$1(u.root,a),elevation:o?8:void 0,ref:t,ownerState:l},s))});init_generateUtilityClasses(),init_generateUtilityClass();function getCardHeaderUtilityClass(e){return generateUtilityClass(`MuiCardHeader`,e)}var cardHeaderClasses=generateUtilityClasses(`MuiCardHeader`,[`root`,`avatar`,`action`,`content`,`title`,`subheader`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_DefaultPropsProvider(),init_styled();var _excluded$38=[`action`,`avatar`,`className`,`component`,`disableTypography`,`subheader`,`subheaderTypographyProps`,`title`,`titleTypographyProps`],useUtilityClasses$33=e=>{let{classes:t}=e;return composeClasses({root:[`root`],avatar:[`avatar`],action:[`action`],content:[`content`],title:[`title`],subheader:[`subheader`]},getCardHeaderUtilityClass,t)},CardHeaderRoot=styled$1(`div`,{name:`MuiCardHeader`,slot:`Root`,overridesResolver:(e,t)=>_extends$3({[`& .${cardHeaderClasses.title}`]:t.title,[`& .${cardHeaderClasses.subheader}`]:t.subheader},t.root)})({display:`flex`,alignItems:`center`,padding:16}),CardHeaderAvatar=styled$1(`div`,{name:`MuiCardHeader`,slot:`Avatar`,overridesResolver:(e,t)=>t.avatar})({display:`flex`,flex:`0 0 auto`,marginRight:16}),CardHeaderAction=styled$1(`div`,{name:`MuiCardHeader`,slot:`Action`,overridesResolver:(e,t)=>t.action})({flex:`0 0 auto`,alignSelf:`flex-start`,marginTop:-4,marginRight:-8,marginBottom:-4}),CardHeaderContent=styled$1(`div`,{name:`MuiCardHeader`,slot:`Content`,overridesResolver:(e,t)=>t.content})({flex:`1 1 auto`}),CardHeader=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiCardHeader`}),{action:a,avatar:o,className:s,component:l=`div`,disableTypography:u=!1,subheader:d,subheaderTypographyProps:f,title:m,titleTypographyProps:h}=n,v=_objectWithoutPropertiesLoose$3(n,_excluded$38),y=_extends$3({},n,{component:l,disableTypography:u}),b=useUtilityClasses$33(y),x=m;x!=null&&x.type!==Typography&&!u&&(x=(0,import_jsx_runtime.jsx)(Typography,_extends$3({variant:o?`body2`:`h5`,className:b.title,component:`span`,display:`block`},h,{children:x})));let S=d;return S!=null&&S.type!==Typography&&!u&&(S=(0,import_jsx_runtime.jsx)(Typography,_extends$3({variant:o?`body2`:`body1`,className:b.subheader,color:`text.secondary`,component:`span`,display:`block`},f,{children:S}))),(0,import_jsx_runtime.jsxs)(CardHeaderRoot,_extends$3({className:clsx$1(b.root,s),as:l,ref:t,ownerState:y},v,{children:[o&&(0,import_jsx_runtime.jsx)(CardHeaderAvatar,{className:b.avatar,ownerState:y,children:o}),(0,import_jsx_runtime.jsxs)(CardHeaderContent,{className:b.content,ownerState:y,children:[x,S]}),a&&(0,import_jsx_runtime.jsx)(CardHeaderAction,{className:b.action,ownerState:y,children:a})]}))});init_generateUtilityClasses(),init_generateUtilityClass();function getCardContentUtilityClass(e){return generateUtilityClass(`MuiCardContent`,e)}var cardContentClasses=generateUtilityClasses(`MuiCardContent`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$37=[`className`,`component`],useUtilityClasses$32=e=>{let{classes:t}=e;return composeClasses({root:[`root`]},getCardContentUtilityClass,t)},CardContentRoot=styled$1(`div`,{name:`MuiCardContent`,slot:`Root`,overridesResolver:(e,t)=>t.root})(()=>({padding:16,"&:last-child":{paddingBottom:24}})),CardContent=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiCardContent`}),{className:a,component:o=`div`}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$37),l=_extends$3({},n,{component:o}),u=useUtilityClasses$32(l);return(0,import_jsx_runtime.jsx)(CardContentRoot,_extends$3({as:o,className:clsx$1(u.root,a),ownerState:l,ref:t},s))});init_generateUtilityClasses(),init_generateUtilityClass();function getCardActionsUtilityClass(e){return generateUtilityClass(`MuiCardActions`,e)}var cardActionsClasses=generateUtilityClasses(`MuiCardActions`,[`root`,`spacing`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$36=[`disableSpacing`,`className`],useUtilityClasses$31=e=>{let{classes:t,disableSpacing:n}=e;return composeClasses({root:[`root`,!n&&`spacing`]},getCardActionsUtilityClass,t)},CardActionsRoot=styled$1(`div`,{name:`MuiCardActions`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,!n.disableSpacing&&t.spacing]}})(({ownerState:e})=>_extends$3({display:`flex`,alignItems:`center`,padding:8},!e.disableSpacing&&{"& > :not(style) ~ :not(style)":{marginLeft:8}})),CardActions=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiCardActions`}),{disableSpacing:a=!1,className:o}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$36),l=_extends$3({},n,{disableSpacing:a}),u=useUtilityClasses$31(l);return(0,import_jsx_runtime.jsx)(CardActionsRoot,_extends$3({className:clsx$1(u.root,o),ownerState:l,ref:t},s))}),import_ExpandMore=__toESM(require_ExpandMore()),import_KeyboardArrowUp=__toESM(require_KeyboardArrowUp()),import_KeyboardArrowDown=__toESM(require_KeyboardArrowDown()),watered_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABbklEQVRIia1WvY3GIAz15ToqRqCmZoAMwT4R+3iJ66lTMwIjXGX04tjJp9NZQgFsnv1sfkL0gdRaj0/sPhIN5oH/yekTmOh0/239hkpmbhYQMzcNoJ1Y64mIvrQSjVC8ecvuwsDyrI2IiEopxxiDxhgLRMZPQSwGaFRKWeOUEglYSukCiDaix0wsB+hkjEG994ZjCwhFbGQeM/CtGcQYKYSwxxjXeM5JvfeWc17zzNxCCPuc8+I8xkg55/08zx+XgSc6RcgImSGDzQIXQ/x64LIOwTEjm7drtBMB0c5Qb8mmq64jk37vvWkG2O+93w4jkVEDTdPKse5bzAXndpJF+QSimXrgi4G3573rwcu3u4twEqNGx1gPLLbeDO4uqrUemGthgKBSaLyLiGgVGLNxu001fbwuvPRYRdcZuZwDZm4S6dPVjKlBRxqcSJ0D/fUcWGDM3KRdgnt6/rwXTLcnHLIm316utzf5X/9C3oL6BQBimEemYBpmAAAAAElFTkSuQmCC`,fertilized_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAVklEQVRYhe2QwREAIAjD2MVBnc65dAUOi+0J+fSZXM2aX1hz7GcS71KkkIhbKSSGGpEll4jQfyBbrh9RVy4R0Q/0AyUecEGVfx0Roq4cFQGFIvXGNFEOnwmdSclbLhUAAAAASUVORK5CYII=`,rainbow_fertilized_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAkUlEQVRYhe3Quw2AMAxF0ezDFizDCjTMwLI0VKaBSFhyEht/pITXuDxXTulfL4NjBntkn+B1b5S6NmgjvsIijyBRJo6vToQQZ0WY4XB+iOgCb4kwx1kRVngpYlw8R1jjGxQ+EInXItRwyQdccCpCHed8wBXHESH4s1C8FiHGNSJccRwxHp4XitdiXFBqIWiPuwDmWChFXQDxHwAAAABJRU5ErkJggg==`,mulched_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAVdJREFUWIXtlTFuwzAMRZmewwfw2sGH8KCtZ7CB3KB7gPgqBrL1FEUGX6L3YJey+CG+KCXxUBT6kyxL1CNFUiJNTU1NTf9Y6zKpjU/H9DtOQ6frMul2Od/M1dh8uQcAjfrx53WT0zFpGjr9uH4dRERe394P6zLdzNWCVcOkodMITH4ih+vx+ykoNMoMsXl/uF9nUcTrfhoGI8H2oGwNg66GMk9ERCwxPRgz5g+xxGZ7itfGKgarJGckigrCsPzy9kMof1gUXlzHDmHXbuuKUP6KEGYee/XzCIrG/b8cfPbqsJyxyZnmsdd57KuSkFVZlD9hPiGUL+HtclbmOToTtQDMLQQtVlvkkb8W3OcrjDlqTj3UHP0mD8m6MPadXIe+uykyKN/gogiwpsfy8iEQIWVbeptyzdSejV2hfKnWjM2B3V56KTyaQqKB+3aDqNGuXjc1NTX9AX0DskV/GZiF3KoAAAAASUVORK5CYII=`,rainbow_mulched_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAYlJREFUWIXtVcGNg0AMdO5FFdRw96EDOrga6CCP0xZABXxQSqAXKIUHIKQk8r0GjRxzEPiddqRIu1mvPWuPjUhERERExD9GX+WKdSKd2rO2KdW9+Ac+3jGu01HX1rN8XhLp9PYIy/9f3z8XJm3vnUIWJoXDNWIg01f5YlOno/L+FCl2yqTWzpnM9T6/EKjTUVFam7nDpG6PoJwJz5bJwAb3nkOhfZUvv91E8BII06bZc4bysM1zKNz9Ztm8jmmbUjkjXgY8x/DVNqXW6ajPoVg0xHra7EI4ysKkWZiUCTBhJmRJeUE8rcFuk5QtkSWDF+MBfIa7uGPLiqbAg5BBlwi3sx1yIiKcduw9P9f7/BKEtWVJ2cytIpFumR8I3jal+3J+jDcCeC+mCru7ra9ytVoSU3NuaTGNYc9YyJbobrCOoAs7seHckuIyWVKHhyKcZGFSDsR7Sx5CteeeLt8mIuZz4c0ScUTJGuE5lkh3rFReIDvsPJu1NWf3MBmLrbqvBTull4iIiIgIkV/Jgy2+BhL+vQAAAABJRU5ErkJggg==`,shoveled_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAACXBIWXMAAAsTAAALEwEAmpwYAAABXklEQVRYheWYPQ7CMAyFTRcGxMaRei/Ue3EXLoBYqg6dyhAZue6Lk1T5oeJJVURckk8vdtSE6MgaelqGnpaSc5xCAL7Y/eH+q9/hfjSGjiUBIZhxdu31HBrWlgW2CUgQBkBiKP2OhpVxHUNgXSzMa1q3z7d7R/eP8/rRcLIPrUKnOxAMEdHt4iYNtQgejc9zaKgvEAcsZ2KhLMiQoENSeyFQi5zSLnmBcjizx6lOEjJxTogYpzZAXH5cliVhUFVKU5o4ZDkFc6gGjC+XIFBzh2rnkJXY3rJvsVxEtP6EkLt0LYd4VXiVfs4hc6dulkM6qUs7ZAlujKUdCgIh1cghndAmUGko0yGUQ0TlHUr+HmrmEErqplWGluyvqswSPPZaB8TQJCkwyWWPxIPqFsVTl2sDJHOJH/k7NzwSPPTHXrn4zvUxdwIsfb4PXo8MPS2+q5ccSgay5LsbirlXOow+jbqqwQYBTPwAAAAASUVORK5CYII=`,apple_juice_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQJJREFUSIljYBgFo4CBgYHhxo0b/2/cuPGfLhbRxGAWFpb/MHzjxo3/yHwWFha8ljISY/i+nRPhfDFpZ4ZXT/eiqHFyz2f48+cPQbPwuhwbPrR3KgqN1QxCllw81sDALaCBIf71ww0Gfat8BmTfYQNMhCzAZjhM/OKxBgYn93zKLMAGnCd04bUcGRAMImRQmFLLcEmHl2FvQRnReoj2wY28OQyRj74ztG97xXDKrYS6FtzIm8Pw6cYNFLFVDnnUswDdcAYGBgYFNjbqWUAJINuCB79+Uc8Cs109GIaHHZhElAV4yw8WFpb/uHIyAzw3NzAwMDDgLIuIKuwIqSGroBsyAADMgGh66tN3lAAAAABJRU5ErkJggg==`,apple_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZlJREFUSIntlD9IQlEUxn9GjtEQFYJDi7ooEQ7RYoPg8sDddGvyjW8QXBpcBAehRSe3ol1wERxqCYMQqUVbGoKIaA8aXoOey33/THIK+oYH775zf9/5zr08+Ne/VlVoiRp7FU7QBwUd9Wo/0g+Ms0Cen4F9fhInUywBcHs94Ovl1VEQSyd5un9U71I7N3Iw3QYKfnN5AYBhWvS7V+TyBVUk771WU62FoxGOjrMeE93AhtlIBB7UsQDFxDAtAHqtJpliyWGyJvBRr6bgssEwLQzT4vntQ62JcvkC02FfJZQ0G5s7cm62uNjursPRCHu7W56uY+kkAPHDnAIapuVJAagk6+Iqxfqc3Zv9Zq/X6RJmCLCrlTKn+X1PkV8SffbS1HTYV6mkmU53TL3RVoesTPSY+g3SzfWk7vW7yScPkwkA9UZ7NiJRpzsGIJU1PZt1yHTYV6n0MbrhQMhxTauVsgOWSiQAeB+0PIco2p43A3jg6rHIRDfyk0BFOtzPAOb3189okeZgD3PR39TxFw0yDAIvY7DQ8JeMP6hvVK7PhaXOgsEAAAAASUVORK5CYII=`,banana_bread_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAYpJREFUSIntlE1LAlEUhh8lghhmQiQRgorUbYiIYotZ26JFW6VV/yJoFfQv+hUudO0iKSSirR/UQpCRQZxBpBbaou51ZvxodBXhu5lz7p37vOeeuXdgo43+vALrLsxHgxPvWKU7nuGtbCDAx4kjojtTj+4oQLvxNmPky8BZrRMci30/W60pRhgJk6UGi6qdBwZ4eH0HYH9vl05vQKU7Dmz5Ay+u2Av2ymUgwOmcDkC9VqX9M3d5cbASWEiuyEeDk3ROJ5NNEo4MATANhafHF2kGcHpy6AssWhQQ8Ju7KzkZ0lT6lj2Tl0sN6rXqUrDXIOgcDGkqAM3mWMYiBzg7T/wKBrA+RjJ2GYiqw5GhjEOaKlsW0lTSOZ1Ob7AQ3OkNsK1PeUylgWkorl2IXFRvGgp9y567Cy/YedGkgfiYfcvGNBTi8aDcDSBzZ+uWgYVcp0jE4pgCFIop2S7TUAhHhtxe36Nq265WLJK8B64Xa1VpVq9VSed0CsUU5dIzmWwSwBecdf5FM8X8e30B0FvZU200DxwAAAAASUVORK5CYII=`,banana_cream_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAW1JREFUSIntlDFLw0AYht8WqSJWqks2g+BUKXQJEp1a8kuELP0L/o8sgkv/gqPUSUvpIgQ7lGBxdLI0IEVozqF+532Xu1jsJPSFwOW743m/y3sXYKON1lVphTViHY5tQkLTOPqVXm10rDyTgSDo3nYXAJCd3OcWlZOWnPt4vlGNGHPLBN89vVy+JV02+Tq8AwC4XsDqtD6NgWqjI2xfRqRxJBbZ3PiIsS/E2BeLbC5eBrfWNWkcCVNuDK7CCGiq2RrQTRjcBNOBth2odTKRGUx7PmrtPlwvwGS4rLnKFl0vQDlpYfJ+xTKgsPU6C3k0a6LuhMyEQqUxgVwvkGEDwPHBTwPUaMUJMZo1ASVtMXh4RH3/CQDw+XaNw6Md2ZkuU6fTng8ADH52cc4NSKoRqdbuW6EkHQ6gpJ5XZmIz0lVxQjnW4TBciJyJamQSQUkq3GQAOr8moyJ9g3PMor8pu402Qxt4FYNCwz8y/qG+AP/oVWW7If/LAAAAAElFTkSuQmCC`,bread_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAmklEQVRIiWNgGAUDDRjJ1PefWPNIteA/AwMDw9Ic7JLRUzDNJdYCvAbjsIiRgYGBgYWaBt9+jimGywKKDcZlwX8GBgaGhmDcGlUliTMYmwX/YQYX1M/CqWFCYxphU5EAciT//3AJt8GkWNSwFmE2E0nOIQOMWkB/C5AjmIGBcE4m1WAUw6liAS6DKbaAkMG4JHGV88ToHQXkAQCMXCTuoxbh9AAAAABJRU5ErkJggg==`,burger_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA4ElEQVRIiWNgGAUEACOR6v6Tq5+Qgv8MDAwMkxJQBfml9Bk+PrvIkLeAsDm4JDAMhhlKqkXYLPiPz2BsFsEA1CIUM5mwKeSX0oez0Q2D8WFqkNViA+g+INv1aMEFNxerDwi5nhi1MIA1DvBZSgRAMZMFm4ozUFrlQT9OU/68qEfhi1h8wjAcqwAU/PdfA5FaaNJH0PDkJ58ZGBgYGDaG/Mcwk+QgenOCD86Guhod4LXg/6kWfMYTBmY1qObiTUXUADRPRXgzGjmApIxGDUCwsCMFYCvs8BbXZABiK7BRgAAAeO5Ta9GiRlQAAAAASUVORK5CYII=`,butter_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABFklEQVRIS2NkoDFgpLH5DKMWEAzhgQmig0sY/iM7zT6G/LjC8AHIcDsHbxSvHzqwFc4n1TIUC7AZjh7IyJaB5AhZiGGBrp4+3ExBIRmCkUjIQrw+eP/uCdGWwdRevnQRxVdwC/Snff8/iY+TAT38YTbgsgwmDvMtyEfIwQa2AGT4hYirDIe2meC0ADms8PmMKhYg+wo9nvBaANII8gUM4AouQhbkffrOcDGLExw6KHEACiZkQMgyUFBh84Gd1xkGgxXaYEtQUhEoLkAWoFuE7jMQH+Q7ZAtgyRVkOAhgtQDmephFuCzDaiHUYGTDUYIIV45CtgyfhTCDQTQs/ImyAN1idAuR5ZENhokPTHFNsAAiQcHQ9wEAcVWNGQEhAZkAAAAASUVORK5CYIIA`,carrot_soup_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAyElEQVRIie2UsRXCMAxEzzz6PAaAESihyiJMwghMwiKpSMkIyQB5mUAUIOfiyCYQ6HylpPsnO34BsrKyXKInv2CFRQ+V834yXDcdDruNWXOXu8nlAFGomixgLIh7x2vr2SvevG46APBmhmiP61wLvcrUE4j0FVxResPttE1uGfb4iojl1jwkfTUYihJAawY8Ne6xdxTMM7GhT6XbA8M3+Jsmz3TpKXh7K2BRSAiPBXwVYsFTAcDrHb8Loqc961cRDUplzGBkxfUAEyhSiovwVIoAAAAASUVORK5CYII=`,cheese_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA10lEQVRIie2VsRHCMAxFfzi6tCzAEFmIYyyOhVIyAAvQpjaNjSVZsmWThjt+qTjvKYpyAX490w6MUGN+IwgA8Lrx4unKuaOCIMGWpFegdl2THPcGy7QEw2CPoDpnmjgOt6DZtQSG56U4M53vhcAEe4AAgG0F5oWVkoCNww2UcEWS1pR9jW6g6JbW4ojymnZDJdyoHdrUOqAVXbCteaa1OM6Ua0pv0uZMQ6/Fs2k9Ed9vKZiXLFEAMgQI4PEB208gwaLGgblTK1ng6rANtAWDHfYkoPz9/YM3a79OWiGiHuMAAAAASUVORK5CYII=`,chickn_pot_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACHklEQVRIS+1Vv08TYRh+3g8GimJigpOySSks+idggh20bC0DJNaEXoxbJTI50uhQicDoXaVltNdBXI1RBv8ErcRN4oKDCy1L7zXve72zP64hIekk79Cvd993z/M+z/d8d4QhFw0ZHxcEZzp8YdH/bNHX9XlmAogBZsYojYZ2tNACYGDYgyGCx4TEy4+Rgem6KaABSiJ1pctfITspv8e9eBIHj1fQyGfD+fGtCuqFN9oIEWGu+CnEDf/Un85zfLEbVBBEgQf/wcbuPsa39/D7aEzBJ2+c6th5zQwcbpQwu/lZsfVHOo+nJmCi3hxtn3S4lYYANPMPFDi2taddn6499K9fVQBtxqBeKKmSkGBm8TKIzcDYBQTNfBZj2xWYlu/myZMsQIS7s0m8u78KMGFyqol6wcFc8cAnkPq+foenUxNQQ9TLkT4ysUisWphJ4sujZRz/iiFWXMKlnTLYM8KjdbhRDjc9JLAsi9eu/oBGB0AiJYqkIU8TI8Te7SWMeO0cEOH4KIZr1xu6/tvzXRhZbwibf27CeW3/2wNZkMvlOJPJhF1PfXgBbu+KKDLGj6XXbilIjK+Y8HPhmTYh5boubLuHQCZERTqdVhsE4Dzlum9h26X+mHYSRAP7VgWHbxB5tVqF4zjRBAGJjKJEql+Nvx+9VavVVHVgTTA/8HtgWasssZVDJv53Wqb39MwYEHuqqhf4TILz+B/1zNC/aH8Brz3WGQIa2zUAAAAASUVORK5CYIIA`,chocolate_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABBklEQVRIic2VoRKCQBCGf7VTSQbeQGbovoQ2GxSzL2CkkE0+gb6A0U7wDQwkKt050zF3cHu7cOOMWxjudr5vd+8YgD8PxSUsQ+Cf3YaVLALhAIDV/UWy5ggsOCeZKnDCfZIpAi+ckkgFIrhLIrlFqq5rMRwAzNvFdaCqPMH2eOsX0rJgBWYHPoGq8gQA0LQdAOBwfrAS6RmM4ACwjiOrm6FMeot6uI6m7bCOo9G7lqVlQX4Hw0MmKzfh+vm87MnKXYIR3JRQ0izLSLi5wVZuSvT66fr2woeblsQ1czMkcFeC84B1TKmcEliSULgv0TmuqXAu2RrXHLgkVJUnCoJ/b5Dkl/Dg+AKF7I1oIzfs7AAAAABJRU5ErkJggg==`,garlic_bread_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABDklEQVRIS2NkoDFgpLH5DKMWEAzhwRVEGyrk/mNzckDHI5wOJdoHIMP9Ax6Bzf/4SRBizxsIdeASLwMuS4iyAGb4X1lPVA+8YmD4cv0EXksIWoBuuLTQVYan77QRFkEt+f+BgeHgI0yf4LUAp8uR/UGuBcQYLrDqBcMHBwlwMJHsA2QLkIMFbGiYBOVBBLLAwekzA4+2Be7MhBTJZPkAZgGGq2FWUmyB3mcGHntMH4CD7IY2PImCXA8CJKUicBDpfQZrxGYJAxGuB+klmEzhlmii+gSWwXCFPSwUibYAW0zjCxqiLAApghVw9nKQ4EIH2MIdWQ3BogKmmJySlGAc4M4AxMsQ7QPijURVSXMLAIP+thkNIUCYAAAAAElFTkSuQmCC`,garlic_fries_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAB00lEQVRIS7WVMUsDQRCFN8FGTKdYCYqglQiCRQjGRiwsBMFWA6KC/oFYim3+gBbaRC0VwcJCLDQhpBAEsVIQBSvR7sRGEnkb3zK37uUu4bLN7e3Nvm/ezG6SUB0eiQ7rq8iA80JffT7/oePl3PUuk/4HwGYEUIwC6bltVb3Y0Xs5Rwzi5btdER+AwQiCmBTgGsQ4J6xnaEFd7U74kiLI6WBm8059vZz5MqYIAEmvoiqlS+Omq3dclY8WTfLSvRPALGXWFAUc2bIsLiDdY7+zySjV1NKJ+vm81y6kSCY7q7MnAHG11z2zJsvbFCBrbYsACiffD3ktbLtqWiIWki5QW+kAMNcaXNRSGXM4ApssAbLOaDIa7+oLyoYBNzL7wBLhQ2FkoL5yuqVPDDLDMzm4ofvCQSi+YRzkSir/9Obra+BNBgCb1q+PdRO7xwragQQSTHE8WwJMplLq1vN0dqvFrHaCAQiAaDKyxmBsywCWgyBTn78JhGVM2wBb2PWOJGIDpG8aPxXV6cYJwogFQGGKxgoY3l9W/aM5k/H7Y1E9rx2254B3QTYRa4BwhIkjLvQfDffBhtgNdtWeMaGAICfNGisTiAQgxHU07WNpx0QGRLkHrphfBDxYKKqYnIMAAAAASUVORK5CYIIA`,flour_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAEHUlEQVRIS7WVa2xTZRjH/6f30+vapVrqVl0ZSGKy6EQgDkwIypiaMYIfiEVjYoiXzZJM/KRRNOGTQuKcRickLtuIkhg2vCBREwNz04wwwiLboHRu3Uq30Z6ul9Pb1mPet+uxtzXGhPfLOee9/H//53ne9z0M7nJj7rI+ygGEMvD/so7OKZwoip5o2wOUQjBAe+dPuexcDeHtl5+iY8dO/Uz18wZbm+uw3malEwpEREEKJo3AC2BZ8VIAoVA86LkJQRCgUcsQ5ZfBMAz9Nto2/gtrXYUBuOxaQE1VZZ773BSJAOKciLMqKeKJZaTTGb3LP3Rg8zNOUZwAK6o34PnGetpXSrwsgGEEUZxMVLMyLHFByFVa+s7HltH14VsI8bwInZr14/SFK3m1zdZAaGuug91mpbn/5QsnHm1qy3OejIehUOloHwF8130MBg2LpWgMo+MzyIqfaGtCe+d5EVJU5FHXHQxd99I0EVG5Ukvzn5smUovAeD9GxyZp/3NHTtEnMTkXSODsIO0v2qaZOlRbccvjxafnrlFIthHRwpYtOBG+HYyDVSpQ/2BVdgcWA/Y2bMQTD9sR4WNY8HMUUq4RQ1w0BZNejRqrGdO+AOYWw/j24njpCN5xbAUXjmFrbSUWE0oEOA6sQorbgQjs1VbEoiGwGj3MygT+dPmxzqSl326Pl45fnfTgkU3Va0fwek6KaKpm5rDedh+21degUhFAx5nr0Go00LBK8LEEGEYCsykDIKZuzPMYm1rEwJC7dASH92+hB9SkY3FglwX+pAnf/3oVLzbZUHHPBKZmGzB8xU3BjpbtFNr94zSWIlFqhNSudnUnlixy42N2bN5gxtO76mGvGkJwYRMCSRN9d882oK//Eox6HWQyKQ48ac1A5xowOPwXLDoJFiJpjNyYxze/TZSOwLl/C6QQ8EqLHRX3TqLrtAFqNYuDe33oHbDQ4u/e8RB6zl7CwX07KLizW0nrRu6wWzNe1N6fOUtrbtNttZXwhtJIplI45ODxeZ8erzpC6O234NnHDTCYM65/H3HjhX0+9A1YsJKKw6JlaAQTngBOnh8rAgg9b+7EpI+HscJInRBHjuaMcxJB3zkLXNNevOeU4GjHCo46pej62kgLnkzEoVCqxHWk6KtbXLyuhZ72nRh2+WE1aSGXybFOL8HuRi4DaPHh+EkF1KwSrznC+PgrNQ6/xOOzXh0MOg0tLtl1JIVaNUt3VRHgeOsecEFOjIDcS8T5R18qcORQkqaCRPbuGxK835GmkXzwSZpGGorw0GvVVDgcFzDPRXBhZIqmSbzsSIr+uOmnByZ7cMiTOBsc+xvb6x6gAG8gDqtJBc8dHhKJFCtpAaxCBj6RglopR4iPg48ncfHabB6AfJT7B5e9MtYYLPlP/j9CZdf8Az/h7SitknPUAAAAAElFTkSuQmCC`,french_onion_soup_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3klEQVRIie2UPRKCMBBGvzh2Vlg43sDOgoOgDYU38BCUHMIbUNCgB6Gg8wYMBTlCbExY4iZk1DJfBfl5b5dkAGJiYoRnTv2DZQ8aaJMBp+thkXq/PQEA5wfPpQLVZNNLCJwTEZkAgJWG+zaEhClIGQsANfYdtvujmdXdLHXCfSLCEmu6eOw786xlxUYCAMpqQHHZzeBlNbB7aWZn4FqUtDlkWiNp89m4TGt2va4emM7AGw2iQBfczsc1dXURGlo9J/hJYsNdgq8kHNwnAN73eElErnbQr8Ip8iSEEePOC53iSqgjgs9oAAAAAElFTkSuQmCC`,fried_tofu_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4ElEQVRIS2NkoDFgpLH5DIPDAj8Fhv/4fLrpAW6HEvQByPD+EhGs5u/a/wYsvv0sAwMuS/BaQMhwkMH+VtwMG499Jd0CQsECcjnIcBAg2wJcQQMytLDnzUi1ADnsiQkiUPjjAqCUhZKKkFMNKIwJWQAyGJsaUPJlY4ekLrgF6EmSGAtwGY6cfMEW4ErvIEtwAUKGw5IvI6npnVDhCMsbKBYQCmvkDEWs2lELsEYFtuIDHMnEhCssQxGrFlZ8E2UByLkgDcQ4BqYW5kWikinMNcQkafSKh2CNRijdE5KnuQUA0jXJFH9Pv6cAAAAASUVORK5CYIIA`,grape_syrup_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAUtJREFUSIljYBjqgJFYhSmBBv+R+XPWXyBKLwuxhvuavmVQMSliuHOmDypq8J8YS5iIsYASQHQQ1bpLoARR884XROslCtx/8Oj/wiTd/wuTdP/ff/DoPxFaGBjoEURERTIMqBVuIdkConxw/8Gj/y8+I0LlxLGTDMQGE8GIQjccBh5cPsVgYWXOoKggh9cMvJK4DCfFEooiWUHXjKAanJF8/8Gj/zUGPQxXvp9mYGBgYNDhNGXw+PCQQeXyJBR1RxRyGe4/ePQfly/wpiKY4TD2FXYGBh3bXgYGBgYGjw8PGXYIyDMwCMgz2OAxA6ut6K7HBnQ4TVHkN9xciTUucMYBPsOJkSdoAbXAwFkg/V+JaEPwqR24+uD+g0f/s9UqGZ4y3sNrgPR/JYapt9px5maCRUW2WiUDAwMDhkWwYMFnOEELYJbgkydU2AEARkyHfSdIwAwAAAAASUVORK5CYII=`,jackolantern_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA7UlEQVRIidVUMRKDIBA8mJS+wHfkL3mAM/bpU6a3d8YHJG9Jny6lL7CWNHAg3gFHJoVbiHC3e9yKABwdqoJjJHxpAXO/nHFye7yyGrpWvBQnMQNw5wAFDkg6iFFkL9WBIdY4sWxuXMCYK8EYSKFULhZROUIN1OC1yW8wL/597TtWKIyFnE0xO+Lu5wWgbfYCepxYcRcLua6L7Cl6Pz9VMSyezfgRSYukEFnkPA69XvtuN49zYrAdpEgU9DjJOohPTU6cjdlR2YrQNv5MO2I4UmsAtP/4sPjLnxxfYmwR1yEmpvPIuwi53MYq8w6OL4W0Y7hN+2EVAAAAAElFTkSuQmCC`,hot_sauce_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAnklEQVRIiWNgGGTgPxQTDRhJMfz/f4jZjIyMROtlIsU15ACSfECOXpJ8sNrfkWG1vyMpWmgfREPfAmIj+T962Idu3E+UfmIswDCcFEuIsoCAPF4zWIiwgOHf/3lYxZkYkwjqJSuSbeYRNpgiC2atM6edBdd8ZpKknqg4IMdgGCDaB1pb0rGyCQGikimBVDQE8gGBnIwXDJ7CjkL9tAMAL4QnWOXkSy4AAAAASUVORK5CYII=`,rainbow_cheese_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABzUlEQVRIid2VvS9DURjGf5UrqZCwCBZNByQdhBvpQmLqH2BisIjqYrGQSNNEIo1BGCQsPrraDGKyaNIOGi4xSFiERGi6kDQ08XEM7j3t6a3bogvPcs77nvM+z3ve8wV/Ha4qcAgnzt8ICIDZ5oTiXMgMKLw1PyXX2EJjyzZgCspVfVdAWOROKBSpVEAAwhdM4gsmlYHFzKVjYDkBAYjRw4RC3BnsqjAv0JzII6lxrsRYWRJzY0ui1CkSAJHUOIAiYKx/Tj/f6FcC3Jyy0t6h+EI39QCuwhUIgFR8CIBd0+l1xZj3byrB/vATZ1Hn2luwBMTBjD9PMLijTJp+yQGwVLtMX3gKgO5wZ0UiVomU2/iWDRFzN0v7QkQAiM+9K8FGdNvMUucVg7X2YTlmlUieoofVAA+rAd6yIVsWd8ZRyez08IhiXz2f2ObYjunxcUaxr417vK4YAINz9lOtocvWW9frLHB6/Sj7Y7m8kEdvlf1s+oRs2p7pV7Cl9LR3q9iF5AD6RPHjqSJ0Uy/rD0UXrcfTWDajNr2Phpb8ZufoKSBHEltwusklsVjrLnY5PvllBYJa1OxZ7ff+EJtA0+Q+TCquavx6gPlyVovs/+ADoliAUUBEL7MAAAAASUVORK5CYII=`,salsa_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABQUlEQVRIie2ToU7DUBSGvzaIdZItRQ/sCAKDZWK2AbOXAMODkJBN42sgs3sCzAQZaoKKKZYMCRNLD4Ldw21v2y3o/urk9tzvO/e2hTp16uzMotGTRaMn/93vlT0YNbsSpSHBbMP36QEAY38JQJSGALSSmMeTSwBuvt4KWc7iqNkVGwIwGU7p355XTmrkeZGfhwcPC6I0pJXEum7gwWyjkwOs23MdIEpDojTUAZ0TmCvJx76isnVTt5KYVWfA2F/qSXxnpwUAdKOdyXCq8HV7rvWqM3A49n0J4ROvk2MADi/unGYzYb4G+Hy5B+Cs/w7La2VnBCKCd/QMoKIymQ1VMCAfV3jeHzv/FYnI7zsyorzMjoEaMJCBFwkyEm2yZJnGLVT7PHfosh/NkexKEbxKACBb0z7gUlaVICOqcuzBqFOeHxC+hOOYYjlcAAAAAElFTkSuQmCC`,soy_milk_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAz0lEQVRIiWNgGJHAysrqP00Nf/H45n+aWAIzHIapagm64cRawkSs4etWzscQL6lsJqiXoAX4DO9pr6XMAkoNxwtgYR4TE4MS5jD+/3dr//9/t5b8iEaOVJihyIYr1zAQZQFRkdzTXgsPFnHuKwwqfcEMTE/4iXIoURbAALLht/rmMbz8qkNdCxgYGEgynCwLSDGcgYGBgYUUw0kxGAZI9sHwsiAoPJHh2LFjjDSxgBjD8Vpw7NgxxqDwRIoMJwqgl0mklj1EuQLZUKq5nFoAAB8UtnDnOmpmAAAAAElFTkSuQmCC`,spicy_apple_jam_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZhJREFUSIljYBgFwx4wYhNcfv01Q6SmKIOJluZ/QgacuXadEaYeG2DCpZEYw4lRx4JPkl3LlKAFP6+dxiuPYcHy668ZeNjZGNi1TBkmzVxI0IK89HgGHnY2BlzBhBEHm+99ZOgoy/3f8/giQcNhoERWn6GiazKjrxI/YQusQ+JIMhzZkqNrFmGYhzcOGKI0CZu87DpeaewWQA22yFvO8O1QCwOXXQ1O+gRDJETPYcJuYWBggASRTTjD////////erAZTmftM0DhI9NZ+wz+W4fEEZWsGaxD4v7vYRRAMeS4uT4coxsOE8dlAc44OO7Qy2B5gIGBy66GgYFhDVwcFjzu02oZdhLhYKw52fnfe7gl3w61oMh9O9TCcNyhl6FhlQDUchKBdUgczrD+erD5/x5Ggf97GAUwxEkKoksXrjIwXIjEmopgwQZPRZOgqYiBDauDsccBNG3Dk+AFPDQsH8jqk2ABmkWUAIxIbvP2ZyzB4RpcoERWn6HN2x9r3YLhg2cWdgxtDAyMJVsZiMs4UEc9s7AjyVFUAwD/O/0eRzI1LwAAAABJRU5ErkJggg==`,spicy_cheese_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABZUlEQVRIid1UPWrDMBh9atrg3qCLSwYPhnbq2jVgaEyP0SP4ED6CzyEHCl27Zit4SCHEi2/gEFPUIZb49OOftF7aBwZL+vze+55kAX8dbAIO0cd58UtiUecR6jzC+90T6jyyBH/agWjJnLhevSrucwUEAPSRmyJjI9LiAIBNMsMmmVmF5tzlCOJOxw/p1+BcX0S9OVO0cbjAXB0M5mwSHneJVTNfpCcFF7HMUbY7hrBDQHWgxfH4sT69rLoJmRdAHLZqXMYFAMDnoV5H3Z/jsIwL+DxUQswLsF9yJSA7UMe0qTJ83j+jqTLLqemSOpVdiMPWcg+Qq2K/5NaiGYPVvhdoBlxQAj4P4fNQI6TvJnGXKbquCZgFZVxokbg+pobKuADzAswXKa5uXgDjLhJ0YyXx7VusEdCIZHzyvFMProEYOjnSeeuuk9CE+pOpQ7q5Qw7HQhx3iWiqTKC9OckzGSYn/B/4BhgmpsuPu4+VAAAAAElFTkSuQmCC`,spicy_pickled_garlic_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABEUlEQVRIS91VwQ3CMAxMxQZELMAGLIDon2cWYBBeDMIC6Y9/EQuwAQugsAEqMtJFrpuiJk0+9Gm1d2ffua5U4acqjK/+kEBr3c0dm3POT2YwouIEpN5a29Vn823kfWrV4lgPmlpeOvXa9/W1B6uMMb1i0GQQEDg9IQLOiPduD5dGQGCrzc4rBiDIsxCgC4AR4fN+9d1RPboDeMDHxNWjDj+SPJDz/+VLFMF2rb2PRMKBoVh6kY2Ajw4qSEQSgTRXJocnLIoAixYaR2g3klIkt3gs/+gyqgNu8phivs20F03TTN9kmSIOliVF5AEBYVtD+c8SU5oviHgXvD7LA77JUrH8h082GTch9rLJW0DfFz/6H7rf9hk80F8vAAAAAElFTkSuQmCC`,sun_butter_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DCgWHF/F+p8aFlqG/YabC2eADDdxkqKG+Qxn9j1jgFkyzCwAhQ+lwQQKHhDACCKQYHWM1/8vZw5RFA88JnYMrUu2YUYyzIIIWwGKLFhx+MMAWjBrYtP/wJg0inywfskshrT8OuxBNHwt4PnhijXYvnDsxhAnKYhwGYxuKrJFRFtArOEwy2CWEGUBLsNrA/nA5jWv/4QzyMi2AGY4zGRsloB8QZYF6IbjsoSgBaCyaGgXFZQWeOgFHcg8rJU+KKjIKZCQi2mYfpq3KgAeqqgZelcVKAAAAABJRU5ErkJgggAA`,chocolate_soy_milk_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAyUlEQVRIiWNgGJHAysrqP00N/3Bl2X+aWAIzHIaJsYSRFMO3zcrBEPdKm8Jw7NgxnOYwUWJ4Tsc2gnoJWoDP8CkVXpRZQKnhDAwMDCyEDEc3DMZfM7ERKiKM1wKCQTSlwgse1siGt4vfJMYDxEUyzBJkw5me8FPPAhhANrycVYIhJL+euhYwMDCQZDhZFpBiOAMDnlSEDZBiMAyQ7IPhZQGhgo4iC4gxHK8Fx44dY/RKm0KR4XgtwGUJKYYzMBBZ4SDXXKQYThcAAIIOcW1FSq9sAAAAAElFTkSuQmCC`,olive_oil_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA9ElEQVRIS2NkoDFgJNZ8dlmB/8hqfz7+QJReohSBDKa5BXpuIv9F+N6APfHmkwjDpV1viHIcUYrApvJz/ndy/Q5m7tvNycDw8TtReolShGw4LB6ItYSwBUguR08QxFhC0ALksEe3gJi4wGsBPsNhlhGyZGAteLCV7T+bnhjevPjr0isGBe9fOB2K1wd0taBjuhCKTyoy34H5VPEByHBdQ0mGt28hhoKAZsZlBtPHItSzQEqOHcUHVLUAZDJNgwhfMqJKHNDMgqGfk7EV0+jBdfSkAAO+6pNgaQqyRM+cG8XcSye/IvgEKh7CFhDbKsChjuYWAAAtPZoZgsyz7QAAAABJRU5ErkJgggAA`,onion_rings_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABMUlEQVRIS+2UsQ0CMRAE/RExISlUQAs0gIQQGWQUQQUQkxKSIYREA7RABcSUAVqktfZPd28nn+EI8fbO3d7aTep5NT3rpz+g6HCVRYtR+qjS7V1vbREA8ct5m573R2bsr6/f7xpQJ8AT104Isj4pOASUxCkKyHg4yIzDcZNW61PuzgV02QIlzzL8h0UrAUYnVQBuhkAE3y0nLaeqASreOyCaC4rQDrSolkWadx7QpFjvddDRPckAiKuoVjSdz1oDtFGN/Me+H0DFtSp70Oad1rAAN0Uqjo3IMFcXQMW9MzlFHoA30esMcCuuN9da3VgR7QIH7UMHADvj3k6ANwN6GrUeRdJqoVM3RaVH3su9N7cWgHS1wAPxXpQSxlmFb1HURSkAGvPwsStZxO9eAPiNhXwBw/0AOoT0r0UAAAAASUVORK5CYIIA`,popcorn_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABgElEQVRIie2VP2vCQBjGn0taDSI4tKBLUYyD+Kdzp27uguAkfoAuLf0UdusH6NhJlCKOQqFbP4AWhxAFF4dKrUopmvPtUA2pNMk1trRDn+W4e3PP7/K8IQf867fFRB5qX++RXS1TGgl5OJob4zwR12k6uCXiujknrpMTXMicGxMirtO81ySiChFViBsTc50bE28Qq/l6tALmvSYZ47xZs4NIbiA+PYfEHgGpCv58DyyLoFkZu7HOe31wB0hV2/07TuY0K0MO3QC4AJZFLJ/SYMF9yKEjLPppyAcnkIPAom/vYQvIlEbQLo+hp1qIP/igpzTkch20Wv7V3I944wrq6Ry9hg+Zs5FzFJ+9QDsbJSISGgF468G2cuzBprovr+gmIgCA9DcdwIygpobJqpoaNiOCTTzCgE1zK8QN8OM9EAIkAwrqq+zXqiciSAYU171uTWaMMWpnoyhoww+QgjZE5zAGxhjg8Ff+UkTJgIKCNhQ6uSeAF4lcFiKf4HaXzp/WG0R0GZSwU81hAAAAAElFTkSuQmCC`,pumpkin_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6klEQVRIS2NkoDFgpLH5DKMWEAzh0SAa5EG0v1j4P0EnMjAwOPa+xRmXWCVgBitocBBjPsODGz/A6rBZhGIBqQaj247NIrgFIMPxufjTt38o5vFxMeH0HcgimG/AFpBqOMxkYiwhygKQgaT4AKQe5guUIAJJEBuxuMIHPR5QIrmqquq/68+ZcL3EWgYzFKRxN3s6Q1tbG9xcjGQKsqSkLBFsycVmC6KSqX7tCbC6nq75KIaDxLDmA2RLiLIBh+E4LQBJgCwB0TDf4LII5GoQQA4WZLUEi2uYRbgswGUwTD1BC4gNIlzqhr4FAOLAXRkvhyyAAAAAAElFTkSuQmCC`,salt_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA3klEQVRIS2NkoDFgpLH5DANqwX8yfYfiaFw++K++6TjJ5t/0s4TpgZuLzQKyDQc5CmoJTgvIDRYGmI8JWlBz4S7JQdNioEyaBVcPKxFtibbtPQaqWLAuB2Jn0BRUu6liAczwR48eMcjJyaFYQrEFMMPRwwzmE4osABkOczXVLcDlcpBFyEFFsQ9gQYHsG+SIpsgCWLCADEdPPTA5qliAL1OQZQHRuQyqkOSMhmyB0R9lDPvOsaAWJ3SzAL2gA7kMvbj+T25hB/UmRvGPtT4gNQ6wOBRuxIDWyWR4BFMLAHg9rRn+GIpBAAAAAElFTkSuQmCC`,summer_salad_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABeUlEQVRIie2VL2/CQByGn9IlBQdJde303ASmAr4BBsMHIJmZQZA0TSZmMCT7AJgZvsACogYxNz1bTQIOKppOHNdey7UlW4biNb1c797nvT+/Fm666a8yake8rpLK95N+pcddnfF82Kv0f+IUoAR03nmh8RnofY0OlAe8rhLVeLO/zLzbLoAUSKPKfP1l0G0LA9nW9alB5sNe7ty0Z7DZC4OPEMZ2E3sZAeAFBnGYPU0Hxp9NeDymc4pqFNPLgV5gYDrQmQnz7cAiDmF3bwHCHKDzHeEF+ZWoq2ig0XSRHY00tJcRpgP2ISIOYdsS/btnAS6TFmA6WWL7IFagmqogCfYCfTloAb6bpBNlOtMR2wECFIcivVTZKrQAmWbbstK9Vtv24bRdyyg1fhnpC14AJn1DFkq3Db2HBN9NssQDK22rSSXUd5PcLVJrQXtN5Y2QqTozI217gYHvJkwXBm+jIz6UXlG4QiVf+Vv0C1CZcT2gACpVzf/g3/UD5wa+Sc12t5MAAAAASUVORK5CYII=`,sweet_potato_fries_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABFElEQVRIS+1UMQ7CMAxsRngHG+IlCJ4AY/ukZmyfAE9BbLyDjiAHXXQ1DkklujVTGsd357NTV8283Mz41UKQdXix6L8WXU6rlyAe+6HY2uKLAr7d7ILi++OWJNEiAoEc5lQxAUjgD3ItEQ6HKVVQxGajEpxJriyrwkigVaUALTAm1EKjRczOaiyVINGqtWXyHZus/UMyK84Bc9XoS6wAQV2uRZQbfggRklEPuA+llqXIJF+IAoFWbzXSAtLVWtMVLKrrOpDsh340ahpUA/yaPLx4J+Bt20as63kd9ofu+SUaMQ5Y9xBvmuYzRZok18SSuIB7710cU9gkyVxRCRgrxl7AR++AgZhsCgFAOaf4bzqFiO++AQm8tH22dLVsAAAAAElFTkSuQmCC`,sweet_potato_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4UlEQVRIS2NkoDFgpLH5DKMWEAzh0SAa5EF03o39P0EnMjAwGO76iTMusUrADFbz5iLGfIZbW7+B1WGzCMUCUg1Gtx2bRXALQIYT62JC3gJZBPMN2AJqGg6zHGYJfSyA+QJEEwqmV1xcDGLfIJGKDaDHA0okV1VV/Q890wvXR8gy5OCAsVebFDO0tbXBzcVIpiBLstyNwepft0YRik+wvGj1MjA9bedZFMNBYljzAbIlRNmAw3CcFoAkQJaAaJhvcFkEcjUIIAcLslqCxTXMIlwW4DIYpp6gBcQGES51Q98CAC9yVxnnyn4gAAAAAElFTkSuQmCC`,spaghetti_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABBElEQVRIie2VIRLCMBBFfxngGhimAtEz9BBgEKgqLkANBgUX4ADY3AfBYLgGFYuAbXfThDSFGQxfZf4k/2W3mynw16+VhDaYEsTrxT6839YwFDwvDrhcb0inExhsKBbkBJgSxMFS7BkcyT7jg7YApgRl+Vp56XRSV8EgALXHUBdk4CtNBnfxsnytvpcTwK2JCZbevDi0IK0K+gT7PECPKdFqrGHLotV/2Xf2sNvq0NO9zmYAnSvCbNTwbFhIr1AAgMhK1BSdq6Z9ySjuTcmzCizW5NsUK749EBjTb8juw8dVyNu7AB9B7HAfoBfEFf4OAOD5IkMgMdrOrC6zGCol+h/xl9IDcxCDNEfiwBwAAAAASUVORK5CYII=`,strawberry_jam_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAVRJREFUSIljYBgFBAAjLon+MGsY8z8h/YWrjuJUwIRLgschgpDhDAwMDP+h6vC7AB0sv/6a4ffJTQxrnv4nZAFDiDQjI6u5H0OkpihWeRZcGtc8/f8//vtJQuYzLHxq/j8ST1DjtCDRxYJx/h6CQcSQ6GLB+AOPPIbNy6+/ZuBhZ2OYvXz1//qMZELmMzTOmMuQGhnK+OXnL6zBhBHJpBjOwMDAUJ+RzDB7+er/POxsWOUxLCDFcHRLsMlhjQMtFyOSLGBgYGBgCMnGKowzH1ALYLWA49w5Bo5z54gygJBanMkUpplSQHQQZe83ZMjeb0gbC2AG9xYzMvwwIi0BEO2D3mJEniTFEqIsmOp4nuz4wBrJMBeiG4rNErhvcOQDvKmI1PDGBjCCqFhKkDEch2twgfCQbIZiKUGsRTbW0lTqxCGG3mfvCRbVyI56ZmGHs9KhKQAAu7Vof/9SQdkAAAAASUVORK5CYII=`,sugar_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAUBJREFUSIntlTFrAjEUx/8tdpBIN+lYpAURl3Np4XZHP4F0cG2/TUtcM/kJHN1v6KJbUXToKG5Fs1RIl+a4u7yX9Czi4h/C3Utyv/977wIBzjq1LgLr5r8sn4GZJgmaURQkz2czdOKY5FU4uNY6/biopNtFPJmkcTOKIIXAy25n/tCV1IAcUojcM/tepqUklIvt3EEGVMbF0ZDGNKQhDbh+pf8AAFS9jsFm42xqqyoAYPH0CAC4un53mKyBFIKEUmCrUgZaaydzDuwz4I5pDh4C++StoCy4VAVtVT0o46LYCr6/HpzJSm2ci/fbXi6mKrgMZTBUfQxV34HbtZDYFlk9D0YAgNc3BlAbO5VkxVawXK2D2SHTJm5/sEX4zdJWkpWdo9pn5b0PPqa3uL+78Rrvtz0sV2u0Op8k7+g32tH1Axo+8aH5Pi7fAAAAAElFTkSuQmCC`,tofu_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABLElEQVRIie1UuW3EMBAcmgTYgSAIduASHDhw6ALcgMu4Qq4MN+ACFCpQ4BIcUCYO14EACuvgjtLy0YmJHWnCITmzu7MgsGPHjj+HKLnUdy2VCj6/vAaamwZ919LDfYPRAVql55wfHXA+2cDkrkQcCEUmkvMdz5vBZgtYNeDio7twE0loBUgxBbwZLHyXRQZ8LLzKWFirRZzfAzBnlhjkxsJFOW8Gi6pukvOvj8NsEkyt71qq6gZmsCASECJcHs5VdTNXzrtR35/BmyQWrRA8jLdndICSEvbHgGd0Pi3iT+9H4Lqh2Qx4u0rK4IyH7LEmvmqg1bKKPFjP8QL4WGLx2ID4YymmJFhvptUlgy1xTtA1ebjHt1xTWWyJA5mQ4y3Ywi3x+KD4Q7uh8f/4BeeCk0AHVwhiAAAAAElFTkSuQmCC`,vegetable_oil_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAxElEQVRIS2NkoDFgpLH5DERbwL71y39kx/z05iFKL1GKQAbT3IKWatH/oT6/wJ5YvYWNoab1NVGOI0oRsuGwYCLWEoIWYDOcFEvwWoDPcGItGbWAYIoa2EgGReTQTkVeNvr/nz18gLc8lJJXYNh25CLOoMYpAQqa4JhDDMfPXIJbkBgTxjB/ySoGZPrGjRsMa5fY4Sw6iLIAm8Ewi4aGBbAwQvcJSNzSRI+8IAJppmkkw/IAMVUqvrqBYE4mxgJ8aoa+BQAVra8Zml1jUgAAAABJRU5ErkJgggAA`,yeast_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABbklEQVRIS+2Uv0vDQBTHvwc6RAIhOJToZinURYiC+RdchG7FvbropH+HTrpId+mmuPRfiKABFwNSN00dJBSCGRRP7poLaS6/sHQQfVtyl8/nvXe5RzDjIDPm419Q2uG/1SKa6kel6qts4mCntw0aKQgBzPa18BUy8hbjbDcOG+huNpGVfufGxe3JY7IwiZcloNZRA4zoe+/otdbjzAXp5XWEpZrGL1H76g66sQD2YB9z2QQzLeDwwAvxQSmHPw/HsLwQknlCoBqKJEkK6NaZCX8QYOSFuGiZuZmnZexMdi4daIYCva6iv+/ElUwKTk3+rf8U4JNSdK1VqfdJOGvVck1Dx37AHCHQV1S+3D8oEQjI2yDAF7JFLLNd2+UNX6yPwSIqC5IiaSxSGVwqsPaa0NeU0vlStMG/D2Gfu5lnwF7SaSRpuPTPRpn9SJIFzxPwSkQbWEVFEbVDbKl0k9O89JSQrkFRAlWG3VSH/vsF3ysBgRmuWgXeAAAAAElFTkSuQmCC`,wine_green_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABLElEQVRIS2NkoDFgJNH8/1D1ROsjWiEDA8P/C9ujweYbeC4FUUTpJUoR1NX/z2+DWGDoNVQt2LIkD+wDn5hJtAkimseBR7oU2Ac7Zj6jug/+e6ZLo6To7TOfEmUJMakIw3CYTcRYMuAW4HQ9sb4g5AMUC/4zQEoKRqRMTCiYiLYAZHiQrhvYgnWXd8EtoYoFMMM9bZTBFmw/chduCcUWgNI+yOVetsoM/6FlKSMjA8O2wxBLCOUJgkE0a0oC2HBD41qG82dbGP7//89gYVPLcPJoM9iStJwFePMDURaAgoaRkZHB0LiGgY2DgeHkUYhFoKCiigU09QF6HIDCHwSoFgegMgg5icIyGCypUpyKEIUcrDqGWQHxCqUWgMxANxmlVCVUNxNKReiGkcwHAB32mBlT632HAAAAAElFTkSuQmCC`,wine_purple_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABWUlEQVRIS2NkoDFgJNH8/1D1ROsjWiEDA8P/bB5+sPlTv3wEUUTpJUoR1NXDwAIlCVmwZ+69eEybIIrSdwZbsOzi3qFnwX+Y62HJmlhfEJOKMAwnxZKBt0BAUPC/l6whw39YHgblMCZGBpDAskv7CEY2QR/w8PD8X7ZsGcN/mA2MjAyf/SIZ+DYtZ4iKimL48uULXjMIWsArKPh/+vvfDLybloFd/dk/mkF271qGx85BDJmCbAyf37+nzAJuHp7/2zeuZXjkHMQgu3cd2GDejcsYBHk4GDz9gxm+UsUHn/4zMPByMDB8+Ay25MOXHwwMjIwM0dQIIlApemjvToZH7uEMvOsWgVPo5+A4BgY2FoZMtr+UBxHIgkhdJ3DK+f8PkpTAqYjIIoNgJIMsQM/FQyuj0cUH9or6DNJ8IijV99NPbxgO3r9IeU6GVZc4GgcE45CgAhJbHRjKAc39ixlOVxPLAAAAAElFTkSuQmCC`,apple_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAP1JREFUSIljYBhRoM1G5D+peljItUwpRQlu2b059xhxqcMpgQ3AfDBHgw+rPDaLmEixAB/A5Qu8PmgSQQ1zFg0I/ecGA8OCAD6GZ7ufMfx4+AOvGTglm0RE/kfFRTAwMDAwvD56GKua3XefMjAwMDDUvXlDWhwQYzgMiFrbMixbtAKnRRgCpBiOzSJ0S3BGMimGw9RHxUVgxBuKBU0iIv9dlaVJMpiQo7D6gFTX4wNUywcjxIK6N28YYZmHHCBqbYvfAkoBUfmAXF9gcz1WCwhpwAWwuR6nBXVv3jAuW7QCqyXYfIfPMSQV1wwMDAzmPj4MJ7dsweoofGYNXQAAcmlmvV0urLkAAAAASUVORK5CYII=`,apple_fruit_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAEhJREFUaIHt1rEJACAMBEBxIUv3rxxLZ4gYMHDXB1L8h7QGANSw5thrjh2d6znrwEdu2/GKllFCpChCDZSW8Rk4jAAAAAAAmQ7xkRFp1rUPoQAAAABJRU5ErkJggg==`,apple_fruit_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAJ1JREFUaIHt1T0OQEAQhuEhInEOlWZP5HhOpFE5h0RDpfCXmF3DivcpN2Q38/mWCAAAOFS6fCpdPmnfS6wO0xSViIjUQyd9O17eJ7U4UJR8I4Pa26Neff0h7biLV8ssp7ibwLLR2XSsp5htF96IKZg2Ms3z5tPQRvzNX0doq26N7Om76Z+RIRoWUXo3xqp932zZGdoHAAAAAAAAIDYzqQZOI+OkkEgAAAAASUVORK5CYII=`,apple_fruit_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAbpJREFUaIHtljFrg0AUx/+KIaSdHFw6FDKJkCFbln6KjCI4ZM236FfI2qEgjv0UWbKVUpAOpRBolgydEqGF2CFKTj3PO89s7wcOyt3zf3f/994BBEEQBEH0itFnsNC1cT+4QWzus+Lb8m5mvH694/njRyqG1acgAIjNfRaNvPOL7yF4eskecCu9cLNvQSXiRHnKdQV1QPnIQteufWP94Z8cI0iTjH3f4igd35D5CSumzbSysZqwAGA6nmC125RWFbr8QDzTLsczAziLUvk5DxMAVrtNFi3miEYeopFX2gEhcYJoMS8tRpeLhzpkhMo82aOsZVmQJvBPjnTdkBlfeG89PGTFMx1PuGMtVDLDPznG9u/Y6AVuFgnGs4lQ9R6vU3CzTGRM1SwKXRvr4eEiJidIE3y+/dYEWaKAuinchcZK3XTuPJFt5McsNVZYqXUbJfIdDV3AH9S994hvNUFldR3LAiOKXUxTO9G6fqh4rJf7kKhRNvW1ooV0pbWgVWGbaCmdzx5TviFWEe6QUtC8r3UxPku/FzQN4xdoCarWF9U+yENrctXYbX2NIAiCIAiCIAiCIAiCIAji2vwDnIL7S+vEpDgAAAAASUVORK5CYII=`,apple_tree_dead_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAvFJREFUaIHtmG9r00Acx7+XlcLqyorWrtW4MBwiiLQwopThA0F8Pb4UX48KIj4ILCIDwQcykWj8Qy0jrlnRdW18UC+9JmlyubsWB/k+WXc5Lh++vz/3a4FChQoVKlSoUKFCF1ONejVYxXs0nk2NejUw9NpKoLiAePXoSVn6DKVAL56eSZ+hFEiFcgEl5ZHqvOIC6vUHxHG92Poykl0oZMusthLvxl5/QAAEhl6jS4Gh1+C4Hn2mREIOOa4HBiymLAfTnktVWZI7WXmV9Zw7ZEgO20L92xOwwBQmLczK+xBbkawTPDDI61AeKOokdYq3AGIONerVgKessw6POsVbjYkhU93s8rSGWMjWd33iHIWJG4j2GJozeRVzaPxbvsexMHkbZ2LINm/4hDY/NnS37+eDFenisZC5hxPoHQ0tY0AcZxa67btjEgyGOGb2ds3p3y8jDe7hBOAI1c4+weiUhPujSnTIPZygogE3dwahU5/frQXV8npsr2VP97f35tcXuZMGsxCIvoiVodfgn4wTK69rAo2NjUx39I6WCpMKRLXXXkuchaJ6/soPP1N3dpmc29nnS6VUIMsGvBMP7TsBcVwPpLSF7eYfroO7JlAeTV3RO1pmqKgyrw7LBrqmD6AKACClrdiLF+n92wBAvv7KfblSlxqtW+Hax0+zliDaCIWALBvwh/7cGvvya009/Cw7QeYaPx50N4ltH8TWX1u/AtO8F/6fFkZlQJYNfPvhLnze+/4htn+pQKuSNFDjyqzqhsd92ePkgAy9BuvNMMyfn8MSjOunUuOCkpCx+VMqT4TzRxiI7UW8nZtXFz+paS+iLkWvkpUCpfUiFRWWGyhNKioMqnNItsIgChTNI5XKDZR1p8lKKmTRC1WFlObQ+ZkmNXpAJdDVyjmcr5ekfw8QBoqOtJXLdVkWcaCkkVaVLv5dtmwVQFkSAuqa89/FVErYIfpdTHW3Vhay/24eUiXhH84fP2ySZy8PmKuihO3WUHpA+wuNIFwWNqXUngAAAABJRU5ErkJggg==`,apple_tree_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAVdJREFUaIHtlTFLw0AYht+IOBYHoYOUm5NsQob8ASenkD/intGfI538Dx0Kbk1wDMVBcJCOLufQfHraJXf3BYK8z5JScs3T7973AhBCCCGEEEIIIYQQQgghhBAyT+rG2LoxdspnnPku6NoeU0olvgvqxtiu7QEAu7X/+kmQCeUVbFlAdVpR/7AsYA8rYLEHNludaXln6C+3L8vvzxqhjxZyZbq2jw69mlDX9kgzgzQzUVLB+14WAHDMEJzGicjjQz99A+vG2Lz6aVVZwN7nS9Wmjd4yyUiaGbhS2owScmUwbI9IXV1eA8O03PtDMzR6QiIj2ditkUh+hLyCzStEtS36YLy7uMHT5zMOq9Ngy1R9Aq5Se1cGzhR9ZQDgXENosT/9LrT20RN6/3iN/YlfBAsNB6M6wUKb7fEqtddC7V2mxf8RkgzNJtRTMTuh4INxaFmC4k31zf8FX1+FTiIxWQUAAAAASUVORK5CYII=`,apple_tree_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAfJJREFUaIHtljFrwkAUx/8pBaFgBwcDgmQUk0lQMFO3foDgF+nu6MeR7HXrZEEhkwkdD6ngakFwug7h2Ys5jZqobXm/JcmR3P3vvf97F4BhGIZhGIZhGIZhGIZhGIZhmD9Or2/JXt+S11jrXrc43Q8Hwuj1LRmFAk3buoaetCAAiEKRuG/aFoYDYVxDkHYRilIUCsx8/Ts3w/EgHQ+F+ueQJ7UpU6EIkSg1YjTp56vAeJIe16U5y5N3x+zG8SBnPoyZD4OE0cQA0F2bcDvJKEahgC4KWZ486A91N+oEJKppW6jOKyhNF3h/WKaipHpQF2EdmSnT7eZnUiGr5Yr2O/pmV4jjQV6sat1ObPgXx5S7KVPFqJAF9pk600NZPH+YqTGqTF16hgNhHGqyucLmdiC7axObdg1BGGBVj8fzpCR3hIhVPfZJ07b2VthFBbmd+DpqLPH2FeBxHj9npSSLk8K6W8qUMgCpsj+XoyOk9qSij5KTBe22e7Vjb9o17fsX9xCJoeqZ+TCoqggq9ygUZxs7d9m37BZK0wVGjeXWW+rvy6ktoJCyHzWW2yqDEsVz+lHmWXYMT+UWAgSJsZs1xtJ0kXeKBLkbY9GcLWg8ia+bdq3QKBV2lhXF/xFEHipNF9pufXVBl+LXCcp9dKjPRfx+fANh1PjAaOOmbwAAAABJRU5ErkJggg==`,apple_tree_growing_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAwFJREFUaIHtWKuO20AUPa5KNz9QRcaJkUFWMtpl5VZ4eVl5YEBZUb+gNPIfrNSilVowyA62wgoK0g+YAu91ricz4xnPrFRFPigZOzPH5577cIAZM2bMmDFjxowZM24X210qTeuma75440Pm2LRXpGg9FpwJmXBsWqzWKQ77NolDyQNZCQklRLRGCA2fVSHd5mqI6goJJxoavgEhTkC3eV0hsYUoavi2u1RmJWRWQtJnnfRqiMbWg0kRGdM9roSKTWSCtoP5YVxZTubjh1yaSNmMbzQ1mVU96OEuH2xMvuHmth0+ZnwtIXrqukKiOyhf5yg2kId9m6gmLjaQ+TqHaASefyHBi9mJlLfxTYYmUmPhyMrr67qwmvBWt6h7gl6pk9NzDXBsWtQVnBTxrhdZefERDwtYuPg1Cn1WQrqEyruX1RUS0QiAeUm9RzQC52VHnpRZrVPomnMwIReclx1xHiZKgDFoPcRBT8Sl7sIk+vBACdfC4DOXzBoQ4nIe9m3C64wJHQnR/0711djDqbgK2bFpQYUrZrN0nQQGCpEq3bf2pTBeb9Lfw0LDwxeCKw9xNaiQcXPyMIpGOBNxVduYZaSC2tN0G6u1x7Snt6k5mUvTvFTZS38Lmwpt5jYqxFWgXrRap4Ox5N37FL+Xf7QH2l6ZbObWKmSTlrcBW0mgqnzYtwmv2NEyV9f9t7tUfvv6Sdv9+eRJHnyVMVclZSLE7+FETLM6IaiXLU7A56cvVsJqTxtrssHNlY+0nAj3DcdYkx1tri4o7h8hGtFn4JhpvXrZVNDI4Tr3mDA59YoNAECel933xQl9lXbp6lEIUVEjb+hGVl8CKrz/H1KrdWw4EVIHNf6uVtw/au+f6iFnhYgM+aKukJB/CJTuNORNIeWU9iZz8tmZsgzM1LyfuRIKTvvnn9/x468YkCMCU5polML4cJdDQAzWpnbzYIV0pg7Bq7wohiCKh2Li9hSKjZnQGKIQipn6t6lQTEwmxIezmIimkOn/Rl/8dyELmoFVRWLM1P8A+D8tayWwTnoAAAAASUVORK5CYII=`,apple_tree_growing_4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAA59JREFUaIHtWE1rE1EUPRNrUZCAdFHRQgQRTLLQIFOYVXUhrtxEf0DX3XXvsj+nZO+qdhUwi+giaaEIDq2lbqVYsdpxkd545+Z9zZsXtSVn08zMe++euffcjykwwwwzzHAB8Op1LSu6vugeQsXl8J1h6kyK1vvCSsiVBBHeGaaoN2rY3EijEGcr0Wwjk4Y5mWYb4/u0VkXWBUoP6QyrQiE9Mugg4i9QNHwVScDVsHxGIDLNNjKv8JHLye3c/RwyFKpnpv2FQB4iYjqjpmc20t6Qhvnbmt6+DBkumQlRDzqIuHFZg6S+yLODDiKXjJJrjMKnw+la5RHpQelNm4b4Gq5d40ITAQjN6OqSjhBEIhkXmfQhMwkG3diMeetNGpehKmJUVnJdqLS9jMRWb9QAJnY6rN6o5e7ZSO0MU5D4AaDeqKFI09aGsIi7bd5Q2SjUkXmK6ryjSmObJ0tD5SWnzPGFrcCp6pXq2qenRXzT5kYacTGbujQnoFvrskaigvMMoLi7jgyUfXItf8FBBxHpxzWjIn6ITbASPI0hSoV8IbJReLSl+LtowCRuGLRo0qiy23M3y+ZpI0ke0HVx21g7p9vAxxCqzLxyq5Dfm2YydC5jbUV1IDfKvVVv1NDaWhgfbto76CAiT/AwDjqITDqa8JCK/R/hplkLC+CH2/aSV8C+SIJ9tyXxKHxJrB5xJRHTvKTbV4glEen2Jjs/vTEPpanfQVMCJkJmQ6vRAtDPAER3nuczhsjYQmJ65v1t3+3lq3qzjay67zHnhCJE2NxIoyQGqvsj731+Yy4NNhQK2Ug7/Wwctn21Rogkx9KjCg7en1ltlPaQNKyDCxm4Ekpi4NnKDdWj4MOYE6FuDzj+dpy7NwrbGMGIBfkPGgCsra6Pf7uGUQVnQt2e2lC3d/733Vvl/akRYoai/rDvZ80BwUIGANtbu7m24oNShFqNFpIYGemnuniC+GG5d/TaLcPG9TM3f+atH29CHKcn82WPyCGohkKgMKGXL5Zy18uPmyH5FCPU7QGHRwf0O6ejEBkGnwFNh+riCeKbFQBuTVSHoBoqm2HwJSR1FBI+rWOso2ng4qe9CT9/VEqNHghJ6OuX6+h9KJdhCDJTLz8BAKw8fQD+RftXCZVNbRMuj6jLileHy+OhacGLUBIDt29Np314e+jw6CBbW12f+Pz5Z4Qktrd2g5zz32nIa8JLYuDe3fv4+GkvV5lPv1+Jrl77Vapw/gbAXZxH6Oy2KgAAAABJRU5ErkJggg==`,apple_tree_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABwFJREFUaIHtWUFMG0cUfbOwDiHYmBDHEOyA41YtdiowEUioh5Jz1EZC4oAUqa2UU6McqqqnnHPuIUpPOfQQKYdIkXLwOe4JCaSQqAFaNYCJCYS4Sb22Q5ANnh7MH2Znd21jO1Ej5UsIe2Z25s1/b978BeBjfIzGgjVzsuhk+bfvZAfSL/M8EPSy9VQGC/feAyBaXI5A0Iv1VIYDwNT0CO7eeQhfr87Sm8WaQVUFJC9Mk0YngbGwjtnlIqe+M+ETbGX5Hz41PYJ0dlk8k4gbAMBqBaTJC9OP3BYIegGAB4JeU9/scpHfvtKFiQudmJoegRMYX69+KBaYuuPBU61saWMXAODr1ZHeLHJKP2kCOBg/caFTTLa16oU/lDGBOQxdJkAA+O0rXbh0898yGP9Rlt56Kxb0ecIWUARYBbW0uIbe0y62+axgolkOu/aFezYZoskTcQODkX6xYxkUgQUAFcy181ncSpZMGYIieLl98FQrljZ2+VhYZ7PLxQNRRyeB3tMubD4rCFCXBzRcf+CBP5QRdFAGaIzcTmAoSNBkA6SxRNygDHIAkJhhJkAA+MSFTmytegEA/lDGBEpoQ6FT1o5MW9+Aiz1PFoQNqIKXs0vgTYBUTagLSTvDF5+48MfTgmWsKmyVUgp1XqJRHPuFe0B6s4jggJsl4obpYZps4kInNp8VOIG5faULW6teQZe6gcFIv5iHxvhDGTFma9WLRNxAT1+70JQpQyQ8Sq9KFy2YiBu4faXL1OekOShilzfoD2XEQUHZSpg4ZW5PO3LZbYu50SJqmmWKnPrUDKtj6DmfJ4yLx1dx6ea/YLJ2BiP9thzbLaC22y3oBErOmJz1sbDOtLHwgZD9oQzODnULPdAkZ4e6K4KhDeyfFPGd9FULmN7TrrIPRSfLDi3zSym8/sCDs0PdgkKnU6K4s7CO/r4C3Cd68eTxK0sm7U4wAMa+//nAodUFacfU5wRuaXENXm8Hy2TyFnOlDdqBkkMAik4CwQE3UsmcSdCJuIHjvlYGAK/Tu6Y+JyNUDdMuq7SxJ49fmTZOPsTIodXTJaEWGVIntAMlG6UdtXZ3Y3DAzVLJHBbu7ddDsc/cjLxAjsFIv8lpKdLZZZwd6raY3tT0iBAyGaBdhuR5pqZHkErmRKGnuT3tmP8rZ3Jd1aXlyWiH6eyy6dTcfx0SbTJYOdN2obLCopPgapkBG3d18iKnPgK0tLiGvqCbPU/lxDqVCjkNCs9OYNRdUyZ9nrCjAfpDGUxNj+B5Ksf7gm62tLhmyjb5j1xVsi+/1bH2eI93nimBnFo1Lp8nbDnuTteAXT+J106P6ksACwxraGnj2Nth/PK1YQunTtdDpatBvZTtgDsB0tYflbC3U7707955CJ8nbHrYKdQTIwO8lSyZrh9IMpCvFLu3EgYAgWEN+jGO4hsmqLMrIVQayNzUXdtlxa683TdS01uJQCdTd/Gq2zIpXRuVjLGWkkOli4p7QRl1ytTJvqHeYf5QxgIGCoWyOTqNwX5xL7/9mgBRtLRxZqxoSMQNJOIG/KGM6X6jNlr4/o2cZUHVpe3MNhE38PVPBmI9LquG5AgMawDAg3qZ72ywfJcl4gaMlTL+zjMlGCsagnoJLX1tLJks8ItX3VVpo/uO5tGPcVZ8w7D+6EBbtoCOMo63nPGgXkKqqAkAHUc46ypxniqWwQDAdgnsSMiFjae7QntqNmRXNlY0tLRxRvKQwdgCIlDdLSW0a+AAkCpq6OlqYzy3DRcDj0VimF+cF8+nihr6Ahqer5d455mSxQDlzNhlRQ6Lhgh1u3YA+JuhIej5be52HbWMnZkrj9/Z3EVQL2eStCZniDJTCYwjIFpIjlgkhnx2j9uNHR8FTnZ0gMAbKxqMFQ33b+RM4PZ2KoOpCIjC6/GyfXoqRn47z2ORGAAgqJcQ1EtoO1I+sURV1UmqAZqZAzLZDDraO9j84jzGzkVRfOuqZV4AYK6Dl9GqVFG0VhswMweMj+bF97FzUVP/+Kjzs4sPOQBblh2jKmUUlKXxsQm5+XCrNQvQzByQ386b2kgvAHCqJyA+16K3hgFJC7Nff/vF0r7xYp3/8N2PclPdf26uGdDMHLDxYt25fzZhGf9OAb2vaBjQyW6/+Pz7gz8bna4xQLFIDC9fbQn9ePxvsVvQGvr/SVMok/XT6irVrZ+6AcledAjnrik+fFGTF1GW1KvkvQKq5EXNOGGHBlQpmnHC0GwNNXrCUC8gVUfNjEMDqnanNRoNUaZeqM2Ipmpot6BVrCBriaYBym4dRaur1HAFWTcgtaT96vznjWKpH5BdSdus+PDvsncdHwFVi/oKtFHzu1gzo+4M0btYs926aZT97+qhZkVdBdX4KBAe+BTLyb9NV0Vxp4XpbXsN1UT/AbUUA79aGpk9AAAAAElFTkSuQmCC`,apple_sapling_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAA60lEQVR4nO3UPw6CMBTH8R/GODh4A9IZ2EgYiFdwIhyHUW9jnDyEk5swN8TBxMEwutTBFEtMtOS9Sd9nJFC+9A+AEEIIIYQQ/6uslCkrZShjTDhjmlqjqTUoUWxBTa0RxQpRrMhRJEkBkxToX86xbN7KSg1enmcwm2Vq8gxsAd5LZvdIFCu4Udy8gtwYADjtEHyKoiyb9wzZmO1aBzaqC4f32P1EOW3B2AdceQazmqXY34/owmckgD7Ezqr9CB8sx96NAV6zODYGAKYcQYv2/drYEIs8Q9fbmTrEANufmosEffN7QYf5haOj9wCqOWHeZMY0fwAAAABJRU5ErkJggg==`,apple_tree_sapling_planted_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAARlJREFUaIHt1TGKg0AUBuDfsKTYIjeQqdVOsJC9QqrgcSw3twlWe4csCOmi9SBbBFIEy21mi2Si2YXFzDwIhP9rBIXn78y8J0BEREREREREREREREREREQuilKZolTGp0YgGaZtNAAgihU279qp9kwqUNtoRLFCFCu0jYbvSt0tz87XZAWTrHB9ucS2TVaU6ubleQazfktNnsHYgL4mb5k9I1GsMA4lbVKgcRgA2FcI/gvls22TV8iGsd2zrxD04fB8Ww/nqW2088H2avs8g1nOU3x879CH55C4rBBGnXfPCBBp+z4EFt3wcTaAyzx6kQi06P7ee9hgPJ6+fEvccA4kNXd+E/t1SHneQNtapo5zIBvg8/Ugk+TiB9HsZVMDm5FIAAAAAElFTkSuQmCC`,banana_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAARJJREFUSIndlD8OgjAYxR/+mfAELiSayOaOzHIMhw4OToYbeAHj1MGB3d1JVxMXL1AO4Anc0NSFRigt/mlNjG8itLzf1+97BfiyHPGQzPyPTQhlPJn5jvQOANAwKi83n456IJRx1boxQEgHadkwnyw6AID1uLpm7QQ6WQGEnovQc3HYDyttMgIQyvj1simBZFmZQVE8DeAMjlxcgd+dgWhP87z6DuBVWQfstydzQF17ojhD8b/0VopExnXmcvVKgO6nJYwBaAcrV18BEMo4TwMAwK07rxjUJUZVfQlAKOOj/oP3LH6yuap62EhRnTmKJxAb8msO0SoTc6iGLIN2y7bywyjOSvtfBsigKFan6pnx/+gOFz13YOwa2yQAAAAASUVORK5CYII=`,banana_fruit_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAixJREFUaIHtlrFv00AUh3+XOElBwRgbkCIk6FIxoEpdGLylexaGbggpa/6CTgydmJBgZMnAmIkqa5XxaKVKqQJIrVURIUWp2jo4bZHi1uYYwG7cNAlVz0ZI75t8d7rnT3f37h1AEARBEARBEARBEEMw2QHNpTnxs3cedn1thw2NAQB4zUpGyFyaE0ZOi/QddPvI5FPM8318rFuh2DgpqUKl508FANiuE/YZOQ0H3T5yMxnmDs6wvrYzMUZKplAgozCFAWBplma26+Be4TbcwZlgNwTmTR2L5YSEUq1t3PrhM0944DULvvDPx3QBpIEW76FRHR9DkSnE7mbZTOcQn77dx7ypj45np8eQukLi8BSrW0covdDR4r2RcYUpYaYlIgQAi2Xg3ZuNYQlmuw6MnAZPeGLafKlCq1tHkTavWfCEd6UY0lfouJO/1nzpQtdFupDyfTRxg3P0T4Tu3HQj7aueI+lCGScz8SaeRixnqFHFWKnB8UmyQkHqqxsPAACVoopsvw8A2Ld2YRYeoVJUkxMK+PC5E34/OR2IfWsXjbc14OuXiZdjrGlfKap4OPsYAH7L/CHouwypxfUiXUcH2ttieaWK968bAIDllSpevSyLcW8x6U/YYZ4tzGLPMURpwYz015scvL156b9j3bI9x4CRV1m9yf96Tuylwz6JFtx6k8PIq2N3JpFaVtCMyCpdlExMiLc3AQBdxw6lCpoR67klCIIgCIIgCIL4z/gFhUm39sdr3R0AAAAASUVORK5CYII=`,banana_fruit_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAnlJREFUaIHtljFoE1EYx/8vTWwq6XnmGmksiKCpQyNWtIXbkkUIDdYlW5ZzsBAoSqZODgXBSdCtLhkcg4M0IEJDwOWsYAmIQhOHVggJxJNrrNLQpM9Bk+aa5gZ7d4vfb7l379333o/vfXf3AIIgCIIgCIIgCILogVk9oZwI8YPvh9Ou50usZwwAoGbLzgjJiRCXhkVDX726A4/PxVrtNt7lyl2xQVKWCsWTMxwAtKbe7ZOGRdSrOxj2elhzbx/r+ZLpHC4rhToybuZmANgQG2JaU0cgeAbNvX3ekYkqDgm5Pm5i9GebtXgLaraMRq11OObn3XYh45AQGzvFvJVv2F7juCr7MX7OytlPwL37s4Z7ORHi8eQMlxMhPjDoL5bXUFQBnj99/8/xlgudFMuFzAp2e40jqsB02xzJkNdXxkJ6DCv5kBPLmRNVwM+fvcw719WNGDfLki1FvfBo3NC3kg8hvRjDlTtfDKJWr20qdfOWD1EF3YysbsQMbUeF0JOpXoHe9tEsdrD8+NFhfmoCjdkKJqUASlqdpxdjeHD3DS5cP8CkFGAlrW76Rlou0yE5N4JUROCXpl3869uXPBUReHJuZGCsba99KiIgFREQDoQBAIVn2e5YOBBGKiIcG+e2S6iq+/80tjb50nIGL54UAABLyxk8fqjwqu5nQKMvzpYamp+agMvjAQDUdInHp2XDeK6oQjz9g73+3H9Ys2XLXn2qoKZLqOkSJJ/AckW17xn91+ixsbYI3b4mQN36AADQdo3bkiuqkHzCwJ1x5F8WFCVDlrTdRlf4KLZ9h3qRL95AUJRQ1TUeFCVW1bWBQgRBEARBEARBEP8ZvwFFpOQ2GmcYagAAAABJRU5ErkJggg==`,banana_fruit_growing_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAuZJREFUaIHtlj9IG1Ecx78vmsZIvMa7pCQKpdBEBSO19A/cliyFoFQXh4IU0kUICMXJqYNQ6JShTk4OnYoUtAZCwSB0SaXUKtLSxFC0kCYQT86orSHR10HvzHmJ051L32fJy/vde+9z7/d7jwMYDAaDwWAwGAwGg8GogRg9oTjipye759OuJDOkJgYASM1tXo2QOOKngs2p6Svm92B1WEj1+Bif4puqWCMpQ4UGRx9QAJDKston2Jwo5vdga7GS8lEFK8nMpXNYjBRSZJpJMwFAmkgTkcoy3N7rKB9VaIUeok/kEYpckZBlI422w2NSpVWk5jZRKlTPYzxF4audunp26X7OgY52n/lCxHWNtOR2sL1E0Sfy8NwAtpeoGp9Jnhb1788eGnyCujtlqNBCcgfv10sYfMpD+sHTSluWKhK1xT6T9CP/N0vrzWF4DYUiQKvrr7obl8HbOs0XAoD1nxuatx+bcAEAYtMJTIyH1d/UW7tulwwX2s851LayuEJ63qf53z2cNXp5PfcfOdDR7qOhCGgoAqq0F1fDdHE1rLaVmOlCZ/eMRkCR6mj3afr6RF43vtloIVfPLrp8HhKbTtD0vA/dw8px9yOGBIDTYu8ezmrSayqhyGnqatNTL2WX3dimSI299OCCgNo+i+kw/PNDYai3E6WHOXQJbmSkIp0YD+P5sw+4efcEXYKbZKQilmfNWr2OjMLogB3RIEdv91vor4/vaDTI0dEBe8OxplyMABANcogGOQTcAQDA8us5NRZwBxANcnXHGX7KFPLy2ZHeStPJqVm8iS0DACanZvHqRYTmZZ4AJd04U2poqLcTFqsVAFCQBTrYL2ri8bUUnK37JPFd/7FmSsoWvuVQkAUUZAGCgyPxtZTuGflPW92xpgg9vsMhtfUFACAdaNMSX0tBcHANM2NaUdfidQqaXZIOSqrwRUy7h2oRb92D1ykgL0vU6xRIXpYaCjEYDAaDwWAwGAzGf8Y/wKIyp5xRIncAAAAASUVORK5CYII=`,banana_fruit_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAtlJREFUaIHtlj9ME1Ecx7+vVyyYtrR3kNASFGMJJJaIKJqbaBlcIIoDg0mXbqSjcWByYHJycGIw6eBISIxp4gI0cTmJUWtMjPxJAEltFYpHC4ZCy89B7ujZg+nOxfdZ7r3fu/feN9/f7949gMPhcDgcDofD4XA4nBqY1QvKY110tH2y7MLcEqsZAwA0NjOkny3ZL0ge6yLJ5TPENnM7aHA7WKVaxZvUskGYMr1sr6CR2AABQKGs6jHJ5cNmbgeuxgZW3j/Ewpy5MxoOKwVpYpzMyQAwgQmsUFbRGmhGef+QDmkPvbKIaPwfCXJ8WoRnr8oqVIEyvYxivnIyJhLyH5qopWebSlk3gv6Q/YJYyznWmN3C+iyhVxbRfbGI9VnSx7P5VQDAt7dtdH/8u6lTlgqirQO8/FjEg4c/Ufgi0pbzB2kiaos9m1/F+3yJzNawvIaicWAmI+pCzqJLbLJ6e3NB0TiIygJpTyoLNBIboL/jQX+oziXLHSpl3Xp7fkrA0HhV7y++CBn63aMrVm9fz43bbgT9IYrGQdE4SGtrTtW6ZOaQ5RyfMwYBmqigP2SI9cpi3XzLU9bSs43BfsaGxqtob7sEHH9V81OCIUXdoytweQ6s3r6eO1e9iMb/pM6suGtjtp9DGukk4Gnf1Z3Siru2PdjPTP+jll8/NO5eaUfxZhZyhxPKRoXmpwSEbhEuXDuC3OFkykYF6aRdu59BbLgJiYiXLvc56OvrGUpEvBQbPv1AtCVlGomIF+HWMAAg/XRaj4dbw0hEvKZznHYKyqkisLZIE5NJPH+SBgBMTCbx+FGccqrIgGLdHNtqCADu9XUir0o00icb4qmMAt/5Env1uf6yZmvK8qoEye1lqYxSN6b+8pjOsVUQABR2jWlJZRRIbu+pmbFdEAAEfJLBpcJuEcraO9N3ba0hDbnzOgI+CTm1QAGfxHJq4VRBHA6Hw+FwOBwOh/Of8RuWiD5UfcCbswAAAABJRU5ErkJggg==`,banana_tree_dead_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABndJREFUaIHtms1vE0cYxp8xdpINiRM7K/ERmqaUhKwgTWXA2K2QiIRyQkWqlFtVFSmX9i/opfce+wdEoofefAL1hJBAimAdk0RaDHKFqZpCAmllNs6axCSh3h7s2c7Ozq6z/qoq9ZEs2buzs7993nfedzYK8L/+YyLJ2TEclgNYWzBN9sSJS4RsFypQU/mOAgUpTDyWsJ3ILKTNYwlCkrNjANAxMDJxdtwBY0GtpAGfbtEHYOXnYSygcrlsOyFJkg2sHhQF6RkgeJWGFX6/oSdXvj6NtQXTnFSmbBAUkB7zguLzkD6gJEnIrKQRUUyipvJC9xxAydkxRKNh/Hq/ZAKACMwLioWhoeeviSgmEbnH68QlQggYu/v7e/E8Uxa65QaVnB3DZo44YMrlMrI5DUcvgADAxkNY7rkps5KuDmatp26xUCwQDwXAAuLB30uGyAt1vy4ITY9sTkOAPaGm8tB1Ax9+2k+yOc2WR2zSx2MJK196Bgh40bEv1H0zHks4YMrlsu0jSZL1IAF+Mgo1EpdINqdZx3koAAj1VnOCdyeb03DiYshBygOwIFQOIApVKu3YnpZXPJbAn8vVvOBDCgBri/u2+sY7wYPSNAjCpZgBqIbuvmblE3VJNCk7ObiccbuGJj69l14wEHTrZccSILpuYPhcD8kua67VnE/+bE7zhGEhAGAkLpFSaQe6bkBN5RGUwkTcy9JpEyDYxC6GPwHJPEib8VjC1SURjJsjFAIASqUdW6ENvlyEOalM2XJFkiTbxJkHaddiRiWC4WsSaGhqbogUoADsh64GKq+nhkvi8zDD57pJRDGJrhtALW9FuStcZSKweCxhdX9+bDanYVKZ8oT5K7CLzRwx2c9hOeCAsporPcC3DQhaBz+GPcbDeFVrUW8MbBcqiCgmiSgmocVQtBVhnXIbw4rmDF+tedfXFkybU669jHfLzSWRY/yK4xcMuO0N65Swl4ncOohL9OkpjKhVsGB0TrY3OjujwC0+P6gyK2nbZoyH4ceyEuVTRDGrrUMkutcZifeSbEbzLIp8WPjwolb5325V107PAKkV3n9UDZkJVyAWCiA2692g6PKnecGCvN2CbZcZUezR2S6YUFN595BR1QsdTWpw+2/WEQpy9YsL+Pmnh573qwvEQ0GwiWeB6r2hTCajkCd03L3RBBAErzmsW1TZnGaDOR45hZebzxxznZ/pw8uHR4XnDgzEgnUfJthYgu19LpvTcPQ8yO62id/vmMKb8Zq+DodTwl7mJTWVx+52NTccTXWjDDWVx9Uvo36nbRyI6uQHb2x7bgDoLr3F9HWgVxZve3ndvQEcj5xqHkhN5RF8/sZxvPvNLgDgh++yB55raEJvHshLpfU+X+OzapuBmlXLgYKbnsXfoZbkEKsjR47Yfkd6d31dz5eHpoEMw7D9DhVDmL7e+HwtCVn3oUO233dvoGEofwGvo6G+HujFEK6d6QcyALDue46WJXU8lkDu0PvWHufmE/8wLQWi+mPouAkA31wO4/uvLnQeKBwOW9/jH120vr8qRvHtj957n7YAUQ2Gw8g8WsT5yG++dxAtBSoWCrbfL5514+aTdWwUhzoHdO3MMEZOis9FByr4bCoMdXUZydFznQECgKXXp82ZyzMAgEFZhl4oYHxUgWr0294mPv94pv1AJtkHAGQeLXqOU1eX8ar42hdYYw6RdyjqWwCAqCzXhQJggbUHKPAOADA+qiDzaNFK7MreXl2w9gAxGh9VMMi5NNQfwmdTYddr2grEuxKPJaAWh+r+CbBtQKhtQfhcGurrwbUzw/8OkMglttF2HChaq0OotZCnq7mG5/IN5FWlUatN46MKwNSrtgKBqdJ8qNg8KupbAHnXGSDUnKAAeqGAqCxb7liggQ4A0TDQosiKwiw9XsH0sNHQNsS/Q0zbgEfrWN/YwS3NEJ5rLRATBtalSm2FBbq6gCaqdVtepZup1k0BVfb2rCXeKh34vWxubg4AYKwuARs7NijU2sdg2B6iW5qBubk5zM/PW9dTzc/PC+9TdyXQidgJ6L9nUJhAVxcqe3sYlGUEABQNA5mVNH55/FQ4vxdckB9IT4pAWJhmxM7JwwXcTrhZ6qVWrJAAPNzwggqHnUu6wny/cnkGE2fHfa+0IBumRsX2NAp1595t1xxixd/b918/ajcxUXOB7qcHZRl37t3mx/kW4XNHRO0mPiSNQrD6G0LRP+c+tRWxAAAAAElFTkSuQmCC`,banana_tree_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAiNJREFUaIHtls9u00AQh3+blDjulsrgWkIGJPvEDSKO5OIcECdQy6PwYiBegFx6Dy+Q5IBycROstE5cQ70c6nUc/4tbBw5oPikHJ+vZb2bs2QAEQRAEQRAEQRAEQRAEQRAEQRAEQRBlsDqL+mcWuNGG794I+V1Xa7HAiwAA55+nexNq1V3ouzfCdjjkJ/AiAUAYpo7+mfXvhbjRZpOhj8nQBwDYDsfgtA93Nt+rVK2WIW4bbluFwIuE7XAAgKX18O3LOQxTZ+5s3rh9lUJlWXeOWgiv8lIAWFOhgyoZw9ThzuYi+1t4FUF7wtlk6Avb4Zh6o8pNyhIrki8USssMTvu5DeOKiMfPN1JVAtrJMbyL5VZiXa3F5Lq0WK5lu2QyUpAy8cPOygSyseTLkW1zrkLcaOdkUjdvcEaJzHU8jw4fqlhdroV3scwJZBOzHS7jinRhckJy3ky9USKSHoLxNSZDP6mA2VMBAKvLdZJIUWWziWXjllWIyc3kDYEXbfU57r3MKhGraEuhQDYuyp6hNFWv8eCtifCoI8yeCkXbzNiyyu6KVyh0F969OYHih0L5+BTKbRtzInedS6VzqA6KH25d6+MFVo9UtoZ674ld+yzbhaX1AACHP9eNjo97C314dQz+TAcAvLBey6OjMY0q5P+Yi5ef3u9NprHQ3+D/E5Lt0scL/OoeNBojexFK8yD4ja/fl41iNJpD17zD9PEi93+pCX8ACFAUE3a7dgUAAAAASUVORK5CYII=`,banana_tree_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAA9tJREFUaIHtll2L41QYx/8nbaczZqZkbYNSFVr0TofdK13ITYt4I7I0Lrigt/kQ+xH8DDLeCF7sytJhWBC8mV5Y0EVkRhlF2bVFpOimdUO62Wb6kuPF5Jw9maSvznZvzg8KTXLa/PJ/nucQQCKRSCQSiUQikUgkEolEIpFIJJLnB2FfDLMEvZiH3elRrZAjTtcFADTr7bUKKeKB3enRas2A03UpAKoVcjDMEgyztH6hTe3sa9s5Qrmi4nmJiSWj5YoaW1DSruBwvwkAWEcplXkLkhLTi/lnllai0KkT8E+SmN3p0WdiAyCddDKrPfVkUlmhxxD2nGGWFirdtDSTfsuFVD1FWg0v1kdMRBQrV1S0Gh4Ve3CWhFbIsXKL5whbI4rxKDx7wqTQanixG2Q1BVlNiZSRpZQkoxfzAEABUKfr0mrNQLmizu1Hcv6P2I18J0icOpZWVlPQanhQ9RTx7Al/SnGDrdYMXmIklF+YYMJ+H2nqZr2NZr0N3wl4WkmwpMoVFZ49iTW4KCMOiJjyqRNE+pGROGXNentuCZMwzFJkgxUlxEERxcoVFb4T8Iea2pRIKCE7z0p56gToHA2wsa2Q4eOAl6pcUbnMLNiDqnqKfPPZg/lC58WQ0F9Mqlh6iXTa/9BqzcBv7R9nyjCRTU0hfthXrIcS96FZ+E6AjW0lskVUawYO95uxJj4vIDwU8Z0AvhPE9qK5CYlTI57XXlaJ87fHy9M5GkAslSghJsGYtqHOTGjaCIfjSl98TY0kJcpspSdk/NBHyh9BaY2RezIEAHz9+3BmAFOFkmTe/eEkvHoC1D7B4X6TyxSvbHGZbe8x0fpP4PbGkVSv7hICbMyUShQyzBJUPRWTqf+U42tMfIl25U2eDMJeyZ10AIC6AD565+zG180z6Rs3R3SeVGIPhVNFyxU1IlJQx6TrpVFQx+h6aQoA2Q9fAQB0jgbInXRw69MM/5879WgzXzdV3Lg5AgCytJCqp+DZE5r/418uAgAHxy6uXT4TJFoG1BlRJvX57p8xidvfb0SOr+4S8t3PdLmEmNTWowEA4IVHAxwcu7E1oRgXev/+rzEJfScgdj+6Jy3dQ1jhFfW9v4ZcRJSw+8rcyVpIaBUyW5uYjMbE7o+XkhCZ+069CB93n1Y+lUmvLHNhQhfJykLXLueQ38kssHI5VhKyLAvZS6+i1x/RD97WI9cyOzosy1qPkHijrxq/RK69/lYBAHDn2wcYug9hWdZKYitN2d7eXuQ498YO3Pt9hGnRL24fLPSelcSFNbXtn+LuPRsHxy6XWUtClmXxhMKbU9yzxeP/xX92wDVIcXKaVAAAAABJRU5ErkJggg==`,banana_tree_growing_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAA9hJREFUaIHtl09r20gYxp+RnFpFtarGETQpCzZd6KWQ0EMvutiH3VMJTo97NvuhFsN+g00wOS2U+OJDcwj2oYdCW5tSnAXZWa28InITe/aQjBjLI6tS5KQseiAw0d/fPM8778hApkyZMmXKlClTpkyZMmXKxImwgblXgrFVhDUYUX1DI/bQAQC09/u3CiTx/1iDEa3WTNhDhwKg+oYGc68Ec690+0CKfjXs2x2UKyruCoyPjJYr6sIFJX0HRwdtAMBtRClFXSByzNgqrsytnOjgxJ7543wgymvHKO8uEw+Z1MHIyBgcAwOAXsuFokvEs2f+i829EhRdhmdPqaLLxLOnc+dEEkH7QD//+hSuNRVCicB6LRcASHu/PweztXMfg8753LP1DY3FDe6YsB79abvWFKohk17LZS+bU16XkNeluTgVXVqAYSroKgBQANQeOrRaM1GuqJH1OFcH7ISiS/Ds2VK38rqEXstFYTNHxqeXPsygc46Hhkr+sVxarZno251Ql7kVTJhLC4XJwFRDjoyQQZUrKib2DIPOOXIKIZce9WFEC4QHY/X45vdPQNiyb+/3IyMM1fUUGQyLml8UfPzligrPntHA7WIFI2THmWvMFQDgitl3jIcQiU1UNWTy528fo4GCYBDUFw8FANWaiff9k6UwDIS1DnArTdgYl8mzZ7j3QCK9lutDVWsmjg7aCBZxEICbFPHsGfg+xhTpEP9Zwh/XH6vE/usKirnER8VD8E4whXXypQ7xMPzs2fax/oM65xQPw0OInAhTqENBmPf9k7nzz0ovcHTQhghGNWTiWtNE+1lkH/qWImV9ZdA5h7p2SdyLXOLNNTQy1hTDYFiN8B1aezfA9JGK9tu/E8EsBQIXA0JWSm7oYfLHGc2/foKtnfuYfFIgu18Tw0QC8asluFI8e4bi538X7pFkeTVA19sGXdYzdrc1f/zTl684vBHKEiD2jQOAxFmyaSjUoTgQvwwJrJSAIj/yb1uJgXa3NRQLa+nS3NSh0fiCvnppAAAMJX/3QEzaj4U0HgP8r2poVUoExDfEtBUbaHdbw+Z6Hte/ue4eCABOzyb+6mKyvMndAW2u58nhsYUgFNPutpY41thAza6D07MJioU1cngs3DDoTeJM5FCz62A0vhCeC3NtpUAiLYswjlIDYjCHxxaKhbVv+gG6UiBeo/EFml0n0b2pAX1Xm2uaigVUr9f9cdEIL+Bm10G9Xvf/VgIUfPDIsuirlwaePt8QXt9oNNBoNGLBxAJiLxHJ+TCO/eIwpVZDljdJpbAT9wtc7VkLW0Sz6xAEIo4T3X8sUS1ZmPdudgAAAABJRU5ErkJggg==`,banana_tree_growing_4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABJBJREFUaIHtmM2LIkcYxp/yY9T0apo4DRsTgrILuQRm2MNehOAektMyrDnmFpD8VfM3ZIbBS8hhJGAOnpx7iLIkZqF16Wg6o+tq5bBdNa9ld9t215DJsA8IQzv99s/n/SoF3ut/JqYzWL1ZBQCYhyU44ykX161KmdmjCbpnw50xUjphrEoZALgznvJnL+qoNQw8e1GHPZpwq1KWwLcOJGDs0USCDJ0+Fs4aQ6cvoaLEytCgVFHspRIwAgQAcua7z3t53pVp2yUmQPJmCnNnzfGuBpgznkYCqzersmZqDQMLZy1BAGDQcZE3U2zurKPVkGGlAYDPnTUXOfcKkpuHJdSb1Z25FzUTpKgwAJBx7RWvNQx5Yej0UWsYqJrHuDzvSscEVFBgkaogd6JK3r1w1vJFwcIcE+kK0z7ubADlzJR87QKjLRyULuFOZBJP7OvvH8G1VxwAaOrguUZTAECkEmSoBhYzALZvt2ZcewUALG+mMOi4G/Uk3AJp4aHTB2660jeoWjtBTeEHKy2tN6swrHRkt4QDfg6R9wCfVYKQ0SKf0D0bgrjFvKC+bgllCswXFgCKpgEAXF0lYfWIoOUa5paPE6gcFzaumQ8N5rxy5eSm94Kkn9ajcMl3l4W5RZ1S0zrouMh+wLZgRNeqXUzrUShwuXbPhuieDTF31jCsdCCUKu5VCoURIPR+EaPWMOTKAl2uVGpXuPYKnlMyhUFQb6+57FS/2qIa9a8BAIaVlqWz9d/0XENfWRQAgB08uElhzkyhclzAqH8t60kMyTCYQcelg5N55QGoRa2ea4TtpPhw8CDF+Jpj+Q+X7f559Qkuz7tQ60YtfiE6o9RZtDGHVBiakqDgAmrUv0ZQqtS55AcilAFpcxWGBhVwlePCFuCusWBYaebaq0hLluGmiCMXo9//qDNGXR+Rz0O7HuSXIpDW99t3g467lyu+QN6skS4JEPopxQKmcAJG1FASGIQtVz+76XwSZ/Dyb6+R++YTCbXP+TkUSH0gduS93qyiNJoiO3/LKdDB32/Y5U+jWDBbQPvq5KgEABJo8cMfWBgH7MdfxrFjavvmKpRz3yS6XztQUr0H2qX7C/TtWM9PTffToa9+T9bqVPfTIZ2KDXRyVMLDD3N6aYK+dUTVq78W/LsvPwUA2POFFqDEKfMD8ZZuLN1GDUX6tTVIWoGeP7USx9AK1O7ZKBeziUa29pRNZktcXE1j3x8LSC3a0uNibABVSRxKVLxBSpQyHUWsKjZQuZhl7Z6tlyYu0MXVFJPZUjsMdHaZldez17S3fbmYvTur4/lTC5PZ8u6sDh3SMhh1am+gk6MSPv4ohzs1GP98veDqULwTB7SwSR03rbGAgqY0uRY7nXsD7ZrSSfebtrZv9+z/5sR4clRCuZjdui5g2j0bn1n52KfGWA5NZsutLqNgL+357dZQq9WSf6vH00dfHAI+y/XiaopWq7Vxb2IgEez09HSvoEJx7rv1XSagojoVp6hl/dA02fOFljORFoemv850hAF0p6z0uIh2z8bF1TR22+/964f3sJu2/pm8mRAGAP4FlBPshc8G1hUAAAAASUVORK5CYII=`,banana_tree_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABuNJREFUaIHtmF9oW1Ucx7/nkibXpEnb/BHp2iKm1dFGWhAjKZ1YGMJo6UCoTyIW86JP80V98V2GD/N9WB8EHwrCxmQvk8IMBq5MN5Zl2DbSdW03aZuluU2aZDXXh+TcnXtybpKbtBHBL1zI/Xfu535/v/P7nRvgf/3HRCLzI3D5JeR2yxp7wuWXSG63jPjSakeBbBQmOGU3nEjFSprcQ0hkfgQAOgZGIvMjNTAMFGDRLfoCrKy8jER/FDNlwwYAwSk7glN25HbLmssvCR/GgkTmRyD3EADQ6NboPl42l18iqVhJC4dHsWdf009QKEevhOCUHalYSXP5JRKZH6l5YzYPC/saglN2FDNlOHolpGIlDQCBiXu8SGR+BF6vB+l0VgMAEZijt2JkKlaqCR8LQ0PP30OB5B6Cwr6m1WJU5PJLxEDudjuhqnmhW2ZQ1XtrYHylYShKEo7uyjOKBxUQs3ylYxPeeuoWC8UC8VBVaWyY6DXdvXZykCk1BKHpsZk4epbUqM6GdDoLr9dDFCUJX2kYqOYRvYkOTutWNYkNovcdZEoanRg8ALs5eiX9RSR+MArldjuJoiT14zwUAHQ5KznBu6MoSbg89hpSHoAFoaoBolCqmje8La/glB1P85W84EMKALlsyVDfeCdY+UrDehrYUGc6VkOn5xN1STSoYXAkIYIRXasoSaSQhNfrIendrHkvk3sIKexrcDpl5PMF0yk9ELLp+/QB9WDoNVRut5PQaMSXVmF7zkNMexkA5PMFOPsIScUqITBzSQRj5ggLoap5Q6G1HWY1bSBkMyQsrc48XD2JYPiapIcmnTXtbxIFYDe2n6FBDYFJ4vMwTqdMAJB0OgswvU8IxEsEVu1nwmsVJYmBkK0uzN9SEWzTNWu85OxHrxgSmm8baJDI/DEepl61FvVGqVr+CQBCiyEfArYoBqfs2Ewc1RRJPsnpTOKrNe86v7Qx7WW8W2YuiRzjZxw/YcAtb1inhL1M5JbIJd7JYqZsgBG1ChaMjsn2xtrOKHCLOiXq+mwfK2bK2Ewcge9tYJbDVKJ8AkBMgSgUXSOZVWr68H7ny9jOr2AzcWQIIQWhlR8mCzVhyHiJmqyo61OxMKlYCalYCXIPIQBIYV9DfGkV8aVVVMEIu9GZVtchNBG6VKyEcHgUAPQJQEGoI3RKz773Oq5992vd5zUE4qFQjT+ziEc4PIrt/ErNjBG1h1cjXvhPp7G8KH5W3ZBRsbNP7iGETVAKA0Gh6++rbSl342moW93Cc2jWIVaR+RE4XATFXGWl6CsN68nscBFSzGl4cEPD9pO1hmNNL6DGqaYcYhVfWkUxV8mNYqYM9/Pdz04+PkR8aRWz73utDts6EFVfIUeKP2wBALZvHyKw8hccagHTC4DTf9jUGMuLqAldS0DxpVXYNg5qjjsOigCAS1/cbXos3+l0+0Cs/lj/zbCvbnWbXivS3fgxAx232gY6vH/fsG97YjO9VqRjySFWHwZG0edY1/f7nEVL9/PloW2gnYIRoCvThemF1sc7lhz6JPKGYX95ES1DWQt4A/m6ZaQzXTg/5gYUANiyPMaxzbLZcADpTJe+xrlyzzrMsQIx0gDg47c8+PKD1zsPFJAd+u9PL23rvx9lvPj82/prnxMBopo+dxYXL/RjcLhoeQVxrECeYXd1pArHwzUHrtzbwuOMr3NA58dOYegl8TlvTxlz4x7E128h8uJrnQECgIcrbu2zr1QAQHZNxcaD3zEzKWMvlzN8Tbwz8fbJA2nkKQDg4oX+utfF12/hUWbPElhrDpEjaLaKO/Ko0hAKgA52MkDSEQBgZlLGxQv9emIHQ/6GYCcDxGhmUkZ2TTUc87m7MDfuaWm8toF4V2bDAeypTxv+BXhiQKguQYYGJwzHfN0yzo+d+neARC6xjbbjQEODE9h4eBsAMPbun/jxl0LLY1kGqlelUa1NM5MywNSrEwUCU6X5ULE1SbOpADnqDBCqTlCAjYe3MTQ4obujg0odAKJhoEWRFYX5+pv7OPWCs6VliHWHmLYBNkyS8flbj/O4eifbASAmDKxLiZ9uYvrcWaQSu0Ab1fpEPqXbqdZtfQYFQ37MYLedIWrUtEPRaBTRaBRywFiE6Iziv2ABoMsdMNzPjmOmhjMhGo3i8uXLhmNz4x5tNhzQYVKJXQRDfmTXVISmz2D5+g1cU3bg6h8j31+PN35bRoaQseQ8BA/TjKzCGIBETlhVaPpMW/eD5lC9mJpBsh+IVInln/XfC28OYG7cU3emifKJ0APNukNDFpAdz77JqqIrx51CEdeUHVy9k7VcrW1WYADQh2gAsIABHSq7pmLx5iZ/nWVZdogVH5JWIVj9A/RCJ8Szd97YAAAAAElFTkSuQmCC`,banana_sapling_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAABZElEQVR4nO2WvW6DMBSFP0Na0VJVLCztkrxB9yx5hTxpXiFL9r5BsrQLC6pKS3/AHRrQhQAywdl8JCQwxvp8fK4NODk5OTk5OTk5OQ1JmXRarueEsU+WFLpqCyJP5WkJwG5zsAbkmXbMkkIvViHVlaelBnQY+yzXc2tAM9OOYeyr/TbTQA0FcGwzctpERg7tNgeypABQQeSp/TZrvA8iz5pLo2cm8yRcIox9lSXF5DyNApIuXN95fL+XDShASaA+14agjYG6Ku3+cabeXn71YhXWQPKbIPKq8Mu2weo0CnXXMsF/oOUz0IDO05L2+6ow2vCjgCRMFWhZaV/HGV/dqhPotsQYndVpBNSGARr3D083APx86E6Yjqqsl+0sILkHcTqrOiOtgPcC5GnZG2xThxog1WCyiqSDYwDOAjIZTLiixgC0ZXyWGUrBtMPWNtDkndoK0Ovzp41hgAs4NFU2gaz8gvwB9BbCFUm9pKAAAAAASUVORK5CYII=`,banana_tree_sapling_planted_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAXRJREFUaIHtlj1Sg1AUhc+D6KA4Dg2NNskO7NNkC1lptpAmvTtIGm1oGEcUf+BZCHhByFzCS3e+mRQB8uZ7h3MhACGEEEIIIYQQQgghhBBCCCGEEHIujOai5XqOMPaRJYWtjwWRZ/K0BADsNgdnQp72wiwp7GIVov7kaWkB2DD2sVzPnQnNtBeGsW/228wCaKQAoDqmSlqDKqHd5oAsKQDABJFn9tusdT6IPGcpjd6Z7JNICWHsmywpJvdplJBM4fLGw+dr2ZICYKTQUGrHpNVCfZN2ez8zL0/fdrEKGyH5myDy6vLLY0enU1XqvtuEqtDyO37L30jnaYnu+XowhsJQCUmZutBy0j6qHV9cm3/SXcQavdOpEurK4K8zAIC7hysAwNeb7ZXpmcrmtp0kJJ9BPbtqOtIp+KBAnpaDxdYm1BKpF5NTJBMcI3CSkGYxkYoZI9BF/S5TYjDxZetaaPKT2onQ8+O7i2WAcyQ0FZdCTv6C/AAIicIVov1ikAAAAABJRU5ErkJggg==`,asparagus_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAV9JREFUSInFVTuOgzAUHKJttlmlJF2UFIgr0EUpkNiaC3AGjsEZuAA1kVKg7SjpIkSRgg4phyBF8pCxn8GglTJVHL/PvBk/AXwCjmf3/5Wz4QKd7WlRk6kcSw703WA4X+sLmrKz5KQlORsxEAB+fm1T4iM8Djf2/5FEYRwNwY/DDWEcTUrleHYfxtFQnGsyNGjKzsqSFPe6AAAc3bMR8yxJR2eZlGIy4V4XSjIHZ3tClbdaUl8mBeD99bLZorn7XYBrfgFQoMpbvcnkAQBUeQvfDbDffcN3g1W7MWpA4MbUvRB6DLr7UQPZZLEAoJonI4wjRR52AuAljyjX3Iuaule2lFhSA5pIZEd+idNy7NkJmrKzOLk4iUx2RbsHU4U4AjrM7gHwkkknARE4ukCWpMq+sBPIO6G7FyfLktTMA5kZB5KIMCUV28DUZBMPVpm8BKtNfv/upbOC2c/hXIGP4wnebtncsEc6vwAAAABJRU5ErkJggg==`,asparagus_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJhJREFUSIljYBgFIxOoW0n8p5ZaJmwa1AUcibKEGLWM6BrcNb3g/J3XtzHcPPaCEUMXCWpZ0AV2Xt9GyOFkqR2hgJiEgJGKSDGcmNSGNYUQYzixqQ0jFRELXitdRXCu41ZHtgXntj4kVysqULeS+E9K0YEO8MYBLCIZGBgYbn7YjzOc8QGcQYQekTc/kGo0AQsYGEaLguECAF6gPZZVZb3GAAAAAElFTkSuQmCC`,asparagus_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQdJREFUSIljYBgF5AB1K4n/1FLLhE2DuoAjUZYQo5YRXYO7phecv/P6Noabx14wYugiQS2GD14rXSXkcJLUwy1Qt5L4H1qSBNdEjEUwNfjUYvhAWdOZ4dzWhwzntj5kCC1Jwhq+MMfA1J3b+pCgY8gCxCQEDB+QYjgxqQ1rCiHGcGJTGws5FjAwoEXsddzqyA4iYgFBC9StJP4TCmdcqY2gBfCIxBOZyprOeB2IMw7QI/LmB4R4aEkSw+qeeQwMDAwM57ZCaIoi+bXSVXhE3jz2grElqI0YbQwMDASCCLnIwBfOJFuAXC4xMBAOZ5ItQDf47vW9DKt75uEMZ3wApwb04CDH8OEBAFoqeOiVTrE/AAAAAElFTkSuQmCC`,asparagus_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAUBJREFUSInFUz3KwkAQnYgHsIyVosVia5lGxELQwsoLeAaPkTPkAqks8oFFCpuU6WRJkSJdwMYbxMZdxv2b1U/wQSAhM/Pe/DyAX4BFYfet2J4pgQ2WXiQ+sYGasJ5t5PeZ/0FVtIGW9Uas1sFtcqWEvxUvCVgUdvvjQSb5EIkYV6zWwXS2ku/748E4XyyGgiSoijZI4wRqnmtENpRZQ4rROhCoeQ5pnBgXJ8SwwRLKrHGK6ZMyDcAXNB5uII0TSfwVAgBlsdxcXCN4BnX4W8zVVoCCtoOqaAPxSKcSbrUtWOsAQ3VqdTfHUddmvSIMPG/VA65rIwmwo9UxYOW7aGEdkZFAVYmLqYak4OxAFKbGcCou1n/W02NR2M23oxcyTIJH4jphL6OZLsXXF14ENc+hzJqPzOZ1pv+BU5HvnH+KB+Rns9NcWsNEAAAAAElFTkSuQmCC`,asparagus_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAsUlEQVRIie1VwQ2AIAw8jJMYV2CRDuoirkBYRT9CxJS2Up9ewsNiubO9IvBDQWBih7LvIjjWZakPKWc3yT25OfwrkpkLEkUAwLbtUq6plBMXVA4Grq8t60HWYKQH9R2iWMX0SjniokZEIXlDoOGVGUbdYbazx+MmF2kE7qmWkqxlEEX0CKyNVEWwg1ZQJtoqghs6kcAKotgV0yMIKefmypCsKF0tXhepPXD/UAwifsg4AawtUVA+F49vAAAAAElFTkSuQmCC`,carrot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3klEQVRIie2UMQ7DIAxFTVUJZcnIBTggU0+RKQfMBTJmQUx0aEDY2FSkdMvbwMn//o4VgJshrFOEdYr/N+m57xalKYaloqKd4o9uk4TzqnrmcqJW5+lOEH92m3BnmqZALJyU86+rDeFEK0E8Fp0Ps/PYyHklzrwwbnWADAAA5lfAJkSMQ9qiLL7tIV9Sw9OsuTmSO+p+2wNYU4zrk0QhAyEJl6Dq3hqNkiCS8JU1TcLWaJRANGGgBdQ9Fc0f+ft6Z8QEzMy7hLkX4rFo1PkvwokqgTV6iLBEhPL3cAMAb8x5cUBYehurAAAAAElFTkSuQmCC`,carrot_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAFFJREFUSIljYBgFo2AUjAIagYmc/2lnINUMn8j5H6vB6GLo6si2BBdNADDhlc3/zkiyQ8gCyK5G9xUBg4lzIbIlyIAIH+JSQElKId7Ro2B4AAAM7CorC4ZVKwAAAABJRU5ErkJggg==`,carrot_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAG1JREFUSIljYBgFo2AUkAcmcv6nnYFUM3wi53+sBqOLoasj2xJcNAHAhFc2/zsjyQ4hCyC7Gt1XBAwmzoXIliADInxIvAXolhAZfMRagC8Y8JpBjAX/P3Wz45TkK/2J1xxcEpRkJtKCfRQMfQAAPQYyLlPDfzcAAAAASUVORK5CYII=`,carrot_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAHNJREFUSIljYBgFo2CYgomc/2lnINUMn8j5H6vB6GLo6si2BBdNADDhlc3/zkiyQ8gCyK5G9xUBg4lzIbIlyIAIHxJvAbolRAYfsRbgCwa8ZhBjwf9P3ew4JflKf+I1h5AFeA0nxhJcFlCSW0mL11Ew9AEAw2E2LwiWHwcAAAAASUVORK5CYII=`,carrot_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAp0lEQVRIie2U3Q2AMAiErXEZGcShHeQcpz4YkipQ8CdqjN8bacvBlbZpfj4HEWUiyhx3VycfenCUASRVgCsAkGrrtT2MENCqsNf1PaaAPLyPRWjdvXkH40Rq+2WSMpEVC7ZTcAtnRN0x9S7doz1S1W0CEetci7TR4+QR60Jfhef7IqSLCIuiEwMgjRO5xVVesj8xln2mQEmtbSlis7Io2vZpHvkuXssMLP56RC4nRRUAAAAASUVORK5CYII=`,garlic_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABB0lEQVRIS82VvQ3CQAyFnRUoGIGWgoYSMQUVJQswBwtQUjEFoqShoGUEClYAOZLRi3P+OaRISRUS8z4/2+c0NPDVDKxP4wIsF5PP7f6uSiodzOLn4542uwPVQMYH4KGocZFyIOXBictC0oDL9UGv54mms23LWa/mqV6EAM6exflCQBbiAlC8BMhATIDUXUoi2WsX/NvrRxFgiUuTayA9gBYvlUYDJKbkpAPIiFsuLMgPgLMudbcaGz1HJy2gVjxygae9A8DMvSw9gC6V6yAqhU5I4nsO/imTNUl6GfamiAN470eNts4C/x+/F+ZBExBuUDzVerNqYXkf7iIUsu69L1y4TTMAL+YLkFzsGSkFyYQAAAAASUVORK5CYIIA`,garlic_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAADtJREFUSIljYBgFo2AUjIJRMNxA6nS1/6TqYSLFcB19LZItIdoCcsEIsyBWZxrJFjASoQZfpBKjf4gDABs7CRP3VfqlAAAAAElFTkSuQmCC`,garlic_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJ1JREFUSIljYBgFo2AUDDPg2WH+37PD/D8+eXz6sMkzYdOMTaFnh/l/Gf73GHLI/O0VJxnR9bHAFKFLwjRi04QOiFGDE8As8uww/586Xe0/IZ+iAyZCCrZXnGTEFWTEuJxor8Hi4MlHQbjFxOgj6ANsgJQwJ9oCGf735LiFdB+QahFJFujoa5FkOMkWxOpMI9kCYiILX1onP4MNGQAAbEJDfI/EtV8AAAAASUVORK5CYII=`,garlic_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALxJREFUSIljYBgqwLPD/D/NDSfJEs8O8//oGrAZQIwaol2XOl0NxVJiDGPBZ/v2ipOM2ytOMuJy+faKk4wkuxSXGLIPsAULXt/gk8QXRNgcQZRvsFlCbBygizGRZSMD7jhAFyM6kjw7zP/L8L9nePJREKtBuADOVITPAHQ5ovQRShnERDI2Pm5BNDlSMhpZuRndAkKGwORpHslkJVNSigiy88HQtEBHX4u2FsTqTCPZAmIiC19yJL4+GLIAAIDwnt7DsMsUAAAAAElFTkSuQmCC`,garlic_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAsElEQVRIS2NkoDFgpLH5DKMWEAzh0SCibRBZGAv9P3H2Hd5gJjsOQIbvO3CRwclBnwGfJWRZADMcFj74LCHZApDhK2YVM4ipxcHDnyoWgAwGmQgKFnRAsQXYXA2z5NWtRQwRab0444FgEIEMz80JZQgMqcGaJKkSyeiRSqzrQeoI+gBmGLIloGABAXxBA9NHtAUgDbCIhmkmlMlI8gHBMgGHApJ8QI4loxYQDDWaBxEAZwZJGciZbVQAAAAASUVORK5CYIIA`,grape_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAdUlEQVRIDWNgGAWjITC8QiDTTPk/zEcbwrXhbJgYWTSyoSADkPk0s4Qsl6JrwuU6mDiyT9D1Es2HGQbTAOOjGw4Th6kjmUY3ENkAmhmOz1JkBxDNRjYQmU2RD9A1IxsMchm6PNGuRVZIFUOQDRxlj4bA4AsBAEAiL1mYqo82AAAAAElFTkSuQmCC`,grape_green_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA10lEQVRIS9WVwQ3CMAxFmw04Mw5TcGUFBmEFDlyYgplgglRGMnJT2/8nUgX0GCX/fX+7SZk2/kqP/vG6q/fTs+tMutkKjoiLeRpwPpRqq708ahGorGVVwXJVWARFTCuRdV3LYl4AbAytsIq0exDEBag7lDtTxSqi9lAEYaOCAC9fL6ao4auI9rfXpBPCznwW1QfQ2zzbdDXlVRuOKdNApg8uAE2PdYqMfAfAXoDM/wKvigxm44liHQag7NXYbwJY9/A9iPL/G8DiBSNG1+3ncJMJ4HvL5oAZR2XBGdo0OvoAAAAASUVORK5CYIIA`,grape_purple_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA10lEQVRIS9WVwQ3CMAxFmw04Mw5TcGUFBmEFDlyYgplgglRGMnJT2/8nUgX0GCX/fX+7SZk2/kqP/vG6q/fTs+tMutkKjoiLeRpwPpRqq708ahGorGVVwXJVWARFTCuRdV3LYl4AbAytsIq0exDEBag7lDtTxSqi9lAEYaOCAC9fL6ao4auI9rfXpBPCznwW1QfQ2zzbdDXlVRuOKdNApg8uAE2PdYqMfAfAXoDM/wKvigxm44liHQag7NXYbwJY9/A9iPL/G8DiBSNG1+3ncJMJ4HvL5oAZR2XBGdo0OvoAAAAASUVORK5CYIIA`,grape_green_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA1UlEQVRIS2NkoDFgpLH5DKMWEAzhwRFEQtm8/3E59d3Uz3gdiVcSZvAPxW9w8zn5OFHs+n+RkQGfJTgtABmOz2BkW/BZgtUCdMNBhqG4nAspxL5BjMBlCYYFJBnOwMDAEizM8GfxOypZgOTyim3/GUo/qDIIR91hYMDjC9J8gGRB1aqv4KBpC+OGRMc3Rqy+INsCjGQ7aCwAuQxvRCOnIGjQkJSKYF4nmJqQwojkfIBsCYyNLdOBDAYBsnIyeiRiK48IlUMgMwZHaUqw0MejYNQHBEMPACcseBmTrgJTAAAAAElFTkSuQmCC`,grape_purple_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2ElEQVRIS2NkoDFgpLH5DKMWEAzhwRFEOpx2/3E59cr3Q3gdiVcSZrD4H1G4+eyMHCh2PWJ+zIDPEpwWgAzHZzCyLfgswWoBuuEgw5BdLsAmBDf/w693YDYuSzAsIMXwTc1HGLgz3jIY89tSxwJklxv6zWUo/aDKwOPKxGBXroXTFyT5ANkCY6fJYEPP7ssF06CgwhZMZFuAnmwHjwUgl+GLaORgggUNSakI5nVCqYmifIBsCYyNnulAEQoDZOVk9EhEL48IlUEw/YOjNCVY6ONRMOoDgqEHAPCIbxlb63vgAAAAAElFTkSuQmCC`,jalapeno_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA7klEQVRIS2NkoDFgJMH8/1C1pOhhIFbxf6cwUbD5+1a9BlHE6iNeIQMDA1mWEO0SkAV+adIMXz78IskXxFoANxwWZ8QGFdEWwOIAOVEQYwlBC9w5WP+nSUviTGyznj5n2PnjN05z8FqAbLitrgrD4ct3sFqEzxKiLMBnOMhGsiwg1vUwL+GyBKcPYBYQcj1dLPgkyMyw4soTrJFNFR9QFAeEggif6/EWWoTSPyzsybYAZAAxllAto2HLYYRcT7Bcx+cDYgwnaAGuYCLWcLIsIMVwoixA9gWphhNtAcwSEI2vaMaWEAjWByS0OrAqBQDXPaUZstITfAAAAABJRU5ErkJgggAA`,jalapeno_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAwUlEQVRIS2NkoDFgpLH5DKMWEAzh0SAiP4hswh3+w3QfWXkAZ1DC1OFSg1UjSJO27Ue4664e5mf4/ekOnH9y+xOwPmR1IDXYLMGwAJvhMI3mnjJwX7HyqTAgOwJkITZLSLIAOTjQHUKWBcguwhYcMAthPiHKB7CwBdGwoMEXbNjUIyctojIaIQvwpVWSLcCVWnBZQpQFyMEASq6wZEowlzEwkFZcw5LpqAWgoIXnWGLCGU0NSrwSHclkWATWMvQtAAA9on8Z/HlQTAAAAABJRU5ErkJgggAA`,jalapeno_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA/klEQVRIS+VUMQoCQQzcK2z1A5Z2PsBGwdYX+EZfcK2gjQ+ws/QD2lqczMHAXMwtWeREMc3BksxMMrlUaeCoBsZP30Ww2Eyb0XjmNn3c7V2x2Q6W23VDtMf9kgA+X93S+TBpvxp480h6CQCuIBY0SuISWHAoBSDCkvLtrQ5YTA9IwncIKvKAHVA15q/hGR0m8GYPcACgA0uk3TBPc1488AiojgSn+trW5XJJkiVQ47iyXFdVaT3JdkBl2q4q9daVgEX/AYv6PLHrGjbZ3oGPEmA88AAm6xnpUw+xoWuqBqOIWxQ59SECAtk1/W+CzkmIjEJyOmMv8qCQqE3/fYInGwy8GfZ6sOcAAAAASUVORK5CYIIA`,jalapeno_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABH0lEQVRIS2NkoDFgpLH5DIPLAnNPmf+sfCoonj6y8gBeR+KVtAl3+A8z7fenOwwgw7VtPzJcPcwPpkEAxMZnCU4LQIbDDIEZhI1PlgXohsMsANHoloDEKPYBzJWwOEAOHlgQ4rIEbxChawZZABJDjmhCcYHVAmzhD4pkGDi5/QkjrmBE9wmGBdgMh2mC+QDmC+T4wJWiiLYAOcmCDOPmvM/w9bsi2FP4ggmvBbDIhfkKPf2DLNm54CE4uHClJpxxANOAHGToFrx/eJXh6onX5OdkkCXIrkfPzSALwGGPxxKiCjuQJaCIRk6mIL62hSg4aCi2AJY8YRaAkikxhoP0EeUDbBYQW48MXwvg9QCxQYGkDiVUSAoiMiwjLZIHpQUAD3LJGUbvuUIAAAAASUVORK5CYIIA`,jalapeno_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAhElEQVRIiWNgGAVDDtzebPH/9maL/zQz/P+zS///P7v0/9zUDKIsYSLFcBXjWSQ7imgLyAWMpCi+vdni/+dHBgwMDAwMRtkzSNI7CoYwoFvGw2UJ2fkAPePBki/VLKAawBe+tzdb/D83NYPocgmrAaQUbGQZTmrpiQ4GtrAbLdwYGBgYAFTPX5fT1wXtAAAAAElFTkSuQmCC`,pea_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAbVJREFUSIntlMtKw0AUhr/YokRqkSAGurAUgiLSraZvkT5BnsGlO3d5jj5B8wKum7qTrlqE0o0QkFm0xWys40InTm3Sm7gQ/GFIzgx855x/LvAXZNdMAFmtlwD4/KbxVlIQNfzAkYA8udhHj40fFC79wJmb6HcFUSjwA4fWzSPVesnYOkG1XmLUm0oAP3Dod0W6FoWC08uyMbgf85MOMA8KJJOZVLHrWZxdWQBpBzvbgMtHRQCZTGbS9SyuW+e4nkUUfnXhBw6j3lQWNwErW8bPr7jeR6WNpk3ldJ9G004TqL2wa+b6HSi4Hzi4nkWjadNo2nTaMU+DFzrtGPiwRtkUDxPW6kCH97sirVp10GnHRKHAPCgYyWQm9Q1f2cF3uK6nwctcnExmWJVdIwoFVmXXAJafoqzKATrteO4/CgXlo6Ixfn5dYOQmWGaL7vnZlUXr5jGXlWnRurYoeLVeyi00b2GlLTp81Jvm8RcT2DWTeJhIdRSX2bIKDhkWxcNk4RHLs2UVPDMBkFqjLhFsZouuzIumX/9tbNFVyJi7hTcOj/dSeBQKHu7ExvA8ye/j8/X81+/oHfIfC2frtx3xAAAAAElFTkSuQmCC`,pea_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAelJREFUSIntlDFoE2EUx3+f3hESUbQXKFypQyg1iFNU6C0B41K7ZJIuSiI4NIJKFx0Es7YIWTK0QwsRBDchGDsUCprBG1pKx6pBkEiG4nWpJLWJfi7ekbP5rqkIXfqfvseD//+9/3vvg2McNURQMluM+uIz5yJUtuoS4NGlWyKTyhPWRgIFTgSR61qIatuR2kkdgMpWXeasBGkjTiaVl/10oAUlV1oNmTbilJ1NH1nZ2SRanhKj5pV/E8gWo0ROh2AbzNEIORIAzNnrAKSNOItfVmSysRFoMShm8ODFec8OlxSgO74WGhQ/f3UAKN3/phToOYNu8vEBUyR1Y18hobBGte3IsQs3aHVqSoGeFj21smLy6hOp70yLjQ+2L5ezPLtk17CVVvUUOMUgxcpDMf95SU4MDIul7bo3ZNcit8Ozr+6Ki8Njh+vgzdoC1bbjbZBbdS88//pOXnc+Ha4D8A5JmquTvqoBJowhMWevy5yVoPGx6a7xgRvlQ6tTo2TfIVYQ8l5piKlFk1hByGf2ZRkrCOnGrU5Nzi/fVvIoLzmsjfB27TVJ3RDNnR/sNvd8+d3mHrPWY1FZXRCZVF4pEHjJ3fv9978EcNOa+fOa2Zdzoezgf6FvgfcvvwfGKgRNvq/fsk+uYxwhfgNZt7hllq/TVQAAAABJRU5ErkJggg==`,pea_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQFJREFUSIntlD0KwkAQhV/EI/jTpYt2CjYBFYSQRhSsxSOJeIxcQlIG0gS0U7t0MbnD2iQhGXaXWbX0gxTDvjA782YH+GOC77kAIKpvs14ptZOp3dIulo5UZ5FYJFGAXn8IALAdT6aptcfTAaPxAACw256l2o7szyLPlDenPO4v7bk0wa+T1FAPylgK9aCMzeGaqUJlYBOWmSqUHlB0fdaNd5ebQJfkEsZ0vAW4VTLNFEkUiCQKRPoMKy0ARgW3a4rmbcpYicl4s2GPt8ku+pS6j7SXFabvQupBkWf1RFBu15S+C+3EfLyLuPunVYHvudZsvhfN+BLGXycx4mdL7k/FG2sdid9DA0ygAAAAAElFTkSuQmCC`,pumpkin_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAu0lEQVRIie1UuxGDMAyVOUomYA52yRzpU9IzR3bJHExArzQg54S+puIur0On97GFBXB3lAYOZvhZA5wfE3283h9Xo2sVj6JPM4CSAwRuIHMCjtD1SidAoaaJub3cAPEpMBZRyOolk+IRWlCWqi3OYN3yohrnMKD06wYwDj6Z18ah1nYt/DUwk3FDLmjhym8awt/guoE2TG34HOJDi5I1Q/ehZcUtDl9i6rrYU9VGu0/cRcSVqecwwb6b4wsIwjy5qWuN/wAAAABJRU5ErkJggg==`,pumpkin_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAgklEQVRIS2NkoDFgpLH5DKMWEAzh0SAaDSLsIVC1zu7/lYtPGTY13iWYSHAq8KtX/q+jLw22oS3oEFwdzHCQOMUWwNwPsghkCchSmBgxhoPUEvQisqGkGk6UBTBDYRYR63KYPoI+GLUAPYjgqYRgGYBfAdxcouOAXAtHLSAYcjQPIgAOZi8ZT91aaQAAAABJRU5ErkJgggAA`,pumpkin_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DKMWEAxhqgSRX73yf2SbNjXehZtLkQUwg1+9+4PiEzEhFgaYJWRZgMtgZFtglpBsAchwdBeDDP786jvcfF4xTgayLMBmOMxgkKEU+QCX4egGgywhKg5g4QyLLGQL8LkaZAHBVIRsGMg1IAALd5DhyK6GyaMbDAsujEiGGY5uEHqOghmM7FpsuQ7FAnTDkcPSIlcenJmINRivD2CSyK6DWXBi8kOSkjbRioeMBSiFFsGiErcC6hR2xDiA6DggxjCCyZRcQ/DpG/o+AACfiHQZOpMMxAAAAABJRU5ErkJgggAA`,pumpkin_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA20lEQVRIS2NkoDFgpLH5DKMWgEPYr175P3JQb2q8Cw8ZsoMI2dBX7/6gRKWYEAsDzBKyLAAZjm4oemKBWUKyBeiGf371HW42rxgnnE2WBciGwwxGNhTZF2RZYJErD45MkOHYDAYZCgMkxwHM9eiGwwxFTjnIPiE6DmCuB2kmZChFFpyY/JBoR4EswqkYFiSwyIL5gCoWwAwHGYYcNCAXUWwBsuHIYUk1H4AMwuZKqllAcx/ASkdQWYPsE2r5AKXYpaC2o7y4JtZykjINsYaSlZPJMRxvTibXQHR9AG+ifxnYavyUAAAAAElFTkSuQmCC`,pumpkin_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA90lEQVRIS2NkoDFgpLH5DKMWEAxhqgSRX73yf2SbNjXehZtLtgXIhr569wfFJ2JCLAwwS8iyAGQ4uqHoYQWzhGQL0A3//Oo73GxeMU44mywLkA2HGYxsKLIvyLLAIlceHJkgw7EZDDIUBkiOA5jr0Q2HGYqccpB9QnQcwFwP0kzIUIosODH5IdGOAlmEUzEsSGCRBfMBVSyAGQ4yDDloQC6i2AJkw5HDkmo+ABmEzZWyfEwo5c3jT/+IigsMRdh8ADL8YrYeSmmgP/USAzGWYHUFckFmcEscbHCBwjeqWIASDAQLe9wKKC+uibWcqIgi1jBs6mhuAQBXJIAZAYF9rQAAAABJRU5ErkJgggAA`,pumpkin_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA/0lEQVRIS2NkoDFgpLH5DKMWgEPYr175P3JQb2q8Cw8ZsoMI2dBX7/6gRKWYEAsDzBKyLAAZjm4oemKBWUKyBeiGf371HW42rxgnnE2WBciGwwxGNhTZF2RZYJErD45MkOHYDAYZCgMkxwHM9eiGwwxFTjnIPiE6DmCuB2kmZChFFpyY/JBoR4EswqkYFiSwyIL5gCoWwAwHGYYcNCAXUWwBsuHIYQmz6OnCxyh56vGnf3iDDEMSZBA2V4LEQYZfzNZDsUB/6iUGfJZgWIDLB7J8TP/RDYfZhM8SrN5DLsgMbonDXVyg8A1r/USMBSjFLRVrOUaS0jQ5Fo9aQDDUALfWiRlPIsF9AAAAAElFTkSuQmCC`,pumpkin_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAt0lEQVRIid1UwQ3EIAxzK/7dI2MwCaMxScfIHkzAPSoQnJKS0uvj6h8SOI7jALwWRJSJKN+957RHPqTjECkz8zJ7bx0p9CHB0okGsQAzL3vcZjntsMzBOqv/RZ1626aWmhm4Ql7jBoiRKwKuFhf34BvWvZCEuHqINot8SGoRSUjt4Iy0COhsNMJkUVtkJOZxDBfv15vZWXQlLe0bQLfNPAON/PZ3bSI/QdfBbFL2uD2TrPd/1QDwAfx6iTTKaBYOAAAAAElFTkSuQmCC`,spinach_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA7klEQVRIie1VXQqDMAz+OkfBu3gtnz1Ln3et3kUYSPegwTRNjNsYbLAPSjUmX/6aCvzxqyjbchEOCCzdgtSvT9PscmnCgjECQ1dLiYzI87LupLd+b/gumlcM3U5ASD0wRp08L+S4yVx63NO3iHgQGkQmV13LIeFyGYSA3QOLzMomL8Dt3nD6TdYiPIr6VIm4oVUmz9EGeYrqJksyWRaZpXJU9WPKjTw5OXpqDngz+bsWNe3GHEgHAdNcT6eVCc/gQMe7iwK0vmjNNUpkDZrumJeqvuhMG7vJ3LAl46S03kbBGAtSf/pf8JqTD5J/Jx5qr2HmmdxT5AAAAABJRU5ErkJggg==`,spinach_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAdklEQVRIie2S0QnAIAxEzwpO41pO5VpOI4j9UmyrMelfSx4ICnrPgwCKonwfI7odXO37mFlvDzKsrRFvn7JXgllYOwuYC4KrPWz1Y29ZLegG90AASOXaZCOZC2I2SIUvFQsoibdgybcCStJgiFazzBpBYabyV07e8yJJjGp+5wAAAABJRU5ErkJggg==`,spinach_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAV0lEQVRIiWNgGAW0AE3Rtv+dDBT/D7Q7BhA0RdtSzftM2AQPXH1CkiE0jw9q+pi2gC4upUp40yUTDcqIczJQ/D8oHTawgKySFVc4Ui18sblohJf/QxoAANEqIe1OcIVOAAAAAElFTkSuQmCC`,strawberry_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAR1JREFUSInlVbENwjAQPCNIhSjp0oUGJohYgClIxRCZgDnYgg0yAGXS0aVOQ5AwTWzZzv8TU8JJkWznfee/s2TgH6GdT6oBAKhY8uKc2cmlbAyHIVSmxvybRQqoYSMAYBDTxTmz49GGCPLRZqIbu2Y6mCKgAaBP89GP5F55IoGYAoBPFuk+zS153XZYHGaTyb2BJMAhuVd2zIQvdiCS120HfdrDdOiG74LrwCOv2w7b4wrP64sspuyKuqab9ZIlJ0g9UAK6T3MvUAnGqkvZkFaxDNypQ2FTx+UVZiAGy8HNyLlZKhT4itzFQO4dWjQ5tEOaU+Thgg1XupJTT84KxCD0m8I8ijGCmCsgbarbDrvHTdo3WQDgn8LY1+9H8AYaOaFdHXkaZAAAAABJRU5ErkJggg==`,strawberry_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZpJREFUSIntVDFPwkAYfWdQoAYMgdiIcSHK0ASHslgGBiTGGBLZXJmMHXCE0ZmasGDSVf8BA4MhTiyd7OhiogMBAhEMDmrCcA7mCpUWMDI48KZe79173/u+ywELLPDvQWYhZUoBeH0cKp06Ta1vkbfXd1xnX/5mkCkFTOvaoEtlSYSq6WAmo7AzXJpUcW3QpZzHCRe3YuzJkohKp04BGByvj7NN4LATr3TqrGLKhFVNBwAcrG0QAD85lt2wTMAOMjy0c8b3kX+TVPstWu23DM7o/tQEnMcJ9ABV0zFqki0ngTSgarohrGr6RHHLBLe9pklAlkQIvAKBV0w8VdNxyu8SgVfwGGzbXpaxBFeOFEmUBYr0UGi0/8yc9V6WRBxrN7YzGDNINAQA3y0ReAUXnjg5Ke+ZDBlkSUS2nMRhMEIiuLZMYDlkAOTe/UyUjyTZbvCGIUN82U/OV6OE/dtp8jYyFglchYJp/ZnPo+LVSc59R2UMh372tA/M+BJMRTjmQqhI6KUWpaEioeGYa+azkyqgv6xjPmkWmDu+ABYSnXTgyhitAAAAAElFTkSuQmCC`,strawberry_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAmJJREFUSIntlL9P1GAYxz/vtbw5rw1X7gwOhKRAIrtMjCYmJCbEyb+BBRddWJxcWHTBxb/BRUNiojExrsawuAgJeAlBPQ/uCrRHeend63Bt0/uJTjrwTG369vs83x/vA1f1r0v8yaHXj+4A6Gl3jmOvLtyFRVRL6byZF2bOZGpp9e8bHLx9nj5/3/1K48c+Z81AjzsTwl1YRBpSx9+Ef1QFoOiUuPXgRRdO7pLhNaCvu7OcNQMAceI1kIZMhhNCtznxGrrolPQgAHMUetSORBiFWhqSe0/f9zEDOK3XmHbnaAa+KFj26AYfntwHOlSnllbZ3lwHEKqlBjFDtZQoOiWs8qSwypPY5RujG5x4DT3tzkHszfzyGgBbGytsbaz0MePsPEYxsYtlHbWjPk+7GmSpZqXY+fSRolPSzcAX1Z0vWO4Mh5U9YQJjCN1S58JXPra0NT3B6TVZFCwby50hakepFAD7lV0Klq0TZoeVPX5W9jTAxXmINKRQLTWaQRKx7c11wijUtrQT6Rh3JsSxV6folNLzU7M3RRuwrlnM3H3Yi92ZOPuS6DzmOKlh0pCp4XE8kYbEVz55M4+ZMzUghl22LomagQ+gLzwPacgUMCnVUjq5YABhFGqA8PS4LwgDGxzVqunPcTR11I5Sw/NmvotxonujegCg4wGHN4h1TkF85ScSML+8hpkzIZbVlnbK8rRe6wpBtobuoqzmymsQHP0COkH49uYZGanE53evGHcmALj9+GUXztBVkb1kzcCnYNm6l12yTZM1MqguW3YAFCxb71d20/fYHxFG4chVfVX/R/0G94oNtjdxwCgAAAAASUVORK5CYII=`,sugarcane_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAaZJREFUSIntVT1PwlAUPSVNXNgMTdwaZCWmG+pqIouGONGNyYE/0N8APwEWtzoZI0ubsArdCHFwqcQNxfADSAh1sO/xPm4BcfUsXN4995x377sEAwpcr5ioZ35rYuzCo/hSoesVE6dU1QpGcSAVZfEovlZkFZaYfZmczL6zIpEXDvua+OXphcQ3xSRZFP8UOagCXiCJU12Ew0A65wZ+a2LA65Oth8OAm6jiVmGZcmhDcq5iJ2LLTqnKP1WemNPegBJn30dxIJmwmOKxNxIXIqePow+/NTFGccBvJt6SLQAlDmKlJQORuHg9AuYz8BiAnV/Bzq+kM8xn65hAjrmqu86RmjBhKU5zDO1uU/vx8Q6YeLvbTCjivf9Cxqq4Wqvd+O7xNmFzjnpjfl53y1xYjAGgcnUCpAvSqHUkTX0kokk6gmgwRd0tax1VztLZH1qkOKgtAoBGrWOIt9+GqDcmxTMNKGx7gyyYm5LvbwseU28g5vcysI8PAAAfn2uTTXkKO49oX2R28PD0bADnmf9afzZYmwA317RRNJhKPAqZCRWqySbRf/wK36wQGKXFDcrEAAAAAElFTkSuQmCC`,sugarcane_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALJJREFUSIljYBgFo4DuICvV9z9NDX/6bOZ/mliSler7//adOf9v35lDkiVMpFjy4MFDBgYGBoZv35gZXrx8R5QeoizISvX9X93owzB90j64JcQCoix48fIdw7dvzAyTZ8SRbAlJQYRsCU0sYGBgYGit30KSepIs6O/cyBAYbsBQXBFAfQtghnNx8ZHiJuItIMdwkiwgFxBtATmuJ8kCcgEjsQqD/KxRyp51m44SrXcU4AUAXQNE1DhUevgAAAAASUVORK5CYII=`,sugarcane_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAVtJREFUSIntVCFvg0AYfSzVcyCWrElNp3BzJPUYBArSZEk9Fl1VhRyi/wDUxNKEX4CrQw1DQpOJzU2TMNOPHNe7K5TJPXXhfXnve/d9hwYFgtBuASCOMk3GyXiClAhCu50vFwCAuqx6Iiwn4q8asAKG3uDre9aJEGfoDY75aVoCOj9bj50JKy5LOCoBCZAJL84n5LXuZOJ1WaEuKxh6g/ly0V0HL37MT10Nm1powIrHUabFUaaxApSEFacaAEIT4frxUYPQbj8/fnp1D0/3ws3ir0o6ZBauY7Web/a+pUmBt/f8ohG+uYsZTMGgIfNwHavFuWMCeyZeBqWB61jt6/4FAOD5JtKkQJoUoOsiXmUyGyJO4OfA86MT/AWUBrvtoTvLZsDWjDZYb1adgGgGu+0B683qdgMyIXi+2ZvDNfFBBlMh3aLzK1Xu+BBM+lVwzdxuAMGLVYn+YxR+Ad5z26tYeOTaAAAAAElFTkSuQmCC`,sugarcane_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAK5JREFUSIljYBgFo2AUDD6Qler7n6aGP3028z8pljCTYnhguAEDN7cgg7ObKsOPT4wNp8/daiSkj4lYw6sbfRimT9rH8ODBQ4Zv35gZXrx8R5TDiLLgxct3DN++MTNMnhEHt4RYQJQFMPDtGzODhLgQw/RJ+2hjQX/nRobAcAOG4ooA6lsAM5yLi48UNxFvATmGk2QBOYaTZAG5gJFYhUF+1ii5d92mo0TrHQV4AQCQmDoaSzRzBAAAAABJRU5ErkJggg==`,compost_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAANFJREFUSIljYBgFo2AUjAKCgJFYhSbafP8NlP8xXLjLxMDAwMBw5uonovQSpchEm+8/Pnl8lrFQariB8j8GBgaIGmwWMWHTlOLH899Em+8/suEQg0h3DIYFJtp8/2HhjAyQxXwc5LGKYwN4ZZENQgZbDjzEKl6cZIThC7wWIBtUnGSETymDj4M8Q++8cwwMDKhBhREphCKVWACLcPwBiOQ6YsSQAcyhTNgE0cGTx/cxxHDFAzrA6gP0JImcUgjFBbp+eBxgcz1y0cDAQHzxQFcAAE2zRkug2a02AAAAAElFTkSuQmCC`,corn_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAbRJREFUSInVlDFrwkAYhh+lKB2CToVupW5C6VgQOrl07OoiCrp37WKhS/5CQUERxNVR/0CgowhxUtwEJyWDxKHpkNxpktNYLYV+S+AueZ/3e7/cwX+v2C9oOIf04ueKr6cVlsMc62klCDsb4CyHOWzLhLmBbZlKyKkAZzGrA7BJleE6txdycZLzPrBqwtwg4UE0LYttmW5HO/VTgLOeVrAtk6SWxQaSWhZWTWwPlFg1fR/Iqd89u22Nenv/LGcxq4cEAJgbbkxA+t7w6caFeKmYoavXJEjlPLFquo6Fc7YzSGrZkLgEiBqMOyqIs+wjY7HiD248XtYJbxaXt42QeAiggDjraUU6tC0T7etTwkQn6SeU4hAxZOEcAs+5IYeavqnuFVd24CvPuXAqn976VYS4BIx6xFrtSWhzN2vbMtmkyrKDfZkH62BEu4PNv1QBA8/QUeKRAJF1/q1BV69t13UovL47B87McYDHDwCDrl5jMO749rp6jQLREN9JLhUzcqPVniiFg9VqTw6dfnUHrfaEUjGjFA/+DFEdHH3ZCeFjct8t38viighGdYqwEhAEnSP8Z/UN/uTZrzroGIUAAAAASUVORK5CYII=`,corn_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAFJJREFUSIljYBgFo2AUjALaAZdGhv8ujQz/CaljItfwPZfZiFJLsgWkGE4eCGH7zxDCRlTwkG0B7QxngAQRKerJiuRBZQEjDnFKwhiXmaNggAAALTwUmwa1nZEAAAAASUVORK5CYII=`,corn_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAIhJREFUSIntlMENgCAMRb/GdBu36AjsY9jHEboF23DBExyMUijhxjvDf9A2BRaL6bBHYo9kvb9r4QAggWCVVAU5fFTShqMER93lUn9QuOPW/aguwYekZQD6BK9wCaT2xiTI4QDAZ6yePSwCCVSC5UK1NyYBn1ENNjNvTI1MF/zVcWQlzOnNwswDkWwuFghkVfgAAAAASUVORK5CYII=`,corn_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA3UlEQVRIS9WVsQ3CMBREnQFoGQBqiqxCBkIMxCwU1JkiA4Au0kUfy/Y/W7EQaVLY/u/f3XcyhM7P0Ll++C1gup3fVPi4z8lmuCe3XlSAw8/XsjLGyyHYIiycW2djkkWn63FVQohaHGckADZaCLtOKYuHRgYQAhUAxJblptEFxCF6oVYpsF5b/3MTk1IhTxH9xns3ADsqjav3JXAziCFquFX3wEKsRUrgsgILQQaqbU0AwOwnohR8E4AXTZmoJoBSuClkHIL3u98DO+t/A9j+ZN5NTax/5Vodci2wO+ADXJmJGbhBn08AAAAASUVORK5CYIIA`,corn_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA9ElEQVRIS2NkoDFgpLH5DANrQXC98n+YD9c23mXcMtnnv0/uFjgNkoOpAcljCw28PgBpPn/5M1ifoS4vA7IlMIPR5dEtISqIlILEwD4BWWL6kJ3htPxPsDmEDAepIcoCkEJkS2AGI/sMV2Ih2gKYJSBfgCyABRmhVEjQAvRIJBSpJMUBckTCXAwSw5ViKEpFsPAG0VSzAOYibMmVUNjD5AnGAbolxEYuyRZgy7XERDjRPkD2CSgOiA02sixAz8X4Ip4sC2AZjZgURZYFxBhMViTDIprq+QA5zVM1J2PLTNSyAF6TEZtjkdShxCvJkUyqhTS3AADroZQZ0g/6xwAAAABJRU5ErkJgggAA`,corn_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABBklEQVRIS2NkoDFgpLH5DANrQXC98n+YD9c23mXcMtnnv0/uFjgNkoOpAcljCw28PgBpPn/5M1ifoS4vA7IlMIPR5dEtISqIlILEwD4BWWL6kJ3htPxPsDmEDAepIcoCkEJkS2AGI/sMV2Ih2gKYJSBfgCyABRmhVEjQAlhYJ4poMoAimFCkkhQHyBEJcjG7KB/Dz9efwJFNyOUweaJTESy8QTTVLIC5AltypYoPkA2BWUJs5BIVROiuRI5gUK6e/+Y6WAm+ICM6spCDCxbZVM1oyBag52J8viDLB7CMRih4SCoq0H1AbFIlywfEGk62D4aEBfCajNgci6QOJdhJjgNSLaS5BQCfTpUZV5cHzQAAAABJRU5ErkJgggAA`,corn_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA2UlEQVRYhWNgGAWjYBQMRuCtxfDfW4vhPz3sYsFmuYetHpR36f/WawyM+AxAdygh9QQdAAPn774nqBnZsTD13gyPCToaGTCRazkl6pEBVpfCgpUYn1AaBXQB+BI1zjRATcvxJWqsaYAWAFc6oYsDKEmkVAH0LNhIBjizDL2yF85yAJFyIXH48tljmjgCbzYkN/GQUpBhdQBE4yWyooDUygxnCFAjuMWlZAlWTlQvCWGhJy4lS22jSQPE5n2SghnZQGrlCKINQW98UCtbklwXULtcH/AoGAUDDgAvcmw2gDIKjQAAAABJRU5ErkJggg==`,potato_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAArUlEQVRIie2UsRWAIAxET58jULuJm1m6mZtQuwMWyhNjOAgWNl6FIP8IpwF+fa2ucV+oZVkNAgCsy/HgN2B0x3iadZ7FIERwVGqQM+mtcL9dkyk8p5oKHidnklWUKqiCp1VJMYOwLvfNcszAJQP15KPTM2BZaBmY7jzVm6+oWdRA3jG789yPZq5ACz0HB4CBwWR4WpgMzhaKQZ9gCi8tqo2tFmx5Sbbm1hb/6yPtXRM6Z/YOWwgAAAAASUVORK5CYII=`,potato_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJhJREFUSIntlDEKwzAMRb+Tdg3oAJm9detBfFIfJFs2zT2AIWtI3KGkQ6gixR0KxW8y2H5PYDBQqfwMHyj7QFk7dymVd7fltQZljslJZ8WNvRAAOCbnA2Wm+b137xtMYwsp0linZZqxlwPA8FgP76sBTeLTVZzeHNhEZ+WmAMfkPoksclNgi5TIzYFvqAEV6aHUP6bAWflXnpbpO+4f7cK2AAAAAElFTkSuQmCC`,potato_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAP1JREFUSIntlD0OwjAMhV8L3VAlH4DZWzcOkitwwR6EjS0zB4jEGpUwFAc3JJS/CfVNUWP7s1+SAot+ITYU2FD4JLd+pXjbDbDkkUI0uNTEOlcQAGzvKjYULHnglAdb8thtazDGnLYbwKBge1dJXJUmtd2Aw+kCdk2ElKaz5MGuiWsA2G1rnI8rCCRapIvHZJngNpF8t+THbqV47ypZS75ocgZ6k12DthsmMB17Pq7uIDPaIpAsQAeUutF7uqkUos9gMkEuIJX4XrIlzX24ptHrZKIctGTLW9Les6GA/ebhvj+7abMP7Zldr8TMAr7VAphV6XA++jXP1Fz0r7oCqWWiCeEH+pYAAAAASUVORK5CYII=`,potato_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABQ0lEQVRIS+WULQ7CQBSEtwLBj6nClIQEj+Ai3AKJ5R5IBHfgIgg8CQEMCsOPQJS8pdPMvnbbpoAg1PRnu/O9mX27gfnyFXxZ3/wJYDSOYolyvTpax/q9KObSiESsO2yb3eFmmmfLMfcwMP1ey5w211QbcA3LALg6eRYxXAyQb/LOMIFodw5AV8sTdGUiDICMsSNxLO5kfgpgca6Yf4YjOMEYYIgP7jIAHQeyxwQIcOUshgYA0AHoQa4mD6Cr1RFi0Z2ImFy0wOKA1wfOsQ7cUWlfcytyv+dBAUDVXIweSwGoIm+yD8ixcAPkOuBKfTvTJ8JO9IZz1sC3G3UU2uVbR0WVGD4FsAfRaBxJB0Gz9Cwr/SFRihfTgX08Xx4m7DTsfbbcy6dCjSoAKw5hHcdkvi2E+ACvc7ne5WhWcVAPk8z6fcATQYkRKFHnkOsAAAAASUVORK5CYIIA`,potato_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAdElEQVRIiWNgGAUjD+R5MfwnR9+UVIb/2PQyoSsi12G3nmIXZ8IujAmI8dmkbQyMxDsJiwXkBh/RgJIgHAWDDFAzMrHmg1tPqWcJzoyGK2cOGMCVCalaVBAs7HABYuJj0jYGRjVpTHGifUAMyJlNQWE3cgEAMasir1+5WT8AAAAASUVORK5CYII=`,sweet_potato_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6klEQVRIS2NkoDFgpLH5DKMWMEQZ8P5HD+ZlFz7DQ4asIEI2tDlIE2z+1TuXGbRVdMHs2nXXGWCWkGQBzGCYobgSCMkWEGswzEKSLAAZjsvFoGCBAVjwkBRE2AzHZShycBHlA1yGI7uUojhAtwA5lRDK/QR9QIzhyBbiSqIgh2AkU2IMx+cDZNdjWAAzHFdwEAomdMNRLAAZ3lmQxvDr0WFCQYxVHpvhFFmA7huSLEDXjC9oQAaDAHIBh+xFlEjGl2uxhQsuV+O0ACSBraREz6UwPi5X47UAWZJQWU9MaiCpuCbGQHQ1Q98CAPnipBlXIGtSAAAAAElFTkSuQmCC`,sweet_potato_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABE0lEQVRIS+1VIQ7CQBC8fgNXQ4KrxRE0CoWo4g1oBJo3oCpQKDTBYetIMHV8o2SaTLPd7vXO1DScau72ZmZn97aJG3klI+O7P0HQ4QlblO3SmvmX16qXqTxHnBWDfdMiXN6fV+5dfhuOV/HpAOB8mc9b/xfZzF0OT5PEVCbBiSJJNAFifCQdAuviEAFIsZCNzpL3gt4ycLtJ3TF/NPGnYl3f7lUDTOW+OnhrQI+hjOAABokkoIAoixCsbfIRgIidRDEWSa8GVvdI5czAssvquJZAt6YO1iS0hvvMRr+HDoH03SoawLAv1fPbN5R6Fg29SqplJ4XAvS/ZUkP1PIsBjyVoZ9LAbPZO5QmP6+CvKjJgdIt+t2zOGYhEhSEAAAAASUVORK5CYIIA`,sweet_potato_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABLElEQVRIS+WVoQ7CQBBEj9/AYUhwtTiCRqEQVXwDGoHmG1AIFApNcFgcCQbHb5RMk2m22927MxWEc727zuvOTu8Goecx6Fk//CGgWI0q2Po4vbOqdzdRiD2CIOam5ThMimE4bG5ZEBMAofV+Fp6PT5OB+/EVIM5BiA6JrqwDsMQhogGxOQlpAWiBFV0AMGQVFlTb1wBS4vwq7rOA2j6806nA+vrlYhS25bXeuzvOq/Pl3VTigTDfAUBAVsJNFAZEA7CmGw4bTYC2yQMAxBizJ9J7rNHSVg9kNCGurWEFMbvMmHq5lwBpE/sEu2Q11t9dV6B951FAAS3oPVsBaVlknTESkgJGAd694AE0zHs/60S0IL8FYIKkDYxq6srNsai+YBLD1ckBpMSj670Dvl62CygLcuKEAAAAAElFTkSuQmCC`,sweet_potato_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABSUlEQVRIS+WVoW4CURBFZ38Dh2lSh8WR6qqqChTfgK5A8w1VK6qqqpu6WhwJBsdv0NxN7ubu7Oy8Lckq1gDz3jt35s7so7KJn2pivt2hwOJ1fqWth49z0YHBDQoCEDDEluuHhv+4mNn79qeJZ30MFwHa7Fd2PFzas7/1yQhnkCIq4AV7AhEcgEjAx6KqOgJqgS8bMDxaRVYVK2kFSnCCCY0EvXUQ6VUQNUyzpg2IaQ98f5BATwBwrUSzzazxzcbeUMDblAmw0mhswQl7oKOpDaTfbLJf0/6EY5rNPWAvz3N7W39Xu/rp+vl17rx0ak/00jVN9r4jBihhAFNAhbLMaWFnTHkl4JNQ/Y4YfkOEiemZaALTe8SLKNwnMXQfFW/DqBLCdO1mgcwuWvXv2zQ6QP+5NgaOvUWLzKz9g0kyHeSMEcgcKK5NLvAHBzcHKPX7AFMAAAAASUVORK5CYIIA`,sweet_potato_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABQElEQVRIS92ULQ7CQBCFt9fA1ZDganEEjUIhqjgDGoHmDKgKFApNcNg6Ekwd1yiZJm8znZ3ubCA1rIHuz3z73sxs5kYe2cjx3Z8Cik3ewrr63PykMjhMwbfHhXvW747xqF6OQzic1q0L9ABacK6E1ufl1NfFrJi40+4ehXiAPEw358HkNyg0z4dUFCjAZm4TrOJAbU5TpOZABkIw+rVUSUigYCg4zeMw/efWDJ0hu3o5IFsoaXJoicUch/JzqL4OIKtH+mslHBBuYQCIeasBcFtNHe8PrwAbtXKUfmOPZo9szB6AFrXylJ3NrZAQFRDLgwyOQrCsgYVfdXKKNQEAKnip8bysV7m7XBvfaNYToQJk/ePlpIY5VMtWAqyXlOKZbz0F3pe3bh8gKc90kgJsosBcHYBByysTpoKUILE9owM+Bp4PKJgW4PEAAAAASUVORK5CYIIA`,sweet_potato_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABUElEQVRIS2NkoDFgpLH5DMPIguRM+f+w4Jo7/SGGz2Dy2OTwBTPYIJDmyAR9uLrlCy4yIBsEkq8tTgbLN/fORZEjFIeMyJrvvD2DYQmyPEwS3RJ8vkexAGYAzCKQT2Au//tEhoFZ5gncATBLCPkeHkQwg5C9DDIEBG5v/8Iwf0E3Q2JCKYOqJw9YDBSE6L5DdhgsiOGRCfMmsotBBh568JbRTkH4P8gCEEAWA/FB4jCfYQtirPkAZiDMMJBByGIgvpevF0NosCPY0raVjRhxjeEDdBXoloD4IEO3bd4GNhxEwwDIl7hSE04JXBaADAIZjs9QZMvwFhXYgoUUw0EWEbQAFBwwV8OChljXE7QAFrkwS0gNHqIsgFkCSzlUDaK//5/+Z2aUBgcjciqiahCBLMGVBGGW45InOohgPsFFU2QBcjDhYlNkAT7NxMgN/ToZAJfI8RlnygRTAAAAAElFTkSuQmCC`,olive_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABdklEQVRIS2NkoDFgpLH5DKMWEAxhioMor0rvP8yWSW2XMMyjyAKQ4bpGInBfXD73hgHdErItgBn+9s1HuAVaGVcY/Bh+opiJ0wJkr4NMQHYZSE5KjhUj/Im2YCMDx//rM7TBBgiL8INpkPdhFuGy4Nmj38QFEbIFMGciW4TN9dgMB+nFGkS4XAizDGQYyBIQjQ0gByfeOMDmUpCBYIMZ/zJIyXKhmC8swgvmP77/laGp9CTYbAwL0CMXYsI/Bik5djDr2aM/DAwM8KQPFf8HNwoUlOIhR+CpCcWCvCrd/xCDYML/IZH8n4Xh8vnnYHGIrxgZYK4FRT5ED8hSkL5/DMipCcUCSOTqYgSrsLAQkgVsDFoZl8BqXq6xYbh87jXUgr8MDAzMcF9OajuPGUS4LIAEzU+oDxAWXJuhA44PkA+ePfwDjhf0PEMgiBCegVjwH+pahDZQnMBciy1FERnJiJyML4cTZQHWhE2BINmFHbF2jlpAMKQAvHOcGReApVIAAAAASUVORK5CYIIA`,olive_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABbklEQVRIS2NkoDFgRDZf20LqP4h/9cQzFHFK3AA3CGS4e4Aq2KydG27DLaHUUqwWwCwB0dgsJcVHGEGEbCCMje4rfBag+xgjrEEKqqN1GVqXXkZxPXrcYAs6bMGM1QIZJQ6wI5/c+wGmkfmgBAAyCJsYNh9jBBFMI8jgeEtVhoXHb8NDBGYhsqUwh4B8feYrxEHIiQQlktFdi42PHEcwx4AcAjIcZDB6UIItQA87mCJYOINct+fwc4aTj97A4wWkxoSbAyWusCUGDAtwJVFclsBcjSs5Y80HIJfBwhNmobmcCIOLrSTYJyAalMqQgwNXhsRaVMAMg4UrKOUkhen9BxkMAiDD0VMRrryBtcxBToagCAS5GgRgPgDFBXJqA6UuXOUX3nyAnARhLgRZNm/VJax5AZsvCGY0WPAg+wBkASz1oSdLdEtwBhG6RlgcwHyAK8yJsgCb5lELCAbpkA8icGMADRDVMCBKEcHww6MAAJp4MShPAj9kAAAAAElFTkSuQmCC`,olive_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6UlEQVRIS2NkoDFgpLH5DKMWEAzhgQ2i+BCL/wvXnMDrCJAaZG+gq8epGaSxLESfoWvNRQZslsAMBqmRMTFheHLmDNgedPVYLQBpntSRjFMTujzIYJglRFuA7DJkTTCfIRsKY+dVzMXwLYYPcLkOphlZHl/QwOIFqwXIrsfmdfSIBRmGKzHgtAA9geOKbEIZgWAQ4Yo8QgbjDCKQBHpEYos8qlhAafiDHIE3o8FcCYtAXEkUX/wQXRbBDIf5CjmJgti4gpFoC9DjBl/uRY4fkiyAWYIewfgKRJItIDb14E2mpBqCT/3Q9wEAeMK+GRpnxQAAAAAASUVORK5CYIIA`,onion_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAOxJREFUSInVVCsWgzAQnPCIqeUc2MqaCu5QhazkAlW9QGUlqndA1FRie45aTHhQ0/RBPpvl8ehnVFiWmZ0su8C3sVrL3nV2PbsQhRKaWgkO0Sy4XHBFgw7mYpLAsPqmVoLzDStJk+53WwDA+XIFV2DxKwpWEUfoAeB02IzixfEGAGg7moN8GUfoVZWTBcisJEW8VzQif9zthFdMVfnbJVvAIk9SixhJyhKZ1mQt5nLkgSXgrd50ArBc/NYk/4dA20HIrJxM5JsH2sHwj9HnUOMNeCeQnAUjRk3z4quCvexMId2nWcvOJaQRIv4YnrKKcGJDnEswAAAAAElFTkSuQmCC`,onion_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAExJREFUSIljYBgFo2AUjIJRgAm4zFj/c5mx/qeZ4a1LY/63Lo0h2hIWUgyvzg9nePv6DUmOYiJFMamGk2wBOYARixg1IhCbuaNguAIAavoTMVykVcgAAAAASUVORK5CYII=`,onion_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAl0lEQVRIS2NkoDFgpLH5DKMWEAxhkoJIwpT3/4vTn+F60PnYbCNoAbIhQ9MCkLdx+YIqQUQXC5AtgbmaGNeD9BGMZFjKQDd4aFqAnM6R8wO+3EZSEJXkhYPN6pm0EkwTYwlJFiREuoANFhEVBltCMwtAlixYvmfUAtS0AUr3sDigNIj+EyzkCSuAJx6iUxFhM7GrGPoWAABQhIsZroeW7AAAAABJRU5ErkJgggAA`,onion_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA70lEQVRIS2NkoDFgpLH5DIPDAglT3v8vTn8GOwYXG1dI4PQBMYbC1CCrRbdocFiAHDTYXE2WD3CFN1UtwOdyYiObYDJFdzGID7IYW6rClpIosgDdMoosIBTRJOcDZA3YggkURPhSD0w/wSBCdzlMI1UtgFlSkhcONr9n0kowDYtofAUmUT6AWZAQ6QI2S0RUGGwJzSwAWbJg+R6qWgBO+zgA3lAgFERggz+v9mNgElJk+PfuPgbNG7oJb4LBZ8H/r3vzMQyFmYZuGbfzRJAUhnnYLMAXHPgSDLIc3FxCQUSsgeRFEMWmYwszahiKbAYAYw7wGetnhO0AAAAASUVORK5CYIIA`,onion_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAQklEQVRIiWNgGAVIQEFB4f9AuwECiHXJ4HExtQBFPhpawTG0XEspGPy+RXfh4HcxTcEI9z4UUCUUhk5QDh2X0hIAAFsvEdRqfNUJAAAAAElFTkSuQmCC`,soybean_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAxklEQVRIie2VPQ6DMAyFX3+Wbp27IuVuHXsajsCdkHqHbkyVO4RExDiOQ9NOPAkJiPO+h2MJYNcfRfOV6NDKvOv9zfOe+h4bAbJqAYjpfwGg20Mv+AZAXQ9cHDCN7QFJWzTIFoDac67aMSU3AO+XvMhHFKj7gpj8dLVvsgLitIT0HCKlF19I5iH5NPoD5cqZWwCrA+UQzRzQW1SclpJ5bpEAwA3+QZqY2bhoLhUkqcNBLiGW1EudtUXBuMo8V7z6aWwx3mXWB53sOFv+9drCAAAAAElFTkSuQmCC`,soybean_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAApUlEQVRIie2TwQ2AIAxFq/HCCg7Afk7ifgzgChzxYBp+qq0VboZ3Eoz/t/2VaDDoZWr5aN2o4PnYdZ3ZI4aC/BzidQ7xbug2WDcqLIQiIRLlVE0s1NZkpTnVdyickz2ixXLnSp+q5ntLnMiRQYj3UWDVMiOJ6S7njgZ4Z3XjXlMMHOGxaVl8+g/YRAZuBf2agQYLdm2R18SiuQMvWgXq2nVoDv7KCeIgQHNazaXdAAAAAElFTkSuQmCC`,soybean_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAr0lEQVRIiWNgGAWkgt97Ov+fm5rxn1rmMaIbDmNfvnmfwSh7BiOmFtwOu3zzPgMDAwOKPiYqOBLuMF11RQw5FAtYXcoZL9+8zwBzCTUA0UGADyDHGSnBOjQASd7BlVLwAaJTEb6UQhULKAbE5OBzUzNIzuXwcIQFAak5mBCgeRDBLYDl4kEP0OOSqtkaW2lMUj4glIKwBTFRPiClnoA5AqaGhRgLSAFkJ3FyMhldAADK8WmxC7dL5gAAAABJRU5ErkJggg==`,sunflower_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABTUlEQVRIS7WVPQrCQBCFJzFdOlsVb2AnKIinEDyj4ClEULDzBqK2duliIhN4YXZ2N9kYTZM1bt43b342Ef35in6hX+Zp+T5nNFikFCWZodkbAPHhOqbXobAgTkBTRNKxFMdzDbEAbRFJQH6kkiPnazaN6XorqjVDkhVV2gYgJKJeDkIi0k3R5riXA8A6dVFTRC6h8ZxKBm22I9rvnvS4mGkP7iIXeLLMamEJYChABgB/8F2+0FR8QNgFO9BuaoAU1Zvaii/f1amyHGAD7gy7n1LiowA9j17H0QAAXMg6WDXQmwGSEDmtXxXZZ1l2EedeprJTF2kXLMS2XWBAXOmxjgoMjq/gPjHddXLaW9sUm13FRzGDAL6oZTfxGqnQgxVUA51jnVdfOwY50Pl3Fc0n1AnAwl2FMAvoNm+RpQus5VQ2CenvBH73/uj7hPH8Azk1pyhepQfHAAAAAElFTkSuQmCC`,sunflower_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAGlJREFUSInt0MEJwCAMBdBv19A13ERwRsFNXEPnsCchxKQg7aWQdwyJ3wQwxhjzVyFihoh5OiPVL6kxZY+UvTqkzUj9W0BvcLUMADgK0WwBVC0DvcHx334WwD2dYm3NOalIH6AbaHXzyg1mdiJmJYRz+AAAAABJRU5ErkJggg==`,sunflower_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAHFJREFUSIljYBgFo2AUjIKRDGRMGf5TwxwmXIaHhEuTZAkutVgtIBXgcxCGBciKiPEFzHBcAMUCdMVrVj5leHKagRGXAxgYGBienGZgXLPyKXEWwBTjchE5cYMRRIRchAvg0sOITRDZhchBhEt8FFAEAPyuLmpSKFsiAAAAAElFTkSuQmCC`,sunflower_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAKlJREFUSIntkdENwyAMRI+qW5A1sgkSMyKxCWvAHMmXI5ecSVH/Kt4XAdt3FwOLxeJP2XYc245jtofdv1hhiB4herPJ6mH1N4Fa4HJqADAlYnET0OTUUAvctyLM0FAAGMeX996QKcCGhOg/kkiNnEP0Q4OXAHPaD9fLl8E5NYxELgFZri7Wkfvly5u+Z7z1Ry1wGe0xNvvXjwn6JLNYPdSF3oN2at0vfuIEQtBnyE8BEcQAAAAASUVORK5CYII=`,sunflower_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAANFJREFUSIntUkEKwyAQHKW/0EM/4U8C+UYLeUY/EvAZOQT8hv6iYE+mG7ubWNqjA0Gi4+6Ms0BHR8cO1iH/u6amxYfRwDrk5/L+WkQ1861Dvj1MpuuRK44vOgCAGKD8nDCMZtsrrrgGHL/maulSKe7nhBigJBeUzwn6aEBRireGzwk6bADsw5fOa0H0XEtkThWdljIA9P05sGPKFbcOeVoNptXgescWbB2y2ICbCGpZCr8OucaF/sQA5ZFObZ9NFuugdvItpDusCpoDVSrtd/yEF231okoU8YDYAAAAAElFTkSuQmCC`,sunflower_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAPNJREFUSIntVDEOgzAMPBC/SIZ+IluXjt2R+EYr8Yx+BIm9YxcGJL4Bv0BKhyrEuE5CRUdOQkBy9p1jK8CBA3uRSYtzB+u+i7PM2covJPLruf6PiaT4OSVr4538HdrA3h7KagM7d/7ZEreZT0XcO1aVxOec1RGNA7K2mVBWalkrKxU8OonPuXkoyCVvmwnjEG4y5UuGvgQoXHIXkDpryVBUAPiUTF3RkXT73BDdT44pd3W5eq4Tj2ER4E55cm1g616h7hVOdyyN5U0OCkgTQZ2Hms+bzLG6KsYBWYspWXZqssQKeCW/IhQjuqB9oE5D6wd24Q0PlLoJNXPrzwAAAABJRU5ErkJggg==`,sunflower_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA40lEQVRIS81UwQkCQQzMVSFiURbhQxAswPPtWYAg3MMiLErEKpR5LOztTTYxsOh+j5vJZCbTSePXNcaX3xActut3qew83kPDzH4C+HDqJ/jPx0su15tESCYECRyA5dMIcrVsAKpgv9u4CHK1mkq6V48HTC1TGTLOC441/C9B7lMtYWEFicCKr2mylv0UBOs2zEPrj0PowFLOVQLkerlaSFMCTGHt2GrjqoJmBJ4IsmvHQKXpZhexFbHGBTjrIzWmUFFrUFQ6a91yreqhYcraDbDGZZ6FLhlAYQ+s2H37PazAS/QBL7jGGVi1//gAAAAASUVORK5CYIIA`,watermelon_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAW5JREFUSIntVbFuglAUPS81rTTwQpcmNowMGAddXDv1D/oVTv0WJ7/CP3By7SKDKQOjCUkXyYOITnTQ+/qA56MmDh08CQkh3HPuudzzAG7417h7uQeA0nSd3jkLpnv44D/iEO9KAOCTnpFAzBKqYYd4ZxawX5+QL7clAHjTvpawO7Dl/X6dy/vNxxdxsHy5bQpYIwfFKiv9xVgWiig1dk/ggSuF47dPWCOHFaus4aD0pv0K6fO7VyFSO1ah1vDAJTcMADoAYA0dFGEGEaXggdtKSKCuuwO74fr0HaWD0l+MG8SXjEgV3K9z6aJDL33PN62F9QYI1IiuISmgjqaOtlHpagWSqoBOXVdYdwPo3RMqDuo7rhM1NaLWUwAZ8JtcPukZR/UXiCiFmCWwhg4rwuzogCLOA7ex0wTdaHTbxgMXAgmKsBY0SrJ6RFy6psDxyDiXZCkCALpc1KHZ+wp5Q0AKHZN9ldPUiGv8D25oxQ++q8nB7rJdfQAAAABJRU5ErkJggg==`,watermelon_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAWNJREFUSIntkj9Lw0AYxp+T1jYxViPFYtFJFMSl3CBE3Lp0cHR0yGhAt34FwcGthawufgOHog5SLBWEIl0LBf+QgjS1rdUMVc7pwiVpqTg45Qc33MvzPs+9xwuEhISETISMKuqFJLI0hX2qMq4j0m1AI3J21J4cIDaVhzYzNIp8RsJ9s0+2NusejTwbQ6ljMQDYXVwh/bfPkSFT4iVLUygPbRaLR93aqlnB3YsDvZCEXkgiocooD21W6ljM0CgMjeLi9ZklVDkwVWAC5uyw0wcHZrXm1gyNwqzWkFtIEwDgxgCQz0gAAN6jOMvkqfWNbtEaH8Ab/PBQHggAneYSlLU5VzNo9BBRoqR98jg2AFeNdxxc15lY5y8WOT5veczFkG7Rcn0DW+T/x7g8jctey/0W8fUAAhMA8ARE/AH+TVjfjgN7Xo10M0MiHwN8bSiMmwqMXH0/7C9HzqmYP0z/xj/kH/kBY5CYjlZ/xP0AAAAASUVORK5CYII=`,watermelon_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAN9JREFUSIntVNsRgzAMU3odTKN4lIySUTwKm7gfJTkIsSHQz+qHOzvIL9nAH18YSajqwZFmWESkfUk2cgCVPG3sAIDXTIBSiomIqeow25FtBLfcNVtTVavVVBuArc0nrwRBNiMy8x6/PUcQIAFAKeVgG2E4A5JYlsX75zFauSICEbk8vFvBgnlEYmiIZOoOrvpyztGb0wBY9R4u4+32nfTf0771m/wEfXvaDm2NU6eiw9Qd22XiqeNq20JynEhTVS3nHAXZwW2Rpw6SIGndqag4tG32VKTqf4LT5fnjp/gAHB6L7zj2AgcAAAAASUVORK5CYII=`,wheat_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABIElEQVRIib1VuxGEIBBd6MAxsZwLDC3DMggtgzIMDSzHxLEDuQSY3XVB/Nxtgp/Hvo8gAImyRrvUuyul32hSRMAUOzZmHeXeRYJ+2JUHumWqAQDAj84a7fphV1fVEwJPAtbQ1KzR0A97TnGZW6TeWaPJGFyc4SXcgWSZajIpXAvwg5BAikEaq+k+FYzzRrqM8wbdp4oNcQQBj0ceUfxw1mgXANKkcd4Af2gJL+HwKorqE81J9qVucURwMgnCcg0rLRNRdHE3ImeNhkxEsffdiIrcEoKSSV7IpYh4JTcax53smYgX/6ZcUQ6TcysRqKZdyQN/z+2qpl3FiDhechBJEs1FJym3Tw6cIrdPT7RTt/87MlkpvBt/QfBK8zcreYp9ARnARYgSAH7PAAAAAElFTkSuQmCC`,wheat_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAf0lEQVRIiWNgGAWjABfYsIb1PzHqmMg1XEVZlihLiLLgynklolxLFrhyXun/hjWs/9EtoWkQUQUguxib65F9gM83WH1w5bzS/zt3H+O1JCDkNyPMcHwRTlQQ6RjeYyRGHUkA3cXIfHTXkhxE1ASjFhAE2FIHpcUC9VPcKBjcAAAkzD98KD5/RAAAAABJRU5ErkJggg==`,wheat_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAZElEQVRIiWNgGAWo4D+6ABM1Db8xA7slRLmEWEuIUjQjm+E/BZZQzSW0dcCNGQPnS9paOuDxR3WbkTMavoxCNYuxGj7g4UpzyweDD4choJqXsVU4/2dk47WEKpbjNHwgS9GBAQB1RDSsD2ft+gAAAABJRU5ErkJggg==`,tomato_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAPlJREFUSInlVbENgzAQPCJLVJ6ABtGlSpMJWIANskeKVBTZIxt4ASagSUUXpWECqkhIThHkfJwHbBAoUk5y43/u/t7mDfwdolRqn/zNkuTeAlMQuCT1VV4XjdP3Q9AduVlRKs0eifWirwINAFEqoe7NRyCLJQCY/SyWqAuT88XHnYEuE56cElOUyWuBcWML6C6RJaKgTnaHoxGyRaiAIR+DLX69nHtFJl/TIRGKVf8D5xaNYX97cy/uYPVRMbtNtD0A40CFYp6CBW5U6NNWIHu03mR29QB/BkFetV5OVChYcnaDQAPAkBsVCuSVibFcLvN87BWb/Sb8Np74sVisxYmO1AAAAABJRU5ErkJggg==`,tomato_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAGZJREFUSIljYBgFo2AUjHAQWqHxP7RC4z/VDLEpEv1vUyT6nxTDGYm1hIGBgeH5r7cMDAwMDJJswgwMDAwMqztuENTPRIwF2AwixnCSAXIQEQuI8gElYOhbgC2iKEvXRKbMUTCMAAAvbR7j6+Sr/gAAAABJRU5ErkJggg==`,tomato_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJFJREFUSIljYBgF5ILQCo3/oRUa/+lqiU2R6H+bIlEMSylyDLJmdAuIMZiRWEsYGBgYnv96y8DAwMAgySYMl1vdcQOvGURZALME2QJCBsMAE7EWEGsg2RaQaxlZFsAAMZFM0AJchsDEqBLJuFIRMUFFVBBhM4jcSMcLcOVkfICiSB4ZFmCLKEqLaOpH/igY3AAAKrlIKa6/Bn8AAAAASUVORK5CYII=`,tomato_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA1UlEQVRIS2NkoDFgpLH5DIPLAs8Ctf8gH2+fcItoh6EojC0zARsAA4u7zqDI47MAl164ASAFyAbCNCCL4bIAXS/IgTAxsAXYFMDEQTTMEmwW4NILCwWCYYnsE3QLCBkOsoSgBcg+efPrE9hhImx8YBo9jrAleaIsgFmCbAExhhPtA5jLYEEE8gFFFmBLQSBL8KUiXEGGEUTIEYduEbZIRjYYW6QTjANcqQiXL9EjmqAFwzMVkV3YEaobKC5Nh40FKHUCIV9hkUdJmUQlUzIsgWsZ+hYAAF7KnRnkpkjpAAAAAElFTkSuQmCC`,tomato_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABC0lEQVRIS2NkoDFgpLH5DPS3ILbM5D/IV4u7zmBY7lmgBpbbPuEWXofVLY373xS9CKwGrhAkeP/iNbjBIItAliArxmcBzGHojoNbADMQOU7QxdAtgFmOrg6ZD7YAm+HYNGPzATafgsyE6ScYychxgm4BNoehp0qCFsB8CKLf/PoE1i/Cxgem0eMIW5InaAFyUCFbgC2VkWUBsiZYEIF8gM0C5BQH04fVB7jyAq5kii/vYFiAHHEwjYr6WgygjINsASzfIKd7bJGOYgG6F9ENQbYAl6vRzSAYyYRSEaHCkigLYJagpyJskUpWPoBpIrawQ7aEaB+ANI1aAAs6cKVCAUAJdpLigBxLh74FACQg3hnrDTBLAAAAAElFTkSuQmCC`,tomato_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABGElEQVRIS2NkoDFgpLH5DPS3ILbM5D/IV4u7zmBY7lmgBpbbPuEWXofVLY373xS9CKwGrhAkeP/iNbjBIItAliArxmcBzGHojoNbADMQOU7QxdAtgFmOrg6ZD7YAm+EPrwf+l9dcz4gsh80HMHmYepgDYZYTjGTkOEG3AJvD0FMlQQtgPgTRb359AusXYeMD0+hxhC3JE7QAOZyRLcCWysiyAFkTLIhAPsBmAXKKg+nD6gNceQFXMsWXdzAsQI44mEZFfS0GUMZBtgCUamrmP4bHBa7UiGIBuhfRDUG2AJer0c0gGMmEUhGhwpIoC2CWoKcibJFKVj6AaSK2sEO2hGgfgDSNWgALOnClQgFACXaS4oAcS4e+BQAsoN4Zr8Q2BQAAAABJRU5ErkJgggAA`,tomato_growing6_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABIElEQVRIS2NkoDFgpLH5DMPQgtgyk/+gYFvcdQbDd54FamC57RNu4fV53dK4/03Ri8Bq4ApBgvcvXoMbDLIIZAmyYnwWwByG7ji4BTADkSMdXQzdApjl6OqQ+WALsBn+IsDjv8SGHYzIcth8AJOHqYc5EGY5wVSEHCfoFmBzGHqyJ2gBzIcg+s2vT2D9Imx8YBo9jrDlKYIWIIczsgXYUhlZFiBrggURyAfYLEBOcTB9WH2AKy/gSqb48g6GBcgRB9OoqK/FAMo4yBY8vB74v2b+Y3hc4EqNKBagexGU9ErV3sANQbYAl6vRzSAYyYRSEaHSmCgLYJagpyJskUpWPoBpIrawQ7aEaB+ANI1aAAs6cKVCAUAJdpLigBxLaW4BAFsM3RnfTMpLAAAAAElFTkSuQmCC`,tomato_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAV0lEQVRIiWNgGAWUgorEwP+UyNPfkorEwP/4NFDFxQNiOCmOGBQOoVpwMFHDEKoCXGFMlI/JDRaaGk4RoKmPKLGELuUTVQDZlpCT3anmI1wGDZ1wH3kAAGHuPqjrva2eAAAAAElFTkSuQmCC`,fertilizer_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAArElEQVRIiWNgGOqAEYf4f2qZh82C/0EzfMgyfV3GFgwzWQgoJhrgchROCxgYGBim5JoSZXjO5NM45fBagAyyd6AaMtWDOMuJtoAUQ5EBEymKs3ecxvAJITC4fEAOINoCclzPwEAgiPAlP4otIDc3E20BAwPxuRmfYwimov9nHfDKMxofwCtPdDI9f/YrCt/QmJsofURbQKyBJFtAKAgosoAaKYnmOZnmVebQBwBEGSTr3HTDzQAAAABJRU5ErkJggg==`,rainbow_fertilizer_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA9UlEQVRIidWVOwrCQBCGv4gIor0n0CaVSHqxyhG8gJV6ABsbG7uAj8LK1iNYib0Ee8+hWK5FDMlCspn4wvywZHYnmW9m2CFQdFkp5+pT8ZIASnl2YA0aAExqTQDmLILzaQWA6uwCwJYWAP0gXFrSGkARVCFeO1RoayqbSKuxk5UMAKPlKdVnBMQ13EdB1q4MDFASv/kMvHYdDZYlcQUQVfFXFeQCvCIxIN6WPC1K0m/mQHl27klOkvEWWfXD0wqfG81/j9J5DQCg/K7Rb3WORr94Ds7+Tdu3OzXRd2KANGBuQFYL3gKoaw/IvkUmfX2Sv/7LLL4egFJcIh1wkL8AAAAASUVORK5CYII=`,mulch_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAWBJREFUSInNlaFvwkAUh78tk7UkU03aNHU0QUyMhIoqUgECi5ucmJiYwC2ZRPAH4LCITRBURZd0ArGk+IoqEmw9U9dQ6O5asib7qff6cr/v3t01DxrWlaR2+Auv3wAH7f6WScfD1DUWyxXdOxegkJu6RpJmvH0HZF+7Ur9r2Zb6Xjs363vtszxJM0xdk7Z1I60C45EPwDrYnuWmrmFbhnS9tIPedIZtGflOxfGI3LYMetPZ5QAB6XttbMvg4f2jcDwqc1SXXEcXXfKxHLeF47ZqQSsDHLdFHO6Jw31tiBIgzIVOISqg9JmempdByurHavySlT8aQBzt8tjp1gMrAXG0K5gKmPh2Wq8FKFt8bEyFjv7HjzbpeMyHg9JYJSVgPhwQbUKSNDuLq6hSB68vj7nxeOTnsWoWKAGfz08slivWwZbxyC8dOKpOpK9IGAMkaUaSbgsDJ9qEgCsFND70G9cPCX+r1Lc361oAAAAASUVORK5CYII=`,rainbow_mulch_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQFJREFUSIljYBjqgBGP3H9qmMWEy3AeSwmGD1NdGf5+SWOY86eaofT3Dwaz6m8MHAwXGGbJfWUo/f2DYc6faoa/X9IYeCwlcDoIlwVUAwNrgcySywQN4HfdhFceVyT/h4Yr0eDL8RdYzSM6iPTsRBn07ERJspRoC/TsRBkuHXrNcOnQa5ItIWgBzHAYQLeEkIUspBiOzRJs8siA5pGM1wcwcOnYCzhbz4o0iwlacOnYCxRDYZbBxNDlSbIAm2ZkgxmI8NHgyGgTDiczZB56wKDldI/hz/EdDH1P7zJkHnpAlMUELfi42w+vxRRZ8CRGl6AB+BxA0AJqAJpbQPM6meYAAHXOYpMBqH4dAAAAAElFTkSuQmCC`,wood_chips_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAdtJREFUSIntlSFPw0AYhh8IgYTM7BRqycYys0wgMJAgqhrsJib4A/sBm5yH6WUJGoEAS2qoIAGDmFgwC4xkqqo1CwkzRXR3XK9lKwgSEj61fum9z3fPtSv8158sIUQohAiz3Lv+k/B20+ZwdzsTaOM7wQCDToNKubjo3nGwf0Tv0gkBfN9fM9clGsumLhVyTKYzAPXbtmqMn1+ZTGf0Lh1M0EpFQohw0GkAUCkXsa0aABfXN5QKORx3BIBt1Wg3bQadBrq2LwHS7+15m8l0RqmQo3vax3FHlAo5ACbTGQ+Pd1TKRdVvnV2tViSECA93tzmpH6vJu6d9DvaPsK2aCpPgi+sbeRZY1S3cp3elKQGQSqTrh8foIM2pAU7qx1TKRcbPr7TOrrCqWwAxwIYZ3m7ascODKFzuItrVZ89xR2pyADbzgJdUJIQI5fZYPI76tFKPVCV3d//yFoVv5qOgeZCuSAJkmSDdOaAOU4XPg9jaVEX6FBImg/T3IKFEC1+pyASZO4pNrd+zuHaH3pIXTV80D6LrRU/CY0r08HmQCI8p8n1/zR0SWns7cYgOxktV4g49lYFRsTOQEIBUUAYlSwH6FKkgXaXxOGYGLAd5K5WYlenvGu17kDX41+oDGp4mCPU5SPMAAAAASUVORK5CYII=`,scarecrow_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA4UlEQVRIieWUvQ3CMBCF3yHEIEhsEadKQUHLEkgpvECWyBi0FBRUeIV0bEJjChzkOP45WyBF4kmWT9a9+86OY2Bh0mawRTnFn9d3sNnzvVzAp/goLmTFBBQr1EHWOcfqhXZA1oC+HDHOduzL5QK+JjbA6ngSp8S+RW5ROpxZ/qz/oMTLPSJd9wqDBAYJ1L3yAYsBepDzRbOWhKQAnC6jOeuAgez5tFW47QQaKACwYgE3F8638e3Am9g8lDeOeUIAuxsAoHsrZklmjQKeCZmromuapa6C7qq8h3A5b9H/An6uF4WMRHW3ug60AAAAAElFTkSuQmCC`,sprinkler_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlklEQVRIie1VQQqAMAzLxO/5AP+y4/7iA3zgPDikbG1XrYKIAWFsWRLSgcCPNyOXz8UL0qWUEgAgxujiDb14RYBLeIhrkJI1AlVC7cxsIAnBKm4xaEwoeuKAYQZenKqIg6eipv913tfTYp+DVBE7XAq6pzzl/gyUdIEzbkjKWa44mVZE9zWt8aK5mff4M/0Nbof1J/QhbIFgQxZVKNMbAAAAAElFTkSuQmCC`,lightning_rod_basic_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAIdJREFUSIntlUEOwCAIBNd+Ex+CL6i/ppfSaKOi1UMP7pHAzoYYAX4i+Tp49Jh7ohpELHgNYCUWABKYEZh7+vPhwCyvdOKJJDEu9RTlGhAAwBnjUyzUavMmAJpMTVW3uWk8omw1o/vueUVuJnEPYEobsAEbsAELAXo20TifRY38kqnp0nswpQtltzTIu+xVhgAAAABJRU5ErkJggg==`,lightning_rod_superior_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAIZJREFUSIntlTEOwCAMA03/x+MYeIkfmC6lolUgoTB0wGOU+KwIEeAnkq+Dh8c8p9SCiAVvAazEAkBIgqSn/zlMUl7pJKcklbHWoyp0IACAGONdVGqteROAkqyYFl3mpvGIHqsZ3bfnFYWZxB7AlDZgAzZgAxYCytlE53yqGvkla9Ol92BKJ/RIO3xwMn1QAAAAAElFTkSuQmCC`,lightning_rod_ultimate_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAItJREFUSIntlbENwCAMBE3GQkLZly1oMgW7fApEAglgEyhS8KXl/7MshIl+Inw1bpJwb00NAg5eA3ATg4gApwlOS/pzM5zGYzp4a5AEl3qKUg1IaNiPu/iu1fwsgOJkMfQyhHA2uEfZanr3LXlFamRiCWBIC7AAC7AAEwHxbFLjfBbV80umoVPvwZBOeOk68oFQoKYAAAAASUVORK5CYII=`,cow_feed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABaUlEQVRIie1VO46DMBAdom18idRQEMk3oKfbK1ClQZyFxhXHoPcNkOKCPpdw6S3Qc8aOnZBNmpV2GpBt3m8YIPqvT9U6Sfeb5w57gM/fpSMiUkPpXiV6SqCNpb4VRETU1CIgfptgnaRrakHjbImI/FUNm6M9JFmCdZJOGxuswQlKG/uUJEmwTtKNs/WR9O3NhTbbOt+Ho90EyH2cLcEF1F+uNzcg5b2Jq8g5SJFyIO6kbwVV3ZLEunOA7Hn+2livHHsgOx3zou4IkGVTCw+ArHlETS28AP6WpUi+uHK+Mc6WTsctayjOzQRcgIhXwcEBmmsaokKDc2d5PzxB3EQA8BjiOYjJ4RI4VbcUBw6ujfU2+1YEvQA4sscV5y9XCmbDO1BD6WA7pQjKeTzxmUf3QQ/imF5Z4875Od8M/hal1OaaytdTLoLpU0PpUtOaUl91S/HoQ5ebbO8kfnidpMMPJ/dxU0OZ3fu79QOnNyLrGvOANgAAAABJRU5ErkJggg==`,hugging_machine_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAgUlEQVRYhe2W0QrAIAhFbexT/Sz/tb2skKYPw+kGuwd6CemeJEgiAP5Oc/Z7VZ4l0Jk5JV1ELpmrwAw/ix9jOXfmblaxLlLdaJE970KmQCUQgAAEIAABCLz+HWuBzswkIpQ5kIyMkb17hVWYb8AYLqLL7eqnHqE1CXtT810yzwYxDkKWK8nSGBQGAAAAAElFTkSuQmCC`,milk_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlElEQVRIie2UwRGAMAgEL45F2IIV0IB2bQNUoCXYBf70YYBkIuND+cLckoMABEcqqJEWDQ8gzGwWEJGp0zmA5gi3qC/pQiTPSMnv71WLBNC7PwWuV2S1NIB4wgrophdukTrkeQsGAMAylmwxMK26ne6aCg9mPtFu5sNn8AM+AHDX1FvDJoD1gUoj/Ni557qGUVn/TByjTiCJ3SiEogAAAABJRU5ErkJggg==`,milk_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAt0lEQVRIicWUwREDIQhFv5ktwhZSAQ0kHVimJaQBKkhKsAty2s0hKrCGyT8q8x8CAgQrGWJkxUMDCDNPA4ho6nNRAMsKL9FmyUKkz0hJz++vJRJgnP1h8HlF12sEEM14APryCy/RsMn3VzAAAB5XyxQDt+e4nOqYCufpfaI2vQ/vgQtQqaEqGZ8GVGoonFE4uyAmwG6+ywMxAUqn0b2z04AVqWOqjeESYPaBrApfduq69jCc8b/RG+oJMonZquS9AAAAAElFTkSuQmCC`,milk_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAwUlEQVRIicWUwRECMQhFfxwryCktWAENaNc2QAVaQk5pAS9GHU0CbDYjp50J8x98WIDFEQw5MqOhAYSZhwlENNQ5KIDpWG7R0VKFSJsRgl7fXy0SoF/9S+DdRVOrBxBNuAP60VtuUXfIl/tiAABcT5YtBs63vp3qmgqn4XugPHx3zaBQRlEENwMKZUROiJxcEBOgitcOPBDTqaiC8TmPz28tXB18A3cDtKq1dqBapK3hFGD0A1lj+bFTz7WH4czfJx6xwUOYVCI2qwAAAABJRU5ErkJggg==`,rainbow_milk_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3UlEQVRIie2UQQrCMBBFX0WE4gH0AtKFB8i+p/AC0ivUhW7cuBM8hVfJEfQEHqBQXI2LgCg2k5ZYCuKHbDKT/yeTn4GekbTIkRiOkIBYa9UEY4zKMwoIRKP3FrW6gVQ5pRSUUoDc3dqGdDsIxEATEECkyv0Z7haC0saxj1yOy3B5QMoFgJpMaHiPwVwk56B53rFyVB98vha9HgpCK0YVABA7V+OJuanxQW36F/gRgaBNQzaMEuj6m5vgHRXPYbeeAbCZLgA4cHL7uwkA6f4KQE3WyKfNgq7lt5sr38YDiBMyusgc/RoAAAAASUVORK5CYII=`,rainbow_milk_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABAElEQVRIicWUsY0CMRBFHwidhCiAbeBEQAHOqWEDGjhtC1zAJZeQIVEFwTbiEqCCLQAJXTQEq0WH8M7YGMSXnNiz/43HswMv1iAiRnI8LIB479UA55zqMzQA2Xp5iaJuIKcFK6lYSQXy1661xU0A5EgDCCByWvRHtLcQlDKO+sxlO7fTA8YcADgzEwLv8bYukr3ZPLdatlZ3fn0l+v+RKS0ZFQAgvlDPB65Rz9/apneqXUNtZPwwoHYNpS8ofZEEiQJ05p1SIFGAMvDQob2HATky29RqwyxA6t8cUu+ouA67rykA35NPADbs2v2fDwDGv0cAzsyCftosSE0/bq48WxfOzkS6fPRuuQAAAABJRU5ErkJggg==`,rainbow_milk_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABB0lEQVRIicWUOwrCQBCGP0UEsUtjLiAWHmB7T+EFxCtooY2NneApvMoeQU+QKpUgVmMRFR/JzK5R/CEQdjf/N4/NwI/VCDgjdTwsgHjv1QPOOdWnaQBq6+clCspAjiNmMmUmU5Bz8SwsbgSgjjSAACLHUfWJIgtBKWOrylw2Qzs8oMMegBMDoaQff7tFsjMvz7PGhdWbX1WJHj8ypQWjAgDEp+p+w2XqflQPcpeRG4YfA3KXkfiUxKdRkCDAzfyWQQzE7AFwN0yu/Xh8txSVwSvwa4CyaEMzMEtkXcNagNi/uUyVo+I+7CY9AObdPgBrtsX6sg1AZ3UA4MSg1E+bBbHhh82Vb+sCloZVyeeaHwgAAAAASUVORK5CYII=`,chocolate_milk_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAo0lEQVRIiWNgoDFgJELNf0rMIGTB/5MnT+JVYG5ujtccJgIWUAxoHkQsxLhiS7wGVnGfhTcI6h3QIPrPwIDb9TCA5AusZuGy4D8hg3FYhGEezYMIZyRP/XGdRKOwBwbeVLR9JTGpmIHBMxx3SiaYTP+flMArz2j+Aq88zeNg1IIRYAHBZEooGVJkAb4MRLEF2RyaJBm0HYc4weKaBEBcuUJtAAAZkx6s4XKlkgAAAABJRU5ErkJggg==`,weed_yellow_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJVJREFUSIljYBgFAw0YiVX44aHBfxhbQP4C0fqYSHHNyTM/SFFOugXmJhwkW4ABPjw0+A/D6HLSSboYYoQAVh9gCwpshuNzDF4LsAXF03mX4RErnaT7H2YhOfECB+iuRjaYgYE4H5BkCTlxQJIl6D6guiU0MxzZElL1EMxouAylqm+Q44BUw4kutJANRc4To2AU0B4AAKGOTyVh8wmJAAAAAElFTkSuQmCC`,weed_orange_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAKRJREFUSIljYBgFAw0YiVX4YZ3BfxhbIOgC0fqYSHHNyf8/SFFOugXmjBwkW0ASkE7S/U9YFSpgocRwYuIFpwXomp/Ou8wIswTZspP/f+ANOrxxgC1SpZN0/z+dd5nx6bzLjAwMhOMFbxDBNMMMZWBgYIDRDAykJVe8ADloyIlooi2hmeHIlpCqh2BGw2UoVX2DnjxJMZzoVIBsKHJKGgWjgPYAAKhMQnagnSlUAAAAAElFTkSuQmCC`,weed_pink_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJNJREFUSIljYBgFAw0YiVV4w+DDfxhb44IA0fqYSHHNw1oLUpQzMDDQwQdYDYJhdDnpJF0MMUIAaxBhCwpshuNzDF4L5JtPYIg9nXcZa7CQEy9wgO5qZL50ku5/YnxAkiUwNjlxQZQl0km6/6luOLIlNDMc2RJS9RDMybgMpapv0COXFMOJzvLIhuLKE6NgFNAGAACdX07JsB31AgAAAABJRU5ErkJggg==`,inventory_box_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAZElEQVRIiWNgGAUEACMeuf/UMAuXBf8v9/GTZLpu0Ues5mGzgGTD8VmCbgHZhuOyBNkCig3HZgnMAlIjlFjAyAJj/TsUQlWTmezWQGiqmorNolELRi0YtWAYWEDzwo5G5tIRAAC2nxYih/81pwAAAABJRU5ErkJggg==`,scarecrow_animated_default=``+new URL(`scarecrow-animated-Bwzq1lj5.gif`,import.meta.url).href,tumbleweed_default=``+new URL(`tumbleweed-bTBlbTRd.gif`,import.meta.url).href,axe_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMhJREFUSIljZCATKCsp/Iex7957wIhLHU4JQgY3NDYzXLt6lYGBgYFh1aoVOC1hIdVwmMEwwwkBon2AbDg2gMsXTMRaQAiEhUWgxAvJFty994Cxob6WGKUolpDkg7v3HjCuWrWCYdWqFQy3r1/HJs8wL0sdxRKSIpkBNUn+P3/5IoOhrj6DqqYmQ3tHB8O8LHWGV6/fkmokfgAN9//zstT/d4SK/GdgYPiPLS4oARiGU9MCFMOpZeio4aOGjxo+ajgtDYdbQk3DAf7opSv4aVYzAAAAAElFTkSuQmCC`,axe_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMBJREFUSIljZCATKCsp/Iex7957wIhLHQu5Bl+u02b49O4VAwMDA4P1FIb/uCwhyQJlJYX/MINhhhMCOL2Gz3BswHrKa6xBxUSsBYTA0RxRlHgh2YK79x4w6jZdJUYpiiUk+eDuvQeM1lNeM1hPec1w5M4nbPIM87LUMSwhCygrKfxXVlL4vyZL/f+LPtP/DAwM/+dlqf/vCBX5TxULkC1CNxxbXFACMAynpgW0CZZRw0cNHzV81HAaGg63hJqGAwAUOabJn4ZdhgAAAABJRU5ErkJggg==`,axe_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALlJREFUSIljZCATKCsp/Iex7957wIhLHU4JQgY3NDYzfPjwgYGBgYFhQn8vTktYSDUcZjDMcEKAaB8gG44N4PIFE7EWEAIFhcUo8UKyBXfvPWBsqK8lRimKJWRHsqGuPoO9iwuKXG5uLsO8LHWGpGk34WaTFMkMqEny//nLF+EWwQx/9fotqUbiB1Af/Z+Xpf6/I1TkPwMDw39scUEJwDCcmhagGE4tQ0cNHzV81PBRw2lpONwSahoOALJMnzT9kEEcAAAAAElFTkSuQmCC`,axe_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALlJREFUSIljZCATKCsp/Iex7957wIhLHU4JQgYvn7+Q4eWnTwwMDAwMBfm5OC1hIdVwmMEwwwkBon2AbDg2gMsXTMRaQAhMmDgZJV5ItuDuvQeMkYnxxChFsYQkH9y994CxID+XoSA/l+HWtWvY5BnmZaljWEIWUFZS+K+spPC/t7Pz/+bNm/8zMDD8n5el/r8jVOQ/VSxAtgjdcGxxQQnAMJyaFtAmWEYNHzV81PBRw2loONwSahoOADMdpw7laSIwAAAAAElFTkSuQmCC`,axe_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMJJREFUSIljZCATKCsp/Iex7957wIhLHQu5Bt9YF8LA8vEYAwMDA4NKIsN/XJaQZIGyksJ/uMFQwwkBnF7DazgWoJL4DGtQMRFrASFwZ74USryQbMHdew8YNYLWEKMUxRKSfHD33gNGlcRnDCqJzxhuXMIMqrv3HjDMy1LHsIQsoKyk8F9ZSeH/9ckM//8ftPrPwMDwf16W+v+OUJH/VLEA2SJ0w7HFBSUAw3BqWkCbYBk1fNTwUcNHDaeh4XBLqGk4AGtcorcNDPQ+AAAAAElFTkSuQmCC`,hoe_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAuklEQVRIic2UwQ3DIAxFPx2ALNSJOPRMJmjOnal7pReIHGMIGFfKl5CsyP/9YBDAjbWnxeuTHhNwl+s1RoQQ8vfpAArHGiMAYPFebB4NKP6cStqFdkSiFu+LkJkA9942MYRqNMChcluo0uj2bNCoeRZpZw5Q3qLv6wgB2Kgo/FQMwvH8FP4jkBpGAlrwqnoDVPDeRjW8p3kKfmWYhrdMJvCa0QwumU3hHGAOp5C/wAH2FlnDuS6f4VvqB7TESLgVFsd2AAAAAElFTkSuQmCC`,hoe_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAxUlEQVRIic2Uuw3DMAxETxnAdQYwkAncaaIUKTKIi8yRMdJlEW/hNJJBUx9LJAP4AAGEwXtnUYKAE2sNi9c7XRRwF+tlnvC+3+J3dQCFY5knAIAfh2xzb0Dy51S5XUhHlJUfhyREE+Cuz282hKo3wKFwW6jC6NZokKh6FmFnDhDeos9jCwHYqCh8V3TC4V+Jfwukhp6AGryo1gARvLVRDG9pVsGPDGp4zWQCLxnN4DmzKZwDzOEU8hc4wN4iazjX4TN8Sv0AN2RJwOjZLUAAAAAASUVORK5CYII=`,hoe_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAtUlEQVRIic2Uyw3EIAxEhy3DtaQl9k4bcUvpK3uByDGfgGGljIRkRZ43wSCAF+uMS9c3fSbgLtXMjBBC+j4dIOFgZgAAERWbRwOyP5cq7cI6oqKIKAuZCXDe+2KI1GiAQ+W2SMXRnclgUfMs4s4cYLxFx/cKAdSoJPxWDMKx7Zn/CpSGkYAWvKreABO8t9EM72megj8ZpuEt0xJ4zbgMXjIvhWvAcriE/AUOqLdoNVzr8Rl+pX42rEn4TvbkRQAAAABJRU5ErkJggg==`,hoe_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAt0lEQVRIic2U/QnEIAzFnzdIJukKrnLDFJwkK3Sv3j9aUr+qMQd9IISS93s1isCLdcaV1zd9FuAu1cyMEEL6vhwg4WBmAAARVZtnA4o/l6rtQjuiqoioCFkJcN77aojUbIBD47ZIxdGdyaBR9yzizhygvEXH9woBslFJ+K2YhGPbC/8VKA0zAT14U6MBKvhooxo+0rwEfzIsw3smE3jLaAavmU3hOcAcLiF/gQPZW2QNz/X4DL9SP/ScS3hB0In3AAAAAElFTkSuQmCC`,hoe_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAvUlEQVRIic2UUQrDIBBE35Ycpl89QCnkRj1Me6JCyRV6HPvRROKqia4WMiCIum+cTRAOLDcPPQ90aoDLMnevK5+nXw8kesEC97Bxipi1CbJwIJnC2qKkzpe4VbUtWieARAoIW1WbQMj8LcEtfqbOuxi0+S1aEgC4992bAMgMjOAAgxGuJTJO3jDYsMBvj/LaUgMTvPSgGV5yuAm+V9AM3yrqAs8VdoOnirvCNaA7fA35CxzUW9QbrrX7DB9SX0XaUBQX3euqAAAAAElFTkSuQmCC`,scythe_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAxElEQVRIS+2V2w3DIAxFnb06S9QF6DBlgSqz9C/qTES2SoQcbjCPfFQq3+QcfGU7E118pov59BdwwoEIJ9EbUbjPM72WhUVZVo8geO+lRz7rCiWtgvB+EN2eRCVJi0DgfFjAJ0qcc4eoagUaHr+XuHJR1QgQXDoJVWEVnMHjMhCJjskisMBhFSWBFQ6rOBPUwvcq0piQoAW+V5FOdU7QAz9sfy0YCtdTNxyeFXzHv9Rd5h9hCuK9DteumaguDnspesDvCzbc3VkZpaP6uQAAAABJRU5ErkJgggAA`,scythe_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DKMWMBhriPw/e+MNzpCgKIhAhrd6ijNUb3/JgMsSsi0AGb41TRGcRi48/obTEnIt+H8kj4Ehf5cIAyFLyLEAbDgI2ExiAMUB3BLvWfcxgopUC1AMZ2CAJHNYcGELKlIswGo4sgUgNroviLUAp+GwkgDmC3IsIGg4Pl8Q8gFRhuPzBT4LSDIc2RfIwYTLApINR/YFcq7GZgHZhmMr+tEtoKrhIAuRLaC64VgtAGV/NIspqvRQfAA1iVDSJclCqhpGTCST5DpiFNPcBwAgan0Z4Vp7jQAAAABJRU5ErkJgggAA`,scythe_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2klEQVRIS2NkoDFgpLH5DKMWMORlRP2fNGMZzpCgKIhAhqsqyzHcvvuIAZclZFsAMtzY1AqcRj69e4LTEnIt+H8kj4Fh1a8oBkKWkGMB2HAQsJnEAIoDuCVnTx/DCCpSLUAxnIEBksxhwYUtqEixAKvhyBaA2Oi+INYCnIbDSgKYL8ixgKDh+HxByAdEGY7PF/gsIMlwZF8gBxMuC0g2HNkXyLkamwVkG46t6Ee3gKqGgyxEtoDqhmO1AJT90SymqNJD8QHUJEJJlyQLqWoYMZFMkuuIUUxzHwAAb2p9GTK1pfkAAAAASUVORK5CYIIA`,scythe_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAz0lEQVRIS+2VuxHDIBBEV305oAyqcKQyiDwugjIIHFKJm5DnZOM5YX6HIDORAs172uVACyavZTIffwG01pu1NtvEqYoIrpSCcw45SbeA4Ou67jPivc9KegXb4wrcnxo1SY9gh9O63EB78JUYY36qkgoOcOA95qGuVFUSQRLOBfQcp2gVZOHhJggpegRVeClFLUETvJSiJBDBeQpeU04ghvMU/FSnBN3w1NUfC4bCScgFw+FJAR3/SHzqp3dI8CHVRlckHApr2WTR17W8PD3BC4S6fRnQ192VAAAAAElFTkSuQmCC`,scythe_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DKMWMDQW2/2v7z2EMyQoCiKQ4YZa/Aznr31kwGUJ2RaADC9MVAGnkQMnX+O0hFwL/h/JY2DYy2rHQMgSciwAGw4CNpMYQHEAt6R//h2MoCLVAhTDGRggyRwWXNiCihQLsBqObAGIje4LYi3AaTisJID5ghwLCBqOzxeEfECU4fh8gc8CkgxH9gVyMOGygGTDkX2BnKuxWUC24diKfnQLqGo4yEJkC6huOFYLQNkfzWKKKj0UH0BNIpR0SbKQqoYRE8kkuY4YxTT3AQBP8HwZfM9pkQAAAABJRU5ErkJgggAA`,shovel_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALJJREFUSInV1cENgzAMBdDfqovQOToT5zBBOXeL7MEcMIp7akWM3Vi2OdRHK37fKAKAk+uS5JDmRgMIAKZSmuZznr/2LYJzeN023Ieh6V0zcak8ASrOt/cGmHHAf8k0lSLi+wsGAk/Q2zwSQMsI1FoPON/eE0DLeABVXGxY8Mermf28xaJlDdDwblkOunHL4RDeGwjjv4ZScG0wDZeGU3EOpON75BQcYJ+KbJwX/3H/R70B5PVOSsiwgM8AAAAASUVORK5CYII=`,shovel_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6klEQVRIS7WVoQ7CMBCGbxa9BIXAVZLsIQjhPfBYPBrPexDCQ5Ag5xDYaWzJLbnmVjp69G7Vzfe1/+3vKph4VRb8xtWec+5tF7gqAYEvu+XgnNvzE0hSLEB4DH683rBazEAtGIPjNdSCHBwlqhvEAoyFTk6DUAkQQpIcHPeWDtk3robjZt5nzhc/fanA3/auZx6uHfAvKYaXCAJ8fWoxqiBIwf8VDOAUL5WNt5dHJp1BEi55ZiSCYrgkIhU8J1DDfwlM4GMCM3hKYAqPBeZwLpgE/iXA+isewGTveNHwxy0pnqTAYY85MLZ/AKAsiRkhT8wtAAAAAElFTkSuQmCC`,shovel_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA7UlEQVRIS2NkoDFgpIb5eRlR/5HNmTRjGdxciiyAGWxsaoXizrOnjzHALCHbApDh6AZ/eveEgU9IhoFiC3AZDvIGxRYQMhxkCUU+QLcAFCwwl8MigiILQIbALCFkOEgtuZH8Py8jikFVWQ4c5sgA2fXkWvB/Z6EG2Myt340YkFMSuuHkWAA33L3/Biio4BZgM5xUC1AMhwUvLLMh517kICM2DrAaTkwxQ4wFZBtOTBBRZDghCyg2HJ8FVDEclwVUMxybBVQ1HN0CqhuObAFNDMewAJT9KSgAseY75IwGqriJyXjEZGC4GqobiG47AJ1ZiBlTJ5acAAAAAElFTkSuQmCC`,shovel_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4ElEQVRIS7WVwQ3DIAxFnW167IEBuHUF1qjEGEgdoVdW6A4M0A06BpUjGTmUFIIdzug9+M4nC5y8Fg2+cy5zToyxcEUCAnvvN+cMIQBJpgUIr8EpJTDGgFiwB8driAU9OEpEN6gFGAudnAYhEiCEJD047p0dcnbOgbV2zZwvfvpZQX7dLyvz+bkC/5Jq+IygwG+PN0ZVBC34UcEGTvFS2Xh7eWSjM2jCR56ZEcE0fCQiEbwnEMP/CVTgewI1eEugCq8F6nAuOAX+I8D6Cx7AZu940fDHPVK8kQKXPerA2v4F7oGIGVytZc4AAAAASUVORK5CYIIA`,shovel_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA7ElEQVRIS7WVsQ3CMBBFLyxABRNQIDoquoiOORghygAoA6CMwBx0iAo2oGADhnB0kc66GAcfvotr6z37X75TwMSrsOA3dek453S+e65KQODquBqcs728gSTZAoSH4NvzA/vdAtSCMTheQy1IwVGiukEowFjo5DQIlQAhJEnBcW/ukF1Tl7DdzPvM+eKnzxW4a7XumY/ZEviXFMJzBB5+aF8YlRfE4P8KBnCKl8rG28sjk84gCpc8MxJBNlwSkQqeEqjhvwQm8DGBGTwmMIWHAnM4F0wC/xJg/RUPYLR3vGj445YUT1Jgv8ccGNo7Yi6HGb8waRoAAAAASUVORK5CYIIA`,picker_pole_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMNJREFUSInt07ENwjAQBdAfhNJdmwVc0KbKAl6EiiL70LigzRRZ4FfeJQMcDY4CmCDsuIjEl2I5zTvd2QZ2EH180RxycZIgid6YaJFjLg4A3lq0GdAnXEmqE1GSCgBO5K2LrBF5a9GOIwJ+mabKiehyXCkFlOQTHvahk/MwIBx8Ugcx/HWf0wF806ziXdcBQDUvCVEn8hVPjd76kwLQ3pjlLVp9cD/j4X8rOIZvmrL4ta53iu935v8DjeIlxzIXKYkXyx3NFIrQtrXu7gAAAABJRU5ErkJggg==`,picker_pole_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMVJREFUSInt07ENgzAQBdBPFNFdywJegCYs4EVSpWCYdGm8AFOwwK8YIz0DXJoYEeIQxcYFUr6EZZp3urMN7CD6/II5pOIkQRKtMcEix1QcAAZrUSdAn3AlqU5ESSoAOJG3LpJGNFiLuu/h8cs4Fk5E5+OKKaAkX3C/952cuw7+4KM6COHLfUoHGKpqFW+aBgCKaYmIOpGveGz0fj0pAG2Nmd+i1Qf3M+7/t4JD+KbJi9/Kcqf4fmf+P9AgnnMsU5GceLY8ANzvjrB3K5O7AAAAAElFTkSuQmCC`,picker_pole_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMJJREFUSInt07ENgzAQBdBPFNFdywJegIoFvEiqFKyD0ngBpmCBX7ELA1yaGJHEIYqNC0v5EpZp3unONlBA9PEFc0rFSYIkemOCRc6pOADM1qJNgD7hSlKdiJJUAHAib10kjWi2Fu00wePXZamciG7HFVNAST7hfu87uYwj/MFHdRDCX/cpHWBuml286zoAqNYlIupEvuKx0WEYFID2xmxv0e6D+xn3/0fBIfzQ5MVvdV0oXu7M/wcaxHOOZS2SE8+WO1CxjyD9waCMAAAAAElFTkSuQmCC`,picker_pole_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMNJREFUSInt07ENgzAQBdBPFNFdywJegIoFvEiqFOyTxgswADUL/IpdGODSxIgkDlFsXFjKl7BM8053toECoo8vmFMqThIk0RsTLHJOxQFgthZtAvQJV5LqRJSkAoATeesiaUSztWinCR6/LkvlRHQ7rpgCSvIJ93vfyWUY4A8+qoMQ/rpP6QBz0+ziXdcBQLUuEVEn8hWPjY7jqAC0N2Z7i3Yf3M+4/z8KDuGHJi9+q+tC8XJn/j/QIJ5zLGuRnHi23AFsB5Igc4ovIAAAAABJRU5ErkJggg==`,picker_pole_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMNJREFUSInt07ENwjAQBdAfhNJdmwW8QCoXtF6EiiL70HiBTJGC9lfZJQMcDY4CmCDsuIjEl2I5zTvd2QZ2EH180RxycZIgic6YaJFjLg4Ao3NoM6BPuJJUL6IkFQC8yFsXWSManUM7DAj4ZZoqL6LLcaUUUJJPeNiHTs59j3DwSR3E8Nd9TgcYm2YVt9YCQDUvCVEv8hVPjertpAC0M2Z5i1Yf3M94+N8KjuGbpix+reud4vud+f9Ao3jJscxFSuLFcgcutJEoVhTynQAAAABJRU5ErkJggg==`,watering_can_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA0klEQVRIie1UwRGEMAgkV8JVYAOWRjWUZgNWYAvxYzJkDwg697vbGWeMJLuyQIj+mKAEsZrc90igikhfMPNjkVdEfhHTta7G3inwr5C8WILOWROYQQGSASLSH0pmZFnUyQhqYcVnAqkiNxzLSu99G77NGiBsUy1yLGt/vyPiWoTQpFqMKLbLEzAtikQ8hHNgoYmgTVmBkBxFGpjZtSldAw+KXIt0IavyqSwaOcG0Y+zWHDjkH2d0zLMovDKivsfY7MJyU/f2YyxzI5qpfxtDZ/wWThNOcCnuawEeAAAAAElFTkSuQmCC`,applewood_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAP9JREFUSIntkzEOgkAQRT+JV1ALiYnG2FsQ72BCZesNPIAdhR0H4CQk3oFQ0BMiicECOAQWZCfLLCAghQW/2iW778+fYYFJk36VNgbENPRC3rt+QtzZGND5cgEA2K5X4lMhTHol4FAJWNHz9UaeZnD9ROuUQIDboAIMlEnyNAPQ0iK52qNxaITJqjMnAz4oDuXALknIwDT04n67Vg5ZtkPD+wbk0MYWhVEMANjvNq3QtvZ4fkADBgBNVB9GMYHF2rIdahWvUJbnB7SW34CSQIaLNPKf0RWqGHBoXfQ+0IpBefBRXM4npUUc3BWqJABQScDhQ8BCdJG/A2BYxZP+Tx/oyoY1054VqwAAAABJRU5ErkJggg==`,coal_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAThJREFUSIntlK9zg0AQhb/WrEecw8cwCE4wmHj+zriaKDyGqSAiLh53vuJiiOjsFQYSYCJqeIqf39t9t3ew67/18ca//RrWVoMAPRwOOOcwxiAiXK/XWd4Wgz6KIowxWGtp2xYRoes6AOI4njVZa9CnaYr3PjxwzgWw9x7n3KzJ59rKFSIiIRqFiwjGmFEBaw36NE0xxuCcoyxLvPfhPkkSRIQ8y0ZdDbUUUchdAXp9LAq+LxfyLKNumvDudruNuK86CNVrLHEccywKRIS6acizjJ/7PcCttZs66IejeCwK6qYBCLF8nc/A30IDkw5eGkRRRFmWYSSTJKGqqvDBEGyt5XQ6TZiLHcB08XQddD88y3/JYGSiMPiNSMdWs5+rfo0BDI4H3Ww6shrds2NircGs2ZucXbs26AE1fqYGir1jrgAAAABJRU5ErkJggg==`,stone_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA8ElEQVRIidWVwRnDIAhGSb9ukyUYwxFcIqcs4Tgu4Tz2In6EIGjaS/+zvgeGKMC/Z1tcX1cZnuACTCndFsQYTdZIUEdAnpwzIKIp0gR1BgwAHc7TRJ371uC8slmw5JCEd3CpXMJGUlnAvu9wHEdnUwe3Y+HgmaoJLvPyNiEiIGIXrcBdAQ9JpMiCmwLtzGU3I/h5ngBt1Kc7kCKCl1LMtY8EPJ5EFXgj6Z27K1iN1QX9B1uMsYYQTBB93NnqueC2UZt7C0xdyDXyLjJhGkALvyrkbVrbDA/jSThcE3wlkfCR4JFEg1sCAP39tbL6vv8mH84SiYSmpt3xAAAAAElFTkSuQmCC`,salt_rock_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABB0lEQVRIS+2VMQ6DMAxFzUm6s1XiCsz0OpyA65SZKyCxsfckqRzJlXE+sauKrVkq1OQ/5zmBhi4ezcX59Ae4hr9RlExaaG1oEhGltK6H/Kbr+Nld707g8Oc00dD3hY4IxAPkyudlOQD4mQdDPUgNcNAiEAvLniq6zgCFc121dfUzAFUdhaAd5KaK40g4z3mMIzxVECBHMhp+b1u6DUMIABt7dl25AA7f9j3/IojdAWyuvQPScA6VwRCkSQOKcFmsVUnVaFcIEgJwmK5alCCI1eQCkA4OPoPUALyuaLL2bCtGEA/wgdRca5CGRE6RrE2veXY/JlpV9B7oUPuB8YDwvea9rr1Q9/83lhuWGQG9q4IAAAAASUVORK5CYIIA`,bronze_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAYlJREFUSIntlDFPwkAYhh8bE2JhgM2pTCasEP0dMjKSsNCJRB0c3WAAYzccSBgZ+R+akjgRnCAOTopJIXFpHeAu17uCja68C+1x97xv7/vu4KCD/qujlPOivzJ+M4gAOt0e+VwWgGWwom6NABiGNW5vrvfy9hlEnW4vBhPPAN6iYixoPzwazF0GUafb4+ttJgdajh+bMLYbAFTXg1iA06unGNfal7zl+BRLZYqlsgEXYKG6NWIY1gyYbhC931/IRMOwJkEisfhV/xMSdVKlbpGEC6mJ9MXLYEU+l5Umak3UWhzrji8fJwD4+UsJrq4HeFOzqF8AzuariqXNWHU9oK3MiRmM7QbYMJ9OIJhJiEdFFlkvrnge2w2WwcrY9JjBfDoB4h2jF1TtGnXbxPnQu0hv06jf7xuFFQn15Hev5wAUMqEc089CUptKmP6uwr1FhUImpJAJaTk+n9+WcVaSvgC210PTdWPJ1MUiuXw/ewYwtmeXgTRquq4BSoJvwYm8VJddCqW9lQ8y9QNiZaVNTKTieAAAAABJRU5ErkJggg==`,bronze_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4ElEQVRIS2NkoDFgpLH5DKMWEAzh0SD6jxZGGCFCahChGFjnwsXgaakJtmP78esMTXu+gZgoZhKyAKeBuGLXsvksiiXYLIAbiuxCgskFSQGyJegW/CfXUGQHIAcXsgVgw0EAFq6kuBoWD5rS/AwKclIMMF+gWHC81hhs5oNHz8CKCAGQS0EGwgCyHrwW4LIEn4HojsFqAXr4k2IgMXEAUoMSyaQEFTQPINsDDn6syRTmE1wWIKUSDAPRgwpXRkPxCSkGEmsBOLgIlTOEUhmuICJGH9FqCJVFRBuES+HQtwAAGJ1YGe/MnNkAAAAASUVORK5CYIIA`,iron_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZZJREFUSIntlLFKA0EQhr+onHfYHCG6RXIKFj5AykCeSgufQCyUFNZWwSqQlwikkqusUgjxkmKjSBpJDISz2mF3cwlJJYJ/d8fONzP/zg7867dV2vF8vitz2wQ5QLfTBqDXTwFoNurOocFwwvXVpcM92Ab81H4kCgOB2+DZfAFApqeFgHUd5AAPrRvKFUWmp1ycnThwAzaJB8MJejxCVWtOF0Ud5N1Om8FwQrkSA3C0/02vn3J+eixwGwwI/OLsxIHtrYMnKpbWX9/eaTbqlCuK2XzB54cuhBfJTpA/tR8FHoUBnx9agk3VURhQrSVikR6PxDa/evHJrzwKA5kUVa3JP1u25z7cnibnDowtxu+v5eEKfDZfkOnpWrj/vWcHRmHAc/qyMt8+fJMGw4ncjZPABDYbdcajrLB6I7/6Xj8VsN/N2oeWqJhMT8U2uwgDNlLVmiT1k5gOStdXl1LF1/KwEK7HI2dqjCXmXKJiJwZWX7Iss9u7+0Jb7Or8NZGomOf0BYBWqwVQ2rTsttmcm7Trpv7XX9UPRxDlZCE0bRgAAAAASUVORK5CYII=`,iron_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAwklEQVRIiWNgGAWjYNADRgr1/ydkHqkWoBiYmxHNYGxqxcDAwMBw9vQxhskzlmKYScgCnAbiAgnJ2SjmYrMAbigxBhKyBN2C/+QaigyQg4sJ3XBVZXmyDf707inD2dPHUBzIgqwAOcKI8cWnd08Zbt99iKLfWEgaRQ0LuiaYQmyWEGMgOkCxANlQY1MrsgyEmQMDeCOZ2KBCilRkwIjhAwYGBsbJM5b+z2VgwGswPgOJEmTA4hNiDSRFEcFyZhQMDQAAaMBZ6FnVQEEAAAAASUVORK5CYII=`,silver_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQhJREFUSIntlD1uhDAQhb9EuUOK5BBbeGsoOARHoF8XOUIKp+cCvgWFqTNFbkQajIgZbHaVkichIWZ4PzOW4cSJE0cwzc9DeCqR930PQNd1R/o3eD7aKCLwQJqco2kmTUVimiMc+QSpAIAxBhGhbVs+3RcUEhVHpImsv5VE9gSW5UbH6/cQAhdzBaCpq6zBbAJjzK7zSD6EMZviJUeeEoYQALiYa9F5hHYCJhHBObcp7I1lCCMAH/a24UwFpjnuQhJ/buoK5xzWWtXpEEZVQN2BRg5grcV7v9RiPULbhTqidYpUBMB7z+vb+5+epq7iociOKCuyxo98LzsBff45Abj/Br37IvwX/AKZJHqzxczScgAAAABJRU5ErkJggg==`,silver_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAs0lEQVRIie2Uyw3DIBBEJ1HOThFTgSN6oUY3E1ewRZgGnEuIWAPmk0si8SQuCN7sAgIYDH6ey5f795KvNUAJl2UBSQCAiMBaGzlLAVlhDmOM8qYCPtIaYSnkGLD3SkPC47oe5Y957hbfpwkiogoMA0ASm3MQkSahH5tzUfe31EaSUSVe+FxXta50nCoglJLsEnqP5/SSU13khO9LDUm+IhWSCzgTVk0i0UmtsGVR8Z8Z/AcvcvFbDaU3IKgAAAAASUVORK5CYII=`,gold_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAXZJREFUSIntlC1vwkAYx38s+wALroIvQBAVbfAkJJVIbB0OAQLRTE1MbAIz2+BQaBIS0hAMLwJBENgKXFNXycS45ijXg5GphX/SNL3r83+5J/fAAw/8CxxPz114uka8n7k0m827hQp55MnWIYwMprsqALXygumuSqvVulZ7BlWCY7J1LhZLxQO18oL9zOW0f1OirIuUPIwMSsWDsiiMDEbLCpv1iuFwqOLRJmAwb5y9sygVD2zWK0zLZj9zQZNE1+RcEXlttKxoRWSBY7J1GMwbaUNVhIN5gyAIMC0bgLYz4fUryTX4fC2BSkSg7Uzoj+uYFqIXeoEwMqiVF7kiQRAAYFo2bWdykzG5+8f3j8/Umfv2cvGzfCwy+uM6AL1uJ8upbnJ/XMf3YnwvxrRsTMvG92I265XSuS6NLFA4OUgLhDPx7XsxYWSke2Jfh2yCQq/bSYuzQvBzB4SInDgvRe4skvuhcioumoDq/HUC8PvJedPw+3N8A0QSnZsj1HFJAAAAAElFTkSuQmCC`,gold_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA00lEQVRIie2UKxLDIBRFL52YYLqRLiAKURNkVVeQZbGCKmRjKqKyADZSE+SrIgMpBYaadiZnBsW8c3n8gJ2dn4d9WU8536FCuA6tBKyRsEZCKxELzHYQFGgl0Hc8WdCe7oE3FrBKS4S5kG0A1Up9xnnBZZgAgDVb+XNpq8W3B+HIbbBAP2CdGOelqAsndFzPHEBY1yBC3/FoSIlwSxDgS/uOVwmdx5E85NKt8g7Vh711AIBdhil7k1LCUkgrQdZIskaSViJ4wYi82E+kUrP/zM5/8ALJtmHuganBugAAAABJRU5ErkJggg==`,rainbow_cow_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACNUlEQVRoge2YPW7CMBTH/w+hIgTXQB1yCy6R3oA5GwzpwsIWqVtvUE7QjVtk4B4smV6HxE7i70BIK9U/yRLE9vuwn99zAkQikUgkEolEIr8FTaCDR9BplfGoA6rgUIRe33zyjKGhDvSE7XmnDTjhoxG98Au7bQEAh9VGnx8mg2ZeLY0u3L/aZoGN8U5yv0qfA1bDgwywCS0S0PoimwYt6nYklxMEAHOXnrstBACuWmO6j4sElJVgbsUTURuOtND6kHPtjOHM2nbAafyg1edKriIXSa+LHEfQ1dfF5MB4xk+A6sAkxnORyBXuhQ8AcNXr8x3k7hkYx3g19Ymz4JB30DqbOe8vXnXCAYalaKhx6+JEn/rDgHrwCNYsNMRwwGL8BGiHmItksPGhUFaOLjO0Ev9ZXIVsMvrh1/ktMpCliAG6A0RZyc8KIaAOIyFfXCP4fDaPTf3FbA6A+bYFrS8iEz2XnEEZAVkpDac0BQDvfxMzAKDV98N2ma7WPXLuFSXbqptoxhrrVB1CtPC9OASx5119n1dzv6eaqs4McW6GNmy08KGsvC/1cdVvHkwh4gqbLt4sxOdzLSwrx7vI5QxKSa601KHoFTR9QVnIiFCgvnzseWOZYeHY2rDEFZS+SvmmsOk4NSi5MBcJc5GItzHZOs/k2IFNzlviyktcQ8dbCdkBaoy39Y0BAeCvxuY32AuXyv+5SjzjIqbydseGmmaYvoKN8XXtKTpCd2CKT5BT6IhEIpGR+QG4Bej6ikQYYQAAAABJRU5ErkJggg==`,cow_variation_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB8ElEQVRoge1YS3bDMAiEvN7RN0BnUm7gU9JFioMIWNhR0uZVs2j1oTADSLYLMDExMTExMTHxv8Hm90fhAgBARB9JHgDg6w0xbHJwpA9UBiMcZ6Hj9uz2bPBoBRpnRBQaXq/Xrh/5+1prs1lKER/dBGUFNAFHIOOLiHqJ6AoYTlz8WWJShVJKs7cjArcf4J8BHkHcBhdCzPfuQMRtrscyVyIezukliDuEvBAWX6MrCdAK2B5orwjkAREB8ZZUObh2vQcRsLXSO8gTUUNQx9RjaZ896EPcu3OHwhLTV+mRJEZn4DDsXX4Guo2yGCbgTPAR2BUgWa21Pp3h3kPpbAIeBAhZTbiUAqUUV5AVNqKVjiD1KlFrbTLkjcVGz+1+VIFoXQ5z9BCLFlk/CS2kEroitvxWsH1NMMSA19WNhcvS4+qCLYiIiaiZezbWXtbsGG7XNfO6Mq9rdu4i3UIevGrs2TdZCrIe2eKyuN8sp65Re4B1y+hz4LVRRFALsvM97ArIvpP0KtGrjun1cM3l6KxthxgRpXyykXKaCvzje5sbws7e8VtIB/EyckaQVJSZ7+P+LRS2QVeA2ZC17Ed5FDOMkeDXIHMLNQGPBkjCE5XyPexl7reQ/rdK9gvpGZyJ4Qr4q2Q9ZCvwekXviTExMTExGN/dZHBpuZub8gAAAABJRU5ErkJggg==`,cow_variation_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB+klEQVRoge2YUZLDIAiGYad3zA3MmeQGOSX7sINFI0Ia2+6D30w7jbHwo0BsARaLxWKxWCwWi2+BH/DBE3yaNu4G0BqOIn6976MzB68GUBlLKZkTicg3xmP96MsLB8AAY8EtXgDaVs65urfve9SOG8Bl4RHHKaXqfrsTeuXbuXpaeTPgV4Rrcs6nNBBBWjQilmv9Wa5VECe9P+8Uv+87MHPZwdbmKMcD+Q8A/QBuiwd45rHO53fQBjBFfFuULSmlssJtyjBzdc/T81CfzZ4mgiKr6YkXRsKYObxzsgMMRkFHBWnenTYaq4i/TnThzACICIgIELGs6Mhoznl43+rnnk0PqYFy5tBOJE9HD6WeE2mhHhGBni1dxAiqC8kOAJwL7pW66Akrjo2eL93JeohZg5dbqRVQb+WICFJK1VOaj6P7fdw2T+ucAACuBwHwFC5CnetuAF/rQtaqD+Z2n1PTArAKLVIvfBxVQO31iGEKWUU8IiIYESuBuG0nwe2YlUaPdqCFj6Pk5IxzEsDzvCMCtQ/tVxjVQHcH5CxCRKfC0vQCGu2Abpf60BboQpd++jIzc0qJ4a9wykuNlbkXX5UP/mv0kfmXaI2DiG/G7tD10RlzMVMIoGw5GmN3mObDLWIh+hPvDq/46AbwX8X2iO7AJ/6C/ISPxWKxmMwve31ULTQV7Y8AAAAASUVORK5CYII=`,cow_variation_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABrklEQVRoge2Ya46EIAyAy8Q7eoMeihtwyu6PEQdqS4FBd5PtlzhxtPaBfagAjuM4juM4jvNbhAds0AKbqo5vA+CKe8l2reuDIRNGA6iUIaIqGGM0lbWu79QRNtPKG+oxOEKPLkQ0g7DuwLTjLcOj+hRd4fxRoBUrzo3P6jz0XPzVUqhyvnRi1IEsH2Os9iUZ65zESzimOr8SIgIiEm20znF4AEvS5knKFDJ7Og9OWx1rERARQtHBS/nWOYkcAIEyNO66Iy29IzZ750DFXXUxg1TETSzntdXrGUozDAfw15hKodVYzUAbYgDXAEKM8bZWmtOIDzRKSZQP+27q3ODo/THG3Im+crAkO8jbJHc8O2r9lxiugVaRSs7n/cu0VVZd4pAV59R2GLBeHCpWpxgPZiS4F3zS5pI+0sr1MhNk2Pdz68VMIUppOhCe++U+dzLsO1BK58bPgVKf0kEqu0SrkL55MZGK+eLcx+ZQcyFEJEQkeNfFuRXHTtnBzbShyKv0DLIA+mP2qs8ylY3W4OL8n0eJJ55AZ2yIRSzIrPi6douN3jvwxCfIJ2w4juMs5gdcWvZP4r+1igAAAABJRU5ErkJggg==`,cow_variation_4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACFElEQVRoge1YW3aEMAiFnu5xdoBrijtwlfRjJEWEhHQcpx+559ipJsKFXPIQYGJiYmJiYmJiYuJTwBt88AU+QxuvBmANZyF+e+9jpw9+DTpmfTEzRFfGDhG57xIREJH0ayIbgJAOSS7LkjT1xE6w+Z70aaEnocoyympEYF3XJjHdbm0jYthXd6t/ArAYKKU0urWzaJ0LIU0aEeu9/l/uVRAnvpGEKvmI5LIs9WpBNG3tCbkIrTaNb8+n50xGYVTro/1HYUfAJX81iKhm2EqGmQ9tPS56BLrkvWyWUv6U5ZafkQTKCDAEBd0q4F5x3wGvBgAgT+7dGu9BL+kI++rqQYhGgelAooJf19WVh2fTexcGplEX75BMZDPrKx2ANWjXAWn3st8jiYjuJe1R9vVDXcShjISYJuRJyw6/nqlERqWUOl3ytrm+8PHwuJ7ARFQ3a3sAaRBRup9cILvZbWPetuy9i7SEom2Dl/nUFiPIeqOvG4QcGA6/vf28lZFtE3h1A/CU0UgAAFVO7iwkD0+NUkwWXqG+sh4YrYfPsqi6hV2H8HsCG64F0b19Bkrj2gcY/fdqwKvsKiFErEPtZaQntZOz4KCSmIXCGagbgGmQZ9lDeeSPZUVundwCfgeEeyFjJCrsqz7LIJyDStke/Srx75AZAQDIH/FeQUdOLtwacPpc8XXtLT6yI3DHJ8g7fExMTExcjB/HIw4rhmRWFQAAAABJRU5ErkJggg==`,cow_variation_5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB/klEQVRoge2YbXLEIAiGcad3zA3ImfQGnpL+2JoiQcWPzewPn5nMtAnKi4BrArDZbDabzWYzjHvYHw34Jfb3bdxrSk4f1DbpH/NiRiMORhn1dRv3AgBAxE+L/9j8P5PjZ4VNB5aagsDWWJlDRKwae+/fTpw+dRqf7BLneQIAQAhBG5ZNZs0AcYdWzvME7z0Q0S0Iy1yIKIO4rUQrAwQAQESXoBG891kAUlia/xJVtu3aRgkRs8llqkdIgojourhg51z2LIRQzVYpAOotFwtyzlJvtJ5xtAAy8bxsRkuohCwd6zOObOLlK6+VHSLe6vwSIEqqpScF4MCwJ3vvl2WhJqxnEXkJLT/YrWj6Fk8e5orIQHsCbwagTZ6uFrzclB+lJQxnoKcXVu9enOJRQlthKURrannPIr51VvrLnGokA3AhBLLswSnAnp0plZEQBhSjau+Oozln8zCXDmQ1kT1Nx3shCU9CW/9rVHugJHrF9lha9YqtWhbmF5oe0dzWUl4ymJ7gqhkIIXxk6yvhjsNU99kY5d7VxM45oBj/a9J4wKrB37b4SkvhyjPzSYESAEAUI1GMBO8azK5e+Ni/DwmqD8VnkWYGxIN0j7/J9XCNk1tph76mgQzAFe7NsMzHVxzmZjBvo9ZXvBlGfKgBfKtYDWsGnviK/fSX8s1ms1nAL4ZTXaf8TqprAAAAAElFTkSuQmCC`,cow_variation_6_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABsUlEQVRoge2YWXLDIAxARSd3zA10KN3Ap6QfLVQm2sDU/tGbScYJsjYkMTZAkiRJkiRJkjxFucFG3WBT1XE1gFFxlGbXu784MmU2gJDDiAhEFJKzCOgoXxGH4Mfx1WyLeM5HZV7O+rTTUcd4dsd7xjVlJ0r/UljKuOXMSXn9U19K6fcR0cca48NfrYQqIoay6WHpKUYLWmscqYQqN8ivI415N+MOVCvr3o7M7FjLMC+fpoOvefAALk2ZHeW2QiuhCv6hAQDnqfCU05zoOXBiV4M3XZH/NLxzIIzX4NHTmctH9KoBWAeNJjdDNMte4C2AXv9SfRORaHCX85qeQU4cSS9BoHpH/Sqj3nZdj0OUL++3q1OKyjwLOLM7MNZ1c7w56vwWd2BpCu1Ay7ohK474bVPoCmMwM8GZO0BEZpnM9IYlK9V6pP4BnB4gIqjH0ZXNPEFFZHmmR4eFNbEHQgFIBiJOSk7zeyem0NSjb0XEiojtMbJ/2H9ddvLj2lDkVSJNXEAfrbtey5xs/O5MSPdjY3QX4TF6x9PYig2xiQWZHW/X/sVGdAfueAV5h40kSZLNfAP8suojqxWMSgAAAABJRU5ErkJggg==`,cow_variation_7_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB1klEQVRoge2YXZKDMAiAYad39AZ4JnODnjL7UixBkJim7j7wzdixJuEvJEQBkiRJkiRJkuSvwBt01Ak6XRmfOqAF98J6o/EY9MGfi4qrukyIqEsOEQERQa21ufh5YDwAAPQ60CjsMDBEyljXNezj8Qja9whoYfy/lBIqsZDjWBY7otscHbj/OBymz4qI54DnIBtU61s8Ijb9rbaXnIO93gyMLs4dNlwaJgOAiI2hkrM2jbUG3JE6mj3pM5pivWgHPo58DzwTiNikz7ZtbpuHTKHQ+Bm7jydr27YhPTwDFYKipoXOTA1pvLzv4bAGrH1+ZuRn49aB2UbzVjhb7tWjxM5MQ9Z1datxRFSJT4mqca+TPN4qeuK5uUblqXC/H4mup9zqpx2vz6fZF5fFshX0w6pK9ZAD0qBovDacDQ3+mw58lEKaK457Uff64rKYW/0DAKCUEr04fBXtzBXnfuDt1cG7UsrXzzIeKv9dwhR6TR8AzNs6iQhwWZpIa4ONtvE1wE707jQe+kVFLlYrbYRTl97dKxFVItLvv/LZ3vfiFepw+rv0zMDZ1jrrs0yj46xwaYaPEv+F7jpwx240osOaJusr2Iyva1/R0TsDd3yCvENHkiTJZH4BOxYPBJ6xfbsAAAAASUVORK5CYII=`,pixel_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goFDRc7VmYGWwAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAALSURBVAjXY2AAAgAABQAB4iYFmwAAAABJRU5ErkJggg==`,plotStates={"watered-plot":watered_plot_default,"fertilized-plot":fertilized_plot_default,"rainbow-fertilized-plot":rainbow_fertilized_plot_default,"mulched-plot":mulched_plot_default,"rainbow-mulched-plot":rainbow_mulched_plot_default,"shoveled-plot":shoveled_plot_default},smeltedItems={"bronze-ingot":bronze_ingot_default,"iron-ingot":iron_ingot_default,"silver-ingot":silver_ingot_default,"gold-ingot":gold_ingot_default,"axe-bronze":axe_bronze_default,"axe-iron":axe_iron_default,"axe-silver":axe_silver_default,"axe-gold":axe_gold_default,"hoe-bronze":hoe_bronze_default,"hoe-iron":hoe_iron_default,"hoe-silver":hoe_silver_default,"hoe-gold":hoe_gold_default,"scythe-bronze":scythe_bronze_default,"scythe-iron":scythe_iron_default,"scythe-silver":scythe_silver_default,"scythe-gold":scythe_gold_default,"shovel-bronze":shovel_bronze_default,"shovel-iron":shovel_iron_default,"shovel-silver":shovel_silver_default,"shovel-gold":shovel_gold_default,"picker-pole-bronze":picker_pole_bronze_default,"picker-pole-iron":picker_pole_iron_default,"picker-pole-silver":picker_pole_silver_default,"picker-pole-gold":picker_pole_gold_default},craftedItems={"apple-pie":apple_pie_default,"banana-bread":banana_bread_default,"banana-cream-pie":banana_cream_pie_default,"carrot-soup":carrot_soup_default,cheese:cheese_default,"chickn-pot-pie":chickn_pot_pie_default,chocolate:chocolate_default,"chocolate-soy-milk":chocolate_soy_milk_default,compost:compost_default,bread:bread_default,burger:burger_default,butter:butter_default,fertilizer:fertilizer_default,"french-onion-soup":french_onion_soup_default,"fried-tofu":fried_tofu_default,"garlic-bread":garlic_bread_default,"garlic-fries":garlic_fries_default,flour:flour_default,jackolantern:jackolantern_default,"hot-sauce":hot_sauce_default,mulch:mulch_default,"olive-oil":olive_oil_default,"onion-rings":onion_rings_default,popcorn:popcorn_default,"apple-juice":apple_juice_default,"grape-syrup":grape_syrup_default,"pumpkin-pie":pumpkin_pie_default,rainbowCheese:rainbow_cheese_default,"rainbow-mulch":rainbow_mulch_default,salsa:salsa_default,"soy-milk":soy_milk_default,"spicy-apple-jam":spicy_apple_jam_default,"spicy-cheese":spicy_cheese_default,"spicy-pickled-garlic":spicy_pickled_garlic_default,spaghetti:spaghetti_default,"strawberry-jam":strawberry_jam_default,sugar:sugar_default,salt:salt_default,"summer-salad":summer_salad_default,"sun-butter":sun_butter_default,"sweet-potato-fries":sweet_potato_fries_default,"sweet-potato-pie":sweet_potato_pie_default,tofu:tofu_default,"vegetable-oil":vegetable_oil_default,"wood-chips":wood_chips_default,yeast:yeast_default,"basic-lightning-rod":lightning_rod_basic_default,"superior-lightning-rod":lightning_rod_superior_default,"ultimate-lightning-rod":lightning_rod_ultimate_default,...smeltedItems},items={apple:apple_default,"apple-fruit-growing-1":apple_fruit_growing_1_default,"apple-fruit-growing-2":apple_fruit_growing_2_default,"apple-fruit-grown":apple_fruit_grown_default,"apple-tree-dead":apple_tree_dead_default,"apple-tree-growing-1":apple_tree_growing_1_default,"apple-tree-growing-2":apple_tree_growing_2_default,"apple-tree-growing-3":apple_tree_growing_3_default,"apple-tree-growing-4":apple_tree_growing_4_default,"apple-tree-grown":apple_tree_grown_default,"apple-sapling":apple_sapling_default,"apple-tree-sapling-planted":apple_tree_sapling_planted_default,banana:banana_default,"banana-fruit-growing-1":banana_fruit_growing_1_default,"banana-fruit-growing-2":banana_fruit_growing_2_default,"banana-fruit-growing-3":banana_fruit_growing_3_default,"banana-fruit-grown":banana_fruit_grown_default,"banana-tree-dead":banana_tree_dead_default,"banana-tree-growing-1":banana_tree_growing_1_default,"banana-tree-growing-2":banana_tree_growing_2_default,"banana-tree-growing-3":banana_tree_growing_3_default,"banana-tree-growing-4":banana_tree_growing_4_default,"banana-tree-grown":banana_tree_grown_default,"banana-sapling":banana_sapling_default,"banana-tree-sapling-planted":banana_tree_sapling_planted_default,asparagus:asparagus_default,"asparagus-growing-1":asparagus_growing1_default,"asparagus-growing-2":asparagus_growing2_default,"asparagus-growing-3":asparagus_growing3_default,"asparagus-seed":asparagus_seed_default,carrot:carrot_default,"carrot-growing-1":carrot_growing1_default,"carrot-growing-2":carrot_growing2_default,"carrot-growing-3":carrot_growing3_default,"carrot-seed":carrot_seed_default,garlic:garlic_default,"garlic-growing-1":garlic_growing1_default,"garlic-growing-2":garlic_growing2_default,"garlic-growing-3":garlic_growing3_default,"garlic-seed":garlic_seed_default,"grape-seed":grape_seed_default,"grape-cabernet-sauvignon":grape_purple_default,"grape-cabernet-sauvignon-growing-1":grape_purple_growing1_default,"grape-cabernet-sauvignon-seed":grape_seed_default,"grape-chardonnay":grape_green_default,"grape-chardonnay-growing-1":grape_green_growing1_default,"grape-chardonnay-seed":grape_seed_default,"grape-nebbiolo":grape_purple_default,"grape-nebbiolo-growing-1":grape_purple_growing1_default,"grape-nebbiolo-seed":grape_seed_default,"grape-sauvignon-blanc":grape_green_default,"grape-sauvignon-blanc-growing-1":grape_green_growing1_default,"grape-sauvignon-blanc-seed":grape_seed_default,"grape-tempranillo":grape_purple_default,"grape-tempranillo-growing-1":grape_purple_growing1_default,"grape-tempranillo-seed":grape_seed_default,jalapeno:jalapeno_default,"jalapeno-growing-1":jalapeno_growing1_default,"jalapeno-growing-2":jalapeno_growing2_default,"jalapeno-growing-3":jalapeno_growing3_default,"jalapeno-seed":jalapeno_seed_default,pumpkin:pumpkin_default,"pumpkin-growing-1":pumpkin_growing1_default,"pumpkin-growing-2":pumpkin_growing2_default,"pumpkin-growing-3":pumpkin_growing3_default,"pumpkin-growing-4":pumpkin_growing4_default,"pumpkin-growing-5":pumpkin_growing5_default,"pumpkin-seed":pumpkin_seed_default,pea:pea_default,"pea-growing-1":pea_growing1_default,"pea-seed":pea_seed_default,spinach:spinach_default,"spinach-growing-1":spinach_growing1_default,"spinach-seed":spinach_seed_default,corn:corn_default,"corn-growing-1":corn_growing1_default,"corn-growing-2":corn_growing2_default,"corn-growing-3":corn_growing3_default,"corn-growing-4":corn_growing4_default,"corn-growing-5":corn_growing5_default,"corn-seed":corn_seed_default,potato:potato_default,"potato-growing-1":potato_growing1_default,"potato-growing-2":potato_growing2_default,"potato-growing-3":potato_growing3_default,"potato-seed":potato_seed_default,olive:olive_default,"olive-growing-1":olive_growing1_default,"olive-seed":olive_seed_default,onion:onion_default,"onion-growing-1":onion_growing1_default,"onion-growing-2":onion_growing2_default,"onion-growing-3":onion_growing3_default,"onion-seed":onion_seed_default,soybean:soybean_default,"soybean-growing-1":soybean_growing1_default,"soybean-seed":soybean_seed_default,"sweet-potato":sweet_potato_default,"sweet-potato-growing-1":sweet_potato_growing1_default,"sweet-potato-growing-2":sweet_potato_growing2_default,"sweet-potato-growing-3":sweet_potato_growing3_default,"sweet-potato-growing-4":sweet_potato_growing4_default,"sweet-potato-seed":sweet_potato_seed_default,wheat:wheat_default,"wheat-growing-1":wheat_growing1_default,"wheat-seed":wheat_seed_default,tomato:tomato_default,"tomato-growing-1":tomato_growing1_default,"tomato-growing-2":tomato_growing2_default,"tomato-growing-3":tomato_growing3_default,"tomato-growing-4":tomato_growing4_default,"tomato-growing-5":tomato_growing5_default,"tomato-growing-6":tomato_growing6_default,"tomato-seed":tomato_seed_default,strawberry:strawberry_default,"strawberry-growing-1":strawberry_growing1_default,"strawberry-seed":strawberry_seed_default,sugarcane:sugarcane_default,"sugarcane-growing-1":sugarcane_growing1_default,"sugarcane-growing-2":sugarcane_growing2_default,"sugarcane-seed":sugarcane_seed_default,sunflower:sunflower_default,"sunflower-growing-1":sunflower_growing1_default,"sunflower-growing-2":sunflower_growing2_default,"sunflower-growing-3":sunflower_growing3_default,"sunflower-growing-4":sunflower_growing4_default,"sunflower-growing-5":sunflower_growing5_default,"sunflower-seed":sunflower_seed_default,watermelon:watermelon_default,"watermelon-growing-1":watermelon_growing1_default,"watermelon-seed":watermelon_seed_default,weed:weed_pink_default,"weed-yellow":weed_yellow_default,"weed-orange":weed_orange_default,"weed-pink":weed_pink_default,wood:applewood_default,coal:coal_default,stone:stone_default,"salt-rock":salt_rock_default,"bronze-ore":bronze_ore_default,"iron-ore":iron_ore_default,"silver-ore":silver_ore_default,"gold-ore":gold_ore_default,"rainbow-fertilizer":rainbow_fertilizer_default,scarecrow:scarecrow_default,sprinkler:sprinkler_default,"cow-feed":cow_feed_default,"hugging-machine":hugging_machine_default,"milk-1":milk_1_default,"milk-2":milk_2_default,"milk-3":milk_3_default,"rainbow-milk-1":rainbow_milk_1_default,"rainbow-milk-2":rainbow_milk_2_default,"rainbow-milk-3":rainbow_milk_3_default,"chocolate-milk":chocolate_milk_default,"scarecrow-animated":scarecrow_animated_default,"inventory-box":inventory_box_default,tumbleweed:tumbleweed_default,...craftedItems},wines={[grapeVariety.CHARDONNAY]:wine_green_default,[grapeVariety.SAUVIGNON_BLANC]:wine_green_default,[grapeVariety.CABERNET_SAUVIGNON]:wine_purple_default,[grapeVariety.TEMPRANILLO]:wine_purple_default,[grapeVariety.NEBBIOLO]:wine_purple_default},tools$1={axe:axe_default,hoe:hoe_default,"picker-pole":picker_pole_default,scythe:scythe_default,shovel:shovel_default,"watering-can":watering_can_default},animals={cow:{rainbow:rainbow_cow_default,variations:[cow_variation_1_default,cow_variation_2_default,cow_variation_3_default,cow_variation_4_default,cow_variation_5_default,cow_variation_6_default,cow_variation_7_default]}},noop$3=()=>{},getFinalCropItemFromSeedItem=({id:e},t=0)=>{let n=getFinalCropItemIdFromSeedItemId(e,t);if(n)return itemsMap[n]},getItemCurrentValue=({id:e},t)=>{let n=Math.round((t[e]?getItemBaseValue(e)*(itemsMap[e].doesPriceFluctuate?t[e]:1):getItemBaseValue(e))*100);return Number(toDecimal(dinero({amount:n,currency:USD})))};function noop$2(){}function returnTrue(){return!0}function charIsNumber(e){return!!(e||``).match(/\d/)}function isNil(e){return e==null}function escapeRegExp(e){return e.replace(/[-[\]/{}()*+?.\\^$|]/g,`\\$&`)}function getThousandsGroupRegex(e){switch(e){case`lakh`:return/(\d+?)(?=(\d\d)+(\d)(?!\d))(\.\d+)?/g;case`wan`:return/(\d)(?=(\d{4})+(?!\d))/g;default:return/(\d)(?=(\d{3})+(?!\d))/g}}function applyThousandSeparator(e,t,n){var a=getThousandsGroupRegex(n),o=e.search(/[1-9]/);return o=o===-1?e.length:o,e.substring(0,o)+e.substring(o,e.length).replace(a,`$1`+t)}function splitDecimal(e,t){t===void 0&&(t=!0);var n=e[0]===`-`,a=n&&t;e=e.replace(`-`,``);var o=e.split(`.`);return{beforeDecimal:o[0],afterDecimal:o[1]||``,hasNagation:n,addNegation:a}}function fixLeadingZero(e){if(!e)return e;var t=e[0]===`-`;t&&(e=e.substring(1,e.length));var n=e.split(`.`),a=n[0].replace(/^0+/,``)||`0`,o=n[1]||``;return(t?`-`:``)+a+(o?`.`+o:``)}function limitToScale(e,t,n){for(var a=``,o=n?`0`:``,s=0;s<=t-1;s++)a+=e[s]||o;return a}function repeat(e,t){return Array(t+1).join(e)}function toNumericString(e){e+=``;var t=e[0]===`-`?`-`:``;t&&(e=e.substring(1));var n=e.split(/[eE]/g),a=n[0],o=n[1];if(o=Number(o),!o)return t+a;a=a.replace(`.`,``);var s=1+o,l=a.length;return s<0?a=`0.`+repeat(`0`,Math.abs(s))+a:s>=l?a+=repeat(`0`,s-l):a=(a.substring(0,s)||`0`)+`.`+a.substring(s),t+a}function roundToPrecision(e,t,n){if([``,`-`].indexOf(e)!==-1)return e;var a=e.indexOf(`.`)!==-1&&t,o=splitDecimal(e),s=o.beforeDecimal,l=o.afterDecimal,u=o.hasNagation,d=parseFloat(`0.`+(l||`0`)),f=(l.length<=t?`0.`+l:d.toFixed(t)).split(`.`),m=s.split(``).reverse().reduce(function(e,t,n){return e.length>n?(Number(e[0])+Number(t)).toString()+e.substring(1,e.length):t+e},f[0]),h=limitToScale(f[1]||``,Math.min(t,l.length),n),v=u?`-`:``,y=a?`.`:``;return``+v+m+y+h}function setCaretPosition(e,t){if(e.value=e.value,e!==null){if(e.createTextRange){var n=e.createTextRange();return n.move(`character`,t),n.select(),!0}return e.selectionStart||e.selectionStart===0?(e.focus(),e.setSelectionRange(t,t),!0):(e.focus(),!1)}}function findChangedIndex(e,t){for(var n=0,a=0,o=e.length,s=t.length;e[n]===t[n]&&n<o;)n++;for(;e[o-1-a]===t[s-1-a]&&s-a>n&&o-a>n;)a++;return{start:n,end:o-a}}function clamp(e,t,n){return Math.min(Math.max(e,t),n)}function getCurrentCaretPosition(e){return Math.max(e.selectionStart,e.selectionEnd)}function addInputMode(e){return e||typeof navigator<`u`&&!(navigator.platform&&/iPhone|iPod/.test(navigator.platform))}function objectWithoutProperties(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)===-1&&(n[a]=e[a]);return n}var defaultProps={displayType:`input`,decimalSeparator:`.`,thousandsGroupStyle:`thousand`,fixedDecimalScale:!1,prefix:``,suffix:``,allowNegative:!0,allowEmptyFormatting:!1,allowLeadingZeros:!1,isNumericString:!1,type:`text`,onValueChange:noop$2,onChange:noop$2,onKeyDown:noop$2,onMouseUp:noop$2,onFocus:noop$2,onBlur:noop$2,isAllowed:returnTrue},NumberFormat=function(e){function t(t){e.call(this,t);var n=t.defaultValue;this.validateProps();var a=this.formatValueProp(n);this.state={value:a,numAsString:this.removeFormatting(a),mounted:!1},this.selectionBeforeInput={selectionStart:0,selectionEnd:0},this.onChange=this.onChange.bind(this),this.onKeyDown=this.onKeyDown.bind(this),this.onMouseUp=this.onMouseUp.bind(this),this.onFocus=this.onFocus.bind(this),this.onBlur=this.onBlur.bind(this)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.componentDidMount=function(){this.setState({mounted:!0})},t.prototype.componentDidUpdate=function(e){this.updateValueIfRequired(e)},t.prototype.componentWillUnmount=function(){clearTimeout(this.focusTimeout),clearTimeout(this.caretPositionTimeout)},t.prototype.updateValueIfRequired=function(e){var t=this,n=t.props,a=t.state,o=t.focusedElm,s=a.value,l=a.numAsString;if(l===void 0&&(l=``),e!==n){this.validateProps();var u=this.formatNumString(l),d=isNil(n.value)?u:this.formatValueProp(),f=this.removeFormatting(d),m=parseFloat(f),h=parseFloat(l);((!isNaN(m)||!isNaN(h))&&m!==h||u!==s||o===null&&d!==s)&&this.updateValue({formattedValue:d,numAsString:f,input:o,source:`prop`,event:null})}},t.prototype.getFloatString=function(e){e===void 0&&(e=``);var t=this.props.decimalScale,n=this.getSeparators().decimalSeparator,a=this.getNumberRegex(!0),o=e[0]===`-`;o&&(e=e.replace(`-`,``)),n&&t===0&&(e=e.split(n)[0]),e=(e.match(a)||[]).join(``).replace(n,`.`);var s=e.indexOf(`.`);return s!==-1&&(e=e.substring(0,s)+`.`+e.substring(s+1,e.length).replace(new RegExp(escapeRegExp(n),`g`),``)),o&&(e=`-`+e),e},t.prototype.getNumberRegex=function(e,t){var n=this.props,a=n.format,o=n.decimalScale,s=n.customNumerals,l=this.getSeparators().decimalSeparator;return RegExp(`[0-9`+(s?s.join(``):``)+`]`+(l&&o!==0&&!t&&!a?`|`+escapeRegExp(l):``),e?`g`:void 0)},t.prototype.getSeparators=function(){var e=this.props.decimalSeparator,t=this.props,n=t.thousandSeparator,a=t.allowedDecimalSeparators;return n===!0&&(n=`,`),a||=[e,`.`],{decimalSeparator:e,thousandSeparator:n,allowedDecimalSeparators:a}},t.prototype.getMaskAtIndex=function(e){var t=this.props.mask;return t===void 0&&(t=` `),typeof t==`string`?t:t[e]||` `},t.prototype.getValueObject=function(e,t){var n=parseFloat(t);return{formattedValue:e,value:t,floatValue:isNaN(n)?void 0:n}},t.prototype.validateProps=function(){var e=this.props.mask,t=this.getSeparators(),n=t.decimalSeparator,a=t.thousandSeparator;if(n===a)throw Error(`
154
+ `),severity:`error`}),{...e,newDayNotifications:a}},processNerfs=e=>applyChanceEvent([[()=>!0,applyCrows]],e),getRangeCoords=(e,t,n)=>{let a=2*e+1,o=t-e,s=n-e;return Array(a).fill(null).map((e,t)=>Array(a).fill(null).map((e,n)=>({x:o+n,y:s+t})))},processSprinklers=e=>{let{field:t,experience:n}=e,a=new Map,o=[...t],{sprinklerRange:s}=getLevelEntitlements(levelAchieved(n));return t.forEach((n,l)=>{n.forEach((n,u)=>{!n||getPlotContentType(n)!==itemType.SPRINKLER||getRangeCoords(s,u,l).flat().forEach(({x:n,y:s})=>{let l=t[s];if(!l)return;let u=l[n];u&&getPlotContentType(u)===itemType.CROP&&(a.has(u)||(o=modifyFieldPlotAt({...e,field:o},n,s,setWasWatered).field),a.set(u,{x:n,y:s}))})})}),{...e,field:o}},shouldPrecipitateToday=()=>random$1()<PRECIPITATION_CHANCE,processWeather=e=>applyChanceEvent([[shouldPrecipitateToday,applyPrecipitation]],e),rotateNotificationLogs=e=>{let t=[...e.notificationLog],{dayCount:n,newDayNotifications:a}=e,o={error:[],info:[],success:[],warning:[]};return a.forEach(({message:e,severity:t})=>o[t].push(e)),a.length&&t.unshift({day:n,notifications:o}),t.length=Math.min(t.length,14),{...e,notificationLog:t}},get7DayAverage=e=>e.reduce((e,t)=>moneyTotal(e,t),0)/7,getProfit=(e,t)=>moneyTotal(e,t),updateFinancialRecords=e=>{let{profitabilityStreak:t,todaysLosses:n,todaysRevenue:a,record7dayProfitAverage:o,recordProfitabilityStreak:s}=e,{historicalDailyLosses:l,historicalDailyRevenue:u,recordSingleDayProfit:d}=e;l=[n,...l].slice(0,7),u=[a,...u].slice(0,7);let f=get7DayAverage(l.map((e,t)=>moneyTotal(u[t],e))),m=a+n>0?t+1:0;return{...e,historicalDailyLosses:l,historicalDailyRevenue:u,profitabilityStreak:m,record7dayProfitAverage:Math.max(o,f),recordProfitabilityStreak:Math.max(s,m),recordSingleDayProfit:Math.max(d,getProfit(a,n)),todaysLosses:0,todaysRevenue:0}},updateInventoryRecordsForNextDay=e=>({...e,todaysPurchases:{},todaysStartingInventory:e.inventory.reduce((e,{id:t,quantity:n})=>(e[t]=n,e),{})}),decrementPriceEventDays=e=>Object.keys(e).reduce((t,n)=>{let a=e[n];if(!a)return t;let{itemId:o,daysRemaining:s}=a;return s>1&&(t[n]={itemId:o,daysRemaining:s-1}),t},{}),updatePriceEvents=e=>{let{priceCrashes:t,priceSurges:n}=e;return{...e,priceCrashes:decrementPriceEventDays(t),priceSurges:decrementPriceEventDays(n)}},adjustItemValues=e=>({...e,historicalValueAdjustments:[e.valueAdjustments],valueAdjustments:generateValueAdjustments(e.priceCrashes,e.priceSurges)}),computeStateForNextDay=(e,t=!1)=>(e=(t?[processField]:[computeCowInventoryForNextDay,processCowBreeding,processField,processForest,processNerfs,processWeather,processSprinklers,processFeedingCows,processCowAttrition,processMilkingCows,processCowFertilizerProduction,processCellar,updatePriceEvents,updateFinancialRecords,updateInventoryRecordsForNextDay,generatePriceEvents,applyLoanInterest,rotateNotificationLogs]).concat([adjustItemValues]).reduce((e,t)=>t({...e}),{...e,cowForSale:generateCow(),dayCount:e.dayCount+1,todaysNotifications:[]}),e.dayCount%60==0&&(e=addExperience(e,EXPERIENCE_VALUES.NEW_YEAR)),e),{FERTILIZE:FERTILIZE$3,OBSERVE:OBSERVE$5}=fieldMode,fertilizerItemIdToTypeMap={[itemsMap.fertilizer.id]:fertilizerType.STANDARD,[itemsMap[`rainbow-fertilizer`].id]:fertilizerType.RAINBOW},fertilizePlot=(e,t,n)=>{let{field:a,selectedItemId:o}=e,s=a[n][t];if(!s||itemsMap[o]?.type!==itemType.FERTILIZER)return e;let{id:l}=itemsMap[o],u=e.inventory.find(e=>e.id===l),d=getPlotContentType(s);if(!s||!u||s.fertilizerType!==fertilizerType.NONE||o===`fertilizer`&&d!==itemType.CROP||o===`rainbow-fertilizer`&&d!==itemType.CROP&&d!==itemType.SCARECROW)return e;let{quantity:f}=u;e=decrementItemFromInventory(e,l);let m=f>1;return e=modifyFieldPlotAt(e,t,n,e=>e&&{...e,fertilizerType:fertilizerItemIdToTypeMap[l]}),{...e,fieldMode:m?FERTILIZE$3:OBSERVE$5,selectedItemId:m?l:``}},forRange=(e,t,n,a,o,...s)=>{let l=Math.max(a-n,0),u=Math.min(a+n,e.field[0].length-1),d=Math.max(o-n,0),f=Math.min(o+n,e.field.length-1);for(let n=d;n<=f;n++)for(let a=l;a<=u;a++)e=t(e,a,n,...s);return e},{GROWN:GROWN$6}=cropLifeStage,{UNAVAILABLE}=toolLevel,harvestForestPlot=(e,t,n)=>{let a=e.forest[n]?.[t];if(!a||!(`itemId`in a)||e.toolLevels[toolType.PICKER_POLE]===UNAVAILABLE||!doesInventorySpaceRemain(e)||getFruitLifeStage(a)!==GROWN$6)return e;let o=itemsMap[a.itemId];if(!o)return e;let s=PICKER_POLE_LEVEL_TO_FRUIT_YIELD[e.toolLevels[toolType.PICKER_POLE]]??1,l=Math.min(s,inventorySpaceRemaining(e));return e=addItemToInventory(e,o,s),e={...e,treeFruitsHarvested:{...e.treeFruitsHarvested,[o.id]:(e.treeFruitsHarvested[o.id]||0)+l}},modifyForestPlotAt(e,t,n,e=>e&&`itemId`in e?{...e,daysSinceLastHarvest:0}:e)},getCropFromItemId=e=>({...getPlotContentFromItemId(e),daysOld:0,daysWatered:0,wasWateredToday:!1}),plantInPlot=(e,t,n,a)=>{if(!a||!e.inventory.some(({id:e})=>e===a))return e;let{field:o}=e;if(o[n][t])return e;let{growsInto:s}=itemsMap[a],l=getFinalCropItemIdFromSeedItemId(a,Array.isArray(s)?chooseRandomIndex(s):0);return l?(e=modifyFieldPlotAt(e,t,n,()=>getCropFromItemId(l)),e=decrementItemFromInventory(e,a),e=processSprinklers(e),{...e,selectedItemId:e.inventory.find(({id:e})=>e===a)?a:``}):e},{GROWN:GROWN$5}=cropLifeStage;function getHarvestedQuantity(e){let t=1;switch(e.toolLevels[toolType.SCYTHE]){case toolLevel.BRONZE:t+=1;break;case toolLevel.IRON:t+=2;break;case toolLevel.SILVER:t+=3;break;case toolLevel.GOLD:t+=4;break;default:t=1}return t}function harvestCrops(e,t,n){let a=e.field[n][t];if(!a)return e;let o=itemsMap[a.itemId];if(!o)return e;let s=getSeedItemIdFromFinalStageCropItemId(o.id),l=a.fertilizerType===fertilizerType.RAINBOW,u=getHarvestedQuantity(e);e=removeFieldPlotAt(e,t,n),e=addItemToInventory(e,o,u);let{cropType:d}=o;if(!d)return e;l&&getInventoryQuantityMap(e.inventory)[s]>0&&(e=plantInPlot(e,t,n,s),e=modifyFieldPlotAt(e,t,n,e=>e&&{...e,fertilizerType:fertilizerType.RAINBOW}));let{cropsHarvested:f}=e;return{...e,cropsHarvested:{...f,[d]:(f[d]||0)+u}}}function harvestWeed(e,t,n){let a=e.field[n][t];if(!a)return e;let o=itemsMap[a.itemId],s=getHarvestedQuantity(e);return e=removeFieldPlotAt(e,t,n),e=addItemToInventory(e,o,s),e}var harvestPlot=(e,t,n)=>{let a=e.field[n][t];return!a||!doesInventorySpaceRemain(e)?e:getPlotContentType(a)===itemType.CROP&&getCropLifeStage(a)===GROWN$5?harvestCrops(e,t,n):getPlotContentType(a)===itemType.WEED?harvestWeed(e,t,n):e},hugCow=(e,t)=>modifyCow(e,t,e=>e.happinessBoostsToday>=3?e:{happiness:Math.min(1,e.happiness+COW_HUG_BENEFIT),happinessBoostsToday:e.happinessBoostsToday+1}),maxYieldOfRecipe=memoize(({ingredients:e},t)=>{let n=getInventoryQuantityMap(t);return Math.min(...Object.keys(e).map(t=>Math.floor(n[t]/e[t])))||0},{}),canMakeRecipe=(e,t,n)=>maxYieldOfRecipe(e,t)>=n,consumeIngredients=(e,t,n=1,a=0)=>t.ingredients&&!canMakeRecipe(t,e.inventory,n)?e:(e=addExperience(e,a),Object.keys(t.ingredients||{}).reduce((e,a)=>decrementItemFromInventory(e,a,t.ingredients[a]*n),e)),EXPERIENCE_FOR_RECIPE={[recipeType.FERMENTATION]:EXPERIENCE_VALUES.FERMENTATION_RECIPE_MADE,[recipeType.FORGE]:EXPERIENCE_VALUES.FORGE_RECIPE_MADE,[recipeType.KITCHEN]:EXPERIENCE_VALUES.KITCHEN_RECIPE_MADE,[recipeType.RECYCLING]:EXPERIENCE_VALUES.RECYCLING_RECIPE_MADE,[recipeType.WOOD_CHIPPER]:EXPERIENCE_VALUES.WOOD_CHIPPER_RECIPE_MADE},makeRecipe=(e,t,n=1)=>{let a=e;return e=consumeIngredients(e,t,n,EXPERIENCE_FOR_RECIPE[t.recipeType]||0),e===a?e:(e={...e,recipesMade:{...e.recipesMade,[t.id]:(e.recipesMade[t.id]||0)+n}},addItemToInventory(e,t,n))},saltRequirementMultiplier=2/3,getSaltRequirementsForFermentationRecipe=e=>{let{daysToFerment:t=0,tier:n=1}=e;return Math.ceil((t??0)*saltRequirementMultiplier)*n},getMaxYieldOfFermentationRecipe=(e,t,n,a)=>{let{[e.id]:o=0,[itemsMap.salt.id]:s=0}=getInventoryQuantityMap(t),l=Math.floor(s/getSaltRequirementsForFermentationRecipe(e));return Math.min(a-n.length,o,l)},addKegToCellarInventory=(e,t)=>{let{cellarInventory:n}=e;return{...e,cellarInventory:[...n,t]}},makeFermentationRecipe=(e,t,n=1)=>{let{inventory:a,cellarInventory:o,purchasedCellar:s}=e,{space:l}=PURCHASEABLE_CELLARS.get(s)??{space:0};if(getMaxYieldOfFermentationRecipe(t,a,o,l)<n)return e;for(let a=0;a<n;a++){let n=cellarService.generateKeg(t);e=addKegToCellarInventory(e,n)}let u=getSaltRequirementsForFermentationRecipe(t);return e=decrementItemFromInventory(e,t.id,n),e=decrementItemFromInventory(e,itemsMap.salt.id,n*u),e},makeWine=(e,t,n=1)=>{let{inventory:a,cellarInventory:o,purchasedCellar:s}=e,{space:l}=PURCHASEABLE_CELLARS.get(s)??{space:0},u=wineService.getMaxWineYield({grape:t,inventory:a,cellarInventory:o,cellarSize:l}),d=itemsMap[t.wineId],f=Math.min(n,u);for(let t=0;t<f;t++){let t=cellarService.generateKeg(d);e=addKegToCellarInventory(e,t)}e=decrementItemFromInventory(e,t.id,f*50);let m=getYeastRequiredForWine(t.variety);return e=decrementItemFromInventory(e,itemsMap.yeast.id,f*m),e};function randomChoice(e){let t=0,n=[];for(let a of e)t+=a.weight,n.push(a);n.sort((e,t)=>e.weight-t.weight);let a=random$1()*t,o,s=0;for(let e in n){if(o=n[e],a<o.weight+s)return o;s+=o.weight}return n[n.length-1]}var Factory=class{},SPAWNABLE_ORES=[goldOre,ironOre,bronzeOre,silverOre],OreFactory=class extends Factory{oreOptions=[];constructor(){super();for(let e of SPAWNABLE_ORES)this.oreOptions.push({ore:e,weight:e.spawnChance||0})}generate(){return[this.spawn()]}spawn(){return randomChoice(this.oreOptions).ore}},CoalFactory=class extends Factory{generate(){let e=[],t=chooseRandom([1,1,1,2,3]);for(let n=0;n<t;n++)e.push(this.spawnCoal());return e.push(this.spawnStone()),e}spawnCoal(){return coal$1}spawnStone(){return stone}},spawnableResources=[{resource:stone,spawnChance:STONE_SPAWN_CHANCE},{resource:saltRock,spawnChance:SALT_ROCK_SPAWN_CHANCE},{resource:coal$1,spawnChance:COAL_SPAWN_CHANCE}],StoneFactory=class extends Factory{generate(){let e=[];for(let{resource:t,spawnChance:n}of spawnableResources)randomNumberService.isRandomNumberLessThan(n)&&e.push(t);return e}},factoryInstances={},instance=null,ResourceFactory=class e{resourceOptions;constructor(){this.resourceOptions=[{weight:ORE_SPAWN_CHANCE,itemType:itemType.ORE},{weight:COAL_SPAWN_CHANCE,itemType:itemType.FUEL},{weight:STONE_SPAWN_CHANCE,itemType:itemType.STONE}]}static instance(){return instance||=new e,instance}static generateFactoryInstance(e){switch(e){case itemType.STONE:return new StoneFactory;case itemType.FUEL:return new CoalFactory;case itemType.ORE:return new OreFactory;default:return null}}static getFactoryForItemType=t=>(factoryInstances[t]||(factoryInstances[t]=e.generateFactoryInstance(t)),factoryInstances[t]);generateResources(t){let n=[],a=RESOURCE_SPAWN_CHANCE;switch(t){case toolLevel.BRONZE:a+=.1;break;case toolLevel.IRON:a+=.2;break;case toolLevel.SILVER:a+=.3;break;case toolLevel.GOLD:a+=.5;break;default:}if(randomNumberService.isRandomNumberLessThan(a)){let t=randomChoice(this.resourceOptions),a=e.getFactoryForItemType(t.itemType);if(a){let e=a.generate();e&&(n=Array.isArray(e)?e:[e])}}return n}},daysUntilClearPeriods=[1,2,2,3],minePlot=(e,t,n)=>{let{field:a}=e;if(a[n][t])return e;if(!doesInventorySpaceRemain(e))return showNotification(e,INVENTORY_FULL_NOTIFICATION);let o=e.toolLevels[toolType.SHOVEL],s=ResourceFactory.instance().generateResources(o),[l]=s,u=chooseRandom(daysUntilClearPeriods);if(l){let e=s.map(({spawnChance:e})=>e).filter(e=>e!=null),t=Math.min(...e);u+=Math.round(random$1()*(1-t)*10)}for(let t of s)e=addItemToInventory(e,t);return e=modifyFieldPlotAt(e,t,n,()=>({itemId:``,fertilizerType:fertilizerType.NONE,isShoveled:!0,daysUntilClear:u,oreId:l?.id??null})),{...e}},{FERTILIZE:FERTILIZE$2,OBSERVE:OBSERVE$4}=fieldMode,mulchItemIdToTypeMap={mulch:fertilizerType.STANDARD,"rainbow-mulch":fertilizerType.RAINBOW},mulchForestPlot=(e,t,n)=>{let{forest:a,selectedItemId:o}=e,s=a[n]?.[t];if(!s||!isPlantedTree(s)||itemsMap[o]?.type!==itemType.MULCH)return e;let l=o,u=e.inventory.find(e=>e.id===l);if(!u||(s.fertilizerType??fertilizerType.NONE)!==fertilizerType.NONE)return e;let{quantity:d}=u;e=decrementItemFromInventory(e,l);let f=d>1;return e={...e,mulchApplied:{...e.mulchApplied,[l]:(e.mulchApplied[l]||0)+1}},e=modifyForestPlotAt(e,t,n,e=>!e||!isPlantedTree(e)?e:{...e,fertilizerType:mulchItemIdToTypeMap[l]}),{...e,fieldMode:f?FERTILIZE$2:OBSERVE$4,selectedItemId:f?l:``}},offerCow=(e,t)=>(e={...e,cowIdOfferedForTrade:t},e),getTreeDeathChance=e=>Math.min(TREE_DEATH_CHANCE_MAX,TREE_DEATH_CHANCE_BASE+e*TREE_DEATH_CHANCE_INCREMENT_PER_DAY),MAX_ITERATIONS=1e3,getRandomLifespanExtension=()=>{let e=0;for(;e<MAX_ITERATIONS&&random$1()>=getTreeDeathChance(e);)e++;return e},getRandomizedLifespan=e=>{let t=e*(1-random$1()*TREE_LIFESPAN_VARIANCE_MAX);return Math.round(t+getRandomLifespanExtension())},{NONE:NONE$1}=fertilizerType,plantTreeInPlot=(e,t,n,a)=>{if(!a||!e.inventory.some(({id:e})=>e===a))return e;let o=e.forest[n];if(!o||o[t])return e;let s=getFinalCropItemIdFromSeedItemId(a);if(!s)return e;let l=itemsMap[s]?.lifespan,u=l===void 0?void 0:getRandomizedLifespan(l);return e=modifyForestPlotAt(e,t,n,()=>({itemId:s,daysOld:0,daysSinceLastHarvest:0,daysGrown:0,fertilizerType:NONE$1,...u!==void 0&&{lifespan:u}})),e=decrementItemFromInventory(e,a),{...e,selectedForestItemId:e.inventory.find(({id:e})=>e===a)?a:``}},prependPendingPeerMessage=(e,t,n=`info`)=>({...e,pendingPeerMessages:[{playerId:e.playerId,message:t,severity:n},...e.pendingPeerMessages].slice(0,5)}),purchaseCombine=(e,t)=>{let{money:n,purchasedCombine:a}=e;if(a>=t)return e;let o=PURCHASEABLE_COMBINES.get(t)?.price||0;return{...e,purchasedCombine:t,money:moneyTotal(n,-o)}},updateLearnedRecipes=e=>({...e,learnedRecipes:Object.keys(recipesMap).reduce((t,n)=>(recipesMap[n].condition(e)&&(t[n]=!0),t),{})}),purchaseComposter=(e,t)=>{let{money:n,purchasedComposter:a}=e;return a>=t?e:(e={...e,purchasedComposter:t,money:moneyTotal(n,-(PURCHASEABLE_COMPOSTERS.get(t)?.price??0))},e=showNotification(e,RECYCLING_AVAILABLE_NOTIFICATION),e=addExperience(e,EXPERIENCE_VALUES.COMPOSTER_ACQUIRED),updateLearnedRecipes(e))},getCowWeight=({baseWeight:e,weightMultiplier:t})=>Math.round(e*t),getCowValue=(e,t=!1)=>t?getCowWeight(e)*clampNumber(scaleNumber(e.daysOld,1,100,0,1),0,1):getCowWeight(e)*1.5,purchaseCow=(e,t)=>{let{cowInventory:n,cowColorsPurchased:a,playerId:o,money:s,purchasedCowPen:l}=e,{color:u}=t,d=getCowValue(t,!1);return s<d||l===0||n.length>=(PURCHASEABLE_COW_PENS.get(l)?.cows??0)?e:(e=addCowToInventory(e,{...t,ownerId:o,originalOwnerId:o}),{...e,cowColorsPurchased:{...a,[u]:(a[u]||0)+1},money:moneyTotal(s,-d),cowForSale:generateCow()})},purchaseCowPen=(e,t)=>{let{money:n,purchasedCowPen:a}=e;if(a>=t)return e;let o=PURCHASEABLE_COW_PENS.get(t);if(!o)return e;let{cows:s,price:l}=o;e=showNotification(e,COW_PEN_PURCHASED(``,s),`success`);let u=t>1?EXPERIENCE_VALUES.COW_PEN_EXPANDED:EXPERIENCE_VALUES.COW_PEN_ACQUIRED;return e=addExperience(e,u),{...e,purchasedCowPen:t,money:moneyTotal(n,-l)}},purchaseCellar=(e,t)=>{let{money:n,purchasedCellar:a}=e;if(a>=t)return e;let o=PURCHASEABLE_CELLARS.get(t);if(!o)return e;let{price:s,space:l}=o;e=showNotification(e,CELLAR_PURCHASED(``,l),`success`);let u=t>1?EXPERIENCE_VALUES.CELLAR_EXPANDED:EXPERIENCE_VALUES.CELLAR_ACQUIRED;return e=addExperience(e,u),{...e,purchasedCellar:t,money:moneyTotal(n,-s)}},nullArray=memoize(e=>Object.freeze(Array(e).fill(null)),{cacheSize:30}),purchaseField=(e,t)=>{let{field:n,money:a,purchasedField:o}=e;if(o>=t)return e;e=addExperience(e,EXPERIENCE_VALUES.FIELD_EXPANDED);let s=PURCHASEABLE_FIELD_SIZES.get(t);if(!s)return e;let{columns:l,price:u,rows:d}=s;return{...e,purchasedField:t,field:nullArray(d).map((e,t)=>nullArray(l).map((e,a)=>n[t]&&n[t][a]||null)),money:moneyTotal(a,-u)}},purchaseForest=(e,t)=>{let{forest:n,money:a,purchasedForest:o}=e;if(o>=t)return e;e=addExperience(e,EXPERIENCE_VALUES.FOREST_EXPANDED);let s=PURCHASABLE_FOREST_SIZES.get(t);if(!s)return e;let{columns:l,price:u,rows:d}=s,f=t===1?FOREST_AVAILABLE_NOTIFICATION:FOREST_EXPANDED`${d*l}`;return e=showNotification(e,f,`success`),{...e,purchasedForest:t,forest:nullArray(d).map((e,t)=>nullArray(l).map((e,a)=>n[t]&&n[t][a]||null)),money:moneyTotal(a,-u)}},getAdjustedItemValue=(e,t)=>Number(((e[t]||1)*itemsMap[t].value).toFixed(2)),purchaseItem=(e,t,n=1)=>{let{money:a,todaysPurchases:o,valueAdjustments:s}=e,l=Math.min(n,inventorySpaceRemaining(e));if(l===0)return e;let u=getAdjustedItemValue(s,t.id)*l;return u>a?e:(e=prependPendingPeerMessage(e,PURCHASED_ITEM_PEER_NOTIFICATION(``,n,t)),addItemToInventory({...e,money:moneyTotal(a,-u),todaysPurchases:{...o,[t.id]:(o[t.id]||0)+l}},t,l))},purchaseSmelter=(e,t)=>{let{money:n,purchasedSmelter:a}=e;return a>=t?e:(e={...e,purchasedSmelter:t,money:moneyTotal(n,-(PURCHASEABLE_SMELTERS.get(t)?.price??0))},e=showNotification(e,FORGE_AVAILABLE_NOTIFICATION),e=addExperience(e,EXPERIENCE_VALUES.SMELTER_ACQUIRED),updateLearnedRecipes(e))},getCostOfNextStorageExpansion=e=>500+(e-100)/100*50,purchaseStorageExpansion=e=>{let{money:t,inventoryLimit:n}=e,a=getCostOfNextStorageExpansion(n);return t<a||n===-1?e:{...e,inventoryLimit:n+100,money:moneyTotal(t,-a)}},purchaseWoodChipper=(e,t)=>{let{money:n,purchasedWoodChipper:a}=e;return a>=t?e:(e={...e,purchasedWoodChipper:t,money:moneyTotal(n,-(PURCHASEABLE_WOOD_CHIPPERS.get(t)?.price??0))},e=showNotification(e,WOOD_CHIPPER_AVAILABLE_NOTIFICATION),e=addExperience(e,EXPERIENCE_VALUES.WOOD_CHIPPER_ACQUIRED),updateLearnedRecipes(e))},removePeer=(e,t)=>{let n={...e.peers};return delete n[t],{...e,peers:n,activePlayers:(e.activePlayers??1)-1}},selectCow=(e,{id:t})=>({...e,selectedCowId:t}),cowColorToIdMap={[cowColors.BLUE]:`blue`,[cowColors.BROWN]:`brown`,[cowColors.GREEN]:`green`,[cowColors.ORANGE]:`orange`,[cowColors.PURPLE]:`purple`,[cowColors.RAINBOW]:`rainbow`,[cowColors.WHITE]:`white`,[cowColors.YELLOW]:`yellow`},getCowColorId=({color:e})=>`${cowColorToIdMap[e]}-cow`,sellCow=(e,t)=>{let{cowsSold:n}=e,a=getCowColorId(t),o=getCowValue(t,!0);e=removeCowFromInventory(e,t),e=addRevenue(e,o);let s={...n,[a]:(n[a]||0)+1};return e={...e,cowsSold:s},e},SEASON_ORDER=[season.SPRING,season.SUMMER,season.FALL,season.WINTER],seasonNameMap={[season.SPRING]:`Spring`,[season.SUMMER]:`Summer`,[season.FALL]:`Fall`,[season.WINTER]:`Winter`},seasonFilterMap={[season.SPRING]:`none`,[season.SUMMER]:`sepia(0.26) hue-rotate(-10deg) saturate(1.91) brightness(0.93) contrast(1.47)`,[season.FALL]:`sepia(0.13) hue-rotate(-38deg) saturate(1.34) brightness(0.97) contrast(1)`,[season.WINTER]:`sepia(0.59) hue-rotate(129deg) saturate(0.98) brightness(0.93) contrast(1.02)`},getCurrentSeason=e=>SEASON_ORDER[Math.floor((e-1)/15)%SEASON_ORDER.length],getResaleValue=({id:e})=>itemsMap[e].value/2,getSalePriceMultiplier=(e={})=>{let t=1;return e[`i-am-rich-3`]?t+=I_AM_RICH_BONUSES[2]:e[`i-am-rich-2`]?t+=I_AM_RICH_BONUSES[1]:e[`i-am-rich-1`]&&(t+=I_AM_RICH_BONUSES[0]),t},getSeasonalDemandStatus=(e,t)=>e.highDemandSeasons?.includes(t)?`HIGH`:e.lowDemandSeasons?.includes(t)?`LOW`:null,getSeasonalDemandMultiplier=(e,t)=>{let n=getSeasonalDemandStatus(e,t);return n===`HIGH`?1+SEASON_HIGH_DEMAND_BONUS:n===`LOW`?1-SEASON_LOW_DEMAND_PENALTY:1},inventory$1=[cowFeed$1,huggingMachine],inventory=[appleSapling,bananaSapling,mulch,asparagusSeed,carrotSeed,cornSeed,grapeSeed,garlicSeed,jalapenoSeed,oliveSeed,onionSeed,peaSeed,potatoSeed,pumpkinSeed,soybeanSeed,spinachSeed,sunflowerSeed,strawberrySeed,sugarcaneSeed,sweetPotatoSeed,tomatoSeed,watermelonSeed,wheatSeed,fertilizer,scarecrow,sprinkler,cowFeed$1,huggingMachine],itemIds$1=new Set(inventory.map(e=>e.id)),purchasableItemMap=[...inventory$1,...inventory].reduce((e,t)=>(e[t.id]=t,e),{}),isItemSoldInShop=({id:e})=>!!purchasableItemMap[e],sellItem=(e,{id:t},n=1)=>{if(n===0)return e;let a=itemsMap[t],{completedAchievements:o,dayCount:s,itemsSold:l,money:u,valueAdjustments:d}=e,{loanBalance:f}=e,m=isItemSoldInShop(a),h=m?getResaleValue(a):getAdjustedItemValue(d,t),v=m?1:getSeasonalDemandMultiplier(a,getCurrentSeason(s)),y=isItemAFarmProduct(a),b=h*(y?getSalePriceMultiplier(o):1)*v,x=0,S=0;for(let e=0;e<n;e++){let e=y?Math.min(f,castToMoney(b*LOAN_GARNISHMENT_RATE)):0;y&&(S+=EXPERIENCE_VALUES.ITEM_SOLD);let t=b-e;f=moneyTotal(f,-e),x=moneyTotal(x,t)}y&&(e=adjustLoan(e,moneyTotal(f,-e.loanBalance)));let C={...l,[t]:(l[t]||0)+n};return e=a.isPlantableCrop?{...e,money:moneyTotal(u,x)}:addRevenue({...e,money:u},x),e=addExperience(e,S),e={...e,itemsSold:C},e=decrementItemFromInventory(e,t,n),e=prependPendingPeerMessage(e,SOLD_ITEM_PEER_NOTIFICATION(``,n,a),`warning`),updateLearnedRecipes(e)},getItemBaseValue=e=>itemsMap[e].value,getKegValue=e=>{let{itemId:t,daysUntilMature:n}=e,a=itemsMap[t];if(n>0)return 0;let o=0,s=0,l=0;return wineService.isWineRecipe(a)?(o=a.value,s=WINE_INTEREST_RATE,l=Math.min(Math.max(-n,1),100)):(o=(a.tier??1)*getItemBaseValue(t),s=KEG_INTEREST_RATE,l=Math.abs(e.daysUntilMature)),o*(1+s)**l},sellKeg=(e,t)=>{let{itemId:n}=t,a=itemsMap[n],{cellarItemsSold:o,completedAchievements:s,itemsSold:l,money:u}=e,{loanBalance:d}=e,f=0,m=getKegValue(t),h=Math.min(d,castToMoney(m*LOAN_GARNISHMENT_RATE)),v=m*getSalePriceMultiplier(s)-h;d=moneyTotal(d,-h),f=moneyTotal(f,v),e=adjustLoan(e,moneyTotal(d,-e.loanBalance));let y={...l,[n]:(l[n]??0)+1},b={...o,[n]:(o[n]??0)+1};return e={...e,itemsSold:y,cellarItemsSold:b},e=addRevenue({...e,money:u},f),e=addExperience(e,EXPERIENCE_VALUES.KEG_SOLD),e=removeKegFromCellar(e,t.id),e=prependPendingPeerMessage(e,SOLD_FERMENTED_ITEM_PEER_NOTIFICATION`${a}`,`warning`),e=updateLearnedRecipes(e),e},{OBSERVE:OBSERVE$3,SET_LIGHTNING_ROD:SET_LIGHTNING_ROD$2}=fieldMode,setLightningRod=(e,t,n)=>{if(e.field[n][t]!==null)return e;let{selectedItemId:a}=e;e=decrementItemFromInventory(e,a);let o=e.inventory.some(e=>e.id===a);return e=modifyFieldPlotAt(e,t,n,()=>({itemId:a,fertilizerType:fertilizerType.NONE,lightningStrikesSustained:0})),{...e,fieldMode:o?SET_LIGHTNING_ROD$2:OBSERVE$3,selectedItemId:o?a:``}},{OBSERVE:OBSERVE$2,SET_SCARECROW:SET_SCARECROW$2}=fieldMode,setScarecrow=(e,t,n)=>{if(e.field[n][t]!==null)return e;e=decrementItemFromInventory(e,SCARECROW_ITEM_ID);let a=e.inventory.some(e=>e.id===SCARECROW_ITEM_ID);return e=modifyFieldPlotAt(e,t,n,()=>getPlotContentFromItemId(SCARECROW_ITEM_ID)),{...e,fieldMode:a?SET_SCARECROW$2:OBSERVE$2,selectedItemId:a?SCARECROW_ITEM_ID:``}},{OBSERVE:OBSERVE$1,SET_SPRINKLER:SET_SPRINKLER$2}=fieldMode,setSprinkler=(e,t,n)=>{let{field:a}=e;if(a[n][t]!==null)return e;e=decrementItemFromInventory(e,SPRINKLER_ITEM_ID);let o=e.inventory.some(e=>e.id===SPRINKLER_ITEM_ID);return e=modifyFieldPlotAt(e,t,n,()=>getPlotContentFromItemId(SPRINKLER_ITEM_ID)),e=processSprinklers(e),{...e,fieldMode:o?SET_SPRINKLER$2:OBSERVE$1,selectedItemId:o?SPRINKLER_ITEM_ID:``}},dollarString=e=>toDecimal(dinero({amount:Math.round(e),currency:USD,scale:0}),({value:e})=>Number(e).toLocaleString(`en-US`,{style:`currency`,currency:`USD`,minimumFractionDigits:0,maximumFractionDigits:0})),getProfitRecord=(e,t,n)=>Math.max(e,getProfit(t,n)),isOctober=()=>new Date().getMonth()===9,percentageString=e=>`${Math.round(e*100)}%`,{SEED:SEED$3}=cropLifeStage,addMoney=(e,t)=>({...e,money:moneyTotal(e.money,t)}),sumOfCropsHarvested=memoize(e=>Object.values(e).reduce((e,t)=>e+t,0),{}),sumOfPartialRecordValues=memoize(e=>Object.values(e).reduce((e,t)=>e+(t||0),0),{}),PIE_RECIPE_IDS=Object.values(recipesMap).filter(e=>e.isPie).map(e=>e.id),sumOfPiesMade=memoize(e=>PIE_RECIPE_IDS.reduce((t,n)=>t+(e[n]||0),0),{}),cowFeed=itemsMap[COW_FEED_ITEM_ID],progressAchievement=(e,t)=>({condition:n=>t(n)>=e,getProgress:n=>({currentValue:t(n),goal:e})}),achievements=[((e=100)=>({id:`plant-crop`,name:`Plant a Crop`,description:`Purchase a seed and plant it in the field.`,rewardDescription:dollarString(e),condition:e=>!!findInField(e.field,e=>e!==null&&doesPlotContainCrop(e)&&getCropLifeStage(e)===SEED$3),reward:t=>addMoney(t,e)}))(),((e=150)=>({id:`water-crop`,name:`Water a Crop`,description:`Water a crop that you planted.`,rewardDescription:dollarString(e),condition:e=>!!findInField(e.field,e=>doesPlotContainCrop(e)&&!!e.wasWateredToday),reward:t=>addMoney(t,e)}))(),((e=200)=>({id:`harvest-crop`,name:`Harvest a Crop`,description:`Harvest a crop that you planted.`,rewardDescription:dollarString(e),condition:e=>sumOfCropsHarvested(e.cropsHarvested)>=1,reward:t=>addMoney(t,e)}))(),((e=EXPERIENCE_VALUES.LOAN_PAID_OFF)=>({id:`financial-freedom`,name:`Financial Freedom`,description:`Pay off your initial loan from the bank.`,rewardDescription:`${e} experience points`,condition:e=>e.loanBalance===0,reward:t=>addExperience(t,e)}))(),((e=1e4)=>({id:`unlock-crop-price-guide`,name:`Prove Yourself as a Farmer`,description:`Show that you can run a farm by earning at least ${dollarString(e)}. Proven farmers get access to the Crop Price Guide, an invaluable tool for making better buying and selling decisions!`,rewardDescription:`Crop Price Guide`,...progressAchievement(e,e=>e.revenue),reward:e=>e}))(),((e=15)=>({id:`purchase-cow-pen`,name:`Purchase a Cow Pen`,description:`Construct any size cow pen to let your bovine buddies moo-ve on in!`,rewardDescription:`${e} units of ${cowFeed.name}`,condition:e=>e.purchasedCowPen>0,reward:t=>addItemToInventory(t,cowFeed,e,!0)}))(),((e=100,t=Object.keys(standardCowColors).length)=>({id:`purchase-all-cow-colors`,name:`Cows of Many Colors`,description:`Show that you love all cows and purchase one of every color.`,rewardDescription:`${e} units of ${cowFeed.name}`,...progressAchievement(t,e=>Object.values(standardCowColors).filter(t=>(e.cowColorsPurchased[t]||0)>0).length),reward:t=>addItemToInventory(t,cowFeed,e,!0)}))(),((e=150)=>({id:`play-during-october`,name:`Halloween Harvest`,description:`Play Farmhand in October and get the gift of the season.`,rewardDescription:`${e} units of ${itemsMap.jackolantern.name}`,condition:()=>isOctober(),reward:t=>addItemToInventory(t,itemsMap.jackolantern,e,!0)}))(),((e=100,t=1e4)=>({id:`sell-10000-jack-o-lanterns`,name:`Spooky Pumpkin Patch`,description:`Sell ${integerString(t)} units of ${itemsMap.jackolantern.name}. That's enough to fill a whole pumpkin patch!`,rewardDescription:`${e} units of ${itemsMap.scarecrow.name}`,...progressAchievement(t,e=>e.itemsSold.jackolantern||0),reward:t=>addItemToInventory(t,itemsMap.scarecrow,e,!0)}))(),((e=5e3,t=25)=>({id:`daily-profit-1`,name:`Daily profit: ${dollarString(e)}`,description:`Earn ${dollarString(e)} of profit in a single day.`,rewardDescription:`${t} units of ${itemsMap.fertilizer.name}`,...progressAchievement(e,e=>getProfitRecord(e.recordSingleDayProfit,e.todaysRevenue,e.todaysLosses)),reward:e=>addItemToInventory(e,itemsMap.fertilizer,t,!0)}))(),((e=15e3,t=50)=>({id:`daily-profit-2`,name:`Daily profit: ${dollarString(e)}`,description:`Earn ${dollarString(e)} of profit in a single day.`,rewardDescription:`${t} units of ${itemsMap[`onion-seed`].name}`,...progressAchievement(e,e=>getProfitRecord(e.recordSingleDayProfit,e.todaysRevenue,e.todaysLosses)),reward:e=>addItemToInventory(e,itemsMap[`onion-seed`],t,!0)}))(),((e=5e4,t=100)=>({id:`daily-profit-3`,name:`Daily profit: ${dollarString(e)}`,description:`Earn ${dollarString(e)} of profit in a single day.`,rewardDescription:`${t} units of ${itemsMap[`tomato-seed`].name}`,...progressAchievement(e,e=>getProfitRecord(e.recordSingleDayProfit,e.todaysRevenue,e.todaysLosses)),reward:e=>addItemToInventory(e,itemsMap[`tomato-seed`],t,!0)}))(),((e=2500,t=35,n=itemsMap[`pumpkin-seed`])=>({id:`profit-average-1`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=1e4,t=100,n=itemsMap[`potato-seed`])=>({id:`profit-average-2`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=25e3,t=250,n=itemsMap[`soybean-seed`])=>({id:`profit-average-3`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=5e4,t=300,n=itemsMap[`chocolate-milk`])=>({id:`profit-average-4`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=15e4,t=500,n=itemsMap[`rainbow-milk-3`])=>({id:`profit-average-5`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=1e6,t=1e3,n=itemsMap.rainbowCheese)=>({id:`profit-average-6`,name:`7-day profit average: ${dollarString(e)}`,description:`Reach a 7-day profit average of ${dollarString(e)}.`,rewardDescription:`${t} units of ${n.name}`,...progressAchievement(e,e=>e.record7dayProfitAverage),reward:e=>addItemToInventory(e,n,t,!0)}))(),((e=1e4,t=itemsMap[`milk-3`],n=5e3,a=itemsMap.fertilizer)=>({id:`sale-goal-1`,name:`Dairy Master`,description:`Sell ${integerString(e)} units of ${t.name}.`,rewardDescription:`${integerString(n)} ${a.name} units`,...progressAchievement(e,e=>e.itemsSold[t.id]||0),reward:e=>addItemToInventory(e,a,n,!0)}))(),((e=1e3,t=itemsMap[`rainbow-milk-2`],n=500,a=itemsMap.scarecrow)=>({id:`sale-goal-2`,name:`A Big Average Rainbow`,description:`Sell ${integerString(e)} units of ${t.name}.`,rewardDescription:`${integerString(n)} ${a.name} units`,...progressAchievement(e,e=>e.itemsSold[t.id]||0),reward:e=>addItemToInventory(e,a,n,!0)}))(),((e=1e4,t=itemsMap.burger,n=5e3)=>({id:`sale-goal-3`,name:`Burger Master`,description:`Sell ${integerString(e)} ${t.name} units.`,rewardDescription:`${integerString(n)} additional inventory spaces`,...progressAchievement(e,e=>e.itemsSold[t.id]||0),reward:e=>({...e,inventoryLimit:e.inventoryLimit+n})}))(),((e=1e3,t=100)=>({id:`steady-stasher`,name:`Steady Stasher`,description:`Expand your storage capacity to ${integerString(e)} units.`,rewardDescription:`${integerString(t)} additional inventory spaces`,...progressAchievement(e,e=>e.inventoryLimit),reward:e=>({...e,inventoryLimit:e.inventoryLimit+t})}))(),((e=1e4,t=1e3)=>({id:`heavy-hoarder`,name:`Heavy Hoarder`,description:`Expand your storage capacity to ${integerString(e)} units.`,rewardDescription:`${integerString(t)} additional inventory spaces`,...progressAchievement(e,e=>e.inventoryLimit),reward:e=>({...e,inventoryLimit:e.inventoryLimit+t})}))(),((e=1e5,t=1e4)=>({id:`pro-prepper`,name:`Pro Prepper`,description:`Expand your storage capacity to ${integerString(e)} units.`,rewardDescription:`${integerString(t)} additional inventory spaces`,...progressAchievement(e,e=>e.inventoryLimit),reward:e=>({...e,inventoryLimit:e.inventoryLimit+t})}))(),((e=5e5)=>({id:`i-am-rich-1`,name:`I am Rich!`,description:`Earn ${dollarString(e)}.`,rewardDescription:`All sales receive a ${percentageString(I_AM_RICH_BONUSES[0])} bonus`,...progressAchievement(e,e=>e.revenue),reward:e=>e}))(),((e=1e6)=>({id:`i-am-rich-2`,name:`Millionaire`,description:`Earn ${dollarString(e)}.`,rewardDescription:`All sales receive a ${percentageString(I_AM_RICH_BONUSES[1])} bonus`,...progressAchievement(e,e=>e.revenue),reward:e=>e}))(),((e=1e9)=>({id:`i-am-rich-3`,name:`Billionaire`,description:`Earn ${dollarString(e)}.`,rewardDescription:`All sales receive a ${percentageString(I_AM_RICH_BONUSES[2])} bonus`,...progressAchievement(e,e=>e.revenue),reward:e=>e}))(),((e=Math.floor(Math.PI*1e6),t=1e3)=>({id:`lord-of-the-pies`,name:`Lord of the Pies`,description:`Have ${dollarString(e)} on hand.`,rewardDescription:`${integerString(t)} units of ${itemsMap[`pumpkin-pie`].name}`,condition:t=>Math.floor(t.money)===e,reward:e=>addItemToInventory(e,itemsMap[`pumpkin-pie`],t,!0)}))(),{id:`gold-digger`,name:`Gold Digger`,description:`Dig up your first piece of gold.`,rewardDescription:`A Gold Ingot`,condition:e=>!!e.inventory.find(e=>e.id===`gold-ore`),reward:e=>addItemToInventory(e,itemsMap[`gold-ingot`],1,!0)},((e=1e3,t=50)=>({id:`orchardist`,name:`Orchardist`,description:`Pick ${integerString(e)} fruits from trees in the Forest.`,rewardDescription:`${t} units of ${itemsMap[`apple-sapling`].name}`,...progressAchievement(e,e=>sumOfPartialRecordValues(e.treeFruitsHarvested)),reward:e=>addItemToInventory(e,itemsMap[`apple-sapling`],t,!0)}))(),((e=100,t=1e5)=>({id:`piemaker`,name:`Piemaker`,description:`Make ${integerString(e)} pies.`,rewardDescription:dollarString(t),...progressAchievement(e,e=>sumOfPiesMade(e.recipesMade)),reward:e=>addMoney(e,t)}))(),((e=250,t=500)=>({id:`deforestation`,name:`Deforestation`,description:`Chop down ${integerString(e)} trees in the Forest.`,rewardDescription:`${t} units of ${itemsMap.wood.name}`,...progressAchievement(e,e=>e.treesChopped),reward:e=>addItemToInventory(e,itemsMap.wood,t,!0)}))(),((e=100,t=25)=>({id:`landscaper`,name:`Landscaper`,description:`Spread ${integerString(e)} bags of mulch (of any type) on trees in the Forest.`,rewardDescription:`${t} units of ${itemsMap[`rainbow-mulch`].name}`,...progressAchievement(e,e=>sumOfPartialRecordValues(e.mulchApplied)),reward:e=>addItemToInventory(e,itemsMap[`rainbow-mulch`],t,!0)}))()],achievementsMap=achievements.reduce((e,t)=>(e[t.id]=t,e),{}),updateAchievements=(e,t)=>achievements.reduce((e,n)=>(!e.completedAchievements[n.id]&&n.condition(e,t)&&(e={...n.reward(e),completedAchievements:{...e.completedAchievements,[n.id]:!0}},e=showNotification(e,ACHIEVEMENT_COMPLETED(``,{name:n.name,rewardDescription:n.rewardDescription}),`success`)),e),e),updatePeer=(e,t,n,a)=>{let o={...e.peers},s=o[a]?.cowOfferedForTrade?.id,l=n.cowOfferedForTrade?.id,u=l&&s!==l;o[a]=n;let{pendingPeerMessages:d=[]}=n;return u&&(e=showNotification(e,NEW_COW_OFFERED_FOR_TRADE`${n}`,`info`,()=>{t.openDialogView(dialogView.ONLINE_PEERS)})),{...e,peers:o,latestPeerMessages:[...d,...e.latestPeerMessages].slice(0,30)}},upgradeTool=(e,t)=>{if(!t.toolType||!t.level)return e;let n=e;if(e=consumeIngredients(e,{...t,ingredients:t.ingredients||{}},1,EXPERIENCE_VALUES.FORGE_RECIPE_MADE),e===n)return e;e=addItemToInventory(e,t,1);let a=upgrades[t.toolType],o=e.toolLevels[t.toolType],s=a?.[o]?.name||``;return e.toolLevels[t.toolType]=t.level,e=showNotification(e,TOOL_UPGRADED_NOTIFICATION(``,s,t.name)),{...e}},waterAllPlots=e=>waterField(e),waterPlot=(e,t,n)=>{let a=e.field[n][t];return a&&getPlotContentType(a)===itemType.CROP?modifyFieldPlotAt(e,t,n,e=>e&&{...e,wasWateredToday:!0}):e},withdrawCow=(e,t)=>{let{cowIdOfferedForTrade:n}=e;return t===n&&(e={...e,cowIdOfferedForTrade:``}),e},reducers_exports=__exportAll({addCowToInventory:()=>addCowToInventory,addExperience:()=>addExperience,addItemToInventory:()=>addItemToInventory,addPeer:()=>addPeer,addRevenue:()=>addRevenue,adjustLoan:()=>adjustLoan,applyPrecipitation:()=>applyPrecipitation,changeCowAutomaticHugState:()=>changeCowAutomaticHugState,changeCowBreedingPenResident:()=>changeCowBreedingPenResident,changeCowName:()=>changeCowName,chopForestPlot:()=>chopForestPlot,clearPlot:()=>clearPlot,computeCowInventoryForNextDay:()=>computeCowInventoryForNextDay,computeStateForNextDay:()=>computeStateForNextDay,createPriceEvent:()=>createPriceEvent,decrementItemFromInventory:()=>decrementItemFromInventory,fertilizePlot:()=>fertilizePlot,forRange:()=>forRange,generatePriceEvents:()=>generatePriceEvents,harvestForestPlot:()=>harvestForestPlot,harvestPlot:()=>harvestPlot,hugCow:()=>hugCow,incrementPlotContentAge:()=>incrementPlotContentAge,makeFermentationRecipe:()=>makeFermentationRecipe,makeRecipe:()=>makeRecipe,makeWine:()=>makeWine,minePlot:()=>minePlot,modifyCow:()=>modifyCow,modifyFieldPlotAt:()=>modifyFieldPlotAt,modifyForestPlotAt:()=>modifyForestPlotAt,mulchForestPlot:()=>mulchForestPlot,offerCow:()=>offerCow,plantInPlot:()=>plantInPlot,plantTreeInPlot:()=>plantTreeInPlot,prependPendingPeerMessage:()=>prependPendingPeerMessage,processCowAttrition:()=>processCowAttrition,processCowBreeding:()=>processCowBreeding,processCowFertilizerProduction:()=>processCowFertilizerProduction,processFeedingCows:()=>processFeedingCows,processField:()=>processField,processForest:()=>processForest,processLevelUp:()=>processLevelUp,processMilkingCows:()=>processMilkingCows,processNerfs:()=>processNerfs,processSprinklers:()=>processSprinklers,processWeather:()=>processWeather,purchaseCellar:()=>purchaseCellar,purchaseCombine:()=>purchaseCombine,purchaseComposter:()=>purchaseComposter,purchaseCow:()=>purchaseCow,purchaseCowPen:()=>purchaseCowPen,purchaseField:()=>purchaseField,purchaseForest:()=>purchaseForest,purchaseItem:()=>purchaseItem,purchaseSmelter:()=>purchaseSmelter,purchaseStorageExpansion:()=>purchaseStorageExpansion,purchaseWoodChipper:()=>purchaseWoodChipper,removeCowFromInventory:()=>removeCowFromInventory,removeFieldPlotAt:()=>removeFieldPlotAt,removeKegFromCellar:()=>removeKegFromCellar,removePeer:()=>removePeer,rotateNotificationLogs:()=>rotateNotificationLogs,selectCow:()=>selectCow,sellCow:()=>sellCow,sellItem:()=>sellItem,sellKeg:()=>sellKeg,setLightningRod:()=>setLightningRod,setScarecrow:()=>setScarecrow,setSprinkler:()=>setSprinkler,showNotification:()=>showNotification,spawnWeeds:()=>spawnWeeds,unlockTool:()=>unlockTool,updateAchievements:()=>updateAchievements,updateFinancialRecords:()=>updateFinancialRecords,updateInventoryRecordsForNextDay:()=>updateInventoryRecordsForNextDay,updateLearnedRecipes:()=>updateLearnedRecipes,updatePeer:()=>updatePeer,updatePlotShoveledState:()=>updatePlotShoveledState,updatePriceEvents:()=>updatePriceEvents,upgradeTool:()=>upgradeTool,waterAllPlots:()=>waterAllPlots,waterField:()=>waterField,waterPlot:()=>waterPlot,withdrawCow:()=>withdrawCow}),{CHOP:CHOP$2,CLEANUP:CLEANUP$4,FERTILIZE:FERTILIZE$1,HARVEST:HARVEST$3,HARVEST_FRUIT:HARVEST_FRUIT$2,MINE:MINE$3,PLANT:PLANT$2,SET_LIGHTNING_ROD:SET_LIGHTNING_ROD$1,SET_SCARECROW:SET_SCARECROW$1,SET_SPRINKLER:SET_SPRINKLER$1,WATER:WATER$3}=fieldMode,{GROWN:GROWN$4}=cropLifeStage,ui_events_default={handleItemPurchaseClick(e,t=1){this.purchaseItem(e,t)},handleMakeRecipeClick(e,t=1){this.makeRecipe(e,t)},handleMakeFermentationRecipeClick(e,t=1){this.makeFermentationRecipe(e,t)},handleMakeWineClick(e,t=1){this.makeWine(e,t)},handleSellKegClick(e){this.sellKeg(e)},handleThrowAwayKegClick(e){this.removeKegFromCellar(e.id)},handleUpgradeTool(e){this.upgradeTool(e)},handleCowPurchaseClick(e){this.purchaseCow(e)},handleCowSellClick(e){this.sellCow(e)},handleCowTradeClick(e){this.tradeForPeerCow(e)},handleCowAutomaticHugChange({target:{checked:e}},t){this.changeCowAutomaticHugState(t,e)},handleCowBreedChange({target:e},t){let{checked:n}=e;this.changeCowBreedingPenResident(t,n)},handleCowHugClick(e){this.hugCow(e.id)},handleCowOfferClick(e){this.offerCow(e.id)},handleCowWithdrawClick(e){this.withdrawCow(e.id)},handleCowNameInputChange(e,t){this.changeCowName(t.id,e)},handleItemSellClick(e,t=1){this.sellItem(e,t)},handleViewChange({target:e}){let{value:t}=e;this.setState({stageFocus:t})},handleViewChangeButtonClick(e){this.setState({stageFocus:e})},handleFieldModeSelect(e){this.setState(({selectedItemId:t})=>({selectedItemId:e!==PLANT$2||TOOLBELT_FIELD_MODES.has(e)?``:t,selectedForestItemId:``,fieldMode:e}))},handleItemSelectClick({id:e,enablesFieldMode:t}){this.setState({fieldMode:t,selectedItemId:e})},handleForestItemSelectClick({id:e}){this.setState({fieldMode:PLANT$2,selectedForestItemId:e})},handlePlotClick(e,t){let{fieldMode:n,hoveredPlotRangeSize:a,selectedItemId:o}=this.state;n===PLANT$2?this.forRange(plantInPlot,a,e,t,o):n===HARVEST$3?this.forRange(harvestPlot,a,e,t):n===MINE$3?this.forRange(minePlot,a,e,t):n===CLEANUP$4?this.forRange(clearPlot,a,e,t):n===WATER$3?this.forRange(waterPlot,a,e,t):n===FERTILIZE$1?this.forRange(fertilizePlot,a,e,t):n===SET_SPRINKLER$1?this.setSprinkler(e,t):n===SET_SCARECROW$1?this.setScarecrow(e,t):n===SET_LIGHTNING_ROD$1&&this.setLightningRod(e,t)},handleFieldActionRangeChange(e){this.setState(()=>({hoveredPlotRangeSize:e}))},handleClickEndDayButton(){this.incrementDay(),document.activeElement?.blur()},handleAddMoneyClick(e){this.setState(({money:t})=>({money:moneyTotal(t,e)}))},handleClearPersistedDataClick(){this.clearPersistedData()},handleWaterAllPlotsClick(){this.waterAllPlots(this.state)},handleFieldPurchase(e){this.purchaseField(e)},handleForestPurchase(e){this.purchaseForest(e)},handleForestPlotClick(e,t){let n=this.state.forest[t]?.[e];if(this.state.fieldMode===CHOP$2){isPlantedTree(n)&&this.chopForestPlot(e,t);return}if(this.state.fieldMode===FERTILIZE$1){isPlantedTree(n)&&this.mulchForestPlot(e,t);return}if(!n){let{selectedForestItemId:n,inventory:a}=this.state;n&&a.some(({id:e})=>e===n)&&this.plantTreeInPlot(e,t,n);return}this.state.fieldMode===HARVEST_FRUIT$2&&isPlantedTree(n)&&getTreeLifeStage(n)===GROWN$4&&this.harvestForestPlot(e,t)},handleCombinePurchase(e){this.purchaseCombine(e)},handleComposterPurchase(e){this.purchaseComposter(e)},handleSmelterPurchase(e){this.purchaseSmelter(e)},handleWoodChipperPurchase(e){this.purchaseWoodChipper(e)},handleCowPenPurchase(e){this.purchaseCowPen(e)},handleCellarPurchase(e){this.purchaseCellar(e)},handleStorageExpansionPurchase(){this.purchaseStorageExpansion()},handleMenuToggle(e=void 0){this.setState(({isMenuOpen:t})=>({isMenuOpen:e??!t}))},handleClickNextMenuButton(){this.focusNextView()},handleClickPreviousMenuButton(){this.focusPreviousView()},handleCowSelect(e){this.selectCow(e)},handleCowClick(e){this.selectCow(e),this.hugCow(e.id)},handleCowPenUnmount(){this.setState({selectedCowId:``})},handleClickDialogViewButton(e){this.openDialogView(e)},handleCloseDialogView(){this.state.isAwaitingCowTradeRequest||this.closeDialogView()},handleDialogViewExited(){this.setState({currentDialogView:dialogView.NONE})},handleClickLoanPaydownButton(e){this.adjustLoan(-e)},handleClickTakeOutLoanButton(e){this.adjustLoan(e)},handleExportDataClick(){let e=new Blob([JSON.stringify(reduceByPersistedKeys(this.state),null,2)],{type:`application/json;charset=utf-8`}),[t]=new Date().toISOString().split(`T`);(0,import_FileSaver_min.saveAs)(e,`farmhand-${t}.json`)},handleImportDataClick([e]){let[,t]=e,n=new FileReader;n.addEventListener(`loadend`,e=>{try{let t=e.target,n=String(t?.result),a=reduceByPersistedKeys(transformStateDataForImport(JSON.parse(n)));if(Object.keys(a).some(e=>typeof this.state[e]!=typeof a[e]))throw Error(INVALID_DATA_PROVIDED);this.setState({...transformStateDataForImport({...this.createInitialState?this.createInitialState():{},...a}),hasBooted:!0}),this.showNotification(`Data loaded!`,`success`)}catch(e){console.error(e),this.showNotification(e.message,`error`)}}),n.readAsText(t.slice())},async handleSaveButtonClick(){await this.persistState(),this.showNotification(PROGRESS_SAVED_MESSAGE,`info`)},handleFarmNameUpdate(e){this.setState({farmName:e})},handleCombineEnabledChange(e,t){this.setState({isCombineEnabled:t})},handleUseAlternateEndDayButtonPositionChange(e,t){this.setState({useAlternateEndDayButtonPosition:t})},handleAllowCustomPeerCowNamesChange(e,t){this.setState({allowCustomPeerCowNames:t})},handleShowHomeScreenChange(e,t){this.state.stageFocus===stageFocusType.HOME&&!t&&this.focusNextView(),this.setState({showHomeScreen:t})},handleShowNotificationsChange({target:{checked:e}}){this.setState({showNotifications:e})},handleClickNotificationIndicator(){this.openDialogView(dialogView.FARMERS_LOG)},handleOnlineToggleChange(e){e||this.showNotification(DISCONNECTING_FROM_SERVER,`info`),this.setState(({room:t,cowIdOfferedForTrade:n})=>e?{redirect:withCurrentHashQuery(`/online/${encodeURIComponent(t)}`),cowIdOfferedForTrade:n,isOnline:!0}:{redirect:withCurrentHashQuery(`/`),cowIdOfferedForTrade:``})},handleRoomChange(e){this.setState(()=>({room:e,redirect:withCurrentHashQuery(`/online/${encodeURIComponent(e.trim()||`global`)}`)}))},handleActivePlayerButtonClick(){this.openDialogView(dialogView.ONLINE_PEERS)},handleRNGSeedChange(e){let{origin:t,pathname:n,search:a,hash:o}=import_window.default.location,s=new URLSearchParams(a),l=e.trim();l===``?(randomNumberService.unseedRandomNumber(),s.delete(`seed`),this.showNotification(`Random seed reset`,`info`)):(randomNumberService.seedRandomNumber(l),s.set(`seed`,l),this.showNotification(`Random seed set to "${l}"`,`success`));let u=s.toString(),d=`${t}${n}${u.length>0?`?${u}`:``}${o}`;import_window.default.history.replaceState({},``,d)},handleChatRoomOpenStateChange(e){this.setState({isChatOpen:e})},handleGameUpdateAvailable(e){this.showNotification(UPDATE_AVAILABLE,`success`,()=>{e(!0)})}},createContextData=()=>({gameState:{viewTitle:``,viewList:[],features:{},blockInput:!1,shopInventory:[],isChatAvailable:!1,playerInventory:[],levelEntitlements:{items:{},tools:{},sprinklerRange:0,stageFocusType:{}},fieldToolInventory:[],mulchInventory:[],plantableCropInventory:[],plantableTreeInventory:[],playerInventoryQuantities:{},activePlayers:null,allowCustomPeerCowNames:!1,cellarInventory:[],currentDialogView:`NONE`,completedAchievements:{},cowForSale:generateCow(),cowBreedingPen:{cowId1:null,cowId2:null,daysUntilBirth:0},cowInventory:[],cowColorsPurchased:{BLUE:0,BROWN:0,GREEN:0,ORANGE:0,PURPLE:0,RAINBOW:0,WHITE:0,YELLOW:0},cowIdOfferedForTrade:``,cowsSold:{},cowsTraded:0,cowTradeTimeoutId:null,cropsHarvested:{ASPARAGUS:0,CARROT:0,CORN:0,GARLIC:0,GRAPE:0,JALAPENO:0,OLIVE:0,ONION:0,PEA:0,POTATO:0,PUMPKIN:0,SOYBEAN:0,SPINACH:0,SUNFLOWER:0,STRAWBERRY:0,SWEET_POTATO:0,TOMATO:0,WATERMELON:0,WHEAT:0,WEED:0},dayCount:0,experience:0,farmName:``,field:[[]],forest:[[]],treesChopped:0,treeFruitsHarvested:{},mulchApplied:{},fieldMode:`OBSERVE`,getCowAccept:()=>{},getCowReject:()=>{},getCowTradeRequest:()=>{},getPeerMetadata:()=>{},hasBooted:!0,hasProducedRainbowFertilizer:!1,heartbeatTimeoutId:-1,historicalDailyLosses:[],historicalDailyRevenue:[],historicalValueAdjustments:[],hoveredPlotRangeSize:0,playerId:``,inventory:[{id:scarecrow.id,quantity:1}],inventoryLimit:-1,isAwaitingCowTradeRequest:!1,isAwaitingNetworkRequest:!1,isCombineEnabled:!0,isMenuOpen:!1,itemsSold:{},cellarItemsSold:{},isChatOpen:!1,isDialogViewOpen:!1,isOnline:!0,isWaitingForDayToCompleteIncrementing:!1,learnedRecipes:{},loanBalance:0,loansTakenOut:0,money:0,latestNotification:null,newDayNotifications:[],notificationLog:[],peers:{},peerRoom:null,pendingPeerMessages:[],latestPeerMessages:[],sendCowAccept:()=>{},sendCowReject:()=>{},sendCowTradeRequest:()=>{},sendPeerMetadata:()=>{},selectedCowId:``,selectedForestItemId:``,selectedItemId:``,priceCrashes:{},priceSurges:{},purchasedCombine:0,purchasedComposter:0,purchasedCowPen:0,purchasedCellar:0,purchasedField:0,purchasedForest:0,purchasedSmelter:0,purchasedWoodChipper:0,profitabilityStreak:0,recipesMade:{},record7dayProfitAverage:0,recordProfitabilityStreak:0,recordSingleDayProfit:0,revenue:0,redirect:``,room:``,showHomeScreen:!0,showNotifications:!0,stageFocus:`HOME`,todaysLosses:0,todaysPurchases:{},todaysRevenue:0,todaysStartingInventory:{},toolLevels:{AXE:`UNAVAILABLE`,PICKER_POLE:`UNAVAILABLE`,SCYTHE:`DEFAULT`,SHOVEL:`DEFAULT`,HOE:`DEFAULT`,WATERING_CAN:`DEFAULT`},valueAdjustments:{},version:`1.0.0`,todaysNotifications:[],useAlternateEndDayButtonPosition:!1},handlers:{...ui_events_default,debounced:{...ui_events_default}}}),FarmhandContext=(0,import_react$24.createContext)(createContextData()),getDayOfSeason=e=>(e-1)%15+1,usePrefersReducedMotion=()=>{let[e,t]=(0,import_react$24.useState)(()=>typeof window>`u`||!window.matchMedia?!1:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches);return(0,import_react$24.useEffect)(()=>{if(typeof window>`u`||!window.matchMedia)return;let e=window.matchMedia(`(prefers-reduced-motion: reduce)`),n=e=>{t(e.matches)};return e.addEventListener?e.addEventListener(`change`,n):`addListener`in e&&e.addListener(n),()=>{e.removeEventListener?e.removeEventListener(`change`,n):`removeListener`in e&&e.removeListener(n)}},[]),e},MoneyDisplay=({money:e})=>{let t=`rgb(255, 255, 255)`,n=usePrefersReducedMotion(),[a,o]=(0,import_react$24.useState)(e),[s,l]=(0,import_react$24.useState)(t),u=(0,import_react$24.useRef)(e),d=(0,import_react$24.useRef)(null);return(0,import_react$24.useEffect)(()=>{if(d.current?.cancel(),d.current=null,n||u.current===e){u.current=e,o(e),l(t);return}let a=e>u.current?`rgb(0, 255, 0)`:`rgb(255, 0, 0)`;return d.current=(0,import_shifty.tween)({easing:`easeOutQuad`,duration:750,render:({color:e,money:t})=>{l(String(e)),o(Number(t))},from:{color:a,money:u.current},to:{color:t,money:e}}),u.current=e,()=>{d.current?.cancel(),d.current=null}},[e,n]),(0,import_jsx_runtime.jsx)(`span`,{style:{color:s},children:moneyString(a)})},AppBar=({dayCount:e,handleClickNotificationIndicator:t,money:n,showNotifications:a,todaysNotifications:o,viewTitle:s,areAnyNotificationsErrors:l=o.some(({severity:e})=>e===`error`)})=>(0,import_jsx_runtime.jsx)(AppBar$1,{className:`AppBar top-level`,position:`fixed`,sx:{"& .toolbar":{display:`flex`,"& h2":{color:`#fff`,fontFamily:`"Francois One", monospace`,fontSize:`1.2em`},"& .stage-header":{display:`none`,marginLeft:`1em`,[`@media (min-width: ${breakpoints.largePhone}px)`]:{display:`block`}},"& .season-display":{marginLeft:`1em`,[`@media (min-width: ${breakpoints.largePhone}px)`]:{position:`absolute`,left:`50%`,marginLeft:0,transform:`translateX(-50%)`}},"& .money-display":{position:`absolute`,right:`1em`},"& .notification-indicator-container":{display:`flex`,"& .error-indicator":{marginLeft:`1em`}}}},children:(0,import_jsx_runtime.jsxs)(Toolbar,{className:`toolbar`,children:[!a&&(0,import_jsx_runtime.jsxs)(`div`,{className:`notification-indicator-container`,onClick:t,children:[(0,import_jsx_runtime.jsx)(Typography,{children:(0,import_jsx_runtime.jsx)(StepIcon,{icon:o.length})}),l&&(0,import_jsx_runtime.jsx)(Typography,{className:`error-indicator`,children:(0,import_jsx_runtime.jsx)(StepIcon,{error:!0,icon:``})})]}),(0,import_jsx_runtime.jsx)(Typography,{className:`stage-header`,variant:`h2`,children:s}),(0,import_jsx_runtime.jsx)(Typography,{className:`season-display`,variant:`h2`,children:`Day ${getDayOfSeason(e)} of ${seasonNameMap[getCurrentSeason(e)]}`}),(0,import_jsx_runtime.jsx)(Typography,{className:`money-display`,variant:`h2`,children:(0,import_jsx_runtime.jsx)(MoneyDisplay,{money:n})})]})});AppBar.propTypes={dayCount:import_prop_types$1.number.isRequired,handleClickNotificationIndicator:import_prop_types$1.func.isRequired,money:import_prop_types$1.number.isRequired,showNotifications:import_prop_types$1.bool.isRequired,todaysNotifications:import_prop_types$1.array.isRequired,viewTitle:import_prop_types$1.string.isRequired};function Consumer$29(e){return(0,import_jsx_runtime.jsx)(FarmhandContext.Consumer,{children:({gameState:t,handlers:n})=>(0,import_jsx_runtime.jsx)(AppBar,{...t,...n,...e})})}var require_lib$5=__commonJSMin(((e,t)=>{function n(e){return e&&typeof e==`object`&&`default`in e?e.default:e}var a=require_react(),o=n(a);function s(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var u=!!(typeof window<`u`&&window.document&&window.document.createElement);function d(e,t,n){if(typeof e!=`function`)throw Error(`Expected reducePropsToState to be a function.`);if(typeof t!=`function`)throw Error(`Expected handleStateChangeOnClient to be a function.`);if(n!==void 0&&typeof n!=`function`)throw Error(`Expected mapStateOnServer to either be undefined or a function.`);function d(e){return e.displayName||e.name||`Component`}return function(f){if(typeof f!=`function`)throw Error(`Expected WrappedComponent to be a React component.`);var m=[],h;function v(){h=e(m.map(function(e){return e.props})),y.canUseDOM?t(h):n&&(h=n(h))}var y=function(e){l(t,e);function t(){return e.apply(this,arguments)||this}t.peek=function(){return h},t.rewind=function(){if(t.canUseDOM)throw Error(`You may only call rewind() on the server. Call peek() to read the current state.`);var e=h;return h=void 0,m=[],e};var n=t.prototype;return n.UNSAFE_componentWillMount=function(){m.push(this),v()},n.componentDidUpdate=function(){v()},n.componentWillUnmount=function(){var e=m.indexOf(this);m.splice(e,1),v()},n.render=function(){return o.createElement(f,this.props)},t}(a.PureComponent);return s(y,`displayName`,`SideEffect(`+d(f)+`)`),s(y,`canUseDOM`,u),y}}t.exports=d})),require_react_fast_compare=__commonJSMin(((e,t)=>{var n=typeof Element<`u`,a=typeof Map==`function`,o=typeof Set==`function`,s=typeof ArrayBuffer==`function`&&!!ArrayBuffer.isView;function l(e,t){if(e===t)return!0;if(e&&t&&typeof e==`object`&&typeof t==`object`){if(e.constructor!==t.constructor)return!1;var u,d,f;if(Array.isArray(e)){if(u=e.length,u!=t.length)return!1;for(d=u;d--!==0;)if(!l(e[d],t[d]))return!1;return!0}var m;if(a&&e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(m=e.entries();!(d=m.next()).done;)if(!t.has(d.value[0]))return!1;for(m=e.entries();!(d=m.next()).done;)if(!l(d.value[1],t.get(d.value[0])))return!1;return!0}if(o&&e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(m=e.entries();!(d=m.next()).done;)if(!t.has(d.value[0]))return!1;return!0}if(s&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if(u=e.length,u!=t.length)return!1;for(d=u;d--!==0;)if(e[d]!==t[d])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf&&typeof e.valueOf==`function`&&typeof t.valueOf==`function`)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&typeof e.toString==`function`&&typeof t.toString==`function`)return e.toString()===t.toString();if(f=Object.keys(e),u=f.length,u!==Object.keys(t).length)return!1;for(d=u;d--!==0;)if(!Object.prototype.hasOwnProperty.call(t,f[d]))return!1;if(n&&e instanceof Element)return!1;for(d=u;d--!==0;)if(!((f[d]===`_owner`||f[d]===`__v`||f[d]===`__o`)&&e.$$typeof)&&!l(e[f[d]],t[f[d]]))return!1;return!0}return e!==e&&t!==t}t.exports=function(e,t){try{return l(e,t)}catch(e){if((e.message||``).match(/stack|recursion/i))return console.warn(`react-fast-compare cannot handle circular refs`),!1;throw e}}})),import_lib$1=__toESM(require_lib$5()),import_react_fast_compare=__toESM(require_react_fast_compare()),import_object_assign=__toESM(require_object_assign()),ATTRIBUTE_NAMES={BODY:`bodyAttributes`,HTML:`htmlAttributes`,TITLE:`titleAttributes`},TAG_NAMES={BASE:`base`,BODY:`body`,HEAD:`head`,HTML:`html`,LINK:`link`,META:`meta`,NOSCRIPT:`noscript`,SCRIPT:`script`,STYLE:`style`,TITLE:`title`};Object.keys(TAG_NAMES).map(function(e){return TAG_NAMES[e]});var TAG_PROPERTIES={CHARSET:`charset`,CSS_TEXT:`cssText`,HREF:`href`,HTTPEQUIV:`http-equiv`,INNER_HTML:`innerHTML`,ITEM_PROP:`itemprop`,NAME:`name`,PROPERTY:`property`,REL:`rel`,SRC:`src`,TARGET:`target`},REACT_TAG_MAP={accesskey:`accessKey`,charset:`charSet`,class:`className`,contenteditable:`contentEditable`,contextmenu:`contextMenu`,"http-equiv":`httpEquiv`,itemprop:`itemProp`,tabindex:`tabIndex`},HELMET_PROPS={DEFAULT_TITLE:`defaultTitle`,DEFER:`defer`,ENCODE_SPECIAL_CHARACTERS:`encodeSpecialCharacters`,ON_CHANGE_CLIENT_STATE:`onChangeClientState`,TITLE_TEMPLATE:`titleTemplate`},HTML_TAG_MAP=Object.keys(REACT_TAG_MAP).reduce(function(e,t){return e[REACT_TAG_MAP[t]]=t,e},{}),SELF_CLOSING_TAGS=[TAG_NAMES.NOSCRIPT,TAG_NAMES.SCRIPT,TAG_NAMES.STYLE],HELMET_ATTRIBUTE=`data-react-helmet`,_typeof$3=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},classCallCheck=function(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)},createClass=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,`value`in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}(),_extends=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},inherits=function(e,t){if(typeof t!=`function`&&t!==null)throw TypeError(`Super expression must either be null or a function, not `+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)},objectWithoutProperties$1=function(e,t){var n={};for(var a in e)t.indexOf(a)>=0||Object.prototype.hasOwnProperty.call(e,a)&&(n[a]=e[a]);return n},possibleConstructorReturn=function(e,t){if(!e)throw ReferenceError(`this hasn't been initialised - super() hasn't been called`);return t&&(typeof t==`object`||typeof t==`function`)?t:e},encodeSpecialCharacters=function(e){return(arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0)===!1?String(e):String(e).replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`).replace(/'/g,`&#x27;`)},getTitleFromPropsList=function(e){var t=getInnermostProperty(e,TAG_NAMES.TITLE),n=getInnermostProperty(e,HELMET_PROPS.TITLE_TEMPLATE);if(n&&t)return n.replace(/%s/g,function(){return Array.isArray(t)?t.join(``):t});var a=getInnermostProperty(e,HELMET_PROPS.DEFAULT_TITLE);return t||a||void 0},getOnChangeClientState=function(e){return getInnermostProperty(e,HELMET_PROPS.ON_CHANGE_CLIENT_STATE)||function(){}},getAttributesFromPropsList=function(e,t){return t.filter(function(t){return t[e]!==void 0}).map(function(t){return t[e]}).reduce(function(e,t){return _extends({},e,t)},{})},getBaseTagFromPropsList=function(e,t){return t.filter(function(e){return e[TAG_NAMES.BASE]!==void 0}).map(function(e){return e[TAG_NAMES.BASE]}).reverse().reduce(function(t,n){if(!t.length)for(var a=Object.keys(n),o=0;o<a.length;o++){var s=a[o].toLowerCase();if(e.indexOf(s)!==-1&&n[s])return t.concat(n)}return t},[])},getTagsFromPropsList=function(e,t,n){var a={};return n.filter(function(t){return Array.isArray(t[e])?!0:(t[e]!==void 0&&warn$1(`Helmet: `+e+` should be of type "Array". Instead found type "`+_typeof$3(t[e])+`"`),!1)}).map(function(t){return t[e]}).reverse().reduce(function(e,n){var o={};n.filter(function(e){for(var n=void 0,s=Object.keys(e),l=0;l<s.length;l++){var u=s[l],d=u.toLowerCase();t.indexOf(d)!==-1&&!(n===TAG_PROPERTIES.REL&&e[n].toLowerCase()===`canonical`)&&!(d===TAG_PROPERTIES.REL&&e[d].toLowerCase()===`stylesheet`)&&(n=d),t.indexOf(u)!==-1&&(u===TAG_PROPERTIES.INNER_HTML||u===TAG_PROPERTIES.CSS_TEXT||u===TAG_PROPERTIES.ITEM_PROP)&&(n=u)}if(!n||!e[n])return!1;var f=e[n].toLowerCase();return a[n]||(a[n]={}),o[n]||(o[n]={}),a[n][f]?!1:(o[n][f]=!0,!0)}).reverse().forEach(function(t){return e.push(t)});for(var s=Object.keys(o),l=0;l<s.length;l++){var u=s[l];a[u]=(0,import_object_assign.default)({},a[u],o[u])}return e},[]).reverse()},getInnermostProperty=function(e,t){for(var n=e.length-1;n>=0;n--){var a=e[n];if(a.hasOwnProperty(t))return a[t]}return null},reducePropsToState=function(e){return{baseTag:getBaseTagFromPropsList([TAG_PROPERTIES.HREF,TAG_PROPERTIES.TARGET],e),bodyAttributes:getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY,e),defer:getInnermostProperty(e,HELMET_PROPS.DEFER),encode:getInnermostProperty(e,HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML,e),linkTags:getTagsFromPropsList(TAG_NAMES.LINK,[TAG_PROPERTIES.REL,TAG_PROPERTIES.HREF],e),metaTags:getTagsFromPropsList(TAG_NAMES.META,[TAG_PROPERTIES.NAME,TAG_PROPERTIES.CHARSET,TAG_PROPERTIES.HTTPEQUIV,TAG_PROPERTIES.PROPERTY,TAG_PROPERTIES.ITEM_PROP],e),noscriptTags:getTagsFromPropsList(TAG_NAMES.NOSCRIPT,[TAG_PROPERTIES.INNER_HTML],e),onChangeClientState:getOnChangeClientState(e),scriptTags:getTagsFromPropsList(TAG_NAMES.SCRIPT,[TAG_PROPERTIES.SRC,TAG_PROPERTIES.INNER_HTML],e),styleTags:getTagsFromPropsList(TAG_NAMES.STYLE,[TAG_PROPERTIES.CSS_TEXT],e),title:getTitleFromPropsList(e),titleAttributes:getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE,e)}},rafPolyfill=function(){var e=Date.now();return function(t){var n=Date.now();n-e>16?(e=n,t(n)):setTimeout(function(){rafPolyfill(t)},0)}}(),cafPolyfill=function(e){return clearTimeout(e)},requestAnimationFrame$1=typeof window<`u`?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||rafPolyfill:{}.requestAnimationFrame||rafPolyfill,cancelAnimationFrame$1=typeof window<`u`?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||cafPolyfill:{}.cancelAnimationFrame||cafPolyfill,warn$1=function(e){return console&&typeof console.warn==`function`&&console.warn(e)},_helmetCallback=null,handleClientStateChange=function(e){_helmetCallback&&cancelAnimationFrame$1(_helmetCallback),e.defer?_helmetCallback=requestAnimationFrame$1(function(){commitTagChanges(e,function(){_helmetCallback=null})}):(commitTagChanges(e),_helmetCallback=null)},commitTagChanges=function(e,t){var n=e.baseTag,a=e.bodyAttributes,o=e.htmlAttributes,s=e.linkTags,l=e.metaTags,u=e.noscriptTags,d=e.onChangeClientState,f=e.scriptTags,m=e.styleTags,h=e.title,v=e.titleAttributes;updateAttributes(TAG_NAMES.BODY,a),updateAttributes(TAG_NAMES.HTML,o),updateTitle(h,v);var y={baseTag:updateTags(TAG_NAMES.BASE,n),linkTags:updateTags(TAG_NAMES.LINK,s),metaTags:updateTags(TAG_NAMES.META,l),noscriptTags:updateTags(TAG_NAMES.NOSCRIPT,u),scriptTags:updateTags(TAG_NAMES.SCRIPT,f),styleTags:updateTags(TAG_NAMES.STYLE,m)},b={},x={};Object.keys(y).forEach(function(e){var t=y[e],n=t.newTags,a=t.oldTags;n.length&&(b[e]=n),a.length&&(x[e]=y[e].oldTags)}),t&&t(),d(e,b,x)},flattenArray=function(e){return Array.isArray(e)?e.join(``):e},updateTitle=function(e,t){e!==void 0&&document.title!==e&&(document.title=flattenArray(e)),updateAttributes(TAG_NAMES.TITLE,t)},updateAttributes=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var a=n.getAttribute(HELMET_ATTRIBUTE),o=a?a.split(`,`):[],s=[].concat(o),l=Object.keys(t),u=0;u<l.length;u++){var d=l[u],f=t[d]||``;n.getAttribute(d)!==f&&n.setAttribute(d,f),o.indexOf(d)===-1&&o.push(d);var m=s.indexOf(d);m!==-1&&s.splice(m,1)}for(var h=s.length-1;h>=0;h--)n.removeAttribute(s[h]);o.length===s.length?n.removeAttribute(HELMET_ATTRIBUTE):n.getAttribute(HELMET_ATTRIBUTE)!==l.join(`,`)&&n.setAttribute(HELMET_ATTRIBUTE,l.join(`,`))}},updateTags=function(e,t){var n=document.head||document.querySelector(TAG_NAMES.HEAD),a=n.querySelectorAll(e+`[`+HELMET_ATTRIBUTE+`]`),o=Array.prototype.slice.call(a),s=[],l=void 0;return t&&t.length&&t.forEach(function(t){var n=document.createElement(e);for(var a in t)if(t.hasOwnProperty(a))if(a===TAG_PROPERTIES.INNER_HTML)n.innerHTML=t.innerHTML;else if(a===TAG_PROPERTIES.CSS_TEXT)n.styleSheet?n.styleSheet.cssText=t.cssText:n.appendChild(document.createTextNode(t.cssText));else{var u=t[a]===void 0?``:t[a];n.setAttribute(a,u)}n.setAttribute(HELMET_ATTRIBUTE,`true`),o.some(function(e,t){return l=t,n.isEqualNode(e)})?o.splice(l,1):s.push(n)}),o.forEach(function(e){return e.parentNode.removeChild(e)}),s.forEach(function(e){return n.appendChild(e)}),{oldTags:o,newTags:s}},generateElementAttributesAsString=function(e){return Object.keys(e).reduce(function(t,n){var a=e[n]===void 0?``+n:n+`="`+e[n]+`"`;return t?t+` `+a:a},``)},generateTitleAsString=function(e,t,n,a){var o=generateElementAttributesAsString(n),s=flattenArray(t);return o?`<`+e+` `+HELMET_ATTRIBUTE+`="true" `+o+`>`+encodeSpecialCharacters(s,a)+`</`+e+`>`:`<`+e+` `+HELMET_ATTRIBUTE+`="true">`+encodeSpecialCharacters(s,a)+`</`+e+`>`},generateTagsAsString=function(e,t,n){return t.reduce(function(t,a){var o=Object.keys(a).filter(function(e){return!(e===TAG_PROPERTIES.INNER_HTML||e===TAG_PROPERTIES.CSS_TEXT)}).reduce(function(e,t){var o=a[t]===void 0?t:t+`="`+encodeSpecialCharacters(a[t],n)+`"`;return e?e+` `+o:o},``),s=a.innerHTML||a.cssText||``,l=SELF_CLOSING_TAGS.indexOf(e)===-1;return t+`<`+e+` `+HELMET_ATTRIBUTE+`="true" `+o+(l?`/>`:`>`+s+`</`+e+`>`)},``)},convertElementAttributestoReactProps=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(e).reduce(function(t,n){return t[REACT_TAG_MAP[n]||n]=e[n],t},t)},convertReactPropstoHtmlAttributes=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(e).reduce(function(t,n){return t[HTML_TAG_MAP[n]||n]=e[n],t},t)},generateTitleAsReactComponent=function(e,t,n){var a,o=convertElementAttributestoReactProps(n,(a={key:t},a[HELMET_ATTRIBUTE]=!0,a));return[import_react$24.createElement(TAG_NAMES.TITLE,o,t)]},generateTagsAsReactComponent=function(e,t){return t.map(function(t,n){var a,o=(a={key:n},a[HELMET_ATTRIBUTE]=!0,a);return Object.keys(t).forEach(function(e){var n=REACT_TAG_MAP[e]||e;n===TAG_PROPERTIES.INNER_HTML||n===TAG_PROPERTIES.CSS_TEXT?o.dangerouslySetInnerHTML={__html:t.innerHTML||t.cssText}:o[n]=t[e]}),import_react$24.createElement(e,o)})},getMethodsForTag=function(e,t,n){switch(e){case TAG_NAMES.TITLE:return{toComponent:function(){return generateTitleAsReactComponent(e,t.title,t.titleAttributes,n)},toString:function(){return generateTitleAsString(e,t.title,t.titleAttributes,n)}};case ATTRIBUTE_NAMES.BODY:case ATTRIBUTE_NAMES.HTML:return{toComponent:function(){return convertElementAttributestoReactProps(t)},toString:function(){return generateElementAttributesAsString(t)}};default:return{toComponent:function(){return generateTagsAsReactComponent(e,t)},toString:function(){return generateTagsAsString(e,t,n)}}}},mapStateOnServer=function(e){var t=e.baseTag,n=e.bodyAttributes,a=e.encode,o=e.htmlAttributes,s=e.linkTags,l=e.metaTags,u=e.noscriptTags,d=e.scriptTags,f=e.styleTags,m=e.title,h=m===void 0?``:m,v=e.titleAttributes;return{base:getMethodsForTag(TAG_NAMES.BASE,t,a),bodyAttributes:getMethodsForTag(ATTRIBUTE_NAMES.BODY,n,a),htmlAttributes:getMethodsForTag(ATTRIBUTE_NAMES.HTML,o,a),link:getMethodsForTag(TAG_NAMES.LINK,s,a),meta:getMethodsForTag(TAG_NAMES.META,l,a),noscript:getMethodsForTag(TAG_NAMES.NOSCRIPT,u,a),script:getMethodsForTag(TAG_NAMES.SCRIPT,d,a),style:getMethodsForTag(TAG_NAMES.STYLE,f,a),title:getMethodsForTag(TAG_NAMES.TITLE,{title:h,titleAttributes:v},a)}},HelmetExport=function(e){var t,n;return n=t=function(t){inherits(n,t);function n(){return classCallCheck(this,n),possibleConstructorReturn(this,t.apply(this,arguments))}return n.prototype.shouldComponentUpdate=function(e){return!(0,import_react_fast_compare.default)(this.props,e)},n.prototype.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case TAG_NAMES.SCRIPT:case TAG_NAMES.NOSCRIPT:return{innerHTML:t};case TAG_NAMES.STYLE:return{cssText:t}}throw Error(`<`+e.type+` /> elements are self-closing and can not contain children. Refer to our API for more information.`)},n.prototype.flattenArrayTypeChildren=function(e){var t,n=e.child,a=e.arrayTypeChildren,o=e.newChildProps,s=e.nestedChildren;return _extends({},a,(t={},t[n.type]=[].concat(a[n.type]||[],[_extends({},o,this.mapNestedChildrenToProps(n,s))]),t))},n.prototype.mapObjectTypeChildren=function(e){var t,n,a=e.child,o=e.newProps,s=e.newChildProps,l=e.nestedChildren;switch(a.type){case TAG_NAMES.TITLE:return _extends({},o,(t={},t[a.type]=l,t.titleAttributes=_extends({},s),t));case TAG_NAMES.BODY:return _extends({},o,{bodyAttributes:_extends({},s)});case TAG_NAMES.HTML:return _extends({},o,{htmlAttributes:_extends({},s)})}return _extends({},o,(n={},n[a.type]=_extends({},s),n))},n.prototype.mapArrayTypeChildrenToProps=function(e,t){var n=_extends({},t);return Object.keys(e).forEach(function(t){var a;n=_extends({},n,(a={},a[t]=e[t],a))}),n},n.prototype.warnOnInvalidChildren=function(e,t){return!0},n.prototype.mapChildrenToProps=function(e,t){var n=this,a={};return import_react$24.Children.forEach(e,function(e){if(!(!e||!e.props)){var o=e.props,s=o.children,l=convertReactPropstoHtmlAttributes(objectWithoutProperties$1(o,[`children`]));switch(n.warnOnInvalidChildren(e,s),e.type){case TAG_NAMES.LINK:case TAG_NAMES.META:case TAG_NAMES.NOSCRIPT:case TAG_NAMES.SCRIPT:case TAG_NAMES.STYLE:a=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:a,newChildProps:l,nestedChildren:s});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:l,nestedChildren:s});break}}}),t=this.mapArrayTypeChildrenToProps(a,t),t},n.prototype.render=function(){var t=this.props,n=t.children,a=_extends({},objectWithoutProperties$1(t,[`children`]));return n&&(a=this.mapChildrenToProps(n,a)),import_react$24.createElement(e,a)},createClass(n,null,[{key:`canUseDOM`,set:function(t){e.canUseDOM=t}}]),n}(import_react$24.Component),t.propTypes={base:import_prop_types$1.default.object,bodyAttributes:import_prop_types$1.default.object,children:import_prop_types$1.default.oneOfType([import_prop_types$1.default.arrayOf(import_prop_types$1.default.node),import_prop_types$1.default.node]),defaultTitle:import_prop_types$1.default.string,defer:import_prop_types$1.default.bool,encodeSpecialCharacters:import_prop_types$1.default.bool,htmlAttributes:import_prop_types$1.default.object,link:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),meta:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),noscript:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),onChangeClientState:import_prop_types$1.default.func,script:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),style:import_prop_types$1.default.arrayOf(import_prop_types$1.default.object),title:import_prop_types$1.default.string,titleAttributes:import_prop_types$1.default.object,titleTemplate:import_prop_types$1.default.string},t.defaultProps={defer:!0,encodeSpecialCharacters:!0},t.peek=e.peek,t.rewind=function(){var t=e.rewind();return t||=mapStateOnServer({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:``,titleAttributes:{}}),t},n}((0,import_lib$1.default)(reducePropsToState,handleClientStateChange,mapStateOnServer)(function(){return null}));HelmetExport.renderStatic=HelmetExport.rewind,init_generateUtilityClasses(),init_generateUtilityClass();function getButtonUtilityClass(e){return generateUtilityClass(`MuiButton`,e)}var buttonClasses=generateUtilityClasses(`MuiButton`,`root.text.textInherit.textPrimary.textSecondary.textSuccess.textError.textInfo.textWarning.outlined.outlinedInherit.outlinedPrimary.outlinedSecondary.outlinedSuccess.outlinedError.outlinedInfo.outlinedWarning.contained.containedInherit.containedPrimary.containedSecondary.containedSuccess.containedError.containedInfo.containedWarning.disableElevation.focusVisible.disabled.colorInherit.colorPrimary.colorSecondary.colorSuccess.colorError.colorInfo.colorWarning.textSizeSmall.textSizeMedium.textSizeLarge.outlinedSizeSmall.outlinedSizeMedium.outlinedSizeLarge.containedSizeSmall.containedSizeMedium.containedSizeLarge.sizeMedium.sizeSmall.sizeLarge.fullWidth.startIcon.endIcon.icon.iconSizeSmall.iconSizeMedium.iconSizeLarge`.split(`.`)),ButtonGroupContext=import_react$24.createContext({}),ButtonGroupButtonContext=import_react$24.createContext(void 0);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_resolveProps(),init_composeClasses(),init_styled(),init_DefaultPropsProvider(),init_capitalize();var _excluded$52=[`children`,`color`,`component`,`className`,`disabled`,`disableElevation`,`disableFocusRipple`,`endIcon`,`focusVisibleClassName`,`fullWidth`,`size`,`startIcon`,`type`,`variant`],useUtilityClasses$46=e=>{let{color:t,disableElevation:n,fullWidth:a,size:o,variant:s,classes:l}=e;return _extends$3({},l,composeClasses({root:[`root`,s,`${s}${capitalize_default(t)}`,`size${capitalize_default(o)}`,`${s}Size${capitalize_default(o)}`,`color${capitalize_default(t)}`,n&&`disableElevation`,a&&`fullWidth`],label:[`label`],startIcon:[`icon`,`startIcon`,`iconSize${capitalize_default(o)}`],endIcon:[`icon`,`endIcon`,`iconSize${capitalize_default(o)}`]},getButtonUtilityClass,l))},commonIconStyles=e=>_extends$3({},e.size===`small`&&{"& > *:nth-of-type(1)":{fontSize:18}},e.size===`medium`&&{"& > *:nth-of-type(1)":{fontSize:20}},e.size===`large`&&{"& > *:nth-of-type(1)":{fontSize:22}}),ButtonRoot=styled$1(ButtonBase,{shouldForwardProp:e=>rootShouldForwardProp(e)||e===`classes`,name:`MuiButton`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[n.variant],t[`${n.variant}${capitalize_default(n.color)}`],t[`size${capitalize_default(n.size)}`],t[`${n.variant}Size${capitalize_default(n.size)}`],n.color===`inherit`&&t.colorInherit,n.disableElevation&&t.disableElevation,n.fullWidth&&t.fullWidth]}})(({theme:e,ownerState:t})=>{var n,a;let o=e.palette.mode===`light`?e.palette.grey[300]:e.palette.grey[800],s=e.palette.mode===`light`?e.palette.grey.A100:e.palette.grey[700];return _extends$3({},e.typography.button,{minWidth:64,padding:`6px 16px`,borderRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create([`background-color`,`box-shadow`,`border-color`,`color`],{duration:e.transitions.duration.short}),"&:hover":_extends$3({textDecoration:`none`,backgroundColor:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(e.palette.text.primary,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},t.variant===`text`&&t.color!==`inherit`&&{backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},t.variant===`outlined`&&t.color!==`inherit`&&{border:`1px solid ${(e.vars||e).palette[t.color].main}`,backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}},t.variant===`contained`&&{backgroundColor:e.vars?e.vars.palette.Button.inheritContainedHoverBg:s,boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2],backgroundColor:(e.vars||e).palette.grey[300]}},t.variant===`contained`&&t.color!==`inherit`&&{backgroundColor:(e.vars||e).palette[t.color].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t.color].main}}),"&:active":_extends$3({},t.variant===`contained`&&{boxShadow:(e.vars||e).shadows[8]}),[`&.${buttonClasses.focusVisible}`]:_extends$3({},t.variant===`contained`&&{boxShadow:(e.vars||e).shadows[6]}),[`&.${buttonClasses.disabled}`]:_extends$3({color:(e.vars||e).palette.action.disabled},t.variant===`outlined`&&{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`},t.variant===`contained`&&{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground})},t.variant===`text`&&{padding:`6px 8px`},t.variant===`text`&&t.color!==`inherit`&&{color:(e.vars||e).palette[t.color].main},t.variant===`outlined`&&{padding:`5px 15px`,border:`1px solid currentColor`},t.variant===`outlined`&&t.color!==`inherit`&&{color:(e.vars||e).palette[t.color].main,border:e.vars?`1px solid rgba(${e.vars.palette[t.color].mainChannel} / 0.5)`:`1px solid ${(0,import_colorManipulator.alpha)(e.palette[t.color].main,.5)}`},t.variant===`contained`&&{color:e.vars?e.vars.palette.text.primary:(a=e.palette).getContrastText?.call(a,e.palette.grey[300]),backgroundColor:e.vars?e.vars.palette.Button.inheritContainedBg:o,boxShadow:(e.vars||e).shadows[2]},t.variant===`contained`&&t.color!==`inherit`&&{color:(e.vars||e).palette[t.color].contrastText,backgroundColor:(e.vars||e).palette[t.color].main},t.color===`inherit`&&{color:`inherit`,borderColor:`currentColor`},t.size===`small`&&t.variant===`text`&&{padding:`4px 5px`,fontSize:e.typography.pxToRem(13)},t.size===`large`&&t.variant===`text`&&{padding:`8px 11px`,fontSize:e.typography.pxToRem(15)},t.size===`small`&&t.variant===`outlined`&&{padding:`3px 9px`,fontSize:e.typography.pxToRem(13)},t.size===`large`&&t.variant===`outlined`&&{padding:`7px 21px`,fontSize:e.typography.pxToRem(15)},t.size===`small`&&t.variant===`contained`&&{padding:`4px 10px`,fontSize:e.typography.pxToRem(13)},t.size===`large`&&t.variant===`contained`&&{padding:`8px 22px`,fontSize:e.typography.pxToRem(15)},t.fullWidth&&{width:`100%`})},({ownerState:e})=>e.disableElevation&&{boxShadow:`none`,"&:hover":{boxShadow:`none`},[`&.${buttonClasses.focusVisible}`]:{boxShadow:`none`},"&:active":{boxShadow:`none`},[`&.${buttonClasses.disabled}`]:{boxShadow:`none`}}),ButtonStartIcon=styled$1(`span`,{name:`MuiButton`,slot:`StartIcon`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.startIcon,t[`iconSize${capitalize_default(n.size)}`]]}})(({ownerState:e})=>_extends$3({display:`inherit`,marginRight:8,marginLeft:-4},e.size===`small`&&{marginLeft:-2},commonIconStyles(e))),ButtonEndIcon=styled$1(`span`,{name:`MuiButton`,slot:`EndIcon`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.endIcon,t[`iconSize${capitalize_default(n.size)}`]]}})(({ownerState:e})=>_extends$3({display:`inherit`,marginRight:-4,marginLeft:8},e.size===`small`&&{marginRight:-2},commonIconStyles(e))),Button=import_react$24.forwardRef(function(e,t){let n=import_react$24.useContext(ButtonGroupContext),a=import_react$24.useContext(ButtonGroupButtonContext),o=useDefaultProps({props:resolveProps(n,e),name:`MuiButton`}),{children:s,color:l=`primary`,component:u=`button`,className:d,disabled:f=!1,disableElevation:m=!1,disableFocusRipple:h=!1,endIcon:v,focusVisibleClassName:y,fullWidth:b=!1,size:x=`medium`,startIcon:S,type:C,variant:T=`text`}=o,E=_objectWithoutPropertiesLoose$3(o,_excluded$52),D=_extends$3({},o,{color:l,component:u,disabled:f,disableElevation:m,disableFocusRipple:h,fullWidth:b,size:x,type:C,variant:T}),O=useUtilityClasses$46(D),k=S&&(0,import_jsx_runtime.jsx)(ButtonStartIcon,{className:O.startIcon,ownerState:D,children:S}),j=v&&(0,import_jsx_runtime.jsx)(ButtonEndIcon,{className:O.endIcon,ownerState:D,children:v}),M=a||``;return(0,import_jsx_runtime.jsxs)(ButtonRoot,_extends$3({ownerState:D,className:clsx$1(n.className,O.root,d,M),component:u,disabled:f,focusRipple:!h,focusVisibleClassName:clsx$1(O.focusVisible,y),ref:t,type:C},E,{classes:O,children:[k,s,j]}))});init_generateUtilityClasses(),init_generateUtilityClass();function getDialogUtilityClass(e){return generateUtilityClass(`MuiDialog`,e)}var dialogClasses=generateUtilityClasses(`MuiDialog`,[`root`,`scrollPaper`,`scrollBody`,`container`,`paper`,`paperScrollPaper`,`paperScrollBody`,`paperWidthFalse`,`paperWidthXs`,`paperWidthSm`,`paperWidthMd`,`paperWidthLg`,`paperWidthXl`,`paperFullWidth`,`paperFullScreen`]),DialogContext=import_react$24.createContext({});init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_useId$1(),init_capitalize(),init_DefaultPropsProvider(),init_styled();var _excluded$51=[`aria-describedby`,`aria-labelledby`,`BackdropComponent`,`BackdropProps`,`children`,`className`,`disableEscapeKeyDown`,`fullScreen`,`fullWidth`,`maxWidth`,`onBackdropClick`,`onClick`,`onClose`,`open`,`PaperComponent`,`PaperProps`,`scroll`,`TransitionComponent`,`transitionDuration`,`TransitionProps`],DialogBackdrop=styled$1(Backdrop,{name:`MuiDialog`,slot:`Backdrop`,overrides:(e,t)=>t.backdrop})({zIndex:-1}),useUtilityClasses$45=e=>{let{classes:t,scroll:n,maxWidth:a,fullWidth:o,fullScreen:s}=e;return composeClasses({root:[`root`],container:[`container`,`scroll${capitalize_default(n)}`],paper:[`paper`,`paperScroll${capitalize_default(n)}`,`paperWidth${capitalize_default(String(a))}`,o&&`paperFullWidth`,s&&`paperFullScreen`]},getDialogUtilityClass,t)},DialogRoot=styled$1(Modal,{name:`MuiDialog`,slot:`Root`,overridesResolver:(e,t)=>t.root})({"@media print":{position:`absolute !important`}}),DialogContainer=styled$1(`div`,{name:`MuiDialog`,slot:`Container`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.container,t[`scroll${capitalize_default(n.scroll)}`]]}})(({ownerState:e})=>_extends$3({height:`100%`,"@media print":{height:`auto`},outline:0},e.scroll===`paper`&&{display:`flex`,justifyContent:`center`,alignItems:`center`},e.scroll===`body`&&{overflowY:`auto`,overflowX:`hidden`,textAlign:`center`,"&::after":{content:`""`,display:`inline-block`,verticalAlign:`middle`,height:`100%`,width:`0`}})),DialogPaper=styled$1(Paper,{name:`MuiDialog`,slot:`Paper`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.paper,t[`scrollPaper${capitalize_default(n.scroll)}`],t[`paperWidth${capitalize_default(String(n.maxWidth))}`],n.fullWidth&&t.paperFullWidth,n.fullScreen&&t.paperFullScreen]}})(({theme:e,ownerState:t})=>_extends$3({margin:32,position:`relative`,overflowY:`auto`,"@media print":{overflowY:`visible`,boxShadow:`none`}},t.scroll===`paper`&&{display:`flex`,flexDirection:`column`,maxHeight:`calc(100% - 64px)`},t.scroll===`body`&&{display:`inline-block`,verticalAlign:`middle`,textAlign:`left`},!t.maxWidth&&{maxWidth:`calc(100% - 64px)`},t.maxWidth===`xs`&&{maxWidth:e.breakpoints.unit===`px`?Math.max(e.breakpoints.values.xs,444):`max(${e.breakpoints.values.xs}${e.breakpoints.unit}, 444px)`,[`&.${dialogClasses.paperScrollBody}`]:{[e.breakpoints.down(Math.max(e.breakpoints.values.xs,444)+64)]:{maxWidth:`calc(100% - 64px)`}}},t.maxWidth&&t.maxWidth!==`xs`&&{maxWidth:`${e.breakpoints.values[t.maxWidth]}${e.breakpoints.unit}`,[`&.${dialogClasses.paperScrollBody}`]:{[e.breakpoints.down(e.breakpoints.values[t.maxWidth]+64)]:{maxWidth:`calc(100% - 64px)`}}},t.fullWidth&&{width:`calc(100% - 64px)`},t.fullScreen&&{margin:0,width:`100%`,maxWidth:`100%`,height:`100%`,maxHeight:`none`,borderRadius:0,[`&.${dialogClasses.paperScrollBody}`]:{margin:0,maxWidth:`100%`}})),Dialog=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiDialog`}),a=useTheme$1(),o={enter:a.transitions.duration.enteringScreen,exit:a.transitions.duration.leavingScreen},{"aria-describedby":s,"aria-labelledby":l,BackdropComponent:u,BackdropProps:d,children:f,className:m,disableEscapeKeyDown:h=!1,fullScreen:v=!1,fullWidth:y=!1,maxWidth:b=`sm`,onBackdropClick:x,onClick:S,onClose:C,open:T,PaperComponent:E=Paper,PaperProps:D={},scroll:O=`paper`,TransitionComponent:k=Fade,transitionDuration:j=o,TransitionProps:M}=n,N=_objectWithoutPropertiesLoose$3(n,_excluded$51),F=_extends$3({},n,{disableEscapeKeyDown:h,fullScreen:v,fullWidth:y,maxWidth:b,scroll:O}),I=useUtilityClasses$45(F),L=import_react$24.useRef(),R=e=>{L.current=e.target===e.currentTarget},z=e=>{S&&S(e),L.current&&(L.current=null,x&&x(e),C&&C(e,`backdropClick`))},B=useId(l),V=import_react$24.useMemo(()=>({titleId:B}),[B]);return(0,import_jsx_runtime.jsx)(DialogRoot,_extends$3({className:clsx$1(I.root,m),closeAfterTransition:!0,components:{Backdrop:DialogBackdrop},componentsProps:{backdrop:_extends$3({transitionDuration:j,as:u},d)},disableEscapeKeyDown:h,onClose:C,open:T,ref:t,onClick:z,ownerState:F},N,{children:(0,import_jsx_runtime.jsx)(k,_extends$3({appear:!0,in:T,timeout:j,role:`presentation`},M,{children:(0,import_jsx_runtime.jsx)(DialogContainer,{className:clsx$1(I.container),onMouseDown:R,ownerState:F,children:(0,import_jsx_runtime.jsx)(DialogPaper,_extends$3({as:E,elevation:24,role:`dialog`,"aria-describedby":s,"aria-labelledby":B},D,{className:clsx$1(I.paper,D.className),ownerState:F,children:(0,import_jsx_runtime.jsx)(DialogContext.Provider,{value:V,children:f})}))})}))}))});init_generateUtilityClasses(),init_generateUtilityClass();function getDialogTitleUtilityClass(e){return generateUtilityClass(`MuiDialogTitle`,e)}var dialogTitleClasses=generateUtilityClasses(`MuiDialogTitle`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$50=[`className`,`id`],useUtilityClasses$44=e=>{let{classes:t}=e;return composeClasses({root:[`root`]},getDialogTitleUtilityClass,t)},DialogTitleRoot=styled$1(Typography,{name:`MuiDialogTitle`,slot:`Root`,overridesResolver:(e,t)=>t.root})({padding:`16px 24px`,flex:`0 0 auto`}),DialogTitle=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiDialogTitle`}),{className:a,id:o}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$50),l=n,u=useUtilityClasses$44(l),{titleId:d=o}=import_react$24.useContext(DialogContext);return(0,import_jsx_runtime.jsx)(DialogTitleRoot,_extends$3({component:`h2`,className:clsx$1(u.root,a),ownerState:l,ref:t,variant:`h6`,id:o??d},s))});init_generateUtilityClasses(),init_generateUtilityClass();function getDialogContentUtilityClass(e){return generateUtilityClass(`MuiDialogContent`,e)}var dialogContentClasses=generateUtilityClasses(`MuiDialogContent`,[`root`,`dividers`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$49=[`className`,`dividers`],useUtilityClasses$43=e=>{let{classes:t,dividers:n}=e;return composeClasses({root:[`root`,n&&`dividers`]},getDialogContentUtilityClass,t)},DialogContentRoot=styled$1(`div`,{name:`MuiDialogContent`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.dividers&&t.dividers]}})(({theme:e,ownerState:t})=>_extends$3({flex:`1 1 auto`,WebkitOverflowScrolling:`touch`,overflowY:`auto`,padding:`20px 24px`},t.dividers?{padding:`16px 24px`,borderTop:`1px solid ${(e.vars||e).palette.divider}`,borderBottom:`1px solid ${(e.vars||e).palette.divider}`}:{[`.${dialogTitleClasses.root} + &`]:{paddingTop:0}})),DialogContent=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiDialogContent`}),{className:a,dividers:o=!1}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$49),l=_extends$3({},n,{dividers:o}),u=useUtilityClasses$43(l);return(0,import_jsx_runtime.jsx)(DialogContentRoot,_extends$3({className:clsx$1(u.root,a),ownerState:l,ref:t},s))});init_generateUtilityClasses(),init_generateUtilityClass();function getDialogActionsUtilityClass(e){return generateUtilityClass(`MuiDialogActions`,e)}var dialogActionsClasses=generateUtilityClasses(`MuiDialogActions`,[`root`,`spacing`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$48=[`className`,`disableSpacing`],useUtilityClasses$42=e=>{let{classes:t,disableSpacing:n}=e;return composeClasses({root:[`root`,!n&&`spacing`]},getDialogActionsUtilityClass,t)},DialogActionsRoot=styled$1(`div`,{name:`MuiDialogActions`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,!n.disableSpacing&&t.spacing]}})(({ownerState:e})=>_extends$3({display:`flex`,alignItems:`center`,padding:8,justifyContent:`flex-end`,flex:`0 0 auto`},!e.disableSpacing&&{"& > :not(style) ~ :not(style)":{marginLeft:8}})),DialogActions=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiDialogActions`}),{className:a,disableSpacing:o=!1}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$48),l=_extends$3({},n,{disableSpacing:o}),u=useUtilityClasses$42(l);return(0,import_jsx_runtime.jsx)(DialogActionsRoot,_extends$3({className:clsx$1(u.root,a),ownerState:l,ref:t},s))}),chitchatterDomain=`https://chitchatter.im`,ChatRoom=()=>{let e=`chat-title`,t=`chat-content`,{handlers:{handleChatRoomOpenStateChange:n},gameState:{playerId:a,isChatOpen:o,room:s}}=(0,import_react$24.useContext)(FarmhandContext),l=()=>{n(!1)},u=(0,import_jsx_runtime.jsx)(`chat-room`,{"root-url":chitchatterDomain,room:`__farmhand__${s}`,"user-id":a,style:{height:`100%`,width:`100%`,border:`none`},"color-mode":`light`});return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(HelmetExport,{children:(0,import_jsx_runtime.jsx)(`script`,{src:`${chitchatterDomain}/sdk.js`})}),(0,import_jsx_runtime.jsxs)(Dialog,{className:(0,import_classnames.default)(`Farmhand`,`ChatRoom`),fullWidth:!0,keepMounted:!0,fullScreen:!0,open:o,onClose:l,sx:{"& .MuiDialog-container":{padding:`1em`,height:`calc(100% - 2em)`}},"aria-describedby":e,"aria-labelledby":t,children:[(0,import_jsx_runtime.jsx)(DialogTitle,{id:e,children:`Chat room`}),(0,import_jsx_runtime.jsx)(DialogContent,{id:t,children:u}),(0,import_jsx_runtime.jsx)(DialogActions,{children:(0,import_jsx_runtime.jsx)(Button,{onClick:l,color:`primary`,autoFocus:!0,children:`Close`})})]})]})},AccordionContext=import_react$24.createContext({});init_extends(),init_objectWithoutPropertiesLoose(),init_useForkRef$1(),init_appendOwnerState(),init_resolveComponentProps(),init_mergeSlotProps();var _excluded$47=[`className`,`elementType`,`ownerState`,`externalForwardedProps`,`getSlotOwnerState`,`internalForwardedProps`],_excluded2$3=[`component`,`slots`,`slotProps`],_excluded3$1=[`component`];function useSlot(e,t){let{className:n,elementType:a,ownerState:o,externalForwardedProps:s,getSlotOwnerState:l,internalForwardedProps:u}=t,d=_objectWithoutPropertiesLoose$3(t,_excluded$47),{component:f,slots:m={[e]:void 0},slotProps:h={[e]:void 0}}=s,v=_objectWithoutPropertiesLoose$3(s,_excluded2$3),y=m[e]||a,b=resolveComponentProps(h[e],o),x=mergeSlotProps(_extends$3({className:n},d,{externalForwardedProps:e===`root`?v:void 0,externalSlotProps:b})),{props:{component:S},internalRef:C}=x,T=_objectWithoutPropertiesLoose$3(x.props,_excluded3$1),E=useForkRef(C,b?.ref,t.ref),D=l?l(T):{},O=_extends$3({},o,D),k=e===`root`?S||f:S,j=appendOwnerState(y,_extends$3({},e===`root`&&!f&&!m[e]&&u,e!==`root`&&!m[e]&&u,T,k&&{as:k},{ref:E}),O);return Object.keys(D).forEach(e=>{delete j[e]}),[y,j]}init_generateUtilityClasses(),init_generateUtilityClass();function getAccordionUtilityClass(e){return generateUtilityClass(`MuiAccordion`,e)}var accordionClasses=generateUtilityClasses(`MuiAccordion`,[`root`,`rounded`,`expanded`,`disabled`,`gutters`,`region`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider(),init_useControlled();var _excluded$46=[`children`,`className`,`defaultExpanded`,`disabled`,`disableGutters`,`expanded`,`onChange`,`square`,`slots`,`slotProps`,`TransitionComponent`,`TransitionProps`],useUtilityClasses$41=e=>{let{classes:t,square:n,expanded:a,disabled:o,disableGutters:s}=e;return composeClasses({root:[`root`,!n&&`rounded`,a&&`expanded`,o&&`disabled`,!s&&`gutters`],region:[`region`]},getAccordionUtilityClass,t)},AccordionRoot=styled$1(Paper,{name:`MuiAccordion`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[{[`& .${accordionClasses.region}`]:t.region},t.root,!n.square&&t.rounded,!n.disableGutters&&t.gutters]}})(({theme:e})=>{let t={duration:e.transitions.duration.shortest};return{position:`relative`,transition:e.transitions.create([`margin`],t),overflowAnchor:`none`,"&::before":{position:`absolute`,left:0,top:-1,right:0,height:1,content:`""`,opacity:1,backgroundColor:(e.vars||e).palette.divider,transition:e.transitions.create([`opacity`,`background-color`],t)},"&:first-of-type":{"&::before":{display:`none`}},[`&.${accordionClasses.expanded}`]:{"&::before":{opacity:0},"&:first-of-type":{marginTop:0},"&:last-of-type":{marginBottom:0},"& + &":{"&::before":{display:`none`}}},[`&.${accordionClasses.disabled}`]:{backgroundColor:(e.vars||e).palette.action.disabledBackground}}},({theme:e})=>({variants:[{props:e=>!e.square,style:{borderRadius:0,"&:first-of-type":{borderTopLeftRadius:(e.vars||e).shape.borderRadius,borderTopRightRadius:(e.vars||e).shape.borderRadius},"&:last-of-type":{borderBottomLeftRadius:(e.vars||e).shape.borderRadius,borderBottomRightRadius:(e.vars||e).shape.borderRadius,"@supports (-ms-ime-align: auto)":{borderBottomLeftRadius:0,borderBottomRightRadius:0}}}},{props:e=>!e.disableGutters,style:{[`&.${accordionClasses.expanded}`]:{margin:`16px 0`}}}]})),Accordion=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiAccordion`}),{children:a,className:o,defaultExpanded:s=!1,disabled:l=!1,disableGutters:u=!1,expanded:d,onChange:f,square:m=!1,slots:h={},slotProps:v={},TransitionComponent:y,TransitionProps:b}=n,x=_objectWithoutPropertiesLoose$3(n,_excluded$46),[S,C]=useControlled_default({controlled:d,default:s,name:`Accordion`,state:`expanded`}),T=import_react$24.useCallback(e=>{C(!S),f&&f(e,!S)},[S,f,C]),[E,...D]=import_react$24.Children.toArray(a),O=import_react$24.useMemo(()=>({expanded:S,disabled:l,disableGutters:u,toggle:T}),[S,l,u,T]),k=_extends$3({},n,{square:m,disabled:l,disableGutters:u,expanded:S}),j=useUtilityClasses$41(k),[M,N]=useSlot(`transition`,{elementType:Collapse,externalForwardedProps:{slots:_extends$3({transition:y},h),slotProps:_extends$3({transition:b},v)},ownerState:k});return(0,import_jsx_runtime.jsxs)(AccordionRoot,_extends$3({className:clsx$1(j.root,o),ref:t,ownerState:k,square:m},x,{children:[(0,import_jsx_runtime.jsx)(AccordionContext.Provider,{value:O,children:E}),(0,import_jsx_runtime.jsx)(M,_extends$3({in:S,timeout:`auto`},N,{children:(0,import_jsx_runtime.jsx)(`div`,{"aria-labelledby":E.props.id,id:E.props[`aria-controls`],role:`region`,className:j.region,children:D})}))]}))});init_generateUtilityClasses(),init_generateUtilityClass();function getAccordionSummaryUtilityClass(e){return generateUtilityClass(`MuiAccordionSummary`,e)}var accordionSummaryClasses=generateUtilityClasses(`MuiAccordionSummary`,[`root`,`expanded`,`focusVisible`,`disabled`,`gutters`,`contentGutters`,`content`,`expandIconWrapper`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$45=[`children`,`className`,`expandIcon`,`focusVisibleClassName`,`onClick`],useUtilityClasses$40=e=>{let{classes:t,expanded:n,disabled:a,disableGutters:o}=e;return composeClasses({root:[`root`,n&&`expanded`,a&&`disabled`,!o&&`gutters`],focusVisible:[`focusVisible`],content:[`content`,n&&`expanded`,!o&&`contentGutters`],expandIconWrapper:[`expandIconWrapper`,n&&`expanded`]},getAccordionSummaryUtilityClass,t)},AccordionSummaryRoot=styled$1(ButtonBase,{name:`MuiAccordionSummary`,slot:`Root`,overridesResolver:(e,t)=>t.root})(({theme:e})=>{let t={duration:e.transitions.duration.shortest};return{display:`flex`,minHeight:48,padding:e.spacing(0,2),transition:e.transitions.create([`min-height`,`background-color`],t),[`&.${accordionSummaryClasses.focusVisible}`]:{backgroundColor:(e.vars||e).palette.action.focus},[`&.${accordionSummaryClasses.disabled}`]:{opacity:(e.vars||e).palette.action.disabledOpacity},[`&:hover:not(.${accordionSummaryClasses.disabled})`]:{cursor:`pointer`},variants:[{props:e=>!e.disableGutters,style:{[`&.${accordionSummaryClasses.expanded}`]:{minHeight:64}}}]}}),AccordionSummaryContent=styled$1(`div`,{name:`MuiAccordionSummary`,slot:`Content`,overridesResolver:(e,t)=>t.content})(({theme:e})=>({display:`flex`,flexGrow:1,margin:`12px 0`,variants:[{props:e=>!e.disableGutters,style:{transition:e.transitions.create([`margin`],{duration:e.transitions.duration.shortest}),[`&.${accordionSummaryClasses.expanded}`]:{margin:`20px 0`}}}]})),AccordionSummaryExpandIconWrapper=styled$1(`div`,{name:`MuiAccordionSummary`,slot:`ExpandIconWrapper`,overridesResolver:(e,t)=>t.expandIconWrapper})(({theme:e})=>({display:`flex`,color:(e.vars||e).palette.action.active,transform:`rotate(0deg)`,transition:e.transitions.create(`transform`,{duration:e.transitions.duration.shortest}),[`&.${accordionSummaryClasses.expanded}`]:{transform:`rotate(180deg)`}})),AccordionSummary=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiAccordionSummary`}),{children:a,className:o,expandIcon:s,focusVisibleClassName:l,onClick:u}=n,d=_objectWithoutPropertiesLoose$3(n,_excluded$45),{disabled:f=!1,disableGutters:m,expanded:h,toggle:v}=import_react$24.useContext(AccordionContext),y=e=>{v&&v(e),u&&u(e)},b=_extends$3({},n,{expanded:h,disabled:f,disableGutters:m}),x=useUtilityClasses$40(b);return(0,import_jsx_runtime.jsxs)(AccordionSummaryRoot,_extends$3({focusRipple:!1,disableRipple:!0,disabled:f,component:`div`,"aria-expanded":h,className:clsx$1(x.root,o),focusVisibleClassName:clsx$1(x.focusVisible,l),onClick:y,ref:t,ownerState:b},d,{children:[(0,import_jsx_runtime.jsx)(AccordionSummaryContent,{className:x.content,ownerState:b,children:a}),s&&(0,import_jsx_runtime.jsx)(AccordionSummaryExpandIconWrapper,{className:x.expandIconWrapper,ownerState:b,children:s})]}))});init_generateUtilityClasses(),init_generateUtilityClass();function getAccordionDetailsUtilityClass(e){return generateUtilityClass(`MuiAccordionDetails`,e)}var accordionDetailsClasses=generateUtilityClasses(`MuiAccordionDetails`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$44=[`className`],useUtilityClasses$39=e=>{let{classes:t}=e;return composeClasses({root:[`root`]},getAccordionDetailsUtilityClass,t)},AccordionDetailsRoot=styled$1(`div`,{name:`MuiAccordionDetails`,slot:`Root`,overridesResolver:(e,t)=>t.root})(({theme:e})=>({padding:e.spacing(1,2,2)})),AccordionDetails=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiAccordionDetails`}),{className:a}=n,o=_objectWithoutPropertiesLoose$3(n,_excluded$44),s=n,l=useUtilityClasses$39(s);return(0,import_jsx_runtime.jsx)(AccordionDetailsRoot,_extends$3({className:clsx$1(l.root,a),ref:t,ownerState:s},o))}),FormControlContext=import_react$24.createContext(void 0);function useFormControl(){return import_react$24.useContext(FormControlContext)}init_generateUtilityClasses(),init_generateUtilityClass();function getSwitchBaseUtilityClass(e){return generateUtilityClass(`PrivateSwitchBase`,e)}var switchBaseClasses=generateUtilityClasses(`PrivateSwitchBase`,[`root`,`checked`,`disabled`,`input`,`edgeStart`,`edgeEnd`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_capitalize(),init_styled(),init_useControlled();var _excluded$43=[`autoFocus`,`checked`,`checkedIcon`,`className`,`defaultChecked`,`disabled`,`disableFocusRipple`,`edge`,`icon`,`id`,`inputProps`,`inputRef`,`name`,`onBlur`,`onChange`,`onFocus`,`readOnly`,`required`,`tabIndex`,`type`,`value`],useUtilityClasses$38=e=>{let{classes:t,checked:n,disabled:a,edge:o}=e;return composeClasses({root:[`root`,n&&`checked`,a&&`disabled`,o&&`edge${capitalize_default(o)}`],input:[`input`]},getSwitchBaseUtilityClass,t)},SwitchBaseRoot=styled$1(ButtonBase,{name:`MuiSwitchBase`})(({ownerState:e})=>_extends$3({padding:9,borderRadius:`50%`},e.edge===`start`&&{marginLeft:e.size===`small`?-3:-12},e.edge===`end`&&{marginRight:e.size===`small`?-3:-12})),SwitchBaseInput=styled$1(`input`,{name:`MuiSwitchBase`,shouldForwardProp:rootShouldForwardProp})({cursor:`inherit`,position:`absolute`,opacity:0,width:`100%`,height:`100%`,top:0,left:0,margin:0,padding:0,zIndex:1}),SwitchBase=import_react$24.forwardRef(function(e,t){let{autoFocus:n,checked:a,checkedIcon:o,className:s,defaultChecked:l,disabled:u,disableFocusRipple:d=!1,edge:f=!1,icon:m,id:h,inputProps:v,inputRef:y,name:b,onBlur:x,onChange:S,onFocus:C,readOnly:T,required:E=!1,tabIndex:D,type:O,value:k}=e,j=_objectWithoutPropertiesLoose$3(e,_excluded$43),[M,N]=useControlled_default({controlled:a,default:!!l,name:`SwitchBase`,state:`checked`}),F=useFormControl(),I=e=>{C&&C(e),F&&F.onFocus&&F.onFocus(e)},L=e=>{x&&x(e),F&&F.onBlur&&F.onBlur(e)},R=e=>{if(e.nativeEvent.defaultPrevented)return;let t=e.target.checked;N(t),S&&S(e,t)},z=u;F&&z===void 0&&(z=F.disabled);let B=O===`checkbox`||O===`radio`,V=_extends$3({},e,{checked:M,disabled:z,disableFocusRipple:d,edge:f}),H=useUtilityClasses$38(V);return(0,import_jsx_runtime.jsxs)(SwitchBaseRoot,_extends$3({component:`span`,className:clsx$1(H.root,s),centerRipple:!0,focusRipple:!d,disabled:z,tabIndex:null,role:void 0,onFocus:I,onBlur:L,ownerState:V,ref:t},j,{children:[(0,import_jsx_runtime.jsx)(SwitchBaseInput,_extends$3({autoFocus:n,checked:a,defaultChecked:l,className:H.input,disabled:z,id:B?h:void 0,name:b,onChange:R,readOnly:T,ref:y,required:E,ownerState:V,tabIndex:D,type:O},O===`checkbox`&&k===void 0?{}:{value:k},v)),M?o:m]}))});init_createSvgIcon();var CheckBoxOutlineBlank_default=createSvgIcon((0,import_jsx_runtime.jsx)(`path`,{d:`M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z`}),`CheckBoxOutlineBlank`);init_createSvgIcon();var CheckBox_default=createSvgIcon((0,import_jsx_runtime.jsx)(`path`,{d:`M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z`}),`CheckBox`);init_createSvgIcon();var IndeterminateCheckBox_default=createSvgIcon((0,import_jsx_runtime.jsx)(`path`,{d:`M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z`}),`IndeterminateCheckBox`);init_generateUtilityClasses(),init_generateUtilityClass();function getCheckboxUtilityClass(e){return generateUtilityClass(`MuiCheckbox`,e)}var checkboxClasses=generateUtilityClasses(`MuiCheckbox`,[`root`,`checked`,`disabled`,`indeterminate`,`colorPrimary`,`colorSecondary`,`sizeSmall`,`sizeMedium`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_capitalize(),init_DefaultPropsProvider(),init_styled();var _excluded$42=[`checkedIcon`,`color`,`icon`,`indeterminate`,`indeterminateIcon`,`inputProps`,`size`,`className`],useUtilityClasses$37=e=>{let{classes:t,indeterminate:n,color:a,size:o}=e;return _extends$3({},t,composeClasses({root:[`root`,n&&`indeterminate`,`color${capitalize_default(a)}`,`size${capitalize_default(o)}`]},getCheckboxUtilityClass,t))},CheckboxRoot=styled$1(SwitchBase,{shouldForwardProp:e=>rootShouldForwardProp(e)||e===`classes`,name:`MuiCheckbox`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.indeterminate&&t.indeterminate,t[`size${capitalize_default(n.size)}`],n.color!=="default"&&t[`color${capitalize_default(n.color)}`]]}})(({theme:e,ownerState:t})=>_extends$3({color:(e.vars||e).palette.text.secondary},!t.disableRipple&&{"&:hover":{backgroundColor:e.vars?`rgba(${t.color==="default"?e.vars.palette.action.activeChannel:e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,import_colorManipulator.alpha)(t.color==="default"?e.palette.action.active:e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:`transparent`}}},t.color!=="default"&&{[`&.${checkboxClasses.checked}, &.${checkboxClasses.indeterminate}`]:{color:(e.vars||e).palette[t.color].main},[`&.${checkboxClasses.disabled}`]:{color:(e.vars||e).palette.action.disabled}})),defaultCheckedIcon=(0,import_jsx_runtime.jsx)(CheckBox_default,{}),defaultIcon=(0,import_jsx_runtime.jsx)(CheckBoxOutlineBlank_default,{}),defaultIndeterminateIcon=(0,import_jsx_runtime.jsx)(IndeterminateCheckBox_default,{}),Checkbox=import_react$24.forwardRef(function(e,t){var n,a;let o=useDefaultProps({props:e,name:`MuiCheckbox`}),{checkedIcon:s=defaultCheckedIcon,color:l=`primary`,icon:u=defaultIcon,indeterminate:d=!1,indeterminateIcon:f=defaultIndeterminateIcon,inputProps:m,size:h=`medium`,className:v}=o,y=_objectWithoutPropertiesLoose$3(o,_excluded$42),b=d?f:u,x=d?f:s,S=_extends$3({},o,{color:l,indeterminate:d,size:h}),C=useUtilityClasses$37(S);return(0,import_jsx_runtime.jsx)(CheckboxRoot,_extends$3({type:`checkbox`,inputProps:_extends$3({"data-indeterminate":d},m),icon:import_react$24.cloneElement(b,{fontSize:b.props.fontSize??h}),checkedIcon:import_react$24.cloneElement(x,{fontSize:x.props.fontSize??h}),ownerState:S,ref:t,className:clsx$1(C.root,v)},y,{classes:C}))});function hasValue(e){return e!=null&&!(Array.isArray(e)&&e.length===0)}function isFilled(e,t=!1){return e&&(hasValue(e.value)&&e.value!==``||t&&hasValue(e.defaultValue)&&e.defaultValue!==``)}function isAdornedStart(e){return e.startAdornment}init_generateUtilityClasses(),init_generateUtilityClass();function getFormControlUtilityClasses(e){return generateUtilityClass(`MuiFormControl`,e)}var formControlClasses=generateUtilityClasses(`MuiFormControl`,[`root`,`marginNone`,`marginNormal`,`marginDense`,`fullWidth`,`disabled`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_DefaultPropsProvider(),init_styled(),init_capitalize(),init_isMuiElement();var _excluded$41=[`children`,`className`,`color`,`component`,`disabled`,`error`,`focused`,`fullWidth`,`hiddenLabel`,`margin`,`required`,`size`,`variant`],useUtilityClasses$36=e=>{let{classes:t,margin:n,fullWidth:a}=e;return composeClasses({root:[`root`,n!==`none`&&`margin${capitalize_default(n)}`,a&&`fullWidth`]},getFormControlUtilityClasses,t)},FormControlRoot=styled$1(`div`,{name:`MuiFormControl`,slot:`Root`,overridesResolver:({ownerState:e},t)=>_extends$3({},t.root,t[`margin${capitalize_default(e.margin)}`],e.fullWidth&&t.fullWidth)})(({ownerState:e})=>_extends$3({display:`inline-flex`,flexDirection:`column`,position:`relative`,minWidth:0,padding:0,margin:0,border:0,verticalAlign:`top`},e.margin===`normal`&&{marginTop:16,marginBottom:8},e.margin===`dense`&&{marginTop:8,marginBottom:4},e.fullWidth&&{width:`100%`})),FormControl=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiFormControl`}),{children:a,className:o,color:s=`primary`,component:l=`div`,disabled:u=!1,error:d=!1,focused:f,fullWidth:m=!1,hiddenLabel:h=!1,margin:v=`none`,required:y=!1,size:b=`medium`,variant:x=`outlined`}=n,S=_objectWithoutPropertiesLoose$3(n,_excluded$41),C=_extends$3({},n,{color:s,component:l,disabled:u,error:d,fullWidth:m,hiddenLabel:h,margin:v,required:y,size:b,variant:x}),T=useUtilityClasses$36(C),[E,D]=import_react$24.useState(()=>{let e=!1;return a&&import_react$24.Children.forEach(a,t=>{if(!isMuiElement_default(t,[`Input`,`Select`]))return;let n=isMuiElement_default(t,[`Select`])?t.props.input:t;n&&isAdornedStart(n.props)&&(e=!0)}),e}),[O,k]=import_react$24.useState(()=>{let e=!1;return a&&import_react$24.Children.forEach(a,t=>{isMuiElement_default(t,[`Input`,`Select`])&&(isFilled(t.props,!0)||isFilled(t.props.inputProps,!0))&&(e=!0)}),e}),[j,M]=import_react$24.useState(!1);u&&j&&M(!1);let N=f!==void 0&&!u?f:j,F,I=import_react$24.useMemo(()=>({adornedStart:E,setAdornedStart:D,color:s,disabled:u,error:d,filled:O,focused:N,fullWidth:m,hiddenLabel:h,size:b,onBlur:()=>{M(!1)},onEmpty:()=>{k(!1)},onFilled:()=>{k(!0)},onFocus:()=>{M(!0)},registerEffect:void 0,required:y,variant:x}),[E,s,u,d,O,N,m,h,void 0,y,b,x]);return(0,import_jsx_runtime.jsx)(FormControlContext.Provider,{value:I,children:(0,import_jsx_runtime.jsx)(FormControlRoot,_extends$3({as:l,ownerState:C,className:clsx$1(T.root,o),ref:t},S,{children:a}))})});init_styled(),init_DefaultPropsProvider();var Stack=createStack({createStyledComponent:styled$1(`div`,{name:`MuiStack`,slot:`Root`,overridesResolver:(e,t)=>t.root}),useThemeProps:e=>useDefaultProps({props:e,name:`MuiStack`})});init_generateUtilityClasses(),init_generateUtilityClass();function getFormControlLabelUtilityClasses(e){return generateUtilityClass(`MuiFormControlLabel`,e)}var formControlLabelClasses=generateUtilityClasses(`MuiFormControlLabel`,[`root`,`labelPlacementStart`,`labelPlacementTop`,`labelPlacementBottom`,`disabled`,`label`,`error`,`required`,`asterisk`]);function formControlState({props:e,states:t,muiFormControl:n}){return t.reduce((t,a)=>(t[a]=e[a],n&&e[a]===void 0&&(t[a]=n[a]),t),{})}init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_capitalize(),init_styled(),init_DefaultPropsProvider();var _excluded$40=[`checked`,`className`,`componentsProps`,`control`,`disabled`,`disableTypography`,`inputRef`,`label`,`labelPlacement`,`name`,`onChange`,`required`,`slotProps`,`value`],useUtilityClasses$35=e=>{let{classes:t,disabled:n,labelPlacement:a,error:o,required:s}=e;return composeClasses({root:[`root`,n&&`disabled`,`labelPlacement${capitalize_default(a)}`,o&&`error`,s&&`required`],label:[`label`,n&&`disabled`],asterisk:[`asterisk`,o&&`error`]},getFormControlLabelUtilityClasses,t)},FormControlLabelRoot=styled$1(`label`,{name:`MuiFormControlLabel`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[{[`& .${formControlLabelClasses.label}`]:t.label},t.root,t[`labelPlacement${capitalize_default(n.labelPlacement)}`]]}})(({theme:e,ownerState:t})=>_extends$3({display:`inline-flex`,alignItems:`center`,cursor:`pointer`,verticalAlign:`middle`,WebkitTapHighlightColor:`transparent`,marginLeft:-11,marginRight:16,[`&.${formControlLabelClasses.disabled}`]:{cursor:`default`}},t.labelPlacement===`start`&&{flexDirection:`row-reverse`,marginLeft:16,marginRight:-11},t.labelPlacement===`top`&&{flexDirection:`column-reverse`,marginLeft:16},t.labelPlacement===`bottom`&&{flexDirection:`column`,marginLeft:16},{[`& .${formControlLabelClasses.label}`]:{[`&.${formControlLabelClasses.disabled}`]:{color:(e.vars||e).palette.text.disabled}}})),AsteriskComponent$1=styled$1(`span`,{name:`MuiFormControlLabel`,slot:`Asterisk`,overridesResolver:(e,t)=>t.asterisk})(({theme:e})=>({[`&.${formControlLabelClasses.error}`]:{color:(e.vars||e).palette.error.main}})),FormControlLabel=import_react$24.forwardRef(function(e,t){var n,a;let o=useDefaultProps({props:e,name:`MuiFormControlLabel`}),{className:s,componentsProps:l={},control:u,disabled:d,disableTypography:f,label:m,labelPlacement:h=`end`,required:v,slotProps:y={}}=o,b=_objectWithoutPropertiesLoose$3(o,_excluded$40),x=useFormControl(),S=d??u.props.disabled??x?.disabled,C=v??u.props.required,T={disabled:S,required:C};[`checked`,`name`,`onChange`,`value`,`inputRef`].forEach(e=>{u.props[e]===void 0&&o[e]!==void 0&&(T[e]=o[e])});let E=_extends$3({},o,{disabled:S,labelPlacement:h,required:C,error:formControlState({props:o,muiFormControl:x,states:[`error`]}).error}),D=useUtilityClasses$35(E),O=y.typography??l.typography,k=m;return k!=null&&k.type!==Typography&&!f&&(k=(0,import_jsx_runtime.jsx)(Typography,_extends$3({component:`span`},O,{className:clsx$1(D.label,O?.className),children:k}))),(0,import_jsx_runtime.jsxs)(FormControlLabelRoot,_extends$3({className:clsx$1(D.root,s),ownerState:E,ref:t},b,{children:[import_react$24.cloneElement(u,T),C?(0,import_jsx_runtime.jsxs)(Stack,{display:`block`,children:[k,(0,import_jsx_runtime.jsxs)(AsteriskComponent$1,{ownerState:E,"aria-hidden":!0,className:D.asterisk,children:[` `,`*`]})]}):k]}))}),require_ExpandMore=__commonJSMin((e=>{var t=require_interopRequireDefault();Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(require_createSvgIcon()),a=require_jsx_runtime();e.default=(0,n.default)((0,a.jsx)(`path`,{d:`M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z`}),`ExpandMore`)})),require_KeyboardArrowUp=__commonJSMin((e=>{var t=require_interopRequireDefault();Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(require_createSvgIcon()),a=require_jsx_runtime();e.default=(0,n.default)((0,a.jsx)(`path`,{d:`M7.41 15.41 12 10.83l4.59 4.58L18 14l-6-6-6 6z`}),`KeyboardArrowUp`)})),require_KeyboardArrowDown=__commonJSMin((e=>{var t=require_interopRequireDefault();Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(require_createSvgIcon()),a=require_jsx_runtime();e.default=(0,n.default)((0,a.jsx)(`path`,{d:`M7.41 8.59 12 13.17l4.59-4.58L18 10l-6 6-6-6z`}),`KeyboardArrowDown`)}));init_generateUtilityClasses();var boxClasses=generateUtilityClasses(`MuiBox`,[`root`]);init_ClassNameGenerator$1(),init_createTheme(),init_identifier();var Box=createBox({themeId:identifier_default,defaultTheme:createTheme(),defaultClassName:boxClasses.root,generateClassName:ClassNameGenerator.generate});init_generateUtilityClasses(),init_generateUtilityClass();function getCardUtilityClass(e){return generateUtilityClass(`MuiCard`,e)}var cardClasses=generateUtilityClasses(`MuiCard`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$39=[`className`,`raised`],useUtilityClasses$34=e=>{let{classes:t}=e;return composeClasses({root:[`root`]},getCardUtilityClass,t)},CardRoot=styled$1(Paper,{name:`MuiCard`,slot:`Root`,overridesResolver:(e,t)=>t.root})(()=>({overflow:`hidden`})),Card=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiCard`}),{className:a,raised:o=!1}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$39),l=_extends$3({},n,{raised:o}),u=useUtilityClasses$34(l);return(0,import_jsx_runtime.jsx)(CardRoot,_extends$3({className:clsx$1(u.root,a),elevation:o?8:void 0,ref:t,ownerState:l},s))});init_generateUtilityClasses(),init_generateUtilityClass();function getCardHeaderUtilityClass(e){return generateUtilityClass(`MuiCardHeader`,e)}var cardHeaderClasses=generateUtilityClasses(`MuiCardHeader`,[`root`,`avatar`,`action`,`content`,`title`,`subheader`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_DefaultPropsProvider(),init_styled();var _excluded$38=[`action`,`avatar`,`className`,`component`,`disableTypography`,`subheader`,`subheaderTypographyProps`,`title`,`titleTypographyProps`],useUtilityClasses$33=e=>{let{classes:t}=e;return composeClasses({root:[`root`],avatar:[`avatar`],action:[`action`],content:[`content`],title:[`title`],subheader:[`subheader`]},getCardHeaderUtilityClass,t)},CardHeaderRoot=styled$1(`div`,{name:`MuiCardHeader`,slot:`Root`,overridesResolver:(e,t)=>_extends$3({[`& .${cardHeaderClasses.title}`]:t.title,[`& .${cardHeaderClasses.subheader}`]:t.subheader},t.root)})({display:`flex`,alignItems:`center`,padding:16}),CardHeaderAvatar=styled$1(`div`,{name:`MuiCardHeader`,slot:`Avatar`,overridesResolver:(e,t)=>t.avatar})({display:`flex`,flex:`0 0 auto`,marginRight:16}),CardHeaderAction=styled$1(`div`,{name:`MuiCardHeader`,slot:`Action`,overridesResolver:(e,t)=>t.action})({flex:`0 0 auto`,alignSelf:`flex-start`,marginTop:-4,marginRight:-8,marginBottom:-4}),CardHeaderContent=styled$1(`div`,{name:`MuiCardHeader`,slot:`Content`,overridesResolver:(e,t)=>t.content})({flex:`1 1 auto`}),CardHeader=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiCardHeader`}),{action:a,avatar:o,className:s,component:l=`div`,disableTypography:u=!1,subheader:d,subheaderTypographyProps:f,title:m,titleTypographyProps:h}=n,v=_objectWithoutPropertiesLoose$3(n,_excluded$38),y=_extends$3({},n,{component:l,disableTypography:u}),b=useUtilityClasses$33(y),x=m;x!=null&&x.type!==Typography&&!u&&(x=(0,import_jsx_runtime.jsx)(Typography,_extends$3({variant:o?`body2`:`h5`,className:b.title,component:`span`,display:`block`},h,{children:x})));let S=d;return S!=null&&S.type!==Typography&&!u&&(S=(0,import_jsx_runtime.jsx)(Typography,_extends$3({variant:o?`body2`:`body1`,className:b.subheader,color:`text.secondary`,component:`span`,display:`block`},f,{children:S}))),(0,import_jsx_runtime.jsxs)(CardHeaderRoot,_extends$3({className:clsx$1(b.root,s),as:l,ref:t,ownerState:y},v,{children:[o&&(0,import_jsx_runtime.jsx)(CardHeaderAvatar,{className:b.avatar,ownerState:y,children:o}),(0,import_jsx_runtime.jsxs)(CardHeaderContent,{className:b.content,ownerState:y,children:[x,S]}),a&&(0,import_jsx_runtime.jsx)(CardHeaderAction,{className:b.action,ownerState:y,children:a})]}))});init_generateUtilityClasses(),init_generateUtilityClass();function getCardContentUtilityClass(e){return generateUtilityClass(`MuiCardContent`,e)}var cardContentClasses=generateUtilityClasses(`MuiCardContent`,[`root`]);init_extends(),init_objectWithoutPropertiesLoose(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$37=[`className`,`component`],useUtilityClasses$32=e=>{let{classes:t}=e;return composeClasses({root:[`root`]},getCardContentUtilityClass,t)},CardContentRoot=styled$1(`div`,{name:`MuiCardContent`,slot:`Root`,overridesResolver:(e,t)=>t.root})(()=>({padding:16,"&:last-child":{paddingBottom:24}})),CardContent=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiCardContent`}),{className:a,component:o=`div`}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$37),l=_extends$3({},n,{component:o}),u=useUtilityClasses$32(l);return(0,import_jsx_runtime.jsx)(CardContentRoot,_extends$3({as:o,className:clsx$1(u.root,a),ownerState:l,ref:t},s))});init_generateUtilityClasses(),init_generateUtilityClass();function getCardActionsUtilityClass(e){return generateUtilityClass(`MuiCardActions`,e)}var cardActionsClasses=generateUtilityClasses(`MuiCardActions`,[`root`,`spacing`]);init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_styled(),init_DefaultPropsProvider();var _excluded$36=[`disableSpacing`,`className`],useUtilityClasses$31=e=>{let{classes:t,disableSpacing:n}=e;return composeClasses({root:[`root`,!n&&`spacing`]},getCardActionsUtilityClass,t)},CardActionsRoot=styled$1(`div`,{name:`MuiCardActions`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,!n.disableSpacing&&t.spacing]}})(({ownerState:e})=>_extends$3({display:`flex`,alignItems:`center`,padding:8},!e.disableSpacing&&{"& > :not(style) ~ :not(style)":{marginLeft:8}})),CardActions=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiCardActions`}),{disableSpacing:a=!1,className:o}=n,s=_objectWithoutPropertiesLoose$3(n,_excluded$36),l=_extends$3({},n,{disableSpacing:a}),u=useUtilityClasses$31(l);return(0,import_jsx_runtime.jsx)(CardActionsRoot,_extends$3({className:clsx$1(u.root,o),ownerState:l,ref:t},s))}),import_ExpandMore=__toESM(require_ExpandMore()),import_KeyboardArrowUp=__toESM(require_KeyboardArrowUp()),import_KeyboardArrowDown=__toESM(require_KeyboardArrowDown()),watered_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABbklEQVRIia1WvY3GIAz15ToqRqCmZoAMwT4R+3iJ66lTMwIjXGX04tjJp9NZQgFsnv1sfkL0gdRaj0/sPhIN5oH/yekTmOh0/239hkpmbhYQMzcNoJ1Y64mIvrQSjVC8ecvuwsDyrI2IiEopxxiDxhgLRMZPQSwGaFRKWeOUEglYSukCiDaix0wsB+hkjEG994ZjCwhFbGQeM/CtGcQYKYSwxxjXeM5JvfeWc17zzNxCCPuc8+I8xkg55/08zx+XgSc6RcgImSGDzQIXQ/x64LIOwTEjm7drtBMB0c5Qb8mmq64jk37vvWkG2O+93w4jkVEDTdPKse5bzAXndpJF+QSimXrgi4G3573rwcu3u4twEqNGx1gPLLbeDO4uqrUemGthgKBSaLyLiGgVGLNxu001fbwuvPRYRdcZuZwDZm4S6dPVjKlBRxqcSJ0D/fUcWGDM3KRdgnt6/rwXTLcnHLIm316utzf5X/9C3oL6BQBimEemYBpmAAAAAElFTkSuQmCC`,fertilized_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAVklEQVRYhe2QwREAIAjD2MVBnc65dAUOi+0J+fSZXM2aX1hz7GcS71KkkIhbKSSGGpEll4jQfyBbrh9RVy4R0Q/0AyUecEGVfx0Roq4cFQGFIvXGNFEOnwmdSclbLhUAAAAASUVORK5CYII=`,rainbow_fertilized_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAkUlEQVRYhe3Quw2AMAxF0ezDFizDCjTMwLI0VKaBSFhyEht/pITXuDxXTulfL4NjBntkn+B1b5S6NmgjvsIijyBRJo6vToQQZ0WY4XB+iOgCb4kwx1kRVngpYlw8R1jjGxQ+EInXItRwyQdccCpCHed8wBXHESH4s1C8FiHGNSJccRwxHp4XitdiXFBqIWiPuwDmWChFXQDxHwAAAABJRU5ErkJggg==`,mulched_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAVdJREFUWIXtlTFuwzAMRZmewwfw2sGH8KCtZ7CB3KB7gPgqBrL1FEUGX6L3YJey+CG+KCXxUBT6kyxL1CNFUiJNTU1NTf9Y6zKpjU/H9DtOQ6frMul2Od/M1dh8uQcAjfrx53WT0zFpGjr9uH4dRERe394P6zLdzNWCVcOkodMITH4ih+vx+ykoNMoMsXl/uF9nUcTrfhoGI8H2oGwNg66GMk9ERCwxPRgz5g+xxGZ7itfGKgarJGckigrCsPzy9kMof1gUXlzHDmHXbuuKUP6KEGYee/XzCIrG/b8cfPbqsJyxyZnmsdd57KuSkFVZlD9hPiGUL+HtclbmOToTtQDMLQQtVlvkkb8W3OcrjDlqTj3UHP0mD8m6MPadXIe+uykyKN/gogiwpsfy8iEQIWVbeptyzdSejV2hfKnWjM2B3V56KTyaQqKB+3aDqNGuXjc1NTX9AX0DskV/GZiF3KoAAAAASUVORK5CYII=`,rainbow_mulched_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAAAXNSR0IArs4c6QAAAYlJREFUWIXtVcGNg0AMdO5FFdRw96EDOrga6CCP0xZABXxQSqAXKIUHIKQk8r0GjRxzEPiddqRIu1mvPWuPjUhERERExD9GX+WKdSKd2rO2KdW9+Ac+3jGu01HX1rN8XhLp9PYIy/9f3z8XJm3vnUIWJoXDNWIg01f5YlOno/L+FCl2yqTWzpnM9T6/EKjTUVFam7nDpG6PoJwJz5bJwAb3nkOhfZUvv91E8BII06bZc4bysM1zKNz9Ztm8jmmbUjkjXgY8x/DVNqXW6ajPoVg0xHra7EI4ysKkWZiUCTBhJmRJeUE8rcFuk5QtkSWDF+MBfIa7uGPLiqbAg5BBlwi3sx1yIiKcduw9P9f7/BKEtWVJ2cytIpFumR8I3jal+3J+jDcCeC+mCru7ra9ytVoSU3NuaTGNYc9YyJbobrCOoAs7seHckuIyWVKHhyKcZGFSDsR7Sx5CteeeLt8mIuZz4c0ScUTJGuE5lkh3rFReIDvsPJu1NWf3MBmLrbqvBTull4iIiIgIkV/Jgy2+BhL+vQAAAABJRU5ErkJggg==`,shoveled_plot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAACXBIWXMAAAsTAAALEwEAmpwYAAABXklEQVRYheWYPQ7CMAyFTRcGxMaRei/Ue3EXLoBYqg6dyhAZue6Lk1T5oeJJVURckk8vdtSE6MgaelqGnpaSc5xCAL7Y/eH+q9/hfjSGjiUBIZhxdu31HBrWlgW2CUgQBkBiKP2OhpVxHUNgXSzMa1q3z7d7R/eP8/rRcLIPrUKnOxAMEdHt4iYNtQgejc9zaKgvEAcsZ2KhLMiQoENSeyFQi5zSLnmBcjizx6lOEjJxTogYpzZAXH5cliVhUFVKU5o4ZDkFc6gGjC+XIFBzh2rnkJXY3rJvsVxEtP6EkLt0LYd4VXiVfs4hc6dulkM6qUs7ZAlujKUdCgIh1cghndAmUGko0yGUQ0TlHUr+HmrmEErqplWGluyvqswSPPZaB8TQJCkwyWWPxIPqFsVTl2sDJHOJH/k7NzwSPPTHXrn4zvUxdwIsfb4PXo8MPS2+q5ccSgay5LsbirlXOow+jbqqwQYBTPwAAAAASUVORK5CYII=`,apple_juice_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQJJREFUSIljYBgFo4CBgYHhxo0b/2/cuPGfLhbRxGAWFpb/MHzjxo3/yHwWFha8ljISY/i+nRPhfDFpZ4ZXT/eiqHFyz2f48+cPQbPwuhwbPrR3KgqN1QxCllw81sDALaCBIf71ww0Gfat8BmTfYQNMhCzAZjhM/OKxBgYn93zKLMAGnCd04bUcGRAMImRQmFLLcEmHl2FvQRnReoj2wY28OQyRj74ztG97xXDKrYS6FtzIm8Pw6cYNFLFVDnnUswDdcAYGBgYFNjbqWUAJINuCB79+Uc8Cs109GIaHHZhElAV4yw8WFpb/uHIyAzw3NzAwMDDgLIuIKuwIqSGroBsyAADMgGh66tN3lAAAAABJRU5ErkJggg==`,apple_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZlJREFUSIntlD9IQlEUxn9GjtEQFYJDi7ooEQ7RYoPg8sDddGvyjW8QXBpcBAehRSe3ol1wERxqCYMQqUVbGoKIaA8aXoOey33/THIK+oYH775zf9/5zr08+Ne/VlVoiRp7FU7QBwUd9Wo/0g+Ms0Cen4F9fhInUywBcHs94Ovl1VEQSyd5un9U71I7N3Iw3QYKfnN5AYBhWvS7V+TyBVUk771WU62FoxGOjrMeE93AhtlIBB7UsQDFxDAtAHqtJpliyWGyJvBRr6bgssEwLQzT4vntQ62JcvkC02FfJZQ0G5s7cm62uNjursPRCHu7W56uY+kkAPHDnAIapuVJAagk6+Iqxfqc3Zv9Zq/X6RJmCLCrlTKn+X1PkV8SffbS1HTYV6mkmU53TL3RVoesTPSY+g3SzfWk7vW7yScPkwkA9UZ7NiJRpzsGIJU1PZt1yHTYV6n0MbrhQMhxTauVsgOWSiQAeB+0PIco2p43A3jg6rHIRDfyk0BFOtzPAOb3189okeZgD3PR39TxFw0yDAIvY7DQ8JeMP6hvVK7PhaXOgsEAAAAASUVORK5CYII=`,banana_bread_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAYpJREFUSIntlE1LAlEUhh8lghhmQiQRgorUbYiIYotZ26JFW6VV/yJoFfQv+hUudO0iKSSirR/UQpCRQZxBpBbaou51ZvxodBXhu5lz7p37vOeeuXdgo43+vALrLsxHgxPvWKU7nuGtbCDAx4kjojtTj+4oQLvxNmPky8BZrRMci30/W60pRhgJk6UGi6qdBwZ4eH0HYH9vl05vQKU7Dmz5Ay+u2Av2ymUgwOmcDkC9VqX9M3d5cbASWEiuyEeDk3ROJ5NNEo4MATANhafHF2kGcHpy6AssWhQQ8Ju7KzkZ0lT6lj2Tl0sN6rXqUrDXIOgcDGkqAM3mWMYiBzg7T/wKBrA+RjJ2GYiqw5GhjEOaKlsW0lTSOZ1Ob7AQ3OkNsK1PeUylgWkorl2IXFRvGgp9y567Cy/YedGkgfiYfcvGNBTi8aDcDSBzZ+uWgYVcp0jE4pgCFIop2S7TUAhHhtxe36Nq265WLJK8B64Xa1VpVq9VSed0CsUU5dIzmWwSwBecdf5FM8X8e30B0FvZU200DxwAAAAASUVORK5CYII=`,banana_cream_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAW1JREFUSIntlDFLw0AYht8WqSJWqks2g+BUKXQJEp1a8kuELP0L/o8sgkv/gqPUSUvpIgQ7lGBxdLI0IEVozqF+532Xu1jsJPSFwOW743m/y3sXYKON1lVphTViHY5tQkLTOPqVXm10rDyTgSDo3nYXAJCd3OcWlZOWnPt4vlGNGHPLBN89vVy+JV02+Tq8AwC4XsDqtD6NgWqjI2xfRqRxJBbZ3PiIsS/E2BeLbC5eBrfWNWkcCVNuDK7CCGiq2RrQTRjcBNOBth2odTKRGUx7PmrtPlwvwGS4rLnKFl0vQDlpYfJ+xTKgsPU6C3k0a6LuhMyEQqUxgVwvkGEDwPHBTwPUaMUJMZo1ASVtMXh4RH3/CQDw+XaNw6Md2ZkuU6fTng8ADH52cc4NSKoRqdbuW6EkHQ6gpJ5XZmIz0lVxQjnW4TBciJyJamQSQUkq3GQAOr8moyJ9g3PMor8pu402Qxt4FYNCwz8y/qG+AP/oVWW7If/LAAAAAElFTkSuQmCC`,bread_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAmklEQVRIiWNgGAUDDRjJ1PefWPNIteA/AwMDw9Ic7JLRUzDNJdYCvAbjsIiRgYGBgYWaBt9+jimGywKKDcZlwX8GBgaGhmDcGlUliTMYmwX/YQYX1M/CqWFCYxphU5EAciT//3AJt8GkWNSwFmE2E0nOIQOMWkB/C5AjmIGBcE4m1WAUw6liAS6DKbaAkMG4JHGV88ToHQXkAQCMXCTuoxbh9AAAAABJRU5ErkJggg==`,burger_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA4ElEQVRIiWNgGAUEACOR6v6Tq5+Qgv8MDAwMkxJQBfml9Bk+PrvIkLeAsDm4JDAMhhlKqkXYLPiPz2BsFsEA1CIUM5mwKeSX0oez0Q2D8WFqkNViA+g+INv1aMEFNxerDwi5nhi1MIA1DvBZSgRAMZMFm4ozUFrlQT9OU/68qEfhi1h8wjAcqwAU/PdfA5FaaNJH0PDkJ58ZGBgYGDaG/Mcwk+QgenOCD86Guhod4LXg/6kWfMYTBmY1qObiTUXUADRPRXgzGjmApIxGDUCwsCMFYCvs8BbXZABiK7BRgAAAeO5Ta9GiRlQAAAAASUVORK5CYII=`,butter_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABFklEQVRIS2NkoDFgpLH5DKMWEAzhgQmig0sY/iM7zT6G/LjC8AHIcDsHbxSvHzqwFc4n1TIUC7AZjh7IyJaB5AhZiGGBrp4+3ExBIRmCkUjIQrw+eP/uCdGWwdRevnQRxVdwC/Snff8/iY+TAT38YTbgsgwmDvMtyEfIwQa2AGT4hYirDIe2meC0ADms8PmMKhYg+wo9nvBaANII8gUM4AouQhbkffrOcDGLExw6KHEACiZkQMgyUFBh84Gd1xkGgxXaYEtQUhEoLkAWoFuE7jMQH+Q7ZAtgyRVkOAhgtQDmephFuCzDaiHUYGTDUYIIV45CtgyfhTCDQTQs/ImyAN1idAuR5ZENhokPTHFNsAAiQcHQ9wEAcVWNGQEhAZkAAAAASUVORK5CYIIA`,carrot_soup_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAyElEQVRIie2UsRXCMAxEzzz6PAaAESihyiJMwghMwiKpSMkIyQB5mUAUIOfiyCYQ6HylpPsnO34BsrKyXKInv2CFRQ+V834yXDcdDruNWXOXu8nlAFGomixgLIh7x2vr2SvevG46APBmhmiP61wLvcrUE4j0FVxResPttE1uGfb4iojl1jwkfTUYihJAawY8Ne6xdxTMM7GhT6XbA8M3+Jsmz3TpKXh7K2BRSAiPBXwVYsFTAcDrHb8Loqc961cRDUplzGBkxfUAEyhSiovwVIoAAAAASUVORK5CYII=`,cheese_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA10lEQVRIie2VsRHCMAxFfzi6tCzAEFmIYyyOhVIyAAvQpjaNjSVZsmWThjt+qTjvKYpyAX490w6MUGN+IwgA8Lrx4unKuaOCIMGWpFegdl2THPcGy7QEw2CPoDpnmjgOt6DZtQSG56U4M53vhcAEe4AAgG0F5oWVkoCNww2UcEWS1pR9jW6g6JbW4ojymnZDJdyoHdrUOqAVXbCteaa1OM6Ua0pv0uZMQ6/Fs2k9Ed9vKZiXLFEAMgQI4PEB208gwaLGgblTK1ng6rANtAWDHfYkoPz9/YM3a79OWiGiHuMAAAAASUVORK5CYII=`,chickn_pot_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAACHklEQVRIS+1Vv08TYRh+3g8GimJigpOySSks+idggh20bC0DJNaEXoxbJTI50uhQicDoXaVltNdBXI1RBv8ErcRN4oKDCy1L7zXve72zP64hIekk79Cvd993z/M+z/d8d4QhFw0ZHxcEZzp8YdH/bNHX9XlmAogBZsYojYZ2tNACYGDYgyGCx4TEy4+Rgem6KaABSiJ1pctfITspv8e9eBIHj1fQyGfD+fGtCuqFN9oIEWGu+CnEDf/Un85zfLEbVBBEgQf/wcbuPsa39/D7aEzBJ2+c6th5zQwcbpQwu/lZsfVHOo+nJmCi3hxtn3S4lYYANPMPFDi2taddn6499K9fVQBtxqBeKKmSkGBm8TKIzcDYBQTNfBZj2xWYlu/myZMsQIS7s0m8u78KMGFyqol6wcFc8cAnkPq+foenUxNQQ9TLkT4ysUisWphJ4sujZRz/iiFWXMKlnTLYM8KjdbhRDjc9JLAsi9eu/oBGB0AiJYqkIU8TI8Te7SWMeO0cEOH4KIZr1xu6/tvzXRhZbwibf27CeW3/2wNZkMvlOJPJhF1PfXgBbu+KKDLGj6XXbilIjK+Y8HPhmTYh5boubLuHQCZERTqdVhsE4Dzlum9h26X+mHYSRAP7VgWHbxB5tVqF4zjRBAGJjKJEql+Nvx+9VavVVHVgTTA/8HtgWasssZVDJv53Wqb39MwYEHuqqhf4TILz+B/1zNC/aH8Brz3WGQIa2zUAAAAASUVORK5CYIIA`,chocolate_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABBklEQVRIic2VoRKCQBCGf7VTSQbeQGbovoQ2GxSzL2CkkE0+gb6A0U7wDQwkKt050zF3cHu7cOOMWxjudr5vd+8YgD8PxSUsQ+Cf3YaVLALhAIDV/UWy5ggsOCeZKnDCfZIpAi+ckkgFIrhLIrlFqq5rMRwAzNvFdaCqPMH2eOsX0rJgBWYHPoGq8gQA0LQdAOBwfrAS6RmM4ACwjiOrm6FMeot6uI6m7bCOo9G7lqVlQX4Hw0MmKzfh+vm87MnKXYIR3JRQ0izLSLi5wVZuSvT66fr2woeblsQ1czMkcFeC84B1TKmcEliSULgv0TmuqXAu2RrXHLgkVJUnCoJ/b5Dkl/Dg+AKF7I1oIzfs7AAAAABJRU5ErkJggg==`,garlic_bread_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABDklEQVRIS2NkoDFgpLH5DKMWEAzhwRVEGyrk/mNzckDHI5wOJdoHIMP9Ax6Bzf/4SRBizxsIdeASLwMuS4iyAGb4X1lPVA+8YmD4cv0EXksIWoBuuLTQVYan77QRFkEt+f+BgeHgI0yf4LUAp8uR/UGuBcQYLrDqBcMHBwlwMJHsA2QLkIMFbGiYBOVBBLLAwekzA4+2Be7MhBTJZPkAZgGGq2FWUmyB3mcGHntMH4CD7IY2PImCXA8CJKUicBDpfQZrxGYJAxGuB+klmEzhlmii+gSWwXCFPSwUibYAW0zjCxqiLAApghVw9nKQ4EIH2MIdWQ3BogKmmJySlGAc4M4AxMsQ7QPijURVSXMLAIP+thkNIUCYAAAAAElFTkSuQmCC`,garlic_fries_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAB00lEQVRIS7WVMUsDQRCFN8FGTKdYCYqglQiCRQjGRiwsBMFWA6KC/oFYim3+gBbaRC0VwcJCLDQhpBAEsVIQBSvR7sRGEnkb3zK37uUu4bLN7e3Nvm/ezG6SUB0eiQ7rq8iA80JffT7/oePl3PUuk/4HwGYEUIwC6bltVb3Y0Xs5Rwzi5btdER+AwQiCmBTgGsQ4J6xnaEFd7U74kiLI6WBm8059vZz5MqYIAEmvoiqlS+Omq3dclY8WTfLSvRPALGXWFAUc2bIsLiDdY7+zySjV1NKJ+vm81y6kSCY7q7MnAHG11z2zJsvbFCBrbYsACiffD3ktbLtqWiIWki5QW+kAMNcaXNRSGXM4ApssAbLOaDIa7+oLyoYBNzL7wBLhQ2FkoL5yuqVPDDLDMzm4ofvCQSi+YRzkSir/9Obra+BNBgCb1q+PdRO7xwragQQSTHE8WwJMplLq1vN0dqvFrHaCAQiAaDKyxmBsywCWgyBTn78JhGVM2wBb2PWOJGIDpG8aPxXV6cYJwogFQGGKxgoY3l9W/aM5k/H7Y1E9rx2254B3QTYRa4BwhIkjLvQfDffBhtgNdtWeMaGAICfNGisTiAQgxHU07WNpx0QGRLkHrphfBDxYKKqYnIMAAAAASUVORK5CYIIA`,flour_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAEHUlEQVRIS7WVa2xTZRjH/6f30+vapVrqVl0ZSGKy6EQgDkwIypiaMYIfiEVjYoiXzZJM/KRRNOGTQuKcRickLtuIkhg2vCBREwNz04wwwiLboHRu3Uq30Z6ul9Pb1mPet+uxtzXGhPfLOee9/H//53ne9z0M7nJj7rI+ygGEMvD/so7OKZwoip5o2wOUQjBAe+dPuexcDeHtl5+iY8dO/Uz18wZbm+uw3malEwpEREEKJo3AC2BZ8VIAoVA86LkJQRCgUcsQ5ZfBMAz9Nto2/gtrXYUBuOxaQE1VZZ773BSJAOKciLMqKeKJZaTTGb3LP3Rg8zNOUZwAK6o34PnGetpXSrwsgGEEUZxMVLMyLHFByFVa+s7HltH14VsI8bwInZr14/SFK3m1zdZAaGuug91mpbn/5QsnHm1qy3OejIehUOloHwF8130MBg2LpWgMo+MzyIqfaGtCe+d5EVJU5FHXHQxd99I0EVG5Ukvzn5smUovAeD9GxyZp/3NHTtEnMTkXSODsIO0v2qaZOlRbccvjxafnrlFIthHRwpYtOBG+HYyDVSpQ/2BVdgcWA/Y2bMQTD9sR4WNY8HMUUq4RQ1w0BZNejRqrGdO+AOYWw/j24njpCN5xbAUXjmFrbSUWE0oEOA6sQorbgQjs1VbEoiGwGj3MygT+dPmxzqSl326Pl45fnfTgkU3Va0fwek6KaKpm5rDedh+21degUhFAx5nr0Go00LBK8LEEGEYCsykDIKZuzPMYm1rEwJC7dASH92+hB9SkY3FglwX+pAnf/3oVLzbZUHHPBKZmGzB8xU3BjpbtFNr94zSWIlFqhNSudnUnlixy42N2bN5gxtO76mGvGkJwYRMCSRN9d882oK//Eox6HWQyKQ48ac1A5xowOPwXLDoJFiJpjNyYxze/TZSOwLl/C6QQ8EqLHRX3TqLrtAFqNYuDe33oHbDQ4u/e8RB6zl7CwX07KLizW0nrRu6wWzNe1N6fOUtrbtNttZXwhtJIplI45ODxeZ8erzpC6O234NnHDTCYM65/H3HjhX0+9A1YsJKKw6JlaAQTngBOnh8rAgg9b+7EpI+HscJInRBHjuaMcxJB3zkLXNNevOeU4GjHCo46pej62kgLnkzEoVCqxHWk6KtbXLyuhZ72nRh2+WE1aSGXybFOL8HuRi4DaPHh+EkF1KwSrznC+PgrNQ6/xOOzXh0MOg0tLtl1JIVaNUt3VRHgeOsecEFOjIDcS8T5R18qcORQkqaCRPbuGxK835GmkXzwSZpGGorw0GvVVDgcFzDPRXBhZIqmSbzsSIr+uOmnByZ7cMiTOBsc+xvb6x6gAG8gDqtJBc8dHhKJFCtpAaxCBj6RglopR4iPg48ncfHabB6AfJT7B5e9MtYYLPlP/j9CZdf8Az/h7SitknPUAAAAAElFTkSuQmCC`,french_onion_soup_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3klEQVRIie2UPRKCMBBGvzh2Vlg43sDOgoOgDYU38BCUHMIbUNCgB6Gg8wYMBTlCbExY4iZk1DJfBfl5b5dkAGJiYoRnTv2DZQ8aaJMBp+thkXq/PQEA5wfPpQLVZNNLCJwTEZkAgJWG+zaEhClIGQsANfYdtvujmdXdLHXCfSLCEmu6eOw786xlxUYCAMpqQHHZzeBlNbB7aWZn4FqUtDlkWiNp89m4TGt2va4emM7AGw2iQBfczsc1dXURGlo9J/hJYsNdgq8kHNwnAN73eElErnbQr8Ip8iSEEePOC53iSqgjgs9oAAAAAElFTkSuQmCC`,fried_tofu_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4ElEQVRIS2NkoDFgpLH5DIPDAj8Fhv/4fLrpAW6HEvQByPD+EhGs5u/a/wYsvv0sAwMuS/BaQMhwkMH+VtwMG499Jd0CQsECcjnIcBAg2wJcQQMytLDnzUi1ADnsiQkiUPjjAqCUhZKKkFMNKIwJWQAyGJsaUPJlY4ekLrgF6EmSGAtwGY6cfMEW4ErvIEtwAUKGw5IvI6npnVDhCMsbKBYQCmvkDEWs2lELsEYFtuIDHMnEhCssQxGrFlZ8E2UByLkgDcQ4BqYW5kWikinMNcQkafSKh2CNRijdE5KnuQUA0jXJFH9Pv6cAAAAASUVORK5CYIIA`,grape_syrup_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAUtJREFUSIljYBjqgJFYhSmBBv+R+XPWXyBKLwuxhvuavmVQMSliuHOmDypq8J8YS5iIsYASQHQQ1bpLoARR884XROslCtx/8Oj/wiTd/wuTdP/ff/DoPxFaGBjoEURERTIMqBVuIdkConxw/8Gj/y8+I0LlxLGTDMQGE8GIQjccBh5cPsVgYWXOoKggh9cMvJK4DCfFEooiWUHXjKAanJF8/8Gj/zUGPQxXvp9mYGBgYNDhNGXw+PCQQeXyJBR1RxRyGe4/ePQfly/wpiKY4TD2FXYGBh3bXgYGBgYGjw8PGXYIyDMwCMgz2OAxA6ut6K7HBnQ4TVHkN9xciTUucMYBPsOJkSdoAbXAwFkg/V+JaEPwqR24+uD+g0f/s9UqGZ4y3sNrgPR/JYapt9px5maCRUW2WiUDAwMDhkWwYMFnOEELYJbgkydU2AEARkyHfSdIwAwAAAAASUVORK5CYII=`,jackolantern_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA7UlEQVRIidVUMRKDIBA8mJS+wHfkL3mAM/bpU6a3d8YHJG9Jny6lL7CWNHAg3gFHJoVbiHC3e9yKABwdqoJjJHxpAXO/nHFye7yyGrpWvBQnMQNw5wAFDkg6iFFkL9WBIdY4sWxuXMCYK8EYSKFULhZROUIN1OC1yW8wL/597TtWKIyFnE0xO+Lu5wWgbfYCepxYcRcLua6L7Cl6Pz9VMSyezfgRSYukEFnkPA69XvtuN49zYrAdpEgU9DjJOohPTU6cjdlR2YrQNv5MO2I4UmsAtP/4sPjLnxxfYmwR1yEmpvPIuwi53MYq8w6OL4W0Y7hN+2EVAAAAAElFTkSuQmCC`,hot_sauce_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAnklEQVRIiWNgGGTgPxQTDRhJMfz/f4jZjIyMROtlIsU15ACSfECOXpJ8sNrfkWG1vyMpWmgfREPfAmIj+T962Idu3E+UfmIswDCcFEuIsoCAPF4zWIiwgOHf/3lYxZkYkwjqJSuSbeYRNpgiC2atM6edBdd8ZpKknqg4IMdgGCDaB1pb0rGyCQGikimBVDQE8gGBnIwXDJ7CjkL9tAMAL4QnWOXkSy4AAAAASUVORK5CYII=`,rainbow_cheese_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABzUlEQVRIid2VvS9DURjGf5UrqZCwCBZNByQdhBvpQmLqH2BisIjqYrGQSNNEIo1BGCQsPrraDGKyaNIOGi4xSFiERGi6kDQ08XEM7j3t6a3bogvPcs77nvM+z3ve8wV/Ha4qcAgnzt8ICIDZ5oTiXMgMKLw1PyXX2EJjyzZgCspVfVdAWOROKBSpVEAAwhdM4gsmlYHFzKVjYDkBAYjRw4RC3BnsqjAv0JzII6lxrsRYWRJzY0ui1CkSAJHUOIAiYKx/Tj/f6FcC3Jyy0t6h+EI39QCuwhUIgFR8CIBd0+l1xZj3byrB/vATZ1Hn2luwBMTBjD9PMLijTJp+yQGwVLtMX3gKgO5wZ0UiVomU2/iWDRFzN0v7QkQAiM+9K8FGdNvMUucVg7X2YTlmlUieoofVAA+rAd6yIVsWd8ZRyez08IhiXz2f2ObYjunxcUaxr417vK4YAINz9lOtocvWW9frLHB6/Sj7Y7m8kEdvlf1s+oRs2p7pV7Cl9LR3q9iF5AD6RPHjqSJ0Uy/rD0UXrcfTWDajNr2Phpb8ZufoKSBHEltwusklsVjrLnY5PvllBYJa1OxZ7ff+EJtA0+Q+TCquavx6gPlyVovs/+ADoliAUUBEL7MAAAAASUVORK5CYII=`,salsa_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABQUlEQVRIie2ToU7DUBSGvzaIdZItRQ/sCAKDZWK2AbOXAMODkJBN42sgs3sCzAQZaoKKKZYMCRNLD4Ldw21v2y3o/urk9tzvO/e2hTp16uzMotGTRaMn/93vlT0YNbsSpSHBbMP36QEAY38JQJSGALSSmMeTSwBuvt4KWc7iqNkVGwIwGU7p355XTmrkeZGfhwcPC6I0pJXEum7gwWyjkwOs23MdIEpDojTUAZ0TmCvJx76isnVTt5KYVWfA2F/qSXxnpwUAdKOdyXCq8HV7rvWqM3A49n0J4ROvk2MADi/unGYzYb4G+Hy5B+Cs/w7La2VnBCKCd/QMoKIymQ1VMCAfV3jeHzv/FYnI7zsyorzMjoEaMJCBFwkyEm2yZJnGLVT7PHfosh/NkexKEbxKACBb0z7gUlaVICOqcuzBqFOeHxC+hOOYYjlcAAAAAElFTkSuQmCC`,soy_milk_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAz0lEQVRIiWNgGJHAysrqP00Nf/H45n+aWAIzHIapagm64cRawkSs4etWzscQL6lsJqiXoAX4DO9pr6XMAkoNxwtgYR4TE4MS5jD+/3dr//9/t5b8iEaOVJihyIYr1zAQZQFRkdzTXgsPFnHuKwwqfcEMTE/4iXIoURbAALLht/rmMbz8qkNdCxgYGEgynCwLSDGcgYGBgYUUw0kxGAZI9sHwsiAoPJHh2LFjjDSxgBjD8Vpw7NgxxqDwRIoMJwqgl0mklj1EuQLZUKq5nFoAAB8UtnDnOmpmAAAAAElFTkSuQmCC`,spicy_apple_jam_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZhJREFUSIljYBgFwx4wYhNcfv01Q6SmKIOJluZ/QgacuXadEaYeG2DCpZEYw4lRx4JPkl3LlKAFP6+dxiuPYcHy668ZeNjZGNi1TBkmzVxI0IK89HgGHnY2BlzBhBEHm+99ZOgoy/3f8/giQcNhoERWn6GiazKjrxI/YQusQ+JIMhzZkqNrFmGYhzcOGKI0CZu87DpeaewWQA22yFvO8O1QCwOXXQ1O+gRDJETPYcJuYWBggASRTTjD////////erAZTmftM0DhI9NZ+wz+W4fEEZWsGaxD4v7vYRRAMeS4uT4coxsOE8dlAc44OO7Qy2B5gIGBy66GgYFhDVwcFjzu02oZdhLhYKw52fnfe7gl3w61oMh9O9TCcNyhl6FhlQDUchKBdUgczrD+erD5/x5Ggf97GAUwxEkKoksXrjIwXIjEmopgwQZPRZOgqYiBDauDsccBNG3Dk+AFPDQsH8jqk2ABmkWUAIxIbvP2ZyzB4RpcoERWn6HN2x9r3YLhg2cWdgxtDAyMJVsZiMs4UEc9s7AjyVFUAwD/O/0eRzI1LwAAAABJRU5ErkJggg==`,spicy_cheese_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABZUlEQVRIid1UPWrDMBh9atrg3qCLSwYPhnbq2jVgaEyP0SP4ED6CzyEHCl27Zit4SCHEi2/gEFPUIZb49OOftF7aBwZL+vze+55kAX8dbAIO0cd58UtiUecR6jzC+90T6jyyBH/agWjJnLhevSrucwUEAPSRmyJjI9LiAIBNMsMmmVmF5tzlCOJOxw/p1+BcX0S9OVO0cbjAXB0M5mwSHneJVTNfpCcFF7HMUbY7hrBDQHWgxfH4sT69rLoJmRdAHLZqXMYFAMDnoV5H3Z/jsIwL+DxUQswLsF9yJSA7UMe0qTJ83j+jqTLLqemSOpVdiMPWcg+Qq2K/5NaiGYPVvhdoBlxQAj4P4fNQI6TvJnGXKbquCZgFZVxokbg+pobKuADzAswXKa5uXgDjLhJ0YyXx7VusEdCIZHzyvFMProEYOjnSeeuuk9CE+pOpQ7q5Qw7HQhx3iWiqTKC9OckzGSYn/B/4BhgmpsuPu4+VAAAAAElFTkSuQmCC`,spicy_pickled_garlic_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABEUlEQVRIS91VwQ3CMAxMxQZELMAGLIDon2cWYBBeDMIC6Y9/EQuwAQugsAEqMtJFrpuiJk0+9Gm1d2ffua5U4acqjK/+kEBr3c0dm3POT2YwouIEpN5a29Vn823kfWrV4lgPmlpeOvXa9/W1B6uMMb1i0GQQEDg9IQLOiPduD5dGQGCrzc4rBiDIsxCgC4AR4fN+9d1RPboDeMDHxNWjDj+SPJDz/+VLFMF2rb2PRMKBoVh6kY2Ajw4qSEQSgTRXJocnLIoAixYaR2g3klIkt3gs/+gyqgNu8phivs20F03TTN9kmSIOliVF5AEBYVtD+c8SU5oviHgXvD7LA77JUrH8h082GTch9rLJW0DfFz/6H7rf9hk80F8vAAAAAElFTkSuQmCC`,sun_butter_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DCgWHF/F+p8aFlqG/YabC2eADDdxkqKG+Qxn9j1jgFkyzCwAhQ+lwQQKHhDACCKQYHWM1/8vZw5RFA88JnYMrUu2YUYyzIIIWwGKLFhx+MMAWjBrYtP/wJg0inywfskshrT8OuxBNHwt4PnhijXYvnDsxhAnKYhwGYxuKrJFRFtArOEwy2CWEGUBLsNrA/nA5jWv/4QzyMi2AGY4zGRsloB8QZYF6IbjsoSgBaCyaGgXFZQWeOgFHcg8rJU+KKjIKZCQi2mYfpq3KgAeqqgZelcVKAAAAABJRU5ErkJgggAA`,chocolate_soy_milk_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAyUlEQVRIiWNgGJHAysrqP00N/3Bl2X+aWAIzHIaJsYSRFMO3zcrBEPdKm8Jw7NgxnOYwUWJ4Tsc2gnoJWoDP8CkVXpRZQKnhDAwMDCyEDEc3DMZfM7ERKiKM1wKCQTSlwgse1siGt4vfJMYDxEUyzBJkw5me8FPPAhhANrycVYIhJL+euhYwMDCQZDhZFpBiOAMDnlSEDZBiMAyQ7IPhZQGhgo4iC4gxHK8Fx44dY/RKm0KR4XgtwGUJKYYzMBBZ4SDXXKQYThcAAIIOcW1FSq9sAAAAAElFTkSuQmCC`,olive_oil_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA9ElEQVRIS2NkoDFgJNZ8dlmB/8hqfz7+QJReohSBDKa5BXpuIv9F+N6APfHmkwjDpV1viHIcUYrApvJz/ndy/Q5m7tvNycDw8TtReolShGw4LB6ItYSwBUguR08QxFhC0ALksEe3gJi4wGsBPsNhlhGyZGAteLCV7T+bnhjevPjr0isGBe9fOB2K1wd0taBjuhCKTyoy34H5VPEByHBdQ0mGt28hhoKAZsZlBtPHItSzQEqOHcUHVLUAZDJNgwhfMqJKHNDMgqGfk7EV0+jBdfSkAAO+6pNgaQqyRM+cG8XcSye/IvgEKh7CFhDbKsChjuYWAAAtPZoZgsyz7QAAAABJRU5ErkJgggAA`,onion_rings_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABMUlEQVRIS+2UsQ0CMRAE/RExISlUQAs0gIQQGWQUQQUQkxKSIYREA7RABcSUAVqktfZPd28nn+EI8fbO3d7aTep5NT3rpz+g6HCVRYtR+qjS7V1vbREA8ct5m573R2bsr6/f7xpQJ8AT104Isj4pOASUxCkKyHg4yIzDcZNW61PuzgV02QIlzzL8h0UrAUYnVQBuhkAE3y0nLaeqASreOyCaC4rQDrSolkWadx7QpFjvddDRPckAiKuoVjSdz1oDtFGN/Me+H0DFtSp70Oad1rAAN0Uqjo3IMFcXQMW9MzlFHoA30esMcCuuN9da3VgR7QIH7UMHADvj3k6ANwN6GrUeRdJqoVM3RaVH3su9N7cWgHS1wAPxXpQSxlmFb1HURSkAGvPwsStZxO9eAPiNhXwBw/0AOoT0r0UAAAAASUVORK5CYIIA`,popcorn_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABgElEQVRIie2VP2vCQBjGn0taDSI4tKBLUYyD+Kdzp27uguAkfoAuLf0UdusH6NhJlCKOQqFbP4AWhxAFF4dKrUopmvPtUA2pNMk1trRDn+W4e3PP7/K8IQf867fFRB5qX++RXS1TGgl5OJob4zwR12k6uCXiujknrpMTXMicGxMirtO81ySiChFViBsTc50bE28Qq/l6tALmvSYZ47xZs4NIbiA+PYfEHgGpCv58DyyLoFkZu7HOe31wB0hV2/07TuY0K0MO3QC4AJZFLJ/SYMF9yKEjLPppyAcnkIPAom/vYQvIlEbQLo+hp1qIP/igpzTkch20Wv7V3I944wrq6Ry9hg+Zs5FzFJ+9QDsbJSISGgF468G2cuzBprovr+gmIgCA9DcdwIygpobJqpoaNiOCTTzCgE1zK8QN8OM9EAIkAwrqq+zXqiciSAYU171uTWaMMWpnoyhoww+QgjZE5zAGxhjg8Ff+UkTJgIKCNhQ6uSeAF4lcFiKf4HaXzp/WG0R0GZSwU81hAAAAAElFTkSuQmCC`,pumpkin_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6klEQVRIS2NkoDFgpLH5DKMWEAzh0SAa5EG0v1j4P0EnMjAwOPa+xRmXWCVgBitocBBjPsODGz/A6rBZhGIBqQaj247NIrgFIMPxufjTt38o5vFxMeH0HcgimG/AFpBqOMxkYiwhygKQgaT4AKQe5guUIAJJEBuxuMIHPR5QIrmqquq/68+ZcL3EWgYzFKRxN3s6Q1tbG9xcjGQKsqSkLBFsycVmC6KSqX7tCbC6nq75KIaDxLDmA2RLiLIBh+E4LQBJgCwB0TDf4LII5GoQQA4WZLUEi2uYRbgswGUwTD1BC4gNIlzqhr4FAOLAXRkvhyyAAAAAAElFTkSuQmCC`,salt_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA3klEQVRIS2NkoDFgpLH5DANqwX8yfYfiaFw++K++6TjJ5t/0s4TpgZuLzQKyDQc5CmoJTgvIDRYGmI8JWlBz4S7JQdNioEyaBVcPKxFtibbtPQaqWLAuB2Jn0BRUu6liAczwR48eMcjJyaFYQrEFMMPRwwzmE4osABkOczXVLcDlcpBFyEFFsQ9gQYHsG+SIpsgCWLCADEdPPTA5qliAL1OQZQHRuQyqkOSMhmyB0R9lDPvOsaAWJ3SzAL2gA7kMvbj+T25hB/UmRvGPtT4gNQ6wOBRuxIDWyWR4BFMLAHg9rRn+GIpBAAAAAElFTkSuQmCC`,summer_salad_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABeUlEQVRIie2VL2/CQByGn9IlBQdJde303ASmAr4BBsMHIJmZQZA0TSZmMCT7AJgZvsACogYxNz1bTQIOKppOHNdey7UlW4biNb1c797nvT+/Fm666a8yake8rpLK95N+pcddnfF82Kv0f+IUoAR03nmh8RnofY0OlAe8rhLVeLO/zLzbLoAUSKPKfP1l0G0LA9nW9alB5sNe7ty0Z7DZC4OPEMZ2E3sZAeAFBnGYPU0Hxp9NeDymc4pqFNPLgV5gYDrQmQnz7cAiDmF3bwHCHKDzHeEF+ZWoq2ig0XSRHY00tJcRpgP2ISIOYdsS/btnAS6TFmA6WWL7IFagmqogCfYCfTloAb6bpBNlOtMR2wECFIcivVTZKrQAmWbbstK9Vtv24bRdyyg1fhnpC14AJn1DFkq3Db2HBN9NssQDK22rSSXUd5PcLVJrQXtN5Y2QqTozI217gYHvJkwXBm+jIz6UXlG4QiVf+Vv0C1CZcT2gACpVzf/g3/UD5wa+Sc12t5MAAAAASUVORK5CYII=`,sweet_potato_fries_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABFElEQVRIS+1UMQ7CMAxsRngHG+IlCJ4AY/ukZmyfAE9BbLyDjiAHXXQ1DkklujVTGsd357NTV8283Mz41UKQdXix6L8WXU6rlyAe+6HY2uKLAr7d7ILi++OWJNEiAoEc5lQxAUjgD3ItEQ6HKVVQxGajEpxJriyrwkigVaUALTAm1EKjRczOaiyVINGqtWXyHZus/UMyK84Bc9XoS6wAQV2uRZQbfggRklEPuA+llqXIJF+IAoFWbzXSAtLVWtMVLKrrOpDsh340ahpUA/yaPLx4J+Bt20as63kd9ofu+SUaMQ5Y9xBvmuYzRZok18SSuIB7710cU9gkyVxRCRgrxl7AR++AgZhsCgFAOaf4bzqFiO++AQm8tH22dLVsAAAAAElFTkSuQmCC`,sweet_potato_pie_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4UlEQVRIS2NkoDFgpLH5DKMWEAzh0SAa5EF03o39P0EnMjAwGO76iTMusUrADFbz5iLGfIZbW7+B1WGzCMUCUg1Gtx2bRXALQIYT62JC3gJZBPMN2AJqGg6zHGYJfSyA+QJEEwqmV1xcDGLfIJGKDaDHA0okV1VV/Q890wvXR8gy5OCAsVebFDO0tbXBzcVIpiBLstyNwepft0YRik+wvGj1MjA9bedZFMNBYljzAbIlRNmAw3CcFoAkQJaAaJhvcFkEcjUIIAcLslqCxTXMIlwW4DIYpp6gBcQGES51Q98CAC9yVxnnyn4gAAAAAElFTkSuQmCC`,spaghetti_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABBElEQVRIie2VIRLCMBBFfxngGhimAtEz9BBgEKgqLkANBgUX4ADY3AfBYLgGFYuAbXfThDSFGQxfZf4k/2W3mynw16+VhDaYEsTrxT6839YwFDwvDrhcb0inExhsKBbkBJgSxMFS7BkcyT7jg7YApgRl+Vp56XRSV8EgALXHUBdk4CtNBnfxsnytvpcTwK2JCZbevDi0IK0K+gT7PECPKdFqrGHLotV/2Xf2sNvq0NO9zmYAnSvCbNTwbFhIr1AAgMhK1BSdq6Z9ySjuTcmzCizW5NsUK749EBjTb8juw8dVyNu7AB9B7HAfoBfEFf4OAOD5IkMgMdrOrC6zGCol+h/xl9IDcxCDNEfiwBwAAAAASUVORK5CYII=`,strawberry_jam_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAVRJREFUSIljYBgFBAAjLon+MGsY8z8h/YWrjuJUwIRLgschgpDhDAwMDP+h6vC7AB0sv/6a4ffJTQxrnv4nZAFDiDQjI6u5H0OkpihWeRZcGtc8/f8//vtJQuYzLHxq/j8ST1DjtCDRxYJx/h6CQcSQ6GLB+AOPPIbNy6+/ZuBhZ2OYvXz1//qMZELmMzTOmMuQGhnK+OXnL6zBhBHJpBjOwMDAUJ+RzDB7+er/POxsWOUxLCDFcHRLsMlhjQMtFyOSLGBgYGBgCMnGKowzH1ALYLWA49w5Bo5z54gygJBanMkUpplSQHQQZe83ZMjeb0gbC2AG9xYzMvwwIi0BEO2D3mJEniTFEqIsmOp4nuz4wBrJMBeiG4rNErhvcOQDvKmI1PDGBjCCqFhKkDEch2twgfCQbIZiKUGsRTbW0lTqxCGG3mfvCRbVyI56ZmGHs9KhKQAAu7Vof/9SQdkAAAAASUVORK5CYII=`,sugar_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAUBJREFUSIntlTFrAjEUx/8tdpBIN+lYpAURl3Np4XZHP4F0cG2/TUtcM/kJHN1v6KJbUXToKG5Fs1RIl+a4u7yX9Czi4h/C3Utyv/977wIBzjq1LgLr5r8sn4GZJgmaURQkz2czdOKY5FU4uNY6/biopNtFPJmkcTOKIIXAy25n/tCV1IAcUojcM/tepqUklIvt3EEGVMbF0ZDGNKQhDbh+pf8AAFS9jsFm42xqqyoAYPH0CAC4un53mKyBFIKEUmCrUgZaaydzDuwz4I5pDh4C++StoCy4VAVtVT0o46LYCr6/HpzJSm2ci/fbXi6mKrgMZTBUfQxV34HbtZDYFlk9D0YAgNc3BlAbO5VkxVawXK2D2SHTJm5/sEX4zdJWkpWdo9pn5b0PPqa3uL+78Rrvtz0sV2u0Op8k7+g32tH1Axo+8aH5Pi7fAAAAAElFTkSuQmCC`,tofu_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABLElEQVRIie1UuW3EMBAcmgTYgSAIduASHDhw6ALcgMu4Qq4MN+ACFCpQ4BIcUCYO14EACuvgjtLy0YmJHWnCITmzu7MgsGPHjj+HKLnUdy2VCj6/vAaamwZ919LDfYPRAVql55wfHXA+2cDkrkQcCEUmkvMdz5vBZgtYNeDio7twE0loBUgxBbwZLHyXRQZ8LLzKWFirRZzfAzBnlhjkxsJFOW8Gi6pukvOvj8NsEkyt71qq6gZmsCASECJcHs5VdTNXzrtR35/BmyQWrRA8jLdndICSEvbHgGd0Pi3iT+9H4Lqh2Qx4u0rK4IyH7LEmvmqg1bKKPFjP8QL4WGLx2ID4YymmJFhvptUlgy1xTtA1ebjHt1xTWWyJA5mQ4y3Ywi3x+KD4Q7uh8f/4BeeCk0AHVwhiAAAAAElFTkSuQmCC`,vegetable_oil_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAxElEQVRIS2NkoDFgpLH5DERbwL71y39kx/z05iFKL1GKQAbT3IKWatH/oT6/wJ5YvYWNoab1NVGOI0oRsuGwYCLWEoIWYDOcFEvwWoDPcGItGbWAYIoa2EgGReTQTkVeNvr/nz18gLc8lJJXYNh25CLOoMYpAQqa4JhDDMfPXIJbkBgTxjB/ySoGZPrGjRsMa5fY4Sw6iLIAm8Ewi4aGBbAwQvcJSNzSRI+8IAJppmkkw/IAMVUqvrqBYE4mxgJ8aoa+BQAVra8Zml1jUgAAAABJRU5ErkJgggAA`,yeast_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABbklEQVRIS+2Uv0vDQBTHvwc6RAIhOJToZinURYiC+RdchG7FvbropH+HTrpId+mmuPRfiKABFwNSN00dJBSCGRRP7poLaS6/sHQQfVtyl8/nvXe5RzDjIDPm419Q2uG/1SKa6kel6qts4mCntw0aKQgBzPa18BUy8hbjbDcOG+huNpGVfufGxe3JY7IwiZcloNZRA4zoe+/otdbjzAXp5XWEpZrGL1H76g66sQD2YB9z2QQzLeDwwAvxQSmHPw/HsLwQknlCoBqKJEkK6NaZCX8QYOSFuGiZuZmnZexMdi4daIYCva6iv+/ElUwKTk3+rf8U4JNSdK1VqfdJOGvVck1Dx37AHCHQV1S+3D8oEQjI2yDAF7JFLLNd2+UNX6yPwSIqC5IiaSxSGVwqsPaa0NeU0vlStMG/D2Gfu5lnwF7SaSRpuPTPRpn9SJIFzxPwSkQbWEVFEbVDbKl0k9O89JSQrkFRAlWG3VSH/vsF3ysBgRmuWgXeAAAAAElFTkSuQmCC`,wine_green_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABLElEQVRIS2NkoDFgJNH8/1D1ROsjWiEDA8P/C9ujweYbeC4FUUTpJUoR1NX/z2+DWGDoNVQt2LIkD+wDn5hJtAkimseBR7oU2Ac7Zj6jug/+e6ZLo6To7TOfEmUJMakIw3CYTcRYMuAW4HQ9sb4g5AMUC/4zQEoKRqRMTCiYiLYAZHiQrhvYgnWXd8EtoYoFMMM9bZTBFmw/chduCcUWgNI+yOVetsoM/6FlKSMjA8O2wxBLCOUJgkE0a0oC2HBD41qG82dbGP7//89gYVPLcPJoM9iStJwFePMDURaAgoaRkZHB0LiGgY2DgeHkUYhFoKCiigU09QF6HIDCHwSoFgegMgg5icIyGCypUpyKEIUcrDqGWQHxCqUWgMxANxmlVCVUNxNKReiGkcwHAB32mBlT632HAAAAAElFTkSuQmCC`,wine_purple_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABWUlEQVRIS2NkoDFgJNH8/1D1ROsjWiEDA8P/bB5+sPlTv3wEUUTpJUoR1NXDwAIlCVmwZ+69eEybIIrSdwZbsOzi3qFnwX+Y62HJmlhfEJOKMAwnxZKBt0BAUPC/l6whw39YHgblMCZGBpDAskv7CEY2QR/w8PD8X7ZsGcN/mA2MjAyf/SIZ+DYtZ4iKimL48uULXjMIWsArKPh/+vvfDLybloFd/dk/mkF271qGx85BDJmCbAyf37+nzAJuHp7/2zeuZXjkHMQgu3cd2GDejcsYBHk4GDz9gxm+UsUHn/4zMPByMDB8+Ay25MOXHwwMjIwM0dQIIlApemjvToZH7uEMvOsWgVPo5+A4BgY2FoZMtr+UBxHIgkhdJ3DK+f8PkpTAqYjIIoNgJIMsQM/FQyuj0cUH9or6DNJ8IijV99NPbxgO3r9IeU6GVZc4GgcE45CgAhJbHRjKAc39ixlOVxPLAAAAAElFTkSuQmCC`,apple_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAP1JREFUSIljYBhRoM1G5D+peljItUwpRQlu2b059xhxqcMpgQ3AfDBHgw+rPDaLmEixAB/A5Qu8PmgSQQ1zFg0I/ecGA8OCAD6GZ7ufMfx4+AOvGTglm0RE/kfFRTAwMDAwvD56GKua3XefMjAwMDDUvXlDWhwQYzgMiFrbMixbtAKnRRgCpBiOzSJ0S3BGMimGw9RHxUVgxBuKBU0iIv9dlaVJMpiQo7D6gFTX4wNUywcjxIK6N28YYZmHHCBqbYvfAkoBUfmAXF9gcz1WCwhpwAWwuR6nBXVv3jAuW7QCqyXYfIfPMSQV1wwMDAzmPj4MJ7dsweoofGYNXQAAcmlmvV0urLkAAAAASUVORK5CYII=`,apple_fruit_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAEhJREFUaIHt1rEJACAMBEBxIUv3rxxLZ4gYMHDXB1L8h7QGANSw5thrjh2d6znrwEdu2/GKllFCpChCDZSW8Rk4jAAAAAAAmQ7xkRFp1rUPoQAAAABJRU5ErkJggg==`,apple_fruit_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAJ1JREFUaIHt1T0OQEAQhuEhInEOlWZP5HhOpFE5h0RDpfCXmF3DivcpN2Q38/mWCAAAOFS6fCpdPmnfS6wO0xSViIjUQyd9O17eJ7U4UJR8I4Pa26Neff0h7biLV8ssp7ibwLLR2XSsp5htF96IKZg2Ms3z5tPQRvzNX0doq26N7Om76Z+RIRoWUXo3xqp932zZGdoHAAAAAAAAIDYzqQZOI+OkkEgAAAAASUVORK5CYII=`,apple_fruit_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAbpJREFUaIHtljFrg0AUx/+KIaSdHFw6FDKJkCFbln6KjCI4ZM236FfI2qEgjv0UWbKVUpAOpRBolgydEqGF2CFKTj3PO89s7wcOyt3zf3f/994BBEEQBEH0itFnsNC1cT+4QWzus+Lb8m5mvH694/njRyqG1acgAIjNfRaNvPOL7yF4eskecCu9cLNvQSXiRHnKdQV1QPnIQteufWP94Z8cI0iTjH3f4igd35D5CSumzbSysZqwAGA6nmC125RWFbr8QDzTLsczAziLUvk5DxMAVrtNFi3miEYeopFX2gEhcYJoMS8tRpeLhzpkhMo82aOsZVmQJvBPjnTdkBlfeG89PGTFMx1PuGMtVDLDPznG9u/Y6AVuFgnGs4lQ9R6vU3CzTGRM1SwKXRvr4eEiJidIE3y+/dYEWaKAuinchcZK3XTuPJFt5McsNVZYqXUbJfIdDV3AH9S994hvNUFldR3LAiOKXUxTO9G6fqh4rJf7kKhRNvW1ooV0pbWgVWGbaCmdzx5TviFWEe6QUtC8r3UxPku/FzQN4xdoCarWF9U+yENrctXYbX2NIAiCIAiCIAiCIAiCIAji2vwDnIL7S+vEpDgAAAAASUVORK5CYII=`,apple_tree_dead_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAvFJREFUaIHtmG9r00Acx7+XlcLqyorWrtW4MBwiiLQwopThA0F8Pb4UX48KIj4ILCIDwQcykWj8Qy0jrlnRdW18UC+9JmlyubsWB/k+WXc5Lh++vz/3a4FChQoVKlSoUKFCF1ONejVYxXs0nk2NejUw9NpKoLiAePXoSVn6DKVAL56eSZ+hFEiFcgEl5ZHqvOIC6vUHxHG92Poykl0oZMusthLvxl5/QAAEhl6jS4Gh1+C4Hn2mREIOOa4HBiymLAfTnktVWZI7WXmV9Zw7ZEgO20L92xOwwBQmLczK+xBbkawTPDDI61AeKOokdYq3AGIONerVgKessw6POsVbjYkhU93s8rSGWMjWd33iHIWJG4j2GJozeRVzaPxbvsexMHkbZ2LINm/4hDY/NnS37+eDFenisZC5hxPoHQ0tY0AcZxa67btjEgyGOGb2ds3p3y8jDe7hBOAI1c4+weiUhPujSnTIPZygogE3dwahU5/frQXV8npsr2VP97f35tcXuZMGsxCIvoiVodfgn4wTK69rAo2NjUx39I6WCpMKRLXXXkuchaJ6/soPP1N3dpmc29nnS6VUIMsGvBMP7TsBcVwPpLSF7eYfroO7JlAeTV3RO1pmqKgyrw7LBrqmD6AKACClrdiLF+n92wBAvv7KfblSlxqtW+Hax0+zliDaCIWALBvwh/7cGvvya009/Cw7QeYaPx50N4ltH8TWX1u/AtO8F/6fFkZlQJYNfPvhLnze+/4htn+pQKuSNFDjyqzqhsd92ePkgAy9BuvNMMyfn8MSjOunUuOCkpCx+VMqT4TzRxiI7UW8nZtXFz+paS+iLkWvkpUCpfUiFRWWGyhNKioMqnNItsIgChTNI5XKDZR1p8lKKmTRC1WFlObQ+ZkmNXpAJdDVyjmcr5ekfw8QBoqOtJXLdVkWcaCkkVaVLv5dtmwVQFkSAuqa89/FVErYIfpdTHW3Vhay/24eUiXhH84fP2ySZy8PmKuihO3WUHpA+wuNIFwWNqXUngAAAABJRU5ErkJggg==`,apple_tree_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAVdJREFUaIHtlTFLw0AYht+IOBYHoYOUm5NsQob8ASenkD/intGfI538Dx0Kbk1wDMVBcJCOLufQfHraJXf3BYK8z5JScs3T7973AhBCCCGEEEIIIYQQQgghhBAyT+rG2LoxdspnnPku6NoeU0olvgvqxtiu7QEAu7X/+kmQCeUVbFlAdVpR/7AsYA8rYLEHNludaXln6C+3L8vvzxqhjxZyZbq2jw69mlDX9kgzgzQzUVLB+14WAHDMEJzGicjjQz99A+vG2Lz6aVVZwN7nS9Wmjd4yyUiaGbhS2owScmUwbI9IXV1eA8O03PtDMzR6QiIj2ditkUh+hLyCzStEtS36YLy7uMHT5zMOq9Ngy1R9Aq5Se1cGzhR9ZQDgXENosT/9LrT20RN6/3iN/YlfBAsNB6M6wUKb7fEqtddC7V2mxf8RkgzNJtRTMTuh4INxaFmC4k31zf8FX1+FTiIxWQUAAAAASUVORK5CYII=`,apple_tree_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAfJJREFUaIHtljFrwkAUx/8pBaFgBwcDgmQUk0lQMFO3foDgF+nu6MeR7HXrZEEhkwkdD6ngakFwug7h2Ys5jZqobXm/JcmR3P3vvf97F4BhGIZhGIZhGIZhGIZhGIZhmD9Or2/JXt+S11jrXrc43Q8Hwuj1LRmFAk3buoaetCAAiEKRuG/aFoYDYVxDkHYRilIUCsx8/Ts3w/EgHQ+F+ueQJ7UpU6EIkSg1YjTp56vAeJIe16U5y5N3x+zG8SBnPoyZD4OE0cQA0F2bcDvJKEahgC4KWZ486A91N+oEJKppW6jOKyhNF3h/WKaipHpQF2EdmSnT7eZnUiGr5Yr2O/pmV4jjQV6sat1ObPgXx5S7KVPFqJAF9pk600NZPH+YqTGqTF16hgNhHGqyucLmdiC7axObdg1BGGBVj8fzpCR3hIhVPfZJ07b2VthFBbmd+DpqLPH2FeBxHj9npSSLk8K6W8qUMgCpsj+XoyOk9qSij5KTBe22e7Vjb9o17fsX9xCJoeqZ+TCoqggq9ygUZxs7d9m37BZK0wVGjeXWW+rvy6ktoJCyHzWW2yqDEsVz+lHmWXYMT+UWAgSJsZs1xtJ0kXeKBLkbY9GcLWg8ia+bdq3QKBV2lhXF/xFEHipNF9pufXVBl+LXCcp9dKjPRfx+fANh1PjAaOOmbwAAAABJRU5ErkJggg==`,apple_tree_growing_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAwFJREFUaIHtWKuO20AUPa5KNz9QRcaJkUFWMtpl5VZ4eVl5YEBZUb+gNPIfrNSilVowyA62wgoK0g+YAu91ricz4xnPrFRFPigZOzPH5577cIAZM2bMmDFjxowZM24X210qTeuma75440Pm2LRXpGg9FpwJmXBsWqzWKQ77NolDyQNZCQklRLRGCA2fVSHd5mqI6goJJxoavgEhTkC3eV0hsYUoavi2u1RmJWRWQtJnnfRqiMbWg0kRGdM9roSKTWSCtoP5YVxZTubjh1yaSNmMbzQ1mVU96OEuH2xMvuHmth0+ZnwtIXrqukKiOyhf5yg2kId9m6gmLjaQ+TqHaASefyHBi9mJlLfxTYYmUmPhyMrr67qwmvBWt6h7gl6pk9NzDXBsWtQVnBTxrhdZefERDwtYuPg1Cn1WQrqEyruX1RUS0QiAeUm9RzQC52VHnpRZrVPomnMwIReclx1xHiZKgDFoPcRBT8Sl7sIk+vBACdfC4DOXzBoQ4nIe9m3C64wJHQnR/0711djDqbgK2bFpQYUrZrN0nQQGCpEq3bf2pTBeb9Lfw0LDwxeCKw9xNaiQcXPyMIpGOBNxVduYZaSC2tN0G6u1x7Snt6k5mUvTvFTZS38Lmwpt5jYqxFWgXrRap4Ox5N37FL+Xf7QH2l6ZbObWKmSTlrcBW0mgqnzYtwmv2NEyV9f9t7tUfvv6Sdv9+eRJHnyVMVclZSLE7+FETLM6IaiXLU7A56cvVsJqTxtrssHNlY+0nAj3DcdYkx1tri4o7h8hGtFn4JhpvXrZVNDI4Tr3mDA59YoNAECel933xQl9lXbp6lEIUVEjb+hGVl8CKrz/H1KrdWw4EVIHNf6uVtw/au+f6iFnhYgM+aKukJB/CJTuNORNIeWU9iZz8tmZsgzM1LyfuRIKTvvnn9/x468YkCMCU5polML4cJdDQAzWpnbzYIV0pg7Bq7wohiCKh2Li9hSKjZnQGKIQipn6t6lQTEwmxIezmIimkOn/Rl/8dyELmoFVRWLM1P8A+D8tayWwTnoAAAAASUVORK5CYII=`,apple_tree_growing_4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAA59JREFUaIHtWE1rE1EUPRNrUZCAdFHRQgQRTLLQIFOYVXUhrtxEf0DX3XXvsj+nZO+qdhUwi+giaaEIDq2lbqVYsdpxkd545+Z9zZsXtSVn08zMe++euffcjykwwwwzzHAB8Op1LSu6vugeQsXl8J1h6kyK1vvCSsiVBBHeGaaoN2rY3EijEGcr0Wwjk4Y5mWYb4/u0VkXWBUoP6QyrQiE9Mugg4i9QNHwVScDVsHxGIDLNNjKv8JHLye3c/RwyFKpnpv2FQB4iYjqjpmc20t6Qhvnbmt6+DBkumQlRDzqIuHFZg6S+yLODDiKXjJJrjMKnw+la5RHpQelNm4b4Gq5d40ITAQjN6OqSjhBEIhkXmfQhMwkG3diMeetNGpehKmJUVnJdqLS9jMRWb9QAJnY6rN6o5e7ZSO0MU5D4AaDeqKFI09aGsIi7bd5Q2SjUkXmK6ryjSmObJ0tD5SWnzPGFrcCp6pXq2qenRXzT5kYacTGbujQnoFvrskaigvMMoLi7jgyUfXItf8FBBxHpxzWjIn6ITbASPI0hSoV8IbJReLSl+LtowCRuGLRo0qiy23M3y+ZpI0ke0HVx21g7p9vAxxCqzLxyq5Dfm2YydC5jbUV1IDfKvVVv1NDaWhgfbto76CAiT/AwDjqITDqa8JCK/R/hplkLC+CH2/aSV8C+SIJ9tyXxKHxJrB5xJRHTvKTbV4glEen2Jjs/vTEPpanfQVMCJkJmQ6vRAtDPAER3nuczhsjYQmJ65v1t3+3lq3qzjay67zHnhCJE2NxIoyQGqvsj731+Yy4NNhQK2Ug7/Wwctn21Rogkx9KjCg7en1ltlPaQNKyDCxm4Ekpi4NnKDdWj4MOYE6FuDzj+dpy7NwrbGMGIBfkPGgCsra6Pf7uGUQVnQt2e2lC3d/733Vvl/akRYoai/rDvZ80BwUIGANtbu7m24oNShFqNFpIYGemnuniC+GG5d/TaLcPG9TM3f+atH29CHKcn82WPyCGohkKgMKGXL5Zy18uPmyH5FCPU7QGHRwf0O6ejEBkGnwFNh+riCeKbFQBuTVSHoBoqm2HwJSR1FBI+rWOso2ng4qe9CT9/VEqNHghJ6OuX6+h9KJdhCDJTLz8BAKw8fQD+RftXCZVNbRMuj6jLileHy+OhacGLUBIDt29Np314e+jw6CBbW12f+Pz5Z4Qktrd2g5zz32nIa8JLYuDe3fv4+GkvV5lPv1+Jrl77Vapw/gbAXZxH6Oy2KgAAAABJRU5ErkJggg==`,apple_tree_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABwFJREFUaIHtWUFMG0cUfbOwDiHYmBDHEOyA41YtdiowEUioh5Jz1EZC4oAUqa2UU6McqqqnnHPuIUpPOfQQKYdIkXLwOe4JCaSQqAFaNYCJCYS4Sb22Q5ANnh7MH2Znd21jO1Ej5UsIe2Z25s1/b978BeBjfIzGgjVzsuhk+bfvZAfSL/M8EPSy9VQGC/feAyBaXI5A0Iv1VIYDwNT0CO7eeQhfr87Sm8WaQVUFJC9Mk0YngbGwjtnlIqe+M+ETbGX5Hz41PYJ0dlk8k4gbAMBqBaTJC9OP3BYIegGAB4JeU9/scpHfvtKFiQudmJoegRMYX69+KBaYuuPBU61saWMXAODr1ZHeLHJKP2kCOBg/caFTTLa16oU/lDGBOQxdJkAA+O0rXbh0898yGP9Rlt56Kxb0ecIWUARYBbW0uIbe0y62+axgolkOu/aFezYZoskTcQODkX6xYxkUgQUAFcy181ncSpZMGYIieLl98FQrljZ2+VhYZ7PLxQNRRyeB3tMubD4rCFCXBzRcf+CBP5QRdFAGaIzcTmAoSNBkA6SxRNygDHIAkJhhJkAA+MSFTmytegEA/lDGBEpoQ6FT1o5MW9+Aiz1PFoQNqIKXs0vgTYBUTagLSTvDF5+48MfTgmWsKmyVUgp1XqJRHPuFe0B6s4jggJsl4obpYZps4kInNp8VOIG5faULW6teQZe6gcFIv5iHxvhDGTFma9WLRNxAT1+70JQpQyQ8Sq9KFy2YiBu4faXL1OekOShilzfoD2XEQUHZSpg4ZW5PO3LZbYu50SJqmmWKnPrUDKtj6DmfJ4yLx1dx6ea/YLJ2BiP9thzbLaC22y3oBErOmJz1sbDOtLHwgZD9oQzODnULPdAkZ4e6K4KhDeyfFPGd9FULmN7TrrIPRSfLDi3zSym8/sCDs0PdgkKnU6K4s7CO/r4C3Cd68eTxK0sm7U4wAMa+//nAodUFacfU5wRuaXENXm8Hy2TyFnOlDdqBkkMAik4CwQE3UsmcSdCJuIHjvlYGAK/Tu6Y+JyNUDdMuq7SxJ49fmTZOPsTIodXTJaEWGVIntAMlG6UdtXZ3Y3DAzVLJHBbu7ddDsc/cjLxAjsFIv8lpKdLZZZwd6raY3tT0iBAyGaBdhuR5pqZHkErmRKGnuT3tmP8rZ3Jd1aXlyWiH6eyy6dTcfx0SbTJYOdN2obLCopPgapkBG3d18iKnPgK0tLiGvqCbPU/lxDqVCjkNCs9OYNRdUyZ9nrCjAfpDGUxNj+B5Ksf7gm62tLhmyjb5j1xVsi+/1bH2eI93nimBnFo1Lp8nbDnuTteAXT+J106P6ksACwxraGnj2Nth/PK1YQunTtdDpatBvZTtgDsB0tYflbC3U7707955CJ8nbHrYKdQTIwO8lSyZrh9IMpCvFLu3EgYAgWEN+jGO4hsmqLMrIVQayNzUXdtlxa683TdS01uJQCdTd/Gq2zIpXRuVjLGWkkOli4p7QRl1ytTJvqHeYf5QxgIGCoWyOTqNwX5xL7/9mgBRtLRxZqxoSMQNJOIG/KGM6X6jNlr4/o2cZUHVpe3MNhE38PVPBmI9LquG5AgMawDAg3qZ72ywfJcl4gaMlTL+zjMlGCsagnoJLX1tLJks8ItX3VVpo/uO5tGPcVZ8w7D+6EBbtoCOMo63nPGgXkKqqAkAHUc46ypxniqWwQDAdgnsSMiFjae7QntqNmRXNlY0tLRxRvKQwdgCIlDdLSW0a+AAkCpq6OlqYzy3DRcDj0VimF+cF8+nihr6Ahqer5d455mSxQDlzNhlRQ6Lhgh1u3YA+JuhIej5be52HbWMnZkrj9/Z3EVQL2eStCZniDJTCYwjIFpIjlgkhnx2j9uNHR8FTnZ0gMAbKxqMFQ33b+RM4PZ2KoOpCIjC6/GyfXoqRn47z2ORGAAgqJcQ1EtoO1I+sURV1UmqAZqZAzLZDDraO9j84jzGzkVRfOuqZV4AYK6Dl9GqVFG0VhswMweMj+bF97FzUVP/+Kjzs4sPOQBblh2jKmUUlKXxsQm5+XCrNQvQzByQ386b2kgvAHCqJyA+16K3hgFJC7Nff/vF0r7xYp3/8N2PclPdf26uGdDMHLDxYt25fzZhGf9OAb2vaBjQyW6/+Pz7gz8bna4xQLFIDC9fbQn9ePxvsVvQGvr/SVMok/XT6irVrZ+6AcledAjnrik+fFGTF1GW1KvkvQKq5EXNOGGHBlQpmnHC0GwNNXrCUC8gVUfNjEMDqnanNRoNUaZeqM2Ipmpot6BVrCBriaYBym4dRaur1HAFWTcgtaT96vznjWKpH5BdSdus+PDvsncdHwFVi/oKtFHzu1gzo+4M0btYs926aZT97+qhZkVdBdX4KBAe+BTLyb9NV0Vxp4XpbXsN1UT/AbUUA79aGpk9AAAAAElFTkSuQmCC`,apple_sapling_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAA60lEQVR4nO3UPw6CMBTH8R/GODh4A9IZ2EgYiFdwIhyHUW9jnDyEk5swN8TBxMEwutTBFEtMtOS9Sd9nJFC+9A+AEEIIIYQQ/6uslCkrZShjTDhjmlqjqTUoUWxBTa0RxQpRrMhRJEkBkxToX86xbN7KSg1enmcwm2Vq8gxsAd5LZvdIFCu4Udy8gtwYADjtEHyKoiyb9wzZmO1aBzaqC4f32P1EOW3B2AdceQazmqXY34/owmckgD7Ezqr9CB8sx96NAV6zODYGAKYcQYv2/drYEIs8Q9fbmTrEANufmosEffN7QYf5haOj9wCqOWHeZMY0fwAAAABJRU5ErkJggg==`,apple_tree_sapling_planted_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAARlJREFUaIHt1TGKg0AUBuDfsKTYIjeQqdVOsJC9QqrgcSw3twlWe4csCOmi9SBbBFIEy21mi2Si2YXFzDwIhP9rBIXn78y8J0BEREREREREREREREREREQuilKZolTGp0YgGaZtNAAgihU279qp9kwqUNtoRLFCFCu0jYbvSt0tz87XZAWTrHB9ucS2TVaU6ubleQazfktNnsHYgL4mb5k9I1GsMA4lbVKgcRgA2FcI/gvls22TV8iGsd2zrxD04fB8Ww/nqW2088H2avs8g1nOU3x879CH55C4rBBGnXfPCBBp+z4EFt3wcTaAyzx6kQi06P7ee9hgPJ6+fEvccA4kNXd+E/t1SHneQNtapo5zIBvg8/Ugk+TiB9HsZVMDm5FIAAAAAElFTkSuQmCC`,banana_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAARJJREFUSIndlD8OgjAYxR/+mfAELiSayOaOzHIMhw4OToYbeAHj1MGB3d1JVxMXL1AO4Anc0NSFRigt/mlNjG8itLzf1+97BfiyHPGQzPyPTQhlPJn5jvQOANAwKi83n456IJRx1boxQEgHadkwnyw6AID1uLpm7QQ6WQGEnovQc3HYDyttMgIQyvj1simBZFmZQVE8DeAMjlxcgd+dgWhP87z6DuBVWQfstydzQF17ojhD8b/0VopExnXmcvVKgO6nJYwBaAcrV18BEMo4TwMAwK07rxjUJUZVfQlAKOOj/oP3LH6yuap62EhRnTmKJxAb8msO0SoTc6iGLIN2y7bywyjOSvtfBsigKFan6pnx/+gOFz13YOwa2yQAAAAASUVORK5CYII=`,banana_fruit_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAixJREFUaIHtlrFv00AUh3+XOElBwRgbkCIk6FIxoEpdGLylexaGbggpa/6CTgydmJBgZMnAmIkqa5XxaKVKqQJIrVURIUWp2jo4bZHi1uYYwG7cNAlVz0ZI75t8d7rnT3f37h1AEARBEARBEARBEEMw2QHNpTnxs3cedn1thw2NAQB4zUpGyFyaE0ZOi/QddPvI5FPM8318rFuh2DgpqUKl508FANiuE/YZOQ0H3T5yMxnmDs6wvrYzMUZKplAgozCFAWBplma26+Be4TbcwZlgNwTmTR2L5YSEUq1t3PrhM0944DULvvDPx3QBpIEW76FRHR9DkSnE7mbZTOcQn77dx7ypj45np8eQukLi8BSrW0covdDR4r2RcYUpYaYlIgQAi2Xg3ZuNYQlmuw6MnAZPeGLafKlCq1tHkTavWfCEd6UY0lfouJO/1nzpQtdFupDyfTRxg3P0T4Tu3HQj7aueI+lCGScz8SaeRixnqFHFWKnB8UmyQkHqqxsPAACVoopsvw8A2Ld2YRYeoVJUkxMK+PC5E34/OR2IfWsXjbc14OuXiZdjrGlfKap4OPsYAH7L/CHouwypxfUiXUcH2ttieaWK968bAIDllSpevSyLcW8x6U/YYZ4tzGLPMURpwYz015scvL156b9j3bI9x4CRV1m9yf96Tuylwz6JFtx6k8PIq2N3JpFaVtCMyCpdlExMiLc3AQBdxw6lCpoR67klCIIgCIIgCIL4z/gFhUm39sdr3R0AAAAASUVORK5CYII=`,banana_fruit_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAnlJREFUaIHtljFoE1EYx/8vTWwq6XnmGmksiKCpQyNWtIXbkkUIDdYlW5ZzsBAoSqZODgXBSdCtLhkcg4M0IEJDwOWsYAmIQhOHVggJxJNrrNLQpM9Bk+aa5gZ7d4vfb7l379333o/vfXf3AIIgCIIgCIIgCILogVk9oZwI8YPvh9Ou50usZwwAoGbLzgjJiRCXhkVDX726A4/PxVrtNt7lyl2xQVKWCsWTMxwAtKbe7ZOGRdSrOxj2elhzbx/r+ZLpHC4rhToybuZmANgQG2JaU0cgeAbNvX3ekYkqDgm5Pm5i9GebtXgLaraMRq11OObn3XYh45AQGzvFvJVv2F7juCr7MX7OytlPwL37s4Z7ORHi8eQMlxMhPjDoL5bXUFQBnj99/8/xlgudFMuFzAp2e40jqsB02xzJkNdXxkJ6DCv5kBPLmRNVwM+fvcw719WNGDfLki1FvfBo3NC3kg8hvRjDlTtfDKJWr20qdfOWD1EF3YysbsQMbUeF0JOpXoHe9tEsdrD8+NFhfmoCjdkKJqUASlqdpxdjeHD3DS5cP8CkFGAlrW76Rlou0yE5N4JUROCXpl3869uXPBUReHJuZGCsba99KiIgFREQDoQBAIVn2e5YOBBGKiIcG+e2S6iq+/80tjb50nIGL54UAABLyxk8fqjwqu5nQKMvzpYamp+agMvjAQDUdInHp2XDeK6oQjz9g73+3H9Ys2XLXn2qoKZLqOkSJJ/AckW17xn91+ixsbYI3b4mQN36AADQdo3bkiuqkHzCwJ1x5F8WFCVDlrTdRlf4KLZ9h3qRL95AUJRQ1TUeFCVW1bWBQgRBEARBEARBEP8ZvwFFpOQ2GmcYagAAAABJRU5ErkJggg==`,banana_fruit_growing_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAuZJREFUaIHtlj9IG1Ecx78vmsZIvMa7pCQKpdBEBSO19A/cliyFoFQXh4IU0kUICMXJqYNQ6JShTk4OnYoUtAZCwSB0SaXUKtLSxFC0kCYQT86orSHR10HvzHmJ051L32fJy/vde+9z7/d7jwMYDAaDwWAwGAwGg8GogRg9oTjipye759OuJDOkJgYASM1tXo2QOOKngs2p6Svm92B1WEj1+Bif4puqWCMpQ4UGRx9QAJDKston2Jwo5vdga7GS8lEFK8nMpXNYjBRSZJpJMwFAmkgTkcoy3N7rKB9VaIUeok/kEYpckZBlI422w2NSpVWk5jZRKlTPYzxF4audunp26X7OgY52n/lCxHWNtOR2sL1E0Sfy8NwAtpeoGp9Jnhb1788eGnyCujtlqNBCcgfv10sYfMpD+sHTSluWKhK1xT6T9CP/N0vrzWF4DYUiQKvrr7obl8HbOs0XAoD1nxuatx+bcAEAYtMJTIyH1d/UW7tulwwX2s851LayuEJ63qf53z2cNXp5PfcfOdDR7qOhCGgoAqq0F1fDdHE1rLaVmOlCZ/eMRkCR6mj3afr6RF43vtloIVfPLrp8HhKbTtD0vA/dw8px9yOGBIDTYu8ezmrSayqhyGnqatNTL2WX3dimSI299OCCgNo+i+kw/PNDYai3E6WHOXQJbmSkIp0YD+P5sw+4efcEXYKbZKQilmfNWr2OjMLogB3RIEdv91vor4/vaDTI0dEBe8OxplyMABANcogGOQTcAQDA8us5NRZwBxANcnXHGX7KFPLy2ZHeStPJqVm8iS0DACanZvHqRYTmZZ4AJd04U2poqLcTFqsVAFCQBTrYL2ri8bUUnK37JPFd/7FmSsoWvuVQkAUUZAGCgyPxtZTuGflPW92xpgg9vsMhtfUFACAdaNMSX0tBcHANM2NaUdfidQqaXZIOSqrwRUy7h2oRb92D1ykgL0vU6xRIXpYaCjEYDAaDwWAwGAzGf8Y/wKIyp5xRIncAAAAASUVORK5CYII=`,banana_fruit_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAtlJREFUaIHtlj9ME1Ecx7+vVyyYtrR3kNASFGMJJJaIKJqbaBlcIIoDg0mXbqSjcWByYHJycGIw6eBISIxp4gI0cTmJUWtMjPxJAEltFYpHC4ZCy89B7ujZg+nOxfdZ7r3fu/feN9/f7949gMPhcDgcDofD4XA4nBqY1QvKY110tH2y7MLcEqsZAwA0NjOkny3ZL0ge6yLJ5TPENnM7aHA7WKVaxZvUskGYMr1sr6CR2AABQKGs6jHJ5cNmbgeuxgZW3j/Ewpy5MxoOKwVpYpzMyQAwgQmsUFbRGmhGef+QDmkPvbKIaPwfCXJ8WoRnr8oqVIEyvYxivnIyJhLyH5qopWebSlk3gv6Q/YJYyznWmN3C+iyhVxbRfbGI9VnSx7P5VQDAt7dtdH/8u6lTlgqirQO8/FjEg4c/Ufgi0pbzB2kiaos9m1/F+3yJzNawvIaicWAmI+pCzqJLbLJ6e3NB0TiIygJpTyoLNBIboL/jQX+oziXLHSpl3Xp7fkrA0HhV7y++CBn63aMrVm9fz43bbgT9IYrGQdE4SGtrTtW6ZOaQ5RyfMwYBmqigP2SI9cpi3XzLU9bSs43BfsaGxqtob7sEHH9V81OCIUXdoytweQ6s3r6eO1e9iMb/pM6suGtjtp9DGukk4Gnf1Z3Siru2PdjPTP+jll8/NO5eaUfxZhZyhxPKRoXmpwSEbhEuXDuC3OFkykYF6aRdu59BbLgJiYiXLvc56OvrGUpEvBQbPv1AtCVlGomIF+HWMAAg/XRaj4dbw0hEvKZznHYKyqkisLZIE5NJPH+SBgBMTCbx+FGccqrIgGLdHNtqCADu9XUir0o00icb4qmMAt/5Env1uf6yZmvK8qoEye1lqYxSN6b+8pjOsVUQABR2jWlJZRRIbu+pmbFdEAAEfJLBpcJuEcraO9N3ba0hDbnzOgI+CTm1QAGfxHJq4VRBHA6Hw+FwOBwOh/Of8RuWiD5UfcCbswAAAABJRU5ErkJggg==`,banana_tree_dead_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABndJREFUaIHtms1vE0cYxp8xdpINiRM7K/ERmqaUhKwgTWXA2K2QiIRyQkWqlFtVFSmX9i/opfce+wdEoofefAL1hJBAimAdk0RaDHKFqZpCAmllNs6axCSh3h7s2c7Ozq6z/qoq9ZEs2buzs7993nfedzYK8L/+YyLJ2TEclgNYWzBN9sSJS4RsFypQU/mOAgUpTDyWsJ3ILKTNYwlCkrNjANAxMDJxdtwBY0GtpAGfbtEHYOXnYSygcrlsOyFJkg2sHhQF6RkgeJWGFX6/oSdXvj6NtQXTnFSmbBAUkB7zguLzkD6gJEnIrKQRUUyipvJC9xxAydkxRKNh/Hq/ZAKACMwLioWhoeeviSgmEbnH68QlQggYu/v7e/E8Uxa65QaVnB3DZo44YMrlMrI5DUcvgADAxkNY7rkps5KuDmatp26xUCwQDwXAAuLB30uGyAt1vy4ITY9sTkOAPaGm8tB1Ax9+2k+yOc2WR2zSx2MJK196Bgh40bEv1H0zHks4YMrlsu0jSZL1IAF+Mgo1EpdINqdZx3koAAj1VnOCdyeb03DiYshBygOwIFQOIApVKu3YnpZXPJbAn8vVvOBDCgBri/u2+sY7wYPSNAjCpZgBqIbuvmblE3VJNCk7ObiccbuGJj69l14wEHTrZccSILpuYPhcD8kua67VnE/+bE7zhGEhAGAkLpFSaQe6bkBN5RGUwkTcy9JpEyDYxC6GPwHJPEib8VjC1SURjJsjFAIASqUdW6ENvlyEOalM2XJFkiTbxJkHaddiRiWC4WsSaGhqbogUoADsh64GKq+nhkvi8zDD57pJRDGJrhtALW9FuStcZSKweCxhdX9+bDanYVKZ8oT5K7CLzRwx2c9hOeCAsporPcC3DQhaBz+GPcbDeFVrUW8MbBcqiCgmiSgmocVQtBVhnXIbw4rmDF+tedfXFkybU669jHfLzSWRY/yK4xcMuO0N65Swl4ncOohL9OkpjKhVsGB0TrY3OjujwC0+P6gyK2nbZoyH4ceyEuVTRDGrrUMkutcZifeSbEbzLIp8WPjwolb5325V107PAKkV3n9UDZkJVyAWCiA2692g6PKnecGCvN2CbZcZUezR2S6YUFN595BR1QsdTWpw+2/WEQpy9YsL+Pmnh573qwvEQ0GwiWeB6r2hTCajkCd03L3RBBAErzmsW1TZnGaDOR45hZebzxxznZ/pw8uHR4XnDgzEgnUfJthYgu19LpvTcPQ8yO62id/vmMKb8Zq+DodTwl7mJTWVx+52NTccTXWjDDWVx9Uvo36nbRyI6uQHb2x7bgDoLr3F9HWgVxZve3ndvQEcj5xqHkhN5RF8/sZxvPvNLgDgh++yB55raEJvHshLpfU+X+OzapuBmlXLgYKbnsXfoZbkEKsjR47Yfkd6d31dz5eHpoEMw7D9DhVDmL7e+HwtCVn3oUO233dvoGEofwGvo6G+HujFEK6d6QcyALDue46WJXU8lkDu0PvWHufmE/8wLQWi+mPouAkA31wO4/uvLnQeKBwOW9/jH120vr8qRvHtj957n7YAUQ2Gw8g8WsT5yG++dxAtBSoWCrbfL5514+aTdWwUhzoHdO3MMEZOis9FByr4bCoMdXUZydFznQECgKXXp82ZyzMAgEFZhl4oYHxUgWr0294mPv94pv1AJtkHAGQeLXqOU1eX8ar42hdYYw6RdyjqWwCAqCzXhQJggbUHKPAOADA+qiDzaNFK7MreXl2w9gAxGh9VMMi5NNQfwmdTYddr2grEuxKPJaAWh+r+CbBtQKhtQfhcGurrwbUzw/8OkMglttF2HChaq0OotZCnq7mG5/IN5FWlUatN46MKwNSrtgKBqdJ8qNg8KupbAHnXGSDUnKAAeqGAqCxb7liggQ4A0TDQosiKwiw9XsH0sNHQNsS/Q0zbgEfrWN/YwS3NEJ5rLRATBtalSm2FBbq6gCaqdVtepZup1k0BVfb2rCXeKh34vWxubg4AYKwuARs7NijU2sdg2B6iW5qBubk5zM/PW9dTzc/PC+9TdyXQidgJ6L9nUJhAVxcqe3sYlGUEABQNA5mVNH55/FQ4vxdckB9IT4pAWJhmxM7JwwXcTrhZ6qVWrJAAPNzwggqHnUu6wny/cnkGE2fHfa+0IBumRsX2NAp1595t1xxixd/b918/ajcxUXOB7qcHZRl37t3mx/kW4XNHRO0mPiSNQrD6G0LRP+c+tRWxAAAAAElFTkSuQmCC`,banana_tree_growing_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAiNJREFUaIHtls9u00AQh3+blDjulsrgWkIGJPvEDSKO5OIcECdQy6PwYiBegFx6Dy+Q5IBycROstE5cQ70c6nUc/4tbBw5oPikHJ+vZb2bs2QAEQRAEQRAEQRAEQRAEQRAEQRAEQRBlsDqL+mcWuNGG794I+V1Xa7HAiwAA55+nexNq1V3ouzfCdjjkJ/AiAUAYpo7+mfXvhbjRZpOhj8nQBwDYDsfgtA93Nt+rVK2WIW4bbluFwIuE7XAAgKX18O3LOQxTZ+5s3rh9lUJlWXeOWgiv8lIAWFOhgyoZw9ThzuYi+1t4FUF7wtlk6Avb4Zh6o8pNyhIrki8USssMTvu5DeOKiMfPN1JVAtrJMbyL5VZiXa3F5Lq0WK5lu2QyUpAy8cPOygSyseTLkW1zrkLcaOdkUjdvcEaJzHU8jw4fqlhdroV3scwJZBOzHS7jinRhckJy3ky9USKSHoLxNSZDP6mA2VMBAKvLdZJIUWWziWXjllWIyc3kDYEXbfU57r3MKhGraEuhQDYuyp6hNFWv8eCtifCoI8yeCkXbzNiyyu6KVyh0F969OYHih0L5+BTKbRtzInedS6VzqA6KH25d6+MFVo9UtoZ674ld+yzbhaX1AACHP9eNjo97C314dQz+TAcAvLBey6OjMY0q5P+Yi5ef3u9NprHQ3+D/E5Lt0scL/OoeNBojexFK8yD4ja/fl41iNJpD17zD9PEi93+pCX8ACFAUE3a7dgUAAAAASUVORK5CYII=`,banana_tree_growing_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAA9tJREFUaIHtll2L41QYx/8nbaczZqZkbYNSFVr0TofdK13ITYt4I7I0Lrigt/kQ+xH8DDLeCF7sytJhWBC8mV5Y0EVkRhlF2bVFpOimdUO62Wb6kuPF5Jw9maSvznZvzg8KTXLa/PJ/nucQQCKRSCQSiUQikUgkEolEIpFIJJLnB2FfDLMEvZiH3elRrZAjTtcFADTr7bUKKeKB3enRas2A03UpAKoVcjDMEgyztH6hTe3sa9s5Qrmi4nmJiSWj5YoaW1DSruBwvwkAWEcplXkLkhLTi/lnllai0KkT8E+SmN3p0WdiAyCddDKrPfVkUlmhxxD2nGGWFirdtDSTfsuFVD1FWg0v1kdMRBQrV1S0Gh4Ve3CWhFbIsXKL5whbI4rxKDx7wqTQanixG2Q1BVlNiZSRpZQkoxfzAEABUKfr0mrNQLmizu1Hcv6P2I18J0icOpZWVlPQanhQ9RTx7Al/SnGDrdYMXmIklF+YYMJ+H2nqZr2NZr0N3wl4WkmwpMoVFZ49iTW4KCMOiJjyqRNE+pGROGXNentuCZMwzFJkgxUlxEERxcoVFb4T8Iea2pRIKCE7z0p56gToHA2wsa2Q4eOAl6pcUbnMLNiDqnqKfPPZg/lC58WQ0F9Mqlh6iXTa/9BqzcBv7R9nyjCRTU0hfthXrIcS96FZ+E6AjW0lskVUawYO95uxJj4vIDwU8Z0AvhPE9qK5CYlTI57XXlaJ87fHy9M5GkAslSghJsGYtqHOTGjaCIfjSl98TY0kJcpspSdk/NBHyh9BaY2RezIEAHz9+3BmAFOFkmTe/eEkvHoC1D7B4X6TyxSvbHGZbe8x0fpP4PbGkVSv7hICbMyUShQyzBJUPRWTqf+U42tMfIl25U2eDMJeyZ10AIC6AD565+zG180z6Rs3R3SeVGIPhVNFyxU1IlJQx6TrpVFQx+h6aQoA2Q9fAQB0jgbInXRw69MM/5879WgzXzdV3Lg5AgCytJCqp+DZE5r/418uAgAHxy6uXT4TJFoG1BlRJvX57p8xidvfb0SOr+4S8t3PdLmEmNTWowEA4IVHAxwcu7E1oRgXev/+rzEJfScgdj+6Jy3dQ1jhFfW9v4ZcRJSw+8rcyVpIaBUyW5uYjMbE7o+XkhCZ+069CB93n1Y+lUmvLHNhQhfJykLXLueQ38kssHI5VhKyLAvZS6+i1x/RD97WI9cyOzosy1qPkHijrxq/RK69/lYBAHDn2wcYug9hWdZKYitN2d7eXuQ498YO3Pt9hGnRL24fLPSelcSFNbXtn+LuPRsHxy6XWUtClmXxhMKbU9yzxeP/xX92wDVIcXKaVAAAAABJRU5ErkJggg==`,banana_tree_growing_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAA9hJREFUaIHtl09r20gYxp+RnFpFtarGETQpCzZd6KWQ0EMvutiH3VMJTo97NvuhFsN+g00wOS2U+OJDcwj2oYdCW5tSnAXZWa28InITe/aQjBjLI6tS5KQseiAw0d/fPM8778hApkyZMmXKlClTpkyZMmXKxImwgblXgrFVhDUYUX1DI/bQAQC09/u3CiTx/1iDEa3WTNhDhwKg+oYGc68Ec690+0CKfjXs2x2UKyruCoyPjJYr6sIFJX0HRwdtAMBtRClFXSByzNgqrsytnOjgxJ7543wgymvHKO8uEw+Z1MHIyBgcAwOAXsuFokvEs2f+i829EhRdhmdPqaLLxLOnc+dEEkH7QD//+hSuNRVCicB6LRcASHu/PweztXMfg8753LP1DY3FDe6YsB79abvWFKohk17LZS+bU16XkNeluTgVXVqAYSroKgBQANQeOrRaM1GuqJH1OFcH7ISiS/Ds2VK38rqEXstFYTNHxqeXPsygc46Hhkr+sVxarZno251Ql7kVTJhLC4XJwFRDjoyQQZUrKib2DIPOOXIKIZce9WFEC4QHY/X45vdPQNiyb+/3IyMM1fUUGQyLml8UfPzligrPntHA7WIFI2THmWvMFQDgitl3jIcQiU1UNWTy528fo4GCYBDUFw8FANWaiff9k6UwDIS1DnArTdgYl8mzZ7j3QCK9lutDVWsmjg7aCBZxEICbFPHsGfg+xhTpEP9Zwh/XH6vE/usKirnER8VD8E4whXXypQ7xMPzs2fax/oM65xQPw0OInAhTqENBmPf9k7nzz0ovcHTQhghGNWTiWtNE+1lkH/qWImV9ZdA5h7p2SdyLXOLNNTQy1hTDYFiN8B1aezfA9JGK9tu/E8EsBQIXA0JWSm7oYfLHGc2/foKtnfuYfFIgu18Tw0QC8asluFI8e4bi538X7pFkeTVA19sGXdYzdrc1f/zTl684vBHKEiD2jQOAxFmyaSjUoTgQvwwJrJSAIj/yb1uJgXa3NRQLa+nS3NSh0fiCvnppAAAMJX/3QEzaj4U0HgP8r2poVUoExDfEtBUbaHdbw+Z6Hte/ue4eCABOzyb+6mKyvMndAW2u58nhsYUgFNPutpY41thAza6D07MJioU1cngs3DDoTeJM5FCz62A0vhCeC3NtpUAiLYswjlIDYjCHxxaKhbVv+gG6UiBeo/EFml0n0b2pAX1Xm2uaigVUr9f9cdEIL+Bm10G9Xvf/VgIUfPDIsuirlwaePt8QXt9oNNBoNGLBxAJiLxHJ+TCO/eIwpVZDljdJpbAT9wtc7VkLW0Sz6xAEIo4T3X8sUS1ZmPdudgAAAABJRU5ErkJggg==`,banana_tree_growing_4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABJBJREFUaIHtmM2LIkcYxp/yY9T0apo4DRsTgrILuQRm2MNehOAektMyrDnmFpD8VfM3ZIbBS8hhJGAOnpx7iLIkZqF16Wg6o+tq5bBdNa9ld9t215DJsA8IQzv99s/n/SoF3ut/JqYzWL1ZBQCYhyU44ykX161KmdmjCbpnw50xUjphrEoZALgznvJnL+qoNQw8e1GHPZpwq1KWwLcOJGDs0USCDJ0+Fs4aQ6cvoaLEytCgVFHspRIwAgQAcua7z3t53pVp2yUmQPJmCnNnzfGuBpgznkYCqzersmZqDQMLZy1BAGDQcZE3U2zurKPVkGGlAYDPnTUXOfcKkpuHJdSb1Z25FzUTpKgwAJBx7RWvNQx5Yej0UWsYqJrHuDzvSscEVFBgkaogd6JK3r1w1vJFwcIcE+kK0z7ubADlzJR87QKjLRyULuFOZBJP7OvvH8G1VxwAaOrguUZTAECkEmSoBhYzALZvt2ZcewUALG+mMOi4G/Uk3AJp4aHTB2660jeoWjtBTeEHKy2tN6swrHRkt4QDfg6R9wCfVYKQ0SKf0D0bgrjFvKC+bgllCswXFgCKpgEAXF0lYfWIoOUa5paPE6gcFzaumQ8N5rxy5eSm94Kkn9ajcMl3l4W5RZ1S0zrouMh+wLZgRNeqXUzrUShwuXbPhuieDTF31jCsdCCUKu5VCoURIPR+EaPWMOTKAl2uVGpXuPYKnlMyhUFQb6+57FS/2qIa9a8BAIaVlqWz9d/0XENfWRQAgB08uElhzkyhclzAqH8t60kMyTCYQcelg5N55QGoRa2ea4TtpPhw8CDF+Jpj+Q+X7f559Qkuz7tQ60YtfiE6o9RZtDGHVBiakqDgAmrUv0ZQqtS55AcilAFpcxWGBhVwlePCFuCusWBYaebaq0hLluGmiCMXo9//qDNGXR+Rz0O7HuSXIpDW99t3g467lyu+QN6skS4JEPopxQKmcAJG1FASGIQtVz+76XwSZ/Dyb6+R++YTCbXP+TkUSH0gduS93qyiNJoiO3/LKdDB32/Y5U+jWDBbQPvq5KgEABJo8cMfWBgH7MdfxrFjavvmKpRz3yS6XztQUr0H2qX7C/TtWM9PTffToa9+T9bqVPfTIZ2KDXRyVMLDD3N6aYK+dUTVq78W/LsvPwUA2POFFqDEKfMD8ZZuLN1GDUX6tTVIWoGeP7USx9AK1O7ZKBeziUa29pRNZktcXE1j3x8LSC3a0uNibABVSRxKVLxBSpQyHUWsKjZQuZhl7Z6tlyYu0MXVFJPZUjsMdHaZldez17S3fbmYvTur4/lTC5PZ8u6sDh3SMhh1am+gk6MSPv4ohzs1GP98veDqULwTB7SwSR03rbGAgqY0uRY7nXsD7ZrSSfebtrZv9+z/5sR4clRCuZjdui5g2j0bn1n52KfGWA5NZsutLqNgL+357dZQq9WSf6vH00dfHAI+y/XiaopWq7Vxb2IgEez09HSvoEJx7rv1XSagojoVp6hl/dA02fOFljORFoemv850hAF0p6z0uIh2z8bF1TR22+/964f3sJu2/pm8mRAGAP4FlBPshc8G1hUAAAAASUVORK5CYII=`,banana_tree_grown_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAABuNJREFUaIHtmF9oW1Ucx7/nkibXpEnb/BHp2iKm1dFGWhAjKZ1YGMJo6UCoTyIW86JP80V98V2GD/N9WB8EHwrCxmQvk8IMBq5MN5Zl2DbSdW03aZuluU2aZDXXh+TcnXtybpKbtBHBL1zI/Xfu535/v/P7nRvgf/3HRCLzI3D5JeR2yxp7wuWXSG63jPjSakeBbBQmOGU3nEjFSprcQ0hkfgQAOgZGIvMjNTAMFGDRLfoCrKy8jER/FDNlwwYAwSk7glN25HbLmssvCR/GgkTmRyD3EADQ6NboPl42l18iqVhJC4dHsWdf009QKEevhOCUHalYSXP5JRKZH6l5YzYPC/saglN2FDNlOHolpGIlDQCBiXu8SGR+BF6vB+l0VgMAEZijt2JkKlaqCR8LQ0PP30OB5B6Cwr6m1WJU5PJLxEDudjuhqnmhW2ZQ1XtrYHylYShKEo7uyjOKBxUQs3ylYxPeeuoWC8UC8VBVaWyY6DXdvXZykCk1BKHpsZk4epbUqM6GdDoLr9dDFCUJX2kYqOYRvYkOTutWNYkNovcdZEoanRg8ALs5eiX9RSR+MArldjuJoiT14zwUAHQ5KznBu6MoSbg89hpSHoAFoaoBolCqmje8La/glB1P85W84EMKALlsyVDfeCdY+UrDehrYUGc6VkOn5xN1STSoYXAkIYIRXasoSaSQhNfrIendrHkvk3sIKexrcDpl5PMF0yk9ELLp+/QB9WDoNVRut5PQaMSXVmF7zkNMexkA5PMFOPsIScUqITBzSQRj5ggLoap5Q6G1HWY1bSBkMyQsrc48XD2JYPiapIcmnTXtbxIFYDe2n6FBDYFJ4vMwTqdMAJB0OgswvU8IxEsEVu1nwmsVJYmBkK0uzN9SEWzTNWu85OxHrxgSmm8baJDI/DEepl61FvVGqVr+CQBCiyEfArYoBqfs2Ewc1RRJPsnpTOKrNe86v7Qx7WW8W2YuiRzjZxw/YcAtb1inhL1M5JbIJd7JYqZsgBG1ChaMjsn2xtrOKHCLOiXq+mwfK2bK2Ewcge9tYJbDVKJ8AkBMgSgUXSOZVWr68H7ny9jOr2AzcWQIIQWhlR8mCzVhyHiJmqyo61OxMKlYCalYCXIPIQBIYV9DfGkV8aVVVMEIu9GZVtchNBG6VKyEcHgUAPQJQEGoI3RKz773Oq5992vd5zUE4qFQjT+ziEc4PIrt/ErNjBG1h1cjXvhPp7G8KH5W3ZBRsbNP7iGETVAKA0Gh6++rbSl342moW93Cc2jWIVaR+RE4XATFXGWl6CsN68nscBFSzGl4cEPD9pO1hmNNL6DGqaYcYhVfWkUxV8mNYqYM9/Pdz04+PkR8aRWz73utDts6EFVfIUeKP2wBALZvHyKw8hccagHTC4DTf9jUGMuLqAldS0DxpVXYNg5qjjsOigCAS1/cbXos3+l0+0Cs/lj/zbCvbnWbXivS3fgxAx232gY6vH/fsG97YjO9VqRjySFWHwZG0edY1/f7nEVL9/PloW2gnYIRoCvThemF1sc7lhz6JPKGYX95ES1DWQt4A/m6ZaQzXTg/5gYUANiyPMaxzbLZcADpTJe+xrlyzzrMsQIx0gDg47c8+PKD1zsPFJAd+u9PL23rvx9lvPj82/prnxMBopo+dxYXL/RjcLhoeQVxrECeYXd1pArHwzUHrtzbwuOMr3NA58dOYegl8TlvTxlz4x7E128h8uJrnQECgIcrbu2zr1QAQHZNxcaD3zEzKWMvlzN8Tbwz8fbJA2nkKQDg4oX+utfF12/hUWbPElhrDpEjaLaKO/Ko0hAKgA52MkDSEQBgZlLGxQv9emIHQ/6GYCcDxGhmUkZ2TTUc87m7MDfuaWm8toF4V2bDAeypTxv+BXhiQKguQYYGJwzHfN0yzo+d+neARC6xjbbjQEODE9h4eBsAMPbun/jxl0LLY1kGqlelUa1NM5MywNSrEwUCU6X5ULE1SbOpADnqDBCqTlCAjYe3MTQ4obujg0odAKJhoEWRFYX5+pv7OPWCs6VliHWHmLYBNkyS8flbj/O4eifbASAmDKxLiZ9uYvrcWaQSu0Ab1fpEPqXbqdZtfQYFQ37MYLedIWrUtEPRaBTRaBRywFiE6Iziv2ABoMsdMNzPjmOmhjMhGo3i8uXLhmNz4x5tNhzQYVKJXQRDfmTXVISmz2D5+g1cU3bg6h8j31+PN35bRoaQseQ8BA/TjKzCGIBETlhVaPpMW/eD5lC9mJpBsh+IVInln/XfC28OYG7cU3emifKJ0APNukNDFpAdz77JqqIrx51CEdeUHVy9k7VcrW1WYADQh2gAsIABHSq7pmLx5iZ/nWVZdogVH5JWIVj9A/RCJ8Szd97YAAAAAElFTkSuQmCC`,banana_sapling_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAABZElEQVR4nO2WvW6DMBSFP0Na0VJVLCztkrxB9yx5hTxpXiFL9r5BsrQLC6pKS3/AHRrQhQAywdl8JCQwxvp8fK4NODk5OTk5OTk5OQ1JmXRarueEsU+WFLpqCyJP5WkJwG5zsAbkmXbMkkIvViHVlaelBnQY+yzXc2tAM9OOYeyr/TbTQA0FcGwzctpERg7tNgeypABQQeSp/TZrvA8iz5pLo2cm8yRcIox9lSXF5DyNApIuXN95fL+XDShASaA+14agjYG6Ku3+cabeXn71YhXWQPKbIPKq8Mu2weo0CnXXMsF/oOUz0IDO05L2+6ow2vCjgCRMFWhZaV/HGV/dqhPotsQYndVpBNSGARr3D083APx86E6Yjqqsl+0sILkHcTqrOiOtgPcC5GnZG2xThxog1WCyiqSDYwDOAjIZTLiixgC0ZXyWGUrBtMPWNtDkndoK0Ovzp41hgAs4NFU2gaz8gvwB9BbCFUm9pKAAAAAASUVORK5CYII=`,banana_tree_sapling_planted_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAABICAYAAACeNle5AAAAAXNSR0IArs4c6QAAAXRJREFUaIHtlj1Sg1AUhc+D6KA4Dg2NNskO7NNkC1lptpAmvTtIGm1oGEcUf+BZCHhByFzCS3e+mRQB8uZ7h3MhACGEEEIIIYQQQgghhBBCCCGEEHIujOai5XqOMPaRJYWtjwWRZ/K0BADsNgdnQp72wiwp7GIVov7kaWkB2DD2sVzPnQnNtBeGsW/228wCaKQAoDqmSlqDKqHd5oAsKQDABJFn9tusdT6IPGcpjd6Z7JNICWHsmywpJvdplJBM4fLGw+dr2ZICYKTQUGrHpNVCfZN2ez8zL0/fdrEKGyH5myDy6vLLY0enU1XqvtuEqtDyO37L30jnaYnu+XowhsJQCUmZutBy0j6qHV9cm3/SXcQavdOpEurK4K8zAIC7hysAwNeb7ZXpmcrmtp0kJJ9BPbtqOtIp+KBAnpaDxdYm1BKpF5NTJBMcI3CSkGYxkYoZI9BF/S5TYjDxZetaaPKT2onQ8+O7i2WAcyQ0FZdCTv6C/AAIicIVov1ikAAAAABJRU5ErkJggg==`,asparagus_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAV9JREFUSInFVTuOgzAUHKJttlmlJF2UFIgr0EUpkNiaC3AGjsEZuAA1kVKg7SjpIkSRgg4phyBF8pCxn8GglTJVHL/PvBk/AXwCjmf3/5Wz4QKd7WlRk6kcSw703WA4X+sLmrKz5KQlORsxEAB+fm1T4iM8Djf2/5FEYRwNwY/DDWEcTUrleHYfxtFQnGsyNGjKzsqSFPe6AAAc3bMR8yxJR2eZlGIy4V4XSjIHZ3tClbdaUl8mBeD99bLZorn7XYBrfgFQoMpbvcnkAQBUeQvfDbDffcN3g1W7MWpA4MbUvRB6DLr7UQPZZLEAoJonI4wjRR52AuAljyjX3Iuaule2lFhSA5pIZEd+idNy7NkJmrKzOLk4iUx2RbsHU4U4AjrM7gHwkkknARE4ukCWpMq+sBPIO6G7FyfLktTMA5kZB5KIMCUV28DUZBMPVpm8BKtNfv/upbOC2c/hXIGP4wnebtncsEc6vwAAAABJRU5ErkJggg==`,asparagus_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJhJREFUSIljYBgFIxOoW0n8p5ZaJmwa1AUcibKEGLWM6BrcNb3g/J3XtzHcPPaCEUMXCWpZ0AV2Xt9GyOFkqR2hgJiEgJGKSDGcmNSGNYUQYzixqQ0jFRELXitdRXCu41ZHtgXntj4kVysqULeS+E9K0YEO8MYBLCIZGBgYbn7YjzOc8QGcQYQekTc/kGo0AQsYGEaLguECAF6gPZZVZb3GAAAAAElFTkSuQmCC`,asparagus_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQdJREFUSIljYBgF5AB1K4n/1FLLhE2DuoAjUZYQo5YRXYO7phecv/P6Noabx14wYugiQS2GD14rXSXkcJLUwy1Qt5L4H1qSBNdEjEUwNfjUYvhAWdOZ4dzWhwzntj5kCC1Jwhq+MMfA1J3b+pCgY8gCxCQEDB+QYjgxqQ1rCiHGcGJTGws5FjAwoEXsddzqyA4iYgFBC9StJP4TCmdcqY2gBfCIxBOZyprOeB2IMw7QI/LmB4R4aEkSw+qeeQwMDAwM57ZCaIoi+bXSVXhE3jz2grElqI0YbQwMDASCCLnIwBfOJFuAXC4xMBAOZ5ItQDf47vW9DKt75uEMZ3wApwb04CDH8OEBAFoqeOiVTrE/AAAAAElFTkSuQmCC`,asparagus_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAUBJREFUSInFUz3KwkAQnYgHsIyVosVia5lGxELQwsoLeAaPkTPkAqks8oFFCpuU6WRJkSJdwMYbxMZdxv2b1U/wQSAhM/Pe/DyAX4BFYfet2J4pgQ2WXiQ+sYGasJ5t5PeZ/0FVtIGW9Uas1sFtcqWEvxUvCVgUdvvjQSb5EIkYV6zWwXS2ku/748E4XyyGgiSoijZI4wRqnmtENpRZQ4rROhCoeQ5pnBgXJ8SwwRLKrHGK6ZMyDcAXNB5uII0TSfwVAgBlsdxcXCN4BnX4W8zVVoCCtoOqaAPxSKcSbrUtWOsAQ3VqdTfHUddmvSIMPG/VA65rIwmwo9UxYOW7aGEdkZFAVYmLqYak4OxAFKbGcCou1n/W02NR2M23oxcyTIJH4jphL6OZLsXXF14ENc+hzJqPzOZ1pv+BU5HvnH+KB+Rns9NcWsNEAAAAAElFTkSuQmCC`,asparagus_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAsUlEQVRIie1VwQ2AIAw8jJMYV2CRDuoirkBYRT9CxJS2Up9ewsNiubO9IvBDQWBih7LvIjjWZakPKWc3yT25OfwrkpkLEkUAwLbtUq6plBMXVA4Grq8t60HWYKQH9R2iWMX0SjniokZEIXlDoOGVGUbdYbazx+MmF2kE7qmWkqxlEEX0CKyNVEWwg1ZQJtoqghs6kcAKotgV0yMIKefmypCsKF0tXhepPXD/UAwifsg4AawtUVA+F49vAAAAAElFTkSuQmCC`,carrot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3klEQVRIie2UMQ7DIAxFTVUJZcnIBTggU0+RKQfMBTJmQUx0aEDY2FSkdMvbwMn//o4VgJshrFOEdYr/N+m57xalKYaloqKd4o9uk4TzqnrmcqJW5+lOEH92m3BnmqZALJyU86+rDeFEK0E8Fp0Ps/PYyHklzrwwbnWADAAA5lfAJkSMQ9qiLL7tIV9Sw9OsuTmSO+p+2wNYU4zrk0QhAyEJl6Dq3hqNkiCS8JU1TcLWaJRANGGgBdQ9Fc0f+ft6Z8QEzMy7hLkX4rFo1PkvwokqgTV6iLBEhPL3cAMAb8x5cUBYehurAAAAAElFTkSuQmCC`,carrot_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAFFJREFUSIljYBgFo2AUjAIagYmc/2lnINUMn8j5H6vB6GLo6si2BBdNADDhlc3/zkiyQ8gCyK5G9xUBg4lzIbIlyIAIH+JSQElKId7Ro2B4AAAM7CorC4ZVKwAAAABJRU5ErkJggg==`,carrot_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAG1JREFUSIljYBgFo2AUkAcmcv6nnYFUM3wi53+sBqOLoasj2xJcNAHAhFc2/zsjyQ4hCyC7Gt1XBAwmzoXIliADInxIvAXolhAZfMRagC8Y8JpBjAX/P3Wz45TkK/2J1xxcEpRkJtKCfRQMfQAAPQYyLlPDfzcAAAAASUVORK5CYII=`,carrot_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAHNJREFUSIljYBgFo2CYgomc/2lnINUMn8j5H6vB6GLo6si2BBdNADDhlc3/zkiyQ8gCyK5G9xUBg4lzIbIlyIAIHxJvAbolRAYfsRbgCwa8ZhBjwf9P3ew4JflKf+I1h5AFeA0nxhJcFlCSW0mL11Ew9AEAw2E2LwiWHwcAAAAASUVORK5CYII=`,carrot_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAp0lEQVRIie2U3Q2AMAiErXEZGcShHeQcpz4YkipQ8CdqjN8bacvBlbZpfj4HEWUiyhx3VycfenCUASRVgCsAkGrrtT2MENCqsNf1PaaAPLyPRWjdvXkH40Rq+2WSMpEVC7ZTcAtnRN0x9S7doz1S1W0CEetci7TR4+QR60Jfhef7IqSLCIuiEwMgjRO5xVVesj8xln2mQEmtbSlis7Io2vZpHvkuXssMLP56RC4nRRUAAAAASUVORK5CYII=`,garlic_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABB0lEQVRIS82VvQ3CQAyFnRUoGIGWgoYSMQUVJQswBwtQUjEFoqShoGUEClYAOZLRi3P+OaRISRUS8z4/2+c0NPDVDKxP4wIsF5PP7f6uSiodzOLn4542uwPVQMYH4KGocZFyIOXBictC0oDL9UGv54mms23LWa/mqV6EAM6exflCQBbiAlC8BMhATIDUXUoi2WsX/NvrRxFgiUuTayA9gBYvlUYDJKbkpAPIiFsuLMgPgLMudbcaGz1HJy2gVjxygae9A8DMvSw9gC6V6yAqhU5I4nsO/imTNUl6GfamiAN470eNts4C/x+/F+ZBExBuUDzVerNqYXkf7iIUsu69L1y4TTMAL+YLkFzsGSkFyYQAAAAASUVORK5CYIIA`,garlic_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAADtJREFUSIljYBgFo2AUjIJRMNxA6nS1/6TqYSLFcB19LZItIdoCcsEIsyBWZxrJFjASoQZfpBKjf4gDABs7CRP3VfqlAAAAAElFTkSuQmCC`,garlic_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJ1JREFUSIljYBgFo2AUDDPg2WH+37PD/D8+eXz6sMkzYdOMTaFnh/l/Gf73GHLI/O0VJxnR9bHAFKFLwjRi04QOiFGDE8As8uww/586Xe0/IZ+iAyZCCrZXnGTEFWTEuJxor8Hi4MlHQbjFxOgj6ANsgJQwJ9oCGf735LiFdB+QahFJFujoa5FkOMkWxOpMI9kCYiILX1onP4MNGQAAbEJDfI/EtV8AAAAASUVORK5CYII=`,garlic_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALxJREFUSIljYBgqwLPD/D/NDSfJEs8O8//oGrAZQIwaol2XOl0NxVJiDGPBZ/v2ipOM2ytOMuJy+faKk4wkuxSXGLIPsAULXt/gk8QXRNgcQZRvsFlCbBygizGRZSMD7jhAFyM6kjw7zP/L8L9nePJREKtBuADOVITPAHQ5ovQRShnERDI2Pm5BNDlSMhpZuRndAkKGwORpHslkJVNSigiy88HQtEBHX4u2FsTqTCPZAmIiC19yJL4+GLIAAIDwnt7DsMsUAAAAAElFTkSuQmCC`,garlic_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAsElEQVRIS2NkoDFgpLH5DKMWEAzh0SCibRBZGAv9P3H2Hd5gJjsOQIbvO3CRwclBnwGfJWRZADMcFj74LCHZApDhK2YVM4ipxcHDnyoWgAwGmQgKFnRAsQXYXA2z5NWtRQwRab0444FgEIEMz80JZQgMqcGaJKkSyeiRSqzrQeoI+gBmGLIloGABAXxBA9NHtAUgDbCIhmkmlMlI8gHBMgGHApJ8QI4loxYQDDWaBxEAZwZJGciZbVQAAAAASUVORK5CYIIA`,grape_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAdUlEQVRIDWNgGAWjITC8QiDTTPk/zEcbwrXhbJgYWTSyoSADkPk0s4Qsl6JrwuU6mDiyT9D1Es2HGQbTAOOjGw4Th6kjmUY3ENkAmhmOz1JkBxDNRjYQmU2RD9A1IxsMchm6PNGuRVZIFUOQDRxlj4bA4AsBAEAiL1mYqo82AAAAAElFTkSuQmCC`,grape_green_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA10lEQVRIS9WVwQ3CMAxFmw04Mw5TcGUFBmEFDlyYgplgglRGMnJT2/8nUgX0GCX/fX+7SZk2/kqP/vG6q/fTs+tMutkKjoiLeRpwPpRqq708ahGorGVVwXJVWARFTCuRdV3LYl4AbAytsIq0exDEBag7lDtTxSqi9lAEYaOCAC9fL6ao4auI9rfXpBPCznwW1QfQ2zzbdDXlVRuOKdNApg8uAE2PdYqMfAfAXoDM/wKvigxm44liHQag7NXYbwJY9/A9iPL/G8DiBSNG1+3ncJMJ4HvL5oAZR2XBGdo0OvoAAAAASUVORK5CYIIA`,grape_purple_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA10lEQVRIS9WVwQ3CMAxFmw04Mw5TcGUFBmEFDlyYgplgglRGMnJT2/8nUgX0GCX/fX+7SZk2/kqP/vG6q/fTs+tMutkKjoiLeRpwPpRqq708ahGorGVVwXJVWARFTCuRdV3LYl4AbAytsIq0exDEBag7lDtTxSqi9lAEYaOCAC9fL6ao4auI9rfXpBPCznwW1QfQ2zzbdDXlVRuOKdNApg8uAE2PdYqMfAfAXoDM/wKvigxm44liHQag7NXYbwJY9/A9iPL/G8DiBSNG1+3ncJMJ4HvL5oAZR2XBGdo0OvoAAAAASUVORK5CYIIA`,grape_green_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA1UlEQVRIS2NkoDFgpLH5DKMWEAzhwRFEQtm8/3E59d3Uz3gdiVcSZvAPxW9w8zn5OFHs+n+RkQGfJTgtABmOz2BkW/BZgtUCdMNBhqG4nAspxL5BjMBlCYYFJBnOwMDAEizM8GfxOypZgOTyim3/GUo/qDIIR91hYMDjC9J8gGRB1aqv4KBpC+OGRMc3Rqy+INsCjGQ7aCwAuQxvRCOnIGjQkJSKYF4nmJqQwojkfIBsCYyNLdOBDAYBsnIyeiRiK48IlUMgMwZHaUqw0MejYNQHBEMPACcseBmTrgJTAAAAAElFTkSuQmCC`,grape_purple_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2ElEQVRIS2NkoDFgpLH5DKMWEAzhwRFEOpx2/3E59cr3Q3gdiVcSZrD4H1G4+eyMHCh2PWJ+zIDPEpwWgAzHZzCyLfgswWoBuuEgw5BdLsAmBDf/w693YDYuSzAsIMXwTc1HGLgz3jIY89tSxwJklxv6zWUo/aDKwOPKxGBXroXTFyT5ANkCY6fJYEPP7ssF06CgwhZMZFuAnmwHjwUgl+GLaORgggUNSakI5nVCqYmifIBsCYyNnulAEQoDZOVk9EhEL48IlUEw/YOjNCVY6ONRMOoDgqEHAPCIbxlb63vgAAAAAElFTkSuQmCC`,jalapeno_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA7klEQVRIS2NkoDFgJMH8/1C1pOhhIFbxf6cwUbD5+1a9BlHE6iNeIQMDA1mWEO0SkAV+adIMXz78IskXxFoANxwWZ8QGFdEWwOIAOVEQYwlBC9w5WP+nSUviTGyznj5n2PnjN05z8FqAbLitrgrD4ct3sFqEzxKiLMBnOMhGsiwg1vUwL+GyBKcPYBYQcj1dLPgkyMyw4soTrJFNFR9QFAeEggif6/EWWoTSPyzsybYAZAAxllAto2HLYYRcT7Bcx+cDYgwnaAGuYCLWcLIsIMVwoixA9gWphhNtAcwSEI2vaMaWEAjWByS0OrAqBQDXPaUZstITfAAAAABJRU5ErkJgggAA`,jalapeno_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAwUlEQVRIS2NkoDFgpLH5DKMWEAzh0SAiP4hswh3+w3QfWXkAZ1DC1OFSg1UjSJO27Ue4664e5mf4/ekOnH9y+xOwPmR1IDXYLMGwAJvhMI3mnjJwX7HyqTAgOwJkITZLSLIAOTjQHUKWBcguwhYcMAthPiHKB7CwBdGwoMEXbNjUIyctojIaIQvwpVWSLcCVWnBZQpQFyMEASq6wZEowlzEwkFZcw5LpqAWgoIXnWGLCGU0NSrwSHclkWATWMvQtAAA9on8Z/HlQTAAAAABJRU5ErkJgggAA`,jalapeno_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA/klEQVRIS+VUMQoCQQzcK2z1A5Z2PsBGwdYX+EZfcK2gjQ+ws/QD2lqczMHAXMwtWeREMc3BksxMMrlUaeCoBsZP30Ww2Eyb0XjmNn3c7V2x2Q6W23VDtMf9kgA+X93S+TBpvxp480h6CQCuIBY0SuISWHAoBSDCkvLtrQ5YTA9IwncIKvKAHVA15q/hGR0m8GYPcACgA0uk3TBPc1488AiojgSn+trW5XJJkiVQ47iyXFdVaT3JdkBl2q4q9daVgEX/AYv6PLHrGjbZ3oGPEmA88AAm6xnpUw+xoWuqBqOIWxQ59SECAtk1/W+CzkmIjEJyOmMv8qCQqE3/fYInGwy8GfZ6sOcAAAAASUVORK5CYIIA`,jalapeno_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABH0lEQVRIS2NkoDFgpLH5DIPLAnNPmf+sfCoonj6y8gBeR+KVtAl3+A8z7fenOwwgw7VtPzJcPcwPpkEAxMZnCU4LQIbDDIEZhI1PlgXohsMsANHoloDEKPYBzJWwOEAOHlgQ4rIEbxChawZZABJDjmhCcYHVAmzhD4pkGDi5/QkjrmBE9wmGBdgMh2mC+QDmC+T4wJWiiLYAOcmCDOPmvM/w9bsi2FP4ggmvBbDIhfkKPf2DLNm54CE4uHClJpxxANOAHGToFrx/eJXh6onX5OdkkCXIrkfPzSALwGGPxxKiCjuQJaCIRk6mIL62hSg4aCi2AJY8YRaAkikxhoP0EeUDbBYQW48MXwvg9QCxQYGkDiVUSAoiMiwjLZIHpQUAD3LJGUbvuUIAAAAASUVORK5CYIIA`,jalapeno_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAhElEQVRIiWNgGAVDDtzebPH/9maL/zQz/P+zS///P7v0/9zUDKIsYSLFcBXjWSQ7imgLyAWMpCi+vdni/+dHBgwMDAwMRtkzSNI7CoYwoFvGw2UJ2fkAPePBki/VLKAawBe+tzdb/D83NYPocgmrAaQUbGQZTmrpiQ4GtrAbLdwYGBgYAFTPX5fT1wXtAAAAAElFTkSuQmCC`,pea_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAbVJREFUSIntlMtKw0AUhr/YokRqkSAGurAUgiLSraZvkT5BnsGlO3d5jj5B8wKum7qTrlqE0o0QkFm0xWys40InTm3Sm7gQ/GFIzgx855x/LvAXZNdMAFmtlwD4/KbxVlIQNfzAkYA8udhHj40fFC79wJmb6HcFUSjwA4fWzSPVesnYOkG1XmLUm0oAP3Dod0W6FoWC08uyMbgf85MOMA8KJJOZVLHrWZxdWQBpBzvbgMtHRQCZTGbS9SyuW+e4nkUUfnXhBw6j3lQWNwErW8bPr7jeR6WNpk3ldJ9G004TqL2wa+b6HSi4Hzi4nkWjadNo2nTaMU+DFzrtGPiwRtkUDxPW6kCH97sirVp10GnHRKHAPCgYyWQm9Q1f2cF3uK6nwctcnExmWJVdIwoFVmXXAJafoqzKATrteO4/CgXlo6Ixfn5dYOQmWGaL7vnZlUXr5jGXlWnRurYoeLVeyi00b2GlLTp81Jvm8RcT2DWTeJhIdRSX2bIKDhkWxcNk4RHLs2UVPDMBkFqjLhFsZouuzIumX/9tbNFVyJi7hTcOj/dSeBQKHu7ExvA8ye/j8/X81+/oHfIfC2frtx3xAAAAAElFTkSuQmCC`,pea_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAelJREFUSIntlDFoE2EUx3+f3hESUbQXKFypQyg1iFNU6C0B41K7ZJIuSiI4NIJKFx0Es7YIWTK0QwsRBDchGDsUCprBG1pKx6pBkEiG4nWpJLWJfi7ekbP5rqkIXfqfvseD//+9/3vvg2McNURQMluM+uIz5yJUtuoS4NGlWyKTyhPWRgIFTgSR61qIatuR2kkdgMpWXeasBGkjTiaVl/10oAUlV1oNmTbilJ1NH1nZ2SRanhKj5pV/E8gWo0ROh2AbzNEIORIAzNnrAKSNOItfVmSysRFoMShm8ODFec8OlxSgO74WGhQ/f3UAKN3/phToOYNu8vEBUyR1Y18hobBGte3IsQs3aHVqSoGeFj21smLy6hOp70yLjQ+2L5ezPLtk17CVVvUUOMUgxcpDMf95SU4MDIul7bo3ZNcit8Ozr+6Ki8Njh+vgzdoC1bbjbZBbdS88//pOXnc+Ha4D8A5JmquTvqoBJowhMWevy5yVoPGx6a7xgRvlQ6tTo2TfIVYQ8l5piKlFk1hByGf2ZRkrCOnGrU5Nzi/fVvIoLzmsjfB27TVJ3RDNnR/sNvd8+d3mHrPWY1FZXRCZVF4pEHjJ3fv9978EcNOa+fOa2Zdzoezgf6FvgfcvvwfGKgRNvq/fsk+uYxwhfgNZt7hllq/TVQAAAABJRU5ErkJggg==`,pea_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQFJREFUSIntlD0KwkAQhV/EI/jTpYt2CjYBFYSQRhSsxSOJeIxcQlIG0gS0U7t0MbnD2iQhGXaXWbX0gxTDvjA782YH+GOC77kAIKpvs14ptZOp3dIulo5UZ5FYJFGAXn8IALAdT6aptcfTAaPxAACw256l2o7szyLPlDenPO4v7bk0wa+T1FAPylgK9aCMzeGaqUJlYBOWmSqUHlB0fdaNd5ebQJfkEsZ0vAW4VTLNFEkUiCQKRPoMKy0ARgW3a4rmbcpYicl4s2GPt8ku+pS6j7SXFabvQupBkWf1RFBu15S+C+3EfLyLuPunVYHvudZsvhfN+BLGXycx4mdL7k/FG2sdid9DA0ygAAAAAElFTkSuQmCC`,pumpkin_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAu0lEQVRIie1UuxGDMAyVOUomYA52yRzpU9IzR3bJHExArzQg54S+puIur0On97GFBXB3lAYOZvhZA5wfE3283h9Xo2sVj6JPM4CSAwRuIHMCjtD1SidAoaaJub3cAPEpMBZRyOolk+IRWlCWqi3OYN3yohrnMKD06wYwDj6Z18ah1nYt/DUwk3FDLmjhym8awt/guoE2TG34HOJDi5I1Q/ehZcUtDl9i6rrYU9VGu0/cRcSVqecwwb6b4wsIwjy5qWuN/wAAAABJRU5ErkJggg==`,pumpkin_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAgklEQVRIS2NkoDFgpLH5DKMWEAzh0SAaDSLsIVC1zu7/lYtPGTY13iWYSHAq8KtX/q+jLw22oS3oEFwdzHCQOMUWwNwPsghkCchSmBgxhoPUEvQisqGkGk6UBTBDYRYR63KYPoI+GLUAPYjgqYRgGYBfAdxcouOAXAtHLSAYcjQPIgAOZi8ZT91aaQAAAABJRU5ErkJgggAA`,pumpkin_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DKMWEAxhqgSRX73yf2SbNjXehZtLkQUwg1+9+4PiEzEhFgaYJWRZgMtgZFtglpBsAchwdBeDDP786jvcfF4xTgayLMBmOMxgkKEU+QCX4egGgywhKg5g4QyLLGQL8LkaZAHBVIRsGMg1IAALd5DhyK6GyaMbDAsujEiGGY5uEHqOghmM7FpsuQ7FAnTDkcPSIlcenJmINRivD2CSyK6DWXBi8kOSkjbRioeMBSiFFsGiErcC6hR2xDiA6DggxjCCyZRcQ/DpG/o+AACfiHQZOpMMxAAAAABJRU5ErkJgggAA`,pumpkin_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA20lEQVRIS2NkoDFgpLH5DKMWgEPYr175P3JQb2q8Cw8ZsoMI2dBX7/6gRKWYEAsDzBKyLAAZjm4oemKBWUKyBeiGf371HW42rxgnnE2WBciGwwxGNhTZF2RZYJErD45MkOHYDAYZCgMkxwHM9eiGwwxFTjnIPiE6DmCuB2kmZChFFpyY/JBoR4EswqkYFiSwyIL5gCoWwAwHGYYcNCAXUWwBsuHIYUk1H4AMwuZKqllAcx/ASkdQWYPsE2r5AKXYpaC2o7y4JtZykjINsYaSlZPJMRxvTibXQHR9AG+ifxnYavyUAAAAAElFTkSuQmCC`,pumpkin_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA90lEQVRIS2NkoDFgpLH5DKMWEAxhqgSRX73yf2SbNjXehZtLtgXIhr569wfFJ2JCLAwwS8iyAGQ4uqHoYQWzhGQL0A3//Oo73GxeMU44mywLkA2HGYxsKLIvyLLAIlceHJkgw7EZDDIUBkiOA5jr0Q2HGYqccpB9QnQcwFwP0kzIUIosODH5IdGOAlmEUzEsSGCRBfMBVSyAGQ4yDDloQC6i2AJkw5HDkmo+ABmEzZWyfEwo5c3jT/+IigsMRdh8ADL8YrYeSmmgP/USAzGWYHUFckFmcEscbHCBwjeqWIASDAQLe9wKKC+uibWcqIgi1jBs6mhuAQBXJIAZAYF9rQAAAABJRU5ErkJgggAA`,pumpkin_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA/0lEQVRIS2NkoDFgpLH5DKMWgEPYr175P3JQb2q8Cw8ZsoMI2dBX7/6gRKWYEAsDzBKyLAAZjm4oemKBWUKyBeiGf371HW42rxgnnE2WBciGwwxGNhTZF2RZYJErD45MkOHYDAYZCgMkxwHM9eiGwwxFTjnIPiE6DmCuB2kmZChFFpyY/JBoR4EswqkYFiSwyIL5gCoWwAwHGYYcNCAXUWwBsuHIYQmz6OnCxyh56vGnf3iDDEMSZBA2V4LEQYZfzNZDsUB/6iUGfJZgWIDLB7J8TP/RDYfZhM8SrN5DLsgMbonDXVyg8A1r/USMBSjFLRVrOUaS0jQ5Fo9aQDDUALfWiRlPIsF9AAAAAElFTkSuQmCC`,pumpkin_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAt0lEQVRIid1UwQ3EIAxzK/7dI2MwCaMxScfIHkzAPSoQnJKS0uvj6h8SOI7jALwWRJSJKN+957RHPqTjECkz8zJ7bx0p9CHB0okGsQAzL3vcZjntsMzBOqv/RZ1626aWmhm4Ql7jBoiRKwKuFhf34BvWvZCEuHqINot8SGoRSUjt4Iy0COhsNMJkUVtkJOZxDBfv15vZWXQlLe0bQLfNPAON/PZ3bSI/QdfBbFL2uD2TrPd/1QDwAfx6iTTKaBYOAAAAAElFTkSuQmCC`,spinach_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA7klEQVRIie1VXQqDMAz+OkfBu3gtnz1Ln3et3kUYSPegwTRNjNsYbLAPSjUmX/6aCvzxqyjbchEOCCzdgtSvT9PscmnCgjECQ1dLiYzI87LupLd+b/gumlcM3U5ASD0wRp08L+S4yVx63NO3iHgQGkQmV13LIeFyGYSA3QOLzMomL8Dt3nD6TdYiPIr6VIm4oVUmz9EGeYrqJksyWRaZpXJU9WPKjTw5OXpqDngz+bsWNe3GHEgHAdNcT6eVCc/gQMe7iwK0vmjNNUpkDZrumJeqvuhMG7vJ3LAl46S03kbBGAtSf/pf8JqTD5J/Jx5qr2HmmdxT5AAAAABJRU5ErkJggg==`,spinach_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAdklEQVRIie2S0QnAIAxEzwpO41pO5VpOI4j9UmyrMelfSx4ICnrPgwCKonwfI7odXO37mFlvDzKsrRFvn7JXgllYOwuYC4KrPWz1Y29ZLegG90AASOXaZCOZC2I2SIUvFQsoibdgybcCStJgiFazzBpBYabyV07e8yJJjGp+5wAAAABJRU5ErkJggg==`,spinach_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAV0lEQVRIiWNgGAW0AE3Rtv+dDBT/D7Q7BhA0RdtSzftM2AQPXH1CkiE0jw9q+pi2gC4upUp40yUTDcqIczJQ/D8oHTawgKySFVc4Ui18sblohJf/QxoAANEqIe1OcIVOAAAAAElFTkSuQmCC`,strawberry_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAR1JREFUSInlVbENwjAQPCNIhSjp0oUGJohYgClIxRCZgDnYgg0yAGXS0aVOQ5AwTWzZzv8TU8JJkWznfee/s2TgH6GdT6oBAKhY8uKc2cmlbAyHIVSmxvybRQqoYSMAYBDTxTmz49GGCPLRZqIbu2Y6mCKgAaBP89GP5F55IoGYAoBPFuk+zS153XZYHGaTyb2BJMAhuVd2zIQvdiCS120HfdrDdOiG74LrwCOv2w7b4wrP64sspuyKuqab9ZIlJ0g9UAK6T3MvUAnGqkvZkFaxDNypQ2FTx+UVZiAGy8HNyLlZKhT4itzFQO4dWjQ5tEOaU+Thgg1XupJTT84KxCD0m8I8ijGCmCsgbarbDrvHTdo3WQDgn8LY1+9H8AYaOaFdHXkaZAAAAABJRU5ErkJggg==`,strawberry_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZpJREFUSIntVDFPwkAYfWdQoAYMgdiIcSHK0ASHslgGBiTGGBLZXJmMHXCE0ZmasGDSVf8BA4MhTiyd7OhiogMBAhEMDmrCcA7mCpUWMDI48KZe79173/u+ywELLPDvQWYhZUoBeH0cKp06Ta1vkbfXd1xnX/5mkCkFTOvaoEtlSYSq6WAmo7AzXJpUcW3QpZzHCRe3YuzJkohKp04BGByvj7NN4LATr3TqrGLKhFVNBwAcrG0QAD85lt2wTMAOMjy0c8b3kX+TVPstWu23DM7o/tQEnMcJ9ABV0zFqki0ngTSgarohrGr6RHHLBLe9pklAlkQIvAKBV0w8VdNxyu8SgVfwGGzbXpaxBFeOFEmUBYr0UGi0/8yc9V6WRBxrN7YzGDNINAQA3y0ReAUXnjg5Ke+ZDBlkSUS2nMRhMEIiuLZMYDlkAOTe/UyUjyTZbvCGIUN82U/OV6OE/dtp8jYyFglchYJp/ZnPo+LVSc59R2UMh372tA/M+BJMRTjmQqhI6KUWpaEioeGYa+azkyqgv6xjPmkWmDu+ABYSnXTgyhitAAAAAElFTkSuQmCC`,strawberry_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAmJJREFUSIntlL9P1GAYxz/vtbw5rw1X7gwOhKRAIrtMjCYmJCbEyb+BBRddWJxcWHTBxb/BRUNiojExrsawuAgJeAlBPQ/uCrRHeend63Bt0/uJTjrwTG369vs83x/vA1f1r0v8yaHXj+4A6Gl3jmOvLtyFRVRL6byZF2bOZGpp9e8bHLx9nj5/3/1K48c+Z81AjzsTwl1YRBpSx9+Ef1QFoOiUuPXgRRdO7pLhNaCvu7OcNQMAceI1kIZMhhNCtznxGrrolPQgAHMUetSORBiFWhqSe0/f9zEDOK3XmHbnaAa+KFj26AYfntwHOlSnllbZ3lwHEKqlBjFDtZQoOiWs8qSwypPY5RujG5x4DT3tzkHszfzyGgBbGytsbaz0MePsPEYxsYtlHbWjPk+7GmSpZqXY+fSRolPSzcAX1Z0vWO4Mh5U9YQJjCN1S58JXPra0NT3B6TVZFCwby50hakepFAD7lV0Klq0TZoeVPX5W9jTAxXmINKRQLTWaQRKx7c11wijUtrQT6Rh3JsSxV6folNLzU7M3RRuwrlnM3H3Yi92ZOPuS6DzmOKlh0pCp4XE8kYbEVz55M4+ZMzUghl22LomagQ+gLzwPacgUMCnVUjq5YABhFGqA8PS4LwgDGxzVqunPcTR11I5Sw/NmvotxonujegCg4wGHN4h1TkF85ScSML+8hpkzIZbVlnbK8rRe6wpBtobuoqzmymsQHP0COkH49uYZGanE53evGHcmALj9+GUXztBVkb1kzcCnYNm6l12yTZM1MqguW3YAFCxb71d20/fYHxFG4chVfVX/R/0G94oNtjdxwCgAAAAASUVORK5CYII=`,sugarcane_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAaZJREFUSIntVT1PwlAUPSVNXNgMTdwaZCWmG+pqIouGONGNyYE/0N8APwEWtzoZI0ubsArdCHFwqcQNxfADSAh1sO/xPm4BcfUsXN4995x377sEAwpcr5ioZ35rYuzCo/hSoesVE6dU1QpGcSAVZfEovlZkFZaYfZmczL6zIpEXDvua+OXphcQ3xSRZFP8UOagCXiCJU12Ew0A65wZ+a2LA65Oth8OAm6jiVmGZcmhDcq5iJ2LLTqnKP1WemNPegBJn30dxIJmwmOKxNxIXIqePow+/NTFGccBvJt6SLQAlDmKlJQORuHg9AuYz8BiAnV/Bzq+kM8xn65hAjrmqu86RmjBhKU5zDO1uU/vx8Q6YeLvbTCjivf9Cxqq4Wqvd+O7xNmFzjnpjfl53y1xYjAGgcnUCpAvSqHUkTX0kokk6gmgwRd0tax1VztLZH1qkOKgtAoBGrWOIt9+GqDcmxTMNKGx7gyyYm5LvbwseU28g5vcysI8PAAAfn2uTTXkKO49oX2R28PD0bADnmf9afzZYmwA317RRNJhKPAqZCRWqySbRf/wK36wQGKXFDcrEAAAAAElFTkSuQmCC`,sugarcane_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALJJREFUSIljYBgFo4DuICvV9z9NDX/6bOZ/mliSler7//adOf9v35lDkiVMpFjy4MFDBgYGBoZv35gZXrx8R5QeoizISvX9X93owzB90j64JcQCoix48fIdw7dvzAyTZ8SRbAlJQYRsCU0sYGBgYGit30KSepIs6O/cyBAYbsBQXBFAfQtghnNx8ZHiJuItIMdwkiwgFxBtATmuJ8kCcgEjsQqD/KxRyp51m44SrXcU4AUAXQNE1DhUevgAAAAASUVORK5CYII=`,sugarcane_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAVtJREFUSIntVCFvg0AYfSzVcyCWrElNp3BzJPUYBArSZEk9Fl1VhRyi/wDUxNKEX4CrQw1DQpOJzU2TMNOPHNe7K5TJPXXhfXnve/d9hwYFgtBuASCOMk3GyXiClAhCu50vFwCAuqx6Iiwn4q8asAKG3uDre9aJEGfoDY75aVoCOj9bj50JKy5LOCoBCZAJL84n5LXuZOJ1WaEuKxh6g/ly0V0HL37MT10Nm1powIrHUabFUaaxApSEFacaAEIT4frxUYPQbj8/fnp1D0/3ws3ir0o6ZBauY7Web/a+pUmBt/f8ohG+uYsZTMGgIfNwHavFuWMCeyZeBqWB61jt6/4FAOD5JtKkQJoUoOsiXmUyGyJO4OfA86MT/AWUBrvtoTvLZsDWjDZYb1adgGgGu+0B683qdgMyIXi+2ZvDNfFBBlMh3aLzK1Xu+BBM+lVwzdxuAMGLVYn+YxR+Ad5z26tYeOTaAAAAAElFTkSuQmCC`,sugarcane_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAK5JREFUSIljYBgFo2AUDD6Qler7n6aGP3028z8pljCTYnhguAEDN7cgg7ObKsOPT4wNp8/daiSkj4lYw6sbfRimT9rH8ODBQ4Zv35gZXrx8R5TDiLLgxct3DN++MTNMnhEHt4RYQJQFMPDtGzODhLgQw/RJ+2hjQX/nRobAcAOG4ooA6lsAM5yLi48UNxFvATmGk2QBOYaTZAG5gJFYhUF+1ii5d92mo0TrHQV4AQCQmDoaSzRzBAAAAABJRU5ErkJggg==`,compost_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAANFJREFUSIljYBgFo2AUjAKCgJFYhSbafP8NlP8xXLjLxMDAwMBw5uonovQSpchEm+8/Pnl8lrFQariB8j8GBgaIGmwWMWHTlOLH899Em+8/suEQg0h3DIYFJtp8/2HhjAyQxXwc5LGKYwN4ZZENQgZbDjzEKl6cZIThC7wWIBtUnGSETymDj4M8Q++8cwwMDKhBhREphCKVWACLcPwBiOQ6YsSQAcyhTNgE0cGTx/cxxHDFAzrA6gP0JImcUgjFBbp+eBxgcz1y0cDAQHzxQFcAAE2zRkug2a02AAAAAElFTkSuQmCC`,corn_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAbRJREFUSInVlDFrwkAYhh+lKB2CToVupW5C6VgQOrl07OoiCrp37WKhS/5CQUERxNVR/0CgowhxUtwEJyWDxKHpkNxpktNYLYV+S+AueZ/3e7/cwX+v2C9oOIf04ueKr6cVlsMc62klCDsb4CyHOWzLhLmBbZlKyKkAZzGrA7BJleE6txdycZLzPrBqwtwg4UE0LYttmW5HO/VTgLOeVrAtk6SWxQaSWhZWTWwPlFg1fR/Iqd89u22Nenv/LGcxq4cEAJgbbkxA+t7w6caFeKmYoavXJEjlPLFquo6Fc7YzSGrZkLgEiBqMOyqIs+wjY7HiD248XtYJbxaXt42QeAiggDjraUU6tC0T7etTwkQn6SeU4hAxZOEcAs+5IYeavqnuFVd24CvPuXAqn976VYS4BIx6xFrtSWhzN2vbMtmkyrKDfZkH62BEu4PNv1QBA8/QUeKRAJF1/q1BV69t13UovL47B87McYDHDwCDrl5jMO749rp6jQLREN9JLhUzcqPVniiFg9VqTw6dfnUHrfaEUjGjFA/+DFEdHH3ZCeFjct8t38viighGdYqwEhAEnSP8Z/UN/uTZrzroGIUAAAAASUVORK5CYII=`,corn_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAFJJREFUSIljYBgFo2AUjALaAZdGhv8ujQz/CaljItfwPZfZiFJLsgWkGE4eCGH7zxDCRlTwkG0B7QxngAQRKerJiuRBZQEjDnFKwhiXmaNggAAALTwUmwa1nZEAAAAASUVORK5CYII=`,corn_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAIhJREFUSIntlMENgCAMRb/GdBu36AjsY9jHEboF23DBExyMUijhxjvDf9A2BRaL6bBHYo9kvb9r4QAggWCVVAU5fFTShqMER93lUn9QuOPW/aguwYekZQD6BK9wCaT2xiTI4QDAZ6yePSwCCVSC5UK1NyYBn1ENNjNvTI1MF/zVcWQlzOnNwswDkWwuFghkVfgAAAAASUVORK5CYII=`,corn_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA3UlEQVRIS9WVsQ3CMBREnQFoGQBqiqxCBkIMxCwU1JkiA4Au0kUfy/Y/W7EQaVLY/u/f3XcyhM7P0Ll++C1gup3fVPi4z8lmuCe3XlSAw8/XsjLGyyHYIiycW2djkkWn63FVQohaHGckADZaCLtOKYuHRgYQAhUAxJblptEFxCF6oVYpsF5b/3MTk1IhTxH9xns3ADsqjav3JXAziCFquFX3wEKsRUrgsgILQQaqbU0AwOwnohR8E4AXTZmoJoBSuClkHIL3u98DO+t/A9j+ZN5NTax/5Vodci2wO+ADXJmJGbhBn08AAAAASUVORK5CYIIA`,corn_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA9ElEQVRIS2NkoDFgpLH5DANrQXC98n+YD9c23mXcMtnnv0/uFjgNkoOpAcljCw28PgBpPn/5M1ifoS4vA7IlMIPR5dEtISqIlILEwD4BWWL6kJ3htPxPsDmEDAepIcoCkEJkS2AGI/sMV2Ih2gKYJSBfgCyABRmhVEjQAvRIJBSpJMUBckTCXAwSw5ViKEpFsPAG0VSzAOYibMmVUNjD5AnGAbolxEYuyRZgy7XERDjRPkD2CSgOiA02sixAz8X4Ip4sC2AZjZgURZYFxBhMViTDIprq+QA5zVM1J2PLTNSyAF6TEZtjkdShxCvJkUyqhTS3AADroZQZ0g/6xwAAAABJRU5ErkJgggAA`,corn_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABBklEQVRIS2NkoDFgpLH5DANrQXC98n+YD9c23mXcMtnnv0/uFjgNkoOpAcljCw28PgBpPn/5M1ifoS4vA7IlMIPR5dEtISqIlILEwD4BWWL6kJ3htPxPsDmEDAepIcoCkEJkS2AGI/sMV2Ih2gKYJSBfgCyABRmhVEjQAlhYJ4poMoAimFCkkhQHyBEJcjG7KB/Dz9efwJFNyOUweaJTESy8QTTVLIC5AltypYoPkA2BWUJs5BIVROiuRI5gUK6e/+Y6WAm+ICM6spCDCxbZVM1oyBag52J8viDLB7CMRih4SCoq0H1AbFIlywfEGk62D4aEBfCajNgci6QOJdhJjgNSLaS5BQCfTpUZV5cHzQAAAABJRU5ErkJgggAA`,corn_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA2UlEQVRYhWNgGAWjYBQMRuCtxfDfW4vhPz3sYsFmuYetHpR36f/WawyM+AxAdygh9QQdAAPn774nqBnZsTD13gyPCToaGTCRazkl6pEBVpfCgpUYn1AaBXQB+BI1zjRATcvxJWqsaYAWAFc6oYsDKEmkVAH0LNhIBjizDL2yF85yAJFyIXH48tljmjgCbzYkN/GQUpBhdQBE4yWyooDUygxnCFAjuMWlZAlWTlQvCWGhJy4lS22jSQPE5n2SghnZQGrlCKINQW98UCtbklwXULtcH/AoGAUDDgAvcmw2gDIKjQAAAABJRU5ErkJggg==`,potato_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAArUlEQVRIie2UsRWAIAxET58jULuJm1m6mZtQuwMWyhNjOAgWNl6FIP8IpwF+fa2ucV+oZVkNAgCsy/HgN2B0x3iadZ7FIERwVGqQM+mtcL9dkyk8p5oKHidnklWUKqiCp1VJMYOwLvfNcszAJQP15KPTM2BZaBmY7jzVm6+oWdRA3jG789yPZq5ACz0HB4CBwWR4WpgMzhaKQZ9gCi8tqo2tFmx5Sbbm1hb/6yPtXRM6Z/YOWwgAAAAASUVORK5CYII=`,potato_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJhJREFUSIntlDEKwzAMRb+Tdg3oAJm9detBfFIfJFs2zT2AIWtI3KGkQ6gixR0KxW8y2H5PYDBQqfwMHyj7QFk7dymVd7fltQZljslJZ8WNvRAAOCbnA2Wm+b137xtMYwsp0linZZqxlwPA8FgP76sBTeLTVZzeHNhEZ+WmAMfkPoksclNgi5TIzYFvqAEV6aHUP6bAWflXnpbpO+4f7cK2AAAAAElFTkSuQmCC`,potato_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAP1JREFUSIntlD0OwjAMhV8L3VAlH4DZWzcOkitwwR6EjS0zB4jEGpUwFAc3JJS/CfVNUWP7s1+SAot+ITYU2FD4JLd+pXjbDbDkkUI0uNTEOlcQAGzvKjYULHnglAdb8thtazDGnLYbwKBge1dJXJUmtd2Aw+kCdk2ElKaz5MGuiWsA2G1rnI8rCCRapIvHZJngNpF8t+THbqV47ypZS75ocgZ6k12DthsmMB17Pq7uIDPaIpAsQAeUutF7uqkUos9gMkEuIJX4XrIlzX24ptHrZKIctGTLW9Les6GA/ebhvj+7abMP7Zldr8TMAr7VAphV6XA++jXP1Fz0r7oCqWWiCeEH+pYAAAAASUVORK5CYII=`,potato_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABQ0lEQVRIS+WULQ7CQBSEtwLBj6nClIQEj+Ai3AKJ5R5IBHfgIgg8CQEMCsOPQJS8pdPMvnbbpoAg1PRnu/O9mX27gfnyFXxZ3/wJYDSOYolyvTpax/q9KObSiESsO2yb3eFmmmfLMfcwMP1ey5w211QbcA3LALg6eRYxXAyQb/LOMIFodw5AV8sTdGUiDICMsSNxLO5kfgpgca6Yf4YjOMEYYIgP7jIAHQeyxwQIcOUshgYA0AHoQa4mD6Cr1RFi0Z2ImFy0wOKA1wfOsQ7cUWlfcytyv+dBAUDVXIweSwGoIm+yD8ixcAPkOuBKfTvTJ8JO9IZz1sC3G3UU2uVbR0WVGD4FsAfRaBxJB0Gz9Cwr/SFRihfTgX08Xx4m7DTsfbbcy6dCjSoAKw5hHcdkvi2E+ACvc7ne5WhWcVAPk8z6fcATQYkRKFHnkOsAAAAASUVORK5CYIIA`,potato_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAdElEQVRIiWNgGAUjD+R5MfwnR9+UVIb/2PQyoSsi12G3nmIXZ8IujAmI8dmkbQyMxDsJiwXkBh/RgJIgHAWDDFAzMrHmg1tPqWcJzoyGK2cOGMCVCalaVBAs7HABYuJj0jYGRjVpTHGifUAMyJlNQWE3cgEAMasir1+5WT8AAAAASUVORK5CYII=`,sweet_potato_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6klEQVRIS2NkoDFgpLH5DKMWMEQZ8P5HD+ZlFz7DQ4asIEI2tDlIE2z+1TuXGbRVdMHs2nXXGWCWkGQBzGCYobgSCMkWEGswzEKSLAAZjsvFoGCBAVjwkBRE2AzHZShycBHlA1yGI7uUojhAtwA5lRDK/QR9QIzhyBbiSqIgh2AkU2IMx+cDZNdjWAAzHFdwEAomdMNRLAAZ3lmQxvDr0WFCQYxVHpvhFFmA7huSLEDXjC9oQAaDAHIBh+xFlEjGl2uxhQsuV+O0ACSBraREz6UwPi5X47UAWZJQWU9MaiCpuCbGQHQ1Q98CAPnipBlXIGtSAAAAAElFTkSuQmCC`,sweet_potato_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABE0lEQVRIS+1VIQ7CQBC8fgNXQ4KrxRE0CoWo4g1oBJo3oCpQKDTBYetIMHV8o2SaTLPd7vXO1DScau72ZmZn97aJG3klI+O7P0HQ4QlblO3SmvmX16qXqTxHnBWDfdMiXN6fV+5dfhuOV/HpAOB8mc9b/xfZzF0OT5PEVCbBiSJJNAFifCQdAuviEAFIsZCNzpL3gt4ycLtJ3TF/NPGnYl3f7lUDTOW+OnhrQI+hjOAABokkoIAoixCsbfIRgIidRDEWSa8GVvdI5czAssvquJZAt6YO1iS0hvvMRr+HDoH03SoawLAv1fPbN5R6Fg29SqplJ4XAvS/ZUkP1PIsBjyVoZ9LAbPZO5QmP6+CvKjJgdIt+t2zOGYhEhSEAAAAASUVORK5CYIIA`,sweet_potato_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABLElEQVRIS+WVoQ7CQBBEj9/AYUhwtTiCRqEQVXwDGoHmG1AIFApNcFgcCQbHb5RMk2m22927MxWEc727zuvOTu8Goecx6Fk//CGgWI0q2Po4vbOqdzdRiD2CIOam5ThMimE4bG5ZEBMAofV+Fp6PT5OB+/EVIM5BiA6JrqwDsMQhogGxOQlpAWiBFV0AMGQVFlTb1wBS4vwq7rOA2j6806nA+vrlYhS25bXeuzvOq/Pl3VTigTDfAUBAVsJNFAZEA7CmGw4bTYC2yQMAxBizJ9J7rNHSVg9kNCGurWEFMbvMmHq5lwBpE/sEu2Q11t9dV6B951FAAS3oPVsBaVlknTESkgJGAd694AE0zHs/60S0IL8FYIKkDYxq6srNsai+YBLD1ckBpMSj670Dvl62CygLcuKEAAAAAElFTkSuQmCC`,sweet_potato_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABSUlEQVRIS+WVoW4CURBFZ38Dh2lSh8WR6qqqChTfgK5A8w1VK6qqqpu6WhwJBsdv0NxN7ubu7Oy8Lckq1gDz3jt35s7so7KJn2pivt2hwOJ1fqWth49z0YHBDQoCEDDEluuHhv+4mNn79qeJZ30MFwHa7Fd2PFzas7/1yQhnkCIq4AV7AhEcgEjAx6KqOgJqgS8bMDxaRVYVK2kFSnCCCY0EvXUQ6VUQNUyzpg2IaQ98f5BATwBwrUSzzazxzcbeUMDblAmw0mhswQl7oKOpDaTfbLJf0/6EY5rNPWAvz3N7W39Xu/rp+vl17rx0ak/00jVN9r4jBihhAFNAhbLMaWFnTHkl4JNQ/Y4YfkOEiemZaALTe8SLKNwnMXQfFW/DqBLCdO1mgcwuWvXv2zQ6QP+5NgaOvUWLzKz9g0kyHeSMEcgcKK5NLvAHBzcHKPX7AFMAAAAASUVORK5CYIIA`,sweet_potato_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABQElEQVRIS92ULQ7CQBCFt9fA1ZDganEEjUIhqjgDGoHmDKgKFApNcNg6Ekwd1yiZJm8znZ3ubCA1rIHuz3z73sxs5kYe2cjx3Z8Cik3ewrr63PykMjhMwbfHhXvW747xqF6OQzic1q0L9ABacK6E1ufl1NfFrJi40+4ehXiAPEw358HkNyg0z4dUFCjAZm4TrOJAbU5TpOZABkIw+rVUSUigYCg4zeMw/efWDJ0hu3o5IFsoaXJoicUch/JzqL4OIKtH+mslHBBuYQCIeasBcFtNHe8PrwAbtXKUfmOPZo9szB6AFrXylJ3NrZAQFRDLgwyOQrCsgYVfdXKKNQEAKnip8bysV7m7XBvfaNYToQJk/ePlpIY5VMtWAqyXlOKZbz0F3pe3bh8gKc90kgJsosBcHYBByysTpoKUILE9owM+Bp4PKJgW4PEAAAAASUVORK5CYIIA`,sweet_potato_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABUElEQVRIS2NkoDFgpLH5DMPIguRM+f+w4Jo7/SGGz2Dy2OTwBTPYIJDmyAR9uLrlCy4yIBsEkq8tTgbLN/fORZEjFIeMyJrvvD2DYQmyPEwS3RJ8vkexAGYAzCKQT2Au//tEhoFZ5gncATBLCPkeHkQwg5C9DDIEBG5v/8Iwf0E3Q2JCKYOqJw9YDBSE6L5DdhgsiOGRCfMmsotBBh568JbRTkH4P8gCEEAWA/FB4jCfYQtirPkAZiDMMJBByGIgvpevF0NosCPY0raVjRhxjeEDdBXoloD4IEO3bd4GNhxEwwDIl7hSE04JXBaADAIZjs9QZMvwFhXYgoUUw0EWEbQAFBwwV8OChljXE7QAFrkwS0gNHqIsgFkCSzlUDaK//5/+Z2aUBgcjciqiahCBLMGVBGGW45InOohgPsFFU2QBcjDhYlNkAT7NxMgN/ToZAJfI8RlnygRTAAAAAElFTkSuQmCC`,olive_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABdklEQVRIS2NkoDFgpLH5DKMWEAxhioMor0rvP8yWSW2XMMyjyAKQ4bpGInBfXD73hgHdErItgBn+9s1HuAVaGVcY/Bh+opiJ0wJkr4NMQHYZSE5KjhUj/Im2YCMDx//rM7TBBgiL8INpkPdhFuGy4Nmj38QFEbIFMGciW4TN9dgMB+nFGkS4XAizDGQYyBIQjQ0gByfeOMDmUpCBYIMZ/zJIyXKhmC8swgvmP77/laGp9CTYbAwL0CMXYsI/Bik5djDr2aM/DAwM8KQPFf8HNwoUlOIhR+CpCcWCvCrd/xCDYML/IZH8n4Xh8vnnYHGIrxgZYK4FRT5ED8hSkL5/DMipCcUCSOTqYgSrsLAQkgVsDFoZl8BqXq6xYbh87jXUgr8MDAzMcF9OajuPGUS4LIAEzU+oDxAWXJuhA44PkA+ePfwDjhf0PEMgiBCegVjwH+pahDZQnMBciy1FERnJiJyML4cTZQHWhE2BINmFHbF2jlpAMKQAvHOcGReApVIAAAAASUVORK5CYIIA`,olive_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABbklEQVRIS2NkoDFgRDZf20LqP4h/9cQzFHFK3AA3CGS4e4Aq2KydG27DLaHUUqwWwCwB0dgsJcVHGEGEbCCMje4rfBag+xgjrEEKqqN1GVqXXkZxPXrcYAs6bMGM1QIZJQ6wI5/c+wGmkfmgBAAyCJsYNh9jBBFMI8jgeEtVhoXHb8NDBGYhsqUwh4B8feYrxEHIiQQlktFdi42PHEcwx4AcAjIcZDB6UIItQA87mCJYOINct+fwc4aTj97A4wWkxoSbAyWusCUGDAtwJVFclsBcjSs5Y80HIJfBwhNmobmcCIOLrSTYJyAalMqQgwNXhsRaVMAMg4UrKOUkhen9BxkMAiDD0VMRrryBtcxBToagCAS5GgRgPgDFBXJqA6UuXOUX3nyAnARhLgRZNm/VJax5AZsvCGY0WPAg+wBkASz1oSdLdEtwBhG6RlgcwHyAK8yJsgCb5lELCAbpkA8icGMADRDVMCBKEcHww6MAAJp4MShPAj9kAAAAAElFTkSuQmCC`,olive_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6UlEQVRIS2NkoDFgpLH5DKMWEAzhgQ2i+BCL/wvXnMDrCJAaZG+gq8epGaSxLESfoWvNRQZslsAMBqmRMTFheHLmDNgedPVYLQBpntSRjFMTujzIYJglRFuA7DJkTTCfIRsKY+dVzMXwLYYPcLkOphlZHl/QwOIFqwXIrsfmdfSIBRmGKzHgtAA9geOKbEIZgWAQ4Yo8QgbjDCKQBHpEYos8qlhAafiDHIE3o8FcCYtAXEkUX/wQXRbBDIf5CjmJgti4gpFoC9DjBl/uRY4fkiyAWYIewfgKRJItIDb14E2mpBqCT/3Q9wEAeMK+GRpnxQAAAAAASUVORK5CYIIA`,onion_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAOxJREFUSInVVCsWgzAQnPCIqeUc2MqaCu5QhazkAlW9QGUlqndA1FRie45aTHhQ0/RBPpvl8ehnVFiWmZ0su8C3sVrL3nV2PbsQhRKaWgkO0Sy4XHBFgw7mYpLAsPqmVoLzDStJk+53WwDA+XIFV2DxKwpWEUfoAeB02IzixfEGAGg7moN8GUfoVZWTBcisJEW8VzQif9zthFdMVfnbJVvAIk9SixhJyhKZ1mQt5nLkgSXgrd50ArBc/NYk/4dA20HIrJxM5JsH2sHwj9HnUOMNeCeQnAUjRk3z4quCvexMId2nWcvOJaQRIv4YnrKKcGJDnEswAAAAAElFTkSuQmCC`,onion_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAExJREFUSIljYBgFo2AUjIJRgAm4zFj/c5mx/qeZ4a1LY/63Lo0h2hIWUgyvzg9nePv6DUmOYiJFMamGk2wBOYARixg1IhCbuaNguAIAavoTMVykVcgAAAAASUVORK5CYII=`,onion_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAl0lEQVRIS2NkoDFgpLH5DKMWEAxhkoJIwpT3/4vTn+F60PnYbCNoAbIhQ9MCkLdx+YIqQUQXC5AtgbmaGNeD9BGMZFjKQDd4aFqAnM6R8wO+3EZSEJXkhYPN6pm0EkwTYwlJFiREuoANFhEVBltCMwtAlixYvmfUAtS0AUr3sDigNIj+EyzkCSuAJx6iUxFhM7GrGPoWAABQhIsZroeW7AAAAABJRU5ErkJgggAA`,onion_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA70lEQVRIS2NkoDFgpLH5DIPDAglT3v8vTn8GOwYXG1dI4PQBMYbC1CCrRbdocFiAHDTYXE2WD3CFN1UtwOdyYiObYDJFdzGID7IYW6rClpIosgDdMoosIBTRJOcDZA3YggkURPhSD0w/wSBCdzlMI1UtgFlSkhcONr9n0kowDYtofAUmUT6AWZAQ6QI2S0RUGGwJzSwAWbJg+R6qWgBO+zgA3lAgFERggz+v9mNgElJk+PfuPgbNG7oJb4LBZ8H/r3vzMQyFmYZuGbfzRJAUhnnYLMAXHPgSDLIc3FxCQUSsgeRFEMWmYwszahiKbAYAYw7wGetnhO0AAAAASUVORK5CYIIA`,onion_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAQklEQVRIiWNgGAVIQEFB4f9AuwECiHXJ4HExtQBFPhpawTG0XEspGPy+RXfh4HcxTcEI9z4UUCUUhk5QDh2X0hIAAFsvEdRqfNUJAAAAAElFTkSuQmCC`,soybean_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAxklEQVRIie2VPQ6DMAyFX3+Wbp27IuVuHXsajsCdkHqHbkyVO4RExDiOQ9NOPAkJiPO+h2MJYNcfRfOV6NDKvOv9zfOe+h4bAbJqAYjpfwGg20Mv+AZAXQ9cHDCN7QFJWzTIFoDac67aMSU3AO+XvMhHFKj7gpj8dLVvsgLitIT0HCKlF19I5iH5NPoD5cqZWwCrA+UQzRzQW1SclpJ5bpEAwA3+QZqY2bhoLhUkqcNBLiGW1EudtUXBuMo8V7z6aWwx3mXWB53sOFv+9drCAAAAAElFTkSuQmCC`,soybean_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAApUlEQVRIie2TwQ2AIAxFq/HCCg7Afk7ifgzgChzxYBp+qq0VboZ3Eoz/t/2VaDDoZWr5aN2o4PnYdZ3ZI4aC/BzidQ7xbug2WDcqLIQiIRLlVE0s1NZkpTnVdyickz2ixXLnSp+q5ntLnMiRQYj3UWDVMiOJ6S7njgZ4Z3XjXlMMHOGxaVl8+g/YRAZuBf2agQYLdm2R18SiuQMvWgXq2nVoDv7KCeIgQHNazaXdAAAAAElFTkSuQmCC`,soybean_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAr0lEQVRIiWNgGAWkgt97Ov+fm5rxn1rmMaIbDmNfvnmfwSh7BiOmFtwOu3zzPgMDAwOKPiYqOBLuMF11RQw5FAtYXcoZL9+8zwBzCTUA0UGADyDHGSnBOjQASd7BlVLwAaJTEb6UQhULKAbE5OBzUzNIzuXwcIQFAak5mBCgeRDBLYDl4kEP0OOSqtkaW2lMUj4glIKwBTFRPiClnoA5AqaGhRgLSAFkJ3FyMhldAADK8WmxC7dL5gAAAABJRU5ErkJggg==`,sunflower_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABTUlEQVRIS7WVPQrCQBCFJzFdOlsVb2AnKIinEDyj4ClEULDzBqK2duliIhN4YXZ2N9kYTZM1bt43b342Ef35in6hX+Zp+T5nNFikFCWZodkbAPHhOqbXobAgTkBTRNKxFMdzDbEAbRFJQH6kkiPnazaN6XorqjVDkhVV2gYgJKJeDkIi0k3R5riXA8A6dVFTRC6h8ZxKBm22I9rvnvS4mGkP7iIXeLLMamEJYChABgB/8F2+0FR8QNgFO9BuaoAU1Zvaii/f1amyHGAD7gy7n1LiowA9j17H0QAAXMg6WDXQmwGSEDmtXxXZZ1l2EedeprJTF2kXLMS2XWBAXOmxjgoMjq/gPjHddXLaW9sUm13FRzGDAL6oZTfxGqnQgxVUA51jnVdfOwY50Pl3Fc0n1AnAwl2FMAvoNm+RpQus5VQ2CenvBH73/uj7hPH8Azk1pyhepQfHAAAAAElFTkSuQmCC`,sunflower_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAGlJREFUSInt0MEJwCAMBdBv19A13ERwRsFNXEPnsCchxKQg7aWQdwyJ3wQwxhjzVyFihoh5OiPVL6kxZY+UvTqkzUj9W0BvcLUMADgK0WwBVC0DvcHx334WwD2dYm3NOalIH6AbaHXzyg1mdiJmJYRz+AAAAABJRU5ErkJggg==`,sunflower_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAHFJREFUSIljYBgFo2AUjIKRDGRMGf5TwxwmXIaHhEuTZAkutVgtIBXgcxCGBciKiPEFzHBcAMUCdMVrVj5leHKagRGXAxgYGBienGZgXLPyKXEWwBTjchE5cYMRRIRchAvg0sOITRDZhchBhEt8FFAEAPyuLmpSKFsiAAAAAElFTkSuQmCC`,sunflower_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAKlJREFUSIntkdENwyAMRI+qW5A1sgkSMyKxCWvAHMmXI5ecSVH/Kt4XAdt3FwOLxeJP2XYc245jtofdv1hhiB4herPJ6mH1N4Fa4HJqADAlYnET0OTUUAvctyLM0FAAGMeX996QKcCGhOg/kkiNnEP0Q4OXAHPaD9fLl8E5NYxELgFZri7Wkfvly5u+Z7z1Ry1wGe0xNvvXjwn6JLNYPdSF3oN2at0vfuIEQtBnyE8BEcQAAAAASUVORK5CYII=`,sunflower_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAANFJREFUSIntUkEKwyAQHKW/0EM/4U8C+UYLeUY/EvAZOQT8hv6iYE+mG7ubWNqjA0Gi4+6Ms0BHR8cO1iH/u6amxYfRwDrk5/L+WkQ1861Dvj1MpuuRK44vOgCAGKD8nDCMZtsrrrgGHL/maulSKe7nhBigJBeUzwn6aEBRireGzwk6bADsw5fOa0H0XEtkThWdljIA9P05sGPKFbcOeVoNptXgescWbB2y2ICbCGpZCr8OucaF/sQA5ZFObZ9NFuugdvItpDusCpoDVSrtd/yEF231okoU8YDYAAAAAElFTkSuQmCC`,sunflower_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAPNJREFUSIntVDEOgzAMPBC/SIZ+IluXjt2R+EYr8Yx+BIm9YxcGJL4Bv0BKhyrEuE5CRUdOQkBy9p1jK8CBA3uRSYtzB+u+i7PM2covJPLruf6PiaT4OSVr4538HdrA3h7KagM7d/7ZEreZT0XcO1aVxOec1RGNA7K2mVBWalkrKxU8OonPuXkoyCVvmwnjEG4y5UuGvgQoXHIXkDpryVBUAPiUTF3RkXT73BDdT44pd3W5eq4Tj2ER4E55cm1g616h7hVOdyyN5U0OCkgTQZ2Hms+bzLG6KsYBWYspWXZqssQKeCW/IhQjuqB9oE5D6wd24Q0PlLoJNXPrzwAAAABJRU5ErkJggg==`,sunflower_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA40lEQVRIS81UwQkCQQzMVSFiURbhQxAswPPtWYAg3MMiLErEKpR5LOztTTYxsOh+j5vJZCbTSePXNcaX3xActut3qew83kPDzH4C+HDqJ/jPx0su15tESCYECRyA5dMIcrVsAKpgv9u4CHK1mkq6V48HTC1TGTLOC441/C9B7lMtYWEFicCKr2mylv0UBOs2zEPrj0PowFLOVQLkerlaSFMCTGHt2GrjqoJmBJ4IsmvHQKXpZhexFbHGBTjrIzWmUFFrUFQ6a91yreqhYcraDbDGZZ6FLhlAYQ+s2H37PazAS/QBL7jGGVi1//gAAAAASUVORK5CYIIA`,watermelon_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAW5JREFUSIntVbFuglAUPS81rTTwQpcmNowMGAddXDv1D/oVTv0WJ7/CP3By7SKDKQOjCUkXyYOITnTQ+/qA56MmDh08CQkh3HPuudzzAG7417h7uQeA0nSd3jkLpnv44D/iEO9KAOCTnpFAzBKqYYd4ZxawX5+QL7clAHjTvpawO7Dl/X6dy/vNxxdxsHy5bQpYIwfFKiv9xVgWiig1dk/ggSuF47dPWCOHFaus4aD0pv0K6fO7VyFSO1ah1vDAJTcMADoAYA0dFGEGEaXggdtKSKCuuwO74fr0HaWD0l+MG8SXjEgV3K9z6aJDL33PN62F9QYI1IiuISmgjqaOtlHpagWSqoBOXVdYdwPo3RMqDuo7rhM1NaLWUwAZ8JtcPukZR/UXiCiFmCWwhg4rwuzogCLOA7ex0wTdaHTbxgMXAgmKsBY0SrJ6RFy6psDxyDiXZCkCALpc1KHZ+wp5Q0AKHZN9ldPUiGv8D25oxQ++q8nB7rJdfQAAAABJRU5ErkJggg==`,watermelon_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAWNJREFUSIntkj9Lw0AYxp+T1jYxViPFYtFJFMSl3CBE3Lp0cHR0yGhAt34FwcGthawufgOHog5SLBWEIl0LBf+QgjS1rdUMVc7pwiVpqTg45Qc33MvzPs+9xwuEhISETISMKuqFJLI0hX2qMq4j0m1AI3J21J4cIDaVhzYzNIp8RsJ9s0+2NusejTwbQ6ljMQDYXVwh/bfPkSFT4iVLUygPbRaLR93aqlnB3YsDvZCEXkgiocooD21W6ljM0CgMjeLi9ZklVDkwVWAC5uyw0wcHZrXm1gyNwqzWkFtIEwDgxgCQz0gAAN6jOMvkqfWNbtEaH8Ab/PBQHggAneYSlLU5VzNo9BBRoqR98jg2AFeNdxxc15lY5y8WOT5veczFkG7Rcn0DW+T/x7g8jctey/0W8fUAAhMA8ARE/AH+TVjfjgN7Xo10M0MiHwN8bSiMmwqMXH0/7C9HzqmYP0z/xj/kH/kBY5CYjlZ/xP0AAAAASUVORK5CYII=`,watermelon_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAN9JREFUSIntVNsRgzAMU3odTKN4lIySUTwKm7gfJTkIsSHQz+qHOzvIL9nAH18YSajqwZFmWESkfUk2cgCVPG3sAIDXTIBSiomIqeow25FtBLfcNVtTVavVVBuArc0nrwRBNiMy8x6/PUcQIAFAKeVgG2E4A5JYlsX75zFauSICEbk8vFvBgnlEYmiIZOoOrvpyztGb0wBY9R4u4+32nfTf0771m/wEfXvaDm2NU6eiw9Qd22XiqeNq20JynEhTVS3nHAXZwW2Rpw6SIGndqag4tG32VKTqf4LT5fnjp/gAHB6L7zj2AgcAAAAASUVORK5CYII=`,wheat_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABIElEQVRIib1VuxGEIBBd6MAxsZwLDC3DMggtgzIMDSzHxLEDuQSY3XVB/Nxtgp/Hvo8gAImyRrvUuyul32hSRMAUOzZmHeXeRYJ+2JUHumWqAQDAj84a7fphV1fVEwJPAtbQ1KzR0A97TnGZW6TeWaPJGFyc4SXcgWSZajIpXAvwg5BAikEaq+k+FYzzRrqM8wbdp4oNcQQBj0ceUfxw1mgXANKkcd4Af2gJL+HwKorqE81J9qVucURwMgnCcg0rLRNRdHE3ImeNhkxEsffdiIrcEoKSSV7IpYh4JTcax53smYgX/6ZcUQ6TcysRqKZdyQN/z+2qpl3FiDhechBJEs1FJym3Tw6cIrdPT7RTt/87MlkpvBt/QfBK8zcreYp9ARnARYgSAH7PAAAAAElFTkSuQmCC`,wheat_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAf0lEQVRIiWNgGAWjABfYsIb1PzHqmMg1XEVZlihLiLLgynklolxLFrhyXun/hjWs/9EtoWkQUQUguxib65F9gM83WH1w5bzS/zt3H+O1JCDkNyPMcHwRTlQQ6RjeYyRGHUkA3cXIfHTXkhxE1ASjFhAE2FIHpcUC9VPcKBjcAAAkzD98KD5/RAAAAABJRU5ErkJggg==`,wheat_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAZElEQVRIiWNgGAWo4D+6ABM1Db8xA7slRLmEWEuIUjQjm+E/BZZQzSW0dcCNGQPnS9paOuDxR3WbkTMavoxCNYuxGj7g4UpzyweDD4choJqXsVU4/2dk47WEKpbjNHwgS9GBAQB1RDSsD2ft+gAAAABJRU5ErkJggg==`,tomato_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAPlJREFUSInlVbENgzAQPCJLVJ6ABtGlSpMJWIANskeKVBTZIxt4ASagSUUXpWECqkhIThHkfJwHbBAoUk5y43/u/t7mDfwdolRqn/zNkuTeAlMQuCT1VV4XjdP3Q9AduVlRKs0eifWirwINAFEqoe7NRyCLJQCY/SyWqAuT88XHnYEuE56cElOUyWuBcWML6C6RJaKgTnaHoxGyRaiAIR+DLX69nHtFJl/TIRGKVf8D5xaNYX97cy/uYPVRMbtNtD0A40CFYp6CBW5U6NNWIHu03mR29QB/BkFetV5OVChYcnaDQAPAkBsVCuSVibFcLvN87BWb/Sb8Np74sVisxYmO1AAAAABJRU5ErkJggg==`,tomato_growing1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAGZJREFUSIljYBgFo2AUjHAQWqHxP7RC4z/VDLEpEv1vUyT6nxTDGYm1hIGBgeH5r7cMDAwMDJJswgwMDAwMqztuENTPRIwF2AwixnCSAXIQEQuI8gElYOhbgC2iKEvXRKbMUTCMAAAvbR7j6+Sr/gAAAABJRU5ErkJggg==`,tomato_growing2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJFJREFUSIljYBgF5ILQCo3/oRUa/+lqiU2R6H+bIlEMSylyDLJmdAuIMZiRWEsYGBgYnv96y8DAwMAgySYMl1vdcQOvGURZALME2QJCBsMAE7EWEGsg2RaQaxlZFsAAMZFM0AJchsDEqBLJuFIRMUFFVBBhM4jcSMcLcOVkfICiSB4ZFmCLKEqLaOpH/igY3AAAKrlIKa6/Bn8AAAAASUVORK5CYII=`,tomato_growing3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA1UlEQVRIS2NkoDFgpLH5DIPLAs8Ctf8gH2+fcItoh6EojC0zARsAA4u7zqDI47MAl164ASAFyAbCNCCL4bIAXS/IgTAxsAXYFMDEQTTMEmwW4NILCwWCYYnsE3QLCBkOsoSgBcg+efPrE9hhImx8YBo9jrAleaIsgFmCbAExhhPtA5jLYEEE8gFFFmBLQSBL8KUiXEGGEUTIEYduEbZIRjYYW6QTjANcqQiXL9EjmqAFwzMVkV3YEaobKC5Nh40FKHUCIV9hkUdJmUQlUzIsgWsZ+hYAAF7KnRnkpkjpAAAAAElFTkSuQmCC`,tomato_growing4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABC0lEQVRIS2NkoDFgpLH5DPS3ILbM5D/IV4u7zmBY7lmgBpbbPuEWXofVLY373xS9CKwGrhAkeP/iNbjBIItAliArxmcBzGHojoNbADMQOU7QxdAtgFmOrg6ZD7YAm+HYNGPzATafgsyE6ScYychxgm4BNoehp0qCFsB8CKLf/PoE1i/Cxgem0eMIW5InaAFyUCFbgC2VkWUBsiZYEIF8gM0C5BQH04fVB7jyAq5kii/vYFiAHHEwjYr6WgygjINsASzfIKd7bJGOYgG6F9ENQbYAl6vRzSAYyYRSEaHCkigLYJagpyJskUpWPoBpIrawQ7aEaB+ANI1aAAs6cKVCAUAJdpLigBxLh74FACQg3hnrDTBLAAAAAElFTkSuQmCC`,tomato_growing5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABGElEQVRIS2NkoDFgpLH5DPS3ILbM5D/IV4u7zmBY7lmgBpbbPuEWXofVLY373xS9CKwGrhAkeP/iNbjBIItAliArxmcBzGHojoNbADMQOU7QxdAtgFmOrg6ZD7YAm+EPrwf+l9dcz4gsh80HMHmYepgDYZYTjGTkOEG3AJvD0FMlQQtgPgTRb359AusXYeMD0+hxhC3JE7QAOZyRLcCWysiyAFkTLIhAPsBmAXKKg+nD6gNceQFXMsWXdzAsQI44mEZFfS0GUMZBtgCUamrmP4bHBa7UiGIBuhfRDUG2AJer0c0gGMmEUhGhwpIoC2CWoKcibJFKVj6AaSK2sEO2hGgfgDSNWgALOnClQgFACXaS4oAcS4e+BQAsoN4Zr8Q2BQAAAABJRU5ErkJgggAA`,tomato_growing6_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABIElEQVRIS2NkoDFgpLH5DMPQgtgyk/+gYFvcdQbDd54FamC57RNu4fV53dK4/03Ri8Bq4ApBgvcvXoMbDLIIZAmyYnwWwByG7ji4BTADkSMdXQzdApjl6OqQ+WALsBn+IsDjv8SGHYzIcth8AJOHqYc5EGY5wVSEHCfoFmBzGHqyJ2gBzIcg+s2vT2D9Imx8YBo9jrDlKYIWIIczsgXYUhlZFiBrggURyAfYLEBOcTB9WH2AKy/gSqb48g6GBcgRB9OoqK/FAMo4yBY8vB74v2b+Y3hc4EqNKBagexGU9ErV3sANQbYAl6vRzSAYyYRSEaHSmCgLYJagpyJskUpWPoBpIrawQ7aEaB+ANI1aAAs6cKVCAUAJdpLigBxLaW4BAFsM3RnfTMpLAAAAAElFTkSuQmCC`,tomato_seed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAV0lEQVRIiWNgGAWUgorEwP+UyNPfkorEwP/4NFDFxQNiOCmOGBQOoVpwMFHDEKoCXGFMlI/JDRaaGk4RoKmPKLGELuUTVQDZlpCT3anmI1wGDZ1wH3kAAGHuPqjrva2eAAAAAElFTkSuQmCC`,fertilizer_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAArElEQVRIiWNgGOqAEYf4f2qZh82C/0EzfMgyfV3GFgwzWQgoJhrgchROCxgYGBim5JoSZXjO5NM45fBagAyyd6AaMtWDOMuJtoAUQ5EBEymKs3ecxvAJITC4fEAOINoCclzPwEAgiPAlP4otIDc3E20BAwPxuRmfYwimov9nHfDKMxofwCtPdDI9f/YrCt/QmJsofURbQKyBJFtAKAgosoAaKYnmOZnmVebQBwBEGSTr3HTDzQAAAABJRU5ErkJggg==`,rainbow_fertilizer_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA9UlEQVRIidWVOwrCQBCGv4gIor0n0CaVSHqxyhG8gJV6ABsbG7uAj8LK1iNYib0Ee8+hWK5FDMlCspn4wvywZHYnmW9m2CFQdFkp5+pT8ZIASnl2YA0aAExqTQDmLILzaQWA6uwCwJYWAP0gXFrSGkARVCFeO1RoayqbSKuxk5UMAKPlKdVnBMQ13EdB1q4MDFASv/kMvHYdDZYlcQUQVfFXFeQCvCIxIN6WPC1K0m/mQHl27klOkvEWWfXD0wqfG81/j9J5DQCg/K7Rb3WORr94Ds7+Tdu3OzXRd2KANGBuQFYL3gKoaw/IvkUmfX2Sv/7LLL4egFJcIh1wkL8AAAAASUVORK5CYII=`,mulch_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAWBJREFUSInNlaFvwkAUh78tk7UkU03aNHU0QUyMhIoqUgECi5ucmJiYwC2ZRPAH4LCITRBURZd0ArGk+IoqEmw9U9dQ6O5asib7qff6cr/v3t01DxrWlaR2+Auv3wAH7f6WScfD1DUWyxXdOxegkJu6RpJmvH0HZF+7Ur9r2Zb6Xjs363vtszxJM0xdk7Z1I60C45EPwDrYnuWmrmFbhnS9tIPedIZtGflOxfGI3LYMetPZ5QAB6XttbMvg4f2jcDwqc1SXXEcXXfKxHLeF47ZqQSsDHLdFHO6Jw31tiBIgzIVOISqg9JmempdByurHavySlT8aQBzt8tjp1gMrAXG0K5gKmPh2Wq8FKFt8bEyFjv7HjzbpeMyHg9JYJSVgPhwQbUKSNDuLq6hSB68vj7nxeOTnsWoWKAGfz08slivWwZbxyC8dOKpOpK9IGAMkaUaSbgsDJ9qEgCsFND70G9cPCX+r1Lc361oAAAAASUVORK5CYII=`,rainbow_mulch_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQFJREFUSIljYBjqgBGP3H9qmMWEy3AeSwmGD1NdGf5+SWOY86eaofT3Dwaz6m8MHAwXGGbJfWUo/f2DYc6faoa/X9IYeCwlcDoIlwVUAwNrgcySywQN4HfdhFceVyT/h4Yr0eDL8RdYzSM6iPTsRBn07ERJspRoC/TsRBkuHXrNcOnQa5ItIWgBzHAYQLeEkIUspBiOzRJs8siA5pGM1wcwcOnYCzhbz4o0iwlacOnYCxRDYZbBxNDlSbIAm2ZkgxmI8NHgyGgTDiczZB56wKDldI/hz/EdDH1P7zJkHnpAlMUELfi42w+vxRRZ8CRGl6AB+BxA0AJqAJpbQPM6meYAAHXOYpMBqH4dAAAAAElFTkSuQmCC`,wood_chips_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAdtJREFUSIntlSFPw0AYhh8IgYTM7BRqycYys0wgMJAgqhrsJib4A/sBm5yH6WUJGoEAS2qoIAGDmFgwC4xkqqo1CwkzRXR3XK9lKwgSEj61fum9z3fPtSv8158sIUQohAiz3Lv+k/B20+ZwdzsTaOM7wQCDToNKubjo3nGwf0Tv0gkBfN9fM9clGsumLhVyTKYzAPXbtmqMn1+ZTGf0Lh1M0EpFQohw0GkAUCkXsa0aABfXN5QKORx3BIBt1Wg3bQadBrq2LwHS7+15m8l0RqmQo3vax3FHlAo5ACbTGQ+Pd1TKRdVvnV2tViSECA93tzmpH6vJu6d9DvaPsK2aCpPgi+sbeRZY1S3cp3elKQGQSqTrh8foIM2pAU7qx1TKRcbPr7TOrrCqWwAxwIYZ3m7ascODKFzuItrVZ89xR2pyADbzgJdUJIQI5fZYPI76tFKPVCV3d//yFoVv5qOgeZCuSAJkmSDdOaAOU4XPg9jaVEX6FBImg/T3IKFEC1+pyASZO4pNrd+zuHaH3pIXTV80D6LrRU/CY0r08HmQCI8p8n1/zR0SWns7cYgOxktV4g49lYFRsTOQEIBUUAYlSwH6FKkgXaXxOGYGLAd5K5WYlenvGu17kDX41+oDGp4mCPU5SPMAAAAASUVORK5CYII=`,scarecrow_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA4UlEQVRIieWUvQ3CMBCF3yHEIEhsEadKQUHLEkgpvECWyBi0FBRUeIV0bEJjChzkOP45WyBF4kmWT9a9+86OY2Bh0mawRTnFn9d3sNnzvVzAp/goLmTFBBQr1EHWOcfqhXZA1oC+HDHOduzL5QK+JjbA6ngSp8S+RW5ROpxZ/qz/oMTLPSJd9wqDBAYJ1L3yAYsBepDzRbOWhKQAnC6jOeuAgez5tFW47QQaKACwYgE3F8638e3Am9g8lDeOeUIAuxsAoHsrZklmjQKeCZmromuapa6C7qq8h3A5b9H/An6uF4WMRHW3ug60AAAAAElFTkSuQmCC`,sprinkler_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlklEQVRIie1VQQqAMAzLxO/5AP+y4/7iA3zgPDikbG1XrYKIAWFsWRLSgcCPNyOXz8UL0qWUEgAgxujiDb14RYBLeIhrkJI1AlVC7cxsIAnBKm4xaEwoeuKAYQZenKqIg6eipv913tfTYp+DVBE7XAq6pzzl/gyUdIEzbkjKWa44mVZE9zWt8aK5mff4M/0Nbof1J/QhbIFgQxZVKNMbAAAAAElFTkSuQmCC`,lightning_rod_basic_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAIdJREFUSIntlUEOwCAIBNd+Ex+CL6i/ppfSaKOi1UMP7pHAzoYYAX4i+Tp49Jh7ohpELHgNYCUWABKYEZh7+vPhwCyvdOKJJDEu9RTlGhAAwBnjUyzUavMmAJpMTVW3uWk8omw1o/vueUVuJnEPYEobsAEbsAELAXo20TifRY38kqnp0nswpQtltzTIu+xVhgAAAABJRU5ErkJggg==`,lightning_rod_superior_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAIZJREFUSIntlTEOwCAMA03/x+MYeIkfmC6lolUgoTB0wGOU+KwIEeAnkq+Dh8c8p9SCiAVvAazEAkBIgqSn/zlMUl7pJKcklbHWoyp0IACAGONdVGqteROAkqyYFl3mpvGIHqsZ3bfnFYWZxB7AlDZgAzZgAxYCytlE53yqGvkla9Ol92BKJ/RIO3xwMn1QAAAAAElFTkSuQmCC`,lightning_rod_ultimate_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAItJREFUSIntlbENwCAMBE3GQkLZly1oMgW7fApEAglgEyhS8KXl/7MshIl+Inw1bpJwb00NAg5eA3ATg4gApwlOS/pzM5zGYzp4a5AEl3qKUg1IaNiPu/iu1fwsgOJkMfQyhHA2uEfZanr3LXlFamRiCWBIC7AAC7AAEwHxbFLjfBbV80umoVPvwZBOeOk68oFQoKYAAAAASUVORK5CYII=`,cow_feed_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABaUlEQVRIie1VO46DMBAdom18idRQEMk3oKfbK1ClQZyFxhXHoPcNkOKCPpdw6S3Qc8aOnZBNmpV2GpBt3m8YIPqvT9U6Sfeb5w57gM/fpSMiUkPpXiV6SqCNpb4VRETU1CIgfptgnaRrakHjbImI/FUNm6M9JFmCdZJOGxuswQlKG/uUJEmwTtKNs/WR9O3NhTbbOt+Ho90EyH2cLcEF1F+uNzcg5b2Jq8g5SJFyIO6kbwVV3ZLEunOA7Hn+2livHHsgOx3zou4IkGVTCw+ArHlETS28AP6WpUi+uHK+Mc6WTsctayjOzQRcgIhXwcEBmmsaokKDc2d5PzxB3EQA8BjiOYjJ4RI4VbcUBw6ujfU2+1YEvQA4sscV5y9XCmbDO1BD6WA7pQjKeTzxmUf3QQ/imF5Z4875Od8M/hal1OaaytdTLoLpU0PpUtOaUl91S/HoQ5ebbO8kfnidpMMPJ/dxU0OZ3fu79QOnNyLrGvOANgAAAABJRU5ErkJggg==`,hugging_machine_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAgUlEQVRYhe2W0QrAIAhFbexT/Sz/tb2skKYPw+kGuwd6CemeJEgiAP5Oc/Z7VZ4l0Jk5JV1ELpmrwAw/ix9jOXfmblaxLlLdaJE970KmQCUQgAAEIAABCLz+HWuBzswkIpQ5kIyMkb17hVWYb8AYLqLL7eqnHqE1CXtT810yzwYxDkKWK8nSGBQGAAAAAElFTkSuQmCC`,milk_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAlElEQVRIie2UwRGAMAgEL45F2IIV0IB2bQNUoCXYBf70YYBkIuND+cLckoMABEcqqJEWDQ8gzGwWEJGp0zmA5gi3qC/pQiTPSMnv71WLBNC7PwWuV2S1NIB4wgrophdukTrkeQsGAMAylmwxMK26ne6aCg9mPtFu5sNn8AM+AHDX1FvDJoD1gUoj/Ni557qGUVn/TByjTiCJ3SiEogAAAABJRU5ErkJggg==`,milk_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAt0lEQVRIicWUwREDIQhFv5ktwhZSAQ0kHVimJaQBKkhKsAty2s0hKrCGyT8q8x8CAgQrGWJkxUMDCDNPA4ho6nNRAMsKL9FmyUKkz0hJz++vJRJgnP1h8HlF12sEEM14APryCy/RsMn3VzAAAB5XyxQDt+e4nOqYCufpfaI2vQ/vgQtQqaEqGZ8GVGoonFE4uyAmwG6+ywMxAUqn0b2z04AVqWOqjeESYPaBrApfduq69jCc8b/RG+oJMonZquS9AAAAAElFTkSuQmCC`,milk_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAwUlEQVRIicWUwRECMQhFfxwryCktWAENaNc2QAVaQk5pAS9GHU0CbDYjp50J8x98WIDFEQw5MqOhAYSZhwlENNQ5KIDpWG7R0VKFSJsRgl7fXy0SoF/9S+DdRVOrBxBNuAP60VtuUXfIl/tiAABcT5YtBs63vp3qmgqn4XugPHx3zaBQRlEENwMKZUROiJxcEBOgitcOPBDTqaiC8TmPz28tXB18A3cDtKq1dqBapK3hFGD0A1lj+bFTz7WH4czfJx6xwUOYVCI2qwAAAABJRU5ErkJggg==`,rainbow_milk_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3UlEQVRIie2UQQrCMBBFX0WE4gH0AtKFB8i+p/AC0ivUhW7cuBM8hVfJEfQEHqBQXI2LgCg2k5ZYCuKHbDKT/yeTn4GekbTIkRiOkIBYa9UEY4zKMwoIRKP3FrW6gVQ5pRSUUoDc3dqGdDsIxEATEECkyv0Z7haC0saxj1yOy3B5QMoFgJpMaHiPwVwk56B53rFyVB98vha9HgpCK0YVABA7V+OJuanxQW36F/gRgaBNQzaMEuj6m5vgHRXPYbeeAbCZLgA4cHL7uwkA6f4KQE3WyKfNgq7lt5sr38YDiBMyusgc/RoAAAAASUVORK5CYII=`,rainbow_milk_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABAElEQVRIicWUsY0CMRBFHwidhCiAbeBEQAHOqWEDGjhtC1zAJZeQIVEFwTbiEqCCLQAJXTQEq0WH8M7YGMSXnNiz/43HswMv1iAiRnI8LIB479UA55zqMzQA2Xp5iaJuIKcFK6lYSQXy1661xU0A5EgDCCByWvRHtLcQlDKO+sxlO7fTA8YcADgzEwLv8bYukr3ZPLdatlZ3fn0l+v+RKS0ZFQAgvlDPB65Rz9/apneqXUNtZPwwoHYNpS8ofZEEiQJ05p1SIFGAMvDQob2HATky29RqwyxA6t8cUu+ouA67rykA35NPADbs2v2fDwDGv0cAzsyCftosSE0/bq48WxfOzkS6fPRuuQAAAABJRU5ErkJggg==`,rainbow_milk_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAABB0lEQVRIicWUOwrCQBCGP0UEsUtjLiAWHmB7T+EFxCtooY2NneApvMoeQU+QKpUgVmMRFR/JzK5R/CEQdjf/N4/NwI/VCDgjdTwsgHjv1QPOOdWnaQBq6+clCspAjiNmMmUmU5Bz8SwsbgSgjjSAACLHUfWJIgtBKWOrylw2Qzs8oMMegBMDoaQff7tFsjMvz7PGhdWbX1WJHj8ypQWjAgDEp+p+w2XqflQPcpeRG4YfA3KXkfiUxKdRkCDAzfyWQQzE7AFwN0yu/Xh8txSVwSvwa4CyaEMzMEtkXcNagNi/uUyVo+I+7CY9AObdPgBrtsX6sg1AZ3UA4MSg1E+bBbHhh82Vb+sCloZVyeeaHwgAAAAASUVORK5CYII=`,chocolate_milk_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAo0lEQVRIiWNgoDFgJELNf0rMIGTB/5MnT+JVYG5ujtccJgIWUAxoHkQsxLhiS7wGVnGfhTcI6h3QIPrPwIDb9TCA5AusZuGy4D8hg3FYhGEezYMIZyRP/XGdRKOwBwbeVLR9JTGpmIHBMxx3SiaYTP+flMArz2j+Aq88zeNg1IIRYAHBZEooGVJkAb4MRLEF2RyaJBm0HYc4weKaBEBcuUJtAAAZkx6s4XKlkgAAAABJRU5ErkJggg==`,weed_yellow_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJVJREFUSIljYBgFAw0YiVX44aHBfxhbQP4C0fqYSHHNyTM/SFFOugXmJhwkW4ABPjw0+A/D6HLSSboYYoQAVh9gCwpshuNzDF4LsAXF03mX4RErnaT7H2YhOfECB+iuRjaYgYE4H5BkCTlxQJIl6D6guiU0MxzZElL1EMxouAylqm+Q44BUw4kutJANRc4To2AU0B4AAKGOTyVh8wmJAAAAAElFTkSuQmCC`,weed_orange_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAKRJREFUSIljYBgFAw0YiVX4YZ3BfxhbIOgC0fqYSHHNyf8/SFFOugXmjBwkW0ASkE7S/U9YFSpgocRwYuIFpwXomp/Ou8wIswTZspP/f+ANOrxxgC1SpZN0/z+dd5nx6bzLjAwMhOMFbxDBNMMMZWBgYIDRDAykJVe8ADloyIlooi2hmeHIlpCqh2BGw2UoVX2DnjxJMZzoVIBsKHJKGgWjgPYAAKhMQnagnSlUAAAAAElFTkSuQmCC`,weed_pink_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAJNJREFUSIljYBgFAw0YiVV4w+DDfxhb44IA0fqYSHHNw1oLUpQzMDDQwQdYDYJhdDnpJF0MMUIAaxBhCwpshuNzDF4L5JtPYIg9nXcZa7CQEy9wgO5qZL50ku5/YnxAkiUwNjlxQZQl0km6/6luOLIlNDMc2RJS9RDMybgMpapv0COXFMOJzvLIhuLKE6NgFNAGAACdX07JsB31AgAAAABJRU5ErkJggg==`,inventory_box_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAZElEQVRIiWNgGAUEACMeuf/UMAuXBf8v9/GTZLpu0Ues5mGzgGTD8VmCbgHZhuOyBNkCig3HZgnMAlIjlFjAyAJj/TsUQlWTmezWQGiqmorNolELRi0YtWAYWEDzwo5G5tIRAAC2nxYih/81pwAAAABJRU5ErkJggg==`,scarecrow_animated_default=``+new URL(`scarecrow-animated-Bwzq1lj5.gif`,import.meta.url).href,tumbleweed_default=``+new URL(`tumbleweed-bTBlbTRd.gif`,import.meta.url).href,axe_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMhJREFUSIljZCATKCsp/Iex7957wIhLHU4JQgY3NDYzXLt6lYGBgYFh1aoVOC1hIdVwmMEwwwkBon2AbDg2gMsXTMRaQAiEhUWgxAvJFty994Cxob6WGKUolpDkg7v3HjCuWrWCYdWqFQy3r1/HJs8wL0sdxRKSIpkBNUn+P3/5IoOhrj6DqqYmQ3tHB8O8LHWGV6/fkmokfgAN9//zstT/d4SK/GdgYPiPLS4oARiGU9MCFMOpZeio4aOGjxo+ajgtDYdbQk3DAf7opSv4aVYzAAAAAElFTkSuQmCC`,axe_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMBJREFUSIljZCATKCsp/Iex7957wIhLHQu5Bl+u02b49O4VAwMDA4P1FIb/uCwhyQJlJYX/MINhhhMCOL2Gz3BswHrKa6xBxUSsBYTA0RxRlHgh2YK79x4w6jZdJUYpiiUk+eDuvQeM1lNeM1hPec1w5M4nbPIM87LUMSwhCygrKfxXVlL4vyZL/f+LPtP/DAwM/+dlqf/vCBX5TxULkC1CNxxbXFACMAynpgW0CZZRw0cNHzV81HAaGg63hJqGAwAUOabJn4ZdhgAAAABJRU5ErkJggg==`,axe_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALlJREFUSIljZCATKCsp/Iex7957wIhLHU4JQgY3NDYzfPjwgYGBgYFhQn8vTktYSDUcZjDMcEKAaB8gG44N4PIFE7EWEAIFhcUo8UKyBXfvPWBsqK8lRimKJWRHsqGuPoO9iwuKXG5uLsO8LHWGpGk34WaTFMkMqEny//nLF+EWwQx/9fotqUbiB1Af/Z+Xpf6/I1TkPwMDw39scUEJwDCcmhagGE4tQ0cNHzV81PBRw2lpONwSahoOALJMnzT9kEEcAAAAAElFTkSuQmCC`,axe_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALlJREFUSIljZCATKCsp/Iex7957wIhLHU4JQgYvn7+Q4eWnTwwMDAwMBfm5OC1hIdVwmMEwwwkBon2AbDg2gMsXTMRaQAhMmDgZJV5ItuDuvQeMkYnxxChFsYQkH9y994CxID+XoSA/l+HWtWvY5BnmZaljWEIWUFZS+K+spPC/t7Pz/+bNm/8zMDD8n5el/r8jVOQ/VSxAtgjdcGxxQQnAMJyaFtAmWEYNHzV81PBRw2loONwSahoOADMdpw7laSIwAAAAAElFTkSuQmCC`,axe_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMJJREFUSIljZCATKCsp/Iex7957wIhLHQu5Bt9YF8LA8vEYAwMDA4NKIsN/XJaQZIGyksJ/uMFQwwkBnF7DazgWoJL4DGtQMRFrASFwZ74USryQbMHdew8YNYLWEKMUxRKSfHD33gNGlcRnDCqJzxhuXMIMqrv3HjDMy1LHsIQsoKyk8F9ZSeH/9ckM//8ftPrPwMDwf16W+v+OUJH/VLEA2SJ0w7HFBSUAw3BqWkCbYBk1fNTwUcNHDaeh4XBLqGk4AGtcorcNDPQ+AAAAAElFTkSuQmCC`,hoe_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAuklEQVRIic2UwQ3DIAxFPx2ALNSJOPRMJmjOnal7pReIHGMIGFfKl5CsyP/9YBDAjbWnxeuTHhNwl+s1RoQQ8vfpAArHGiMAYPFebB4NKP6cStqFdkSiFu+LkJkA9942MYRqNMChcluo0uj2bNCoeRZpZw5Q3qLv6wgB2Kgo/FQMwvH8FP4jkBpGAlrwqnoDVPDeRjW8p3kKfmWYhrdMJvCa0QwumU3hHGAOp5C/wAH2FlnDuS6f4VvqB7TESLgVFsd2AAAAAElFTkSuQmCC`,hoe_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAxUlEQVRIic2Uuw3DMAxETxnAdQYwkAncaaIUKTKIi8yRMdJlEW/hNJJBUx9LJAP4AAGEwXtnUYKAE2sNi9c7XRRwF+tlnvC+3+J3dQCFY5knAIAfh2xzb0Dy51S5XUhHlJUfhyREE+Cuz282hKo3wKFwW6jC6NZokKh6FmFnDhDeos9jCwHYqCh8V3TC4V+Jfwukhp6AGryo1gARvLVRDG9pVsGPDGp4zWQCLxnN4DmzKZwDzOEU8hc4wN4iazjX4TN8Sv0AN2RJwOjZLUAAAAAASUVORK5CYII=`,hoe_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAtUlEQVRIic2Uyw3EIAxEhy3DtaQl9k4bcUvpK3uByDGfgGGljIRkRZ43wSCAF+uMS9c3fSbgLtXMjBBC+j4dIOFgZgAAERWbRwOyP5cq7cI6oqKIKAuZCXDe+2KI1GiAQ+W2SMXRnclgUfMs4s4cYLxFx/cKAdSoJPxWDMKx7Zn/CpSGkYAWvKreABO8t9EM72megj8ZpuEt0xJ4zbgMXjIvhWvAcriE/AUOqLdoNVzr8Rl+pX42rEn4TvbkRQAAAABJRU5ErkJggg==`,hoe_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAt0lEQVRIic2U/QnEIAzFnzdIJukKrnLDFJwkK3Sv3j9aUr+qMQd9IISS93s1isCLdcaV1zd9FuAu1cyMEEL6vhwg4WBmAAARVZtnA4o/l6rtQjuiqoioCFkJcN77aojUbIBD47ZIxdGdyaBR9yzizhygvEXH9woBslFJ+K2YhGPbC/8VKA0zAT14U6MBKvhooxo+0rwEfzIsw3smE3jLaAavmU3hOcAcLiF/gQPZW2QNz/X4DL9SP/ScS3hB0In3AAAAAElFTkSuQmCC`,hoe_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAvUlEQVRIic2UUQrDIBBE35Ycpl89QCnkRj1Me6JCyRV6HPvRROKqia4WMiCIum+cTRAOLDcPPQ90aoDLMnevK5+nXw8kesEC97Bxipi1CbJwIJnC2qKkzpe4VbUtWieARAoIW1WbQMj8LcEtfqbOuxi0+S1aEgC4992bAMgMjOAAgxGuJTJO3jDYsMBvj/LaUgMTvPSgGV5yuAm+V9AM3yrqAs8VdoOnirvCNaA7fA35CxzUW9QbrrX7DB9SX0XaUBQX3euqAAAAAElFTkSuQmCC`,scythe_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAxElEQVRIS+2V2w3DIAxFnb06S9QF6DBlgSqz9C/qTES2SoQcbjCPfFQq3+QcfGU7E118pov59BdwwoEIJ9EbUbjPM72WhUVZVo8geO+lRz7rCiWtgvB+EN2eRCVJi0DgfFjAJ0qcc4eoagUaHr+XuHJR1QgQXDoJVWEVnMHjMhCJjskisMBhFSWBFQ6rOBPUwvcq0piQoAW+V5FOdU7QAz9sfy0YCtdTNxyeFXzHv9Rd5h9hCuK9DteumaguDnspesDvCzbc3VkZpaP6uQAAAABJRU5ErkJgggAA`,scythe_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DKMWMBhriPw/e+MNzpCgKIhAhrd6ijNUb3/JgMsSsi0AGb41TRGcRi48/obTEnIt+H8kj4Ehf5cIAyFLyLEAbDgI2ExiAMUB3BLvWfcxgopUC1AMZ2CAJHNYcGELKlIswGo4sgUgNroviLUAp+GwkgDmC3IsIGg4Pl8Q8gFRhuPzBT4LSDIc2RfIwYTLApINR/YFcq7GZgHZhmMr+tEtoKrhIAuRLaC64VgtAGV/NIspqvRQfAA1iVDSJclCqhpGTCST5DpiFNPcBwAgan0Z4Vp7jQAAAABJRU5ErkJgggAA`,scythe_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2klEQVRIS2NkoDFgpLH5DKMWMORlRP2fNGMZzpCgKIhAhqsqyzHcvvuIAZclZFsAMtzY1AqcRj69e4LTEnIt+H8kj4Fh1a8oBkKWkGMB2HAQsJnEAIoDuCVnTx/DCCpSLUAxnIEBksxhwYUtqEixAKvhyBaA2Oi+INYCnIbDSgKYL8ixgKDh+HxByAdEGY7PF/gsIMlwZF8gBxMuC0g2HNkXyLkamwVkG46t6Ee3gKqGgyxEtoDqhmO1AJT90SymqNJD8QHUJEJJlyQLqWoYMZFMkuuIUUxzHwAAb2p9GTK1pfkAAAAASUVORK5CYIIA`,scythe_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAz0lEQVRIS+2VuxHDIBBEV305oAyqcKQyiDwugjIIHFKJm5DnZOM5YX6HIDORAs172uVACyavZTIffwG01pu1NtvEqYoIrpSCcw45SbeA4Ou67jPivc9KegXb4wrcnxo1SY9gh9O63EB78JUYY36qkgoOcOA95qGuVFUSQRLOBfQcp2gVZOHhJggpegRVeClFLUETvJSiJBDBeQpeU04ghvMU/FSnBN3w1NUfC4bCScgFw+FJAR3/SHzqp3dI8CHVRlckHApr2WTR17W8PD3BC4S6fRnQ192VAAAAAElFTkSuQmCC`,scythe_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA2UlEQVRIS2NkoDFgpLH5DKMWMDQW2/2v7z2EMyQoCiKQ4YZa/Aznr31kwGUJ2RaADC9MVAGnkQMnX+O0hFwL/h/JY2DYy2rHQMgSciwAGw4CNpMYQHEAt6R//h2MoCLVAhTDGRggyRwWXNiCihQLsBqObAGIje4LYi3AaTisJID5ghwLCBqOzxeEfECU4fh8gc8CkgxH9gVyMOGygGTDkX2BnKuxWUC24diKfnQLqGo4yEJkC6huOFYLQNkfzWKKKj0UH0BNIpR0SbKQqoYRE8kkuY4YxTT3AQBP8HwZfM9pkQAAAABJRU5ErkJgggAA`,shovel_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAALJJREFUSInV1cENgzAMBdDfqovQOToT5zBBOXeL7MEcMIp7akWM3Vi2OdRHK37fKAKAk+uS5JDmRgMIAKZSmuZznr/2LYJzeN023Ieh6V0zcak8ASrOt/cGmHHAf8k0lSLi+wsGAk/Q2zwSQMsI1FoPON/eE0DLeABVXGxY8Mermf28xaJlDdDwblkOunHL4RDeGwjjv4ZScG0wDZeGU3EOpON75BQcYJ+KbJwX/3H/R70B5PVOSsiwgM8AAAAASUVORK5CYII=`,shovel_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA6klEQVRIS7WVoQ7CMBCGbxa9BIXAVZLsIQjhPfBYPBrPexDCQ5Ag5xDYaWzJLbnmVjp69G7Vzfe1/+3vKph4VRb8xtWec+5tF7gqAYEvu+XgnNvzE0hSLEB4DH683rBazEAtGIPjNdSCHBwlqhvEAoyFTk6DUAkQQpIcHPeWDtk3robjZt5nzhc/fanA3/auZx6uHfAvKYaXCAJ8fWoxqiBIwf8VDOAUL5WNt5dHJp1BEi55ZiSCYrgkIhU8J1DDfwlM4GMCM3hKYAqPBeZwLpgE/iXA+isewGTveNHwxy0pnqTAYY85MLZ/AKAsiRkhT8wtAAAAAElFTkSuQmCC`,shovel_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA7UlEQVRIS2NkoDFgpIb5eRlR/5HNmTRjGdxciiyAGWxsaoXizrOnjzHALCHbApDh6AZ/eveEgU9IhoFiC3AZDvIGxRYQMhxkCUU+QLcAFCwwl8MigiILQIbALCFkOEgtuZH8Py8jikFVWQ4c5sgA2fXkWvB/Z6EG2Myt340YkFMSuuHkWAA33L3/Biio4BZgM5xUC1AMhwUvLLMh517kICM2DrAaTkwxQ4wFZBtOTBBRZDghCyg2HJ8FVDEclwVUMxybBVQ1HN0CqhuObAFNDMewAJT9KSgAseY75IwGqriJyXjEZGC4GqobiG47AJ1ZiBlTJ5acAAAAAElFTkSuQmCC`,shovel_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4ElEQVRIS7WVwQ3DIAxFnW167IEBuHUF1qjEGEgdoVdW6A4M0A06BpUjGTmUFIIdzug9+M4nC5y8Fg2+cy5zToyxcEUCAnvvN+cMIQBJpgUIr8EpJTDGgFiwB8driAU9OEpEN6gFGAudnAYhEiCEJD047p0dcnbOgbV2zZwvfvpZQX7dLyvz+bkC/5Jq+IygwG+PN0ZVBC34UcEGTvFS2Xh7eWSjM2jCR56ZEcE0fCQiEbwnEMP/CVTgewI1eEugCq8F6nAuOAX+I8D6Cx7AZu940fDHPVK8kQKXPerA2v4F7oGIGVytZc4AAAAASUVORK5CYIIA`,shovel_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA7ElEQVRIS7WVsQ3CMBBFLyxABRNQIDoquoiOORghygAoA6CMwBx0iAo2oGADhnB0kc66GAcfvotr6z37X75TwMSrsOA3dek453S+e65KQODquBqcs728gSTZAoSH4NvzA/vdAtSCMTheQy1IwVGiukEowFjo5DQIlQAhJEnBcW/ukF1Tl7DdzPvM+eKnzxW4a7XumY/ZEviXFMJzBB5+aF8YlRfE4P8KBnCKl8rG28sjk84gCpc8MxJBNlwSkQqeEqjhvwQm8DGBGTwmMIWHAnM4F0wC/xJg/RUPYLR3vGj445YUT1Jgv8ccGNo7Yi6HGb8waRoAAAAASUVORK5CYIIA`,picker_pole_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMNJREFUSInt07ENwjAQBdAfhNJdmwVc0KbKAl6EiiL70LigzRRZ4FfeJQMcDY4CmCDsuIjEl2I5zTvd2QZ2EH180RxycZIgid6YaJFjLg4A3lq0GdAnXEmqE1GSCgBO5K2LrBF5a9GOIwJ+mabKiehyXCkFlOQTHvahk/MwIBx8Ugcx/HWf0wF806ziXdcBQDUvCVEn8hVPjd76kwLQ3pjlLVp9cD/j4X8rOIZvmrL4ta53iu935v8DjeIlxzIXKYkXyx3NFIrQtrXu7gAAAABJRU5ErkJggg==`,picker_pole_bronze_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMVJREFUSInt07ENgzAQBdBPFNFdywJegCYs4EVSpWCYdGm8AFOwwK8YIz0DXJoYEeIQxcYFUr6EZZp3urMN7CD6/II5pOIkQRKtMcEix1QcAAZrUSdAn3AlqU5ESSoAOJG3LpJGNFiLuu/h8cs4Fk5E5+OKKaAkX3C/952cuw7+4KM6COHLfUoHGKpqFW+aBgCKaYmIOpGveGz0fj0pAG2Nmd+i1Qf3M+7/t4JD+KbJi9/Kcqf4fmf+P9AgnnMsU5GceLY8ANzvjrB3K5O7AAAAAElFTkSuQmCC`,picker_pole_iron_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMJJREFUSInt07ENgzAQBdBPFNFdywJegIoFvEiqFKyD0ngBpmCBX7ELA1yaGJHEIYqNC0v5EpZp3unONlBA9PEFc0rFSYIkemOCRc6pOADM1qJNgD7hSlKdiJJUAHAib10kjWi2Fu00wePXZamciG7HFVNAST7hfu87uYwj/MFHdRDCX/cpHWBuml286zoAqNYlIupEvuKx0WEYFID2xmxv0e6D+xn3/0fBIfzQ5MVvdV0oXu7M/wcaxHOOZS2SE8+WO1CxjyD9waCMAAAAAElFTkSuQmCC`,picker_pole_silver_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMNJREFUSInt07ENgzAQBdBPFNFdywJegIoFvEiqFOyTxgswADUL/IpdGODSxIgkDlFsXFjKl7BM8053toECoo8vmFMqThIk0RsTLHJOxQFgthZtAvQJV5LqRJSkAoATeesiaUSztWinCR6/LkvlRHQ7rpgCSvIJ93vfyWUY4A8+qoMQ/rpP6QBz0+ziXdcBQLUuEVEn8hWPjY7jqAC0N2Z7i3Yf3M+4/z8KDuGHJi9+q+tC8XJn/j/QIJ5zLGuRnHi23AFsB5Igc4ovIAAAAABJRU5ErkJggg==`,picker_pole_gold_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAMNJREFUSInt07ENwjAQBdAfhNJdmwW8QCoXtF6EiiL70HiBTJGC9lfZJQMcDY4CmCDsuIjEl2I5zTvd2QZ2EH180RxycZIgic6YaJFjLg4Ao3NoM6BPuJJUL6IkFQC8yFsXWSManUM7DAj4ZZoqL6LLcaUUUJJPeNiHTs59j3DwSR3E8Nd9TgcYm2YVt9YCQDUvCVEv8hVPjertpAC0M2Z5i1Yf3M94+N8KjuGbpix+reud4vud+f9Ao3jJscxFSuLFcgcutJEoVhTynQAAAABJRU5ErkJggg==`,watering_can_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA0klEQVRIie1UwRGEMAgkV8JVYAOWRjWUZgNWYAvxYzJkDwg697vbGWeMJLuyQIj+mKAEsZrc90igikhfMPNjkVdEfhHTta7G3inwr5C8WILOWROYQQGSASLSH0pmZFnUyQhqYcVnAqkiNxzLSu99G77NGiBsUy1yLGt/vyPiWoTQpFqMKLbLEzAtikQ8hHNgoYmgTVmBkBxFGpjZtSldAw+KXIt0IavyqSwaOcG0Y+zWHDjkH2d0zLMovDKivsfY7MJyU/f2YyxzI5qpfxtDZ/wWThNOcCnuawEeAAAAAElFTkSuQmCC`,applewood_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAP9JREFUSIntkzEOgkAQRT+JV1ALiYnG2FsQ72BCZesNPIAdhR0H4CQk3oFQ0BMiicECOAQWZCfLLCAghQW/2iW778+fYYFJk36VNgbENPRC3rt+QtzZGND5cgEA2K5X4lMhTHol4FAJWNHz9UaeZnD9ROuUQIDboAIMlEnyNAPQ0iK52qNxaITJqjMnAz4oDuXALknIwDT04n67Vg5ZtkPD+wbk0MYWhVEMANjvNq3QtvZ4fkADBgBNVB9GMYHF2rIdahWvUJbnB7SW34CSQIaLNPKf0RWqGHBoXfQ+0IpBefBRXM4npUUc3BWqJABQScDhQ8BCdJG/A2BYxZP+Tx/oyoY1054VqwAAAABJRU5ErkJggg==`,coal_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAThJREFUSIntlK9zg0AQhb/WrEecw8cwCE4wmHj+zriaKDyGqSAiLh53vuJiiOjsFQYSYCJqeIqf39t9t3ew67/18ca//RrWVoMAPRwOOOcwxiAiXK/XWd4Wgz6KIowxWGtp2xYRoes6AOI4njVZa9CnaYr3PjxwzgWw9x7n3KzJ59rKFSIiIRqFiwjGmFEBaw36NE0xxuCcoyxLvPfhPkkSRIQ8y0ZdDbUUUchdAXp9LAq+LxfyLKNumvDudruNuK86CNVrLHEccywKRIS6acizjJ/7PcCttZs66IejeCwK6qYBCLF8nc/A30IDkw5eGkRRRFmWYSSTJKGqqvDBEGyt5XQ6TZiLHcB08XQddD88y3/JYGSiMPiNSMdWs5+rfo0BDI4H3Ww6shrds2NircGs2ZucXbs26AE1fqYGir1jrgAAAABJRU5ErkJggg==`,stone_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA8ElEQVRIidWVwRnDIAhGSb9ukyUYwxFcIqcs4Tgu4Tz2In6EIGjaS/+zvgeGKMC/Z1tcX1cZnuACTCndFsQYTdZIUEdAnpwzIKIp0gR1BgwAHc7TRJ371uC8slmw5JCEd3CpXMJGUlnAvu9wHEdnUwe3Y+HgmaoJLvPyNiEiIGIXrcBdAQ9JpMiCmwLtzGU3I/h5ngBt1Kc7kCKCl1LMtY8EPJ5EFXgj6Z27K1iN1QX9B1uMsYYQTBB93NnqueC2UZt7C0xdyDXyLjJhGkALvyrkbVrbDA/jSThcE3wlkfCR4JFEg1sCAP39tbL6vv8mH84SiYSmpt3xAAAAAElFTkSuQmCC`,salt_rock_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAABB0lEQVRIS+2VMQ6DMAxFzUm6s1XiCsz0OpyA65SZKyCxsfckqRzJlXE+sauKrVkq1OQ/5zmBhi4ezcX59Ae4hr9RlExaaG1oEhGltK6H/Kbr+Nld707g8Oc00dD3hY4IxAPkyudlOQD4mQdDPUgNcNAiEAvLniq6zgCFc121dfUzAFUdhaAd5KaK40g4z3mMIzxVECBHMhp+b1u6DUMIABt7dl25AA7f9j3/IojdAWyuvQPScA6VwRCkSQOKcFmsVUnVaFcIEgJwmK5alCCI1eQCkA4OPoPUALyuaLL2bCtGEA/wgdRca5CGRE6RrE2veXY/JlpV9B7oUPuB8YDwvea9rr1Q9/83lhuWGQG9q4IAAAAASUVORK5CYIIA`,bronze_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAYlJREFUSIntlDFPwkAYhh8bE2JhgM2pTCasEP0dMjKSsNCJRB0c3WAAYzccSBgZ+R+akjgRnCAOTopJIXFpHeAu17uCja68C+1x97xv7/vu4KCD/qujlPOivzJ+M4gAOt0e+VwWgGWwom6NABiGNW5vrvfy9hlEnW4vBhPPAN6iYixoPzwazF0GUafb4+ttJgdajh+bMLYbAFTXg1iA06unGNfal7zl+BRLZYqlsgEXYKG6NWIY1gyYbhC931/IRMOwJkEisfhV/xMSdVKlbpGEC6mJ9MXLYEU+l5Umak3UWhzrji8fJwD4+UsJrq4HeFOzqF8AzuariqXNWHU9oK3MiRmM7QbYMJ9OIJhJiEdFFlkvrnge2w2WwcrY9JjBfDoB4h2jF1TtGnXbxPnQu0hv06jf7xuFFQn15Hev5wAUMqEc089CUptKmP6uwr1FhUImpJAJaTk+n9+WcVaSvgC210PTdWPJ1MUiuXw/ewYwtmeXgTRquq4BSoJvwYm8VJddCqW9lQ8y9QNiZaVNTKTieAAAAABJRU5ErkJggg==`,bronze_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAA4ElEQVRIS2NkoDFgpLH5DKMWEAzh0SD6jxZGGCFCahChGFjnwsXgaakJtmP78esMTXu+gZgoZhKyAKeBuGLXsvksiiXYLIAbiuxCgskFSQGyJegW/CfXUGQHIAcXsgVgw0EAFq6kuBoWD5rS/AwKclIMMF+gWHC81hhs5oNHz8CKCAGQS0EGwgCyHrwW4LIEn4HojsFqAXr4k2IgMXEAUoMSyaQEFTQPINsDDn6syRTmE1wWIKUSDAPRgwpXRkPxCSkGEmsBOLgIlTOEUhmuICJGH9FqCJVFRBuES+HQtwAAGJ1YGe/MnNkAAAAASUVORK5CYIIA`,iron_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAZZJREFUSIntlLFKA0EQhr+onHfYHCG6RXIKFj5AykCeSgufQCyUFNZWwSqQlwikkqusUgjxkmKjSBpJDISz2mF3cwlJJYJ/d8fONzP/zg7867dV2vF8vitz2wQ5QLfTBqDXTwFoNurOocFwwvXVpcM92Ab81H4kCgOB2+DZfAFApqeFgHUd5AAPrRvKFUWmp1ycnThwAzaJB8MJejxCVWtOF0Ud5N1Om8FwQrkSA3C0/02vn3J+eixwGwwI/OLsxIHtrYMnKpbWX9/eaTbqlCuK2XzB54cuhBfJTpA/tR8FHoUBnx9agk3VURhQrSVikR6PxDa/evHJrzwKA5kUVa3JP1u25z7cnibnDowtxu+v5eEKfDZfkOnpWrj/vWcHRmHAc/qyMt8+fJMGw4ncjZPABDYbdcajrLB6I7/6Xj8VsN/N2oeWqJhMT8U2uwgDNlLVmiT1k5gOStdXl1LF1/KwEK7HI2dqjCXmXKJiJwZWX7Iss9u7+0Jb7Or8NZGomOf0BYBWqwVQ2rTsttmcm7Trpv7XX9UPRxDlZCE0bRgAAAAASUVORK5CYII=`,iron_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAwklEQVRIiWNgGAWjYNADRgr1/ydkHqkWoBiYmxHNYGxqxcDAwMBw9vQxhskzlmKYScgCnAbiAgnJ2SjmYrMAbigxBhKyBN2C/+QaigyQg4sJ3XBVZXmyDf707inD2dPHUBzIgqwAOcKI8cWnd08Zbt99iKLfWEgaRQ0LuiaYQmyWEGMgOkCxANlQY1MrsgyEmQMDeCOZ2KBCilRkwIjhAwYGBsbJM5b+z2VgwGswPgOJEmTA4hNiDSRFEcFyZhQMDQAAaMBZ6FnVQEEAAAAASUVORK5CYII=`,silver_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAQhJREFUSIntlD1uhDAQhb9EuUOK5BBbeGsoOARHoF8XOUIKp+cCvgWFqTNFbkQajIgZbHaVkichIWZ4PzOW4cSJE0cwzc9DeCqR930PQNd1R/o3eD7aKCLwQJqco2kmTUVimiMc+QSpAIAxBhGhbVs+3RcUEhVHpImsv5VE9gSW5UbH6/cQAhdzBaCpq6zBbAJjzK7zSD6EMZviJUeeEoYQALiYa9F5hHYCJhHBObcp7I1lCCMAH/a24UwFpjnuQhJ/buoK5xzWWtXpEEZVQN2BRg5grcV7v9RiPULbhTqidYpUBMB7z+vb+5+epq7iociOKCuyxo98LzsBff45Abj/Br37IvwX/AKZJHqzxczScgAAAABJRU5ErkJggg==`,silver_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAs0lEQVRIie2Uyw3DIBBEJ1HOThFTgSN6oUY3E1ewRZgGnEuIWAPmk0si8SQuCN7sAgIYDH6ey5f795KvNUAJl2UBSQCAiMBaGzlLAVlhDmOM8qYCPtIaYSnkGLD3SkPC47oe5Y957hbfpwkiogoMA0ASm3MQkSahH5tzUfe31EaSUSVe+FxXta50nCoglJLsEnqP5/SSU13khO9LDUm+IhWSCzgTVk0i0UmtsGVR8Z8Z/AcvcvFbDaU3IKgAAAAASUVORK5CYII=`,gold_ore_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAXZJREFUSIntlC1vwkAYx38s+wALroIvQBAVbfAkJJVIbB0OAQLRTE1MbAIz2+BQaBIS0hAMLwJBENgKXFNXycS45ijXg5GphX/SNL3r83+5J/fAAw/8CxxPz114uka8n7k0m827hQp55MnWIYwMprsqALXygumuSqvVulZ7BlWCY7J1LhZLxQO18oL9zOW0f1OirIuUPIwMSsWDsiiMDEbLCpv1iuFwqOLRJmAwb5y9sygVD2zWK0zLZj9zQZNE1+RcEXlttKxoRWSBY7J1GMwbaUNVhIN5gyAIMC0bgLYz4fUryTX4fC2BSkSg7Uzoj+uYFqIXeoEwMqiVF7kiQRAAYFo2bWdykzG5+8f3j8/Umfv2cvGzfCwy+uM6AL1uJ8upbnJ/XMf3YnwvxrRsTMvG92I265XSuS6NLFA4OUgLhDPx7XsxYWSke2Jfh2yCQq/bSYuzQvBzB4SInDgvRe4skvuhcioumoDq/HUC8PvJedPw+3N8A0QSnZsj1HFJAAAAAElFTkSuQmCC`,gold_ingot_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA00lEQVRIie2UKxLDIBRFL52YYLqRLiAKURNkVVeQZbGCKmRjKqKyADZSE+SrIgMpBYaadiZnBsW8c3n8gJ2dn4d9WU8536FCuA6tBKyRsEZCKxELzHYQFGgl0Hc8WdCe7oE3FrBKS4S5kG0A1Up9xnnBZZgAgDVb+XNpq8W3B+HIbbBAP2CdGOelqAsndFzPHEBY1yBC3/FoSIlwSxDgS/uOVwmdx5E85NKt8g7Vh711AIBdhil7k1LCUkgrQdZIskaSViJ4wYi82E+kUrP/zM5/8ALJtmHuganBugAAAABJRU5ErkJggg==`,rainbow_cow_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACNUlEQVRoge2YPW7CMBTH/w+hIgTXQB1yCy6R3oA5GwzpwsIWqVtvUE7QjVtk4B4smV6HxE7i70BIK9U/yRLE9vuwn99zAkQikUgkEolEIr8FTaCDR9BplfGoA6rgUIRe33zyjKGhDvSE7XmnDTjhoxG98Au7bQEAh9VGnx8mg2ZeLY0u3L/aZoGN8U5yv0qfA1bDgwywCS0S0PoimwYt6nYklxMEAHOXnrstBACuWmO6j4sElJVgbsUTURuOtND6kHPtjOHM2nbAafyg1edKriIXSa+LHEfQ1dfF5MB4xk+A6sAkxnORyBXuhQ8AcNXr8x3k7hkYx3g19Ymz4JB30DqbOe8vXnXCAYalaKhx6+JEn/rDgHrwCNYsNMRwwGL8BGiHmItksPGhUFaOLjO0Ev9ZXIVsMvrh1/ktMpCliAG6A0RZyc8KIaAOIyFfXCP4fDaPTf3FbA6A+bYFrS8iEz2XnEEZAVkpDac0BQDvfxMzAKDV98N2ma7WPXLuFSXbqptoxhrrVB1CtPC9OASx5119n1dzv6eaqs4McW6GNmy08KGsvC/1cdVvHkwh4gqbLt4sxOdzLSwrx7vI5QxKSa601KHoFTR9QVnIiFCgvnzseWOZYeHY2rDEFZS+SvmmsOk4NSi5MBcJc5GItzHZOs/k2IFNzlviyktcQ8dbCdkBaoy39Y0BAeCvxuY32AuXyv+5SjzjIqbydseGmmaYvoKN8XXtKTpCd2CKT5BT6IhEIpGR+QG4Bej6ikQYYQAAAABJRU5ErkJggg==`,cow_variation_1_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB8ElEQVRoge1YS3bDMAiEvN7RN0BnUm7gU9JFioMIWNhR0uZVs2j1oTADSLYLMDExMTExMTHxv8Hm90fhAgBARB9JHgDg6w0xbHJwpA9UBiMcZ6Hj9uz2bPBoBRpnRBQaXq/Xrh/5+1prs1lKER/dBGUFNAFHIOOLiHqJ6AoYTlz8WWJShVJKs7cjArcf4J8BHkHcBhdCzPfuQMRtrscyVyIezukliDuEvBAWX6MrCdAK2B5orwjkAREB8ZZUObh2vQcRsLXSO8gTUUNQx9RjaZ896EPcu3OHwhLTV+mRJEZn4DDsXX4Guo2yGCbgTPAR2BUgWa21Pp3h3kPpbAIeBAhZTbiUAqUUV5AVNqKVjiD1KlFrbTLkjcVGz+1+VIFoXQ5z9BCLFlk/CS2kEroitvxWsH1NMMSA19WNhcvS4+qCLYiIiaiZezbWXtbsGG7XNfO6Mq9rdu4i3UIevGrs2TdZCrIe2eKyuN8sp65Re4B1y+hz4LVRRFALsvM97ArIvpP0KtGrjun1cM3l6KxthxgRpXyykXKaCvzje5sbws7e8VtIB/EyckaQVJSZ7+P+LRS2QVeA2ZC17Ed5FDOMkeDXIHMLNQGPBkjCE5XyPexl7reQ/rdK9gvpGZyJ4Qr4q2Q9ZCvwekXviTExMTExGN/dZHBpuZub8gAAAABJRU5ErkJggg==`,cow_variation_2_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB+klEQVRoge2YUZLDIAiGYad3zA3MmeQGOSX7sINFI0Ia2+6D30w7jbHwo0BsARaLxWKxWCwWi2+BH/DBE3yaNu4G0BqOIn6976MzB68GUBlLKZkTicg3xmP96MsLB8AAY8EtXgDaVs65urfve9SOG8Bl4RHHKaXqfrsTeuXbuXpaeTPgV4Rrcs6nNBBBWjQilmv9Wa5VECe9P+8Uv+87MHPZwdbmKMcD+Q8A/QBuiwd45rHO53fQBjBFfFuULSmlssJtyjBzdc/T81CfzZ4mgiKr6YkXRsKYObxzsgMMRkFHBWnenTYaq4i/TnThzACICIgIELGs6Mhoznl43+rnnk0PqYFy5tBOJE9HD6WeE2mhHhGBni1dxAiqC8kOAJwL7pW66Akrjo2eL93JeohZg5dbqRVQb+WICFJK1VOaj6P7fdw2T+ucAACuBwHwFC5CnetuAF/rQtaqD+Z2n1PTArAKLVIvfBxVQO31iGEKWUU8IiIYESuBuG0nwe2YlUaPdqCFj6Pk5IxzEsDzvCMCtQ/tVxjVQHcH5CxCRKfC0vQCGu2Abpf60BboQpd++jIzc0qJ4a9wykuNlbkXX5UP/mv0kfmXaI2DiG/G7tD10RlzMVMIoGw5GmN3mObDLWIh+hPvDq/46AbwX8X2iO7AJ/6C/ISPxWKxmMwve31ULTQV7Y8AAAAASUVORK5CYII=`,cow_variation_3_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABrklEQVRoge2Ya46EIAyAy8Q7eoMeihtwyu6PEQdqS4FBd5PtlzhxtPaBfagAjuM4juM4jvNbhAds0AKbqo5vA+CKe8l2reuDIRNGA6iUIaIqGGM0lbWu79QRNtPKG+oxOEKPLkQ0g7DuwLTjLcOj+hRd4fxRoBUrzo3P6jz0XPzVUqhyvnRi1IEsH2Os9iUZ65zESzimOr8SIgIiEm20znF4AEvS5knKFDJ7Og9OWx1rERARQtHBS/nWOYkcAIEyNO66Iy29IzZ750DFXXUxg1TETSzntdXrGUozDAfw15hKodVYzUAbYgDXAEKM8bZWmtOIDzRKSZQP+27q3ODo/THG3Im+crAkO8jbJHc8O2r9lxiugVaRSs7n/cu0VVZd4pAV59R2GLBeHCpWpxgPZiS4F3zS5pI+0sr1MhNk2Pdz68VMIUppOhCe++U+dzLsO1BK58bPgVKf0kEqu0SrkL55MZGK+eLcx+ZQcyFEJEQkeNfFuRXHTtnBzbShyKv0DLIA+mP2qs8ylY3W4OL8n0eJJ55AZ2yIRSzIrPi6douN3jvwxCfIJ2w4juMs5gdcWvZP4r+1igAAAABJRU5ErkJggg==`,cow_variation_4_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAACFElEQVRoge1YW3aEMAiFnu5xdoBrijtwlfRjJEWEhHQcpx+559ipJsKFXPIQYGJiYmJiYmJiYuJTwBt88AU+QxuvBmANZyF+e+9jpw9+DTpmfTEzRFfGDhG57xIREJH0ayIbgJAOSS7LkjT1xE6w+Z70aaEnocoyympEYF3XJjHdbm0jYthXd6t/ArAYKKU0urWzaJ0LIU0aEeu9/l/uVRAnvpGEKvmI5LIs9WpBNG3tCbkIrTaNb8+n50xGYVTro/1HYUfAJX81iKhm2EqGmQ9tPS56BLrkvWyWUv6U5ZafkQTKCDAEBd0q4F5x3wGvBgAgT+7dGu9BL+kI++rqQYhGgelAooJf19WVh2fTexcGplEX75BMZDPrKx2ANWjXAWn3st8jiYjuJe1R9vVDXcShjISYJuRJyw6/nqlERqWUOl3ytrm+8PHwuJ7ARFQ3a3sAaRBRup9cILvZbWPetuy9i7SEom2Dl/nUFiPIeqOvG4QcGA6/vf28lZFtE3h1A/CU0UgAAFVO7iwkD0+NUkwWXqG+sh4YrYfPsqi6hV2H8HsCG64F0b19Bkrj2gcY/fdqwKvsKiFErEPtZaQntZOz4KCSmIXCGagbgGmQZ9lDeeSPZUVundwCfgeEeyFjJCrsqz7LIJyDStke/Srx75AZAQDIH/FeQUdOLtwacPpc8XXtLT6yI3DHJ8g7fExMTExcjB/HIw4rhmRWFQAAAABJRU5ErkJggg==`,cow_variation_5_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB/klEQVRoge2YbXLEIAiGcad3zA3ImfQGnpL+2JoiQcWPzewPn5nMtAnKi4BrArDZbDabzWYzjHvYHw34Jfb3bdxrSk4f1DbpH/NiRiMORhn1dRv3AgBAxE+L/9j8P5PjZ4VNB5aagsDWWJlDRKwae+/fTpw+dRqf7BLneQIAQAhBG5ZNZs0AcYdWzvME7z0Q0S0Iy1yIKIO4rUQrAwQAQESXoBG891kAUlia/xJVtu3aRgkRs8llqkdIgojourhg51z2LIRQzVYpAOotFwtyzlJvtJ5xtAAy8bxsRkuohCwd6zOObOLlK6+VHSLe6vwSIEqqpScF4MCwJ3vvl2WhJqxnEXkJLT/YrWj6Fk8e5orIQHsCbwagTZ6uFrzclB+lJQxnoKcXVu9enOJRQlthKURrannPIr51VvrLnGokA3AhBLLswSnAnp0plZEQBhSjau+Oozln8zCXDmQ1kT1Nx3shCU9CW/9rVHugJHrF9lha9YqtWhbmF5oe0dzWUl4ymJ7gqhkIIXxk6yvhjsNU99kY5d7VxM45oBj/a9J4wKrB37b4SkvhyjPzSYESAEAUI1GMBO8azK5e+Ni/DwmqD8VnkWYGxIN0j7/J9XCNk1tph76mgQzAFe7NsMzHVxzmZjBvo9ZXvBlGfKgBfKtYDWsGnviK/fSX8s1ms1nAL4ZTXaf8TqprAAAAAElFTkSuQmCC`,cow_variation_6_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAABsUlEQVRoge2YWXLDIAxARSd3zA10KN3Ap6QfLVQm2sDU/tGbScYJsjYkMTZAkiRJkiRJkjxFucFG3WBT1XE1gFFxlGbXu784MmU2gJDDiAhEFJKzCOgoXxGH4Mfx1WyLeM5HZV7O+rTTUcd4dsd7xjVlJ0r/UljKuOXMSXn9U19K6fcR0cca48NfrYQqIoay6WHpKUYLWmscqYQqN8ivI415N+MOVCvr3o7M7FjLMC+fpoOvefAALk2ZHeW2QiuhCv6hAQDnqfCU05zoOXBiV4M3XZH/NLxzIIzX4NHTmctH9KoBWAeNJjdDNMte4C2AXv9SfRORaHCX85qeQU4cSS9BoHpH/Sqj3nZdj0OUL++3q1OKyjwLOLM7MNZ1c7w56vwWd2BpCu1Ay7ohK474bVPoCmMwM8GZO0BEZpnM9IYlK9V6pP4BnB4gIqjH0ZXNPEFFZHmmR4eFNbEHQgFIBiJOSk7zeyem0NSjb0XEiojtMbJ/2H9ddvLj2lDkVSJNXEAfrbtey5xs/O5MSPdjY3QX4TF6x9PYig2xiQWZHW/X/sVGdAfueAV5h40kSZLNfAP8suojqxWMSgAAAABJRU5ErkJggg==`,cow_variation_7_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB1klEQVRoge2YXZKDMAiAYad39AZ4JnODnjL7UixBkJim7j7wzdixJuEvJEQBkiRJkiRJkuSvwBt01Ak6XRmfOqAF98J6o/EY9MGfi4qrukyIqEsOEQERQa21ufh5YDwAAPQ60CjsMDBEyljXNezj8Qja9whoYfy/lBIqsZDjWBY7otscHbj/OBymz4qI54DnIBtU61s8Ijb9rbaXnIO93gyMLs4dNlwaJgOAiI2hkrM2jbUG3JE6mj3pM5pivWgHPo58DzwTiNikz7ZtbpuHTKHQ+Bm7jydr27YhPTwDFYKipoXOTA1pvLzv4bAGrH1+ZuRn49aB2UbzVjhb7tWjxM5MQ9Z1datxRFSJT4mqca+TPN4qeuK5uUblqXC/H4mup9zqpx2vz6fZF5fFshX0w6pK9ZAD0qBovDacDQ3+mw58lEKaK457Uff64rKYW/0DAKCUEr04fBXtzBXnfuDt1cG7UsrXzzIeKv9dwhR6TR8AzNs6iQhwWZpIa4ONtvE1wE707jQe+kVFLlYrbYRTl97dKxFVItLvv/LZ3vfiFepw+rv0zMDZ1jrrs0yj46xwaYaPEv+F7jpwx240osOaJusr2Iyva1/R0TsDd3yCvENHkiTJZH4BOxYPBJ6xfbsAAAAASUVORK5CYII=`,pixel_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAC4jAAAuIwF4pT92AAAAB3RJTUUH4goFDRc7VmYGWwAAABl0RVh0Q29tbWVudABDcmVhdGVkIHdpdGggR0lNUFeBDhcAAAALSURBVAjXY2AAAgAABQAB4iYFmwAAAABJRU5ErkJggg==`,plotStates={"watered-plot":watered_plot_default,"fertilized-plot":fertilized_plot_default,"rainbow-fertilized-plot":rainbow_fertilized_plot_default,"mulched-plot":mulched_plot_default,"rainbow-mulched-plot":rainbow_mulched_plot_default,"shoveled-plot":shoveled_plot_default},smeltedItems={"bronze-ingot":bronze_ingot_default,"iron-ingot":iron_ingot_default,"silver-ingot":silver_ingot_default,"gold-ingot":gold_ingot_default,"axe-bronze":axe_bronze_default,"axe-iron":axe_iron_default,"axe-silver":axe_silver_default,"axe-gold":axe_gold_default,"hoe-bronze":hoe_bronze_default,"hoe-iron":hoe_iron_default,"hoe-silver":hoe_silver_default,"hoe-gold":hoe_gold_default,"scythe-bronze":scythe_bronze_default,"scythe-iron":scythe_iron_default,"scythe-silver":scythe_silver_default,"scythe-gold":scythe_gold_default,"shovel-bronze":shovel_bronze_default,"shovel-iron":shovel_iron_default,"shovel-silver":shovel_silver_default,"shovel-gold":shovel_gold_default,"picker-pole-bronze":picker_pole_bronze_default,"picker-pole-iron":picker_pole_iron_default,"picker-pole-silver":picker_pole_silver_default,"picker-pole-gold":picker_pole_gold_default},craftedItems={"apple-pie":apple_pie_default,"banana-bread":banana_bread_default,"banana-cream-pie":banana_cream_pie_default,"carrot-soup":carrot_soup_default,cheese:cheese_default,"chickn-pot-pie":chickn_pot_pie_default,chocolate:chocolate_default,"chocolate-soy-milk":chocolate_soy_milk_default,compost:compost_default,bread:bread_default,burger:burger_default,butter:butter_default,fertilizer:fertilizer_default,"french-onion-soup":french_onion_soup_default,"fried-tofu":fried_tofu_default,"garlic-bread":garlic_bread_default,"garlic-fries":garlic_fries_default,flour:flour_default,jackolantern:jackolantern_default,"hot-sauce":hot_sauce_default,mulch:mulch_default,"olive-oil":olive_oil_default,"onion-rings":onion_rings_default,popcorn:popcorn_default,"apple-juice":apple_juice_default,"grape-syrup":grape_syrup_default,"pumpkin-pie":pumpkin_pie_default,rainbowCheese:rainbow_cheese_default,"rainbow-mulch":rainbow_mulch_default,salsa:salsa_default,"soy-milk":soy_milk_default,"spicy-apple-jam":spicy_apple_jam_default,"spicy-cheese":spicy_cheese_default,"spicy-pickled-garlic":spicy_pickled_garlic_default,spaghetti:spaghetti_default,"strawberry-jam":strawberry_jam_default,sugar:sugar_default,salt:salt_default,"summer-salad":summer_salad_default,"sun-butter":sun_butter_default,"sweet-potato-fries":sweet_potato_fries_default,"sweet-potato-pie":sweet_potato_pie_default,tofu:tofu_default,"vegetable-oil":vegetable_oil_default,"wood-chips":wood_chips_default,yeast:yeast_default,"basic-lightning-rod":lightning_rod_basic_default,"superior-lightning-rod":lightning_rod_superior_default,"ultimate-lightning-rod":lightning_rod_ultimate_default,...smeltedItems},items={apple:apple_default,"apple-fruit-growing-1":apple_fruit_growing_1_default,"apple-fruit-growing-2":apple_fruit_growing_2_default,"apple-fruit-grown":apple_fruit_grown_default,"apple-tree-dead":apple_tree_dead_default,"apple-tree-growing-1":apple_tree_growing_1_default,"apple-tree-growing-2":apple_tree_growing_2_default,"apple-tree-growing-3":apple_tree_growing_3_default,"apple-tree-growing-4":apple_tree_growing_4_default,"apple-tree-grown":apple_tree_grown_default,"apple-sapling":apple_sapling_default,"apple-tree-sapling-planted":apple_tree_sapling_planted_default,banana:banana_default,"banana-fruit-growing-1":banana_fruit_growing_1_default,"banana-fruit-growing-2":banana_fruit_growing_2_default,"banana-fruit-growing-3":banana_fruit_growing_3_default,"banana-fruit-grown":banana_fruit_grown_default,"banana-tree-dead":banana_tree_dead_default,"banana-tree-growing-1":banana_tree_growing_1_default,"banana-tree-growing-2":banana_tree_growing_2_default,"banana-tree-growing-3":banana_tree_growing_3_default,"banana-tree-growing-4":banana_tree_growing_4_default,"banana-tree-grown":banana_tree_grown_default,"banana-sapling":banana_sapling_default,"banana-tree-sapling-planted":banana_tree_sapling_planted_default,asparagus:asparagus_default,"asparagus-growing-1":asparagus_growing1_default,"asparagus-growing-2":asparagus_growing2_default,"asparagus-growing-3":asparagus_growing3_default,"asparagus-seed":asparagus_seed_default,carrot:carrot_default,"carrot-growing-1":carrot_growing1_default,"carrot-growing-2":carrot_growing2_default,"carrot-growing-3":carrot_growing3_default,"carrot-seed":carrot_seed_default,garlic:garlic_default,"garlic-growing-1":garlic_growing1_default,"garlic-growing-2":garlic_growing2_default,"garlic-growing-3":garlic_growing3_default,"garlic-seed":garlic_seed_default,"grape-seed":grape_seed_default,"grape-cabernet-sauvignon":grape_purple_default,"grape-cabernet-sauvignon-growing-1":grape_purple_growing1_default,"grape-cabernet-sauvignon-seed":grape_seed_default,"grape-chardonnay":grape_green_default,"grape-chardonnay-growing-1":grape_green_growing1_default,"grape-chardonnay-seed":grape_seed_default,"grape-nebbiolo":grape_purple_default,"grape-nebbiolo-growing-1":grape_purple_growing1_default,"grape-nebbiolo-seed":grape_seed_default,"grape-sauvignon-blanc":grape_green_default,"grape-sauvignon-blanc-growing-1":grape_green_growing1_default,"grape-sauvignon-blanc-seed":grape_seed_default,"grape-tempranillo":grape_purple_default,"grape-tempranillo-growing-1":grape_purple_growing1_default,"grape-tempranillo-seed":grape_seed_default,jalapeno:jalapeno_default,"jalapeno-growing-1":jalapeno_growing1_default,"jalapeno-growing-2":jalapeno_growing2_default,"jalapeno-growing-3":jalapeno_growing3_default,"jalapeno-seed":jalapeno_seed_default,pumpkin:pumpkin_default,"pumpkin-growing-1":pumpkin_growing1_default,"pumpkin-growing-2":pumpkin_growing2_default,"pumpkin-growing-3":pumpkin_growing3_default,"pumpkin-growing-4":pumpkin_growing4_default,"pumpkin-growing-5":pumpkin_growing5_default,"pumpkin-seed":pumpkin_seed_default,pea:pea_default,"pea-growing-1":pea_growing1_default,"pea-seed":pea_seed_default,spinach:spinach_default,"spinach-growing-1":spinach_growing1_default,"spinach-seed":spinach_seed_default,corn:corn_default,"corn-growing-1":corn_growing1_default,"corn-growing-2":corn_growing2_default,"corn-growing-3":corn_growing3_default,"corn-growing-4":corn_growing4_default,"corn-growing-5":corn_growing5_default,"corn-seed":corn_seed_default,potato:potato_default,"potato-growing-1":potato_growing1_default,"potato-growing-2":potato_growing2_default,"potato-growing-3":potato_growing3_default,"potato-seed":potato_seed_default,olive:olive_default,"olive-growing-1":olive_growing1_default,"olive-seed":olive_seed_default,onion:onion_default,"onion-growing-1":onion_growing1_default,"onion-growing-2":onion_growing2_default,"onion-growing-3":onion_growing3_default,"onion-seed":onion_seed_default,soybean:soybean_default,"soybean-growing-1":soybean_growing1_default,"soybean-seed":soybean_seed_default,"sweet-potato":sweet_potato_default,"sweet-potato-growing-1":sweet_potato_growing1_default,"sweet-potato-growing-2":sweet_potato_growing2_default,"sweet-potato-growing-3":sweet_potato_growing3_default,"sweet-potato-growing-4":sweet_potato_growing4_default,"sweet-potato-seed":sweet_potato_seed_default,wheat:wheat_default,"wheat-growing-1":wheat_growing1_default,"wheat-seed":wheat_seed_default,tomato:tomato_default,"tomato-growing-1":tomato_growing1_default,"tomato-growing-2":tomato_growing2_default,"tomato-growing-3":tomato_growing3_default,"tomato-growing-4":tomato_growing4_default,"tomato-growing-5":tomato_growing5_default,"tomato-growing-6":tomato_growing6_default,"tomato-seed":tomato_seed_default,strawberry:strawberry_default,"strawberry-growing-1":strawberry_growing1_default,"strawberry-seed":strawberry_seed_default,sugarcane:sugarcane_default,"sugarcane-growing-1":sugarcane_growing1_default,"sugarcane-growing-2":sugarcane_growing2_default,"sugarcane-seed":sugarcane_seed_default,sunflower:sunflower_default,"sunflower-growing-1":sunflower_growing1_default,"sunflower-growing-2":sunflower_growing2_default,"sunflower-growing-3":sunflower_growing3_default,"sunflower-growing-4":sunflower_growing4_default,"sunflower-growing-5":sunflower_growing5_default,"sunflower-seed":sunflower_seed_default,watermelon:watermelon_default,"watermelon-growing-1":watermelon_growing1_default,"watermelon-seed":watermelon_seed_default,weed:weed_pink_default,"weed-yellow":weed_yellow_default,"weed-orange":weed_orange_default,"weed-pink":weed_pink_default,wood:applewood_default,coal:coal_default,stone:stone_default,"salt-rock":salt_rock_default,"bronze-ore":bronze_ore_default,"iron-ore":iron_ore_default,"silver-ore":silver_ore_default,"gold-ore":gold_ore_default,"rainbow-fertilizer":rainbow_fertilizer_default,scarecrow:scarecrow_default,sprinkler:sprinkler_default,"cow-feed":cow_feed_default,"hugging-machine":hugging_machine_default,"milk-1":milk_1_default,"milk-2":milk_2_default,"milk-3":milk_3_default,"rainbow-milk-1":rainbow_milk_1_default,"rainbow-milk-2":rainbow_milk_2_default,"rainbow-milk-3":rainbow_milk_3_default,"chocolate-milk":chocolate_milk_default,"scarecrow-animated":scarecrow_animated_default,"inventory-box":inventory_box_default,tumbleweed:tumbleweed_default,...craftedItems},wines={[grapeVariety.CHARDONNAY]:wine_green_default,[grapeVariety.SAUVIGNON_BLANC]:wine_green_default,[grapeVariety.CABERNET_SAUVIGNON]:wine_purple_default,[grapeVariety.TEMPRANILLO]:wine_purple_default,[grapeVariety.NEBBIOLO]:wine_purple_default},tools$1={axe:axe_default,hoe:hoe_default,"picker-pole":picker_pole_default,scythe:scythe_default,shovel:shovel_default,"watering-can":watering_can_default},animals={cow:{rainbow:rainbow_cow_default,variations:[cow_variation_1_default,cow_variation_2_default,cow_variation_3_default,cow_variation_4_default,cow_variation_5_default,cow_variation_6_default,cow_variation_7_default]}},noop$3=()=>{},getFinalCropItemFromSeedItem=({id:e},t=0)=>{let n=getFinalCropItemIdFromSeedItemId(e,t);if(n)return itemsMap[n]},getItemCurrentValue=({id:e},t)=>{let n=Math.round((t[e]?getItemBaseValue(e)*(itemsMap[e].doesPriceFluctuate?t[e]:1):getItemBaseValue(e))*100);return Number(toDecimal(dinero({amount:n,currency:USD})))};function noop$2(){}function returnTrue(){return!0}function charIsNumber(e){return!!(e||``).match(/\d/)}function isNil(e){return e==null}function escapeRegExp(e){return e.replace(/[-[\]/{}()*+?.\\^$|]/g,`\\$&`)}function getThousandsGroupRegex(e){switch(e){case`lakh`:return/(\d+?)(?=(\d\d)+(\d)(?!\d))(\.\d+)?/g;case`wan`:return/(\d)(?=(\d{4})+(?!\d))/g;default:return/(\d)(?=(\d{3})+(?!\d))/g}}function applyThousandSeparator(e,t,n){var a=getThousandsGroupRegex(n),o=e.search(/[1-9]/);return o=o===-1?e.length:o,e.substring(0,o)+e.substring(o,e.length).replace(a,`$1`+t)}function splitDecimal(e,t){t===void 0&&(t=!0);var n=e[0]===`-`,a=n&&t;e=e.replace(`-`,``);var o=e.split(`.`);return{beforeDecimal:o[0],afterDecimal:o[1]||``,hasNagation:n,addNegation:a}}function fixLeadingZero(e){if(!e)return e;var t=e[0]===`-`;t&&(e=e.substring(1,e.length));var n=e.split(`.`),a=n[0].replace(/^0+/,``)||`0`,o=n[1]||``;return(t?`-`:``)+a+(o?`.`+o:``)}function limitToScale(e,t,n){for(var a=``,o=n?`0`:``,s=0;s<=t-1;s++)a+=e[s]||o;return a}function repeat(e,t){return Array(t+1).join(e)}function toNumericString(e){e+=``;var t=e[0]===`-`?`-`:``;t&&(e=e.substring(1));var n=e.split(/[eE]/g),a=n[0],o=n[1];if(o=Number(o),!o)return t+a;a=a.replace(`.`,``);var s=1+o,l=a.length;return s<0?a=`0.`+repeat(`0`,Math.abs(s))+a:s>=l?a+=repeat(`0`,s-l):a=(a.substring(0,s)||`0`)+`.`+a.substring(s),t+a}function roundToPrecision(e,t,n){if([``,`-`].indexOf(e)!==-1)return e;var a=e.indexOf(`.`)!==-1&&t,o=splitDecimal(e),s=o.beforeDecimal,l=o.afterDecimal,u=o.hasNagation,d=parseFloat(`0.`+(l||`0`)),f=(l.length<=t?`0.`+l:d.toFixed(t)).split(`.`),m=s.split(``).reverse().reduce(function(e,t,n){return e.length>n?(Number(e[0])+Number(t)).toString()+e.substring(1,e.length):t+e},f[0]),h=limitToScale(f[1]||``,Math.min(t,l.length),n),v=u?`-`:``,y=a?`.`:``;return``+v+m+y+h}function setCaretPosition(e,t){if(e.value=e.value,e!==null){if(e.createTextRange){var n=e.createTextRange();return n.move(`character`,t),n.select(),!0}return e.selectionStart||e.selectionStart===0?(e.focus(),e.setSelectionRange(t,t),!0):(e.focus(),!1)}}function findChangedIndex(e,t){for(var n=0,a=0,o=e.length,s=t.length;e[n]===t[n]&&n<o;)n++;for(;e[o-1-a]===t[s-1-a]&&s-a>n&&o-a>n;)a++;return{start:n,end:o-a}}function clamp(e,t,n){return Math.min(Math.max(e,t),n)}function getCurrentCaretPosition(e){return Math.max(e.selectionStart,e.selectionEnd)}function addInputMode(e){return e||typeof navigator<`u`&&!(navigator.platform&&/iPhone|iPod/.test(navigator.platform))}function objectWithoutProperties(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)===-1&&(n[a]=e[a]);return n}var defaultProps={displayType:`input`,decimalSeparator:`.`,thousandsGroupStyle:`thousand`,fixedDecimalScale:!1,prefix:``,suffix:``,allowNegative:!0,allowEmptyFormatting:!1,allowLeadingZeros:!1,isNumericString:!1,type:`text`,onValueChange:noop$2,onChange:noop$2,onKeyDown:noop$2,onMouseUp:noop$2,onFocus:noop$2,onBlur:noop$2,isAllowed:returnTrue},NumberFormat=function(e){function t(t){e.call(this,t);var n=t.defaultValue;this.validateProps();var a=this.formatValueProp(n);this.state={value:a,numAsString:this.removeFormatting(a),mounted:!1},this.selectionBeforeInput={selectionStart:0,selectionEnd:0},this.onChange=this.onChange.bind(this),this.onKeyDown=this.onKeyDown.bind(this),this.onMouseUp=this.onMouseUp.bind(this),this.onFocus=this.onFocus.bind(this),this.onBlur=this.onBlur.bind(this)}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.componentDidMount=function(){this.setState({mounted:!0})},t.prototype.componentDidUpdate=function(e){this.updateValueIfRequired(e)},t.prototype.componentWillUnmount=function(){clearTimeout(this.focusTimeout),clearTimeout(this.caretPositionTimeout)},t.prototype.updateValueIfRequired=function(e){var t=this,n=t.props,a=t.state,o=t.focusedElm,s=a.value,l=a.numAsString;if(l===void 0&&(l=``),e!==n){this.validateProps();var u=this.formatNumString(l),d=isNil(n.value)?u:this.formatValueProp(),f=this.removeFormatting(d),m=parseFloat(f),h=parseFloat(l);((!isNaN(m)||!isNaN(h))&&m!==h||u!==s||o===null&&d!==s)&&this.updateValue({formattedValue:d,numAsString:f,input:o,source:`prop`,event:null})}},t.prototype.getFloatString=function(e){e===void 0&&(e=``);var t=this.props.decimalScale,n=this.getSeparators().decimalSeparator,a=this.getNumberRegex(!0),o=e[0]===`-`;o&&(e=e.replace(`-`,``)),n&&t===0&&(e=e.split(n)[0]),e=(e.match(a)||[]).join(``).replace(n,`.`);var s=e.indexOf(`.`);return s!==-1&&(e=e.substring(0,s)+`.`+e.substring(s+1,e.length).replace(new RegExp(escapeRegExp(n),`g`),``)),o&&(e=`-`+e),e},t.prototype.getNumberRegex=function(e,t){var n=this.props,a=n.format,o=n.decimalScale,s=n.customNumerals,l=this.getSeparators().decimalSeparator;return RegExp(`[0-9`+(s?s.join(``):``)+`]`+(l&&o!==0&&!t&&!a?`|`+escapeRegExp(l):``),e?`g`:void 0)},t.prototype.getSeparators=function(){var e=this.props.decimalSeparator,t=this.props,n=t.thousandSeparator,a=t.allowedDecimalSeparators;return n===!0&&(n=`,`),a||=[e,`.`],{decimalSeparator:e,thousandSeparator:n,allowedDecimalSeparators:a}},t.prototype.getMaskAtIndex=function(e){var t=this.props.mask;return t===void 0&&(t=` `),typeof t==`string`?t:t[e]||` `},t.prototype.getValueObject=function(e,t){var n=parseFloat(t);return{formattedValue:e,value:t,floatValue:isNaN(n)?void 0:n}},t.prototype.validateProps=function(){var e=this.props.mask,t=this.getSeparators(),n=t.decimalSeparator,a=t.thousandSeparator;if(n===a)throw Error(`
155
155
  Decimal separator can't be same as thousand separator.
156
156
  thousandSeparator: `+a+` (thousandSeparator = {true} is same as thousandSeparator = ",")
157
157
  decimalSeparator: `+n+` (default value for decimalSeparator is .)
@@ -726,7 +726,7 @@ Create a new `,"processor first, by invoking it: use `processor()` instead of ",
726
726
  animation: ${0} 1.4s linear infinite;
727
727
  `,circularRotateKeyframe)),CircularProgressSVG=styled$1(`svg`,{name:`MuiCircularProgress`,slot:`Svg`,overridesResolver:(e,t)=>t.svg})({display:`block`}),CircularProgressCircle=styled$1(`circle`,{name:`MuiCircularProgress`,slot:`Circle`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.circle,t[`circle${capitalize_default(n.variant)}`],n.disableShrink&&t.circleDisableShrink]}})(({ownerState:e,theme:t})=>_extends$3({stroke:`currentColor`},e.variant===`determinate`&&{transition:t.transitions.create(`stroke-dashoffset`)},e.variant===`indeterminate`&&{strokeDasharray:`80px, 200px`,strokeDashoffset:0}),({ownerState:e})=>e.variant===`indeterminate`&&!e.disableShrink&&css$2(_t4||=_`
728
728
  animation: ${0} 1.4s ease-in-out infinite;
729
- `,circularDashKeyframe)),CircularProgress=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiCircularProgress`}),{className:a,color:o=`primary`,disableShrink:s=!1,size:l=40,style:u,thickness:d=3.6,value:f=0,variant:m=`indeterminate`}=n,h=_objectWithoutPropertiesLoose$3(n,_excluded$2),v=_extends$3({},n,{color:o,disableShrink:s,size:l,thickness:d,value:f,variant:m}),y=useUtilityClasses$2(v),b={},x={},S={};if(m===`determinate`){let e=2*Math.PI*((SIZE-d)/2);b.strokeDasharray=e.toFixed(3),S[`aria-valuenow`]=Math.round(f),b.strokeDashoffset=`${((100-f)/100*e).toFixed(3)}px`,x.transform=`rotate(-90deg)`}return(0,import_jsx_runtime.jsx)(CircularProgressRoot,_extends$3({className:clsx$1(y.root,a),style:_extends$3({width:l,height:l},x,u),ownerState:v,ref:t,role:`progressbar`},S,h,{children:(0,import_jsx_runtime.jsx)(CircularProgressSVG,{className:y.svg,ownerState:v,viewBox:`${SIZE/2} ${SIZE/2} ${SIZE} ${SIZE}`,children:(0,import_jsx_runtime.jsx)(CircularProgressCircle,{className:y.circle,style:b,ownerState:v,cx:SIZE,cy:SIZE,r:(SIZE-d)/2,fill:`none`,strokeWidth:d})})}))});function DayAndProgressContainer({dayCount:e,experience:t,itemsSold:n}){let a=levelAchieved(t),o=scaleNumber(t,experienceNeededForLevel(a),experienceNeededForLevel(a+1),0,100),s=experienceNeededForLevel(a+1)-t,l=a+1;return(0,import_jsx_runtime.jsxs)(`h2`,{className:`day-and-progress-container`,children:[(0,import_jsx_runtime.jsxs)(`span`,{children:[`Day `,integerString(e),`, level:`]}),(0,import_jsx_runtime.jsx)(Tooltip,{arrow:!0,placement:`top`,title:EXPERIENCE_GAUGE_TOOLTIP_LABEL`${s}${l}`,children:(0,import_jsx_runtime.jsxs)(Box,{children:[(0,import_jsx_runtime.jsx)(CircularProgress,{value:o,variant:`determinate`}),(0,import_jsx_runtime.jsx)(`span`,{className:`current-level`,children:integerString(a)})]})})]})}DayAndProgressContainer.propTypes={dayCount:import_prop_types$1.number.isRequired,experience:import_prop_types$1.number.isRequired,itemsSold:import_prop_types$1.object.isRequired};function Consumer$15(e){return(0,import_jsx_runtime.jsx)(FarmhandContext.Consumer,{children:({gameState:t,handlers:n})=>(0,import_jsx_runtime.jsx)(DayAndProgressContainer,{...t,...n,...e})})}var FarmNameDisplay=({farmName:e,handleFarmNameUpdate:t})=>{let[n,a]=(0,import_react$24.useState)(e);return(0,import_react$24.useEffect)(()=>{a(e)},[e,a]),(0,import_jsx_runtime.jsxs)(`h2`,{className:`farm-name`,children:[(0,import_jsx_runtime.jsx)(TextField,{variant:`standard`,inputProps:{maxLength:12},onChange:({target:{value:e}})=>{a(e)},onBlur:({target:{value:e}})=>{t(e)},placeholder:`Farm Name`,value:n}),` `,`Farm`]})},OnlineControls=({activePlayers:e,handleActivePlayerButtonClick:t,handleChatRoomOpenStateChange:n,handleOnlineToggleChange:a,handleRoomChange:o,isChatAvailable:s,isOnline:l,room:u})=>{let[d,f]=(0,import_react$24.useState)(u);(0,import_react$24.useEffect)(()=>{f(u)},[u,f]);let m=()=>{n(!0)},h=()=>{o(d)},v=e=>{h(),a(e)};return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(FormControl,{variant:`standard`,className:`online-control-container`,component:`fieldset`,children:[(0,import_jsx_runtime.jsx)(FormGroup,{className:`toggle-container`,children:(0,import_jsx_runtime.jsx)(FormControlLabel,{control:(0,import_jsx_runtime.jsx)(Switch,{color:`primary`,checked:l,onChange:(e,t)=>{v(t)},name:`play-online`}),label:`Play online`})}),(0,import_jsx_runtime.jsx)(TextField,{className:`room-name`,inputProps:{maxLength:25},label:`Room name`,onChange:({target:{value:e}})=>{f(e)},onKeyUp:({key:e})=>{e===`Enter`&&h()},value:d,variant:`outlined`})]}),e&&(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(Button,{color:`primary`,onClick:t,variant:`contained`,children:[`Connected players: `,integerString(e)]}),s?(0,import_jsx_runtime.jsx)(Button,{variant:`contained`,color:`primary`,onClick:m,children:`Open chat`}):(0,import_jsx_runtime.jsxs)(Typography,{className:`chat-placeholder`,children:[`Chat is available for online rooms other than "`,`global`,`"`]})]})]})},{FARMERS_LOG,PRICE_EVENTS,STATS,ACHIEVEMENTS,ACCOUNTING,SETTINGS,ONLINE_PEERS,KEYBINDINGS}=dialogView,dialogTriggerTextMap={[FARMERS_LOG]:`Open Farmer's Log (l)`,[PRICE_EVENTS]:`See Price Events (e)`,[STATS]:`View your stats (s)`,[ACHIEVEMENTS]:`View Achievements (a)`,[ACCOUNTING]:`View Bank Account (b)`,[SETTINGS]:`View Settings (comma)`},dialogTitleMap={[FARMERS_LOG]:`Farmer's Log`,[PRICE_EVENTS]:`Price Events`,[STATS]:`Farm Stats`,[ACHIEVEMENTS]:`Achievements`,[ACCOUNTING]:`Bank Account`,[SETTINGS]:`Settings`,[ONLINE_PEERS]:`Active Players`,[KEYBINDINGS]:`Keyboard Shortcuts`},dialogContentMap={[FARMERS_LOG]:(0,import_jsx_runtime.jsx)(Consumer$20,{}),[PRICE_EVENTS]:(0,import_jsx_runtime.jsx)(Consumer$18,{}),[STATS]:(0,import_jsx_runtime.jsx)(Consumer$16,{}),[ACHIEVEMENTS]:(0,import_jsx_runtime.jsx)(Consumer$21,{}),[ACCOUNTING]:(0,import_jsx_runtime.jsx)(Consumer$23,{}),[SETTINGS]:(0,import_jsx_runtime.jsx)(Consumer$17,{}),[ONLINE_PEERS]:(0,import_jsx_runtime.jsx)(Consumer$19,{}),[KEYBINDINGS]:(0,import_jsx_runtime.jsx)(KeybindingsView,{})},Navigation=({activePlayers:e,blockInput:t,currentDialogView:n,farmName:a,handleActivePlayerButtonClick:o,handleChatRoomOpenStateChange:s,handleClickDialogViewButton:l,handleCloseDialogView:u,handleDialogViewExited:d,handleFarmNameUpdate:f,handleOnlineToggleChange:m,handleRoomChange:h,handleViewChange:v,inventory:y,inventoryLimit:b,isChatAvailable:x,isDialogViewOpen:S,isOnline:C,room:T,stageFocus:E,viewList:D,currentDialogViewLowerCase:O=(n||``).toLowerCase(),modalTitleId:k=`${O}-modal-title`,modalContentId:j=`${O}-modal-content`})=>(0,import_jsx_runtime.jsxs)(Header,{className:`Navigation`,sx:{flexDirection:`column`,flexShrink:0,display:`flex`,"& .version":{fontFamily:`"Francois One", sans-serif`,textAlign:`center`},"& .farm-name":{lineHeight:`1.3em`,margin:`0.25em 0`,"& .MuiInput-root":{background:`none`,margin:0,"& input":{fontFamily:`"Francois One"`,paddingLeft:`0.5em`,paddingRight:`0.5em`,textAlign:`center`}}},"& .online-control-container":{alignItems:`center`,display:`flex`,flexDirection:`row`,margin:`1em 0`,"& .toggle-container":{minWidth:`155px`}},"& .button-array":{marginLeft:`3em`,marginRight:`3em`,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{marginLeft:`2em`,marginRight:`2em`}},"& .current-level":{alignItems:`center`,bottom:0,display:`flex`,justifyContent:`center`,left:0,position:`absolute`,right:0,top:0,userSelect:`none`},"& h1":{fontSize:`3em`,fontWeight:`bold`,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{fontSize:`2.5em`}},"& button":{fontSize:`1.3em`,margin:`0.3em`,minWidth:`56px`},"& h1, & h2, & h3":{textAlign:`center`},"& .day-and-progress-container":{alignItems:`center`,display:`flex`,fontSize:`1.5em`,margin:`0.5em auto`,"& .MuiBox-root":{display:`inline-flex`,marginLeft:`0.5em`,position:`relative`}},"& .inventory-info":{fontSize:`1em`},"& .MuiSelect-select":{padding:`1em`},"& .chat-placeholder":{fontSize:`0.75em`,padding:`0.5em 0`,textAlign:`center`}},children:[(0,import_jsx_runtime.jsx)(`h1`,{children:`Farmhand`}),(0,import_jsx_runtime.jsxs)(`p`,{className:`version`,children:[`v`,`1.22.0`]}),(0,import_jsx_runtime.jsx)(FarmNameDisplay,{farmName:a,handleFarmNameUpdate:f}),(0,import_jsx_runtime.jsx)(Consumer$15,{}),(0,import_jsx_runtime.jsx)(OnlineControls,{activePlayers:e,handleActivePlayerButtonClick:o,handleChatRoomOpenStateChange:s,handleOnlineToggleChange:m,handleRoomChange:h,isChatAvailable:x,isOnline:C,room:T}),b>-1&&(0,import_jsx_runtime.jsxs)(H3,{className:(0,import_classnames.default)(`inventory-info`,{"is-inventory-full":!doesInventorySpaceRemain({inventory:y,inventoryLimit:b})}),sx:{color:doesInventorySpaceRemain({inventory:y,inventoryLimit:b})?void 0:colors.error},children:[`Inventory: `,integerString(inventorySpaceConsumed(y)),` /`,` `,integerString(b)]}),(0,import_jsx_runtime.jsx)(Select,{variant:`standard`,className:`view-select`,onChange:v,value:E,children:D.map((e,t)=>(0,import_jsx_runtime.jsxs)(MenuItem,{key:e,value:e,children:[t+1,`: `,STAGE_TITLE_MAP[e]]}))}),(0,import_jsx_runtime.jsx)(`div`,{className:`button-array`,children:[{dialogView:FARMERS_LOG,Icon:import_Book.default},{dialogView:PRICE_EVENTS,Icon:import_FlashOn.default},{dialogView:STATS,Icon:import_Assessment.default},{dialogView:ACHIEVEMENTS,Icon:import_Beenhere.default},{dialogView:ACCOUNTING,Icon:import_AccountBalance.default},{dialogView:SETTINGS,Icon:import_Settings.default}].map(({dialogView:e,Icon:t})=>(0,import_jsx_runtime.jsx)(Tooltip,{arrow:!0,key:e,placement:`top`,title:dialogTriggerTextMap[e],children:(0,import_jsx_runtime.jsx)(Fab,{"aria-label":dialogTriggerTextMap[e],color:`primary`,onClick:()=>l(e),children:(0,import_jsx_runtime.jsx)(t,{})})}))}),(0,import_jsx_runtime.jsxs)(Dialog,{className:(0,import_classnames.default)(`Farmhand`,{"block-input":t}),fullWidth:!0,maxWidth:`xs`,onClose:u,open:S,TransitionProps:{onExited:d},"aria-describedby":k,"aria-labelledby":j,children:[(0,import_jsx_runtime.jsx)(DialogTitle,{id:k,children:n?dialogTitleMap[n]:``}),(0,import_jsx_runtime.jsx)(DialogContent,{id:j,children:n?dialogContentMap[n]:null}),(0,import_jsx_runtime.jsx)(DialogActions,{children:(0,import_jsx_runtime.jsx)(Button,{onClick:u,color:`primary`,autoFocus:!0,children:`Close`})})]})]});Navigation.propTypes={activePlayers:import_prop_types$1.number,blockInput:import_prop_types$1.bool.isRequired,farmName:import_prop_types$1.string.isRequired,handleClickDialogViewButton:import_prop_types$1.func.isRequired,handleChatRoomOpenStateChange:import_prop_types$1.func.isRequired,handleActivePlayerButtonClick:import_prop_types$1.func.isRequired,handleCloseDialogView:import_prop_types$1.func.isRequired,handleDialogViewExited:import_prop_types$1.func.isRequired,handleFarmNameUpdate:import_prop_types$1.func.isRequired,handleOnlineToggleChange:import_prop_types$1.func.isRequired,handleRoomChange:import_prop_types$1.func.isRequired,handleViewChange:import_prop_types$1.func.isRequired,inventory:import_prop_types$1.array.isRequired,inventoryLimit:import_prop_types$1.number.isRequired,isChatAvailable:import_prop_types$1.bool.isRequired,isDialogViewOpen:import_prop_types$1.bool.isRequired,isOnline:import_prop_types$1.bool.isRequired,stageFocus:import_prop_types$1.string.isRequired,viewList:import_prop_types$1.array.isRequired};function Consumer$14(e){return(0,import_jsx_runtime.jsx)(FarmhandContext.Consumer,{children:({gameState:t,handlers:n})=>(0,import_jsx_runtime.jsx)(Navigation,{...t,...n,...e})})}var getNotificationKey=({message:e,severity:t})=>`${t}:${e}`,snackbarProviderContentCallback=(e,{message:t,onClick:n,severity:a})=>(0,import_jsx_runtime.jsx)(Alert,{elevation:3,key:e,onClick:n,severity:a,style:{cursor:n?`pointer`:`default`},children:(0,import_jsx_runtime.jsx)(import_react_markdown.default,{source:t})}),NotificationSystem=({enqueueSnackbar:e,latestNotification:t})=>((0,import_react$24.useEffect)(()=>{t&&e(t,{key:getNotificationKey(t),autoHideDuration:NOTIFICATION_DURATION,preventDuplicate:!0})},[e,t]),null);NotificationSystem.propTypes={latestNotification:(0,import_prop_types$1.shape)({message:import_prop_types$1.string.isRequired,onClick:import_prop_types$1.func,severity:import_prop_types$1.string.isRequired})};var NotificationSystem_default=withSnackbar(function(e){return(0,import_jsx_runtime.jsx)(FarmhandContext.Consumer,{children:({gameState:t,handlers:n})=>(0,import_jsx_runtime.jsx)(NotificationSystem,{...t,...n,...e})})}),require_ZoomIn=__commonJSMin((e=>{var t=require_interopRequireDefault();Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(require_createSvgIcon()),a=require_jsx_runtime();e.default=(0,n.default)([(0,a.jsx)(`path`,{d:`M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14`},`0`),(0,a.jsx)(`path`,{d:`M12 10h-2v2H9v-2H7V9h2V7h1v2h2z`},`1`)],`ZoomIn`)})),require_ZoomOut=__commonJSMin((e=>{var t=require_interopRequireDefault();Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(require_createSvgIcon()),a=require_jsx_runtime();e.default=(0,n.default)((0,a.jsx)(`path`,{d:`M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14M7 9h5v1H7z`}),`ZoomOut`)}));function areArraysEqual(e,t,n=(e,t)=>e===t){return e.length===t.length&&e.every((e,a)=>n(e,t[a]))}init_extends(),init_esm(),init_extractEventHandlers();var INTENTIONAL_DRAG_COUNT_THRESHOLD=2;function asc(e,t){return e-t}function findClosest(e,t){var n;let{index:a}=e.reduce((e,n,a)=>{let o=Math.abs(t-n);return e===null||o<e.distance||o===e.distance?{distance:o,index:a}:e},null)??{};return a}function trackFinger(e,t){if(t.current!==void 0&&e.changedTouches){let n=e;for(let e=0;e<n.changedTouches.length;e+=1){let a=n.changedTouches[e];if(a.identifier===t.current)return{x:a.clientX,y:a.clientY}}return!1}return{x:e.clientX,y:e.clientY}}function valueToPercent(e,t,n){return(e-t)*100/(n-t)}function percentToValue(e,t,n){return(n-t)*e+t}function getDecimalPrecision(e){if(Math.abs(e)<1){let t=e.toExponential().split(`e-`),n=t[0].split(`.`)[1];return(n?n.length:0)+parseInt(t[1],10)}let t=e.toString().split(`.`)[1];return t?t.length:0}function roundValueToStep(e,t,n){let a=Math.round((e-n)/t)*t+n;return Number(a.toFixed(getDecimalPrecision(t)))}function setValueIndex({values:e,newValue:t,index:n}){let a=e.slice();return a[n]=t,a.sort(asc)}function focusThumb({sliderRef:e,activeIndex:t,setActive:n}){var a,o;let s=ownerDocument(e.current);if(!((a=e.current)!=null&&a.contains(s.activeElement))||Number(s==null||(o=s.activeElement)==null?void 0:o.getAttribute(`data-index`))!==t){var l;(l=e.current)==null||l.querySelector(`[type="range"][data-index="${t}"]`).focus()}n&&n(t)}function areValuesEqual(e,t){return typeof e==`number`&&typeof t==`number`?e===t:typeof e==`object`&&typeof t==`object`&&areArraysEqual(e,t)}var axisProps={horizontal:{offset:e=>({left:`${e}%`}),leap:e=>({width:`${e}%`})},"horizontal-reverse":{offset:e=>({right:`${e}%`}),leap:e=>({width:`${e}%`})},vertical:{offset:e=>({bottom:`${e}%`}),leap:e=>({height:`${e}%`})}},Identity$1=e=>e,cachedSupportsTouchActionNone;function doesSupportTouchActionNone(){return cachedSupportsTouchActionNone===void 0&&(cachedSupportsTouchActionNone=typeof CSS<`u`&&typeof CSS.supports==`function`?CSS.supports(`touch-action`,`none`):!0),cachedSupportsTouchActionNone}function useSlider(e){let{"aria-labelledby":t,defaultValue:n,disabled:a=!1,disableSwap:o=!1,isRtl:s=!1,marks:l=!1,max:u=100,min:d=0,name:f,onChange:m,onChangeCommitted:h,orientation:v=`horizontal`,rootRef:y,scale:b=Identity$1,step:x=1,shiftStep:S=10,tabIndex:C,value:T}=e,E=import_react$24.useRef(void 0),[D,O]=import_react$24.useState(-1),[k,j]=import_react$24.useState(-1),[M,N]=import_react$24.useState(!1),F=import_react$24.useRef(0),[I,L]=useControlled({controlled:T,default:n??d,name:`Slider`}),R=m&&((e,t,n)=>{let a=e.nativeEvent||e,o=new a.constructor(a.type,a);Object.defineProperty(o,"target",{writable:!0,value:{value:t,name:f}}),m(o,t,n)}),z=Array.isArray(I),B=z?I.slice().sort(asc):[I];B=B.map(e=>e==null?d:clamp$1(e,d,u));let V=l===!0&&x!==null?[...Array(Math.floor((u-d)/x)+1)].map((e,t)=>({value:d+x*t})):l||[],H=V.map(e=>e.value),{isFocusVisibleRef:U,onBlur:W,onFocus:G,ref:ee}=useIsFocusVisible(),[te,K]=import_react$24.useState(-1),q=import_react$24.useRef(null),ne=useForkRef(y,useForkRef(ee,q)),re=e=>t=>{var n;let a=Number(t.currentTarget.getAttribute(`data-index`));G(t),U.current===!0&&K(a),j(a),e==null||(n=e.onFocus)==null||n.call(e,t)},J=e=>t=>{var n;W(t),U.current===!1&&K(-1),j(-1),e==null||(n=e.onBlur)==null||n.call(e,t)},ie=(e,t)=>{let n=Number(e.currentTarget.getAttribute(`data-index`)),a=B[n],s=H.indexOf(a),l=t;if(V&&x==null){let e=H[H.length-1];l=l>e?e:l<H[0]?H[0]:l<a?H[s-1]:H[s+1]}if(l=clamp$1(l,d,u),z){o&&(l=clamp$1(l,B[n-1]||-1/0,B[n+1]||1/0));let e=l;l=setValueIndex({values:B,newValue:l,index:n});let t=n;o||(t=l.indexOf(e)),focusThumb({sliderRef:q,activeIndex:t})}L(l),K(n),R&&!areValuesEqual(l,I)&&R(e,l,n),h&&h(e,l)},ae=e=>t=>{var n;if(x!==null){let e=Number(t.currentTarget.getAttribute(`data-index`)),n=B[e],a=null;(t.key===`ArrowLeft`||t.key===`ArrowDown`)&&t.shiftKey||t.key===`PageDown`?a=Math.max(n-S,d):((t.key===`ArrowRight`||t.key===`ArrowUp`)&&t.shiftKey||t.key===`PageUp`)&&(a=Math.min(n+S,u)),a!==null&&(ie(t,a),t.preventDefault())}e==null||(n=e.onKeyDown)==null||n.call(e,t)};useEnhancedEffect$1(()=>{if(a&&q.current.contains(document.activeElement)){var e;(e=document.activeElement)==null||e.blur()}},[a]),a&&D!==-1&&O(-1),a&&te!==-1&&K(-1);let oe=e=>t=>{var n;(n=e.onChange)==null||n.call(e,t),ie(t,t.target.valueAsNumber)},se=import_react$24.useRef(void 0),ce=v;s&&v===`horizontal`&&(ce+=`-reverse`);let Y=({finger:e,move:t=!1})=>{let{current:n}=q,{width:a,height:s,bottom:l,left:f}=n.getBoundingClientRect(),m;m=ce.indexOf(`vertical`)===0?(l-e.y)/s:(e.x-f)/a,ce.indexOf(`-reverse`)!==-1&&(m=1-m);let h;if(h=percentToValue(m,d,u),x)h=roundValueToStep(h,x,d);else{let e=findClosest(H,h);h=H[e]}h=clamp$1(h,d,u);let v=0;if(z){v=t?se.current:findClosest(B,h),o&&(h=clamp$1(h,B[v-1]||-1/0,B[v+1]||1/0));let e=h;h=setValueIndex({values:B,newValue:h,index:v}),o&&t||(v=h.indexOf(e),se.current=v)}return{newValue:h,activeIndex:v}},le=useEventCallback$1(e=>{let t=trackFinger(e,E);if(!t)return;if(F.current+=1,e.type===`mousemove`&&e.buttons===0){ue(e);return}let{newValue:n,activeIndex:a}=Y({finger:t,move:!0});focusThumb({sliderRef:q,activeIndex:a,setActive:O}),L(n),!M&&F.current>INTENTIONAL_DRAG_COUNT_THRESHOLD&&N(!0),R&&!areValuesEqual(n,I)&&R(e,n,a)}),ue=useEventCallback$1(e=>{let t=trackFinger(e,E);if(N(!1),!t)return;let{newValue:n}=Y({finger:t,move:!0});O(-1),e.type===`touchend`&&j(-1),h&&h(e,n),E.current=void 0,X()}),de=useEventCallback$1(e=>{if(a)return;doesSupportTouchActionNone()||e.preventDefault();let t=e.changedTouches[0];t!=null&&(E.current=t.identifier);let n=trackFinger(e,E);if(n!==!1){let{newValue:t,activeIndex:a}=Y({finger:n});focusThumb({sliderRef:q,activeIndex:a,setActive:O}),L(t),R&&!areValuesEqual(t,I)&&R(e,t,a)}F.current=0;let o=ownerDocument(q.current);o.addEventListener(`touchmove`,le,{passive:!0}),o.addEventListener(`touchend`,ue,{passive:!0})}),X=import_react$24.useCallback(()=>{let e=ownerDocument(q.current);e.removeEventListener(`mousemove`,le),e.removeEventListener(`mouseup`,ue),e.removeEventListener(`touchmove`,le),e.removeEventListener(`touchend`,ue)},[ue,le]);import_react$24.useEffect(()=>{let{current:e}=q;return e.addEventListener(`touchstart`,de,{passive:doesSupportTouchActionNone()}),()=>{e.removeEventListener(`touchstart`,de),X()}},[X,de]),import_react$24.useEffect(()=>{a&&X()},[a,X]);let fe=e=>t=>{var n;if((n=e.onMouseDown)==null||n.call(e,t),a||t.defaultPrevented||t.button!==0)return;t.preventDefault();let o=trackFinger(t,E);if(o!==!1){let{newValue:e,activeIndex:n}=Y({finger:o});focusThumb({sliderRef:q,activeIndex:n,setActive:O}),L(e),R&&!areValuesEqual(e,I)&&R(t,e,n)}F.current=0;let s=ownerDocument(q.current);s.addEventListener(`mousemove`,le,{passive:!0}),s.addEventListener(`mouseup`,ue)},pe=valueToPercent(z?B[0]:d,d,u),me=valueToPercent(B[B.length-1],d,u)-pe,he=(e={})=>{let t=extractEventHandlers(e),n=_extends$3({},t,{onMouseDown:fe(t||{})});return _extends$3({},e,{ref:ne},n)},ge=e=>t=>{var n;(n=e.onMouseOver)==null||n.call(e,t);let a=Number(t.currentTarget.getAttribute(`data-index`));j(a)},Z=e=>t=>{var n;(n=e.onMouseLeave)==null||n.call(e,t),j(-1)};return{active:D,axis:ce,axisProps,dragging:M,focusedThumbIndex:te,getHiddenInputProps:(n={})=>{var o;let l=extractEventHandlers(n),m=_extends$3({},l,{onChange:oe(l||{}),onFocus:re(l||{}),onBlur:J(l||{}),onKeyDown:ae(l||{})});return _extends$3({tabIndex:C,"aria-labelledby":t,"aria-orientation":v,"aria-valuemax":b(u),"aria-valuemin":b(d),name:f,type:`range`,min:e.min,max:e.max,step:e.step===null&&e.marks?`any`:e.step??void 0,disabled:a},n,m,{style:_extends$3({},visuallyHidden,{direction:s?`rtl`:`ltr`,width:`100%`,height:`100%`})})},getRootProps:he,getThumbProps:(e={})=>{let t=extractEventHandlers(e);return _extends$3({},e,t,{onMouseOver:ge(t||{}),onMouseLeave:Z(t||{})})},marks:V,open:k,range:z,rootRef:ne,trackLeap:me,trackOffset:pe,values:B,getThumbStyle:e=>({pointerEvents:D!==-1&&D!==e?`none`:void 0})}}init_isHostComponent();var shouldSpreadAdditionalProps=e=>!e||!isHostComponent(e);init_generateUtilityClasses(),init_generateUtilityClass();function getSliderUtilityClass(e){return generateUtilityClass(`MuiSlider`,e)}var sliderClasses=generateUtilityClasses(`MuiSlider`,`root.active.colorPrimary.colorSecondary.colorError.colorInfo.colorSuccess.colorWarning.disabled.dragging.focusVisible.mark.markActive.marked.markLabel.markLabelActive.rail.sizeSmall.thumb.thumbColorPrimary.thumbColorSecondary.thumbColorError.thumbColorSuccess.thumbColorInfo.thumbColorWarning.track.trackInverted.trackFalse.thumbSizeSmall.valueLabel.valueLabelOpen.valueLabelCircle.valueLabelLabel.vertical`.split(`.`));init_clsx();var useValueLabelClasses=e=>{let{open:t}=e;return{offset:clsx$1(t&&sliderClasses.valueLabelOpen),circle:sliderClasses.valueLabelCircle,label:sliderClasses.valueLabelLabel}};function SliderValueLabel$1(e){let{children:t,className:n,value:a}=e,o=useValueLabelClasses(e);return t?import_react$24.cloneElement(t,{className:clsx$1(t.props.className)},(0,import_jsx_runtime.jsxs)(import_react$24.Fragment,{children:[t.props.children,(0,import_jsx_runtime.jsx)(`span`,{className:clsx$1(o.offset,n),"aria-hidden":!0,children:(0,import_jsx_runtime.jsx)(`span`,{className:o.circle,children:(0,import_jsx_runtime.jsx)(`span`,{className:o.label,children:a})})})]})):null}init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_useSlotProps(),init_isHostComponent(),init_styled(),init_DefaultPropsProvider(),init_slotShouldForwardProp(),init_capitalize();var _excluded$1=`aria-label.aria-valuetext.aria-labelledby.component.components.componentsProps.color.classes.className.disableSwap.disabled.getAriaLabel.getAriaValueText.marks.max.min.name.onChange.onChangeCommitted.orientation.shiftStep.size.step.scale.slotProps.slots.tabIndex.track.value.valueLabelDisplay.valueLabelFormat`.split(`.`);function Identity(e){return e}var SliderRoot=styled$1(`span`,{name:`MuiSlider`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[`color${capitalize_default(n.color)}`],n.size!==`medium`&&t[`size${capitalize_default(n.size)}`],n.marked&&t.marked,n.orientation===`vertical`&&t.vertical,n.track===`inverted`&&t.trackInverted,n.track===!1&&t.trackFalse]}})(({theme:e})=>{var t;return{borderRadius:12,boxSizing:`content-box`,display:`inline-block`,position:`relative`,cursor:`pointer`,touchAction:`none`,WebkitTapHighlightColor:`transparent`,"@media print":{colorAdjust:`exact`},[`&.${sliderClasses.disabled}`]:{pointerEvents:`none`,cursor:`default`,color:(e.vars||e).palette.grey[400]},[`&.${sliderClasses.dragging}`]:{[`& .${sliderClasses.thumb}, & .${sliderClasses.track}`]:{transition:`none`}},variants:[...Object.keys((e.vars??e).palette).filter(t=>{var n;return(e.vars??e).palette[t].main}).map(t=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})),{props:{orientation:`horizontal`},style:{height:4,width:`100%`,padding:`13px 0`,"@media (pointer: coarse)":{padding:`20px 0`}}},{props:{orientation:`horizontal`,size:`small`},style:{height:2}},{props:{orientation:`horizontal`,marked:!0},style:{marginBottom:20}},{props:{orientation:`vertical`},style:{height:`100%`,width:4,padding:`0 13px`,"@media (pointer: coarse)":{padding:`0 20px`}}},{props:{orientation:`vertical`,size:`small`},style:{width:2}},{props:{orientation:`vertical`,marked:!0},style:{marginRight:44}}]}}),SliderRail=styled$1(`span`,{name:`MuiSlider`,slot:`Rail`,overridesResolver:(e,t)=>t.rail})({display:`block`,position:`absolute`,borderRadius:`inherit`,backgroundColor:`currentColor`,opacity:.38,variants:[{props:{orientation:`horizontal`},style:{width:`100%`,height:`inherit`,top:`50%`,transform:`translateY(-50%)`}},{props:{orientation:`vertical`},style:{height:`100%`,width:`inherit`,left:`50%`,transform:`translateX(-50%)`}},{props:{track:`inverted`},style:{opacity:1}}]}),SliderTrack=styled$1(`span`,{name:`MuiSlider`,slot:`Track`,overridesResolver:(e,t)=>t.track})(({theme:e})=>{var t;return{display:`block`,position:`absolute`,borderRadius:`inherit`,border:`1px solid currentColor`,backgroundColor:`currentColor`,transition:e.transitions.create([`left`,`width`,`bottom`,`height`],{duration:e.transitions.duration.shortest}),variants:[{props:{size:`small`},style:{border:`none`}},{props:{orientation:`horizontal`},style:{height:`inherit`,top:`50%`,transform:`translateY(-50%)`}},{props:{orientation:`vertical`},style:{width:`inherit`,left:`50%`,transform:`translateX(-50%)`}},{props:{track:!1},style:{display:`none`}},...Object.keys((e.vars??e).palette).filter(t=>{var n;return(e.vars??e).palette[t].main}).map(t=>({props:{color:t,track:`inverted`},style:_extends$3({},e.vars?{backgroundColor:e.vars.palette.Slider[`${t}Track`],borderColor:e.vars.palette.Slider[`${t}Track`]}:_extends$3({backgroundColor:(0,import_colorManipulator.lighten)(e.palette[t].main,.62),borderColor:(0,import_colorManipulator.lighten)(e.palette[t].main,.62)},e.applyStyles(`dark`,{backgroundColor:(0,import_colorManipulator.darken)(e.palette[t].main,.5)}),e.applyStyles(`dark`,{borderColor:(0,import_colorManipulator.darken)(e.palette[t].main,.5)})))}))]}}),SliderThumb=styled$1(`span`,{name:`MuiSlider`,slot:`Thumb`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.thumb,t[`thumbColor${capitalize_default(n.color)}`],n.size!==`medium`&&t[`thumbSize${capitalize_default(n.size)}`]]}})(({theme:e})=>{var t;return{position:`absolute`,width:20,height:20,boxSizing:`border-box`,borderRadius:`50%`,outline:0,backgroundColor:`currentColor`,display:`flex`,alignItems:`center`,justifyContent:`center`,transition:e.transitions.create([`box-shadow`,`left`,`bottom`],{duration:e.transitions.duration.shortest}),"&::before":{position:`absolute`,content:`""`,borderRadius:`inherit`,width:`100%`,height:`100%`,boxShadow:(e.vars||e).shadows[2]},"&::after":{position:`absolute`,content:`""`,borderRadius:`50%`,width:42,height:42,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`},[`&.${sliderClasses.disabled}`]:{"&:hover":{boxShadow:`none`}},variants:[{props:{size:`small`},style:{width:12,height:12,"&::before":{boxShadow:`none`}}},{props:{orientation:`horizontal`},style:{top:`50%`,transform:`translate(-50%, -50%)`}},{props:{orientation:`vertical`},style:{left:`50%`,transform:`translate(-50%, 50%)`}},...Object.keys((e.vars??e).palette).filter(t=>{var n;return(e.vars??e).palette[t].main}).map(t=>({props:{color:t},style:{[`&:hover, &.${sliderClasses.focusVisible}`]:_extends$3({},e.vars?{boxShadow:`0px 0px 0px 8px rgba(${e.vars.palette[t].mainChannel} / 0.16)`}:{boxShadow:`0px 0px 0px 8px ${(0,import_colorManipulator.alpha)(e.palette[t].main,.16)}`},{"@media (hover: none)":{boxShadow:`none`}}),[`&.${sliderClasses.active}`]:_extends$3({},e.vars?{boxShadow:`0px 0px 0px 14px rgba(${e.vars.palette[t].mainChannel} / 0.16)`}:{boxShadow:`0px 0px 0px 14px ${(0,import_colorManipulator.alpha)(e.palette[t].main,.16)}`})}}))]}}),SliderValueLabel=styled$1(SliderValueLabel$1,{name:`MuiSlider`,slot:`ValueLabel`,overridesResolver:(e,t)=>t.valueLabel})(({theme:e})=>_extends$3({zIndex:1,whiteSpace:`nowrap`},e.typography.body2,{fontWeight:500,transition:e.transitions.create([`transform`],{duration:e.transitions.duration.shortest}),position:`absolute`,backgroundColor:(e.vars||e).palette.grey[600],borderRadius:2,color:(e.vars||e).palette.common.white,display:`flex`,alignItems:`center`,justifyContent:`center`,padding:`0.25rem 0.75rem`,variants:[{props:{orientation:`horizontal`},style:{transform:`translateY(-100%) scale(0)`,top:`-10px`,transformOrigin:`bottom center`,"&::before":{position:`absolute`,content:`""`,width:8,height:8,transform:`translate(-50%, 50%) rotate(45deg)`,backgroundColor:`inherit`,bottom:0,left:`50%`},[`&.${sliderClasses.valueLabelOpen}`]:{transform:`translateY(-100%) scale(1)`}}},{props:{orientation:`vertical`},style:{transform:`translateY(-50%) scale(0)`,right:`30px`,top:`50%`,transformOrigin:`right center`,"&::before":{position:`absolute`,content:`""`,width:8,height:8,transform:`translate(-50%, -50%) rotate(45deg)`,backgroundColor:`inherit`,right:-8,top:`50%`},[`&.${sliderClasses.valueLabelOpen}`]:{transform:`translateY(-50%) scale(1)`}}},{props:{size:`small`},style:{fontSize:e.typography.pxToRem(12),padding:`0.25rem 0.5rem`}},{props:{orientation:`vertical`,size:`small`},style:{right:`20px`}}]})),SliderMark=styled$1(`span`,{name:`MuiSlider`,slot:`Mark`,shouldForwardProp:e=>slotShouldForwardProp(e)&&e!==`markActive`,overridesResolver:(e,t)=>{let{markActive:n}=e;return[t.mark,n&&t.markActive]}})(({theme:e})=>({position:`absolute`,width:2,height:2,borderRadius:1,backgroundColor:`currentColor`,variants:[{props:{orientation:`horizontal`},style:{top:`50%`,transform:`translate(-1px, -50%)`}},{props:{orientation:`vertical`},style:{left:`50%`,transform:`translate(-50%, 1px)`}},{props:{markActive:!0},style:{backgroundColor:(e.vars||e).palette.background.paper,opacity:.8}}]})),SliderMarkLabel=styled$1(`span`,{name:`MuiSlider`,slot:`MarkLabel`,shouldForwardProp:e=>slotShouldForwardProp(e)&&e!==`markLabelActive`,overridesResolver:(e,t)=>t.markLabel})(({theme:e})=>_extends$3({},e.typography.body2,{color:(e.vars||e).palette.text.secondary,position:`absolute`,whiteSpace:`nowrap`,variants:[{props:{orientation:`horizontal`},style:{top:30,transform:`translateX(-50%)`,"@media (pointer: coarse)":{top:40}}},{props:{orientation:`vertical`},style:{left:36,transform:`translateY(50%)`,"@media (pointer: coarse)":{left:44}}},{props:{markLabelActive:!0},style:{color:(e.vars||e).palette.text.primary}}]})),useUtilityClasses$1=e=>{let{disabled:t,dragging:n,marked:a,orientation:o,track:s,classes:l,color:u,size:d}=e;return composeClasses({root:[`root`,t&&`disabled`,n&&`dragging`,a&&`marked`,o===`vertical`&&`vertical`,s===`inverted`&&`trackInverted`,s===!1&&`trackFalse`,u&&`color${capitalize_default(u)}`,d&&`size${capitalize_default(d)}`],rail:[`rail`],track:[`track`],mark:[`mark`],markActive:[`markActive`],markLabel:[`markLabel`],markLabelActive:[`markLabelActive`],valueLabel:[`valueLabel`],thumb:[`thumb`,t&&`disabled`,d&&`thumbSize${capitalize_default(d)}`,u&&`thumbColor${capitalize_default(u)}`],active:[`active`],disabled:[`disabled`],focusVisible:[`focusVisible`]},getSliderUtilityClass,l)},Forward=({children:e})=>e,Slider=import_react$24.forwardRef(function(e,t){var n,a,o,s,l,u,d,f,m,h,v,y,b,x,S,C,T,E,D,O,k,j,M,N;let F=useDefaultProps({props:e,name:`MuiSlider`}),I=useRtl(),{"aria-label":L,"aria-valuetext":R,"aria-labelledby":z,component:B=`span`,components:V={},componentsProps:H={},color:U=`primary`,classes:W,className:G,disableSwap:ee=!1,disabled:te=!1,getAriaLabel:K,getAriaValueText:q,marks:ne=!1,max:re=100,min:J=0,orientation:ie=`horizontal`,shiftStep:ae=10,size:oe=`medium`,step:se=1,scale:ce=Identity,slotProps:Y,slots:le,track:ue=`normal`,valueLabelDisplay:de=`off`,valueLabelFormat:X=Identity}=F,fe=_objectWithoutPropertiesLoose$3(F,_excluded$1),pe=_extends$3({},F,{isRtl:I,max:re,min:J,classes:W,disabled:te,disableSwap:ee,orientation:ie,marks:ne,color:U,size:oe,step:se,shiftStep:ae,scale:ce,track:ue,valueLabelDisplay:de,valueLabelFormat:X}),{axisProps:me,getRootProps:he,getHiddenInputProps:ge,getThumbProps:Z,open:_e,active:Q,axis:$,focusedThumbIndex:ve,range:ye,dragging:be,marks:xe,values:Se,trackOffset:Ce,trackLeap:we,getThumbStyle:Te}=useSlider(_extends$3({},pe,{rootRef:t}));pe.marked=xe.length>0&&xe.some(e=>e.label),pe.dragging=be,pe.focusedThumbIndex=ve;let Ee=useUtilityClasses$1(pe),De=le?.root??V.Root??SliderRoot,Oe=le?.rail??V.Rail??SliderRail,ke=le?.track??V.Track??SliderTrack,Ae=le?.thumb??V.Thumb??SliderThumb,je=le?.valueLabel??V.ValueLabel??SliderValueLabel,Me=le?.mark??V.Mark??SliderMark,Ne=le?.markLabel??V.MarkLabel??SliderMarkLabel,Pe=le?.input??V.Input??`input`,Fe=Y?.root??H.root,Ie=Y?.rail??H.rail,Le=Y?.track??H.track,Re=Y?.thumb??H.thumb,ze=Y?.valueLabel??H.valueLabel,Be=Y?.mark??H.mark,Ve=Y?.markLabel??H.markLabel,He=Y?.input??H.input,Ue=useSlotProps({elementType:De,getSlotProps:he,externalSlotProps:Fe,externalForwardedProps:fe,additionalProps:_extends$3({},shouldSpreadAdditionalProps(De)&&{as:B}),ownerState:_extends$3({},pe,Fe?.ownerState),className:[Ee.root,G]}),We=useSlotProps({elementType:Oe,externalSlotProps:Ie,ownerState:pe,className:Ee.rail}),Ge=useSlotProps({elementType:ke,externalSlotProps:Le,additionalProps:{style:_extends$3({},me[$].offset(Ce),me[$].leap(we))},ownerState:_extends$3({},pe,Le?.ownerState),className:Ee.track}),Ke=useSlotProps({elementType:Ae,getSlotProps:Z,externalSlotProps:Re,ownerState:_extends$3({},pe,Re?.ownerState),className:Ee.thumb}),qe=useSlotProps({elementType:je,externalSlotProps:ze,ownerState:_extends$3({},pe,ze?.ownerState),className:Ee.valueLabel}),Je=useSlotProps({elementType:Me,externalSlotProps:Be,ownerState:pe,className:Ee.mark}),Ye=useSlotProps({elementType:Ne,externalSlotProps:Ve,ownerState:pe,className:Ee.markLabel}),Xe=useSlotProps({elementType:Pe,getSlotProps:ge,externalSlotProps:He,ownerState:pe});return(0,import_jsx_runtime.jsxs)(De,_extends$3({},Ue,{children:[(0,import_jsx_runtime.jsx)(Oe,_extends$3({},We)),(0,import_jsx_runtime.jsx)(ke,_extends$3({},Ge)),xe.filter(e=>e.value>=J&&e.value<=re).map((e,t)=>{let n=valueToPercent(e.value,J,re),a=me[$].offset(n),o;return o=ue===!1?Se.indexOf(e.value)!==-1:ue===`normal`&&(ye?e.value>=Se[0]&&e.value<=Se[Se.length-1]:e.value<=Se[0])||ue===`inverted`&&(ye?e.value<=Se[0]||e.value>=Se[Se.length-1]:e.value>=Se[0]),(0,import_jsx_runtime.jsxs)(import_react$24.Fragment,{children:[(0,import_jsx_runtime.jsx)(Me,_extends$3({"data-index":t},Je,!isHostComponent(Me)&&{markActive:o},{style:_extends$3({},a,Je.style),className:clsx$1(Je.className,o&&Ee.markActive)})),e.label==null?null:(0,import_jsx_runtime.jsx)(Ne,_extends$3({"aria-hidden":!0,"data-index":t},Ye,!isHostComponent(Ne)&&{markLabelActive:o},{style:_extends$3({},a,Ye.style),className:clsx$1(Ee.markLabel,Ye.className,o&&Ee.markLabelActive),children:e.label}))]},t)}),Se.map((e,t)=>{let n=valueToPercent(e,J,re),a=me[$].offset(n),o=de===`off`?Forward:je;return(0,import_jsx_runtime.jsx)(o,_extends$3({},!isHostComponent(o)&&{valueLabelFormat:X,valueLabelDisplay:de,value:typeof X==`function`?X(ce(e),t):X,index:t,open:_e===t||Q===t||de===`on`,disabled:te},qe,{children:(0,import_jsx_runtime.jsx)(Ae,_extends$3({"data-index":t},Ke,{className:clsx$1(Ee.thumb,Ke.className,Q===t&&Ee.active,ve===t&&Ee.focusVisible),style:_extends$3({},a,Te(t),Ke.style),children:(0,import_jsx_runtime.jsx)(Pe,_extends$3({"data-index":t,"aria-label":K?K(t):L,"aria-valuenow":ce(e),"aria-labelledby":z,"aria-valuetext":q?q(ce(e),t):R,value:Se[t]},Xe))}))}),t)})]}))}),import_ZoomIn=__toESM(require_ZoomIn()),import_ZoomOut=__toESM(require_ZoomOut()),extendStatics$1=function(e,t){return extendStatics$1=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},extendStatics$1(e,t)};function __extends$1(e,t){extendStatics$1(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var __assign$1=function(){return __assign$1=Object.assign||function(e){for(var t,n=1,a=arguments.length;n<a;n++)for(var o in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},__assign$1.apply(this,arguments)};function __rest$1(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var o=0,a=Object.getOwnPropertySymbols(e);o<a.length;o++)t.indexOf(a[o])<0&&Object.prototype.propertyIsEnumerable.call(e,a[o])&&(n[a[o]]=e[a[o]]);return n}var initialState={wrapperComponent:null,contentComponent:null,previousScale:1,scale:1,positionX:0,positionY:0,options:{disabled:!1,transformEnabled:!0,minPositionX:null,maxPositionX:null,minPositionY:null,maxPositionY:null,minScale:1,maxScale:8,limitToBounds:!0,limitToWrapper:!1,centerContent:!0,wrapperClass:``,contentClass:``},wheel:{disabled:!1,step:5,wheelEnabled:!0,touchPadEnabled:!0,limitsOnWheel:!1},pan:{disabled:!1,panAnimationType:`linear`,lockAxisX:!1,lockAxisY:!1,velocity:!0,velocityEqualToMove:!0,velocitySensitivity:2,velocityActiveScale:1,velocityMinSpeed:1,velocityBaseTime:1600,velocityAnimationType:`easeOutQuart`,padding:!0,paddingSize:30,panReturnAnimationTime:400,panReturnAnimationType:`easeOut`,disableOnTarget:[]},pinch:{disabled:!1},zoomIn:{disabled:!1,step:20,animation:!0,animationType:`easeOut`,animationTime:200},zoomOut:{disabled:!1,step:20,animation:!0,animationType:`easeOut`,animationTime:200},doubleClick:{disabled:!1,step:20,mode:`zoomIn`,animation:!0,animationType:`easeOut`,animationTime:200},reset:{disabled:!1,animation:!0,animationType:`easeOut`,animationTime:200},scalePadding:{disabled:!1,size:.2,animationTime:200,animationType:`easeOut`}},roundNumber=function(e,t){return Number(e.toFixed(t))},checkIsNumber=function(e,t){return typeof e==`number`?e:t},boundLimiter=function(e,t,n,a){return roundNumber(a?e<t?t:e>n?n:e:e,2)},calculateBoundingArea=function(e,t,n,a,o,s,l){var u=e>t?n*(l?1:.5):0,d=a>o?s*(l?1:.5):0;return{minPositionX:e-t-u,maxPositionX:u,minPositionY:a-o-d,maxPositionY:d}},getDistance=function(e,t){return Math.sqrt((e.pageX-t.pageX)**2+(e.pageY-t.pageY)**2)},deleteUndefinedProps=function(e){var t=__assign$1({},e);return Object.keys(t).forEach(function(e){return t[e]===void 0&&delete t[e]}),t},handleCallback=function(e,t){e&&typeof e==`function`&&e(t)},handleWheelStop=function(e,t,n){var a=n.scale,o=n.options,s=o.maxScale,l=o.minScale;return e?a<s||a>l||Math.sign(e.deltaY)!==Math.sign(t.deltaY)||e.deltaY>0&&e.deltaY<t.deltaY||e.deltaY<0&&e.deltaY>t.deltaY||Math.sign(e.deltaY)!==Math.sign(t.deltaY):!1},mergeProps=function(e,t){return Object.keys(e).reduce(function(n,a){return typeof t[a]==`object`&&t[a]!==null?n[a]=__assign$1(__assign$1({},e[a]),t[a]):n[a]=t[a]===void 0?e[a]:t[a],n},{})};function getWindowScaleY(e){return e?window.innerHeight/e.offsetHeight:0}function getWindowScaleX(e){return e?window.innerWidth/e.offsetWidth:0}var easeOut=function(e){return-Math.cos(e*Math.PI)/2+.5},linear=function(e){return e},easeInQuad=function(e){return e*e},easeOutQuad=function(e){return e*(2-e)},easeInOutQuad=function(e){return e<.5?2*e*e:-1+(4-2*e)*e},easeInCubic=function(e){return e*e*e},easeOutCubic=function(e){return--e*e*e+1},easeInOutCubic=function(e){return e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1},easeInQuart=function(e){return e*e*e*e},easeOutQuart=function(e){return 1- --e*e*e*e},easeInOutQuart=function(e){return e<.5?8*e*e*e*e:1-8*--e*e*e*e},easeInQuint=function(e){return e*e*e*e*e},easeOutQuint=function(e){return 1+--e*e*e*e*e},easeInOutQuint=function(e){return e<.5?16*e*e*e*e*e:1+16*--e*e*e*e*e},availableAnimations={easeOut,linear,easeInQuad,easeOutQuad,easeInOutQuad,easeInCubic,easeOutCubic,easeInOutCubic,easeInQuart,easeOutQuart,easeInOutQuart,easeInQuint,easeOutQuint,easeInOutQuint};function handleDisableAnimation(){this.mounted&&(this.animation&&cancelAnimationFrame(this.animation),this.animate=!1,this.animation=!1,this.velocity=!1)}function animate(e,t,n){var a=this;if(this.mounted){var o=new Date().getTime(),s=1;handleDisableAnimation.call(this),this.animation=function(){if(!(!a.animation||!a.mounted)){var l=new Date().getTime()-o,u=l/t,d=availableAnimations[e],f=d(u);l>=t?(n(s),a.animation=null):(n(f),requestAnimationFrame(a.animation))}},requestAnimationFrame(this.animation)}}function animateComponent(e){var t=this,n=e.targetState,a=e.speed,o=e.type,s=this.stateProvider,l=s.scale,u=s.positionX,d=s.positionY,f=n.scale-l,m=n.positionX-u,h=n.positionY-d;a===0?(this.stateProvider.previousScale=this.stateProvider.scale,this.stateProvider.scale=n.scale,this.stateProvider.positionX=n.positionX,this.stateProvider.positionY=n.positionY,this.applyTransformation()):animate.call(this,o,a,function(e){t.stateProvider.previousScale=t.stateProvider.scale,t.stateProvider.scale=l+f*e,t.stateProvider.positionX=u+m*e,t.stateProvider.positionY=d+h*e,t.applyTransformation()})}function checkZoomBounds(e,t,n,a,o){var s=t-(o?a:0);return!isNaN(n)&&e>=n?n:!isNaN(t)&&e<=s?s:e}function checkPositionBounds(e,t,n,a,o,s){var l=n.minPositionX,u=n.minPositionY,d=n.maxPositionX,f=n.maxPositionY,m=s?o*s.offsetWidth/100:0,h=s?o*s.offsetHeight/100:0;return{x:boundLimiter(e,l-m,d+m,a),y:boundLimiter(t,u-h,f+h,a)}}function getDelta(e,t){return checkIsNumber(t,e?e.deltaY<0?1:-1:0)}function wheelMousePosition(e,t,n){var a=t.getBoundingClientRect(),o=(e.clientX-a.left)/n,s=(e.clientY-a.top)/n;return(isNaN(o)||isNaN(s))&&console.error(`No mouse or touch offset found`),{mouseX:o,mouseY:s}}function getComponentsSizes(e,t,n){var a=e.offsetWidth,o=e.offsetHeight,s=t.offsetWidth,l=t.offsetHeight,u=s*n,d=l*n;return{wrapperWidth:a,wrapperHeight:o,newContentWidth:u,newDiffWidth:a-u,newContentHeight:d,newDiffHeight:o-d}}function handleCalculatePositions(e,t,n,a,o){var s=this.stateProvider,l=s.scale,u=s.positionX,d=s.positionY,f=s.options.transformEnabled,m=n-l;return typeof e!=`number`||typeof t!=`number`?console.error(`Mouse X and Y position were not provided!`):f?checkPositionBounds(u-e*m,d-t*m,a,o,0,null):{newPositionX:u,newPositionY:d}}function getClientPosition(e){var t=e.touches;return t&&t.length===1?{clientX:t[0].clientX,clientY:t[0].clientY}:t?null:{clientX:e.clientX,clientY:e.clientY}}function handlePanning(e){var t=this.stateProvider,n=t.scale,a=t.positionX,o=t.positionY,s=t.options,l=s.limitToBounds,u=s.minScale,d=t.pan,f=d.lockAxisX,m=d.lockAxisY,h=d.padding,v=d.paddingSize,y=t.wrapperComponent;if(this.startCoords){var b=this.startCoords,x=b.x,S=b.y,C=getClientPosition(e);if(!C)return console.error(`Cannot find mouse client positions`);var T=C.clientX,E=C.clientY,D=T-x,O=E-S,k=f?a:D,j=m?o:O,M=h&&n>=u?v:0;if(!(k===a&&j===o)){var N=checkPositionBounds(k,j,this.bounds,l,M,y);handlePaddingAnimation.call(this,N.x,N.y)}}}function handlePanningAnimation(){var e=this.stateProvider,t=e.scale,n=e.options.minScale,a=e.pan,o=a.disabled,s=a.padding,l=a.panReturnAnimationTime,u=a.panReturnAnimationType;if(!(o||t<n||!s)){var d=handlePanToBounds.call(this);animateComponent.call(this,{targetState:d,speed:l,type:u})}}function handlePanToBounds(){var e=this.stateProvider,t=e.positionX,n=e.positionY,a=e.scale,o=e.options,s=o.disabled,l=o.limitToBounds,u=o.limitToWrapper,d=this.state.wrapperComponent;if(!s){var f=this.bounds,m=f.maxPositionX,h=f.minPositionX,v=f.maxPositionY,y=f.minPositionY,b=t>m||t<h,x=n>v||n<y,S=t>m?d.offsetWidth:this.stateProvider.minPositionX||0,C=n>v?d.offsetHeight:this.stateProvider.minPositionY||0,T=S,E=C,D=handleCalculatePositions.call(this,T,E,a,this.bounds,l||u),O=D.x,k=D.y;return{scale:a,positionX:b?O:t,positionY:x?k:n}}}function handlePaddingAnimation(e,t){this.stateProvider.pan.padding&&(this.stateProvider.positionX=e,this.stateProvider.positionY=t,this.applyTransformation())}function handleCalculateZoom(e,t,n,a,o){var s=this.stateProvider,l=s.scale,u=s.options,d=u.maxScale,f=u.minScale,m=s.scalePadding,h=m.size,v=m.disabled,y=s.wrapperComponent,b=null;if(o){var x=window.innerWidth*1e-4,S=e<0?30:20;b=l+(t-t*x)*e*(l/S)}else{var C=2-window.innerWidth/y.offsetWidth,x=Math.max(.2,Math.min(.99,C)),S=20;b=l+t*e*((l-l*x)/S)}if(a)return b;var T=!n&&!v;return checkZoomBounds(roundNumber(b,3),f,d,h,T)}function handleCalculateBounds(e,t){var n=this.stateProvider,a=n.wrapperComponent,o=n.contentComponent,s=getComponentsSizes(a,o,e),l=s.wrapperWidth,u=s.wrapperHeight,d=s.newContentWidth,f=s.newDiffWidth,m=s.newContentHeight,h=s.newDiffHeight,v=calculateBoundingArea(l,d,f,u,m,h,t);return this.bounds=v,v}function handleWheelZoom(e){var t=this.stateProvider,n=t.scale,a=t.contentComponent,o=t.options.limitToBounds,s=t.scalePadding,l=s.size,u=s.disabled,d=t.wheel,f=d.step,m=d.limitsOnWheel;e.preventDefault(),e.stopPropagation();var h=getDelta(e,null),v=handleCalculateZoom.call(this,h,f,!e.ctrlKey);if(n!==v){var y=handleCalculateBounds.call(this,v,!m),b=wheelMousePosition(e,a,n),x=b.mouseX,S=b.mouseY,C=o&&(u||l===0||m),T=handleCalculatePositions.call(this,x,S,v,y,C),E=T.x,D=T.y;this.bounds=y,this.stateProvider.previousScale=n,this.stateProvider.scale=v,this.stateProvider.positionX=E,this.stateProvider.positionY=D,this.applyTransformation()}}function handleZoomToPoint(e,t,n,a,o){var s=this.stateProvider,l=s.contentComponent,u=s.options,d=u.disabled,f=u.minScale,m=u.maxScale,h=u.limitToBounds,v=u.limitToWrapper;if(!(d||e)){var y=checkZoomBounds(roundNumber(t,2),f,m,null,null),b=handleCalculateBounds.call(this,y,v),x=n,S=a;if(o){var C=wheelMousePosition(o,l,t);x=C.mouseX,S=C.mouseY}var T=handleCalculatePositions.call(this,x,S,y,b,h);return{scale:y,positionX:T.x,positionY:T.y}}}function handlePaddingAnimation$1(){var e=this.stateProvider,t=e.scale,n=e.wrapperComponent,a=e.options,o=a.minScale,s=a.limitToBounds,l=e.scalePadding,u=l.disabled,d=l.animationTime,f=l.animationType,m=u||t>=o;if((t>=1||s)&&handlePanningAnimation.call(this),!m){var h=n.offsetWidth/2,v=n.offsetHeight/2,y=handleZoomToPoint.call(this,!1,o,h,v,null);animateComponent.call(this,{targetState:y,speed:d,type:f})}}function handleDoubleClick(e){e.preventDefault(),e.stopPropagation();var t=this.stateProvider,n=t.contentComponent,a=t.scale,o=t.doubleClick,s=o.disabled,l=o.mode,u=o.step,d=o.animationTime,f=o.animationType;if(l===`reset`)return resetTransformations.call(this,e,d);var m=l===`zoomOut`?-1:1,h=handleCalculateZoom.call(this,m,u,void 0,void 0,!0),v=wheelMousePosition(e,n,a),y=v.mouseX,b=v.mouseY,x=handleZoomToPoint.call(this,s,h,y,b);if(x.scale!==a){var S=getButtonAnimationTime(handleCalculateZoom.call(this,m,u,!0,void 0,!0),h,d);animateComponent.call(this,{targetState:x,speed:S,type:f})}}function handleZoomControls(e,t){var n=this.stateProvider,a=n.scale,o=n.positionX,s=n.positionY,l=n.wrapperComponent,u=n.zoomIn,d=n.zoomOut,f=l.offsetWidth,m=l.offsetHeight,h=(f/2-o)/a,v=(m/2-s)/a,y=handleCalculateZoom.call(this,e,t,void 0,void 0,!0),b=y>a,x=b?u.animationTime:d.animationTime,S=b?u.animationType:d.animationType,C=b?u.disabled:d.disabled,T=handleZoomToPoint.call(this,C,y,h,v);if(T.scale!==a){var E=getButtonAnimationTime(handleCalculateZoom.call(this,e,t,!0,void 0,!0),y,x);animateComponent.call(this,{targetState:T,speed:E,type:S})}}function resetTransformations(e){var t=this.props.defaultValues,n=t.defaultScale,a=t.defaultPositionX,o=t.defaultPositionY,s=this.stateProvider,l=s.scale,u=s.positionX,d=s.positionY,f=s.reset,m=s.options,h=m.disabled,v=m.limitToBounds,y=m.centerContent,b=m.limitToWrapper;if(!(h||f.disabled)&&!(l===n&&u===a&&d===o)){var x=typeof e==`number`?e:f.animationTime,S=checkIsNumber(n,initialState.scale),C=checkIsNumber(a,initialState.positionX),T=checkIsNumber(o,initialState.positionY);if(v&&!b||y){var E=handleCalculateBounds.call(this,S,b);C=E.minPositionX,T=E.minPositionY}var D={scale:S,positionX:C,positionY:T};animateComponent.call(this,{targetState:D,speed:x,type:f.animationType})}}function getButtonAnimationTime(e,t,n){return t/e*n}function round(e,t){var n=10**t;return Math.round(e*n)/n}function getCurrentDistance(e){return getDistance(e.touches[0],e.touches[1])}function checkIfInfinite(e){return e===1/0||e===-1/0}function calculatePinchZoom(e,t){var n=this.stateProvider,a=n.options,o=a.minScale,s=a.maxScale,l=n.scalePadding,u=l.size,d=l.disabled;if(typeof t!=`number`||typeof e!=`number`)return console.error(`Pinch touches distance was not provided`);if(!(e<0))return checkZoomBounds(roundNumber(e/t*this.pinchStartScale,2),o,s,u,!d)}function calculateMidpoint(e,t,n){var a=n.getBoundingClientRect(),o=e.touches,s=round(o[0].clientX-a.left,5),l=round(o[0].clientY-a.top,5),u=round(o[1].clientX-a.left,5),d=round(o[1].clientY-a.top,5);return{mouseX:(s+u)/2/t,mouseY:(l+d)/2/t}}function handleZoomPinch(e){var t=this.stateProvider,n=t.scale,a=t.options,o=a.limitToBounds,s=a.limitToWrapper,l=t.scalePadding,u=l.disabled,d=l.size,f=t.wheel.limitsOnWheel,m=t.pinch,h=this.state.contentComponent;if(!(m.disabled||this.stateProvider.options.disabled)&&(e.cancelable&&(e.preventDefault(),e.stopPropagation()),this.pinchStartDistance!==null)){var v=calculateMidpoint(e,n,h),y=v.mouseX,b=v.mouseY;if(!(checkIfInfinite(y)||checkIfInfinite(b))){var x=getCurrentDistance(e),S=calculatePinchZoom.call(this,x,this.pinchStartDistance);if(!(checkIfInfinite(S)||S===n)){var C=handleCalculateBounds.call(this,S,s),T=o&&(u||d===0||f),E=handleCalculatePositions.call(this,y,b,S,C,T),D=E.x,O=E.y;this.lastDistance=x,this.stateProvider.positionX=D,this.stateProvider.positionY=O,this.stateProvider.scale=S,this.stateProvider.previousScale=n,this.applyTransformation()}}}}var throttleTime=30;function velocityTimeSpeed(e,t){return this.stateProvider.pan.velocityEqualToMove?t-t/Math.max(1,e):t}function handleEnableVelocity(){this.setState({startAnimation:!1})}function handleFireVelocity(){this.setState({startAnimation:!0})}function animateVelocity(){var e=this,t=this.stateProvider,n=t.positionX,a=t.positionY,o=t.options.limitToBounds,s=t.pan,l=s.velocityBaseTime,u=s.lockAxisX,d=s.lockAxisY,f=s.velocityAnimationType,m=s.panReturnAnimationTime,h=s.panReturnAnimationType,v=s.padding,y=s.paddingSize,b=t.wrapperComponent;if(this.mounted){if(!this.velocity||!this.bounds)return handleDisableAnimation.call(this);var x=this.bounds,S=x.maxPositionX,C=x.minPositionX,T=x.maxPositionY,E=x.minPositionY,D=this.velocity,O=D.velocityX,k=D.velocityY,j=D.velocity,M=velocityTimeSpeed.call(this,j,l);if(!M){handlePanningAnimation.call(this);return}var N=O,F=k,I=M>m?M:m,L=v?y:0,R=b?L*b.offsetWidth/100:0,z=b?L*b.offsetHeight/100:0,B=S+R,V=C-R,H=T+z,U=E-z,W=checkPositionBounds(n,a,this.bounds,o,L,b),G=new Date().getTime();animate.call(this,f,I,function(t){var s=new Date().getTime()-G,l=s/m,f=availableAnimations[h],v=f(l);(s>m||v>1||v===1/0||v===-1/0)&&(v=1);var y=getPosition(u,N,t,v,C,S,o,n,W.x,V,B),b=getPosition(d,F,t,v,E,T,o,a,W.y,U,H);(n!==y||a!==b)&&(e.stateProvider.positionX=y,e.stateProvider.positionY=b,e.applyTransformation())})}}function calculateVelocityStart(e){var t=this,n=this.stateProvider,a=n.scale,o=n.options.disabled,s=n.pan,l=s.velocity,u=s.velocitySensitivity,d=s.velocityActiveScale,f=s.velocityMinSpeed,m=n.wrapperComponent;if(!(!l||d>=a||o)){handleEnableVelocity.call(this);var h=Date.now();if(this.lastMousePosition){var v=getClientPosition(e);if(!v)return console.error(`No mouse or touch position detected`);var y=v.clientX,b=v.clientY,x=y-this.lastMousePosition.clientX,S=b-this.lastMousePosition.clientY,C=h-this.velocityTime,T=2-m.offsetWidth/window.innerWidth,E=2-m.offsetHeight/window.innerHeight,D=20*Math.max(f,Math.min(2,T)),O=20*Math.max(f,Math.min(2,E)),k=x/C*u*a*D,j=S/C*u*a*O,M=x*x+S*S,N=Math.sqrt(M)/C*u;if(this.velocity&&N<this.velocity.velocity&&this.throttle)return;this.velocity={velocityX:k,velocityY:j,velocity:N},this.throttle&&clearTimeout(this.throttle),this.throttle=setTimeout(function(){t.mounted&&(t.throttle=!1)},throttleTime)}var F=getClientPosition(e);this.lastMousePosition=F,this.velocityTime=h}}function getPosition(e,t,n,a,o,s,l,u,d,f,m){if(l){if(d>o&&u>s){var h=d-(d-s)*a;return h>m?m:h<s?s:h}if(d<o&&u<o){var h=d-(d-o)*a;return h<f?f:h>o?o:h}}return e?d:boundLimiter(u+t*n,o,s,l)}function makePassiveEventOption(e){return e}var propsList=`previousScale.scale.positionX.positionY.defaultPositionX.defaultPositionY.defaultScale.onWheelStart.onWheel.onWheelStop.onPanningStart.onPanning.onPanningStop.onPinchingStart.onPinching.onPinchingStop.onZoomChange.options.wheel.scalePadding.pan.pinch.zoomIn.zoomOut.doubleClick.reset`.split(`.`),getValidPropsFromObject=function(e){return Object.keys(e).reduce(function(t,n){return propsList.includes(n)&&(t[n]=e[n]),t},{})},Context=import_react$24.createContext({}),wheelStopEventTimer=null,wheelStopEventTime=180,wheelAnimationTimer=null,wheelAnimationTime=100,StateProvider=function(e){__extends$1(t,e);function t(){var t=e!==null&&e.apply(this,arguments)||this;return t.mounted=!0,t.state={wrapperComponent:void 0,contentComponent:void 0},t.stateProvider=__assign$1(__assign$1(__assign$1(__assign$1({},initialState),mergeProps(initialState,t.props.dynamicValues)),t.props.defaultValues),{previousScale:t.props.dynamicValues.scale||t.props.defaultValues.scale||initialState.scale}),t.windowToWrapperScaleX=0,t.windowToWrapperScaleY=0,t.startCoords=null,t.isDown=!1,t.pinchStartDistance=null,t.lastDistance=null,t.pinchStartScale=null,t.distance=null,t.bounds=null,t.velocityTime=null,t.lastMousePosition=null,t.velocity=null,t.offsetX=null,t.offsetY=null,t.throttle=!1,t.previousWheelEvent=null,t.lastScale=null,t.animate=null,t.animation=null,t.maxBounds=null,t.handleWheel=function(e){var n=t.stateProvider,a=n.scale,o=n.wheel,s=o.disabled,l=o.wheelEnabled,u=o.touchPadEnabled,d=t.props,f=d.onWheelStart,m=d.onWheel,h=d.onWheelStop,v=t.state,y=v.wrapperComponent,b=v.contentComponent;t.isDown||s||t.stateProvider.options.disabled||!y||!b||!l&&!e.ctrlKey||!u&&e.ctrlKey||(wheelStopEventTimer||(t.lastScale=a,handleDisableAnimation.call(t),handleCallback(f,t.getCallbackProps())),handleWheelZoom.call(t,e),handleCallback(m,t.getCallbackProps()),t.applyTransformation(null,null,null),t.previousWheelEvent=e,handleWheelStop(t.previousWheelEvent,e,t.stateProvider)&&(clearTimeout(wheelStopEventTimer),wheelStopEventTimer=setTimeout(function(){t.mounted&&(handleCallback(h,t.getCallbackProps()),wheelStopEventTimer=null)},wheelStopEventTime)),t.animate=!1,t.lastScale=t.stateProvider.scale,clearTimeout(wheelAnimationTimer),wheelAnimationTimer=setTimeout(function(){t.mounted&&handlePaddingAnimation$1.call(t,e)},wheelAnimationTime))},t.checkPanningTarget=function(e){var n=t.stateProvider.pan.disableOnTarget;return n.map(function(e){return e.toUpperCase()}).includes(e.target.tagName)||n.find(function(t){return e.target.classList.value.includes(t)})},t.checkIsPanningActive=function(e){var n=t.stateProvider.pan.disabled,a=t.state,o=a.wrapperComponent,s=a.contentComponent;return!t.isDown||n||t.stateProvider.options.disabled||e.touches&&(e.touches.length!==1||Math.abs(t.startCoords.x-e.touches[0].clientX)<1||Math.abs(t.startCoords.y-e.touches[0].clientY)<1)||!o||!s},t.handleSetUpPanning=function(e,n){var a=t.stateProvider,o=a.positionX,s=a.positionY;t.isDown=!0,t.startCoords={x:e-o,y:n-s},handleCallback(t.props.onPanningStart,t.getCallbackProps())},t.handleStartPanning=function(e){var n=t.stateProvider,a=n.wrapperComponent,o=n.scale,s=n.options,l=s.minScale,u=s.maxScale,d=s.limitToWrapper,f=n.pan.disabled,m=e.target,h=e.touches;f||t.stateProvider.options.disabled||a&&!a.contains(m)||t.checkPanningTarget(e)||o<l||o>u||(handleDisableAnimation.call(t),t.bounds=handleCalculateBounds.call(t,o,d),h&&h.length===1&&t.handleSetUpPanning(h[0].clientX,h[0].clientY),h||t.handleSetUpPanning(e.clientX,e.clientY))},t.handlePanning=function(e){t.isDown&&e.preventDefault(),!t.checkIsPanningActive(e)&&(e.stopPropagation(),calculateVelocityStart.call(t,e),handlePanning.call(t,e),handleCallback(t.props.onPanning,t.getCallbackProps()))},t.handleStopPanning=function(){if(t.isDown){t.isDown=!1,t.animate=!1,t.animation=!1,handleFireVelocity.call(t),handleCallback(t.props.onPanningStop,t.getCallbackProps());var e=t.stateProvider,n=e.pan.velocity,a=e.scale;t.velocity&&n&&a>1?animateVelocity.call(t):handlePanningAnimation.call(t)}},t.handlePinchStart=function(e){var n=t.stateProvider.scale;e.preventDefault(),e.stopPropagation(),handleDisableAnimation.call(t);var a=getDistance(e.touches[0],e.touches[1]);t.pinchStartDistance=a,t.lastDistance=a,t.pinchStartScale=n,t.isDown=!1,handleCallback(t.props.onPinchingStart,t.getCallbackProps())},t.handlePinch=function(e){t.isDown=!1,handleZoomPinch.call(t,e),handleCallback(t.props.onPinching,t.getCallbackProps())},t.handlePinchStop=function(){typeof t.pinchStartScale==`number`&&(t.isDown=!1,t.velocity=null,t.lastDistance=null,t.pinchStartScale=null,t.pinchStartDistance=null,handlePaddingAnimation$1.call(t),handleCallback(t.props.onPinchingStop,t.getCallbackProps()))},t.handleTouchStart=function(e){var n=t.stateProvider,a=n.wrapperComponent,o=n.contentComponent,s=n.scale,l=n.options,u=l.disabled,d=l.minScale,f=e.touches;if(!(u||!a||!o||s<d)){if(handleDisableAnimation.call(t),f&&f.length===1)return t.handleStartPanning(e);if(f&&f.length===2)return t.handlePinchStart(e)}},t.handleTouch=function(e){var n=t.stateProvider,a=n.pan,o=n.pinch;if(!n.options.disabled){if(!a.disabled&&e.touches.length===1)return t.handlePanning(e);if(!o.disabled&&e.touches.length===2)return t.handlePinch(e)}},t.handleTouchStop=function(){t.handleStopPanning(),t.handlePinchStop()},t.zoomIn=function(e){var n=t.stateProvider,a=n.zoomIn,o=a.disabled,s=a.step,l=n.options,u=t.state,d=u.wrapperComponent,f=u.contentComponent;if(!e)throw Error(`Zoom in function requires event prop`);o||l.disabled||!d||!f||handleZoomControls.call(t,1,s)},t.zoomOut=function(e){var n=t.stateProvider,a=n.zoomOut,o=a.disabled,s=a.step,l=n.options,u=t.state,d=u.wrapperComponent,f=u.contentComponent;if(!e)throw Error(`Zoom out function requires event prop`);o||l.disabled||!d||!f||handleZoomControls.call(t,-1,s)},t.handleDbClick=function(e){var n=t.stateProvider,a=n.options,o=n.doubleClick,s=o.disabled,l=o.step,u=t.state,d=u.wrapperComponent,f=u.contentComponent;if(!e)throw Error(`Double click function requires event prop`);s||a.disabled||!d||!f||handleDoubleClick.call(t,e,1,l)},t.setScale=function(e,n,a){n===void 0&&(n=200),a===void 0&&(a=`easeOut`);var o=t.stateProvider,s=o.positionX,l=o.positionY,u=o.scale,d=o.options.disabled,f=t.state,m=f.wrapperComponent,h=f.contentComponent;if(!(d||!m||!h)){var v={positionX:s,positionY:l,scale:isNaN(e)?u:e};animateComponent.call(t,{targetState:v,speed:n,type:a})}},t.setPositionX=function(e,n,a){n===void 0&&(n=200),a===void 0&&(a=`easeOut`);var o=t.stateProvider,s=o.positionX,l=o.positionY,u=o.scale,d=o.options,f=d.disabled,m=d.transformEnabled,h=t.state,v=h.wrapperComponent,y=h.contentComponent;if(!(f||!m||!v||!y)){var b={positionX:isNaN(e)?s:e,positionY:l,scale:u};animateComponent.call(t,{targetState:b,speed:n,type:a})}},t.setPositionY=function(e,n,a){n===void 0&&(n=200),a===void 0&&(a=`easeOut`);var o=t.stateProvider,s=o.positionX,l=o.scale,u=o.positionY,d=o.options,f=d.disabled,m=d.transformEnabled,h=t.state,v=h.wrapperComponent,y=h.contentComponent;if(!(f||!m||!v||!y)){var b={positionX:s,positionY:isNaN(e)?u:e,scale:l};animateComponent.call(t,{targetState:b,speed:n,type:a})}},t.setTransform=function(e,n,a,o,s){o===void 0&&(o=200),s===void 0&&(s=`easeOut`);var l=t.stateProvider,u=l.positionX,d=l.positionY,f=l.scale,m=l.options,h=m.disabled,v=m.transformEnabled,y=t.state,b=y.wrapperComponent,x=y.contentComponent;if(!(h||!v||!b||!x)){var S={positionX:isNaN(e)?u:e,positionY:isNaN(n)?d:n,scale:isNaN(a)?f:a};animateComponent.call(t,{targetState:S,speed:o,type:s})}},t.resetTransform=function(){var e=t.stateProvider.options,n=e.disabled,a=e.transformEnabled;n||!a||resetTransformations.call(t)},t.setDefaultState=function(){t.animation=null,t.stateProvider=__assign$1(__assign$1(__assign$1({},t.stateProvider),{scale:initialState.scale,positionX:initialState.positionX,positionY:initialState.positionY}),t.props.defaultValues),t.forceUpdate()},t.setWrapperComponent=function(e){t.setState({wrapperComponent:e})},t.setContentComponent=function(e){t.setState({contentComponent:e},function(){var n=t.stateProvider,a=n.wrapperComponent,o=n.options,s=o.centerContent,l=o.limitToBounds,u=o.limitToWrapper,d=n.scale,f=t.props.defaultValues,m=f.positionX,h=f.positionY;if(l&&!u||s&&!m&&!h){var v=`translate(25%, 25%) scale(`+d+`)`;e.style.transform=v,e.style.WebkitTransform=v,t.forceUpdate();var y=new Date().getTime(),b=2e3,x=setInterval(function(){if(a.offsetWidth){var e=handleCalculateBounds.call(t,d,!1);t.stateProvider.positionX=e.minPositionX,t.stateProvider.positionY=e.minPositionY,t.applyTransformation(null,null,null),clearInterval(x),x=null}else new Date().getTime()-y>b&&(clearInterval(x),x=null)},20)}else t.applyTransformation(null,null,null)})},t.applyTransformation=function(e,n,a){if(t.mounted){var o=t.state.contentComponent,s=t.props.onZoomChange,l=t.stateProvider,u=l.previousScale,d=l.scale,f=l.positionX,m=l.positionY;if(!o)return console.error(`There is no content component`);var h=`translate(`+(n||f)+`px, `+(a||m)+`px) scale(`+(e||d)+`)`;o.style.transform=h,o.style.WebkitTransform=h,t.forceUpdate(),s&&u!==d&&handleCallback(s,t.getCallbackProps())}},t.getCallbackProps=function(){return getValidPropsFromObject(t.stateProvider)},t}return t.prototype.componentDidMount=function(){var e=makePassiveEventOption(!1);window.addEventListener(`mousedown`,this.handleStartPanning,e),window.addEventListener(`mousemove`,this.handlePanning,e),window.addEventListener(`mouseup`,this.handleStopPanning,e)},t.prototype.componentWillUnmount=function(){var e=makePassiveEventOption(!1);window.removeEventListener(`mousedown`,this.handleStartPanning,e),window.removeEventListener(`mousemove`,this.handlePanning,e),window.removeEventListener(`mouseup`,this.handleStopPanning,e),handleDisableAnimation.call(this)},t.prototype.componentDidUpdate=function(e,t){var n=this.state,a=n.wrapperComponent,o=n.contentComponent,s=this.props.dynamicValues;if(!t.contentComponent&&o&&(this.stateProvider.contentComponent=o),!t.wrapperComponent&&a&&a!==void 0){this.stateProvider.wrapperComponent=a,this.windowToWrapperScaleX=getWindowScaleX(a),this.windowToWrapperScaleY=getWindowScaleY(a);var l=makePassiveEventOption(!1);a.addEventListener(`wheel`,this.handleWheel,l),a.addEventListener(`dblclick`,this.handleDbClick,l),a.addEventListener(`touchstart`,this.handleTouchStart,l),a.addEventListener(`touchmove`,this.handleTouch,l),a.addEventListener(`touchend`,this.handleTouchStop,l)}(a&&o||e.dynamicValues!==s)&&(this.maxBounds=handleCalculateBounds.call(this,this.stateProvider.scale,this.stateProvider.options.limitToWrapper)),e.dynamicValues&&e.dynamicValues!==s&&(this.animation=null,this.stateProvider=__assign$1(__assign$1({},this.stateProvider),mergeProps(this.stateProvider,s)),this.applyTransformation(null,null,null))},t.prototype.render=function(){var e=this.state,t=e.wrapperComponent,n=e.contentComponent,a={loaded:!!(t&&n),state:this.getCallbackProps(),dispatch:{setScale:this.setScale,setPositionX:this.setPositionX,setPositionY:this.setPositionY,zoomIn:this.zoomIn,zoomOut:this.zoomOut,setTransform:this.setTransform,resetTransform:this.resetTransform,setDefaultState:this.setDefaultState},nodes:{setWrapperComponent:this.setWrapperComponent,setContentComponent:this.setContentComponent}},o=this.props.children,s=typeof o==`function`?o(__assign$1(__assign$1({},a.state),a.dispatch)):o;return import_react$24.createElement(Context.Provider,{value:a},s)},t}(import_react$24.Component),TransformWrapper=function(e){var t=e.children,n=e.defaultPositionX,a=e.defaultPositionY,o=e.defaultScale,s=e.onWheelStart,l=e.onWheel,u=e.onWheelStop,d=e.onPanningStart,f=e.onPanning,m=e.onPanningStop,h=e.onPinchingStart,v=e.onPinching,y=e.onPinchingStop,b=e.onZoomChange,x=__rest$1(e,[`children`,`defaultPositionX`,`defaultPositionY`,`defaultScale`,`onWheelStart`,`onWheel`,`onWheelStop`,`onPanningStart`,`onPanning`,`onPanningStop`,`onPinchingStart`,`onPinching`,`onPinchingStop`,`onZoomChange`]),S=__assign$1({},x);return S.options&&S.options.limitToWrapper&&(S.options.limitToBounds=!0),import_react$24.createElement(StateProvider,{defaultValues:deleteUndefinedProps({positionX:n,positionY:a,scale:o}),dynamicValues:deleteUndefinedProps(getValidPropsFromObject(S)),onWheelStart:s,onWheel:l,onWheelStop:u,onPanningStart:d,onPanning:f,onPanningStop:m,onPinchingStart:h,onPinching:v,onPinchingStop:y,onZoomChange:b},t)};function styleInject(e,t){t===void 0&&(t={});var n=t.insertAt;if(!(!e||typeof document>`u`)){var a=document.head||document.getElementsByTagName(`head`)[0],o=document.createElement(`style`);o.type=`text/css`,n===`top`&&a.firstChild?a.insertBefore(o,a.firstChild):a.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var css=`.TransformComponent-module_container__3NwNd {
729
+ `,circularDashKeyframe)),CircularProgress=import_react$24.forwardRef(function(e,t){let n=useDefaultProps({props:e,name:`MuiCircularProgress`}),{className:a,color:o=`primary`,disableShrink:s=!1,size:l=40,style:u,thickness:d=3.6,value:f=0,variant:m=`indeterminate`}=n,h=_objectWithoutPropertiesLoose$3(n,_excluded$2),v=_extends$3({},n,{color:o,disableShrink:s,size:l,thickness:d,value:f,variant:m}),y=useUtilityClasses$2(v),b={},x={},S={};if(m===`determinate`){let e=2*Math.PI*((SIZE-d)/2);b.strokeDasharray=e.toFixed(3),S[`aria-valuenow`]=Math.round(f),b.strokeDashoffset=`${((100-f)/100*e).toFixed(3)}px`,x.transform=`rotate(-90deg)`}return(0,import_jsx_runtime.jsx)(CircularProgressRoot,_extends$3({className:clsx$1(y.root,a),style:_extends$3({width:l,height:l},x,u),ownerState:v,ref:t,role:`progressbar`},S,h,{children:(0,import_jsx_runtime.jsx)(CircularProgressSVG,{className:y.svg,ownerState:v,viewBox:`${SIZE/2} ${SIZE/2} ${SIZE} ${SIZE}`,children:(0,import_jsx_runtime.jsx)(CircularProgressCircle,{className:y.circle,style:b,ownerState:v,cx:SIZE,cy:SIZE,r:(SIZE-d)/2,fill:`none`,strokeWidth:d})})}))});function DayAndProgressContainer({dayCount:e,experience:t,itemsSold:n}){let a=levelAchieved(t),o=scaleNumber(t,experienceNeededForLevel(a),experienceNeededForLevel(a+1),0,100),s=experienceNeededForLevel(a+1)-t,l=a+1;return(0,import_jsx_runtime.jsxs)(`h2`,{className:`day-and-progress-container`,children:[(0,import_jsx_runtime.jsxs)(`span`,{children:[`Day `,integerString(e),`, level:`]}),(0,import_jsx_runtime.jsx)(Tooltip,{arrow:!0,placement:`top`,title:EXPERIENCE_GAUGE_TOOLTIP_LABEL`${s}${l}`,children:(0,import_jsx_runtime.jsxs)(Box,{children:[(0,import_jsx_runtime.jsx)(CircularProgress,{value:o,variant:`determinate`}),(0,import_jsx_runtime.jsx)(`span`,{className:`current-level`,children:integerString(a)})]})})]})}DayAndProgressContainer.propTypes={dayCount:import_prop_types$1.number.isRequired,experience:import_prop_types$1.number.isRequired,itemsSold:import_prop_types$1.object.isRequired};function Consumer$15(e){return(0,import_jsx_runtime.jsx)(FarmhandContext.Consumer,{children:({gameState:t,handlers:n})=>(0,import_jsx_runtime.jsx)(DayAndProgressContainer,{...t,...n,...e})})}var FarmNameDisplay=({farmName:e,handleFarmNameUpdate:t})=>{let[n,a]=(0,import_react$24.useState)(e);return(0,import_react$24.useEffect)(()=>{a(e)},[e,a]),(0,import_jsx_runtime.jsxs)(`h2`,{className:`farm-name`,children:[(0,import_jsx_runtime.jsx)(TextField,{variant:`standard`,inputProps:{maxLength:12},onChange:({target:{value:e}})=>{a(e)},onBlur:({target:{value:e}})=>{t(e)},placeholder:`Farm Name`,value:n}),` `,`Farm`]})},OnlineControls=({activePlayers:e,handleActivePlayerButtonClick:t,handleChatRoomOpenStateChange:n,handleOnlineToggleChange:a,handleRoomChange:o,isChatAvailable:s,isOnline:l,room:u})=>{let[d,f]=(0,import_react$24.useState)(u);(0,import_react$24.useEffect)(()=>{f(u)},[u,f]);let m=()=>{n(!0)},h=()=>{o(d)},v=e=>{h(),a(e)};return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(FormControl,{variant:`standard`,className:`online-control-container`,component:`fieldset`,children:[(0,import_jsx_runtime.jsx)(FormGroup,{className:`toggle-container`,children:(0,import_jsx_runtime.jsx)(FormControlLabel,{control:(0,import_jsx_runtime.jsx)(Switch,{color:`primary`,checked:l,onChange:(e,t)=>{v(t)},name:`play-online`}),label:`Play online`})}),(0,import_jsx_runtime.jsx)(TextField,{className:`room-name`,inputProps:{maxLength:25},label:`Room name`,onChange:({target:{value:e}})=>{f(e)},onKeyUp:({key:e})=>{e===`Enter`&&h()},value:d,variant:`outlined`})]}),e&&(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(Button,{color:`primary`,onClick:t,variant:`contained`,children:[`Connected players: `,integerString(e)]}),s?(0,import_jsx_runtime.jsx)(Button,{variant:`contained`,color:`primary`,onClick:m,children:`Open chat`}):(0,import_jsx_runtime.jsxs)(Typography,{className:`chat-placeholder`,children:[`Chat is available for online rooms other than "`,`global`,`"`]})]})]})},{FARMERS_LOG,PRICE_EVENTS,STATS,ACHIEVEMENTS,ACCOUNTING,SETTINGS,ONLINE_PEERS,KEYBINDINGS}=dialogView,dialogTriggerTextMap={[FARMERS_LOG]:`Open Farmer's Log (l)`,[PRICE_EVENTS]:`See Price Events (e)`,[STATS]:`View your stats (s)`,[ACHIEVEMENTS]:`View Achievements (a)`,[ACCOUNTING]:`View Bank Account (b)`,[SETTINGS]:`View Settings (comma)`},dialogTitleMap={[FARMERS_LOG]:`Farmer's Log`,[PRICE_EVENTS]:`Price Events`,[STATS]:`Farm Stats`,[ACHIEVEMENTS]:`Achievements`,[ACCOUNTING]:`Bank Account`,[SETTINGS]:`Settings`,[ONLINE_PEERS]:`Active Players`,[KEYBINDINGS]:`Keyboard Shortcuts`},dialogContentMap={[FARMERS_LOG]:(0,import_jsx_runtime.jsx)(Consumer$20,{}),[PRICE_EVENTS]:(0,import_jsx_runtime.jsx)(Consumer$18,{}),[STATS]:(0,import_jsx_runtime.jsx)(Consumer$16,{}),[ACHIEVEMENTS]:(0,import_jsx_runtime.jsx)(Consumer$21,{}),[ACCOUNTING]:(0,import_jsx_runtime.jsx)(Consumer$23,{}),[SETTINGS]:(0,import_jsx_runtime.jsx)(Consumer$17,{}),[ONLINE_PEERS]:(0,import_jsx_runtime.jsx)(Consumer$19,{}),[KEYBINDINGS]:(0,import_jsx_runtime.jsx)(KeybindingsView,{})},Navigation=({activePlayers:e,blockInput:t,currentDialogView:n,farmName:a,handleActivePlayerButtonClick:o,handleChatRoomOpenStateChange:s,handleClickDialogViewButton:l,handleCloseDialogView:u,handleDialogViewExited:d,handleFarmNameUpdate:f,handleOnlineToggleChange:m,handleRoomChange:h,handleViewChange:v,inventory:y,inventoryLimit:b,isChatAvailable:x,isDialogViewOpen:S,isOnline:C,room:T,stageFocus:E,viewList:D,currentDialogViewLowerCase:O=(n||``).toLowerCase(),modalTitleId:k=`${O}-modal-title`,modalContentId:j=`${O}-modal-content`})=>(0,import_jsx_runtime.jsxs)(Header,{className:`Navigation`,sx:{flexDirection:`column`,flexShrink:0,display:`flex`,"& .version":{fontFamily:`"Francois One", sans-serif`,textAlign:`center`},"& .farm-name":{lineHeight:`1.3em`,margin:`0.25em 0`,"& .MuiInput-root":{background:`none`,margin:0,"& input":{fontFamily:`"Francois One"`,paddingLeft:`0.5em`,paddingRight:`0.5em`,textAlign:`center`}}},"& .online-control-container":{alignItems:`center`,display:`flex`,flexDirection:`row`,margin:`1em 0`,"& .toggle-container":{minWidth:`155px`}},"& .button-array":{marginLeft:`3em`,marginRight:`3em`,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{marginLeft:`2em`,marginRight:`2em`}},"& .current-level":{alignItems:`center`,bottom:0,display:`flex`,justifyContent:`center`,left:0,position:`absolute`,right:0,top:0,userSelect:`none`},"& h1":{fontSize:`3em`,fontWeight:`bold`,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{fontSize:`2.5em`}},"& button":{fontSize:`1.3em`,margin:`0.3em`,minWidth:`56px`},"& h1, & h2, & h3":{textAlign:`center`},"& .day-and-progress-container":{alignItems:`center`,display:`flex`,fontSize:`1.5em`,margin:`0.5em auto`,"& .MuiBox-root":{display:`inline-flex`,marginLeft:`0.5em`,position:`relative`}},"& .inventory-info":{fontSize:`1em`},"& .MuiSelect-select":{padding:`1em`},"& .chat-placeholder":{fontSize:`0.75em`,padding:`0.5em 0`,textAlign:`center`}},children:[(0,import_jsx_runtime.jsx)(`h1`,{children:`Farmhand`}),(0,import_jsx_runtime.jsxs)(`p`,{className:`version`,children:[`v`,`1.22.1`]}),(0,import_jsx_runtime.jsx)(FarmNameDisplay,{farmName:a,handleFarmNameUpdate:f}),(0,import_jsx_runtime.jsx)(Consumer$15,{}),(0,import_jsx_runtime.jsx)(OnlineControls,{activePlayers:e,handleActivePlayerButtonClick:o,handleChatRoomOpenStateChange:s,handleOnlineToggleChange:m,handleRoomChange:h,isChatAvailable:x,isOnline:C,room:T}),b>-1&&(0,import_jsx_runtime.jsxs)(H3,{className:(0,import_classnames.default)(`inventory-info`,{"is-inventory-full":!doesInventorySpaceRemain({inventory:y,inventoryLimit:b})}),sx:{color:doesInventorySpaceRemain({inventory:y,inventoryLimit:b})?void 0:colors.error},children:[`Inventory: `,integerString(inventorySpaceConsumed(y)),` /`,` `,integerString(b)]}),(0,import_jsx_runtime.jsx)(Select,{variant:`standard`,className:`view-select`,onChange:v,value:E,children:D.map((e,t)=>(0,import_jsx_runtime.jsxs)(MenuItem,{key:e,value:e,children:[t+1,`: `,STAGE_TITLE_MAP[e]]}))}),(0,import_jsx_runtime.jsx)(`div`,{className:`button-array`,children:[{dialogView:FARMERS_LOG,Icon:import_Book.default},{dialogView:PRICE_EVENTS,Icon:import_FlashOn.default},{dialogView:STATS,Icon:import_Assessment.default},{dialogView:ACHIEVEMENTS,Icon:import_Beenhere.default},{dialogView:ACCOUNTING,Icon:import_AccountBalance.default},{dialogView:SETTINGS,Icon:import_Settings.default}].map(({dialogView:e,Icon:t})=>(0,import_jsx_runtime.jsx)(Tooltip,{arrow:!0,key:e,placement:`top`,title:dialogTriggerTextMap[e],children:(0,import_jsx_runtime.jsx)(Fab,{"aria-label":dialogTriggerTextMap[e],color:`primary`,onClick:()=>l(e),children:(0,import_jsx_runtime.jsx)(t,{})})}))}),(0,import_jsx_runtime.jsxs)(Dialog,{className:(0,import_classnames.default)(`Farmhand`,{"block-input":t}),fullWidth:!0,maxWidth:`xs`,onClose:u,open:S,TransitionProps:{onExited:d},"aria-describedby":k,"aria-labelledby":j,children:[(0,import_jsx_runtime.jsx)(DialogTitle,{id:k,children:n?dialogTitleMap[n]:``}),(0,import_jsx_runtime.jsx)(DialogContent,{id:j,children:n?dialogContentMap[n]:null}),(0,import_jsx_runtime.jsx)(DialogActions,{children:(0,import_jsx_runtime.jsx)(Button,{onClick:u,color:`primary`,autoFocus:!0,children:`Close`})})]})]});Navigation.propTypes={activePlayers:import_prop_types$1.number,blockInput:import_prop_types$1.bool.isRequired,farmName:import_prop_types$1.string.isRequired,handleClickDialogViewButton:import_prop_types$1.func.isRequired,handleChatRoomOpenStateChange:import_prop_types$1.func.isRequired,handleActivePlayerButtonClick:import_prop_types$1.func.isRequired,handleCloseDialogView:import_prop_types$1.func.isRequired,handleDialogViewExited:import_prop_types$1.func.isRequired,handleFarmNameUpdate:import_prop_types$1.func.isRequired,handleOnlineToggleChange:import_prop_types$1.func.isRequired,handleRoomChange:import_prop_types$1.func.isRequired,handleViewChange:import_prop_types$1.func.isRequired,inventory:import_prop_types$1.array.isRequired,inventoryLimit:import_prop_types$1.number.isRequired,isChatAvailable:import_prop_types$1.bool.isRequired,isDialogViewOpen:import_prop_types$1.bool.isRequired,isOnline:import_prop_types$1.bool.isRequired,stageFocus:import_prop_types$1.string.isRequired,viewList:import_prop_types$1.array.isRequired};function Consumer$14(e){return(0,import_jsx_runtime.jsx)(FarmhandContext.Consumer,{children:({gameState:t,handlers:n})=>(0,import_jsx_runtime.jsx)(Navigation,{...t,...n,...e})})}var getNotificationKey=({message:e,severity:t})=>`${t}:${e}`,snackbarProviderContentCallback=(e,{message:t,onClick:n,severity:a})=>(0,import_jsx_runtime.jsx)(Alert,{elevation:3,key:e,onClick:n,severity:a,style:{cursor:n?`pointer`:`default`},children:(0,import_jsx_runtime.jsx)(import_react_markdown.default,{source:t})}),NotificationSystem=({enqueueSnackbar:e,latestNotification:t})=>((0,import_react$24.useEffect)(()=>{t&&e(t,{key:getNotificationKey(t),autoHideDuration:NOTIFICATION_DURATION,preventDuplicate:!0})},[e,t]),null);NotificationSystem.propTypes={latestNotification:(0,import_prop_types$1.shape)({message:import_prop_types$1.string.isRequired,onClick:import_prop_types$1.func,severity:import_prop_types$1.string.isRequired})};var NotificationSystem_default=withSnackbar(function(e){return(0,import_jsx_runtime.jsx)(FarmhandContext.Consumer,{children:({gameState:t,handlers:n})=>(0,import_jsx_runtime.jsx)(NotificationSystem,{...t,...n,...e})})}),require_ZoomIn=__commonJSMin((e=>{var t=require_interopRequireDefault();Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(require_createSvgIcon()),a=require_jsx_runtime();e.default=(0,n.default)([(0,a.jsx)(`path`,{d:`M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14`},`0`),(0,a.jsx)(`path`,{d:`M12 10h-2v2H9v-2H7V9h2V7h1v2h2z`},`1`)],`ZoomIn`)})),require_ZoomOut=__commonJSMin((e=>{var t=require_interopRequireDefault();Object.defineProperty(e,"__esModule",{value:!0}),e.default=void 0;var n=t(require_createSvgIcon()),a=require_jsx_runtime();e.default=(0,n.default)((0,a.jsx)(`path`,{d:`M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14M7 9h5v1H7z`}),`ZoomOut`)}));function areArraysEqual(e,t,n=(e,t)=>e===t){return e.length===t.length&&e.every((e,a)=>n(e,t[a]))}init_extends(),init_esm(),init_extractEventHandlers();var INTENTIONAL_DRAG_COUNT_THRESHOLD=2;function asc(e,t){return e-t}function findClosest(e,t){var n;let{index:a}=e.reduce((e,n,a)=>{let o=Math.abs(t-n);return e===null||o<e.distance||o===e.distance?{distance:o,index:a}:e},null)??{};return a}function trackFinger(e,t){if(t.current!==void 0&&e.changedTouches){let n=e;for(let e=0;e<n.changedTouches.length;e+=1){let a=n.changedTouches[e];if(a.identifier===t.current)return{x:a.clientX,y:a.clientY}}return!1}return{x:e.clientX,y:e.clientY}}function valueToPercent(e,t,n){return(e-t)*100/(n-t)}function percentToValue(e,t,n){return(n-t)*e+t}function getDecimalPrecision(e){if(Math.abs(e)<1){let t=e.toExponential().split(`e-`),n=t[0].split(`.`)[1];return(n?n.length:0)+parseInt(t[1],10)}let t=e.toString().split(`.`)[1];return t?t.length:0}function roundValueToStep(e,t,n){let a=Math.round((e-n)/t)*t+n;return Number(a.toFixed(getDecimalPrecision(t)))}function setValueIndex({values:e,newValue:t,index:n}){let a=e.slice();return a[n]=t,a.sort(asc)}function focusThumb({sliderRef:e,activeIndex:t,setActive:n}){var a,o;let s=ownerDocument(e.current);if(!((a=e.current)!=null&&a.contains(s.activeElement))||Number(s==null||(o=s.activeElement)==null?void 0:o.getAttribute(`data-index`))!==t){var l;(l=e.current)==null||l.querySelector(`[type="range"][data-index="${t}"]`).focus()}n&&n(t)}function areValuesEqual(e,t){return typeof e==`number`&&typeof t==`number`?e===t:typeof e==`object`&&typeof t==`object`&&areArraysEqual(e,t)}var axisProps={horizontal:{offset:e=>({left:`${e}%`}),leap:e=>({width:`${e}%`})},"horizontal-reverse":{offset:e=>({right:`${e}%`}),leap:e=>({width:`${e}%`})},vertical:{offset:e=>({bottom:`${e}%`}),leap:e=>({height:`${e}%`})}},Identity$1=e=>e,cachedSupportsTouchActionNone;function doesSupportTouchActionNone(){return cachedSupportsTouchActionNone===void 0&&(cachedSupportsTouchActionNone=typeof CSS<`u`&&typeof CSS.supports==`function`?CSS.supports(`touch-action`,`none`):!0),cachedSupportsTouchActionNone}function useSlider(e){let{"aria-labelledby":t,defaultValue:n,disabled:a=!1,disableSwap:o=!1,isRtl:s=!1,marks:l=!1,max:u=100,min:d=0,name:f,onChange:m,onChangeCommitted:h,orientation:v=`horizontal`,rootRef:y,scale:b=Identity$1,step:x=1,shiftStep:S=10,tabIndex:C,value:T}=e,E=import_react$24.useRef(void 0),[D,O]=import_react$24.useState(-1),[k,j]=import_react$24.useState(-1),[M,N]=import_react$24.useState(!1),F=import_react$24.useRef(0),[I,L]=useControlled({controlled:T,default:n??d,name:`Slider`}),R=m&&((e,t,n)=>{let a=e.nativeEvent||e,o=new a.constructor(a.type,a);Object.defineProperty(o,"target",{writable:!0,value:{value:t,name:f}}),m(o,t,n)}),z=Array.isArray(I),B=z?I.slice().sort(asc):[I];B=B.map(e=>e==null?d:clamp$1(e,d,u));let V=l===!0&&x!==null?[...Array(Math.floor((u-d)/x)+1)].map((e,t)=>({value:d+x*t})):l||[],H=V.map(e=>e.value),{isFocusVisibleRef:U,onBlur:W,onFocus:G,ref:ee}=useIsFocusVisible(),[te,K]=import_react$24.useState(-1),q=import_react$24.useRef(null),ne=useForkRef(y,useForkRef(ee,q)),re=e=>t=>{var n;let a=Number(t.currentTarget.getAttribute(`data-index`));G(t),U.current===!0&&K(a),j(a),e==null||(n=e.onFocus)==null||n.call(e,t)},J=e=>t=>{var n;W(t),U.current===!1&&K(-1),j(-1),e==null||(n=e.onBlur)==null||n.call(e,t)},ie=(e,t)=>{let n=Number(e.currentTarget.getAttribute(`data-index`)),a=B[n],s=H.indexOf(a),l=t;if(V&&x==null){let e=H[H.length-1];l=l>e?e:l<H[0]?H[0]:l<a?H[s-1]:H[s+1]}if(l=clamp$1(l,d,u),z){o&&(l=clamp$1(l,B[n-1]||-1/0,B[n+1]||1/0));let e=l;l=setValueIndex({values:B,newValue:l,index:n});let t=n;o||(t=l.indexOf(e)),focusThumb({sliderRef:q,activeIndex:t})}L(l),K(n),R&&!areValuesEqual(l,I)&&R(e,l,n),h&&h(e,l)},ae=e=>t=>{var n;if(x!==null){let e=Number(t.currentTarget.getAttribute(`data-index`)),n=B[e],a=null;(t.key===`ArrowLeft`||t.key===`ArrowDown`)&&t.shiftKey||t.key===`PageDown`?a=Math.max(n-S,d):((t.key===`ArrowRight`||t.key===`ArrowUp`)&&t.shiftKey||t.key===`PageUp`)&&(a=Math.min(n+S,u)),a!==null&&(ie(t,a),t.preventDefault())}e==null||(n=e.onKeyDown)==null||n.call(e,t)};useEnhancedEffect$1(()=>{if(a&&q.current.contains(document.activeElement)){var e;(e=document.activeElement)==null||e.blur()}},[a]),a&&D!==-1&&O(-1),a&&te!==-1&&K(-1);let oe=e=>t=>{var n;(n=e.onChange)==null||n.call(e,t),ie(t,t.target.valueAsNumber)},se=import_react$24.useRef(void 0),ce=v;s&&v===`horizontal`&&(ce+=`-reverse`);let Y=({finger:e,move:t=!1})=>{let{current:n}=q,{width:a,height:s,bottom:l,left:f}=n.getBoundingClientRect(),m;m=ce.indexOf(`vertical`)===0?(l-e.y)/s:(e.x-f)/a,ce.indexOf(`-reverse`)!==-1&&(m=1-m);let h;if(h=percentToValue(m,d,u),x)h=roundValueToStep(h,x,d);else{let e=findClosest(H,h);h=H[e]}h=clamp$1(h,d,u);let v=0;if(z){v=t?se.current:findClosest(B,h),o&&(h=clamp$1(h,B[v-1]||-1/0,B[v+1]||1/0));let e=h;h=setValueIndex({values:B,newValue:h,index:v}),o&&t||(v=h.indexOf(e),se.current=v)}return{newValue:h,activeIndex:v}},le=useEventCallback$1(e=>{let t=trackFinger(e,E);if(!t)return;if(F.current+=1,e.type===`mousemove`&&e.buttons===0){ue(e);return}let{newValue:n,activeIndex:a}=Y({finger:t,move:!0});focusThumb({sliderRef:q,activeIndex:a,setActive:O}),L(n),!M&&F.current>INTENTIONAL_DRAG_COUNT_THRESHOLD&&N(!0),R&&!areValuesEqual(n,I)&&R(e,n,a)}),ue=useEventCallback$1(e=>{let t=trackFinger(e,E);if(N(!1),!t)return;let{newValue:n}=Y({finger:t,move:!0});O(-1),e.type===`touchend`&&j(-1),h&&h(e,n),E.current=void 0,X()}),de=useEventCallback$1(e=>{if(a)return;doesSupportTouchActionNone()||e.preventDefault();let t=e.changedTouches[0];t!=null&&(E.current=t.identifier);let n=trackFinger(e,E);if(n!==!1){let{newValue:t,activeIndex:a}=Y({finger:n});focusThumb({sliderRef:q,activeIndex:a,setActive:O}),L(t),R&&!areValuesEqual(t,I)&&R(e,t,a)}F.current=0;let o=ownerDocument(q.current);o.addEventListener(`touchmove`,le,{passive:!0}),o.addEventListener(`touchend`,ue,{passive:!0})}),X=import_react$24.useCallback(()=>{let e=ownerDocument(q.current);e.removeEventListener(`mousemove`,le),e.removeEventListener(`mouseup`,ue),e.removeEventListener(`touchmove`,le),e.removeEventListener(`touchend`,ue)},[ue,le]);import_react$24.useEffect(()=>{let{current:e}=q;return e.addEventListener(`touchstart`,de,{passive:doesSupportTouchActionNone()}),()=>{e.removeEventListener(`touchstart`,de),X()}},[X,de]),import_react$24.useEffect(()=>{a&&X()},[a,X]);let fe=e=>t=>{var n;if((n=e.onMouseDown)==null||n.call(e,t),a||t.defaultPrevented||t.button!==0)return;t.preventDefault();let o=trackFinger(t,E);if(o!==!1){let{newValue:e,activeIndex:n}=Y({finger:o});focusThumb({sliderRef:q,activeIndex:n,setActive:O}),L(e),R&&!areValuesEqual(e,I)&&R(t,e,n)}F.current=0;let s=ownerDocument(q.current);s.addEventListener(`mousemove`,le,{passive:!0}),s.addEventListener(`mouseup`,ue)},pe=valueToPercent(z?B[0]:d,d,u),me=valueToPercent(B[B.length-1],d,u)-pe,he=(e={})=>{let t=extractEventHandlers(e),n=_extends$3({},t,{onMouseDown:fe(t||{})});return _extends$3({},e,{ref:ne},n)},ge=e=>t=>{var n;(n=e.onMouseOver)==null||n.call(e,t);let a=Number(t.currentTarget.getAttribute(`data-index`));j(a)},Z=e=>t=>{var n;(n=e.onMouseLeave)==null||n.call(e,t),j(-1)};return{active:D,axis:ce,axisProps,dragging:M,focusedThumbIndex:te,getHiddenInputProps:(n={})=>{var o;let l=extractEventHandlers(n),m=_extends$3({},l,{onChange:oe(l||{}),onFocus:re(l||{}),onBlur:J(l||{}),onKeyDown:ae(l||{})});return _extends$3({tabIndex:C,"aria-labelledby":t,"aria-orientation":v,"aria-valuemax":b(u),"aria-valuemin":b(d),name:f,type:`range`,min:e.min,max:e.max,step:e.step===null&&e.marks?`any`:e.step??void 0,disabled:a},n,m,{style:_extends$3({},visuallyHidden,{direction:s?`rtl`:`ltr`,width:`100%`,height:`100%`})})},getRootProps:he,getThumbProps:(e={})=>{let t=extractEventHandlers(e);return _extends$3({},e,t,{onMouseOver:ge(t||{}),onMouseLeave:Z(t||{})})},marks:V,open:k,range:z,rootRef:ne,trackLeap:me,trackOffset:pe,values:B,getThumbStyle:e=>({pointerEvents:D!==-1&&D!==e?`none`:void 0})}}init_isHostComponent();var shouldSpreadAdditionalProps=e=>!e||!isHostComponent(e);init_generateUtilityClasses(),init_generateUtilityClass();function getSliderUtilityClass(e){return generateUtilityClass(`MuiSlider`,e)}var sliderClasses=generateUtilityClasses(`MuiSlider`,`root.active.colorPrimary.colorSecondary.colorError.colorInfo.colorSuccess.colorWarning.disabled.dragging.focusVisible.mark.markActive.marked.markLabel.markLabelActive.rail.sizeSmall.thumb.thumbColorPrimary.thumbColorSecondary.thumbColorError.thumbColorSuccess.thumbColorInfo.thumbColorWarning.track.trackInverted.trackFalse.thumbSizeSmall.valueLabel.valueLabelOpen.valueLabelCircle.valueLabelLabel.vertical`.split(`.`));init_clsx();var useValueLabelClasses=e=>{let{open:t}=e;return{offset:clsx$1(t&&sliderClasses.valueLabelOpen),circle:sliderClasses.valueLabelCircle,label:sliderClasses.valueLabelLabel}};function SliderValueLabel$1(e){let{children:t,className:n,value:a}=e,o=useValueLabelClasses(e);return t?import_react$24.cloneElement(t,{className:clsx$1(t.props.className)},(0,import_jsx_runtime.jsxs)(import_react$24.Fragment,{children:[t.props.children,(0,import_jsx_runtime.jsx)(`span`,{className:clsx$1(o.offset,n),"aria-hidden":!0,children:(0,import_jsx_runtime.jsx)(`span`,{className:o.circle,children:(0,import_jsx_runtime.jsx)(`span`,{className:o.label,children:a})})})]})):null}init_objectWithoutPropertiesLoose(),init_extends(),init_clsx(),init_composeClasses(),init_useSlotProps(),init_isHostComponent(),init_styled(),init_DefaultPropsProvider(),init_slotShouldForwardProp(),init_capitalize();var _excluded$1=`aria-label.aria-valuetext.aria-labelledby.component.components.componentsProps.color.classes.className.disableSwap.disabled.getAriaLabel.getAriaValueText.marks.max.min.name.onChange.onChangeCommitted.orientation.shiftStep.size.step.scale.slotProps.slots.tabIndex.track.value.valueLabelDisplay.valueLabelFormat`.split(`.`);function Identity(e){return e}var SliderRoot=styled$1(`span`,{name:`MuiSlider`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[`color${capitalize_default(n.color)}`],n.size!==`medium`&&t[`size${capitalize_default(n.size)}`],n.marked&&t.marked,n.orientation===`vertical`&&t.vertical,n.track===`inverted`&&t.trackInverted,n.track===!1&&t.trackFalse]}})(({theme:e})=>{var t;return{borderRadius:12,boxSizing:`content-box`,display:`inline-block`,position:`relative`,cursor:`pointer`,touchAction:`none`,WebkitTapHighlightColor:`transparent`,"@media print":{colorAdjust:`exact`},[`&.${sliderClasses.disabled}`]:{pointerEvents:`none`,cursor:`default`,color:(e.vars||e).palette.grey[400]},[`&.${sliderClasses.dragging}`]:{[`& .${sliderClasses.thumb}, & .${sliderClasses.track}`]:{transition:`none`}},variants:[...Object.keys((e.vars??e).palette).filter(t=>{var n;return(e.vars??e).palette[t].main}).map(t=>({props:{color:t},style:{color:(e.vars||e).palette[t].main}})),{props:{orientation:`horizontal`},style:{height:4,width:`100%`,padding:`13px 0`,"@media (pointer: coarse)":{padding:`20px 0`}}},{props:{orientation:`horizontal`,size:`small`},style:{height:2}},{props:{orientation:`horizontal`,marked:!0},style:{marginBottom:20}},{props:{orientation:`vertical`},style:{height:`100%`,width:4,padding:`0 13px`,"@media (pointer: coarse)":{padding:`0 20px`}}},{props:{orientation:`vertical`,size:`small`},style:{width:2}},{props:{orientation:`vertical`,marked:!0},style:{marginRight:44}}]}}),SliderRail=styled$1(`span`,{name:`MuiSlider`,slot:`Rail`,overridesResolver:(e,t)=>t.rail})({display:`block`,position:`absolute`,borderRadius:`inherit`,backgroundColor:`currentColor`,opacity:.38,variants:[{props:{orientation:`horizontal`},style:{width:`100%`,height:`inherit`,top:`50%`,transform:`translateY(-50%)`}},{props:{orientation:`vertical`},style:{height:`100%`,width:`inherit`,left:`50%`,transform:`translateX(-50%)`}},{props:{track:`inverted`},style:{opacity:1}}]}),SliderTrack=styled$1(`span`,{name:`MuiSlider`,slot:`Track`,overridesResolver:(e,t)=>t.track})(({theme:e})=>{var t;return{display:`block`,position:`absolute`,borderRadius:`inherit`,border:`1px solid currentColor`,backgroundColor:`currentColor`,transition:e.transitions.create([`left`,`width`,`bottom`,`height`],{duration:e.transitions.duration.shortest}),variants:[{props:{size:`small`},style:{border:`none`}},{props:{orientation:`horizontal`},style:{height:`inherit`,top:`50%`,transform:`translateY(-50%)`}},{props:{orientation:`vertical`},style:{width:`inherit`,left:`50%`,transform:`translateX(-50%)`}},{props:{track:!1},style:{display:`none`}},...Object.keys((e.vars??e).palette).filter(t=>{var n;return(e.vars??e).palette[t].main}).map(t=>({props:{color:t,track:`inverted`},style:_extends$3({},e.vars?{backgroundColor:e.vars.palette.Slider[`${t}Track`],borderColor:e.vars.palette.Slider[`${t}Track`]}:_extends$3({backgroundColor:(0,import_colorManipulator.lighten)(e.palette[t].main,.62),borderColor:(0,import_colorManipulator.lighten)(e.palette[t].main,.62)},e.applyStyles(`dark`,{backgroundColor:(0,import_colorManipulator.darken)(e.palette[t].main,.5)}),e.applyStyles(`dark`,{borderColor:(0,import_colorManipulator.darken)(e.palette[t].main,.5)})))}))]}}),SliderThumb=styled$1(`span`,{name:`MuiSlider`,slot:`Thumb`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.thumb,t[`thumbColor${capitalize_default(n.color)}`],n.size!==`medium`&&t[`thumbSize${capitalize_default(n.size)}`]]}})(({theme:e})=>{var t;return{position:`absolute`,width:20,height:20,boxSizing:`border-box`,borderRadius:`50%`,outline:0,backgroundColor:`currentColor`,display:`flex`,alignItems:`center`,justifyContent:`center`,transition:e.transitions.create([`box-shadow`,`left`,`bottom`],{duration:e.transitions.duration.shortest}),"&::before":{position:`absolute`,content:`""`,borderRadius:`inherit`,width:`100%`,height:`100%`,boxShadow:(e.vars||e).shadows[2]},"&::after":{position:`absolute`,content:`""`,borderRadius:`50%`,width:42,height:42,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`},[`&.${sliderClasses.disabled}`]:{"&:hover":{boxShadow:`none`}},variants:[{props:{size:`small`},style:{width:12,height:12,"&::before":{boxShadow:`none`}}},{props:{orientation:`horizontal`},style:{top:`50%`,transform:`translate(-50%, -50%)`}},{props:{orientation:`vertical`},style:{left:`50%`,transform:`translate(-50%, 50%)`}},...Object.keys((e.vars??e).palette).filter(t=>{var n;return(e.vars??e).palette[t].main}).map(t=>({props:{color:t},style:{[`&:hover, &.${sliderClasses.focusVisible}`]:_extends$3({},e.vars?{boxShadow:`0px 0px 0px 8px rgba(${e.vars.palette[t].mainChannel} / 0.16)`}:{boxShadow:`0px 0px 0px 8px ${(0,import_colorManipulator.alpha)(e.palette[t].main,.16)}`},{"@media (hover: none)":{boxShadow:`none`}}),[`&.${sliderClasses.active}`]:_extends$3({},e.vars?{boxShadow:`0px 0px 0px 14px rgba(${e.vars.palette[t].mainChannel} / 0.16)`}:{boxShadow:`0px 0px 0px 14px ${(0,import_colorManipulator.alpha)(e.palette[t].main,.16)}`})}}))]}}),SliderValueLabel=styled$1(SliderValueLabel$1,{name:`MuiSlider`,slot:`ValueLabel`,overridesResolver:(e,t)=>t.valueLabel})(({theme:e})=>_extends$3({zIndex:1,whiteSpace:`nowrap`},e.typography.body2,{fontWeight:500,transition:e.transitions.create([`transform`],{duration:e.transitions.duration.shortest}),position:`absolute`,backgroundColor:(e.vars||e).palette.grey[600],borderRadius:2,color:(e.vars||e).palette.common.white,display:`flex`,alignItems:`center`,justifyContent:`center`,padding:`0.25rem 0.75rem`,variants:[{props:{orientation:`horizontal`},style:{transform:`translateY(-100%) scale(0)`,top:`-10px`,transformOrigin:`bottom center`,"&::before":{position:`absolute`,content:`""`,width:8,height:8,transform:`translate(-50%, 50%) rotate(45deg)`,backgroundColor:`inherit`,bottom:0,left:`50%`},[`&.${sliderClasses.valueLabelOpen}`]:{transform:`translateY(-100%) scale(1)`}}},{props:{orientation:`vertical`},style:{transform:`translateY(-50%) scale(0)`,right:`30px`,top:`50%`,transformOrigin:`right center`,"&::before":{position:`absolute`,content:`""`,width:8,height:8,transform:`translate(-50%, -50%) rotate(45deg)`,backgroundColor:`inherit`,right:-8,top:`50%`},[`&.${sliderClasses.valueLabelOpen}`]:{transform:`translateY(-50%) scale(1)`}}},{props:{size:`small`},style:{fontSize:e.typography.pxToRem(12),padding:`0.25rem 0.5rem`}},{props:{orientation:`vertical`,size:`small`},style:{right:`20px`}}]})),SliderMark=styled$1(`span`,{name:`MuiSlider`,slot:`Mark`,shouldForwardProp:e=>slotShouldForwardProp(e)&&e!==`markActive`,overridesResolver:(e,t)=>{let{markActive:n}=e;return[t.mark,n&&t.markActive]}})(({theme:e})=>({position:`absolute`,width:2,height:2,borderRadius:1,backgroundColor:`currentColor`,variants:[{props:{orientation:`horizontal`},style:{top:`50%`,transform:`translate(-1px, -50%)`}},{props:{orientation:`vertical`},style:{left:`50%`,transform:`translate(-50%, 1px)`}},{props:{markActive:!0},style:{backgroundColor:(e.vars||e).palette.background.paper,opacity:.8}}]})),SliderMarkLabel=styled$1(`span`,{name:`MuiSlider`,slot:`MarkLabel`,shouldForwardProp:e=>slotShouldForwardProp(e)&&e!==`markLabelActive`,overridesResolver:(e,t)=>t.markLabel})(({theme:e})=>_extends$3({},e.typography.body2,{color:(e.vars||e).palette.text.secondary,position:`absolute`,whiteSpace:`nowrap`,variants:[{props:{orientation:`horizontal`},style:{top:30,transform:`translateX(-50%)`,"@media (pointer: coarse)":{top:40}}},{props:{orientation:`vertical`},style:{left:36,transform:`translateY(50%)`,"@media (pointer: coarse)":{left:44}}},{props:{markLabelActive:!0},style:{color:(e.vars||e).palette.text.primary}}]})),useUtilityClasses$1=e=>{let{disabled:t,dragging:n,marked:a,orientation:o,track:s,classes:l,color:u,size:d}=e;return composeClasses({root:[`root`,t&&`disabled`,n&&`dragging`,a&&`marked`,o===`vertical`&&`vertical`,s===`inverted`&&`trackInverted`,s===!1&&`trackFalse`,u&&`color${capitalize_default(u)}`,d&&`size${capitalize_default(d)}`],rail:[`rail`],track:[`track`],mark:[`mark`],markActive:[`markActive`],markLabel:[`markLabel`],markLabelActive:[`markLabelActive`],valueLabel:[`valueLabel`],thumb:[`thumb`,t&&`disabled`,d&&`thumbSize${capitalize_default(d)}`,u&&`thumbColor${capitalize_default(u)}`],active:[`active`],disabled:[`disabled`],focusVisible:[`focusVisible`]},getSliderUtilityClass,l)},Forward=({children:e})=>e,Slider=import_react$24.forwardRef(function(e,t){var n,a,o,s,l,u,d,f,m,h,v,y,b,x,S,C,T,E,D,O,k,j,M,N;let F=useDefaultProps({props:e,name:`MuiSlider`}),I=useRtl(),{"aria-label":L,"aria-valuetext":R,"aria-labelledby":z,component:B=`span`,components:V={},componentsProps:H={},color:U=`primary`,classes:W,className:G,disableSwap:ee=!1,disabled:te=!1,getAriaLabel:K,getAriaValueText:q,marks:ne=!1,max:re=100,min:J=0,orientation:ie=`horizontal`,shiftStep:ae=10,size:oe=`medium`,step:se=1,scale:ce=Identity,slotProps:Y,slots:le,track:ue=`normal`,valueLabelDisplay:de=`off`,valueLabelFormat:X=Identity}=F,fe=_objectWithoutPropertiesLoose$3(F,_excluded$1),pe=_extends$3({},F,{isRtl:I,max:re,min:J,classes:W,disabled:te,disableSwap:ee,orientation:ie,marks:ne,color:U,size:oe,step:se,shiftStep:ae,scale:ce,track:ue,valueLabelDisplay:de,valueLabelFormat:X}),{axisProps:me,getRootProps:he,getHiddenInputProps:ge,getThumbProps:Z,open:_e,active:Q,axis:$,focusedThumbIndex:ve,range:ye,dragging:be,marks:xe,values:Se,trackOffset:Ce,trackLeap:we,getThumbStyle:Te}=useSlider(_extends$3({},pe,{rootRef:t}));pe.marked=xe.length>0&&xe.some(e=>e.label),pe.dragging=be,pe.focusedThumbIndex=ve;let Ee=useUtilityClasses$1(pe),De=le?.root??V.Root??SliderRoot,Oe=le?.rail??V.Rail??SliderRail,ke=le?.track??V.Track??SliderTrack,Ae=le?.thumb??V.Thumb??SliderThumb,je=le?.valueLabel??V.ValueLabel??SliderValueLabel,Me=le?.mark??V.Mark??SliderMark,Ne=le?.markLabel??V.MarkLabel??SliderMarkLabel,Pe=le?.input??V.Input??`input`,Fe=Y?.root??H.root,Ie=Y?.rail??H.rail,Le=Y?.track??H.track,Re=Y?.thumb??H.thumb,ze=Y?.valueLabel??H.valueLabel,Be=Y?.mark??H.mark,Ve=Y?.markLabel??H.markLabel,He=Y?.input??H.input,Ue=useSlotProps({elementType:De,getSlotProps:he,externalSlotProps:Fe,externalForwardedProps:fe,additionalProps:_extends$3({},shouldSpreadAdditionalProps(De)&&{as:B}),ownerState:_extends$3({},pe,Fe?.ownerState),className:[Ee.root,G]}),We=useSlotProps({elementType:Oe,externalSlotProps:Ie,ownerState:pe,className:Ee.rail}),Ge=useSlotProps({elementType:ke,externalSlotProps:Le,additionalProps:{style:_extends$3({},me[$].offset(Ce),me[$].leap(we))},ownerState:_extends$3({},pe,Le?.ownerState),className:Ee.track}),Ke=useSlotProps({elementType:Ae,getSlotProps:Z,externalSlotProps:Re,ownerState:_extends$3({},pe,Re?.ownerState),className:Ee.thumb}),qe=useSlotProps({elementType:je,externalSlotProps:ze,ownerState:_extends$3({},pe,ze?.ownerState),className:Ee.valueLabel}),Je=useSlotProps({elementType:Me,externalSlotProps:Be,ownerState:pe,className:Ee.mark}),Ye=useSlotProps({elementType:Ne,externalSlotProps:Ve,ownerState:pe,className:Ee.markLabel}),Xe=useSlotProps({elementType:Pe,getSlotProps:ge,externalSlotProps:He,ownerState:pe});return(0,import_jsx_runtime.jsxs)(De,_extends$3({},Ue,{children:[(0,import_jsx_runtime.jsx)(Oe,_extends$3({},We)),(0,import_jsx_runtime.jsx)(ke,_extends$3({},Ge)),xe.filter(e=>e.value>=J&&e.value<=re).map((e,t)=>{let n=valueToPercent(e.value,J,re),a=me[$].offset(n),o;return o=ue===!1?Se.indexOf(e.value)!==-1:ue===`normal`&&(ye?e.value>=Se[0]&&e.value<=Se[Se.length-1]:e.value<=Se[0])||ue===`inverted`&&(ye?e.value<=Se[0]||e.value>=Se[Se.length-1]:e.value>=Se[0]),(0,import_jsx_runtime.jsxs)(import_react$24.Fragment,{children:[(0,import_jsx_runtime.jsx)(Me,_extends$3({"data-index":t},Je,!isHostComponent(Me)&&{markActive:o},{style:_extends$3({},a,Je.style),className:clsx$1(Je.className,o&&Ee.markActive)})),e.label==null?null:(0,import_jsx_runtime.jsx)(Ne,_extends$3({"aria-hidden":!0,"data-index":t},Ye,!isHostComponent(Ne)&&{markLabelActive:o},{style:_extends$3({},a,Ye.style),className:clsx$1(Ee.markLabel,Ye.className,o&&Ee.markLabelActive),children:e.label}))]},t)}),Se.map((e,t)=>{let n=valueToPercent(e,J,re),a=me[$].offset(n),o=de===`off`?Forward:je;return(0,import_jsx_runtime.jsx)(o,_extends$3({},!isHostComponent(o)&&{valueLabelFormat:X,valueLabelDisplay:de,value:typeof X==`function`?X(ce(e),t):X,index:t,open:_e===t||Q===t||de===`on`,disabled:te},qe,{children:(0,import_jsx_runtime.jsx)(Ae,_extends$3({"data-index":t},Ke,{className:clsx$1(Ee.thumb,Ke.className,Q===t&&Ee.active,ve===t&&Ee.focusVisible),style:_extends$3({},a,Te(t),Ke.style),children:(0,import_jsx_runtime.jsx)(Pe,_extends$3({"data-index":t,"aria-label":K?K(t):L,"aria-valuenow":ce(e),"aria-labelledby":z,"aria-valuetext":q?q(ce(e),t):R,value:Se[t]},Xe))}))}),t)})]}))}),import_ZoomIn=__toESM(require_ZoomIn()),import_ZoomOut=__toESM(require_ZoomOut()),extendStatics$1=function(e,t){return extendStatics$1=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])},extendStatics$1(e,t)};function __extends$1(e,t){extendStatics$1(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}var __assign$1=function(){return __assign$1=Object.assign||function(e){for(var t,n=1,a=arguments.length;n<a;n++)for(var o in t=arguments[n],t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},__assign$1.apply(this,arguments)};function __rest$1(e,t){var n={};for(var a in e)Object.prototype.hasOwnProperty.call(e,a)&&t.indexOf(a)<0&&(n[a]=e[a]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var o=0,a=Object.getOwnPropertySymbols(e);o<a.length;o++)t.indexOf(a[o])<0&&Object.prototype.propertyIsEnumerable.call(e,a[o])&&(n[a[o]]=e[a[o]]);return n}var initialState={wrapperComponent:null,contentComponent:null,previousScale:1,scale:1,positionX:0,positionY:0,options:{disabled:!1,transformEnabled:!0,minPositionX:null,maxPositionX:null,minPositionY:null,maxPositionY:null,minScale:1,maxScale:8,limitToBounds:!0,limitToWrapper:!1,centerContent:!0,wrapperClass:``,contentClass:``},wheel:{disabled:!1,step:5,wheelEnabled:!0,touchPadEnabled:!0,limitsOnWheel:!1},pan:{disabled:!1,panAnimationType:`linear`,lockAxisX:!1,lockAxisY:!1,velocity:!0,velocityEqualToMove:!0,velocitySensitivity:2,velocityActiveScale:1,velocityMinSpeed:1,velocityBaseTime:1600,velocityAnimationType:`easeOutQuart`,padding:!0,paddingSize:30,panReturnAnimationTime:400,panReturnAnimationType:`easeOut`,disableOnTarget:[]},pinch:{disabled:!1},zoomIn:{disabled:!1,step:20,animation:!0,animationType:`easeOut`,animationTime:200},zoomOut:{disabled:!1,step:20,animation:!0,animationType:`easeOut`,animationTime:200},doubleClick:{disabled:!1,step:20,mode:`zoomIn`,animation:!0,animationType:`easeOut`,animationTime:200},reset:{disabled:!1,animation:!0,animationType:`easeOut`,animationTime:200},scalePadding:{disabled:!1,size:.2,animationTime:200,animationType:`easeOut`}},roundNumber=function(e,t){return Number(e.toFixed(t))},checkIsNumber=function(e,t){return typeof e==`number`?e:t},boundLimiter=function(e,t,n,a){return roundNumber(a?e<t?t:e>n?n:e:e,2)},calculateBoundingArea=function(e,t,n,a,o,s,l){var u=e>t?n*(l?1:.5):0,d=a>o?s*(l?1:.5):0;return{minPositionX:e-t-u,maxPositionX:u,minPositionY:a-o-d,maxPositionY:d}},getDistance=function(e,t){return Math.sqrt((e.pageX-t.pageX)**2+(e.pageY-t.pageY)**2)},deleteUndefinedProps=function(e){var t=__assign$1({},e);return Object.keys(t).forEach(function(e){return t[e]===void 0&&delete t[e]}),t},handleCallback=function(e,t){e&&typeof e==`function`&&e(t)},handleWheelStop=function(e,t,n){var a=n.scale,o=n.options,s=o.maxScale,l=o.minScale;return e?a<s||a>l||Math.sign(e.deltaY)!==Math.sign(t.deltaY)||e.deltaY>0&&e.deltaY<t.deltaY||e.deltaY<0&&e.deltaY>t.deltaY||Math.sign(e.deltaY)!==Math.sign(t.deltaY):!1},mergeProps=function(e,t){return Object.keys(e).reduce(function(n,a){return typeof t[a]==`object`&&t[a]!==null?n[a]=__assign$1(__assign$1({},e[a]),t[a]):n[a]=t[a]===void 0?e[a]:t[a],n},{})};function getWindowScaleY(e){return e?window.innerHeight/e.offsetHeight:0}function getWindowScaleX(e){return e?window.innerWidth/e.offsetWidth:0}var easeOut=function(e){return-Math.cos(e*Math.PI)/2+.5},linear=function(e){return e},easeInQuad=function(e){return e*e},easeOutQuad=function(e){return e*(2-e)},easeInOutQuad=function(e){return e<.5?2*e*e:-1+(4-2*e)*e},easeInCubic=function(e){return e*e*e},easeOutCubic=function(e){return--e*e*e+1},easeInOutCubic=function(e){return e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1},easeInQuart=function(e){return e*e*e*e},easeOutQuart=function(e){return 1- --e*e*e*e},easeInOutQuart=function(e){return e<.5?8*e*e*e*e:1-8*--e*e*e*e},easeInQuint=function(e){return e*e*e*e*e},easeOutQuint=function(e){return 1+--e*e*e*e*e},easeInOutQuint=function(e){return e<.5?16*e*e*e*e*e:1+16*--e*e*e*e*e},availableAnimations={easeOut,linear,easeInQuad,easeOutQuad,easeInOutQuad,easeInCubic,easeOutCubic,easeInOutCubic,easeInQuart,easeOutQuart,easeInOutQuart,easeInQuint,easeOutQuint,easeInOutQuint};function handleDisableAnimation(){this.mounted&&(this.animation&&cancelAnimationFrame(this.animation),this.animate=!1,this.animation=!1,this.velocity=!1)}function animate(e,t,n){var a=this;if(this.mounted){var o=new Date().getTime(),s=1;handleDisableAnimation.call(this),this.animation=function(){if(!(!a.animation||!a.mounted)){var l=new Date().getTime()-o,u=l/t,d=availableAnimations[e],f=d(u);l>=t?(n(s),a.animation=null):(n(f),requestAnimationFrame(a.animation))}},requestAnimationFrame(this.animation)}}function animateComponent(e){var t=this,n=e.targetState,a=e.speed,o=e.type,s=this.stateProvider,l=s.scale,u=s.positionX,d=s.positionY,f=n.scale-l,m=n.positionX-u,h=n.positionY-d;a===0?(this.stateProvider.previousScale=this.stateProvider.scale,this.stateProvider.scale=n.scale,this.stateProvider.positionX=n.positionX,this.stateProvider.positionY=n.positionY,this.applyTransformation()):animate.call(this,o,a,function(e){t.stateProvider.previousScale=t.stateProvider.scale,t.stateProvider.scale=l+f*e,t.stateProvider.positionX=u+m*e,t.stateProvider.positionY=d+h*e,t.applyTransformation()})}function checkZoomBounds(e,t,n,a,o){var s=t-(o?a:0);return!isNaN(n)&&e>=n?n:!isNaN(t)&&e<=s?s:e}function checkPositionBounds(e,t,n,a,o,s){var l=n.minPositionX,u=n.minPositionY,d=n.maxPositionX,f=n.maxPositionY,m=s?o*s.offsetWidth/100:0,h=s?o*s.offsetHeight/100:0;return{x:boundLimiter(e,l-m,d+m,a),y:boundLimiter(t,u-h,f+h,a)}}function getDelta(e,t){return checkIsNumber(t,e?e.deltaY<0?1:-1:0)}function wheelMousePosition(e,t,n){var a=t.getBoundingClientRect(),o=(e.clientX-a.left)/n,s=(e.clientY-a.top)/n;return(isNaN(o)||isNaN(s))&&console.error(`No mouse or touch offset found`),{mouseX:o,mouseY:s}}function getComponentsSizes(e,t,n){var a=e.offsetWidth,o=e.offsetHeight,s=t.offsetWidth,l=t.offsetHeight,u=s*n,d=l*n;return{wrapperWidth:a,wrapperHeight:o,newContentWidth:u,newDiffWidth:a-u,newContentHeight:d,newDiffHeight:o-d}}function handleCalculatePositions(e,t,n,a,o){var s=this.stateProvider,l=s.scale,u=s.positionX,d=s.positionY,f=s.options.transformEnabled,m=n-l;return typeof e!=`number`||typeof t!=`number`?console.error(`Mouse X and Y position were not provided!`):f?checkPositionBounds(u-e*m,d-t*m,a,o,0,null):{newPositionX:u,newPositionY:d}}function getClientPosition(e){var t=e.touches;return t&&t.length===1?{clientX:t[0].clientX,clientY:t[0].clientY}:t?null:{clientX:e.clientX,clientY:e.clientY}}function handlePanning(e){var t=this.stateProvider,n=t.scale,a=t.positionX,o=t.positionY,s=t.options,l=s.limitToBounds,u=s.minScale,d=t.pan,f=d.lockAxisX,m=d.lockAxisY,h=d.padding,v=d.paddingSize,y=t.wrapperComponent;if(this.startCoords){var b=this.startCoords,x=b.x,S=b.y,C=getClientPosition(e);if(!C)return console.error(`Cannot find mouse client positions`);var T=C.clientX,E=C.clientY,D=T-x,O=E-S,k=f?a:D,j=m?o:O,M=h&&n>=u?v:0;if(!(k===a&&j===o)){var N=checkPositionBounds(k,j,this.bounds,l,M,y);handlePaddingAnimation.call(this,N.x,N.y)}}}function handlePanningAnimation(){var e=this.stateProvider,t=e.scale,n=e.options.minScale,a=e.pan,o=a.disabled,s=a.padding,l=a.panReturnAnimationTime,u=a.panReturnAnimationType;if(!(o||t<n||!s)){var d=handlePanToBounds.call(this);animateComponent.call(this,{targetState:d,speed:l,type:u})}}function handlePanToBounds(){var e=this.stateProvider,t=e.positionX,n=e.positionY,a=e.scale,o=e.options,s=o.disabled,l=o.limitToBounds,u=o.limitToWrapper,d=this.state.wrapperComponent;if(!s){var f=this.bounds,m=f.maxPositionX,h=f.minPositionX,v=f.maxPositionY,y=f.minPositionY,b=t>m||t<h,x=n>v||n<y,S=t>m?d.offsetWidth:this.stateProvider.minPositionX||0,C=n>v?d.offsetHeight:this.stateProvider.minPositionY||0,T=S,E=C,D=handleCalculatePositions.call(this,T,E,a,this.bounds,l||u),O=D.x,k=D.y;return{scale:a,positionX:b?O:t,positionY:x?k:n}}}function handlePaddingAnimation(e,t){this.stateProvider.pan.padding&&(this.stateProvider.positionX=e,this.stateProvider.positionY=t,this.applyTransformation())}function handleCalculateZoom(e,t,n,a,o){var s=this.stateProvider,l=s.scale,u=s.options,d=u.maxScale,f=u.minScale,m=s.scalePadding,h=m.size,v=m.disabled,y=s.wrapperComponent,b=null;if(o){var x=window.innerWidth*1e-4,S=e<0?30:20;b=l+(t-t*x)*e*(l/S)}else{var C=2-window.innerWidth/y.offsetWidth,x=Math.max(.2,Math.min(.99,C)),S=20;b=l+t*e*((l-l*x)/S)}if(a)return b;var T=!n&&!v;return checkZoomBounds(roundNumber(b,3),f,d,h,T)}function handleCalculateBounds(e,t){var n=this.stateProvider,a=n.wrapperComponent,o=n.contentComponent,s=getComponentsSizes(a,o,e),l=s.wrapperWidth,u=s.wrapperHeight,d=s.newContentWidth,f=s.newDiffWidth,m=s.newContentHeight,h=s.newDiffHeight,v=calculateBoundingArea(l,d,f,u,m,h,t);return this.bounds=v,v}function handleWheelZoom(e){var t=this.stateProvider,n=t.scale,a=t.contentComponent,o=t.options.limitToBounds,s=t.scalePadding,l=s.size,u=s.disabled,d=t.wheel,f=d.step,m=d.limitsOnWheel;e.preventDefault(),e.stopPropagation();var h=getDelta(e,null),v=handleCalculateZoom.call(this,h,f,!e.ctrlKey);if(n!==v){var y=handleCalculateBounds.call(this,v,!m),b=wheelMousePosition(e,a,n),x=b.mouseX,S=b.mouseY,C=o&&(u||l===0||m),T=handleCalculatePositions.call(this,x,S,v,y,C),E=T.x,D=T.y;this.bounds=y,this.stateProvider.previousScale=n,this.stateProvider.scale=v,this.stateProvider.positionX=E,this.stateProvider.positionY=D,this.applyTransformation()}}function handleZoomToPoint(e,t,n,a,o){var s=this.stateProvider,l=s.contentComponent,u=s.options,d=u.disabled,f=u.minScale,m=u.maxScale,h=u.limitToBounds,v=u.limitToWrapper;if(!(d||e)){var y=checkZoomBounds(roundNumber(t,2),f,m,null,null),b=handleCalculateBounds.call(this,y,v),x=n,S=a;if(o){var C=wheelMousePosition(o,l,t);x=C.mouseX,S=C.mouseY}var T=handleCalculatePositions.call(this,x,S,y,b,h);return{scale:y,positionX:T.x,positionY:T.y}}}function handlePaddingAnimation$1(){var e=this.stateProvider,t=e.scale,n=e.wrapperComponent,a=e.options,o=a.minScale,s=a.limitToBounds,l=e.scalePadding,u=l.disabled,d=l.animationTime,f=l.animationType,m=u||t>=o;if((t>=1||s)&&handlePanningAnimation.call(this),!m){var h=n.offsetWidth/2,v=n.offsetHeight/2,y=handleZoomToPoint.call(this,!1,o,h,v,null);animateComponent.call(this,{targetState:y,speed:d,type:f})}}function handleDoubleClick(e){e.preventDefault(),e.stopPropagation();var t=this.stateProvider,n=t.contentComponent,a=t.scale,o=t.doubleClick,s=o.disabled,l=o.mode,u=o.step,d=o.animationTime,f=o.animationType;if(l===`reset`)return resetTransformations.call(this,e,d);var m=l===`zoomOut`?-1:1,h=handleCalculateZoom.call(this,m,u,void 0,void 0,!0),v=wheelMousePosition(e,n,a),y=v.mouseX,b=v.mouseY,x=handleZoomToPoint.call(this,s,h,y,b);if(x.scale!==a){var S=getButtonAnimationTime(handleCalculateZoom.call(this,m,u,!0,void 0,!0),h,d);animateComponent.call(this,{targetState:x,speed:S,type:f})}}function handleZoomControls(e,t){var n=this.stateProvider,a=n.scale,o=n.positionX,s=n.positionY,l=n.wrapperComponent,u=n.zoomIn,d=n.zoomOut,f=l.offsetWidth,m=l.offsetHeight,h=(f/2-o)/a,v=(m/2-s)/a,y=handleCalculateZoom.call(this,e,t,void 0,void 0,!0),b=y>a,x=b?u.animationTime:d.animationTime,S=b?u.animationType:d.animationType,C=b?u.disabled:d.disabled,T=handleZoomToPoint.call(this,C,y,h,v);if(T.scale!==a){var E=getButtonAnimationTime(handleCalculateZoom.call(this,e,t,!0,void 0,!0),y,x);animateComponent.call(this,{targetState:T,speed:E,type:S})}}function resetTransformations(e){var t=this.props.defaultValues,n=t.defaultScale,a=t.defaultPositionX,o=t.defaultPositionY,s=this.stateProvider,l=s.scale,u=s.positionX,d=s.positionY,f=s.reset,m=s.options,h=m.disabled,v=m.limitToBounds,y=m.centerContent,b=m.limitToWrapper;if(!(h||f.disabled)&&!(l===n&&u===a&&d===o)){var x=typeof e==`number`?e:f.animationTime,S=checkIsNumber(n,initialState.scale),C=checkIsNumber(a,initialState.positionX),T=checkIsNumber(o,initialState.positionY);if(v&&!b||y){var E=handleCalculateBounds.call(this,S,b);C=E.minPositionX,T=E.minPositionY}var D={scale:S,positionX:C,positionY:T};animateComponent.call(this,{targetState:D,speed:x,type:f.animationType})}}function getButtonAnimationTime(e,t,n){return t/e*n}function round(e,t){var n=10**t;return Math.round(e*n)/n}function getCurrentDistance(e){return getDistance(e.touches[0],e.touches[1])}function checkIfInfinite(e){return e===1/0||e===-1/0}function calculatePinchZoom(e,t){var n=this.stateProvider,a=n.options,o=a.minScale,s=a.maxScale,l=n.scalePadding,u=l.size,d=l.disabled;if(typeof t!=`number`||typeof e!=`number`)return console.error(`Pinch touches distance was not provided`);if(!(e<0))return checkZoomBounds(roundNumber(e/t*this.pinchStartScale,2),o,s,u,!d)}function calculateMidpoint(e,t,n){var a=n.getBoundingClientRect(),o=e.touches,s=round(o[0].clientX-a.left,5),l=round(o[0].clientY-a.top,5),u=round(o[1].clientX-a.left,5),d=round(o[1].clientY-a.top,5);return{mouseX:(s+u)/2/t,mouseY:(l+d)/2/t}}function handleZoomPinch(e){var t=this.stateProvider,n=t.scale,a=t.options,o=a.limitToBounds,s=a.limitToWrapper,l=t.scalePadding,u=l.disabled,d=l.size,f=t.wheel.limitsOnWheel,m=t.pinch,h=this.state.contentComponent;if(!(m.disabled||this.stateProvider.options.disabled)&&(e.cancelable&&(e.preventDefault(),e.stopPropagation()),this.pinchStartDistance!==null)){var v=calculateMidpoint(e,n,h),y=v.mouseX,b=v.mouseY;if(!(checkIfInfinite(y)||checkIfInfinite(b))){var x=getCurrentDistance(e),S=calculatePinchZoom.call(this,x,this.pinchStartDistance);if(!(checkIfInfinite(S)||S===n)){var C=handleCalculateBounds.call(this,S,s),T=o&&(u||d===0||f),E=handleCalculatePositions.call(this,y,b,S,C,T),D=E.x,O=E.y;this.lastDistance=x,this.stateProvider.positionX=D,this.stateProvider.positionY=O,this.stateProvider.scale=S,this.stateProvider.previousScale=n,this.applyTransformation()}}}}var throttleTime=30;function velocityTimeSpeed(e,t){return this.stateProvider.pan.velocityEqualToMove?t-t/Math.max(1,e):t}function handleEnableVelocity(){this.setState({startAnimation:!1})}function handleFireVelocity(){this.setState({startAnimation:!0})}function animateVelocity(){var e=this,t=this.stateProvider,n=t.positionX,a=t.positionY,o=t.options.limitToBounds,s=t.pan,l=s.velocityBaseTime,u=s.lockAxisX,d=s.lockAxisY,f=s.velocityAnimationType,m=s.panReturnAnimationTime,h=s.panReturnAnimationType,v=s.padding,y=s.paddingSize,b=t.wrapperComponent;if(this.mounted){if(!this.velocity||!this.bounds)return handleDisableAnimation.call(this);var x=this.bounds,S=x.maxPositionX,C=x.minPositionX,T=x.maxPositionY,E=x.minPositionY,D=this.velocity,O=D.velocityX,k=D.velocityY,j=D.velocity,M=velocityTimeSpeed.call(this,j,l);if(!M){handlePanningAnimation.call(this);return}var N=O,F=k,I=M>m?M:m,L=v?y:0,R=b?L*b.offsetWidth/100:0,z=b?L*b.offsetHeight/100:0,B=S+R,V=C-R,H=T+z,U=E-z,W=checkPositionBounds(n,a,this.bounds,o,L,b),G=new Date().getTime();animate.call(this,f,I,function(t){var s=new Date().getTime()-G,l=s/m,f=availableAnimations[h],v=f(l);(s>m||v>1||v===1/0||v===-1/0)&&(v=1);var y=getPosition(u,N,t,v,C,S,o,n,W.x,V,B),b=getPosition(d,F,t,v,E,T,o,a,W.y,U,H);(n!==y||a!==b)&&(e.stateProvider.positionX=y,e.stateProvider.positionY=b,e.applyTransformation())})}}function calculateVelocityStart(e){var t=this,n=this.stateProvider,a=n.scale,o=n.options.disabled,s=n.pan,l=s.velocity,u=s.velocitySensitivity,d=s.velocityActiveScale,f=s.velocityMinSpeed,m=n.wrapperComponent;if(!(!l||d>=a||o)){handleEnableVelocity.call(this);var h=Date.now();if(this.lastMousePosition){var v=getClientPosition(e);if(!v)return console.error(`No mouse or touch position detected`);var y=v.clientX,b=v.clientY,x=y-this.lastMousePosition.clientX,S=b-this.lastMousePosition.clientY,C=h-this.velocityTime,T=2-m.offsetWidth/window.innerWidth,E=2-m.offsetHeight/window.innerHeight,D=20*Math.max(f,Math.min(2,T)),O=20*Math.max(f,Math.min(2,E)),k=x/C*u*a*D,j=S/C*u*a*O,M=x*x+S*S,N=Math.sqrt(M)/C*u;if(this.velocity&&N<this.velocity.velocity&&this.throttle)return;this.velocity={velocityX:k,velocityY:j,velocity:N},this.throttle&&clearTimeout(this.throttle),this.throttle=setTimeout(function(){t.mounted&&(t.throttle=!1)},throttleTime)}var F=getClientPosition(e);this.lastMousePosition=F,this.velocityTime=h}}function getPosition(e,t,n,a,o,s,l,u,d,f,m){if(l){if(d>o&&u>s){var h=d-(d-s)*a;return h>m?m:h<s?s:h}if(d<o&&u<o){var h=d-(d-o)*a;return h<f?f:h>o?o:h}}return e?d:boundLimiter(u+t*n,o,s,l)}function makePassiveEventOption(e){return e}var propsList=`previousScale.scale.positionX.positionY.defaultPositionX.defaultPositionY.defaultScale.onWheelStart.onWheel.onWheelStop.onPanningStart.onPanning.onPanningStop.onPinchingStart.onPinching.onPinchingStop.onZoomChange.options.wheel.scalePadding.pan.pinch.zoomIn.zoomOut.doubleClick.reset`.split(`.`),getValidPropsFromObject=function(e){return Object.keys(e).reduce(function(t,n){return propsList.includes(n)&&(t[n]=e[n]),t},{})},Context=import_react$24.createContext({}),wheelStopEventTimer=null,wheelStopEventTime=180,wheelAnimationTimer=null,wheelAnimationTime=100,StateProvider=function(e){__extends$1(t,e);function t(){var t=e!==null&&e.apply(this,arguments)||this;return t.mounted=!0,t.state={wrapperComponent:void 0,contentComponent:void 0},t.stateProvider=__assign$1(__assign$1(__assign$1(__assign$1({},initialState),mergeProps(initialState,t.props.dynamicValues)),t.props.defaultValues),{previousScale:t.props.dynamicValues.scale||t.props.defaultValues.scale||initialState.scale}),t.windowToWrapperScaleX=0,t.windowToWrapperScaleY=0,t.startCoords=null,t.isDown=!1,t.pinchStartDistance=null,t.lastDistance=null,t.pinchStartScale=null,t.distance=null,t.bounds=null,t.velocityTime=null,t.lastMousePosition=null,t.velocity=null,t.offsetX=null,t.offsetY=null,t.throttle=!1,t.previousWheelEvent=null,t.lastScale=null,t.animate=null,t.animation=null,t.maxBounds=null,t.handleWheel=function(e){var n=t.stateProvider,a=n.scale,o=n.wheel,s=o.disabled,l=o.wheelEnabled,u=o.touchPadEnabled,d=t.props,f=d.onWheelStart,m=d.onWheel,h=d.onWheelStop,v=t.state,y=v.wrapperComponent,b=v.contentComponent;t.isDown||s||t.stateProvider.options.disabled||!y||!b||!l&&!e.ctrlKey||!u&&e.ctrlKey||(wheelStopEventTimer||(t.lastScale=a,handleDisableAnimation.call(t),handleCallback(f,t.getCallbackProps())),handleWheelZoom.call(t,e),handleCallback(m,t.getCallbackProps()),t.applyTransformation(null,null,null),t.previousWheelEvent=e,handleWheelStop(t.previousWheelEvent,e,t.stateProvider)&&(clearTimeout(wheelStopEventTimer),wheelStopEventTimer=setTimeout(function(){t.mounted&&(handleCallback(h,t.getCallbackProps()),wheelStopEventTimer=null)},wheelStopEventTime)),t.animate=!1,t.lastScale=t.stateProvider.scale,clearTimeout(wheelAnimationTimer),wheelAnimationTimer=setTimeout(function(){t.mounted&&handlePaddingAnimation$1.call(t,e)},wheelAnimationTime))},t.checkPanningTarget=function(e){var n=t.stateProvider.pan.disableOnTarget;return n.map(function(e){return e.toUpperCase()}).includes(e.target.tagName)||n.find(function(t){return e.target.classList.value.includes(t)})},t.checkIsPanningActive=function(e){var n=t.stateProvider.pan.disabled,a=t.state,o=a.wrapperComponent,s=a.contentComponent;return!t.isDown||n||t.stateProvider.options.disabled||e.touches&&(e.touches.length!==1||Math.abs(t.startCoords.x-e.touches[0].clientX)<1||Math.abs(t.startCoords.y-e.touches[0].clientY)<1)||!o||!s},t.handleSetUpPanning=function(e,n){var a=t.stateProvider,o=a.positionX,s=a.positionY;t.isDown=!0,t.startCoords={x:e-o,y:n-s},handleCallback(t.props.onPanningStart,t.getCallbackProps())},t.handleStartPanning=function(e){var n=t.stateProvider,a=n.wrapperComponent,o=n.scale,s=n.options,l=s.minScale,u=s.maxScale,d=s.limitToWrapper,f=n.pan.disabled,m=e.target,h=e.touches;f||t.stateProvider.options.disabled||a&&!a.contains(m)||t.checkPanningTarget(e)||o<l||o>u||(handleDisableAnimation.call(t),t.bounds=handleCalculateBounds.call(t,o,d),h&&h.length===1&&t.handleSetUpPanning(h[0].clientX,h[0].clientY),h||t.handleSetUpPanning(e.clientX,e.clientY))},t.handlePanning=function(e){t.isDown&&e.preventDefault(),!t.checkIsPanningActive(e)&&(e.stopPropagation(),calculateVelocityStart.call(t,e),handlePanning.call(t,e),handleCallback(t.props.onPanning,t.getCallbackProps()))},t.handleStopPanning=function(){if(t.isDown){t.isDown=!1,t.animate=!1,t.animation=!1,handleFireVelocity.call(t),handleCallback(t.props.onPanningStop,t.getCallbackProps());var e=t.stateProvider,n=e.pan.velocity,a=e.scale;t.velocity&&n&&a>1?animateVelocity.call(t):handlePanningAnimation.call(t)}},t.handlePinchStart=function(e){var n=t.stateProvider.scale;e.preventDefault(),e.stopPropagation(),handleDisableAnimation.call(t);var a=getDistance(e.touches[0],e.touches[1]);t.pinchStartDistance=a,t.lastDistance=a,t.pinchStartScale=n,t.isDown=!1,handleCallback(t.props.onPinchingStart,t.getCallbackProps())},t.handlePinch=function(e){t.isDown=!1,handleZoomPinch.call(t,e),handleCallback(t.props.onPinching,t.getCallbackProps())},t.handlePinchStop=function(){typeof t.pinchStartScale==`number`&&(t.isDown=!1,t.velocity=null,t.lastDistance=null,t.pinchStartScale=null,t.pinchStartDistance=null,handlePaddingAnimation$1.call(t),handleCallback(t.props.onPinchingStop,t.getCallbackProps()))},t.handleTouchStart=function(e){var n=t.stateProvider,a=n.wrapperComponent,o=n.contentComponent,s=n.scale,l=n.options,u=l.disabled,d=l.minScale,f=e.touches;if(!(u||!a||!o||s<d)){if(handleDisableAnimation.call(t),f&&f.length===1)return t.handleStartPanning(e);if(f&&f.length===2)return t.handlePinchStart(e)}},t.handleTouch=function(e){var n=t.stateProvider,a=n.pan,o=n.pinch;if(!n.options.disabled){if(!a.disabled&&e.touches.length===1)return t.handlePanning(e);if(!o.disabled&&e.touches.length===2)return t.handlePinch(e)}},t.handleTouchStop=function(){t.handleStopPanning(),t.handlePinchStop()},t.zoomIn=function(e){var n=t.stateProvider,a=n.zoomIn,o=a.disabled,s=a.step,l=n.options,u=t.state,d=u.wrapperComponent,f=u.contentComponent;if(!e)throw Error(`Zoom in function requires event prop`);o||l.disabled||!d||!f||handleZoomControls.call(t,1,s)},t.zoomOut=function(e){var n=t.stateProvider,a=n.zoomOut,o=a.disabled,s=a.step,l=n.options,u=t.state,d=u.wrapperComponent,f=u.contentComponent;if(!e)throw Error(`Zoom out function requires event prop`);o||l.disabled||!d||!f||handleZoomControls.call(t,-1,s)},t.handleDbClick=function(e){var n=t.stateProvider,a=n.options,o=n.doubleClick,s=o.disabled,l=o.step,u=t.state,d=u.wrapperComponent,f=u.contentComponent;if(!e)throw Error(`Double click function requires event prop`);s||a.disabled||!d||!f||handleDoubleClick.call(t,e,1,l)},t.setScale=function(e,n,a){n===void 0&&(n=200),a===void 0&&(a=`easeOut`);var o=t.stateProvider,s=o.positionX,l=o.positionY,u=o.scale,d=o.options.disabled,f=t.state,m=f.wrapperComponent,h=f.contentComponent;if(!(d||!m||!h)){var v={positionX:s,positionY:l,scale:isNaN(e)?u:e};animateComponent.call(t,{targetState:v,speed:n,type:a})}},t.setPositionX=function(e,n,a){n===void 0&&(n=200),a===void 0&&(a=`easeOut`);var o=t.stateProvider,s=o.positionX,l=o.positionY,u=o.scale,d=o.options,f=d.disabled,m=d.transformEnabled,h=t.state,v=h.wrapperComponent,y=h.contentComponent;if(!(f||!m||!v||!y)){var b={positionX:isNaN(e)?s:e,positionY:l,scale:u};animateComponent.call(t,{targetState:b,speed:n,type:a})}},t.setPositionY=function(e,n,a){n===void 0&&(n=200),a===void 0&&(a=`easeOut`);var o=t.stateProvider,s=o.positionX,l=o.scale,u=o.positionY,d=o.options,f=d.disabled,m=d.transformEnabled,h=t.state,v=h.wrapperComponent,y=h.contentComponent;if(!(f||!m||!v||!y)){var b={positionX:s,positionY:isNaN(e)?u:e,scale:l};animateComponent.call(t,{targetState:b,speed:n,type:a})}},t.setTransform=function(e,n,a,o,s){o===void 0&&(o=200),s===void 0&&(s=`easeOut`);var l=t.stateProvider,u=l.positionX,d=l.positionY,f=l.scale,m=l.options,h=m.disabled,v=m.transformEnabled,y=t.state,b=y.wrapperComponent,x=y.contentComponent;if(!(h||!v||!b||!x)){var S={positionX:isNaN(e)?u:e,positionY:isNaN(n)?d:n,scale:isNaN(a)?f:a};animateComponent.call(t,{targetState:S,speed:o,type:s})}},t.resetTransform=function(){var e=t.stateProvider.options,n=e.disabled,a=e.transformEnabled;n||!a||resetTransformations.call(t)},t.setDefaultState=function(){t.animation=null,t.stateProvider=__assign$1(__assign$1(__assign$1({},t.stateProvider),{scale:initialState.scale,positionX:initialState.positionX,positionY:initialState.positionY}),t.props.defaultValues),t.forceUpdate()},t.setWrapperComponent=function(e){t.setState({wrapperComponent:e})},t.setContentComponent=function(e){t.setState({contentComponent:e},function(){var n=t.stateProvider,a=n.wrapperComponent,o=n.options,s=o.centerContent,l=o.limitToBounds,u=o.limitToWrapper,d=n.scale,f=t.props.defaultValues,m=f.positionX,h=f.positionY;if(l&&!u||s&&!m&&!h){var v=`translate(25%, 25%) scale(`+d+`)`;e.style.transform=v,e.style.WebkitTransform=v,t.forceUpdate();var y=new Date().getTime(),b=2e3,x=setInterval(function(){if(a.offsetWidth){var e=handleCalculateBounds.call(t,d,!1);t.stateProvider.positionX=e.minPositionX,t.stateProvider.positionY=e.minPositionY,t.applyTransformation(null,null,null),clearInterval(x),x=null}else new Date().getTime()-y>b&&(clearInterval(x),x=null)},20)}else t.applyTransformation(null,null,null)})},t.applyTransformation=function(e,n,a){if(t.mounted){var o=t.state.contentComponent,s=t.props.onZoomChange,l=t.stateProvider,u=l.previousScale,d=l.scale,f=l.positionX,m=l.positionY;if(!o)return console.error(`There is no content component`);var h=`translate(`+(n||f)+`px, `+(a||m)+`px) scale(`+(e||d)+`)`;o.style.transform=h,o.style.WebkitTransform=h,t.forceUpdate(),s&&u!==d&&handleCallback(s,t.getCallbackProps())}},t.getCallbackProps=function(){return getValidPropsFromObject(t.stateProvider)},t}return t.prototype.componentDidMount=function(){var e=makePassiveEventOption(!1);window.addEventListener(`mousedown`,this.handleStartPanning,e),window.addEventListener(`mousemove`,this.handlePanning,e),window.addEventListener(`mouseup`,this.handleStopPanning,e)},t.prototype.componentWillUnmount=function(){var e=makePassiveEventOption(!1);window.removeEventListener(`mousedown`,this.handleStartPanning,e),window.removeEventListener(`mousemove`,this.handlePanning,e),window.removeEventListener(`mouseup`,this.handleStopPanning,e),handleDisableAnimation.call(this)},t.prototype.componentDidUpdate=function(e,t){var n=this.state,a=n.wrapperComponent,o=n.contentComponent,s=this.props.dynamicValues;if(!t.contentComponent&&o&&(this.stateProvider.contentComponent=o),!t.wrapperComponent&&a&&a!==void 0){this.stateProvider.wrapperComponent=a,this.windowToWrapperScaleX=getWindowScaleX(a),this.windowToWrapperScaleY=getWindowScaleY(a);var l=makePassiveEventOption(!1);a.addEventListener(`wheel`,this.handleWheel,l),a.addEventListener(`dblclick`,this.handleDbClick,l),a.addEventListener(`touchstart`,this.handleTouchStart,l),a.addEventListener(`touchmove`,this.handleTouch,l),a.addEventListener(`touchend`,this.handleTouchStop,l)}(a&&o||e.dynamicValues!==s)&&(this.maxBounds=handleCalculateBounds.call(this,this.stateProvider.scale,this.stateProvider.options.limitToWrapper)),e.dynamicValues&&e.dynamicValues!==s&&(this.animation=null,this.stateProvider=__assign$1(__assign$1({},this.stateProvider),mergeProps(this.stateProvider,s)),this.applyTransformation(null,null,null))},t.prototype.render=function(){var e=this.state,t=e.wrapperComponent,n=e.contentComponent,a={loaded:!!(t&&n),state:this.getCallbackProps(),dispatch:{setScale:this.setScale,setPositionX:this.setPositionX,setPositionY:this.setPositionY,zoomIn:this.zoomIn,zoomOut:this.zoomOut,setTransform:this.setTransform,resetTransform:this.resetTransform,setDefaultState:this.setDefaultState},nodes:{setWrapperComponent:this.setWrapperComponent,setContentComponent:this.setContentComponent}},o=this.props.children,s=typeof o==`function`?o(__assign$1(__assign$1({},a.state),a.dispatch)):o;return import_react$24.createElement(Context.Provider,{value:a},s)},t}(import_react$24.Component),TransformWrapper=function(e){var t=e.children,n=e.defaultPositionX,a=e.defaultPositionY,o=e.defaultScale,s=e.onWheelStart,l=e.onWheel,u=e.onWheelStop,d=e.onPanningStart,f=e.onPanning,m=e.onPanningStop,h=e.onPinchingStart,v=e.onPinching,y=e.onPinchingStop,b=e.onZoomChange,x=__rest$1(e,[`children`,`defaultPositionX`,`defaultPositionY`,`defaultScale`,`onWheelStart`,`onWheel`,`onWheelStop`,`onPanningStart`,`onPanning`,`onPanningStop`,`onPinchingStart`,`onPinching`,`onPinchingStop`,`onZoomChange`]),S=__assign$1({},x);return S.options&&S.options.limitToWrapper&&(S.options.limitToBounds=!0),import_react$24.createElement(StateProvider,{defaultValues:deleteUndefinedProps({positionX:n,positionY:a,scale:o}),dynamicValues:deleteUndefinedProps(getValidPropsFromObject(S)),onWheelStart:s,onWheel:l,onWheelStop:u,onPanningStart:d,onPanning:f,onPanningStop:m,onPinchingStart:h,onPinching:v,onPinchingStop:y,onZoomChange:b},t)};function styleInject(e,t){t===void 0&&(t={});var n=t.insertAt;if(!(!e||typeof document>`u`)){var a=document.head||document.getElementsByTagName(`head`)[0],o=document.createElement(`style`);o.type=`text/css`,n===`top`&&a.firstChild?a.insertBefore(o,a.firstChild):a.appendChild(o),o.styleSheet?o.styleSheet.cssText=e:o.appendChild(document.createTextNode(e))}}var css=`.TransformComponent-module_container__3NwNd {
730
730
  position: relative;
731
731
  width: fit-content;
732
732
  height: fit-content;
@@ -840,5 +840,5 @@ Keg contents take time to reach maturity before they can be sold. After they rea
840
840
 
841
841
  Kegs that contain fermented crops compound in value at a rate of ${KEG_INTEREST_RATE}% a day but have an increasing chance of spoiling.
842
842
 
843
- Kegs that contain wine compound in value at a rate of ${WINE_INTEREST_RATE}% for up to ${integerString(100)} days and never spoil.`})})})})})]})};CellarInventoryTabPanel.propTypes={currentTab:import_prop_types$1.number.isRequired,index:import_prop_types$1.number.isRequired};function getCropsAvailableToFerment(e){return Object.keys(e.items).reduce((e,t)=>{let n=getFinalCropItemFromSeedItem(itemsMap[t]);return n&&Number.isFinite(n.daysToFerment)&&e.push(n),e},[])}var FermentationRecipe=({item:e})=>{let{gameState:{inventory:t,cellarInventory:n,purchasedCellar:a},handlers:{handleMakeFermentationRecipeClick:o}}=(0,import_react$24.useContext)(FarmhandContext),[s,l]=(0,import_react$24.useState)(1),u=getInventoryQuantityMap(t),d=FERMENTED_CROP_NAME`${e}`,{space:f}=PURCHASEABLE_CELLARS.get(a)??{space:0};(0,import_react$24.useEffect)(()=>{l(Math.min(getMaxYieldOfFermentationRecipe(e,t,n,f),Math.max(1,s)))},[n,f,t,e,s]);let m=s>0&&cellarService.doesCellarSpaceRemain(n,a),h=()=>{m&&o(e,s)},v=getMaxYieldOfFermentationRecipe(e,t,n,f),y=cellarService.getItemInstancesInCellar(n,e);return(0,import_jsx_runtime.jsxs)(Card,{className:`FermentationRecipe`,sx:{position:`relative`,"& .MuiCardHeader-avatar img":{width:`3em`,filter:`drop-shadow(1px 1px 2px rgba(255, 0, 131, 0.63))`}},children:[(0,import_jsx_runtime.jsx)(CardHeader,{title:d,avatar:(0,import_jsx_runtime.jsx)(`img`,{src:items[e.id],alt:d}),subheader:(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(`p`,{children:[`Days to ferment: `,e.daysToFerment]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`Units of `,itemsMap[e.id].name,` in inventory:`,` `,integerString(u[e.id]??0)]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`Units of`,` `,itemsMap.salt.name,` `,`required: `,getSaltRequirementsForFermentationRecipe(e),` `,`(available:`,` `,(0,import_jsx_runtime.jsx)(AnimatedNumber,{number:u[itemsMap.salt.id]??0,formatter:integerString}),`)`]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`In cellar: `,integerString(y??0)]})]})}),(0,import_jsx_runtime.jsxs)(CardActions,{children:[(0,import_jsx_runtime.jsx)(Button,{className:`make-recipe`,color:`primary`,disabled:!m||!s,onClick:h,variant:`contained`,children:`Make`}),(0,import_jsx_runtime.jsx)(QuantityInput,{handleSubmit:h,handleUpdateNumber:l,maxQuantity:v,setQuantity:l,value:s})]})]})};FermentationRecipe.propTypes={item:import_prop_types$1.object.isRequired};var totalFermentableItems=Object.keys(fermentableItemsMap).length,FermentationRecipeList=()=>{let{gameState:{levelEntitlements:e}}=(0,import_react$24.useContext)(FarmhandContext),t=getCropsAvailableToFerment(e),[n,a]=(0,import_react$24.useState)(``),o=n.toLowerCase().split(` `).filter(e=>e.length>0),s=t.filter(e=>{let t=e,n=`${FERMENTED_CROP_NAME}${t.name}`.toLowerCase();return o.every(e=>n.includes(e)||t.name.toLowerCase().includes(e))}),l=s.length;return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(`h3`,{children:[`Available Fermentation Recipes (`,l,` /`,` `,totalFermentableItems,`)`]}),t.length>0&&(0,import_jsx_runtime.jsx)(SearchBar,{placeholder:`Search fermentation recipes...`,onSearch:a}),s.length>0&&(0,import_jsx_runtime.jsx)(`ul`,{className:`card-list`,children:s.map(e=>(0,import_jsx_runtime.jsx)(`li`,{children:(0,import_jsx_runtime.jsx)(FermentationRecipe,{item:e})},e.id))})]})};FermentationRecipeList.propTypes={};var FermentationTabPanel=({index:e,currentTab:t})=>(0,import_jsx_runtime.jsxs)(TabPanel,{value:t,index:e,children:[(0,import_jsx_runtime.jsx)(FermentationRecipeList,{}),(0,import_jsx_runtime.jsx)(Divider,{}),(0,import_jsx_runtime.jsx)(`ul`,{className:`card-list`,children:(0,import_jsx_runtime.jsx)(`li`,{children:(0,import_jsx_runtime.jsx)(Card,{children:(0,import_jsx_runtime.jsx)(CardContent,{children:(0,import_jsx_runtime.jsx)(import_react_markdown.default,{linkTarget:`_blank`,className:`markdown`,source:`Some items can be fermented and become much more valuable over time.`})})})})})]});FermentationTabPanel.propTypes={currentTab:import_prop_types$1.number.isRequired,index:import_prop_types$1.number.isRequired};var getGrapesSold=e=>Object.entries(e).reduce((e,[t,n])=>{let a=itemsMap[t];return(n||0)>0&&isGrape(a)&&e.push(a),e},[]);function getWineVarietiesAvailableToMake(e){return getGrapesSold(e).map(({variety:e})=>e)}var WineRecipe=({wineVariety:e})=>{let{gameState:{cellarInventory:t,inventory:n,purchasedCellar:a},handlers:{handleMakeWineClick:o}}=(0,import_react$24.useContext)(FarmhandContext),[s,l]=(0,import_react$24.useState)(1),u=grapeVarietyNameMap[e],d=grapeVarietyToGrapeItemMap[e],{space:f}=PURCHASEABLE_CELLARS.get(a)??{space:0},m=getInventoryQuantityMap(n);if((0,import_react$24.useEffect)(()=>{d&&l(Math.min(wineService.getMaxWineYield({grape:d,inventory:n,cellarInventory:t,cellarSize:f}),Math.max(1,s)))},[t,f,d,n,s,e]),!d)return null;let h=itemsMap[d.wineId];if(!h)return null;let v=m[d.id]??0,y=m[yeast.id]??0,b=s>0&&v>=50&&cellarService.doesCellarSpaceRemain(t,a),x=!b||!s,S=cellarService.getItemInstancesInCellar(t,h),C=wineService.getMaxWineYield({grape:d,inventory:n,cellarInventory:t,cellarSize:f}),T=()=>{b&&o(d,s)};return(0,import_jsx_runtime.jsxs)(Card,{className:`WineRecipe`,sx:{position:`relative`},children:[(0,import_jsx_runtime.jsx)(CardHeader,{title:u,avatar:(0,import_jsx_runtime.jsx)(`img`,{src:wines[e],alt:u}),subheader:(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(`p`,{children:[`Days to mature:`,` `,integerString(wineService.getDaysToMature(e))]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`Units of `,d.name,` required:`,` `,integerString(50),` (available:`,` `,integerString(v),`)`]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`Units of `,yeast.name,` required:`,` `,integerString(getYeastRequiredForWine(e)*s),` `,`(available: `,integerString(y),`)`]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`In cellar: `,integerString(S??0)]})]})}),(0,import_jsx_runtime.jsxs)(CardActions,{children:[(0,import_jsx_runtime.jsx)(Button,{color:`primary`,variant:`contained`,disabled:x,onClick:T,children:`Make`}),(0,import_jsx_runtime.jsx)(QuantityInput,{handleSubmit:T,handleUpdateNumber:l,maxQuantity:C,setQuantity:l,value:s})]})]})};WineRecipe.propTypes={wineVariety:(0,import_prop_types$1.oneOf)(Object.keys(grapeVariety))};var totalGrapeVarieties=Object.keys(grapeVariety).length,WineRecipeList=()=>{let{gameState:{itemsSold:e}}=(0,import_react$24.useContext)(FarmhandContext),t=getWineVarietiesAvailableToMake(e),[n,a]=(0,import_react$24.useState)(``),o=t.filter(e=>e.toLowerCase().includes(n.toLowerCase())),s=o.length;return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(`h3`,{children:[`Available Wine Recipes (`,s,` /`,` `,totalGrapeVarieties,`)`]}),t.length>0&&(0,import_jsx_runtime.jsx)(SearchBar,{placeholder:`Search wine varieties...`,onSearch:a}),(0,import_jsx_runtime.jsx)(`ul`,{className:`card-list`,children:o.map(e=>(0,import_jsx_runtime.jsx)(`li`,{children:(0,import_jsx_runtime.jsx)(WineRecipe,{wineVariety:e})},e))})]})},WinemakingTabPanel=({index:e,currentTab:t})=>(0,import_jsx_runtime.jsxs)(TabPanel,{value:t,index:e,children:[(0,import_jsx_runtime.jsx)(WineRecipeList,{}),(0,import_jsx_runtime.jsx)(Divider,{}),(0,import_jsx_runtime.jsx)(`ul`,{className:`card-list`,children:(0,import_jsx_runtime.jsx)(`li`,{children:(0,import_jsx_runtime.jsx)(Card,{children:(0,import_jsx_runtime.jsx)(CardContent,{children:(0,import_jsx_runtime.jsx)(import_react_markdown.default,{linkTarget:`_blank`,className:`markdown`,source:`Grapes can be made into wine. Wine becomes very valuable in time and never spoils.`})})})})})]});WinemakingTabPanel.propTypes={currentTab:import_prop_types$1.number.isRequired,index:import_prop_types$1.number.isRequired};var CELLAR_TAB_LABELS=[`Cellar Inventory`,`Fermentation`,`Winemaking`],Cellar=()=>{let[e,t]=useTabQueryParam(CELLAR_TAB_LABELS);return(0,import_jsx_runtime.jsxs)(Div,{className:`Cellar`,sx:centerTabsSx,children:[(0,import_jsx_runtime.jsx)(Tabs,{value:e,onChange:(e,n)=>t(n),"aria-label":`Cellar tabs`,children:CELLAR_TAB_LABELS.map((e,t)=>(0,import_jsx_runtime.jsx)(Tab,{label:e,...a11yProps(t)},e))}),(0,import_jsx_runtime.jsx)(CellarInventoryTabPanel,{index:0,currentTab:e}),(0,import_jsx_runtime.jsx)(FermentationTabPanel,{index:1,currentTab:e}),(0,import_jsx_runtime.jsx)(WinemakingTabPanel,{index:2,currentTab:e})]})};Cellar.propTypes={};var brown_dot_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAk0lEQVRoge2UoRGAMBAECZYS8HRDw5QSnxKig88gfgaxl59befPi12wZzz22idr6dp3HPEvu5UtgJXb6gb9YgCaPQG3980B9d4VoLECTU0ClMJHdFaKxAE0eAcXCRHZXiMYCNDkFVAoT2V0hGgvQ5BFQLExkd4VoLECTU0ClMJHdFaKxAE0eAcXCRHZXiMYCNMsLvBG5ypkvoIETAAAAAElFTkSuQmCC`,floorboard_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAAAwCAYAAAD+WvNWAAAAAXNSR0IArs4c6QAAAUxJREFUeJzt3TFuwkAQheEFjSUQoo1EKJIid8oFuFMuwEVyjYgCCrBEayEiuQgtASNBXvDMmv8rt9nR7pPG24x7X/PZT0LryqpKk/HYuwxZ37sA5I0AQWJlVXnX8LC6cPY2rL9/LeyLQTpdAy6hhUFCgCAhQJDYvhicLTatAU3OPqIRW7RHDi0MEgIECQGCpPEjGrFFujObTl68a8CRdblKOd0JLQwSAgQJAYKEAEFCgCCxdbnyrgEncroTexoVrW643dWp7T1xP7QwSAgQJAQIEgIECQGCxLa7uvVNPfbEfdjb67N3DY0Wy02KWlvu/vNsaWGQECBICBAkBAiS3ufHOwOm8GdhX2FeeP3dhhYGCQGChABBQoAgIUCQ2GK58a4hHM7kelfPB4o2lwYx0MIgIUCQECBICBAkNw2YijTYCDFYF345lKOu/O7pAEBLR2y+MLyqAAAAAElFTkSuQmCC`,jack_o_lantern_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAeCAYAAABNChwpAAAA4UlEQVRYR+2VMQ6DMAxFYe4R2LsxdOopuHBv0KkDW/ceoTOVK/0qhICd8K0wNBNyIv3nH5PfTrdhaiqu9vAAz9f768+5O7n4tOmAt7h0tAAIRde+mVbMACCoCTCv4wcQio+Pe9NfrjOOuMaCWACIEBYgUjU3AM1+7LsCVL0CdBjaLrV4JugOiEjVvwCdhxDoMlWzzop27vhZoHWwd//vgLsDWqK6AmjiyTjeO1S5cU51oOQhowGUxjkdIDfO6QDWGcIz7wKQE+cuAOKCNc5pAKVxTgWIISxxTgewDiHOVQf4AHx92LXFZzetAAAAAElFTkSuQmCC`,winter_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAQdJREFUeJztmcERgyAUBZ9pIjVRUa5UldT0K/BITnhKZpgYXYG3Bei6oyCwxFrKPb9EEznpTI/ISZK06PEsp931YkROcweQpBstQNMcoH4zo9EUoD78iBGaAtTR+Qqzxb/xIEgL0DgALUDTTYCjZiAPgrQAjQPQAjQOcNSFe1k3eBagBWgcgBagcYBeRuujmP4NWGIt2zQ44pbXN7aDkaucDFH4E/Cf4OQ4AC1A4wC0AI0D0AI0DkAL0DgALUDjALQAze4AkVM3hyCfmP4N8H4ALUDjALQAjQPQAjQOQAvQOAAtQDNEgD3rkSECSL+fbHstQAvQOAAtQOMAtACNA9ACFWJjNXLSG2nxQbKUEorlAAAAAElFTkSuQmCC`,yellow_dot_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAx0lEQVRoQ+2WwQ3AIAwDYRVW6dx9dg1GKf1WlEcTAUks94maBHzGIt/taqn7aj1TKUe/nDyu59EBPjt3vMADWMMhATcEPCbMnySkhdxYyHoj2vm0kFa5WXVDApESiRaaZQVtHxLQKjerDodApOR5v5FwCMzy5O4+JLBb8X4eJoFIiYRJwNrXkvkkIFFrxb84BCIlD99CK7ys7YlzB7QKWNdhEoiUSJgErH0tmU8CErVW/ItDIFLy8C20wsvanjh3QKuAdV14Ag9MlnJUFzG78wAAAABJRU5ErkJgggAA`,lavender_dot_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAyUlEQVRoQ+2WwRGAIAwEQw0WYf/l+LQAPzaAXwd5mAyQ5OZ8MiaB2+OGcp+1SvNdh8i2t6siEddL7wDfrcdd4QG82ZBAGAIRE+ZPEtJCYSzkvRHrfFrIqtyoui6BTIlEC42ygrUPCViVG1WHQyBT8rzfSDgERnlydR8SWK14Ow+TQKZEwiTg7WvNfBLQqDXjXxwCmZKHb6EZXrb2xLkDVgW86zAJZEokTALevtbMJwGNWjP+xSGQKXn4FprhZWtPnDtgVcC7Lj2BB3XCNohEy6k2AAAAAElFTkSuQmCC`,grass_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABp0lEQVRoQ92Y63HDMAyD5RE6QMfLCp2qi2SODtARkmt7yTmuJIAEeHbiv+LrIyjZ8vJxbpe28/P91drbe66IZQ2gBMql//Ni8o5sZAAm+RqOtd/aUQCzLo4CsAXdYrP2rN2DAhkAZXQcvjSAI1lFjBIAVn4H0K4ADtASALaz7EkzO8V+ARydYItWD4ptrVMAJ5gz1roJ0xFyJnXGogGiclcVOasjvYl7xT4VgGPTOmKkFXAkd8S4AyD50fqoGNZvZjdbex0Ah5xsDFYVJp60B7KFZP16d4pdAJjOsu8gCaCXRO1uFE6+E28TPj1AtIOqinCEqjuqfpIcEiCiIgRAwaoVmt3GftZKAdxwvXjL6bNdsv8lj6BOKYB6wqAGWUaISYLmOBrDcqVUkiLfyN75t4lZZ9YOFauO2SEBItDyMcp+NTJFZVSlATLBoz6Za2UpANN11mb0zUQDsIlYu6g6o81uAcgUk/HpQewG4Hq50b9V2NHI2ClqHAIgA33zgSOkdMcxJij/6wMo8lb5rlWBCkSLQJKjeIy/BIASoHUHgHQfUAtEANH1K9JWO4Tg58LYAAAAAElFTkSuQmCC`,forest_floor_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAWRJREFUaIHlWTkSgzAMNH6AO16V/78inT+QVDREYB2rg8mWjBHs6rBkb+M1Pu2Euc823uP8uCQ69RD583OfMFsUSAJIcMXQEjUTQCms9bqZQHauqAl4xzYXagIZylOi/RCIUlbzHUq0HwJRyqK+415GD3h5NoyAl2dVBO7URCjNsXGs2ahe6ElwD6GVmlaPpfdC1twISWLPvaV7u7g57y0d7WK02it78BBCq72yF7aRecF9oJGGlHQ9SUBiBJ1D0vXuQ/0K0I0sY8qCbmR3xiQNViTYScxRKmPMLFlGJZ6En0pEtx7wUwmvMLoShl2Fss+BroRhVyGOsqWrEAfWMqzBf55KVEIZApD7gcxKA7kfoIxkl88Velv8pFaZKOK9OVWIqMbOlMQaldFtuYmARmVUW36QZBOolswHyWUSn1+oBrck1kDj5TI7cVMKyb6lfMxQb5m0rtZIiEFO5tAfk8wJ0jD6AhfOowgv6la0AAAAAElFTkSuQmCC`,Stage=({dayCount:e,field:t,isMenuOpen:n=!0,stageFocus:a,useAlternateEndDayButtonPosition:o=!1,viewTitle:s})=>{let l=(0,import_react$24.useRef)(null);(0,import_react$24.useEffect)(()=>{if(l.current){let e=l.current,{style:t}=e;e.scrollTop=0,t.overflow=`hidden`,setTimeout(()=>t.overflow=``,0)}},[a]);let u={[stageFocusType.HOME]:isOctober()?jack_o_lantern_bg_default:isDecember()?winter_bg_default:brown_dot_bg_default,[stageFocusType.SHOP]:yellow_dot_bg_default,[stageFocusType.WORKSHOP]:lavender_dot_bg_default,[stageFocusType.CELLAR]:floorboard_default,[stageFocusType.FIELD]:grass_default,[stageFocusType.COW_PEN]:grass_default,[stageFocusType.FOREST]:forest_floor_default}[a],d=[stageFocusType.FIELD,stageFocusType.COW_PEN,stageFocusType.FOREST].includes(a);return(0,import_jsx_runtime.jsxs)(Div,{className:(0,import_classnames.default)(`Stage`,{"is-october":isOctober(),"is-december":isDecember()}),"data-stage-focus":a,role:`main`,ref:l,sx:t=>({flex:2,imageRendering:`pixelated`,marginLeft:0,overflow:`auto`,padding:`1.5em 1.5em 0`,position:`relative`,zIndex:0,transition:t.transitions.create(`margin-left`,{duration:t.transitions.duration.enteringScreen,easing:t.transitions.easing.easeOut}),"& .stage-background":{backgroundSize:`96px`,bottom:0,left:0,pointerEvents:`none`,position:`fixed`,right:0,top:0,zIndex:-1,...u?{backgroundImage:`url(${u})`}:{},...d?{backgroundSize:`30%`,filter:seasonFilterMap[getCurrentSeason(e)],[`@media (min-width: ${breakpoints.md}px)`]:{backgroundSize:`10%`}}:{},...a===stageFocusType.CELLAR?{backgroundSize:`288px 96px`}:{}},"& h3":{textAlign:`center`},"& h2":{fontSize:`1.2em`},"& .view-title":{fontSize:`2.5em`,marginBottom:`0.6em`,textAlign:`center`,[`@media (min-width: ${breakpoints.largePhone}px)`]:{display:`none`}},"& section":{padding:`0.5em 0`,[`@media (max-width: ${breakpoints.sm}px)`]:{fontSize:`1em`}},...o?{paddingTop:`4em`,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{paddingTop:`4.5em`}}:{},...n?{transitionProperty:`padding, margin-left`,[`@media (max-width: ${breakpoints.sm}px)`]:{padding:0},"& > *":{opacity:1,transition:t.transitions.create(`opacity`,{duration:t.transitions.duration.enteringScreen,easing:t.transitions.easing.easeOut}),[`@media (max-width: ${breakpoints.sm}px)`]:{opacity:0}}}:{marginLeft:`-${layout.sidebarWidth}`,transition:t.transitions.create(`margin-left`,{duration:t.transitions.duration.leavingScreen,easing:t.transitions.easing.sharp}),[`@media (max-width: ${breakpoints.smallPhone}px)`]:{marginLeft:`-${layout.narrowSidebarWidth}px`}}}),children:[(0,import_jsx_runtime.jsx)(`div`,{className:`stage-background`}),(0,import_jsx_runtime.jsx)(`h2`,{className:`view-title`,children:s}),a===stageFocusType.HOME&&(0,import_jsx_runtime.jsx)(Consumer$7,{}),a===stageFocusType.FIELD&&(0,import_jsx_runtime.jsx)(Consumer$10,{columns:t[0].length,rows:t.length}),a===stageFocusType.FOREST&&(0,import_jsx_runtime.jsx)(Forest,{}),a===stageFocusType.SHOP&&(0,import_jsx_runtime.jsx)(Consumer$4,{}),a===stageFocusType.COW_PEN&&(0,import_jsx_runtime.jsx)(Consumer$6,{}),a===stageFocusType.WORKSHOP&&(0,import_jsx_runtime.jsx)(Consumer$1,{}),a===stageFocusType.CELLAR&&(0,import_jsx_runtime.jsx)(Cellar,{}),(0,import_jsx_runtime.jsx)(`div`,{className:`spacer`})]})};Stage.propTypes={dayCount:import_prop_types$1.number.isRequired,field:(0,import_prop_types$1.arrayOf)(import_prop_types$1.array).isRequired,isMenuOpen:import_prop_types$1.bool,stageFocus:import_prop_types$1.string.isRequired,useAlternateEndDayButtonPosition:import_prop_types$1.bool,viewTitle:import_prop_types$1.string.isRequired};function Consumer(e){return(0,import_jsx_runtime.jsx)(FarmhandContext.Consumer,{children:({gameState:t,handlers:n})=>(0,import_jsx_runtime.jsx)(Stage,{...t,...n,...e})})}var scriptRel=`modulepreload`,assetsURL=function(e,t){return new URL(e,t).href},seen={},__vitePreload=function(e,t,n){let a=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),o=document.querySelector(`meta[property=csp-nonce]`),s=o?.nonce||o?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function u(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}a=l(t.map(t=>{if(t=assetsURL(t,n),t=u(t),t in seen)return;seen[t]=!0;let a=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let o=e[n];if(o.href===t&&(!a||o.rel===`stylesheet`))return}let o=document.createElement(`link`);if(o.rel=a?`stylesheet`:scriptRel,a||(o.as=`script`),o.crossOrigin=``,o.href=t,s&&o.setAttribute(`nonce`,s),document.head.appendChild(o),a)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function o(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return a.then(t=>{for(let e of t||[])e.status===`rejected`&&o(e.reason);return e().catch(o)})},autoUpdateMode=`false`,selfDestroying=`false`,auto=autoUpdateMode===`true`,autoDestroy=selfDestroying===`true`;function registerSW(e={}){let{immediate:t=!1,onNeedReload:n,onNeedRefresh:a,onOfflineReady:o,onRegistered:s,onRegisteredSW:l,onRegisterError:u}=e,d,f,m,h=async(e=!0)=>{await f,auto||m?.()};async function v(){if(`serviceWorker`in navigator){if(d=await __vitePreload(async()=>{let{Workbox:e}=await import(`./workbox-window.prod.es5-Bd17z0YL.js`);return{Workbox:e}},[],import.meta.url).then(({Workbox:e})=>new e(`./service-worker.js`,{scope:`./`,type:`classic`})).catch(e=>{u?.(e)}),!d)return;if(m=()=>{d?.messageSkipWaiting()},!autoDestroy)if(auto)d.addEventListener(`activated`,e=>{(e.isUpdate||e.isExternal)&&(n?n():window.location.reload())}),d.addEventListener(`installed`,e=>{e.isUpdate||o?.()});else{let e=!1,t=()=>{e=!0,d?.addEventListener(`controlling`,e=>{e.isUpdate&&(n?n():window.location.reload())}),a?.()};d.addEventListener(`installed`,n=>{n.isUpdate===void 0?n.isExternal===void 0?!e&&o?.():n.isExternal?t():!e&&o?.():n.isUpdate||o?.()}),d.addEventListener(`waiting`,t)}d.register({immediate:t}).then(e=>{l?l(`./service-worker.js`,e):s?.(e)}).catch(e=>{u?.(e)})}}return f=v(),h}function useRegisterSW(e={}){let{immediate:t=!0,onNeedReload:n,onNeedRefresh:a,onOfflineReady:o,onRegistered:s,onRegisteredSW:l,onRegisterError:u}=e,[d,f]=(0,import_react$24.useState)(!1),[m,h]=(0,import_react$24.useState)(!1),[v]=(0,import_react$24.useState)(()=>registerSW({immediate:t,onNeedReload:n,onOfflineReady(){h(!0),o?.()},onNeedRefresh(){f(!0),a?.()},onRegistered:s,onRegisteredSW:l,onRegisterError:u}));return{needRefresh:[d,f],offlineReady:[m,h],updateServiceWorker:v}}var UpdateNotifier=()=>{let{handlers:{handleGameUpdateAvailable:e}}=(0,import_react$24.useContext)(FarmhandContext),{needRefresh:[t],updateServiceWorker:n}=useRegisterSW();return(0,import_react$24.useEffect)(()=>{t&&(e(n),window.addEventListener(`beforeunload`,()=>{n(!0)}))},[t,e,n]),null},commonFetchConfig={mode:`cors`,cache:`no-cache`,credentials:`same-origin`,headers:{"Content-Type":`application/json`},redirect:`follow`,referrerPolicy:`no-referrer`};async function getData(e=``,t={}){let n=new URLSearchParams;return Object.keys(t).forEach(e=>n.append(encodeURIComponent(e),encodeURIComponent(t[e]))),(await fetch(`${e}?${n}`,{...commonFetchConfig,method:`GET`})).json()}async function postData(e=``,t={}){return(await fetch(e,{...commonFetchConfig,method:`POST`,body:JSON.stringify(t)})).json()}var createNewField=()=>Array(10).fill(void 0).map(()=>[,,,,,,].fill(null)),createNewForest=()=>[,].fill(void 0).map(()=>[,,,,].fill(null)),doesMenuObstructStage=()=>window.innerWidth<BREAKPOINTS.MD,getAvailableShopInventory=memoize(e=>inventory.filter(({id:t})=>!(unlockableItems.hasOwnProperty(t)&&!e.items.hasOwnProperty(t)))),getPeerMetadata=e=>{let t=PEER_METADATA_STATE_KEYS.reduce((t,n)=>(t[n]=e[n],t),{});return Object.assign(t,{cowOfferedForTrade:e.cowInventory.find(({id:t})=>t===e.cowIdOfferedForTrade)}),t},getViewList=({isForestUnlocked:e,purchasedCellar:t,purchasedCowPen:n,showHomeScreen:a})=>{let{CELLAR:o,COW_PEN:s,HOME:l,WORKSHOP:u,FOREST:d}=stageFocusType,f=[...STANDARD_VIEW_LIST];return a&&f.unshift(l),e&&f.push(d),n&&f.push(s),f.push(u),t&&f.push(o),f},getValidatedStageFocusFromHash=e=>{let t=getHashQueryParams().get(VIEW_QUERY_PARAM_NAME);if(!t)return;let n=getLevelEntitlements(levelAchieved(e.experience)).stageFocusType[stageFocusType.FOREST];return getViewList({isForestUnlocked:n,purchasedCellar:e.purchasedCellar,purchasedCowPen:e.purchasedCowPen,showHomeScreen:e.showHomeScreen}).find(e=>e===t)},sleep=e=>new Promise(t=>setTimeout(t,e)),{PLANT}=fieldMode,{MULCH}=itemType,FarmhandService=class{static computePlayerInventory=memoize((e,t)=>e.map(({quantity:e,id:n})=>({quantity:e,...itemsMap[n],value:getItemCurrentValue(itemsMap[n],t)})));static getFieldToolInventory=memoize(e=>e.filter(({id:e})=>{let t=itemsMap[e];return typeof t.enablesFieldMode==`string`&&t.enablesFieldMode!==PLANT&&t.type!==MULCH}).map(({id:e,quantity:t})=>({...itemsMap[e],quantity:t})));static getPlantableCropInventory=memoize(e=>e.filter(({id:e})=>itemsMap[e].isPlantableCrop).map(({id:e,quantity:t})=>({...itemsMap[e],quantity:t})));static getMulchInventory=memoize(e=>e.filter(({id:e})=>itemsMap[e]?.type===MULCH).map(({id:e,quantity:t})=>({...itemsMap[e],quantity:t})));static getPlantableTreeInventory=memoize(e=>e.filter(({id:e})=>itemsMap[e]?.isPlantableTree).map(({id:e,quantity:t})=>({...itemsMap[e],quantity:t})));static applyPriceEvents=(e,t,n)=>{let a={...e};return Object.keys(t).forEach(e=>{a[e]=.5}),Object.keys(n).forEach(e=>{a[e]=1.5}),a}},itemIds=Object.keys(itemsMap),getInventoryQuantities=e=>{let t={};for(let e of itemIds)t[e]=0;for(let{id:n,quantity:a}of e)t[n]=a;return t},useFarmhandNavigation=(e,t)=>({openDialogView:(0,import_react$24.useCallback)(t=>{e(e=>({...e,currentDialogView:t,isDialogViewOpen:!0}))},[e]),closeDialogView:(0,import_react$24.useCallback)(()=>{e(e=>({...e,isDialogViewOpen:!1}))},[e]),focusNextView:(0,import_react$24.useCallback)(()=>{document.activeElement?.getAttribute(`role`)!==`tab`&&e(e=>{let n=t.indexOf(e.stageFocus);return{...e,stageFocus:t[(n+1)%t.length]}})},[e,t]),focusPreviousView:(0,import_react$24.useCallback)(()=>{document.activeElement?.getAttribute(`role`)!==`tab`&&e(e=>{let n=t.indexOf(e.stageFocus),a=n===0?t.length-1:(n-1)%t.length;return{...e,stageFocus:t[a]}})},[e,t])}),{floor,random,sin}=Math,libName=`Trystero`,alloc=(e,t)=>Array(e).fill(void 0).map(t),charSet=`0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz`,genId=e=>alloc(e,()=>charSet[floor(random()*62)]??``).join(``),selfId=genId(20),all=Promise.all.bind(Promise),isBrowser=typeof window<`u`,{entries,fromEntries,keys,values}=Object,noOp=()=>{},candidateType=`candidate`,resetTimer=e=>(e!==null&&clearTimeout(e),null),mkErr=e=>Error(`${libName}: ${e}`),toErrorMessage=(e,t)=>e instanceof Error&&e.message?e.message:typeof e==`string`&&e?e:toJson(e??t),toError=(e,t)=>e instanceof Error?e:mkErr(toErrorMessage(e,t)),encoder=new TextEncoder,decoder=new TextDecoder,encodeBytes=e=>encoder.encode(e),decodeBytes=e=>decoder.decode(e),toHex=e=>e.reduce((e,t)=>e+t.toString(16).padStart(2,`0`),``),topicPath=(...e)=>e.join(`@`),shuffle=(e,t)=>{let n=[...e],a=()=>{let e=sin(t++)*1e4;return e-floor(e)},o=n.length;for(;o;){let e=floor(a()*o--),t=n[o];n[o]=n[e],n[e]=t}return n},getRelays=(e,t,n,a=!1)=>e.relayConfig?.urls||(a?shuffle(t,strToNum(e.appId)):t).slice(0,e.relayConfig?.redundancy??n),toJson=JSON.stringify,fromJson=e=>{try{return JSON.parse(e)}catch{throw mkErr(`failed to parse JSON: ${e}`)}},strToNum=(e,t=2**53-1)=>e.split(``).reduce((e,t)=>e+t.charCodeAt(0),0)%t,defaultRetryMs=3333,socketRetryPeriods={},reconnectionLockingPromise=null,resolver=null,pauseRelayReconnection=()=>{reconnectionLockingPromise||=new Promise(e=>{resolver=e}).finally(()=>{resolver=null,reconnectionLockingPromise=null})},resumeRelayReconnection=()=>{resolver?.()},makeSocket=(e,t)=>{let n={},a=()=>{let o=new WebSocket(e);o.onclose=()=>{if(reconnectionLockingPromise){reconnectionLockingPromise.then(a);return}socketRetryPeriods[e]??=defaultRetryMs,setTimeout(a,socketRetryPeriods[e]),socketRetryPeriods[e]*=2},o.onmessage=e=>t(String(e.data)),n.socket=o,n.url=o.url,n.ready=new Promise(t=>o.onopen=()=>{t(n),socketRetryPeriods[e]=defaultRetryMs}),n.send=e=>{o.readyState===1&&o.send(e)}};return a(),n},createRelayManager=e=>{let t={},n=new WeakMap,a=e=>{let t=n.get(e);if(!t)throw mkErr(`relay bookkeeping missing registration for relay client`);return t};return{register:(e,a)=>(t[e]=a,n.set(a,e),a),keyOf:a,scoped:()=>{let e={},t=t=>e[t]??={};return{forKey:t,forRelay:e=>t(a(e))}},getSockets:()=>fromEntries(entries(t).flatMap(([t,n])=>{let a=e(n);return a?[[t,a]]:[]}))}},watchOnline=()=>{if(isBrowser){let e=new AbortController;return addEventListener(`online`,resumeRelayReconnection,{signal:e.signal}),addEventListener(`offline`,pauseRelayReconnection,{signal:e.signal}),()=>e.abort()}return noOp},algo=`AES-GCM`,strToSha1={},pack=e=>btoa(String.fromCharCode.apply(null,Array.from(new Uint8Array(e)))),unpack=e=>{let t=atob(e);return new Uint8Array(t.length).map((e,n)=>t.charCodeAt(n)).buffer},hashWith=async(e,t)=>new Uint8Array(await crypto.subtle.digest(e,encodeBytes(t))),sha1=async e=>strToSha1[e]??=Array.from(await hashWith(`SHA-1`,e)).map(e=>e.toString(36)).join(``),genKey=async(e,t,n)=>crypto.subtle.importKey(`raw`,await crypto.subtle.digest({name:`SHA-256`},encodeBytes(`${e}:${t}:${n}`)),{name:algo},!1,[`encrypt`,`decrypt`]),deriveRoomNamespace=async(e,t)=>toHex(await hashWith(`SHA-256`,`${libName}:${e}:${t}`)),joinChar=`$`,ivJoinChar=`,`,encrypt=async(e,t)=>{let n=crypto.getRandomValues(new Uint8Array(16));return n.join(ivJoinChar)+joinChar+pack(await crypto.subtle.encrypt({name:algo,iv:n},await e,encodeBytes(t)))},decrypt=async(e,t)=>{let[n,a]=t.split(joinChar);return decodeBytes(await crypto.subtle.decrypt({name:algo,iv:new Uint8Array(n?.split(ivJoinChar).map(Number)??[])},await e,unpack(a??``)))},offerTtl=57333,offerLeaseTtlMs=18e4,poolSize=20,OfferPool=class{pool=[];pooled=new Set;leased=new Map;recycling=new Set;cleanupTimer=null;active=!1;constructor(e){this.makeOffer=e}get isActive(){return this.active}warmup(){this.pool=[],this.pooled.clear(),alloc(poolSize,this.makeOffer).forEach(e=>this.push(e)),this.active=!0,this.cleanupTimer=setInterval(()=>{this.pool=this.pool.filter(e=>e.isDead?(this.pooled.delete(e),!1):!0)},offerTtl)}push(e){e.isDead||this.pooled.has(e)||this.leased.has(e)||(this.pool.push(e),this.pooled.add(e))}shift(e){let t=[];for(;t.length<e&&this.pool.length>0;){let e=this.pool.shift();if(!e)break;this.pooled.delete(e),t.push(e)}return t}claimLeased(e){let t=this.leased.get(e);t&&(resetTimer(t),this.leased.delete(e))}recycle(e){if(!(e.isDead||this.recycling.has(e))){if(e.connection.remoteDescription){e.destroy();return}if(!this.active){e.destroy();return}this.recycling.add(e),e.setHandlers({connect:noOp,close:noOp,error:noOp}),e.getOffer(!0).then(t=>{if(!t||t.type!==`offer`||e.isDead||!this.active){e.destroy();return}this.push(e)}).catch(()=>e.destroy()).finally(()=>this.recycling.delete(e))}}reclaimLeased(e){let t=this.leased.get(e);t&&(resetTimer(t),this.leased.delete(e),this.recycle(e))}lease(e){this.claimLeased(e),this.leased.set(e,setTimeout(()=>{this.leased.delete(e),this.recycle(e)},offerLeaseTtlMs))}checkout(e,t,n){let a=this.shift(e),o=Math.max(0,e-a.length);o>0&&a.push(...alloc(o,this.makeOffer));let s=async(e,a=!1)=>{try{let a=await n(e);return t?(this.lease(e),{peer:e,offer:a,claim:()=>this.claimLeased(e),reclaim:()=>this.reclaimLeased(e)}):{peer:e,offer:a}}catch(t){if(this.claimLeased(e),this.pooled.delete(e),e.destroy(),!a)return s(this.makeOffer(),!0);throw t}};return all(a.map(e=>s(e)))}getOffers(e,t){return this.checkout(e,!0,t)}destroy(){this.active=!1,this.cleanupTimer&&=(clearInterval(this.cleanupTimer),null),this.pool.forEach(e=>e.destroy()),this.pool=[],this.pooled.clear(),this.leased.forEach((e,t)=>{resetTimer(e),t.destroy()}),this.leased.clear(),this.recycling.forEach(e=>e.destroy()),this.recycling.clear()}},overlapRoomPasswordErr=mkErr(`incorrect password for overlapping room`),createPasswordHandshake=(e,t,n)=>{let a=a=>hashWith(`SHA-256`,`${a}:${e}:${t}:${n}`).then(toHex),o=async(t,n,o)=>{if(!e)return;if(o){let e=genId(36);await t({__trystero_pw:`challenge`,c:e});let{data:o}=await n();if(!o||typeof o!=`object`||o.__trystero_pw!==`response`||typeof o.h!=`string`)throw overlapRoomPasswordErr;let s=await a(e);if(o.h!==s)throw overlapRoomPasswordErr;return}let{data:s}=await n();if(!s||typeof s!=`object`||s.__trystero_pw!==`challenge`||typeof s.c!=`string`)throw overlapRoomPasswordErr;await t({__trystero_pw:`response`,h:await a(s.c)})};return{run:o,compose:t=>e||t?async(e,n,a,s)=>{await o(n,a,s),await t?.(e,n,a,s)}:void 0}},iceTimeout=15e3,disconnectedCloseDelayMs=5e3,iceStateEvent=`icegatheringstatechange`,offerType=`offer`,answerType=`answer`,outOfRangePattern=/out of range/i,rewriteMdnsCandidatesToLoopback=e=>e.replace(/ (\S+\.local) (\d+) typ host/g,` 127.0.0.1 $2 typ host`),peer_default=(e,{trickleIce:t,rtcConfig:n,rtcPolyfill:a,turnConfig:o,_test_only_mdnsHostFallbackToLoopback:s})=>{let l=new(a??RTCPeerConnection)({iceServers:defaultIceServers.concat(o??[]),...n}),u={},d=[],f=[],m=t!==!1,h=[],v=[],y=!1,b=!1,x=null,S=null,C=!1,T=()=>S=resetTimer(S),E=()=>{C||(C=!0,T(),u.close?.())},D=e=>{u.signal?u.signal(e):d.push(e)},O=e=>{let t=u.signal;u.signal=n=>{t?.(n),e(n)},d.length>0&&d.splice(0).forEach(e=>u.signal?.(e))},k=e=>s?rewriteMdnsCandidatesToLoopback(e):e,j=e=>{if(!s||typeof e.candidate!=`string`)return e;let t=rewriteMdnsCandidatesToLoopback(e.candidate);return t===e.candidate?e:{...e,candidate:t}},M=e=>({type:e.localDescription?.type??offerType,sdp:k(e.localDescription?.sdp??``)}),N=()=>{let e=l.remoteDescription?.sdp;return e?e.match(/a=ice-ufrag:([^\s]+)/)?.[1]??null:null},F=()=>(l.remoteDescription?.sdp?.match(/^m=/gm)??[]).length,I=e=>{if(!l.remoteDescription)return!1;let t=F();if(typeof e.sdpMLineIndex==`number`&&t>0&&e.sdpMLineIndex>=t)return!1;let n=N();return!(n&&e.usernameFragment&&e.usernameFragment!==n)},L=async e=>{try{return await l.addIceCandidate(e),!0}catch(t){if(t instanceof Error&&outOfRangePattern.test(t.message)&&typeof e.sdpMLineIndex==`number`)return!1;throw t}},R=async()=>{if(!l.remoteDescription||h.length===0)return;let e=h.splice(0),t=[];for(let n of e){if(!I(n)){t.push(n);continue}await L(n)||t.push(n)}t.length>0&&h.push(...t)},z=async e=>{if(I(e)){await L(e)||h.push(e);return}h.push(e)},B=e=>{e.binaryType=`arraybuffer`,e.bufferedAmountLowThreshold=65535,e.onmessage=e=>{let t=e.data;u.data?u.data(t):f.push(t)},e.onopen=()=>u.connect?.(),e.onclose=E,e.onerror=({error:e})=>u.error?.(toError(e,`data channel error`))},V=async e=>{let t=null;try{await Promise.race([new Promise(t=>{let n=()=>{e.iceGatheringState===`complete`&&(e.removeEventListener(iceStateEvent,n),t())};e.addEventListener(iceStateEvent,n),n()}),new Promise(e=>{t=setTimeout(e,iceTimeout)})])}finally{resetTimer(t)}return M(e)},H=async()=>{let e=m?M(l):await V(l);return D(e),e};e?(x=l.createDataChannel(`data`),B(x)):l.ondatachannel=({channel:e})=>{x=e,B(e)};let U=async(e=!1)=>{if(l.connectionState!==`closed`)try{return y=!0,e&&(l.signalingState!==`stable`&&l.signalingState!==`closed`&&l.localDescription?.type===offerType&&await l.setLocalDescription({type:`rollback`}),typeof l.restartIce==`function`&&l.restartIce()),await l.setLocalDescription(e?await l.createOffer({iceRestart:!0}):void 0),await H()}catch(e){u.error?.(toError(e,`failed to create local offer`))}finally{y=!1}};l.onnegotiationneeded=async()=>U(!1),l.onicecandidate=({candidate:e})=>{if(!m||!e)return;let t=j(typeof e.toJSON==`function`?e.toJSON():{candidate:e.candidate,sdpMid:e.sdpMid,sdpMLineIndex:e.sdpMLineIndex,usernameFragment:e.usernameFragment});D({type:candidateType,sdp:JSON.stringify(t)})},l.onconnectionstatechange=()=>{if(l.connectionState===`connected`||l.connectionState===`connecting`){T();return}if(l.connectionState===`disconnected`){S||=setTimeout(()=>{S=null,l.connectionState===`disconnected`&&E()},disconnectedCloseDelayMs);return}(l.connectionState===`failed`||l.connectionState===`closed`)&&E()},l.ontrack=e=>{let t=e.streams[0];if(t){if(!u.track&&!u.stream){v.push({track:e.track,stream:t});return}u.track?.(e.track,t),u.stream?.(t)}},l.onremovestream=e=>u.stream?.(e.stream);let W=e?new Promise(e=>O(t=>{t.type===offerType&&e(t)})):Promise.resolve();return e&&queueMicrotask(()=>{!y&&l.signalingState===`stable`&&!l.localDescription&&l.connectionState!==`closed`&&l.onnegotiationneeded?.(new Event(`negotiationneeded`))}),{created:Date.now(),connection:l,get channel(){return x},get isDead(){return l.connectionState===`closed`},getOffer:async(t=!1)=>{if(e)return t?U(!0):l.localDescription?.type===offerType?m?M(l):V(l):W},async signal(t){if(t.type===`candidate`){try{let e=JSON.parse(t.sdp);e&&typeof e==`object`&&await z(j(e))}catch(e){u.error?.(toError(e,`failed to parse remote candidate`))}return}if(!(x?.readyState===`open`&&!t.sdp?.includes(`a=rtpmap`)))try{let n={...t,sdp:k(t.sdp)};if(t.type===offerType){if(y||l.signalingState!==`stable`&&!b){if(e)return;await all([l.setLocalDescription({type:`rollback`}),l.setRemoteDescription(n)])}else await l.setRemoteDescription(n);return await R(),await l.setLocalDescription(),await H()}if(t.type===answerType){b=!0;try{await l.setRemoteDescription(n),await R()}finally{b=!1}}}catch(e){u.error?.(toError(e,`failed to apply remote signal`))}},sendData:e=>x?.send(e),destroy:()=>{T(),x?.close(),l.close(),y=!1,b=!1,E()},setHandlers:e=>{let{signal:t,...n}=e;Object.assign(u,n),u.data&&f.length>0&&f.splice(0).forEach(e=>u.data?.(e)),t&&O(t),(u.track||u.stream)&&v.length>0&&v.splice(0).forEach(({track:e,stream:t})=>{u.track?.(e,t),u.stream?.(t)})},offerPromise:W,addStream:e=>e.getTracks().forEach(t=>l.addTrack(t,e)),removeStream:e=>l.getSenders().filter(t=>t.track&&e.getTracks().includes(t.track)).forEach(e=>l.removeTrack(e)),addTrack:(e,t)=>l.addTrack(e,t),removeTrack:e=>{let t=l.getSenders().find(t=>t.track===e);t&&l.removeTrack(t)},replaceTrack:(e,t)=>{let n=l.getSenders().find(t=>t.track===e);if(n)return n.replaceTrack(t)}}},defaultIceServers=[...alloc(3,(e,t)=>`stun:stun${t||``}.l.google.com:19302`),`stun:stun.cloudflare.com:3478`].map(e=>({urls:e})),TypedArray=Object.getPrototypeOf(Uint8Array),typeByteLimit=32,typeIndex=0,nonceIndex=32,tagIndex=34,progressIndex=35,payloadIndex=36,chunkSize=16*2**10-payloadIndex,oneByteMax=255,twoByteMax=65535,buffLowEvent=`bufferedamountlow`,channelCloseEvent=`close`,channelErrorEvent=`error`,unloadEvent=`beforeunload`,defaultHandshakeTimeoutMs=1e4,backpressureWaitTimeoutMs=1e4,internalNs=e=>`@_`+e,beforeUnloadRoomCleanups=new Set,cleanupActiveRoomsOnBeforeUnload=()=>beforeUnloadRoomCleanups.forEach(e=>e()),registerBeforeUnloadCleanup=e=>(beforeUnloadRoomCleanups.add(e),beforeUnloadRoomCleanups.size===1&&addEventListener(unloadEvent,cleanupActiveRoomsOnBeforeUnload),()=>{beforeUnloadRoomCleanups.delete(e),beforeUnloadRoomCleanups.size||removeEventListener(unloadEvent,cleanupActiveRoomsOnBeforeUnload)}),toByteArray=e=>e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength),toHandshakeErrorMessage=e=>{let t=toErrorMessage(e,`unknown error`);return t.startsWith(`handshake `)?t:`handshake failed: ${t}`},waitForBufferedAmountLow=(e,t=backpressureWaitTimeoutMs)=>e.readyState!==`open`||e.bufferedAmount<=e.bufferedAmountLowThreshold?Promise.resolve(e.readyState===`open`):new Promise(n=>{let a=!1,o=null,s=t=>{a||(a=!0,e.removeEventListener(buffLowEvent,l),e.removeEventListener(channelCloseEvent,u),e.removeEventListener(channelErrorEvent,u),resetTimer(o),n(t))},l=()=>s(!0),u=()=>s(!1);if(e.addEventListener(buffLowEvent,l),e.addEventListener(channelCloseEvent,u),e.addEventListener(channelErrorEvent,u),o=setTimeout(()=>s(!1),t),e.readyState!==`open`){s(!1);return}e.bufferedAmount<=e.bufferedAmountLowThreshold&&s(!0)}),room_default=(e,t,n,{onPeerHandshake:a,onHandshakeError:o,handshakeTimeoutMs:s=defaultHandshakeTimeoutMs}={})=>{let l={},u={},d={},f={},m={},h={},v={},y={},b={},x={},S=new WeakMap,C=new WeakMap,T={onPeerJoin:noOp,onPeerLeave:noOp,onPeerStream:noOp,onPeerTrack:noOp},E=noOp,D=(e,t,{includePending:n=!1}={})=>(e?Array.isArray(e)?e:[e]:keys(n?l:u)).flatMap(e=>{let a=n?l[e]:u[e];return a?[Promise.resolve(t(e,a))]:(console.warn(`${libName}: no peer with id ${e} found`),[])}),O=(e,t,n,a,o,s={})=>{let l={k:t,...s,...n===void 0?{}:{m:n}};return D(e,async(e,t)=>{await a(l,e),o(t)})},k=e=>t=>{let n=e.get(t);return n||(n=genId(20),e.set(t,n)),n},j=k(S),M=k(C),N=e=>l[e]??null,F=(e,t,n,a)=>{u[e]&&(N(e)?.__trysteroSetRemoteStreamByKey?.(t,n),typeof n.id==`string`&&N(e)?.__trysteroSetRemoteStreamById?.(n.id,n),T.onPeerStream(n,e,a))},I=(e,t,n,a,o)=>{u[e]&&(N(e)?.__trysteroSetRemoteTrackByKey?.(t,n,a),typeof a.id==`string`&&N(e)?.__trysteroSetRemoteStreamById?.(a.id,a),typeof n.id==`string`&&N(e)?.__trysteroSetRemoteTrackById?.(n.id,n,a),T.onPeerTrack(n,a,e,o))},L=(e,t=mkErr(`peer disconnected`))=>{let n=d[e],a=toError(t,`peer disconnected`);n&&(resetTimer(n.handshakeTimer),n.pendingHandshakePayloads.length=0,n.handshakeWaiters.splice(0).forEach(e=>e.reject(a)),delete d[e]),delete l[e],delete u[e],delete h[e],y[e]?.splice(0).forEach(e=>e.reject(a)),delete y[e],delete b[e],delete x[e]},R=(e,n,a)=>{let o=l[e];if(!o||n&&o!==n)return;let s=!!u[e];L(e,a),o.destroy(),s&&T.onPeerLeave(e),t(e)},z=(e,t={})=>{let n=m[e];if(f[e]&&n){let a=f[e].options;if(a.sendToPending!==!!t.sendToPending||a.receiveWhilePending!==!!t.receiveWhilePending)throw mkErr(`action type "${e}" cannot be redefined`);return n}if(!e)throw mkErr(`action type argument is required`);let a=encodeBytes(e);if(a.byteLength>typeByteLimit)throw mkErr(`action type string "${e}" (${a.byteLength}b) exceeds byte limit (${typeByteLimit}). Hint: choose a shorter name.`);let o={sendToPending:!!t.sendToPending,receiveWhilePending:!!t.receiveWhilePending},s=new Uint8Array(typeByteLimit);s.set(a);let d=0;return f[e]={onComplete:noOp,onProgress:noOp,setOnComplete:t=>{f[e].onComplete=t;let n=v[e];n?.length&&(delete v[e],n.forEach(({payload:e,peerId:n,metadata:a})=>t(e,n,a)))},setOnProgress:t=>{f[e].onProgress=t},send:async(e,t,n,a)=>{let f=typeof e;if(f===`undefined`)throw mkErr(`action data cannot be undefined`);let m=f!==`string`,h=e instanceof Blob,v=h||e instanceof ArrayBuffer||e instanceof TypedArray,y=n!==void 0,b=v?toByteArray(h?await e.arrayBuffer():e):encodeBytes(m?toJson(e):e),x=y?encodeBytes(toJson(n)):null,S=Math.ceil(b.byteLength/chunkSize)+ +!!y||1,C=alloc(S,(e,t)=>{let n=t===S-1,a=!!(y&&t===0),o=new Uint8Array(payloadIndex+(a?x?.byteLength??0:n?b.byteLength-chunkSize*(S-(y?2:1)):chunkSize));return o.set(s),o.set([d>>8,d&oneByteMax],nonceIndex),o.set([Number(n)|Number(a)<<1|Number(v)<<2|Number(m)<<3],tagIndex),o.set([Math.round((t+1)/S*oneByteMax)],progressIndex),o.set(y?a?x??new Uint8Array:b.subarray((t-1)*chunkSize,t*chunkSize):b.subarray(t*chunkSize,(t+1)*chunkSize),payloadIndex),o});return d=d+1&twoByteMax,await all(D(t,async(e,t)=>{let{channel:s}=t,d=0;for(;d<S;){let f=C[d];if(!f||s&&s.bufferedAmount>s.bufferedAmountLowThreshold&&!await waitForBufferedAmountLow(s))break;let m=o.sendToPending?l[e]:u[e];if(!m||m!==t)break;t.sendData(f),d++;let h=f[progressIndex]??oneByteMax;a?.(h/oneByteMax,e,n)}},{includePending:o.sendToPending})),[]},options:o},m[e]=[f[e].send,f[e].setOnComplete,f[e].setOnProgress]},B=e=>z(e),V=(e,t)=>{let n=d[e];if(!n)return;let a=new Uint8Array(t),o=decodeBytes(a.subarray(typeIndex,nonceIndex)).replaceAll(`\0`,``),s=f[o];if(!n.isActive&&!s?.options.receiveWhilePending)return;let l=(a[nonceIndex]??0)<<8|(a[33]??0),u=a[tagIndex]??0,m=a[progressIndex]??0,y=a.subarray(payloadIndex),b=!!(u&1),x=!!(u&2),S=!!(u&4),C=!!(u&8);h[e]??={},h[e][o]??={};let T=h[e][o][l]??={chunks:[]};if(x?T.meta=fromJson(decodeBytes(y)):T.chunks.push(y),s?.onProgress(m/oneByteMax,e,T.meta),!b)return;let E=new Uint8Array(T.chunks.reduce((e,t)=>e+t.byteLength,0));if(T.chunks.reduce((e,t)=>(E.set(t,e),e+t.byteLength),0),delete h[e][o][l],S)s?s.onComplete(E,e,T.meta):(v[o]??=[]).push({payload:E,peerId:e,...T.meta===void 0?{}:{metadata:T.meta}});else{let t=decodeBytes(E),n=C?fromJson(t):t;s?s.onComplete(n,e,T.meta):(v[o]??=[]).push({payload:n,peerId:e,...T.meta===void 0?{}:{metadata:T.meta}})}},H=async()=>{await ie(``),await new Promise(e=>setTimeout(e,99)),entries(l).forEach(([e,t])=>{t.destroy(),L(e,mkErr(`room left`))}),E(),n()},[U,W]=z(internalNs(`ping`)),[G,ee]=z(internalNs(`pong`)),[te,K]=z(internalNs(`signal`)),[q,ne]=z(internalNs(`stream`)),[re,J]=z(internalNs(`track`)),[ie,ae]=z(internalNs(`leave`),{sendToPending:!0,receiveWhilePending:!0}),[oe,se]=z(internalNs(`hsdata`),{sendToPending:!0,receiveWhilePending:!0}),[ce,Y]=z(internalNs(`hsready`),{sendToPending:!0,receiveWhilePending:!0}),le=(e,t)=>{let n=d[e];!n||t&&n.peer!==t||n.isActive||!n.didLocalHandshakePass||!n.didReceiveRemoteReady||(n.isActive=!0,u[e]=n.peer,n.handshakeTimer=resetTimer(n.handshakeTimer),T.onPeerJoin(e))},ue=(e,t,n)=>{let a=d[e];if(!a||a.peer!==t)return;let s=toHandshakeErrorMessage(n);o?.(e,s),R(e,t,mkErr(s))},de=(e,t)=>{let n=d[e];!n||n.peer!==t||n.isActive||(n.didLocalHandshakePass=!0,ce(``,e).catch(n=>ue(e,t,mkErr(`failed sending handshake readiness: ${toErrorMessage(n,`unknown send failure`)}`))),le(e,t))},X=(e,t)=>{let n=d[e];if(!n||n.peer!==t)return;n.handshakeTimer=setTimeout(()=>ue(e,t,mkErr(`handshake timed out after ${s}ms`)),s);let o=async(t,n)=>{await oe(t,e,n)},l=()=>new Promise((n,a)=>{let o=d[e];if(!o||o.peer!==t){a(mkErr(`peer disconnected during handshake`));return}let s=o.pendingHandshakePayloads.shift();if(s){n(s);return}o.handshakeWaiters.push({resolve:n,reject:e=>a(e)})}),u=selfId<e;Promise.resolve(a?.(e,o,l,u)).then(()=>de(e,t)).catch(n=>ue(e,t,toError(n,`handshake failed`)))},fe=e=>e&&typeof e==`object`&&!Array.isArray(e)&&typeof e.k==`string`?{key:e.k,...typeof e.s==`string`?{streamId:e.s}:{},...typeof e.t==`string`?{trackId:e.t}:{},...Object.hasOwn(e,`m`)?{metadata:e.m}:{}}:null;return W((e,t)=>G(``,t)),ee((e,t)=>{let n=y[t];(n?.shift())?.resolve(),n&&!n.length&&delete y[t]}),K((e,t)=>{u[t]&&l[t]?.signal(e)}),ne((e,t)=>{if(!u[t])return;let n=fe(e);if(!n)return;let a=N(t),o=a?.__trysteroGetRemoteStreamByKey?.(n.key)??(n.streamId?a?.__trysteroGetRemoteStreamById?.(n.streamId):void 0);if(o){F(t,n.key,o,n.metadata);return}(b[t]??=[]).push(n)}),J((e,t)=>{if(!u[t])return;let n=fe(e);if(!n)return;let a=N(t),o=a?.__trysteroGetRemoteTrackByKey?.(n.key)??(n.trackId?a?.__trysteroGetRemoteTrackById?.(n.trackId):void 0);if(o){I(t,n.key,o.track,o.stream,n.metadata);return}(x[t]??=[]).push(n)}),ae((e,t)=>R(t,void 0,mkErr(`peer left room`))),se((e,t,n)=>{let a=d[t];if(!a||a.isActive)return;let o=n===void 0?{data:e}:{data:e,metadata:n},s=a.handshakeWaiters.shift();if(s){s.resolve(o);return}a.pendingHandshakePayloads.push(o)}),Y((e,t)=>{let n=d[t];!n||n.isActive||(n.didReceiveRemoteReady=!0,le(t))}),e((e,t)=>{let n=l[t];if(n){if(n===e)return;n.destroy(),L(t,mkErr(`peer replaced`))}l[t]=e,d[t]={peer:e,isActive:!1,didLocalHandshakePass:!1,didReceiveRemoteReady:!1,handshakeTimer:null,pendingHandshakePayloads:[],handshakeWaiters:[]},e.setHandlers({data:e=>V(t,e),stream:e=>{if(!u[t])return;let n=b[t]?.shift();n&&F(t,n.key,e,n.metadata)},track:(e,n)=>{if(!u[t])return;let a=x[t]?.shift();a&&I(t,a.key,e,n,a.metadata)},signal:e=>{u[t]&&te(e,t)},close:()=>R(t,e,mkErr(`peer disconnected`)),error:n=>{console.error(`${libName} peer error:`,n),R(t,e,n)}}),X(t,e)}),isBrowser&&(E=registerBeforeUnloadCleanup(()=>H().catch(noOp))),{makeAction:B,leave:H,ping:async e=>{if(!u[e])throw mkErr(`no active peer with id ${e}`);let t=Date.now();return await new Promise((t,n)=>{let a=y[e]??=[],o=()=>{let t=y[e];if(!t)return;let n=t.indexOf(s);n>-1&&t.splice(n,1),t.length||delete y[e]},s={resolve:()=>{o(),t()},reject:e=>{o(),n(e)}};a.push(s),U(``,e).catch(e=>s.reject(toError(e,`peer disconnected`)))}),Date.now()-t},getPeers:()=>fromEntries(entries(u).map(([e,t])=>[e,t.connection])),addStream:(e,t,n)=>O(t,j(e),n,q,t=>t.addStream(e),{s:e.id}),removeStream:(e,t)=>{D(t,(t,n)=>n.removeStream(e))},addTrack:(e,t,n,a)=>O(n,M(e),a,re,n=>n.addTrack(e,t),{s:t.id,t:e.id}),removeTrack:(e,t)=>{D(t,(t,n)=>n.removeTrack(e))},replaceTrack:(e,t,n,a)=>O(n,M(t),a,re,n=>n.replaceTrack(e,t),{t:e.id}),onPeerJoin:e=>{T.onPeerJoin=e,keys(u).forEach(t=>e(t))},onPeerLeave:e=>T.onPeerLeave=e,onPeerStream:e=>T.onPeerStream=e,onPeerTrack:e=>T.onPeerTrack=e}},roomFrameVersion=1,roomPresenceFrameVersion=2,wrapRoomFrame=(e,t)=>{let n=encodeBytes(e),a=new Uint8Array(3+n.byteLength+t.byteLength);return a[0]=roomFrameVersion,a[1]=n.byteLength>>>8&255,a[2]=n.byteLength&255,a.set(n,3),a.set(t,3+n.byteLength),a},wrapRoomPresenceFrame=(e,t)=>{let n=encodeBytes(e),a=new Uint8Array(4+n.byteLength);return a[0]=roomPresenceFrameVersion,a[1]=Number(t),a[2]=n.byteLength>>>8&255,a[3]=n.byteLength&255,a.set(n,4),a},unwrapFrame=e=>{let t=new Uint8Array(e);if(t.byteLength<3)return null;if(t[0]===roomFrameVersion){let e=(t[1]??0)<<8|(t[2]??0),n=3+e;return e<=0||t.byteLength<n?null:{type:`room`,roomToken:decodeBytes(t.subarray(3,n)),payload:t.subarray(n).slice().buffer}}if(t[0]!==roomPresenceFrameVersion||t.byteLength<4)return null;let n=(t[2]??0)<<8|(t[3]??0),a=4+n;return n<=0||t.byteLength<a?null:{type:`presence`,roomToken:decodeBytes(t.subarray(4,a)),isPresent:t[1]===1}},isPeerUnderlyingStale=e=>{let{connection:t,channel:n}=e;return e.isDead||t.connectionState===`closed`||t.connectionState===`failed`||t.iceConnectionState===`closed`||t.iceConnectionState===`failed`||n?.readyState===`closing`||n?.readyState===`closed`},getConnectedPeerHealth=e=>{if(isPeerUnderlyingStale(e))return`stale`;let{channel:t}=e;return!t||t.readyState!==`open`?`transient`:`live`},SharedPeerManager=class{byApp={};roomPresenceHandlers={};getMap(e){return this.byApp[e]??={}}get(e,t){return this.byApp[e]?.[t]}isPeerStale(e){return isPeerUnderlyingStale(e)}getHealth(e){return this.isPeerStale(e)?`stale`:`live`}setRoomPresenceHandler(e,t){return this.roomPresenceHandlers[e]=t,()=>{this.roomPresenceHandlers[e]===t&&delete this.roomPresenceHandlers[e]}}sendRoomPresence(e,t,n){e.isClosing||e.peer.isDead||e.peer.sendData(wrapRoomPresenceFrame(t,n))}clear(e,t,{destroyPeer:n}){let a=this.byApp[e],o=a?.[t];if(!o||o.isClosing)return;o.idleTimer=resetTimer(o.idleTimer),o.isClosing=!0,n&&!o.peer.isDead&&o.peer.destroy();let s=values(o.bindings);o.bindings={},o.bindingsByToken={},o.controlRoomId=null,delete a[t],s.forEach(e=>{e.handlers.close?.(),e.pendingData.length=0,e.pendingSendData.length=0,e.pendingTracks.length=0}),o.remoteStreamsByKey.clear(),o.remoteStreamsById.clear(),o.remoteTracksByKey.clear(),o.remoteTracksById.clear(),o.pendingDataByToken.clear(),o.remoteRoomTokens.clear(),keys(a).length===0&&delete this.byApp[e]}register(e,t,n,a){let o=this.getMap(e),s=o[t];if(s){if(s.idleTimer=resetTimer(s.idleTimer),s.peer===n)return s;this.clear(e,t,{destroyPeer:!0})}let l={appId:e,peerId:t,peer:n,bindings:{},bindingsByToken:{},pendingDataByToken:new Map,remoteRoomTokens:new Set,idleTimer:null,controlRoomId:null,streamOwners:new Map,trackOwners:new Map,remoteStreamsByKey:new Map,remoteStreamsById:new Map,remoteTracksByKey:new Map,remoteTracksById:new Map,idleMs:a,isClosing:!1};return n.setHandlers({data:e=>this.dispatchData(l,e),signal:e=>this.dispatchSignal(l,e),close:()=>this.clear(e,t,{destroyPeer:!1}),error:n=>{console.error(`${libName} peer error:`,n),this.clear(e,t,{destroyPeer:!1})},track:(e,t)=>this.dispatchTrack(l,e,t)}),o[t]=l,l}bind(e,t,n,{onDetach:a}){let o=n.bindings[e];if(o)return n.idleTimer=resetTimer(n.idleTimer),{proxy:o.proxy,isNew:!1};let s={roomId:e,roomToken:null,roomTokenPromise:t,handlers:{},pendingData:[],pendingSendData:[],pendingTracks:[],detach:noOp,proxy:{}},l=()=>{n.bindings[e]&&(this.pruneRoomOwnership(n,e),delete n.bindings[e],s.roomToken&&n.bindingsByToken[s.roomToken]===s&&delete n.bindingsByToken[s.roomToken],n.controlRoomId===e&&(n.controlRoomId=keys(n.bindings)[0]??null),a(),this.scheduleIdleTimer(n))},u={created:n.peer.created,get connection(){return n.peer.connection},get channel(){return n.peer.channel},get isDead(){return n.peer.isDead},getOffer:e=>n.peer.getOffer(e),signal:e=>n.peer.signal(e),sendData:e=>{if(!s.roomToken){s.pendingSendData.push(e);return}n.peer.sendData(wrapRoomFrame(s.roomToken,e))},destroy:()=>l(),setHandlers:e=>{let{signal:t,...n}=e;Object.assign(s.handlers,n),t&&(s.handlers.signal=t),this.flushBindingQueues(s)},offerPromise:n.peer.offerPromise,addStream:t=>{let a=n.streamOwners.get(t)??new Set,o=a.size===0;a.add(e),n.streamOwners.set(t,a),o&&n.peer.addStream(t)},removeStream:t=>{let a=n.streamOwners.get(t);a&&(a.delete(e),a.size===0&&(n.streamOwners.delete(t),n.peer.removeStream(t)))},addTrack:(t,a)=>{let o=n.trackOwners.get(t)??{stream:a,rooms:new Set},s=o.rooms.size===0;return o.stream=a,o.rooms.add(e),n.trackOwners.set(t,o),s?n.peer.addTrack(t,a):n.peer.connection.getSenders().find(e=>e.track===t)??n.peer.addTrack(t,a)},removeTrack:t=>{let a=n.trackOwners.get(t);a&&(a.rooms.delete(e),a.rooms.size===0&&(n.trackOwners.delete(t),n.peer.removeTrack(t)))},replaceTrack:(e,t)=>{let a=n.trackOwners.get(e);if(a){n.trackOwners.delete(e);let o=n.trackOwners.get(t)??{stream:a.stream,rooms:new Set};a.rooms.forEach(e=>o.rooms.add(e)),n.trackOwners.set(t,o)}return n.peer.replaceTrack(e,t)},__trysteroGetRemoteStreamByKey:e=>n.remoteStreamsByKey.get(e),__trysteroSetRemoteStreamByKey:(e,t)=>void n.remoteStreamsByKey.set(e,t),__trysteroGetRemoteStreamById:e=>n.remoteStreamsById.get(e),__trysteroSetRemoteStreamById:(e,t)=>void n.remoteStreamsById.set(e,t),__trysteroGetRemoteTrackByKey:e=>n.remoteTracksByKey.get(e),__trysteroSetRemoteTrackByKey:(e,t,a)=>void n.remoteTracksByKey.set(e,{track:t,stream:a}),__trysteroGetRemoteTrackById:e=>n.remoteTracksById.get(e),__trysteroSetRemoteTrackById:(e,t,a)=>void n.remoteTracksById.set(e,{track:t,stream:a})};return s.proxy=u,s.detach=l,n.bindings[e]=s,n.controlRoomId??=e,n.idleTimer=resetTimer(n.idleTimer),t.then(t=>{if(n.isClosing||n.bindings[e]!==s)return;s.roomToken=t,n.bindingsByToken[t]=s;let a=n.pendingDataByToken.get(t);a?.length&&(s.pendingData.push(...a),n.pendingDataByToken.delete(t)),s.pendingSendData.splice(0).forEach(e=>n.peer.sendData(wrapRoomFrame(t,e))),this.flushBindingQueues(s)}),{proxy:u,isNew:!0}}pruneRoomOwnership(e,t){e.streamOwners.forEach((n,a)=>{n.delete(t),n.size===0&&(e.streamOwners.delete(a),e.peer.removeStream(a))}),e.trackOwners.forEach((n,a)=>{n.rooms.delete(t),n.rooms.size===0&&(e.trackOwners.delete(a),e.peer.removeTrack(a))})}scheduleIdleTimer(e){e.isClosing||keys(e.bindings).length>0||(e.idleTimer=resetTimer(e.idleTimer),e.idleTimer=setTimeout(()=>{let t=this.byApp[e.appId]?.[e.peerId];!t||keys(t.bindings).length>0||this.clear(e.appId,e.peerId,{destroyPeer:!0})},e.idleMs))}getSignalBinding(e){if(e.controlRoomId){let t=e.bindings[e.controlRoomId];if(t?.handlers.signal)return t}let t=values(e.bindings).find(e=>!!e.handlers.signal);return t?(e.controlRoomId=t.roomId,t):null}flushBindingQueues(e){let{handlers:t}=e;t.data&&e.pendingData.length>0&&e.pendingData.splice(0).forEach(e=>t.data?.(e)),(t.track||t.stream)&&e.pendingTracks.length&&e.pendingTracks.splice(0).forEach(({track:e,stream:n})=>{t.track?.(e,n),t.stream?.(n)})}dispatchData(e,t){let n=unwrapFrame(t);if(!n)return;if(n.type===`presence`){n.isPresent?e.remoteRoomTokens.add(n.roomToken):e.remoteRoomTokens.delete(n.roomToken),this.roomPresenceHandlers[e.appId]?.(e.peerId,n.roomToken,n.isPresent);return}let a=e.bindingsByToken[n.roomToken];if(!a){let t=e.pendingDataByToken.get(n.roomToken)??[];t.push(n.payload),e.pendingDataByToken.set(n.roomToken,t);return}a.handlers.data?a.handlers.data(n.payload):a.pendingData.push(n.payload)}dispatchSignal(e,t){this.getSignalBinding(e)?.handlers.signal?.(t)}dispatchTrack(e,t,n){values(e.bindings).forEach(e=>{if(e.handlers.track||e.handlers.stream){e.handlers.track?.(t,n),e.handlers.stream?.(n);return}e.pendingTracks.push({track:t,stream:n})})}},offerPostAnswerTtlMs=23333,offerIdSize=12,disconnectedPeerGraceMs=7533,answeringTtlMs=23333,legacyCandidateKey=`__legacy__`,offerRelayPlaceholder=`offer-placeholder`,publishCipheredSignalingMessage=(e,t,n,a,o,s)=>{e.toCipher(t).then(t=>{e.isLeaving()||!s()||a(n,toJson(o(t.sdp)))})},makeState=()=>({status:`idle`,offerPeer:null,offerId:null,offerSdp:null,offerInitPromise:null,offerAnswered:!1,offerRelays:[],offerSignalRelays:[],offerSignalBacklog:[],offerRelayTimers:[],offerExpiryTimer:null,connectedPeer:null,connectedPeerUnhealthySinceMs:null,answeringExpiryTimer:null,answeringPeer:null,pendingCandidates:{}}),getState=(e,t)=>e[t]??=makeState(),updateStatus=e=>{e.connectedPeer?e.status=`connected`:e.answeringPeer?e.status=`answering`:e.offerPeer||e.offerRelays.some(Boolean)?e.status=`offering`:e.status=`idle`},clearAnswering=(e,t)=>{e.answeringPeer===t&&(e.answeringExpiryTimer=resetTimer(e.answeringExpiryTimer),e.answeringPeer=null,updateStatus(e))},clearConnectedPeer=(e,t,n)=>{e.connectedPeer&&(e.connectedPeer.isDead||e.connectedPeer.destroy(),e.connectedPeer=null,e.connectedPeerUnhealthySinceMs=null,updateStatus(e))},clearOfferRelay=(e,t)=>{e.offerRelayTimers[t]=resetTimer(e.offerRelayTimers[t]),e.offerRelays[t]&&(e.offerRelays[t]=void 0,updateStatus(e))},clearOfferRelayIfPlaceholder=(e,t)=>{e?.offerRelays[t]===offerRelayPlaceholder&&clearOfferRelay(e,t)},hasRemoteDescription=e=>{if(e.isDead||e.connection.connectionState===`closed`)return!0;try{return!!e.connection.remoteDescription}catch{return!0}},resetOfferState=(e,t)=>{let n=e.offerAnswered;e.offerExpiryTimer=resetTimer(e.offerExpiryTimer),e.offerInitPromise=null,e.offerRelays.forEach((t,n)=>clearOfferRelay(e,n)),e.offerRelays=[],e.offerSignalRelays=[],e.offerRelayTimers=[],e.offerSignalBacklog=[],e.offerPeer&&e.offerPeer!==e.connectedPeer&&(n||hasRemoteDescription(e.offerPeer)?e.offerPeer.isDead||e.offerPeer.destroy():t.recycle(e.offerPeer)),e.offerPeer=null,e.offerId=null,e.offerSdp=null,e.offerAnswered=!1,updateStatus(e)},scheduleAnsweringExpiry=(e,t,n,a)=>{resetTimer(t.answeringExpiryTimer),t.answeringExpiryTimer=setTimeout(()=>{let t=e.peerStates[n];!t||t.connectedPeer||t.answeringPeer!==a||(a.destroy(),clearAnswering(t,a))},answeringTtlMs)},flushBufferedCandidates=async(e,t,n)=>{let a=n?[n,legacyCandidateKey]:[legacyCandidateKey];for(let n of a){let a=e.pendingCandidates[n];if(a?.length){delete e.pendingCandidates[n];for(let e of a)await t.signal(e)}}},scheduleOfferExpiry=(e,t,n,a=offerTtl)=>{resetTimer(t.offerExpiryTimer);let o=t.offerId;t.offerExpiryTimer=setTimeout(()=>{let t=e.peerStates[n];!t||t.connectedPeer||t.offerId!==o||resetOfferState(t,e.offerPool)},a)},ensureOffer=(e,t,n,a)=>t.offerPeer&&t.offerId&&t.offerSdp?Promise.resolve({peer:t.offerPeer,offer:t.offerSdp,offerId:t.offerId}):(t.offerInitPromise||=(async()=>{let o=(await e.offerPool.checkout(1,!1,e.encryptOffer))[0];if(!o)throw mkErr(`failed to allocate offer peer`);let{peer:s,offer:l}=o;t.offerPeer=s,t.offerId=genId(offerIdSize),t.offerSdp=l,t.offerAnswered=!1,t.offerSignalBacklog=[],updateStatus(t);let u=()=>{t.offerPeer===s&&!t.connectedPeer&&resetOfferState(t,e.offerPool),e.disconnectPeer(s,n)};return s.setHandlers({connect:()=>e.connectPeer(s,n,a),signal:e=>{t.offerPeer===s&&(t.offerSignalBacklog.push(e),t.offerSignalRelays.forEach(t=>t?.(e)))},close:u,error:u}),scheduleOfferExpiry(e,t,n),{peer:s,offer:l,offerId:t.offerId}})().finally(()=>t.offerInitPromise=null),t.offerInitPromise),handleAnnouncement=async(e,t,n,a,o)=>{if(a){e.attachSharedPeerToRoom(n,a);return}let s=e.peerStates[n];if(!s||s.connectedPeer||s.answeringPeer||s.offerAnswered){clearOfferRelayIfPlaceholder(s,t);return}if(s.offerRelays[t]!==offerRelayPlaceholder)return;let[l,u]=await all([sha1(topicPath(e.rootTopicPlaintext,n)),ensureOffer(e,s,n,t)]);if(e.isLeaving())return;if(s.connectedPeer||s.answeringPeer||s.offerAnswered||s.offerRelays[t]!==offerRelayPlaceholder){clearOfferRelayIfPlaceholder(s,t);return}s.offerRelayTimers[t]=resetTimer(s.offerRelayTimers[t]),s.offerRelays[t]=!0,updateStatus(s),s.offerRelayTimers[t]=setTimeout(()=>prunePendingOffer(e,n,t),(e.announceIntervals[t]??e.announceIntervalMs)*.9);let d=!1;s.offerSignalRelays[t]=t=>{d&&(e.isLeaving()||s.connectedPeer||s.offerPeer!==u.peer||s.offerId!==u.offerId||t.type!==`candidate`||publishCipheredSignalingMessage(e,t,l,o,e=>({peerId:selfId,offerId:u.offerId,candidate:e}),()=>!s.connectedPeer&&s.offerPeer===u.peer&&s.offerId===u.offerId))},o(l,toJson({peerId:selfId,offerId:u.offerId,offer:u.offer})),d=!0,s.offerSignalBacklog.forEach(e=>s.offerSignalRelays[t]?.(e))},handleOffer=async(e,t,n,a,o,s,l)=>{let u=getState(e.peerStates,n);if(u.answeringPeer||u.offerAnswered)return;let d=!!(u.offerPeer||u.offerRelays.some(Boolean));if((d||s)&&selfId<n)return;d&&resetOfferState(u,e.offerPool);let f=e.initPeer(!1,e.config);u.answeringPeer=f,scheduleAnsweringExpiry(e,u,n,f),updateStatus(u);let m=()=>{clearAnswering(u,f),e.disconnectPeer(f,n)};f.setHandlers({connect:()=>e.connectPeer(f,n,t),close:m,error:m});let h;try{h=await e.toPlain({type:`offer`,sdp:a})}catch{clearAnswering(u,f),e.onJoinError?.({error:`incorrect room password when decrypting offer`,appId:e.appId,peerId:n,roomId:e.roomId});return}if(f.isDead){clearAnswering(u,f);return}let v=await sha1(topicPath(e.rootTopicPlaintext,n));e.isLeaving()||(f.setHandlers({signal:t=>{e.isLeaving()||u.answeringPeer!==f||f.isDead||t.type!==`answer`&&t.type!==`candidate`||publishCipheredSignalingMessage(e,t,v,l,e=>{let n={peerId:selfId};return t.type===`answer`?n.answer=e:n.candidate=e,o&&(n.offerId=o),n},()=>u.answeringPeer===f&&!f.isDead)}}),await f.signal(h),await flushBufferedCandidates(u,f,o))},handleCandidate=async(e,t,n,a,o)=>{let s;try{s=await e.toPlain({type:candidateType,sdp:n})}catch{return}let l=getState(e.peerStates,t),u=a&&l?.offerPeer&&l.offerId===a?l.offerPeer:null,d=l?.answeringPeer??null,f=!a&&l?.offerPeer?l.offerPeer:null,m=o&&!o.isDead?o:u??d??f;if(!m||m.isDead){let e=a??legacyCandidateKey;(l.pendingCandidates[e]??=[]).push(s);return}m.signal(s)},handleAnswer=async(e,t,n,a,o,s)=>{let l;try{l=await e.toPlain({type:`answer`,sdp:a})}catch{e.onJoinError?.({error:`incorrect room password when decrypting answer`,appId:e.appId,peerId:n,roomId:e.roomId});return}if(s)e.offerPool.claimLeased(s),s.setHandlers({connect:()=>e.connectPeer(s,n,t),close:()=>e.disconnectPeer(s,n)}),s.signal(l);else{let t=e.peerStates[n];if(!t||!t.offerPeer||t.offerAnswered||o&&t.offerId&&o!==t.offerId||t.offerPeer.isDead)return;t.offerAnswered=!0,scheduleOfferExpiry(e,t,n,offerPostAnswerTtlMs),t.offerPeer.signal(l)}},prunePendingOffer=(e,t,n)=>{let a=e.peerStates[t];!a||a.connectedPeer||a.offerRelays[n]&&clearOfferRelay(a,n)},createSignalHandler=e=>t=>async(n,a,o)=>{if(e.isLeaving())return;let s=typeof a==`string`?fromJson(a):a,l=typeof s.peerId==`string`?s.peerId:``,u=s.offer,d=s.answer,f=s.candidate,m=s.offerId,h=s.peer,v=s.hasOutgoingOffer===!0;if(l===selfId)return;let y=e.peerStates[l],b=y?.connectedPeer;if(b&&y){let e=getConnectedPeerHealth(b);if(e===`live`){y.connectedPeerUnhealthySinceMs=null;return}if(e===`stale`)clearConnectedPeer(y,l,`message-from-stale-peer`);else{let e=Date.now(),t=y.connectedPeerUnhealthySinceMs??e;if(y.connectedPeerUnhealthySinceMs=t,e-t<disconnectedPeerGraceMs)return;clearConnectedPeer(y,l,`message-from-prolonged-disconnect`)}}let x=e.sharedPeers.get(e.appId,l);x&&e.sharedPeers.getHealth(x.peer)===`stale`&&(e.sharedPeers.clear(e.appId,l,{destroyPeer:!0}),x=void 0);let S=!!(l&&!u&&!d&&!f),[C,T]=await all([e.rootTopicP,e.selfTopicP]);if(!e.isLeaving()&&!(n!==C&&n!==T)){if(S&&!x){let n=getState(e.peerStates,l),a=selfId<l;if(n.answeringPeer||n.connectedPeer||n.offerAnswered)return;if(!a&&!n.offerPeer){let t=await sha1(topicPath(e.rootTopicPlaintext,l));!e.isLeaving()&&!n.connectedPeer&&o(t,toJson({peerId:selfId}));return}if(n.offerRelays[t])return;n.offerRelays[t]=offerRelayPlaceholder,updateStatus(n)}if(x&&(u||d||f)){if(x.bindings[e.roomId])return;e.attachSharedPeerToRoom(l,x);return}if(S)return handleAnnouncement(e,t,l,x,o);if(u)return handleOffer(e,t,l,u,m,v,o);if(f)return handleCandidate(e,l,f,m,h);if(d)return handleAnswer(e,t,l,d,m,h)}},announceIntervalMs=5333,announceWarmupIntervalsMs=[233,533,1333],sharedPeerIdleMsDefault=123333,strategy_default=({init:e,subscribe:t,announce:n})=>{let a={},o={},s={},l={},u=new SharedPeerManager,d=()=>values(a).some(e=>keys(e).length>0),f=e=>o[e]??={},m=e=>s[e]??={},h=(e,t,n)=>{u.getHealth(e.peer)===`live`&&u.sendRoomPresence(e,t,n)},v=(e,t)=>{entries(o[e]??{}).forEach(([n,a])=>{let{roomToken:s,roomTokenPromise:l}=a;if(s){h(t,s,!0);return}l.then(s=>{o[e]?.[n]===a&&a.roomToken===s&&(u.get(e,t.peerId)!==t||t.isClosing||h(t,s,!0))})})},y=(e,t,n)=>values(u.getMap(e)).forEach(e=>h(e,t,n)),b=e=>{l[e]||(l[e]=u.setRoomPresenceHandler(e,(t,n,a)=>{if(!a)return;let l=u.get(e,t),d=s[e]?.[n];!l||!d||o[e]?.[d]?.attachSharedPeerToRoom(t,l)}))},x=e=>{a[e]&&keys(a[e]).length>0||(l[e]?.(),delete l[e],delete o[e],delete s[e])},S=!1,C=[],T=null,E=noOp;return(l,h,D)=>{if(!l)throw mkErr(`requires a config map as the first argument`);if(D&&typeof D!=`object`)throw mkErr(`third argument must be a callbacks object`);let{appId:O}=l,k=D?.onJoinError,j=D?.onPeerHandshake,M=D?.handshakeTimeoutMs;if(!O)throw mkErr(`config map is missing appId field`);if(!h)throw mkErr(`roomId argument required`);if(M!==void 0&&(!Number.isFinite(M)||M<=0))throw mkErr(`handshakeTimeoutMs must be a positive number`);if(a[O]?.[h])return a[O][h];b(O);let N=topicPath(libName,O,h),F=sha1(N),I=sha1(topicPath(N,selfId)),L=genKey(l.password??``,O,h),R=deriveRoomNamespace(O,h),z=l._test_only_sharedPeerIdleMs??sharedPeerIdleMsDefault,B=!1,V=e=>async t=>({type:t.type,sdp:await e(L,t.sdp)}),H=V(decrypt),U=V(encrypt),W=u.getMap(O);T||=new OfferPool(()=>peer_default(!0,l));let G=T,ee=async e=>{let t=await e.getOffer(Date.now()-e.created>offerTtl);if(!t||t.type!==`offer`)throw mkErr(`failed to get offer for peer`);return(await U(t)).sdp},te=(e,t)=>{let n=getState(K.peerStates,e);n.answeringExpiryTimer=resetTimer(n.answeringExpiryTimer),n.answeringPeer=null;let{proxy:a,isNew:o}=u.bind(h,R,t,{onDetach:()=>{let n=K.peerStates[e];n?.connectedPeer===t.peer&&(n.connectedPeer=null,n.connectedPeerUnhealthySinceMs=null,updateStatus(n))}});n.connectedPeer=t.peer,n.connectedPeerUnhealthySinceMs=null,updateStatus(n),o&&ie(a,e),resetOfferState(n,G)},K={appId:O,roomId:h,config:l,peerStates:{},rootTopicPlaintext:N,rootTopicP:F,selfTopicP:I,toPlain:H,toCipher:U,isLeaving:()=>B,onJoinError:k,sharedPeers:u,offerPool:G,encryptOffer:ee,initPeer:peer_default,connectPeer:(e,t,n)=>{if(B){e.destroy();return}let a=getState(K.peerStates,t);if(a.connectedPeer){let n=W[t];if(n&&a.connectedPeer===n.peer&&n.bindings[h])return;a.connectedPeer!==e&&!e.isDead&&e.destroy();return}let o=W[t];if(o&&u.getHealth(o.peer)===`stale`&&(u.clear(O,t,{destroyPeer:!0}),o=void 0),o&&o.peer!==e){e.isDead||e.destroy(),te(t,o);return}let s=!o;o||=u.register(O,t,e,z),te(t,o),s&&v(O,o)},disconnectPeer:(e,t)=>{if(B)return;let n=K.peerStates[t];n?.connectedPeer===e&&clearConnectedPeer(n,t,`close-event`)},attachSharedPeerToRoom:te,announceIntervals:[],announceIntervalMs},q=createSignalHandler(K);if(!S){let t=e(l);G.warmup(),C=(Array.isArray(t)?t:[t]).map(e=>Promise.resolve(e)),S=!0,E=l.relayConfig?.manualReconnection?noOp:watchOnline()}K.announceIntervals=C.map(()=>announceIntervalMs);let ne=C.map(()=>0),re=[],J=C.map(async(e,n)=>t(await e,await F,await I,q(n),e=>G.getOffers(e,ee)));all([F,I]).then(([e,t])=>{if(B)return;let a=async(o,s)=>{if(B)return;let l=await n(o,e,t);if(B)return;typeof l==`number`&&(K.announceIntervals[s]=l);let u=ne[s]??0;ne[s]=u+1;let d=K.announceIntervals[s]??announceIntervalMs,f=announceWarmupIntervalsMs[u];re[s]=setTimeout(()=>{a(o,s)},typeof f==`number`?Math.min(d,f):d)};J.forEach(async(e,t)=>{if(await e,B)return;let n=await C[t];n&&!B&&a(n,t)})});let ie=noOp,{compose:ae}=createPasswordHandshake(l.password??``,O,h),oe=ae(j),se={...oe?{onPeerHandshake:oe}:{},...M===void 0?{}:{handshakeTimeoutMs:M},onHandshakeError:(e,t)=>k?.({error:t.replace(/^handshake failed: /,``),appId:O,peerId:e,roomId:h})};a[O]??={};let ce=f(O),Y=room_default(e=>ie=e,e=>{if(B)return;let t=K.peerStates[e];t?.connectedPeer&&(t.connectedPeer=null,updateStatus(t))},()=>{B=!0,ie=noOp;let e=o[O]?.[h];e?.roomToken&&(y(O,e.roomToken,!1),delete s[O]?.[e.roomToken],s[O]&&!keys(s[O]).length&&delete s[O]),o[O]&&(delete o[O][h],keys(o[O]).length||delete o[O]),entries(K.peerStates).forEach(([e,t])=>{if(t.answeringExpiryTimer=resetTimer(t.answeringExpiryTimer),t.connectedPeer&&!t.connectedPeer.isDead){let n=W[e];(!n||n.peer!==t.connectedPeer)&&t.connectedPeer.destroy()}t.answeringPeer&&!t.answeringPeer.isDead&&t.answeringPeer.destroy(),resetOfferState(t,G),t.connectedPeer=null,t.answeringPeer=null,updateStatus(t)}),a[O]&&(delete a[O][h],keys(a[O]).length===0&&delete a[O]),re.forEach(resetTimer),J.forEach(async e=>{(await e)()}),!d()&&(S=!1,G.destroy(),T=null,E(),x(O))},se),le={roomToken:null,roomTokenPromise:R,attachSharedPeerToRoom:te};return ce[h]=le,R.then(e=>{B||o[O]?.[h]!==le||(le.roomToken=e,m(O)[e]=h,values(W).forEach(t=>{t.remoteRoomTokens.has(e)&&te(t.peerId,t)}),y(O,e,!0))}),a[O][h]=Y}},relayManager=createRelayManager(e=>e.socket),topicToInfoHash={},infoHashToTopic={},announceIntervals=relayManager.scoped(),announceFns=relayManager.scoped(),subscriptionTokens=relayManager.scoped(),trackerAnnounceMs={},handledSignals={},msgHandlers=relayManager.scoped(),roomOutstandingOffers={},roomOfferGenerationPromises={},roomSubscriberCounts={},trackerAction=`announce`,hashLimit=20,offerPoolSize=3,defaultAnnounceMs=1e4,maxAnnounceMs=2e4,offerRetentionMs=12e4,signalDedupeWindowMs=4e3,defaultRedundancy=3,getInfoHash=async e=>{if(topicToInfoHash[e])return topicToInfoHash[e];let t=(await sha1(e)).slice(0,hashLimit);return topicToInfoHash[e]=t,infoHashToTopic[t]=e,t},send=async(e,t,n)=>e.send(toJson({action:trackerAction,info_hash:await getInfoHash(t),peer_id:selfId,...n})),warn=(e,t,n=!1)=>console.warn(`${libName}: torrent tracker ${n?`failure`:`warning`} from ${e} - ${t}`),getRoomOutstandingOffers=e=>roomOutstandingOffers[e]??={},deleteRoomOfferBookkeeping=e=>{delete roomOutstandingOffers[e],delete roomOfferGenerationPromises[e]},claimOutstandingOffer=(e,t)=>{let n=roomOutstandingOffers[e],a=n?.[t];if(a)return delete n[t],a.claim?.(),!keys(n).length&&!roomSubscriberCounts[e]&&deleteRoomOfferBookkeeping(e),a},reclaimOutstandingOffer=(e,t)=>{let n=roomOutstandingOffers[e],a=n?.[t];a&&(delete n[t],a.reclaim?.(),!keys(n).length&&!roomSubscriberCounts[e]&&deleteRoomOfferBookkeeping(e))},reclaimAllOutstandingOffers=e=>{keys(getRoomOutstandingOffers(e)).forEach(t=>reclaimOutstandingOffer(e,t)),deleteRoomOfferBookkeeping(e)},pruneOutstandingOffers=e=>{let t=Date.now();entries(getRoomOutstandingOffers(e)).forEach(([n,a])=>{t-a.createdAt>offerRetentionMs&&reclaimOutstandingOffer(e,n)})},ensureOutstandingOffers=async(e,t)=>{for(;roomOfferGenerationPromises[e];)await roomOfferGenerationPromises[e];let n=(async()=>{pruneOutstandingOffers(e);let n=getRoomOutstandingOffers(e),a=keys(n).length,o=Math.max(0,offerPoolSize-a);o>0&&(await t(o)).forEach(e=>{n[genId(hashLimit)]={...e,createdAt:Date.now()}})})().finally(()=>{roomOfferGenerationPromises[e]===n&&delete roomOfferGenerationPromises[e]});return roomOfferGenerationPromises[e]=n,await n,getRoomOutstandingOffers(e)},joinRoomStrategy=strategy_default({init:e=>getRelays(e,defaultRelayUrls,defaultRedundancy).map(e=>{let t=relayManager.register(e,makeSocket(e,n=>{let a=fromJson(n),o=a[`failure reason`],s=a[`warning message`],{interval:l}=a,u=a.info_hash?infoHashToTopic[a.info_hash]:void 0;if(o){warn(t.url,o,!0);return}if(s&&warn(t.url,s),l&&l*1e3>(trackerAnnounceMs[t.url]??defaultAnnounceMs)&&u&&announceFns.forKey(e)[u]){let n=Math.min(l*1e3,maxAnnounceMs),a=announceIntervals.forKey(e),o=announceFns.forKey(e);a[u]&&clearInterval(a[u]),trackerAnnounceMs[t.url]=n;let s=o[u];s&&(a[u]=setInterval(()=>{s()},n))}if((a.offer||a.answer)&&u&&a.offer_id){if(a.peer_id===selfId)return;let t=`${u}:${a.offer?`offer`:`answer`}:${a.offer_id}:${a.peer_id??``}`,n=Date.now(),o=handledSignals[t];if(typeof o==`number`&&n-o<signalDedupeWindowMs)return;handledSignals[t]=n,entries(handledSignals).forEach(([e,t])=>{n-t>signalDedupeWindowMs*6&&delete handledSignals[e]}),msgHandlers.forKey(e)[u]?.(a)}}));return t.ready}),subscribe:(e,t,n,a,o)=>{let s=msgHandlers.forRelay(e),l=announceFns.forRelay(e),u=announceIntervals.forRelay(e),d=subscriptionTokens.forRelay(e),f=Symbol(t);d[t]=f,roomSubscriberCounts[t]=(roomSubscriberCounts[t]??0)+1;let m=n=>{if(n.offer&&n.peer_id&&n.offer_id)a(t,{offer:n.offer.sdp,peerId:n.peer_id,hasOutgoingOffer:keys(getRoomOutstandingOffers(t)).length>0},(a,o)=>void send(e,t,{answer:{type:`answer`,sdp:fromJson(o).answer},offer_id:n.offer_id,to_peer_id:n.peer_id}));else if(n.answer&&n.offer_id&&n.peer_id){let e=claimOutstandingOffer(t,n.offer_id);e&&a(t,{answer:n.answer.sdp,peerId:n.peer_id,peer:e.peer},()=>{})}};s[t]=m;let h=async()=>{d[t]===f&&send(e,t,{numwant:offerPoolSize,offers:entries(await ensureOutstandingOffers(t,o)).map(([e,{offer:t}])=>({offer_id:e,offer:{type:`offer`,sdp:t}}))})};return trackerAnnounceMs[e.url]=defaultAnnounceMs,l[t]=h,u[t]=setInterval(h,trackerAnnounceMs[e.url]),h(),()=>{if(roomSubscriberCounts[t]=Math.max(0,(roomSubscriberCounts[t]??1)-1),roomSubscriberCounts[t]||delete roomSubscriberCounts[t],d[t]!==f){roomSubscriberCounts[t]||reclaimAllOutstandingOffers(t);return}let e=u[t];e&&(clearInterval(e),delete u[t]),s[t]===m&&delete s[t],l[t]===h&&delete l[t],delete d[t],roomSubscriberCounts[t]||reclaimAllOutstandingOffers(t)}},announce:e=>trackerAnnounceMs[e.url]}),joinRoom=(e,t,n)=>joinRoomStrategy({...e,trickleIce:e.trickleIce??!1},t,n),getRelaySockets=relayManager.getSockets,defaultRelayUrls=[`tracker.webtorrent.dev`,`tracker.openwebtorrent.com`,`tracker.btorrent.xyz`,`tracker.files.fm:7073/announce`].map(e=>`wss://`+e),require_lodash_throttle=__commonJSMin(((e,t)=>{var n=`Expected a function`,a=NaN,o=`[object Symbol]`,s=/^\s+|\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,d=/^0o[0-7]+$/i,f=parseInt,m={}.Object===Object&&{},h=typeof self==`object`&&self&&self.Object===Object&&self,v=m||h||Function(`return this`)(),y=Object.prototype.toString,b=Math.max,x=Math.min,S=function(){return v.Date.now()};function C(e,t,a){var o,s,l,u,d,f,m=0,h=!1,v=!1,y=!0;if(typeof e!=`function`)throw TypeError(n);t=k(t)||0,E(a)&&(h=!!a.leading,v=`maxWait`in a,l=v?b(k(a.maxWait)||0,t):l,y=`trailing`in a?!!a.trailing:y);function C(t){var n=o,a=s;return o=s=void 0,m=t,u=e.apply(a,n),u}function T(e){return m=e,d=setTimeout(j,t),h?C(e):u}function D(e){var n=e-f,a=e-m,o=t-n;return v?x(o,l-a):o}function O(e){var n=e-f,a=e-m;return f===void 0||n>=t||n<0||v&&a>=l}function j(){var e=S();if(O(e))return M(e);d=setTimeout(j,D(e))}function M(e){return d=void 0,y&&o?C(e):(o=s=void 0,u)}function N(){d!==void 0&&clearTimeout(d),m=0,o=f=s=d=void 0}function F(){return d===void 0?u:M(S())}function I(){var e=S(),n=O(e);if(o=arguments,s=this,f=e,n){if(d===void 0)return T(f);if(v)return d=setTimeout(j,t),C(f)}return d===void 0&&(d=setTimeout(j,t)),u}return I.cancel=N,I.flush=F,I}function T(e,t,a){var o=!0,s=!0;if(typeof e!=`function`)throw TypeError(n);return E(a)&&(o=`leading`in a?!!a.leading:o,s=`trailing`in a?!!a.trailing:s),C(e,t,{leading:o,maxWait:t,trailing:s})}function E(e){var t=typeof e;return!!e&&(t==`object`||t==`function`)}function D(e){return!!e&&typeof e==`object`}function O(e){return typeof e==`symbol`||D(e)&&y.call(e)==`[object Symbol]`}function k(e){if(typeof e==`number`)return e;if(O(e))return a;if(E(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=E(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=e.replace(s,``);var n=u.test(e);return n||d.test(e)?f(e.slice(2),n?2:8):l.test(e)?a:+e}t.exports=T})),import_lodash_throttle=__toESM(require_lodash_throttle()),endpoints={getMarketData:`https://farmhand.vercel.app/api/get-market-data`,postDayResults:`https://farmhand.vercel.app/api/post-day-results`},features=Object.keys({BASE_URL:`./`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_API_ROOT:`https://farmhand.vercel.app/`,VITE_FARMHAND_PACKAGE_VERSION:`1.22.0`,VITE_NAME:`@jeremyckahn/farmhand`,VITE_TURN_CREDENTIAL:``,VITE_TURN_USERNAME:``}).reduce((e,t)=>{let n=t.match(/VITE_ENABLE_(.*)/);return n&&(e[n[1]]=!0),e},{}),searchParams=new URLSearchParams(import_window.default.location?.search);for(let e of searchParams.keys()){let t=e.match(/enable_(.*)/);t&&(features[t[1]]=!0)}var rtcConfig={iceServers:[{urls:`stun:stun.relay.metered.ca:80`}]},handlePeerMetadataRequest=(e,t,n)=>{e.updatePeer(e,t,n)},handleCowTradeRequest=async(e,{cowOffered:t,cowRequested:n},a)=>{let o=!1;e.setState(e=>{let{allowCustomPeerCowNames:s,cowIdOfferedForTrade:l,cowsTraded:u,cowInventory:d,playerId:f,isAwaitingCowTradeRequest:m,peers:h,sendCowAccept:v,sendCowReject:y}=e;if(!v||!y)return console.error(`Peer connection not set up correctly`),null;let b=d.find(({id:e})=>e===l);if(m||n.id!==l||!b)return y({reason:cowTradeRejectionReason.REQUESTED_COW_UNAVAILABLE},a),null;let x={...t,timesTraded:t.originalOwnerId===f?t.timesTraded:t.timesTraded+1},[,S]=Object.entries(h).find(([,e])=>e?.playerId===x.ownerId)??[];return S?(e=changeCowAutomaticHugState(e,b,!1),e=removeCowFromInventory(e,b),e=addCowToInventory(e,{...x,ownerId:f}),e=showNotification(e,COW_TRADED_NOTIFICATION(``,b,t,f,s),`success`),v({...b,isUsingHuggingMachine:!1},a),o=!0,{...e,cowIdOfferedForTrade:x.id,cowsTraded:x.originalOwnerId===f?u:u+1,isAwaitingCowTradeRequest:!0,selectedCowId:x.id,peers:{...h,[a]:{...S,cowOfferedForTrade:{...b,ownerId:S.playerId}}}}):(console.error(`No data for peer ${x.ownerId}`),null)},async()=>{o&&(await sleep(750),await e.persistState(),e.showNotification(PROGRESS_SAVED_MESSAGE,`info`),e.setState(()=>({isAwaitingCowTradeRequest:!1})))})},handleCowTradeRequestAccept=(e,t,n)=>{let a=!1;e.setState(e=>{let{allowCustomPeerCowNames:o,cowIdOfferedForTrade:s,cowInventory:l,cowsTraded:u,cowTradeTimeoutId:d,playerId:f,peers:m}=e,h=l.find(({id:e})=>e===s);if(!h)return console.error(`handleCowTradeRequestAccept: cow with ID ${s} is no longer available`),e=showNotification(e,UNKNOWN_COW_TRADE_FAILURE,`error`),{...e,isAwaitingCowTradeRequest:!1};let[,v]=Object.entries(m).find(([,e])=>{let{playerId:n}=e;return n===t.ownerId})||[],y=t.originalOwnerId===f,b={...t,timesTraded:y?t.timesTraded:t.timesTraded+1};return e=removeCowFromInventory(e,h),e=addCowToInventory(e,{...b,ownerId:f}),e=showNotification(e,COW_TRADED_NOTIFICATION(``,h,b,f,o),`success`),y||(e=addExperience(e,EXPERIENCE_VALUES.COW_TRADED)),d&&clearTimeout(d),a=!0,{...e,cowsTraded:b.originalOwnerId===f?u:u+1,cowTradeTimeoutId:null,isAwaitingCowTradeRequest:!1,cowIdOfferedForTrade:b.id,selectedCowId:b.id,peers:{...m,[n]:{...v,cowOfferedForTrade:{...h,ownerId:v.playerId}}}}},async()=>{a&&(await e.persistState(),e.showNotification(PROGRESS_SAVED_MESSAGE,`info`))})},handleCowTradeRequestReject=(e,{reason:t})=>{let{cowTradeTimeoutId:n}=e.state;typeof n==`number`&&clearTimeout(n),e.setState({cowTradeTimeoutId:null,isAwaitingCowTradeRequest:!1}),e.showNotification(REQUESTED_COW_TRADE_UNAVAILABLE,`error`)},relayRedundancy=4,useFarmhandNetwork=(e,t,n,a,o,s,l,u)=>{let{hasBooted:d,isOnline:f,room:m,redirect:h,heartbeatTimeoutId:v,peerRoom:y,sendPeerMetadata:b}=e,x=(0,import_react$24.useCallback)(e=>(0,import_lodash_throttle.default)((...n)=>{e(...n),t(e=>({...e,pendingPeerMessages:[]}))},5e3,{trailing:!0}),[t]),S=(0,import_react$24.useCallback)(()=>{typeof a.current?.state?.cowTradeTimeoutId==`number`&&(n.current.showNotification(REQUESTED_COW_TRADE_UNAVAILABLE,`error`),console.error(`Cow trade request timed out`),t(e=>({...e,cowTradeTimeoutId:null,isAwaitingCowTradeRequest:!1})))},[t,n,a]),C=(0,import_react$24.useCallback)(o=>{let{cowIdOfferedForTrade:s,cowInventory:l,peers:u,sendCowTradeRequest:d}=a.current?.state??e;if(!d)return;let{ownerId:f}=o,[m]=Object.entries(u).find(([,e])=>e?.playerId===f)??[];if(!m){console.error(`Owner not found for cow ${JSON.stringify(o)}`);return}if(l.find(({id:e})=>e===o.id)){console.error(`Cow ID ${o.id} is already in inventory`),n.current.showNotification(COW_ALREADY_OWNED,`error`);return}let h=l.find(({id:e})=>e===s);if(!h){console.error(`Cow ID ${s} not found`);return}let v=setTimeout(S,COW_TRADE_TIMEOUT);d({cowOffered:{...h,isUsingHuggingMachine:!1},cowRequested:o},m),t(e=>({...e,cowTradeTimeoutId:v,isAwaitingCowTradeRequest:!0}))},[t,S,n,a]),T=(0,import_react$24.useCallback)(()=>{t(e=>(clearTimeout(e.heartbeatTimeoutId??-1),e));let e=import_window.default.setTimeout(()=>{t(e=>({...e,money:moneyTotal(e.money,e.activePlayers??0)})),T()},HEARTBEAT_INTERVAL_PERIOD);t(t=>({...t,heartbeatTimeoutId:e}))},[t]),E=(0,import_react$24.useCallback)(async()=>{let{isOnline:e,priceCrashes:o,priceSurges:s,room:l,playerId:u,peerRoom:d}=a.current.state;if(e){n.current.showNotification(CONNECTING_TO_SERVER,`info`);try{t(e=>({...e,isAwaitingNetworkRequest:!0,peers:{}})),d?.leave();let{valueAdjustments:e}=await getData(endpoints.getMarketData,{farmId:u,room:l});T(),t(t=>({...t,activePlayers:1,peerRoom:joinRoom({appId:`@jeremyckahn/farmhand`,rtcConfig},l),valueAdjustments:FarmhandService.applyPriceEvents(e,o,s)})),n.current.showNotification(CONNECTED_TO_ROOM(``,l),`success`)}catch(e){n.current.showNotification(SERVER_ERROR,`error`),console.error(e),t(e=>({...e,redirect:withCurrentHashQuery(`/`),cowIdOfferedForTrade:``}))}t(e=>({...e,isAwaitingNetworkRequest:!1,isAwaitingCowTradeRequest:!1}))}},[T,n,a,t]),D=(0,import_react$24.useCallback)((e,t)=>{n.current.prependPendingPeerMessage(e,t)},[n]);return(0,import_react$24.useEffect)(()=>{if(!d||!o)return;let e=decodeURIComponent(s),S=l.startsWith(`/online`),C=!!h&&h!==o.redirect;if(!C&&(S!==f||e!==m)?t(t=>({...t,isOnline:S,redirect:``,room:e})):h&&!C&&S===f&&e===m&&t(e=>({...e,redirect:``})),(f!==o.isOnline||m!==o.room)&&(f&&E(),!f&&typeof v==`number`&&(clearTimeout(v),t(e=>({...e,activePlayers:null,heartbeatTimeoutId:null,peerRoom:null})))),f===!1&&o.isOnline===!0&&n.current.showNotification(DISCONNECTED_FROM_SERVER,`info`),y!==o.peerRoom)if(y){y.onPeerJoin(e=>n.current.addPeer(e)),y.onPeerLeave(e=>n.current.removePeer(e));let[e,o]=y.makeAction(`peerMetadata`);o((...e)=>handlePeerMetadataRequest(a.current,e[0],e[1]));let[s,l]=y.makeAction(`cowTrade`);l((...e)=>handleCowTradeRequest(a.current,e[0],e[1]));let[d,f]=y.makeAction(`cowAccept`);f((...e)=>handleCowTradeRequestAccept(a.current,e[0],e[1]));let[m,h]=y.makeAction(`cowReject`);h((...e)=>handleCowTradeRequestReject(a.current,e[0])),t(t=>({...t,getCowAccept:f,getCowReject:h,getCowTradeRequest:l,getPeerMetadata:o,pendingPeerMessages:[],sendCowAccept:d,sendCowReject:m,sendCowTradeRequest:s,sendPeerMetadata:x(e)})),e(u)}else o.peerRoom?.leave(),t(e=>({...e,peers:{},sendPeerMetadata:null}));b?.(u)},[d,f,m,h,v,y,b,o,s,l,E,x,u,n,a,t]),{syncToRoom:E,scheduleHeartbeat:T,wrapSendPeerMetadata:x,tradeForPeerCow:C,handleCowTradeTimeout:S,messagePeers:D}},computeMarketPositions=(e,t,n)=>n.reduce((n,{id:a,quantity:o})=>{let s=e[a]||0,l=t[a]||0;return itemsMap[a].doesPriceFluctuate&&s!==o&&(o<s||o<l?n[a]=-1:(o>s||o>l)&&(n[a]=1)),n},{}),useFarmhandDayAdvancement=(e,t,n,a,o)=>{let s=(0,import_react$24.useCallback)(async()=>{await n.localforage?.clear(),a.current.showNotification(DATA_DELETED)},[n.localforage,a]),l=(0,import_react$24.useCallback)((e,t={})=>n.localforage?.setItem(`state`,reduceByPersistedKeys({...e,...t})),[n.localforage]),u=(0,import_react$24.useCallback)(async()=>{let n=[],a=null;t(e=>({...e,isAwaitingNetworkRequest:!0}));let o;if(e.current.isOnline){let{inventory:s,room:l,todaysPurchases:u,todaysStartingInventory:d}=e.current,f=computeMarketPositions(d,u,s);try{o=(await postData(endpoints.postDayResults,{positions:f,room:l})).valueAdjustments,Object.keys(f).length&&(n.push({message:POSITIONS_POSTED_NOTIFICATION(``,`You`,f),severity:`info`}),a=POSITIONS_POSTED_NOTIFICATION(``,``,f))}catch(e){n.push({message:SERVER_ERROR,severity:`error`}),t(e=>({...e,redirect:withCurrentHashQuery(`/`),cowIdOfferedForTrade:``,isAwaitingNetworkRequest:!1})),console.error(e)}}return{broadcastedPositionMessage:a,serverMessages:n,serverValueAdjustments:o}},[e,t]);return{clearPersistedData:s,persistState:l,updateServerForNextDay:u,incrementDay:(0,import_react$24.useCallback)(async(n=!1)=>{if(e.current.isWaitingForDayToCompleteIncrementing&&!n)return;n||t(e=>({...e,isWaitingForDayToCompleteIncrementing:!0}));let{broadcastedPositionMessage:a,serverMessages:s,serverValueAdjustments:l}=await u();t(e=>{let t=computeStateForNextDay(e,n),u=[...s,...t.newDayNotifications];return t.valueAdjustments=FarmhandService.applyPriceEvents(l??t.valueAdjustments,t.priceCrashes,t.priceSurges),t.isAwaitingNetworkRequest=!1,t.isWaitingForDayToCompleteIncrementing=!0,t.newDayNotifications=[],t.todaysNotifications=[],o.current={state:t,pendingNotifications:u,broadcastedPositionMessage:a,isFirstDay:n},t})},[e,u,t,o])}},useFarmhandNotifications=(e,t)=>({showInventoryFullNotifications:(0,import_react$24.useCallback)((e,n)=>{inventorySpaceRemaining(e)>0&&inventorySpaceRemaining(n)<=0&&t.current.showNotification(INVENTORY_FULL_NOTIFICATION,`warning`)},[t]),showRecipeLearnedNotifications:(0,import_react$24.useCallback)(({learnedRecipes:n})=>{let a=[];Object.keys(e.learnedRecipes).forEach(e=>{n.hasOwnProperty(e)||a.push(recipesMap[e])}),a.length>1?t.current.showNotification(RECIPES_LEARNED(``,a)):a.length===1&&t.current.showNotification(RECIPE_LEARNED(``,a[0]))},[e.learnedRecipes,t])}),FarmhandReducers=class e extends import_react$24.Component{addCowToInventory(...e){throw Error(`Unimplemented`)}addPeer(...e){throw Error(`Unimplemented`)}adjustLoan(...e){throw Error(`Unimplemented`)}changeCowAutomaticHugState(...e){throw Error(`Unimplemented`)}changeCowBreedingPenResident(...e){throw Error(`Unimplemented`)}changeCowName(...e){throw Error(`Unimplemented`)}clearPlot(...e){throw Error(`Unimplemented`)}chopForestPlot(...e){throw Error(`Unimplemented`)}computeStateForNextDay(...e){throw Error(`Unimplemented`)}fertilizePlot(...e){throw Error(`Unimplemented`)}forRange(...e){throw Error(`Unimplemented`)}harvestForestPlot(...e){throw Error(`Unimplemented`)}harvestPlot(...e){throw Error(`Unimplemented`)}hugCow(...e){throw Error(`Unimplemented`)}makeRecipe(...e){throw Error(`Unimplemented`)}makeFermentationRecipe(...e){throw Error(`Unimplemented`)}makeWine(...e){throw Error(`Unimplemented`)}modifyCow(...e){throw Error(`Unimplemented`)}mulchForestPlot(...e){throw Error(`Unimplemented`)}offerCow(...e){throw Error(`Unimplemented`)}plantInPlot(...e){throw Error(`Unimplemented`)}plantTreeInPlot(...e){throw Error(`Unimplemented`)}prependPendingPeerMessage(...e){throw Error(`Unimplemented`)}purchaseCombine(...e){throw Error(`Unimplemented`)}purchaseComposter(...e){throw Error(`Unimplemented`)}purchaseCow(...e){throw Error(`Unimplemented`)}purchaseCowPen(...e){throw Error(`Unimplemented`)}purchaseCellar(...e){throw Error(`Unimplemented`)}purchaseField(...e){throw Error(`Unimplemented`)}purchaseForest(...e){throw Error(`Unimplemented`)}purchaseItem(...e){throw Error(`Unimplemented`)}purchaseSmelter(...e){throw Error(`Unimplemented`)}purchaseStorageExpansion(...e){throw Error(`Unimplemented`)}purchaseWoodChipper(...e){throw Error(`Unimplemented`)}removeCowFromInventory(...e){throw Error(`Unimplemented`)}removeKegFromCellar(...e){throw Error(`Unimplemented`)}removePeer(...e){throw Error(`Unimplemented`)}selectCow(...e){throw Error(`Unimplemented`)}sellCow(...e){throw Error(`Unimplemented`)}sellItem(...e){throw Error(`Unimplemented`)}sellKeg(...e){throw Error(`Unimplemented`)}setLightningRod(...e){throw Error(`Unimplemented`)}setScarecrow(...e){throw Error(`Unimplemented`)}setSprinkler(...e){throw Error(`Unimplemented`)}showNotification(...e){throw Error(`Unimplemented`)}updatePeer(...e){throw Error(`Unimplemented`)}upgradeTool(...e){throw Error(`Unimplemented`)}waterAllPlots(...e){throw Error(`Unimplemented`)}waterField(...e){throw Error(`Unimplemented`)}waterPlot(...e){throw Error(`Unimplemented`)}withdrawCow(...e){throw Error(`Unimplemented`)}constructor(t){super(t);let n=Object.getOwnPropertyNames(e.prototype).filter(e=>e!==`constructor`);for(let e of n){let t=reducers_exports[e];t&&(this[e]=(...e)=>{this.setState(n=>t(n,...e))})}}},useFarmhandReducers=e=>(0,import_react$24.useMemo)(()=>{let t={};Object.assign(t,reducers_exports);let n=Object.getOwnPropertyNames(FarmhandReducers.prototype).filter(e=>e!==`constructor`);for(let a of n){let n=reducers_exports[a];typeof n==`function`&&(t[a]=(...t)=>{e(e=>{let a=n(e,...t);return!a||a===e?e:{...a}})})}return t},[e]),usePrevious=e=>{let t=(0,import_react$24.useRef)();return(0,import_react$24.useEffect)(()=>{t.current=e},[e]),t.current},{CLEANUP,HARVEST,MINE,WATER}=fieldMode,useFarmhand=e=>{let{features:t,match:{path:n=``,params:{room:a}={}}={}}=e,o=(0,import_react$24.useCallback)(()=>({activePlayers:null,allowCustomPeerCowNames:!1,cellarInventory:[],currentDialogView:dialogView.NONE,completedAchievements:{},cowForSale:generateCow(),cowBreedingPen:{cowId1:null,cowId2:null,daysUntilBirth:-1},cowColorsPurchased:{},cowIdOfferedForTrade:``,cowInventory:[],cowsSold:{},cowsTraded:0,cowTradeTimeoutId:-1,cropsHarvested:{},dayCount:0,experience:0,farmName:`Unnamed`,field:createNewField(),fieldMode:fieldMode.OBSERVE,forest:createNewForest(),treesChopped:0,treeFruitsHarvested:{},mulchApplied:{},getCowAccept:noop$3,getCowReject:noop$3,getCowTradeRequest:noop$3,getPeerMetadata:noop$3,hasBooted:!1,hasProducedRainbowFertilizer:!1,heartbeatTimeoutId:null,historicalDailyLosses:[],historicalDailyRevenue:[],historicalValueAdjustments:[],hoveredPlotRangeSize:0,playerId:v4(),inventory:[{id:scarecrow.id,quantity:1}],inventoryLimit:100,isAwaitingCowTradeRequest:!1,isAwaitingNetworkRequest:!1,isCombineEnabled:!1,isMenuOpen:!doesMenuObstructStage(),itemsSold:{},cellarItemsSold:{},isChatOpen:!1,isDialogViewOpen:!1,isOnline:n.startsWith(`/online`)??!1,isWaitingForDayToCompleteIncrementing:!1,learnedRecipes:{},loanBalance:500,loansTakenOut:1,money:500,latestNotification:null,newDayNotifications:[],notificationLog:[],peers:{},peerRoom:null,pendingPeerMessages:[],latestPeerMessages:[],sendPeerMetadata:null,selectedCowId:``,selectedForestItemId:``,selectedItemId:``,priceCrashes:{},priceSurges:{},profitabilityStreak:0,recipesMade:{},record7dayProfitAverage:0,recordProfitabilityStreak:0,recordSingleDayProfit:0,revenue:0,redirect:``,room:decodeURIComponent(e.match?.params?.room||`global`),sendCowAccept:noop$3,sendCowReject:noop$3,purchasedCombine:0,purchasedComposter:0,purchasedCowPen:0,purchasedCellar:0,purchasedField:0,purchasedForest:0,purchasedSmelter:0,purchasedWoodChipper:0,sendCowTradeRequest:noop$3,showHomeScreen:!0,showNotifications:!0,stageFocus:stageFocusType.HOME,todaysNotifications:[],todaysLosses:0,todaysPurchases:{},todaysRevenue:0,todaysStartingInventory:{},toolLevels:{[toolType.AXE]:toolLevel.UNAVAILABLE,[toolType.HOE]:toolLevel.DEFAULT,[toolType.PICKER_POLE]:toolLevel.UNAVAILABLE,[toolType.SCYTHE]:toolLevel.DEFAULT,[toolType.SHOVEL]:toolLevel.UNAVAILABLE,[toolType.WATERING_CAN]:toolLevel.DEFAULT},useAlternateEndDayButtonPosition:!1,valueAdjustments:{},version:`1.22.0`}),[n,e.match?.params?.room]),[s,l]=(0,import_react$24.useState)(o),u=(0,import_react$24.useRef)(s);u.current=s;let d=a===void 0?s.room:a,f=(0,import_react$24.useRef)(null),m=(0,import_react$24.useRef)(!1),h=useFarmhandReducers(l),v=(0,import_react$24.useRef)(h);v.current=h;let y=usePrevious(s),b=STAGE_TITLE_MAP[s.stageFocus],x=FarmhandService.getFieldToolInventory(s.inventory),S=FarmhandService.computePlayerInventory(s.inventory,s.valueAdjustments),C=FarmhandService.getPlantableCropInventory(s.inventory),T=FarmhandService.getPlantableTreeInventory(s.inventory),E=FarmhandService.getMulchInventory(s.inventory),D=(0,import_react$24.useMemo)(()=>getLevelEntitlements(levelAchieved(s.experience)),[s.experience]),O=(0,import_react$24.useMemo)(()=>getAvailableShopInventory(D),[D]),k=D.stageFocusType[stageFocusType.FOREST],j=s.isOnline&&s.room!==`global`,M=(0,import_react$24.useMemo)(()=>getViewList({isForestUnlocked:k,purchasedCellar:s.purchasedCellar,purchasedCowPen:s.purchasedCowPen,showHomeScreen:s.showHomeScreen}),[s.showHomeScreen,k,s.purchasedCowPen,s.purchasedCellar]),N=(0,import_react$24.useMemo)(()=>getPeerMetadata(s),[s]),F=s.isAwaitingNetworkRequest||s.isAwaitingCowTradeRequest||s.isWaitingForDayToCompleteIncrementing,I=(0,import_react$24.useRef)(null),{openDialogView:L,closeDialogView:R,focusNextView:z,focusPreviousView:B}=useFarmhandNavigation(l,M),V=(0,import_react$24.useRef)(!0),H=(0,import_react$24.useRef)(!1);(0,import_react$24.useEffect)(()=>{if(s.hasBooted){if(H.current){H.current=!1,setHashQueryParam(VIEW_QUERY_PARAM_NAME,s.stageFocus);return}if(V.current){V.current=!1,setHashQueryParam(VIEW_QUERY_PARAM_NAME,s.stageFocus);return}setHashQueryParam(VIEW_QUERY_PARAM_NAME,s.stageFocus,`push`),removeHashQueryParam(`tab`)}},[s.stageFocus,s.hasBooted]),(0,import_react$24.useEffect)(()=>{let e=()=>{let e=getValidatedStageFocusFromHash(u.current)??stageFocusType.HOME;e!==u.current.stageFocus&&(H.current=!0,l(t=>({...t,stageFocus:e})))};return import_window.default.addEventListener(`popstate`,e),()=>import_window.default.removeEventListener(`popstate`,e)},[]);let{syncToRoom:U,scheduleHeartbeat:W,tradeForPeerCow:G,handleCowTradeTimeout:ee,messagePeers:te}=useFarmhandNetwork(s,l,v,I,y,d,n,N),{clearPersistedData:K,persistState:q,updateServerForNextDay:ne,incrementDay:re}=useFarmhandDayAdvancement(u,l,e,v,f),{showInventoryFullNotifications:J,showRecipeLearnedNotifications:ie}=useFarmhandNotifications(s,v);I.current=(0,import_react$24.useMemo)(()=>({state:s,props:e,viewTitle:b,fieldToolInventory:x,mulchInventory:E,playerInventory:S,plantableCropInventory:C,plantableTreeInventory:T,viewList:M,levelEntitlements:D,shopInventory:O,peerMetadata:N,isInputBlocked:F,isChatAvailable:j,isForestUnlocked:k,setState:(e,t)=>{l(n=>{let a=typeof e==`function`?e(n):e;if(a==null)return n;let o={...n,...a};return t&&setTimeout(t,0),o})},...v.current,purchaseItem:(e,t)=>v.current.purchaseItem(e,t),sellItem:(e,t)=>v.current.sellItem(e,t),showNotification:(e,t,n)=>v.current.showNotification(e,t,n),prependPendingPeerMessage:(e,t)=>v.current.prependPendingPeerMessage(e,t),forRange:(e,t,n,a,o)=>v.current.forRange(e,t,n,a,o),createInitialState:o,getData,postData,tradeForPeerCow:G,handleCowTradeTimeout:ee,clearPersistedData:K,syncToRoom:U,scheduleHeartbeat:W,showInventoryFullNotifications:J,showRecipeLearnedNotifications:ie,persistState:(e={})=>q(I.current?.state??s,e),updateServerForNextDay:ne,incrementDay:re,openDialogView:L,closeDialogView:R,focusNextView:z,focusPreviousView:B,messagePeers:te}),[s,e,b,x,E,S,C,T,M,D,O,N,F,j,k,G,ee,K,U,W,J,ie,q,ne,re,L,R,z,B,te,o]);let ae=(0,import_react$24.useMemo)(()=>{let e={debounced:{}};return Object.keys(ui_events_default).forEach(t=>{let n=t;e[n]=(...e)=>ui_events_default[n].apply(I.current,e),e.debounced[n]=(0,import_lodash_debounce.default)(e[n],50)}),e},[]),oe=(0,import_react$24.useMemo)(()=>{let e={incrementDay:`shift+c`,nextView:`right`,openAccounting:`b`,openAchievements:`a`,openLog:`l`,openPriceEvents:`e`,openStats:`s`,openSettings:`,`,openKeybindings:`shift+?`,previousView:`left`,toggleMenu:`m`};return nullArray(9).forEach((t,n)=>{e[`numberKey${n+1}`]=String(n+1)}),e},[]),se=(0,import_react$24.useMemo)(()=>{let e={incrementDay:()=>re(),nextView:z,openAccounting:()=>L(dialogView.ACCOUNTING),openAchievements:()=>L(dialogView.ACHIEVEMENTS),openLog:()=>L(dialogView.FARMERS_LOG),openPriceEvents:()=>L(dialogView.PRICE_EVENTS),openStats:()=>L(dialogView.STATS),openSettings:()=>L(dialogView.SETTINGS),openKeybindings:()=>L(dialogView.KEYBINDINGS),previousView:B,selectHoe:()=>ae.handleFieldModeSelect(CLEANUP),selectScythe:()=>ae.handleFieldModeSelect(HARVEST),selectWateringCan:()=>ae.handleFieldModeSelect(WATER),selectShovel:()=>{s.toolLevels[toolType.SHOVEL]!==toolLevel.UNAVAILABLE&&ae.handleFieldModeSelect(MINE)},toggleMenu:()=>ae.handleMenuToggle()};return nullArray(9).forEach((t,n)=>{e[`numberKey${n+1}`]=()=>{let e=M[n];typeof e==`string`&&l(t=>({...t,stageFocus:stageFocusType[e]}))}}),e},[re,z,L,B,ae,s.toolLevels,M,K]);(0,import_react$24.useEffect)(()=>{if(m.current)return;m.current=!0,Object.defineProperty(import_window.default,"farmhand",{get:()=>I.current,configurable:!0});let t=!0;return(async()=>{let n=await e.localforage?.getItem(`state`);if(t){if(n){let e=transformStateDataForImport({...o(),...n}),{isCombineEnabled:t,newDayNotifications:a}=e,s=getValidatedStageFocusFromHash(e);l(t=>({...t,...e,...s&&{stageFocus:s},newDayNotifications:[],hasBooted:!0})),a.forEach(({message:e,severity:t})=>{setTimeout(()=>v.current.showNotification(e,t),0)}),t&&v.current.forRange(harvestPlot,1/0,0,0)}else{await re(!0),l(e=>({...e,historicalValueAdjustments:[]})),v.current.showNotification(LOAN_INCREASED(``,500),`info`);let e=getValidatedStageFocusFromHash(u.current);l(t=>({...t,...e&&{stageFocus:e},hasBooted:!0}))}U()}})(),()=>{t=!1}},[o,re,e.localforage,U]);let ce=(0,import_react$24.useRef)(import_window.default.innerWidth);(0,import_react$24.useEffect)(()=>{let e=()=>{let{innerWidth:e}=import_window.default,t=e!==ce.current;ce.current=e,t&&l(e=>{let t=!doesMenuObstructStage();return e.isMenuOpen===t?e:{...e,isMenuOpen:t}})};return import_window.default.addEventListener(`resize`,e),()=>import_window.default.removeEventListener(`resize`,e)},[]),(0,import_react$24.useEffect)(()=>{if(!s.hasBooted||!f.current)return;let t=!0,{state:n,pendingNotifications:a,broadcastedPositionMessage:o,isFirstDay:u}=f.current;return f.current=null,(async()=>{try{if(await e.localforage?.setItem(`state`,reduceByPersistedKeys({...n,...u&&{historicalValueAdjustments:[]},newDayNotifications:a})),!t)return;if([...a].concat(u?[]:[{message:PROGRESS_SAVED_MESSAGE,severity:`info`}]).forEach(({message:e,severity:t})=>v.current.showNotification(e,t)),n.isCombineEnabled){if(n.stageFocus===stageFocusType.FIELD&&await sleep(1e3),!t)return;v.current.forRange(harvestPlot,1/0,0,0)}}catch(e){console.error(e),t&&v.current.showNotification(JSON.stringify(e),`error`)}finally{t&&(l(e=>({...e,isWaitingForDayToCompleteIncrementing:!1})),o&&v.current.prependPendingPeerMessage(o))}})(),()=>{t=!1}},[s.dayCount,s.hasBooted,e.localforage,l]),(0,import_react$24.useEffect)(()=>()=>{u.current.heartbeatTimeoutId&&clearTimeout(u.current.heartbeatTimeoutId),u.current.peerRoom?.leave()},[]),(0,import_react$24.useEffect)(()=>{!s.hasBooted||!y||(updateAchievements(s,y)!==s&&l(e=>{let t=updateAchievements(e,y);return t===e?e:t}),s.stageFocus===stageFocusType.COW_PEN&&y.stageFocus!==stageFocusType.COW_PEN&&l(e=>({...e,selectedCowId:``})),s.stageFocus!==y.stageFocus&&s.isMenuOpen&&l(e=>{let t=!doesMenuObstructStage();return e.isMenuOpen===t?e:{...e,isMenuOpen:t}}),s.money<y.money&&l(e=>({...e,todaysLosses:moneyTotal(e.todaysLosses,s.money-y.money)})),J(y,s),ie(y))},[s,y,J,ie]);let Y=s.redirect;return{gameState:{...s,blockInput:F,features:t??{},fieldToolInventory:x,mulchInventory:E,isChatAvailable:j,levelEntitlements:D,plantableCropInventory:C,plantableTreeInventory:T,playerInventory:S,playerInventoryQuantities:getInventoryQuantities(s.inventory),shopInventory:O,viewList:M,viewTitle:b},handlers:ae,isInputBlocked:F,keyMap:oe,keyHandlers:se,redirect:Y,state:s,viewList:M,focusPreviousView:B,focusNextView:z,isChatAvailable:j}},emptyObject=Object.freeze({}),Farmhand=e=>{let{gameState:t,handlers:n,isInputBlocked:a,keyMap:o,keyHandlers:s,redirect:l,state:u,viewList:d,focusPreviousView:f,focusNextView:m,isChatAvailable:h}=useFarmhand(e);return(0,import_jsx_runtime.jsx)(import_index_es.GlobalHotKeys,{allowChanges:!0,keyMap:a?emptyObject:o,handlers:a?emptyObject:s,children:(0,import_jsx_runtime.jsxs)(ThemeProvider,{theme:mui_theme_default,children:[(0,import_jsx_runtime.jsx)(CssBaseline,{}),(0,import_jsx_runtime.jsxs)(SnackbarProvider,{anchorOrigin:{vertical:`top`,horizontal:`right`},classes:{containerRoot:`Farmhand notification-container`},content:snackbarProviderContentCallback,maxSnack:4,children:[l&&(0,import_jsx_runtime.jsx)(Redirect,{to:l}),(0,import_jsx_runtime.jsxs)(FarmhandContext.Provider,{value:{gameState:t,handlers:n},children:[(0,import_jsx_runtime.jsxs)(Div,{className:(0,import_classnames.default)(`Farmhand farmhand-root fill`,u.isMenuOpen?`menu-open`:`menu-closed`,{"use-alternate-end-day-button-position":u.useAlternateEndDayButtonPosition,"block-input":a,"has-booted":u.hasBooted}),sx:e=>({...fillSx,display:`flex`,paddingTop:`3.5em`,position:`fixed`,touchAction:`manipulation`,opacity:+!!u.hasBooted,transform:u.hasBooted?`scale(1)`:`scale(0)`,transition:`opacity, transform 200ms`,...a&&{"& button, & input":{filter:`contrast(65%)`,pointerEvents:`none`}},[`@media (min-width: ${breakpoints.smallPhone}px) and (orientation: landscape)`]:{paddingTop:`3em`},[`@media (min-width: ${breakpoints.sm}px)`]:{paddingTop:`4em`},"& .sidebar-wrapper":{display:`flex`},"& .bottom-controls":{alignItems:`center`,bottom:`1em`,display:`flex`,flexFlow:`column`,justifyContent:`center`,left:`50%`,opacity:.85,position:`fixed`,transition:e.transitions.create(`left`,{duration:e.transitions.duration.enteringScreen,easing:e.transitions.easing.easeOut}),width:0,zIndex:20,[`@media (max-width: ${breakpoints.mediumPhone}px)`]:{bottom:`0.5em`},"& .MuiMobileStepper-root":{background:`none`},"& .fab-buttons":{display:`flex`,flexFlow:`row`,"& button":{margin:`0.5em`,position:`relative`,[`@media (max-width: ${breakpoints.mediumPhone}px)`]:{margin:`0.25em 0.5em`},"@media (max-width: 320px)":{margin:`0.25em 0.1em`}}},...u.isMenuOpen&&{"@media (orientation: landscape)":{left:`calc(50vw + ${layout.sidebarWidth} / 2)`}}},"& .end-day":{position:`fixed`,top:`5em`,right:`1em`,[`@media (min-width: ${breakpoints.sm}px)`]:{right:`1.25em`,top:`5.5em`},...u.useAlternateEndDayButtonPosition&&{right:`auto`,left:`1em`}},"& .menu-button":{transition:e.transitions.create(`transform`,{duration:e.transitions.duration.shorter}),transform:u.isMenuOpen?`rotate(-90deg)`:`rotate(0deg)`}}),children:[(0,import_jsx_runtime.jsx)(UpdateNotifier,{}),(0,import_jsx_runtime.jsx)(Consumer$29,{}),(0,import_jsx_runtime.jsxs)(Drawer,{className:`sidebar-wrapper`,open:t.isMenuOpen,variant:`persistent`,role:`complementary`,PaperProps:{className:`sidebar`,sx:{backgroundImage:`url(${blue_stripe_bg_default})`,boxSizing:`border-box`,overflow:`auto`,padding:`1em 1em 0`,position:`relative`,width:layout.sidebarWidth,zIndex:20,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{width:layout.narrowSidebarWidth},"& .button-array":{display:`flex`,flexWrap:`wrap`,margin:`0.5em 0`}}},children:[(0,import_jsx_runtime.jsx)(Consumer$14,{}),(0,import_jsx_runtime.jsx)(Consumer$24,{}),(0,import_jsx_runtime.jsx)(`div`,{className:`spacer`})]}),(0,import_jsx_runtime.jsx)(Consumer,{}),(0,import_jsx_runtime.jsxs)(`div`,{className:`bottom-controls`,children:[(0,import_jsx_runtime.jsx)(MobileStepper,{variant:`dots`,steps:d.length,position:`static`,activeStep:d.indexOf(u.stageFocus),className:``,backButton:null,nextButton:null}),(0,import_jsx_runtime.jsxs)(`div`,{className:`fab-buttons buttons`,children:[(0,import_jsx_runtime.jsx)(Fab,{"aria-label":`Previous view`,color:`primary`,onClick:f,children:(0,import_jsx_runtime.jsx)(import_KeyboardArrowLeft.default,{})}),(0,import_jsx_runtime.jsx)(Fab,{className:(0,import_classnames.default)(`menu-button`,{"is-open":u.isMenuOpen}),color:`primary`,"aria-label":`Open drawer`,onClick:()=>n.handleMenuToggle(),children:(0,import_jsx_runtime.jsx)(import_Menu.default,{})}),(0,import_jsx_runtime.jsx)(Fab,{"aria-label":`Next view`,color:`primary`,onClick:m,children:(0,import_jsx_runtime.jsx)(import_KeyboardArrowRight.default,{})})]})]}),(0,import_jsx_runtime.jsx)(Tooltip,{placement:`left`,title:(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(`p`,{children:`End the day to save your progress and advance the game.`}),(0,import_jsx_runtime.jsx)(`p`,{children:`(shift + c)`})]}),children:(0,import_jsx_runtime.jsx)(Fab,{"aria-label":`End the day to save your progress and advance the game.`,className:`end-day`,color:`error`,onClick:n.handleClickEndDayButton,sx:{zIndex:Z_INDEX.END_DAY_BUTTON},children:(0,import_jsx_runtime.jsx)(import_Hotel.default,{})})})]}),h?(0,import_jsx_runtime.jsx)(ChatRoom,{}):null,(0,import_jsx_runtime.jsx)(NotificationSystem_default,{})]})]})]})})};Farmhand.defaultProps={features:{},localforage:import_localforage.default.createInstance({name:`farmhand`,description:`Persisted game data for Farmhand`}),match:{path:``,params:{}}},Farmhand.propTypes={features:import_prop_types$1.object,history:import_prop_types$1.object,location:import_prop_types$1.object,match:import_prop_types$1.object.isRequired};var FarmhandRoute=e=>(0,import_jsx_runtime.jsx)(Farmhand,{...e,features});import_react_dom.render((0,import_jsx_runtime.jsx)(HashRouter,{hashType:`noslash`,children:(0,import_jsx_runtime.jsx)(Route,{path:[`/online/:room`,`/online`,`/`],component:FarmhandRoute})}),document.getElementById(`root`));
844
- //# sourceMappingURL=index-DgErVmlw.js.map
843
+ Kegs that contain wine compound in value at a rate of ${WINE_INTEREST_RATE}% for up to ${integerString(100)} days and never spoil.`})})})})})]})};CellarInventoryTabPanel.propTypes={currentTab:import_prop_types$1.number.isRequired,index:import_prop_types$1.number.isRequired};function getCropsAvailableToFerment(e){return Object.keys(e.items).reduce((e,t)=>{let n=getFinalCropItemFromSeedItem(itemsMap[t]);return n&&Number.isFinite(n.daysToFerment)&&e.push(n),e},[])}var FermentationRecipe=({item:e})=>{let{gameState:{inventory:t,cellarInventory:n,purchasedCellar:a},handlers:{handleMakeFermentationRecipeClick:o}}=(0,import_react$24.useContext)(FarmhandContext),[s,l]=(0,import_react$24.useState)(1),u=getInventoryQuantityMap(t),d=FERMENTED_CROP_NAME`${e}`,{space:f}=PURCHASEABLE_CELLARS.get(a)??{space:0};(0,import_react$24.useEffect)(()=>{l(Math.min(getMaxYieldOfFermentationRecipe(e,t,n,f),Math.max(1,s)))},[n,f,t,e,s]);let m=s>0&&cellarService.doesCellarSpaceRemain(n,a),h=()=>{m&&o(e,s)},v=getMaxYieldOfFermentationRecipe(e,t,n,f),y=cellarService.getItemInstancesInCellar(n,e);return(0,import_jsx_runtime.jsxs)(Card,{className:`FermentationRecipe`,sx:{position:`relative`,"& .MuiCardHeader-avatar img":{width:`3em`,filter:`drop-shadow(1px 1px 2px rgba(255, 0, 131, 0.63))`}},children:[(0,import_jsx_runtime.jsx)(CardHeader,{title:d,avatar:(0,import_jsx_runtime.jsx)(`img`,{src:items[e.id],alt:d}),subheader:(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(`p`,{children:[`Days to ferment: `,e.daysToFerment]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`Units of `,itemsMap[e.id].name,` in inventory:`,` `,integerString(u[e.id]??0)]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`Units of`,` `,itemsMap.salt.name,` `,`required: `,getSaltRequirementsForFermentationRecipe(e),` `,`(available:`,` `,(0,import_jsx_runtime.jsx)(AnimatedNumber,{number:u[itemsMap.salt.id]??0,formatter:integerString}),`)`]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`In cellar: `,integerString(y??0)]})]})}),(0,import_jsx_runtime.jsxs)(CardActions,{children:[(0,import_jsx_runtime.jsx)(Button,{className:`make-recipe`,color:`primary`,disabled:!m||!s,onClick:h,variant:`contained`,children:`Make`}),(0,import_jsx_runtime.jsx)(QuantityInput,{handleSubmit:h,handleUpdateNumber:l,maxQuantity:v,setQuantity:l,value:s})]})]})};FermentationRecipe.propTypes={item:import_prop_types$1.object.isRequired};var totalFermentableItems=Object.keys(fermentableItemsMap).length,FermentationRecipeList=()=>{let{gameState:{levelEntitlements:e}}=(0,import_react$24.useContext)(FarmhandContext),t=getCropsAvailableToFerment(e),[n,a]=(0,import_react$24.useState)(``),o=n.toLowerCase().split(` `).filter(e=>e.length>0),s=t.filter(e=>{let t=e,n=`${FERMENTED_CROP_NAME}${t.name}`.toLowerCase();return o.every(e=>n.includes(e)||t.name.toLowerCase().includes(e))}),l=s.length;return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(`h3`,{children:[`Available Fermentation Recipes (`,l,` /`,` `,totalFermentableItems,`)`]}),t.length>0&&(0,import_jsx_runtime.jsx)(SearchBar,{placeholder:`Search fermentation recipes...`,onSearch:a}),s.length>0&&(0,import_jsx_runtime.jsx)(`ul`,{className:`card-list`,children:s.map(e=>(0,import_jsx_runtime.jsx)(`li`,{children:(0,import_jsx_runtime.jsx)(FermentationRecipe,{item:e})},e.id))})]})};FermentationRecipeList.propTypes={};var FermentationTabPanel=({index:e,currentTab:t})=>(0,import_jsx_runtime.jsxs)(TabPanel,{value:t,index:e,children:[(0,import_jsx_runtime.jsx)(FermentationRecipeList,{}),(0,import_jsx_runtime.jsx)(Divider,{}),(0,import_jsx_runtime.jsx)(`ul`,{className:`card-list`,children:(0,import_jsx_runtime.jsx)(`li`,{children:(0,import_jsx_runtime.jsx)(Card,{children:(0,import_jsx_runtime.jsx)(CardContent,{children:(0,import_jsx_runtime.jsx)(import_react_markdown.default,{linkTarget:`_blank`,className:`markdown`,source:`Some items can be fermented and become much more valuable over time.`})})})})})]});FermentationTabPanel.propTypes={currentTab:import_prop_types$1.number.isRequired,index:import_prop_types$1.number.isRequired};var getGrapesSold=e=>Object.entries(e).reduce((e,[t,n])=>{let a=itemsMap[t];return(n||0)>0&&isGrape(a)&&e.push(a),e},[]);function getWineVarietiesAvailableToMake(e){return getGrapesSold(e).map(({variety:e})=>e)}var WineRecipe=({wineVariety:e})=>{let{gameState:{cellarInventory:t,inventory:n,purchasedCellar:a},handlers:{handleMakeWineClick:o}}=(0,import_react$24.useContext)(FarmhandContext),[s,l]=(0,import_react$24.useState)(1),u=grapeVarietyNameMap[e],d=grapeVarietyToGrapeItemMap[e],{space:f}=PURCHASEABLE_CELLARS.get(a)??{space:0},m=getInventoryQuantityMap(n);if((0,import_react$24.useEffect)(()=>{d&&l(Math.min(wineService.getMaxWineYield({grape:d,inventory:n,cellarInventory:t,cellarSize:f}),Math.max(1,s)))},[t,f,d,n,s,e]),!d)return null;let h=itemsMap[d.wineId];if(!h)return null;let v=m[d.id]??0,y=m[yeast.id]??0,b=s>0&&v>=50&&cellarService.doesCellarSpaceRemain(t,a),x=!b||!s,S=cellarService.getItemInstancesInCellar(t,h),C=wineService.getMaxWineYield({grape:d,inventory:n,cellarInventory:t,cellarSize:f}),T=()=>{b&&o(d,s)};return(0,import_jsx_runtime.jsxs)(Card,{className:`WineRecipe`,sx:{position:`relative`},children:[(0,import_jsx_runtime.jsx)(CardHeader,{title:u,avatar:(0,import_jsx_runtime.jsx)(`img`,{src:wines[e],alt:u}),subheader:(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(`p`,{children:[`Days to mature:`,` `,integerString(wineService.getDaysToMature(e))]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`Units of `,d.name,` required:`,` `,integerString(50),` (available:`,` `,integerString(v),`)`]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`Units of `,yeast.name,` required:`,` `,integerString(getYeastRequiredForWine(e)*s),` `,`(available: `,integerString(y),`)`]}),(0,import_jsx_runtime.jsxs)(`p`,{children:[`In cellar: `,integerString(S??0)]})]})}),(0,import_jsx_runtime.jsxs)(CardActions,{children:[(0,import_jsx_runtime.jsx)(Button,{color:`primary`,variant:`contained`,disabled:x,onClick:T,children:`Make`}),(0,import_jsx_runtime.jsx)(QuantityInput,{handleSubmit:T,handleUpdateNumber:l,maxQuantity:C,setQuantity:l,value:s})]})]})};WineRecipe.propTypes={wineVariety:(0,import_prop_types$1.oneOf)(Object.keys(grapeVariety))};var totalGrapeVarieties=Object.keys(grapeVariety).length,WineRecipeList=()=>{let{gameState:{itemsSold:e}}=(0,import_react$24.useContext)(FarmhandContext),t=getWineVarietiesAvailableToMake(e),[n,a]=(0,import_react$24.useState)(``),o=t.filter(e=>e.toLowerCase().includes(n.toLowerCase())),s=o.length;return(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsxs)(`h3`,{children:[`Available Wine Recipes (`,s,` /`,` `,totalGrapeVarieties,`)`]}),t.length>0&&(0,import_jsx_runtime.jsx)(SearchBar,{placeholder:`Search wine varieties...`,onSearch:a}),(0,import_jsx_runtime.jsx)(`ul`,{className:`card-list`,children:o.map(e=>(0,import_jsx_runtime.jsx)(`li`,{children:(0,import_jsx_runtime.jsx)(WineRecipe,{wineVariety:e})},e))})]})},WinemakingTabPanel=({index:e,currentTab:t})=>(0,import_jsx_runtime.jsxs)(TabPanel,{value:t,index:e,children:[(0,import_jsx_runtime.jsx)(WineRecipeList,{}),(0,import_jsx_runtime.jsx)(Divider,{}),(0,import_jsx_runtime.jsx)(`ul`,{className:`card-list`,children:(0,import_jsx_runtime.jsx)(`li`,{children:(0,import_jsx_runtime.jsx)(Card,{children:(0,import_jsx_runtime.jsx)(CardContent,{children:(0,import_jsx_runtime.jsx)(import_react_markdown.default,{linkTarget:`_blank`,className:`markdown`,source:`Grapes can be made into wine. Wine becomes very valuable in time and never spoils.`})})})})})]});WinemakingTabPanel.propTypes={currentTab:import_prop_types$1.number.isRequired,index:import_prop_types$1.number.isRequired};var CELLAR_TAB_LABELS=[`Cellar Inventory`,`Fermentation`,`Winemaking`],Cellar=()=>{let[e,t]=useTabQueryParam(CELLAR_TAB_LABELS);return(0,import_jsx_runtime.jsxs)(Div,{className:`Cellar`,sx:centerTabsSx,children:[(0,import_jsx_runtime.jsx)(Tabs,{value:e,onChange:(e,n)=>t(n),"aria-label":`Cellar tabs`,children:CELLAR_TAB_LABELS.map((e,t)=>(0,import_jsx_runtime.jsx)(Tab,{label:e,...a11yProps(t)},e))}),(0,import_jsx_runtime.jsx)(CellarInventoryTabPanel,{index:0,currentTab:e}),(0,import_jsx_runtime.jsx)(FermentationTabPanel,{index:1,currentTab:e}),(0,import_jsx_runtime.jsx)(WinemakingTabPanel,{index:2,currentTab:e})]})};Cellar.propTypes={};var brown_dot_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAk0lEQVRoge2UoRGAMBAECZYS8HRDw5QSnxKig88gfgaxl59befPi12wZzz22idr6dp3HPEvu5UtgJXb6gb9YgCaPQG3980B9d4VoLECTU0ClMJHdFaKxAE0eAcXCRHZXiMYCNDkFVAoT2V0hGgvQ5BFQLExkd4VoLECTU0ClMJHdFaKxAE0eAcXCRHZXiMYCNMsLvBG5ypkvoIETAAAAAElFTkSuQmCC`,floorboard_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAAAwCAYAAAD+WvNWAAAAAXNSR0IArs4c6QAAAUxJREFUeJzt3TFuwkAQheEFjSUQoo1EKJIid8oFuFMuwEVyjYgCCrBEayEiuQgtASNBXvDMmv8rt9nR7pPG24x7X/PZT0LryqpKk/HYuwxZ37sA5I0AQWJlVXnX8LC6cPY2rL9/LeyLQTpdAy6hhUFCgCAhQJDYvhicLTatAU3OPqIRW7RHDi0MEgIECQGCpPEjGrFFujObTl68a8CRdblKOd0JLQwSAgQJAYKEAEFCgCCxdbnyrgEncroTexoVrW643dWp7T1xP7QwSAgQJAQIEgIECQGCxLa7uvVNPfbEfdjb67N3DY0Wy02KWlvu/vNsaWGQECBICBAkBAiS3ufHOwOm8GdhX2FeeP3dhhYGCQGChABBQoAgIUCQ2GK58a4hHM7kelfPB4o2lwYx0MIgIUCQECBICBAkNw2YijTYCDFYF345lKOu/O7pAEBLR2y+MLyqAAAAAElFTkSuQmCC`,jack_o_lantern_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAeCAYAAABNChwpAAAA4UlEQVRYR+2VMQ6DMAxFYe4R2LsxdOopuHBv0KkDW/ceoTOVK/0qhICd8K0wNBNyIv3nH5PfTrdhaiqu9vAAz9f768+5O7n4tOmAt7h0tAAIRde+mVbMACCoCTCv4wcQio+Pe9NfrjOOuMaCWACIEBYgUjU3AM1+7LsCVL0CdBjaLrV4JugOiEjVvwCdhxDoMlWzzop27vhZoHWwd//vgLsDWqK6AmjiyTjeO1S5cU51oOQhowGUxjkdIDfO6QDWGcIz7wKQE+cuAOKCNc5pAKVxTgWIISxxTgewDiHOVQf4AHx92LXFZzetAAAAAElFTkSuQmCC`,winter_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAAXNSR0IArs4c6QAAAQdJREFUeJztmcERgyAUBZ9pIjVRUa5UldT0K/BITnhKZpgYXYG3Bei6oyCwxFrKPb9EEznpTI/ISZK06PEsp931YkROcweQpBstQNMcoH4zo9EUoD78iBGaAtTR+Qqzxb/xIEgL0DgALUDTTYCjZiAPgrQAjQPQAjQOcNSFe1k3eBagBWgcgBagcYBeRuujmP4NWGIt2zQ44pbXN7aDkaucDFH4E/Cf4OQ4AC1A4wC0AI0D0AI0DkAL0DgALUDjALQAze4AkVM3hyCfmP4N8H4ALUDjALQAjQPQAjQOQAvQOAAtQDNEgD3rkSECSL+fbHstQAvQOAAtQOMAtACNA9ACFWJjNXLSG2nxQbKUEorlAAAAAElFTkSuQmCC`,yellow_dot_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAx0lEQVRoQ+2WwQ3AIAwDYRVW6dx9dg1GKf1WlEcTAUks94maBHzGIt/taqn7aj1TKUe/nDyu59EBPjt3vMADWMMhATcEPCbMnySkhdxYyHoj2vm0kFa5WXVDApESiRaaZQVtHxLQKjerDodApOR5v5FwCMzy5O4+JLBb8X4eJoFIiYRJwNrXkvkkIFFrxb84BCIlD99CK7ys7YlzB7QKWNdhEoiUSJgErH0tmU8CErVW/ItDIFLy8C20wsvanjh3QKuAdV14Ag9MlnJUFzG78wAAAABJRU5ErkJgggAA`,lavender_dot_bg_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAyUlEQVRoQ+2WwRGAIAwEQw0WYf/l+LQAPzaAXwd5mAyQ5OZ8MiaB2+OGcp+1SvNdh8i2t6siEddL7wDfrcdd4QG82ZBAGAIRE+ZPEtJCYSzkvRHrfFrIqtyoui6BTIlEC42ygrUPCViVG1WHQyBT8rzfSDgERnlydR8SWK14Ow+TQKZEwiTg7WvNfBLQqDXjXxwCmZKHb6EZXrb2xLkDVgW86zAJZEokTALevtbMJwGNWjP+xSGQKXn4FprhZWtPnDtgVcC7Lj2BB3XCNohEy6k2AAAAAElFTkSuQmCC`,grass_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAABp0lEQVRoQ92Y63HDMAyD5RE6QMfLCp2qi2SODtARkmt7yTmuJIAEeHbiv+LrIyjZ8vJxbpe28/P91drbe66IZQ2gBMql//Ni8o5sZAAm+RqOtd/aUQCzLo4CsAXdYrP2rN2DAhkAZXQcvjSAI1lFjBIAVn4H0K4ADtASALaz7EkzO8V+ARydYItWD4ptrVMAJ5gz1roJ0xFyJnXGogGiclcVOasjvYl7xT4VgGPTOmKkFXAkd8S4AyD50fqoGNZvZjdbex0Ah5xsDFYVJp60B7KFZP16d4pdAJjOsu8gCaCXRO1uFE6+E28TPj1AtIOqinCEqjuqfpIcEiCiIgRAwaoVmt3GftZKAdxwvXjL6bNdsv8lj6BOKYB6wqAGWUaISYLmOBrDcqVUkiLfyN75t4lZZ9YOFauO2SEBItDyMcp+NTJFZVSlATLBoz6Za2UpANN11mb0zUQDsIlYu6g6o81uAcgUk/HpQewG4Hq50b9V2NHI2ClqHAIgA33zgSOkdMcxJij/6wMo8lb5rlWBCkSLQJKjeIy/BIASoHUHgHQfUAtEANH1K9JWO4Tg58LYAAAAAElFTkSuQmCC`,forest_floor_default=`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAAAXNSR0IArs4c6QAAAWRJREFUaIHlWTkSgzAMNH6AO16V/78inT+QVDREYB2rg8mWjBHs6rBkb+M1Pu2Euc823uP8uCQ69RD583OfMFsUSAJIcMXQEjUTQCms9bqZQHauqAl4xzYXagIZylOi/RCIUlbzHUq0HwJRyqK+415GD3h5NoyAl2dVBO7URCjNsXGs2ahe6ElwD6GVmlaPpfdC1twISWLPvaV7u7g57y0d7WK02it78BBCq72yF7aRecF9oJGGlHQ9SUBiBJ1D0vXuQ/0K0I0sY8qCbmR3xiQNViTYScxRKmPMLFlGJZ6En0pEtx7wUwmvMLoShl2Fss+BroRhVyGOsqWrEAfWMqzBf55KVEIZApD7gcxKA7kfoIxkl88Velv8pFaZKOK9OVWIqMbOlMQaldFtuYmARmVUW36QZBOolswHyWUSn1+oBrck1kDj5TI7cVMKyb6lfMxQb5m0rtZIiEFO5tAfk8wJ0jD6AhfOowgv6la0AAAAAElFTkSuQmCC`,Stage=({dayCount:e,field:t,isMenuOpen:n=!0,stageFocus:a,useAlternateEndDayButtonPosition:o=!1,viewTitle:s})=>{let l=(0,import_react$24.useRef)(null);(0,import_react$24.useEffect)(()=>{if(l.current){let e=l.current,{style:t}=e;e.scrollTop=0,t.overflow=`hidden`,setTimeout(()=>t.overflow=``,0)}},[a]);let u={[stageFocusType.HOME]:isOctober()?jack_o_lantern_bg_default:isDecember()?winter_bg_default:brown_dot_bg_default,[stageFocusType.SHOP]:yellow_dot_bg_default,[stageFocusType.WORKSHOP]:lavender_dot_bg_default,[stageFocusType.CELLAR]:floorboard_default,[stageFocusType.FIELD]:grass_default,[stageFocusType.COW_PEN]:grass_default,[stageFocusType.FOREST]:forest_floor_default}[a],d=[stageFocusType.FIELD,stageFocusType.COW_PEN,stageFocusType.FOREST].includes(a);return(0,import_jsx_runtime.jsxs)(Div,{className:(0,import_classnames.default)(`Stage`,{"is-october":isOctober(),"is-december":isDecember()}),"data-stage-focus":a,role:`main`,ref:l,sx:t=>({flex:2,imageRendering:`pixelated`,marginLeft:0,overflow:`auto`,padding:`1.5em 1.5em 0`,position:`relative`,zIndex:0,transition:t.transitions.create(`margin-left`,{duration:t.transitions.duration.enteringScreen,easing:t.transitions.easing.easeOut}),"& .stage-background":{backgroundSize:`96px`,bottom:0,left:0,pointerEvents:`none`,position:`fixed`,right:0,top:0,zIndex:-1,...u?{backgroundImage:`url(${u})`}:{},...d?{backgroundSize:`30%`,filter:seasonFilterMap[getCurrentSeason(e)],[`@media (min-width: ${breakpoints.md}px)`]:{backgroundSize:`10%`}}:{},...a===stageFocusType.CELLAR?{backgroundSize:`288px 96px`}:{}},"& h3":{textAlign:`center`},"& h2":{fontSize:`1.2em`},"& .view-title":{fontSize:`2.5em`,marginBottom:`0.6em`,textAlign:`center`,[`@media (min-width: ${breakpoints.largePhone}px)`]:{display:`none`}},"& section":{padding:`0.5em 0`,[`@media (max-width: ${breakpoints.sm}px)`]:{fontSize:`1em`}},...o?{paddingTop:`4em`,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{paddingTop:`4.5em`}}:{},...n?{transitionProperty:`padding, margin-left`,[`@media (max-width: ${breakpoints.sm}px)`]:{padding:0},"& > *":{opacity:1,transition:t.transitions.create(`opacity`,{duration:t.transitions.duration.enteringScreen,easing:t.transitions.easing.easeOut}),[`@media (max-width: ${breakpoints.sm}px)`]:{opacity:0}}}:{marginLeft:`-${layout.sidebarWidth}`,transition:t.transitions.create(`margin-left`,{duration:t.transitions.duration.leavingScreen,easing:t.transitions.easing.sharp}),[`@media (max-width: ${breakpoints.smallPhone}px)`]:{marginLeft:`-${layout.narrowSidebarWidth}px`}}}),children:[(0,import_jsx_runtime.jsx)(`div`,{className:`stage-background`}),(0,import_jsx_runtime.jsx)(`h2`,{className:`view-title`,children:s}),a===stageFocusType.HOME&&(0,import_jsx_runtime.jsx)(Consumer$7,{}),a===stageFocusType.FIELD&&(0,import_jsx_runtime.jsx)(Consumer$10,{columns:t[0].length,rows:t.length}),a===stageFocusType.FOREST&&(0,import_jsx_runtime.jsx)(Forest,{}),a===stageFocusType.SHOP&&(0,import_jsx_runtime.jsx)(Consumer$4,{}),a===stageFocusType.COW_PEN&&(0,import_jsx_runtime.jsx)(Consumer$6,{}),a===stageFocusType.WORKSHOP&&(0,import_jsx_runtime.jsx)(Consumer$1,{}),a===stageFocusType.CELLAR&&(0,import_jsx_runtime.jsx)(Cellar,{}),(0,import_jsx_runtime.jsx)(`div`,{className:`spacer`})]})};Stage.propTypes={dayCount:import_prop_types$1.number.isRequired,field:(0,import_prop_types$1.arrayOf)(import_prop_types$1.array).isRequired,isMenuOpen:import_prop_types$1.bool,stageFocus:import_prop_types$1.string.isRequired,useAlternateEndDayButtonPosition:import_prop_types$1.bool,viewTitle:import_prop_types$1.string.isRequired};function Consumer(e){return(0,import_jsx_runtime.jsx)(FarmhandContext.Consumer,{children:({gameState:t,handlers:n})=>(0,import_jsx_runtime.jsx)(Stage,{...t,...n,...e})})}var scriptRel=`modulepreload`,assetsURL=function(e,t){return new URL(e,t).href},seen={},__vitePreload=function(e,t,n){let a=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),o=document.querySelector(`meta[property=csp-nonce]`),s=o?.nonce||o?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function u(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}a=l(t.map(t=>{if(t=assetsURL(t,n),t=u(t),t in seen)return;seen[t]=!0;let a=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let o=e[n];if(o.href===t&&(!a||o.rel===`stylesheet`))return}let o=document.createElement(`link`);if(o.rel=a?`stylesheet`:scriptRel,a||(o.as=`script`),o.crossOrigin=``,o.href=t,s&&o.setAttribute(`nonce`,s),document.head.appendChild(o),a)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function o(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return a.then(t=>{for(let e of t||[])e.status===`rejected`&&o(e.reason);return e().catch(o)})},autoUpdateMode=`false`,selfDestroying=`false`,auto=autoUpdateMode===`true`,autoDestroy=selfDestroying===`true`;function registerSW(e={}){let{immediate:t=!1,onNeedReload:n,onNeedRefresh:a,onOfflineReady:o,onRegistered:s,onRegisteredSW:l,onRegisterError:u}=e,d,f,m,h=async(e=!0)=>{await f,auto||m?.()};async function v(){if(`serviceWorker`in navigator){if(d=await __vitePreload(async()=>{let{Workbox:e}=await import(`./workbox-window.prod.es5-Bd17z0YL.js`);return{Workbox:e}},[],import.meta.url).then(({Workbox:e})=>new e(`./service-worker.js`,{scope:`./`,type:`classic`})).catch(e=>{u?.(e)}),!d)return;if(m=()=>{d?.messageSkipWaiting()},!autoDestroy)if(auto)d.addEventListener(`activated`,e=>{(e.isUpdate||e.isExternal)&&(n?n():window.location.reload())}),d.addEventListener(`installed`,e=>{e.isUpdate||o?.()});else{let e=!1,t=()=>{e=!0,d?.addEventListener(`controlling`,e=>{e.isUpdate&&(n?n():window.location.reload())}),a?.()};d.addEventListener(`installed`,n=>{n.isUpdate===void 0?n.isExternal===void 0?!e&&o?.():n.isExternal?t():!e&&o?.():n.isUpdate||o?.()}),d.addEventListener(`waiting`,t)}d.register({immediate:t}).then(e=>{l?l(`./service-worker.js`,e):s?.(e)}).catch(e=>{u?.(e)})}}return f=v(),h}function useRegisterSW(e={}){let{immediate:t=!0,onNeedReload:n,onNeedRefresh:a,onOfflineReady:o,onRegistered:s,onRegisteredSW:l,onRegisterError:u}=e,[d,f]=(0,import_react$24.useState)(!1),[m,h]=(0,import_react$24.useState)(!1),[v]=(0,import_react$24.useState)(()=>registerSW({immediate:t,onNeedReload:n,onOfflineReady(){h(!0),o?.()},onNeedRefresh(){f(!0),a?.()},onRegistered:s,onRegisteredSW:l,onRegisterError:u}));return{needRefresh:[d,f],offlineReady:[m,h],updateServiceWorker:v}}var UpdateNotifier=()=>{let{handlers:{handleGameUpdateAvailable:e}}=(0,import_react$24.useContext)(FarmhandContext),{needRefresh:[t],updateServiceWorker:n}=useRegisterSW();return(0,import_react$24.useEffect)(()=>{t&&(e(n),window.addEventListener(`beforeunload`,()=>{n(!0)}))},[t,e,n]),null},commonFetchConfig={mode:`cors`,cache:`no-cache`,credentials:`same-origin`,headers:{"Content-Type":`application/json`},redirect:`follow`,referrerPolicy:`no-referrer`};async function getData(e=``,t={}){let n=new URLSearchParams;return Object.keys(t).forEach(e=>n.append(encodeURIComponent(e),encodeURIComponent(t[e]))),(await fetch(`${e}?${n}`,{...commonFetchConfig,method:`GET`})).json()}async function postData(e=``,t={}){return(await fetch(e,{...commonFetchConfig,method:`POST`,body:JSON.stringify(t)})).json()}var createNewField=()=>Array(10).fill(void 0).map(()=>[,,,,,,].fill(null)),createNewForest=()=>[,].fill(void 0).map(()=>[,,,,].fill(null)),doesMenuObstructStage=()=>window.innerWidth<BREAKPOINTS.MD,getAvailableShopInventory=memoize(e=>inventory.filter(({id:t})=>!(unlockableItems.hasOwnProperty(t)&&!e.items.hasOwnProperty(t)))),getPeerMetadata=e=>{let t=PEER_METADATA_STATE_KEYS.reduce((t,n)=>(t[n]=e[n],t),{});return Object.assign(t,{cowOfferedForTrade:e.cowInventory.find(({id:t})=>t===e.cowIdOfferedForTrade)}),t},getViewList=({isForestUnlocked:e,purchasedCellar:t,purchasedCowPen:n,showHomeScreen:a})=>{let{CELLAR:o,COW_PEN:s,HOME:l,WORKSHOP:u,FOREST:d}=stageFocusType,f=[...STANDARD_VIEW_LIST];return a&&f.unshift(l),e&&f.push(d),n&&f.push(s),f.push(u),t&&f.push(o),f},getValidatedStageFocusFromHash=e=>{let t=getHashQueryParams().get(VIEW_QUERY_PARAM_NAME);if(!t)return;let n=getLevelEntitlements(levelAchieved(e.experience)).stageFocusType[stageFocusType.FOREST];return getViewList({isForestUnlocked:n,purchasedCellar:e.purchasedCellar,purchasedCowPen:e.purchasedCowPen,showHomeScreen:e.showHomeScreen}).find(e=>e===t)},sleep=e=>new Promise(t=>setTimeout(t,e)),{PLANT}=fieldMode,{MULCH}=itemType,FarmhandService=class{static computePlayerInventory=memoize((e,t)=>e.map(({quantity:e,id:n})=>({quantity:e,...itemsMap[n],value:getItemCurrentValue(itemsMap[n],t)})));static getFieldToolInventory=memoize(e=>e.filter(({id:e})=>{let t=itemsMap[e];return typeof t.enablesFieldMode==`string`&&t.enablesFieldMode!==PLANT&&t.type!==MULCH}).map(({id:e,quantity:t})=>({...itemsMap[e],quantity:t})));static getPlantableCropInventory=memoize(e=>e.filter(({id:e})=>itemsMap[e].isPlantableCrop).map(({id:e,quantity:t})=>({...itemsMap[e],quantity:t})));static getMulchInventory=memoize(e=>e.filter(({id:e})=>itemsMap[e]?.type===MULCH).map(({id:e,quantity:t})=>({...itemsMap[e],quantity:t})));static getPlantableTreeInventory=memoize(e=>e.filter(({id:e})=>itemsMap[e]?.isPlantableTree).map(({id:e,quantity:t})=>({...itemsMap[e],quantity:t})));static applyPriceEvents=(e,t,n)=>{let a={...e};return Object.keys(t).forEach(e=>{a[e]=.5}),Object.keys(n).forEach(e=>{a[e]=1.5}),a}},itemIds=Object.keys(itemsMap),getInventoryQuantities=e=>{let t={};for(let e of itemIds)t[e]=0;for(let{id:n,quantity:a}of e)t[n]=a;return t},useFarmhandNavigation=(e,t)=>({openDialogView:(0,import_react$24.useCallback)(t=>{e(e=>({...e,currentDialogView:t,isDialogViewOpen:!0}))},[e]),closeDialogView:(0,import_react$24.useCallback)(()=>{e(e=>({...e,isDialogViewOpen:!1}))},[e]),focusNextView:(0,import_react$24.useCallback)(()=>{document.activeElement?.getAttribute(`role`)!==`tab`&&e(e=>{let n=t.indexOf(e.stageFocus);return{...e,stageFocus:t[(n+1)%t.length]}})},[e,t]),focusPreviousView:(0,import_react$24.useCallback)(()=>{document.activeElement?.getAttribute(`role`)!==`tab`&&e(e=>{let n=t.indexOf(e.stageFocus),a=n===0?t.length-1:(n-1)%t.length;return{...e,stageFocus:t[a]}})},[e,t])}),{floor,random,sin}=Math,libName=`Trystero`,alloc=(e,t)=>Array(e).fill(void 0).map(t),charSet=`0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz`,genId=e=>alloc(e,()=>charSet[floor(random()*62)]??``).join(``),selfId=genId(20),all=Promise.all.bind(Promise),isBrowser=typeof window<`u`,{entries,fromEntries,keys,values}=Object,noOp=()=>{},candidateType=`candidate`,resetTimer=e=>(e!==null&&clearTimeout(e),null),mkErr=e=>Error(`${libName}: ${e}`),toErrorMessage=(e,t)=>e instanceof Error&&e.message?e.message:typeof e==`string`&&e?e:toJson(e??t),toError=(e,t)=>e instanceof Error?e:mkErr(toErrorMessage(e,t)),encoder=new TextEncoder,decoder=new TextDecoder,encodeBytes=e=>encoder.encode(e),decodeBytes=e=>decoder.decode(e),toHex=e=>e.reduce((e,t)=>e+t.toString(16).padStart(2,`0`),``),topicPath=(...e)=>e.join(`@`),shuffle=(e,t)=>{let n=[...e],a=()=>{let e=sin(t++)*1e4;return e-floor(e)},o=n.length;for(;o;){let e=floor(a()*o--),t=n[o];n[o]=n[e],n[e]=t}return n},getRelays=(e,t,n,a=!1)=>e.relayConfig?.urls||(a?shuffle(t,strToNum(e.appId)):t).slice(0,e.relayConfig?.redundancy??n),toJson=JSON.stringify,fromJson=e=>{try{return JSON.parse(e)}catch{throw mkErr(`failed to parse JSON: ${e}`)}},strToNum=(e,t=2**53-1)=>e.split(``).reduce((e,t)=>e+t.charCodeAt(0),0)%t,defaultRetryMs=3333,socketRetryPeriods={},reconnectionLockingPromise=null,resolver=null,pauseRelayReconnection=()=>{reconnectionLockingPromise||=new Promise(e=>{resolver=e}).finally(()=>{resolver=null,reconnectionLockingPromise=null})},resumeRelayReconnection=()=>{resolver?.()},makeSocket=(e,t)=>{let n={},a=()=>{let o=new WebSocket(e);o.onclose=()=>{if(reconnectionLockingPromise){reconnectionLockingPromise.then(a);return}socketRetryPeriods[e]??=defaultRetryMs,setTimeout(a,socketRetryPeriods[e]),socketRetryPeriods[e]*=2},o.onmessage=e=>t(String(e.data)),n.socket=o,n.url=o.url,n.ready=new Promise(t=>o.onopen=()=>{t(n),socketRetryPeriods[e]=defaultRetryMs}),n.send=e=>{o.readyState===1&&o.send(e)}};return a(),n},createRelayManager=e=>{let t={},n=new WeakMap,a=e=>{let t=n.get(e);if(!t)throw mkErr(`relay bookkeeping missing registration for relay client`);return t};return{register:(e,a)=>(t[e]=a,n.set(a,e),a),keyOf:a,scoped:()=>{let e={},t=t=>e[t]??={};return{forKey:t,forRelay:e=>t(a(e))}},getSockets:()=>fromEntries(entries(t).flatMap(([t,n])=>{let a=e(n);return a?[[t,a]]:[]}))}},watchOnline=()=>{if(isBrowser){let e=new AbortController;return addEventListener(`online`,resumeRelayReconnection,{signal:e.signal}),addEventListener(`offline`,pauseRelayReconnection,{signal:e.signal}),()=>e.abort()}return noOp},algo=`AES-GCM`,strToSha1={},pack=e=>btoa(String.fromCharCode.apply(null,Array.from(new Uint8Array(e)))),unpack=e=>{let t=atob(e);return new Uint8Array(t.length).map((e,n)=>t.charCodeAt(n)).buffer},hashWith=async(e,t)=>new Uint8Array(await crypto.subtle.digest(e,encodeBytes(t))),sha1=async e=>strToSha1[e]??=Array.from(await hashWith(`SHA-1`,e)).map(e=>e.toString(36)).join(``),genKey=async(e,t,n)=>crypto.subtle.importKey(`raw`,await crypto.subtle.digest({name:`SHA-256`},encodeBytes(`${e}:${t}:${n}`)),{name:algo},!1,[`encrypt`,`decrypt`]),deriveRoomNamespace=async(e,t)=>toHex(await hashWith(`SHA-256`,`${libName}:${e}:${t}`)),joinChar=`$`,ivJoinChar=`,`,encrypt=async(e,t)=>{let n=crypto.getRandomValues(new Uint8Array(16));return n.join(ivJoinChar)+joinChar+pack(await crypto.subtle.encrypt({name:algo,iv:n},await e,encodeBytes(t)))},decrypt=async(e,t)=>{let[n,a]=t.split(joinChar);return decodeBytes(await crypto.subtle.decrypt({name:algo,iv:new Uint8Array(n?.split(ivJoinChar).map(Number)??[])},await e,unpack(a??``)))},offerTtl=57333,offerLeaseTtlMs=18e4,poolSize=20,OfferPool=class{pool=[];pooled=new Set;leased=new Map;recycling=new Set;cleanupTimer=null;active=!1;constructor(e){this.makeOffer=e}get isActive(){return this.active}warmup(){this.pool=[],this.pooled.clear(),alloc(poolSize,this.makeOffer).forEach(e=>this.push(e)),this.active=!0,this.cleanupTimer=setInterval(()=>{this.pool=this.pool.filter(e=>e.isDead?(this.pooled.delete(e),!1):!0)},offerTtl)}push(e){e.isDead||this.pooled.has(e)||this.leased.has(e)||(this.pool.push(e),this.pooled.add(e))}shift(e){let t=[];for(;t.length<e&&this.pool.length>0;){let e=this.pool.shift();if(!e)break;this.pooled.delete(e),t.push(e)}return t}claimLeased(e){let t=this.leased.get(e);t&&(resetTimer(t),this.leased.delete(e))}recycle(e){if(!(e.isDead||this.recycling.has(e))){if(e.connection.remoteDescription){e.destroy();return}if(!this.active){e.destroy();return}this.recycling.add(e),e.setHandlers({connect:noOp,close:noOp,error:noOp}),e.getOffer(!0).then(t=>{if(!t||t.type!==`offer`||e.isDead||!this.active){e.destroy();return}this.push(e)}).catch(()=>e.destroy()).finally(()=>this.recycling.delete(e))}}reclaimLeased(e){let t=this.leased.get(e);t&&(resetTimer(t),this.leased.delete(e),this.recycle(e))}lease(e){this.claimLeased(e),this.leased.set(e,setTimeout(()=>{this.leased.delete(e),this.recycle(e)},offerLeaseTtlMs))}checkout(e,t,n){let a=this.shift(e),o=Math.max(0,e-a.length);o>0&&a.push(...alloc(o,this.makeOffer));let s=async(e,a=!1)=>{try{let a=await n(e);return t?(this.lease(e),{peer:e,offer:a,claim:()=>this.claimLeased(e),reclaim:()=>this.reclaimLeased(e)}):{peer:e,offer:a}}catch(t){if(this.claimLeased(e),this.pooled.delete(e),e.destroy(),!a)return s(this.makeOffer(),!0);throw t}};return all(a.map(e=>s(e)))}getOffers(e,t){return this.checkout(e,!0,t)}destroy(){this.active=!1,this.cleanupTimer&&=(clearInterval(this.cleanupTimer),null),this.pool.forEach(e=>e.destroy()),this.pool=[],this.pooled.clear(),this.leased.forEach((e,t)=>{resetTimer(e),t.destroy()}),this.leased.clear(),this.recycling.forEach(e=>e.destroy()),this.recycling.clear()}},overlapRoomPasswordErr=mkErr(`incorrect password for overlapping room`),createPasswordHandshake=(e,t,n)=>{let a=a=>hashWith(`SHA-256`,`${a}:${e}:${t}:${n}`).then(toHex),o=async(t,n,o)=>{if(!e)return;if(o){let e=genId(36);await t({__trystero_pw:`challenge`,c:e});let{data:o}=await n();if(!o||typeof o!=`object`||o.__trystero_pw!==`response`||typeof o.h!=`string`)throw overlapRoomPasswordErr;let s=await a(e);if(o.h!==s)throw overlapRoomPasswordErr;return}let{data:s}=await n();if(!s||typeof s!=`object`||s.__trystero_pw!==`challenge`||typeof s.c!=`string`)throw overlapRoomPasswordErr;await t({__trystero_pw:`response`,h:await a(s.c)})};return{run:o,compose:t=>e||t?async(e,n,a,s)=>{await o(n,a,s),await t?.(e,n,a,s)}:void 0}},iceTimeout=15e3,disconnectedCloseDelayMs=5e3,iceStateEvent=`icegatheringstatechange`,offerType=`offer`,answerType=`answer`,outOfRangePattern=/out of range/i,rewriteMdnsCandidatesToLoopback=e=>e.replace(/ (\S+\.local) (\d+) typ host/g,` 127.0.0.1 $2 typ host`),peer_default=(e,{trickleIce:t,rtcConfig:n,rtcPolyfill:a,turnConfig:o,_test_only_mdnsHostFallbackToLoopback:s})=>{let l=new(a??RTCPeerConnection)({iceServers:defaultIceServers.concat(o??[]),...n}),u={},d=[],f=[],m=t!==!1,h=[],v=[],y=!1,b=!1,x=null,S=null,C=!1,T=()=>S=resetTimer(S),E=()=>{C||(C=!0,T(),u.close?.())},D=e=>{u.signal?u.signal(e):d.push(e)},O=e=>{let t=u.signal;u.signal=n=>{t?.(n),e(n)},d.length>0&&d.splice(0).forEach(e=>u.signal?.(e))},k=e=>s?rewriteMdnsCandidatesToLoopback(e):e,j=e=>{if(!s||typeof e.candidate!=`string`)return e;let t=rewriteMdnsCandidatesToLoopback(e.candidate);return t===e.candidate?e:{...e,candidate:t}},M=e=>({type:e.localDescription?.type??offerType,sdp:k(e.localDescription?.sdp??``)}),N=()=>{let e=l.remoteDescription?.sdp;return e?e.match(/a=ice-ufrag:([^\s]+)/)?.[1]??null:null},F=()=>(l.remoteDescription?.sdp?.match(/^m=/gm)??[]).length,I=e=>{if(!l.remoteDescription)return!1;let t=F();if(typeof e.sdpMLineIndex==`number`&&t>0&&e.sdpMLineIndex>=t)return!1;let n=N();return!(n&&e.usernameFragment&&e.usernameFragment!==n)},L=async e=>{try{return await l.addIceCandidate(e),!0}catch(t){if(t instanceof Error&&outOfRangePattern.test(t.message)&&typeof e.sdpMLineIndex==`number`)return!1;throw t}},R=async()=>{if(!l.remoteDescription||h.length===0)return;let e=h.splice(0),t=[];for(let n of e){if(!I(n)){t.push(n);continue}await L(n)||t.push(n)}t.length>0&&h.push(...t)},z=async e=>{if(I(e)){await L(e)||h.push(e);return}h.push(e)},B=e=>{e.binaryType=`arraybuffer`,e.bufferedAmountLowThreshold=65535,e.onmessage=e=>{let t=e.data;u.data?u.data(t):f.push(t)},e.onopen=()=>u.connect?.(),e.onclose=E,e.onerror=({error:e})=>u.error?.(toError(e,`data channel error`))},V=async e=>{let t=null;try{await Promise.race([new Promise(t=>{let n=()=>{e.iceGatheringState===`complete`&&(e.removeEventListener(iceStateEvent,n),t())};e.addEventListener(iceStateEvent,n),n()}),new Promise(e=>{t=setTimeout(e,iceTimeout)})])}finally{resetTimer(t)}return M(e)},H=async()=>{let e=m?M(l):await V(l);return D(e),e};e?(x=l.createDataChannel(`data`),B(x)):l.ondatachannel=({channel:e})=>{x=e,B(e)};let U=async(e=!1)=>{if(l.connectionState!==`closed`)try{return y=!0,e&&(l.signalingState!==`stable`&&l.signalingState!==`closed`&&l.localDescription?.type===offerType&&await l.setLocalDescription({type:`rollback`}),typeof l.restartIce==`function`&&l.restartIce()),await l.setLocalDescription(e?await l.createOffer({iceRestart:!0}):void 0),await H()}catch(e){u.error?.(toError(e,`failed to create local offer`))}finally{y=!1}};l.onnegotiationneeded=async()=>U(!1),l.onicecandidate=({candidate:e})=>{if(!m||!e)return;let t=j(typeof e.toJSON==`function`?e.toJSON():{candidate:e.candidate,sdpMid:e.sdpMid,sdpMLineIndex:e.sdpMLineIndex,usernameFragment:e.usernameFragment});D({type:candidateType,sdp:JSON.stringify(t)})},l.onconnectionstatechange=()=>{if(l.connectionState===`connected`||l.connectionState===`connecting`){T();return}if(l.connectionState===`disconnected`){S||=setTimeout(()=>{S=null,l.connectionState===`disconnected`&&E()},disconnectedCloseDelayMs);return}(l.connectionState===`failed`||l.connectionState===`closed`)&&E()},l.ontrack=e=>{let t=e.streams[0];if(t){if(!u.track&&!u.stream){v.push({track:e.track,stream:t});return}u.track?.(e.track,t),u.stream?.(t)}},l.onremovestream=e=>u.stream?.(e.stream);let W=e?new Promise(e=>O(t=>{t.type===offerType&&e(t)})):Promise.resolve();return e&&queueMicrotask(()=>{!y&&l.signalingState===`stable`&&!l.localDescription&&l.connectionState!==`closed`&&l.onnegotiationneeded?.(new Event(`negotiationneeded`))}),{created:Date.now(),connection:l,get channel(){return x},get isDead(){return l.connectionState===`closed`},getOffer:async(t=!1)=>{if(e)return t?U(!0):l.localDescription?.type===offerType?m?M(l):V(l):W},async signal(t){if(t.type===`candidate`){try{let e=JSON.parse(t.sdp);e&&typeof e==`object`&&await z(j(e))}catch(e){u.error?.(toError(e,`failed to parse remote candidate`))}return}if(!(x?.readyState===`open`&&!t.sdp?.includes(`a=rtpmap`)))try{let n={...t,sdp:k(t.sdp)};if(t.type===offerType){if(y||l.signalingState!==`stable`&&!b){if(e)return;await all([l.setLocalDescription({type:`rollback`}),l.setRemoteDescription(n)])}else await l.setRemoteDescription(n);return await R(),await l.setLocalDescription(),await H()}if(t.type===answerType){b=!0;try{await l.setRemoteDescription(n),await R()}finally{b=!1}}}catch(e){u.error?.(toError(e,`failed to apply remote signal`))}},sendData:e=>x?.send(e),destroy:()=>{T(),x?.close(),l.close(),y=!1,b=!1,E()},setHandlers:e=>{let{signal:t,...n}=e;Object.assign(u,n),u.data&&f.length>0&&f.splice(0).forEach(e=>u.data?.(e)),t&&O(t),(u.track||u.stream)&&v.length>0&&v.splice(0).forEach(({track:e,stream:t})=>{u.track?.(e,t),u.stream?.(t)})},offerPromise:W,addStream:e=>e.getTracks().forEach(t=>l.addTrack(t,e)),removeStream:e=>l.getSenders().filter(t=>t.track&&e.getTracks().includes(t.track)).forEach(e=>l.removeTrack(e)),addTrack:(e,t)=>l.addTrack(e,t),removeTrack:e=>{let t=l.getSenders().find(t=>t.track===e);t&&l.removeTrack(t)},replaceTrack:(e,t)=>{let n=l.getSenders().find(t=>t.track===e);if(n)return n.replaceTrack(t)}}},defaultIceServers=[...alloc(3,(e,t)=>`stun:stun${t||``}.l.google.com:19302`),`stun:stun.cloudflare.com:3478`].map(e=>({urls:e})),TypedArray=Object.getPrototypeOf(Uint8Array),typeByteLimit=32,typeIndex=0,nonceIndex=32,tagIndex=34,progressIndex=35,payloadIndex=36,chunkSize=16*2**10-payloadIndex,oneByteMax=255,twoByteMax=65535,buffLowEvent=`bufferedamountlow`,channelCloseEvent=`close`,channelErrorEvent=`error`,unloadEvent=`beforeunload`,defaultHandshakeTimeoutMs=1e4,backpressureWaitTimeoutMs=1e4,internalNs=e=>`@_`+e,beforeUnloadRoomCleanups=new Set,cleanupActiveRoomsOnBeforeUnload=()=>beforeUnloadRoomCleanups.forEach(e=>e()),registerBeforeUnloadCleanup=e=>(beforeUnloadRoomCleanups.add(e),beforeUnloadRoomCleanups.size===1&&addEventListener(unloadEvent,cleanupActiveRoomsOnBeforeUnload),()=>{beforeUnloadRoomCleanups.delete(e),beforeUnloadRoomCleanups.size||removeEventListener(unloadEvent,cleanupActiveRoomsOnBeforeUnload)}),toByteArray=e=>e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength),toHandshakeErrorMessage=e=>{let t=toErrorMessage(e,`unknown error`);return t.startsWith(`handshake `)?t:`handshake failed: ${t}`},waitForBufferedAmountLow=(e,t=backpressureWaitTimeoutMs)=>e.readyState!==`open`||e.bufferedAmount<=e.bufferedAmountLowThreshold?Promise.resolve(e.readyState===`open`):new Promise(n=>{let a=!1,o=null,s=t=>{a||(a=!0,e.removeEventListener(buffLowEvent,l),e.removeEventListener(channelCloseEvent,u),e.removeEventListener(channelErrorEvent,u),resetTimer(o),n(t))},l=()=>s(!0),u=()=>s(!1);if(e.addEventListener(buffLowEvent,l),e.addEventListener(channelCloseEvent,u),e.addEventListener(channelErrorEvent,u),o=setTimeout(()=>s(!1),t),e.readyState!==`open`){s(!1);return}e.bufferedAmount<=e.bufferedAmountLowThreshold&&s(!0)}),room_default=(e,t,n,{onPeerHandshake:a,onHandshakeError:o,handshakeTimeoutMs:s=defaultHandshakeTimeoutMs}={})=>{let l={},u={},d={},f={},m={},h={},v={},y={},b={},x={},S=new WeakMap,C=new WeakMap,T={onPeerJoin:noOp,onPeerLeave:noOp,onPeerStream:noOp,onPeerTrack:noOp},E=noOp,D=(e,t,{includePending:n=!1}={})=>(e?Array.isArray(e)?e:[e]:keys(n?l:u)).flatMap(e=>{let a=n?l[e]:u[e];return a?[Promise.resolve(t(e,a))]:(console.warn(`${libName}: no peer with id ${e} found`),[])}),O=(e,t,n,a,o,s={})=>{let l={k:t,...s,...n===void 0?{}:{m:n}};return D(e,async(e,t)=>{await a(l,e),o(t)})},k=e=>t=>{let n=e.get(t);return n||(n=genId(20),e.set(t,n)),n},j=k(S),M=k(C),N=e=>l[e]??null,F=(e,t,n,a)=>{u[e]&&(N(e)?.__trysteroSetRemoteStreamByKey?.(t,n),typeof n.id==`string`&&N(e)?.__trysteroSetRemoteStreamById?.(n.id,n),T.onPeerStream(n,e,a))},I=(e,t,n,a,o)=>{u[e]&&(N(e)?.__trysteroSetRemoteTrackByKey?.(t,n,a),typeof a.id==`string`&&N(e)?.__trysteroSetRemoteStreamById?.(a.id,a),typeof n.id==`string`&&N(e)?.__trysteroSetRemoteTrackById?.(n.id,n,a),T.onPeerTrack(n,a,e,o))},L=(e,t=mkErr(`peer disconnected`))=>{let n=d[e],a=toError(t,`peer disconnected`);n&&(resetTimer(n.handshakeTimer),n.pendingHandshakePayloads.length=0,n.handshakeWaiters.splice(0).forEach(e=>e.reject(a)),delete d[e]),delete l[e],delete u[e],delete h[e],y[e]?.splice(0).forEach(e=>e.reject(a)),delete y[e],delete b[e],delete x[e]},R=(e,n,a)=>{let o=l[e];if(!o||n&&o!==n)return;let s=!!u[e];L(e,a),o.destroy(),s&&T.onPeerLeave(e),t(e)},z=(e,t={})=>{let n=m[e];if(f[e]&&n){let a=f[e].options;if(a.sendToPending!==!!t.sendToPending||a.receiveWhilePending!==!!t.receiveWhilePending)throw mkErr(`action type "${e}" cannot be redefined`);return n}if(!e)throw mkErr(`action type argument is required`);let a=encodeBytes(e);if(a.byteLength>typeByteLimit)throw mkErr(`action type string "${e}" (${a.byteLength}b) exceeds byte limit (${typeByteLimit}). Hint: choose a shorter name.`);let o={sendToPending:!!t.sendToPending,receiveWhilePending:!!t.receiveWhilePending},s=new Uint8Array(typeByteLimit);s.set(a);let d=0;return f[e]={onComplete:noOp,onProgress:noOp,setOnComplete:t=>{f[e].onComplete=t;let n=v[e];n?.length&&(delete v[e],n.forEach(({payload:e,peerId:n,metadata:a})=>t(e,n,a)))},setOnProgress:t=>{f[e].onProgress=t},send:async(e,t,n,a)=>{let f=typeof e;if(f===`undefined`)throw mkErr(`action data cannot be undefined`);let m=f!==`string`,h=e instanceof Blob,v=h||e instanceof ArrayBuffer||e instanceof TypedArray,y=n!==void 0,b=v?toByteArray(h?await e.arrayBuffer():e):encodeBytes(m?toJson(e):e),x=y?encodeBytes(toJson(n)):null,S=Math.ceil(b.byteLength/chunkSize)+ +!!y||1,C=alloc(S,(e,t)=>{let n=t===S-1,a=!!(y&&t===0),o=new Uint8Array(payloadIndex+(a?x?.byteLength??0:n?b.byteLength-chunkSize*(S-(y?2:1)):chunkSize));return o.set(s),o.set([d>>8,d&oneByteMax],nonceIndex),o.set([Number(n)|Number(a)<<1|Number(v)<<2|Number(m)<<3],tagIndex),o.set([Math.round((t+1)/S*oneByteMax)],progressIndex),o.set(y?a?x??new Uint8Array:b.subarray((t-1)*chunkSize,t*chunkSize):b.subarray(t*chunkSize,(t+1)*chunkSize),payloadIndex),o});return d=d+1&twoByteMax,await all(D(t,async(e,t)=>{let{channel:s}=t,d=0;for(;d<S;){let f=C[d];if(!f||s&&s.bufferedAmount>s.bufferedAmountLowThreshold&&!await waitForBufferedAmountLow(s))break;let m=o.sendToPending?l[e]:u[e];if(!m||m!==t)break;t.sendData(f),d++;let h=f[progressIndex]??oneByteMax;a?.(h/oneByteMax,e,n)}},{includePending:o.sendToPending})),[]},options:o},m[e]=[f[e].send,f[e].setOnComplete,f[e].setOnProgress]},B=e=>z(e),V=(e,t)=>{let n=d[e];if(!n)return;let a=new Uint8Array(t),o=decodeBytes(a.subarray(typeIndex,nonceIndex)).replaceAll(`\0`,``),s=f[o];if(!n.isActive&&!s?.options.receiveWhilePending)return;let l=(a[nonceIndex]??0)<<8|(a[33]??0),u=a[tagIndex]??0,m=a[progressIndex]??0,y=a.subarray(payloadIndex),b=!!(u&1),x=!!(u&2),S=!!(u&4),C=!!(u&8);h[e]??={},h[e][o]??={};let T=h[e][o][l]??={chunks:[]};if(x?T.meta=fromJson(decodeBytes(y)):T.chunks.push(y),s?.onProgress(m/oneByteMax,e,T.meta),!b)return;let E=new Uint8Array(T.chunks.reduce((e,t)=>e+t.byteLength,0));if(T.chunks.reduce((e,t)=>(E.set(t,e),e+t.byteLength),0),delete h[e][o][l],S)s?s.onComplete(E,e,T.meta):(v[o]??=[]).push({payload:E,peerId:e,...T.meta===void 0?{}:{metadata:T.meta}});else{let t=decodeBytes(E),n=C?fromJson(t):t;s?s.onComplete(n,e,T.meta):(v[o]??=[]).push({payload:n,peerId:e,...T.meta===void 0?{}:{metadata:T.meta}})}},H=async()=>{await ie(``),await new Promise(e=>setTimeout(e,99)),entries(l).forEach(([e,t])=>{t.destroy(),L(e,mkErr(`room left`))}),E(),n()},[U,W]=z(internalNs(`ping`)),[G,ee]=z(internalNs(`pong`)),[te,K]=z(internalNs(`signal`)),[q,ne]=z(internalNs(`stream`)),[re,J]=z(internalNs(`track`)),[ie,ae]=z(internalNs(`leave`),{sendToPending:!0,receiveWhilePending:!0}),[oe,se]=z(internalNs(`hsdata`),{sendToPending:!0,receiveWhilePending:!0}),[ce,Y]=z(internalNs(`hsready`),{sendToPending:!0,receiveWhilePending:!0}),le=(e,t)=>{let n=d[e];!n||t&&n.peer!==t||n.isActive||!n.didLocalHandshakePass||!n.didReceiveRemoteReady||(n.isActive=!0,u[e]=n.peer,n.handshakeTimer=resetTimer(n.handshakeTimer),T.onPeerJoin(e))},ue=(e,t,n)=>{let a=d[e];if(!a||a.peer!==t)return;let s=toHandshakeErrorMessage(n);o?.(e,s),R(e,t,mkErr(s))},de=(e,t)=>{let n=d[e];!n||n.peer!==t||n.isActive||(n.didLocalHandshakePass=!0,ce(``,e).catch(n=>ue(e,t,mkErr(`failed sending handshake readiness: ${toErrorMessage(n,`unknown send failure`)}`))),le(e,t))},X=(e,t)=>{let n=d[e];if(!n||n.peer!==t)return;n.handshakeTimer=setTimeout(()=>ue(e,t,mkErr(`handshake timed out after ${s}ms`)),s);let o=async(t,n)=>{await oe(t,e,n)},l=()=>new Promise((n,a)=>{let o=d[e];if(!o||o.peer!==t){a(mkErr(`peer disconnected during handshake`));return}let s=o.pendingHandshakePayloads.shift();if(s){n(s);return}o.handshakeWaiters.push({resolve:n,reject:e=>a(e)})}),u=selfId<e;Promise.resolve(a?.(e,o,l,u)).then(()=>de(e,t)).catch(n=>ue(e,t,toError(n,`handshake failed`)))},fe=e=>e&&typeof e==`object`&&!Array.isArray(e)&&typeof e.k==`string`?{key:e.k,...typeof e.s==`string`?{streamId:e.s}:{},...typeof e.t==`string`?{trackId:e.t}:{},...Object.hasOwn(e,`m`)?{metadata:e.m}:{}}:null;return W((e,t)=>G(``,t)),ee((e,t)=>{let n=y[t];(n?.shift())?.resolve(),n&&!n.length&&delete y[t]}),K((e,t)=>{u[t]&&l[t]?.signal(e)}),ne((e,t)=>{if(!u[t])return;let n=fe(e);if(!n)return;let a=N(t),o=a?.__trysteroGetRemoteStreamByKey?.(n.key)??(n.streamId?a?.__trysteroGetRemoteStreamById?.(n.streamId):void 0);if(o){F(t,n.key,o,n.metadata);return}(b[t]??=[]).push(n)}),J((e,t)=>{if(!u[t])return;let n=fe(e);if(!n)return;let a=N(t),o=a?.__trysteroGetRemoteTrackByKey?.(n.key)??(n.trackId?a?.__trysteroGetRemoteTrackById?.(n.trackId):void 0);if(o){I(t,n.key,o.track,o.stream,n.metadata);return}(x[t]??=[]).push(n)}),ae((e,t)=>R(t,void 0,mkErr(`peer left room`))),se((e,t,n)=>{let a=d[t];if(!a||a.isActive)return;let o=n===void 0?{data:e}:{data:e,metadata:n},s=a.handshakeWaiters.shift();if(s){s.resolve(o);return}a.pendingHandshakePayloads.push(o)}),Y((e,t)=>{let n=d[t];!n||n.isActive||(n.didReceiveRemoteReady=!0,le(t))}),e((e,t)=>{let n=l[t];if(n){if(n===e)return;n.destroy(),L(t,mkErr(`peer replaced`))}l[t]=e,d[t]={peer:e,isActive:!1,didLocalHandshakePass:!1,didReceiveRemoteReady:!1,handshakeTimer:null,pendingHandshakePayloads:[],handshakeWaiters:[]},e.setHandlers({data:e=>V(t,e),stream:e=>{if(!u[t])return;let n=b[t]?.shift();n&&F(t,n.key,e,n.metadata)},track:(e,n)=>{if(!u[t])return;let a=x[t]?.shift();a&&I(t,a.key,e,n,a.metadata)},signal:e=>{u[t]&&te(e,t)},close:()=>R(t,e,mkErr(`peer disconnected`)),error:n=>{console.error(`${libName} peer error:`,n),R(t,e,n)}}),X(t,e)}),isBrowser&&(E=registerBeforeUnloadCleanup(()=>H().catch(noOp))),{makeAction:B,leave:H,ping:async e=>{if(!u[e])throw mkErr(`no active peer with id ${e}`);let t=Date.now();return await new Promise((t,n)=>{let a=y[e]??=[],o=()=>{let t=y[e];if(!t)return;let n=t.indexOf(s);n>-1&&t.splice(n,1),t.length||delete y[e]},s={resolve:()=>{o(),t()},reject:e=>{o(),n(e)}};a.push(s),U(``,e).catch(e=>s.reject(toError(e,`peer disconnected`)))}),Date.now()-t},getPeers:()=>fromEntries(entries(u).map(([e,t])=>[e,t.connection])),addStream:(e,t,n)=>O(t,j(e),n,q,t=>t.addStream(e),{s:e.id}),removeStream:(e,t)=>{D(t,(t,n)=>n.removeStream(e))},addTrack:(e,t,n,a)=>O(n,M(e),a,re,n=>n.addTrack(e,t),{s:t.id,t:e.id}),removeTrack:(e,t)=>{D(t,(t,n)=>n.removeTrack(e))},replaceTrack:(e,t,n,a)=>O(n,M(t),a,re,n=>n.replaceTrack(e,t),{t:e.id}),onPeerJoin:e=>{T.onPeerJoin=e,keys(u).forEach(t=>e(t))},onPeerLeave:e=>T.onPeerLeave=e,onPeerStream:e=>T.onPeerStream=e,onPeerTrack:e=>T.onPeerTrack=e}},roomFrameVersion=1,roomPresenceFrameVersion=2,wrapRoomFrame=(e,t)=>{let n=encodeBytes(e),a=new Uint8Array(3+n.byteLength+t.byteLength);return a[0]=roomFrameVersion,a[1]=n.byteLength>>>8&255,a[2]=n.byteLength&255,a.set(n,3),a.set(t,3+n.byteLength),a},wrapRoomPresenceFrame=(e,t)=>{let n=encodeBytes(e),a=new Uint8Array(4+n.byteLength);return a[0]=roomPresenceFrameVersion,a[1]=Number(t),a[2]=n.byteLength>>>8&255,a[3]=n.byteLength&255,a.set(n,4),a},unwrapFrame=e=>{let t=new Uint8Array(e);if(t.byteLength<3)return null;if(t[0]===roomFrameVersion){let e=(t[1]??0)<<8|(t[2]??0),n=3+e;return e<=0||t.byteLength<n?null:{type:`room`,roomToken:decodeBytes(t.subarray(3,n)),payload:t.subarray(n).slice().buffer}}if(t[0]!==roomPresenceFrameVersion||t.byteLength<4)return null;let n=(t[2]??0)<<8|(t[3]??0),a=4+n;return n<=0||t.byteLength<a?null:{type:`presence`,roomToken:decodeBytes(t.subarray(4,a)),isPresent:t[1]===1}},isPeerUnderlyingStale=e=>{let{connection:t,channel:n}=e;return e.isDead||t.connectionState===`closed`||t.connectionState===`failed`||t.iceConnectionState===`closed`||t.iceConnectionState===`failed`||n?.readyState===`closing`||n?.readyState===`closed`},getConnectedPeerHealth=e=>{if(isPeerUnderlyingStale(e))return`stale`;let{channel:t}=e;return!t||t.readyState!==`open`?`transient`:`live`},SharedPeerManager=class{byApp={};roomPresenceHandlers={};getMap(e){return this.byApp[e]??={}}get(e,t){return this.byApp[e]?.[t]}isPeerStale(e){return isPeerUnderlyingStale(e)}getHealth(e){return this.isPeerStale(e)?`stale`:`live`}setRoomPresenceHandler(e,t){return this.roomPresenceHandlers[e]=t,()=>{this.roomPresenceHandlers[e]===t&&delete this.roomPresenceHandlers[e]}}sendRoomPresence(e,t,n){e.isClosing||e.peer.isDead||e.peer.sendData(wrapRoomPresenceFrame(t,n))}clear(e,t,{destroyPeer:n}){let a=this.byApp[e],o=a?.[t];if(!o||o.isClosing)return;o.idleTimer=resetTimer(o.idleTimer),o.isClosing=!0,n&&!o.peer.isDead&&o.peer.destroy();let s=values(o.bindings);o.bindings={},o.bindingsByToken={},o.controlRoomId=null,delete a[t],s.forEach(e=>{e.handlers.close?.(),e.pendingData.length=0,e.pendingSendData.length=0,e.pendingTracks.length=0}),o.remoteStreamsByKey.clear(),o.remoteStreamsById.clear(),o.remoteTracksByKey.clear(),o.remoteTracksById.clear(),o.pendingDataByToken.clear(),o.remoteRoomTokens.clear(),keys(a).length===0&&delete this.byApp[e]}register(e,t,n,a){let o=this.getMap(e),s=o[t];if(s){if(s.idleTimer=resetTimer(s.idleTimer),s.peer===n)return s;this.clear(e,t,{destroyPeer:!0})}let l={appId:e,peerId:t,peer:n,bindings:{},bindingsByToken:{},pendingDataByToken:new Map,remoteRoomTokens:new Set,idleTimer:null,controlRoomId:null,streamOwners:new Map,trackOwners:new Map,remoteStreamsByKey:new Map,remoteStreamsById:new Map,remoteTracksByKey:new Map,remoteTracksById:new Map,idleMs:a,isClosing:!1};return n.setHandlers({data:e=>this.dispatchData(l,e),signal:e=>this.dispatchSignal(l,e),close:()=>this.clear(e,t,{destroyPeer:!1}),error:n=>{console.error(`${libName} peer error:`,n),this.clear(e,t,{destroyPeer:!1})},track:(e,t)=>this.dispatchTrack(l,e,t)}),o[t]=l,l}bind(e,t,n,{onDetach:a}){let o=n.bindings[e];if(o)return n.idleTimer=resetTimer(n.idleTimer),{proxy:o.proxy,isNew:!1};let s={roomId:e,roomToken:null,roomTokenPromise:t,handlers:{},pendingData:[],pendingSendData:[],pendingTracks:[],detach:noOp,proxy:{}},l=()=>{n.bindings[e]&&(this.pruneRoomOwnership(n,e),delete n.bindings[e],s.roomToken&&n.bindingsByToken[s.roomToken]===s&&delete n.bindingsByToken[s.roomToken],n.controlRoomId===e&&(n.controlRoomId=keys(n.bindings)[0]??null),a(),this.scheduleIdleTimer(n))},u={created:n.peer.created,get connection(){return n.peer.connection},get channel(){return n.peer.channel},get isDead(){return n.peer.isDead},getOffer:e=>n.peer.getOffer(e),signal:e=>n.peer.signal(e),sendData:e=>{if(!s.roomToken){s.pendingSendData.push(e);return}n.peer.sendData(wrapRoomFrame(s.roomToken,e))},destroy:()=>l(),setHandlers:e=>{let{signal:t,...n}=e;Object.assign(s.handlers,n),t&&(s.handlers.signal=t),this.flushBindingQueues(s)},offerPromise:n.peer.offerPromise,addStream:t=>{let a=n.streamOwners.get(t)??new Set,o=a.size===0;a.add(e),n.streamOwners.set(t,a),o&&n.peer.addStream(t)},removeStream:t=>{let a=n.streamOwners.get(t);a&&(a.delete(e),a.size===0&&(n.streamOwners.delete(t),n.peer.removeStream(t)))},addTrack:(t,a)=>{let o=n.trackOwners.get(t)??{stream:a,rooms:new Set},s=o.rooms.size===0;return o.stream=a,o.rooms.add(e),n.trackOwners.set(t,o),s?n.peer.addTrack(t,a):n.peer.connection.getSenders().find(e=>e.track===t)??n.peer.addTrack(t,a)},removeTrack:t=>{let a=n.trackOwners.get(t);a&&(a.rooms.delete(e),a.rooms.size===0&&(n.trackOwners.delete(t),n.peer.removeTrack(t)))},replaceTrack:(e,t)=>{let a=n.trackOwners.get(e);if(a){n.trackOwners.delete(e);let o=n.trackOwners.get(t)??{stream:a.stream,rooms:new Set};a.rooms.forEach(e=>o.rooms.add(e)),n.trackOwners.set(t,o)}return n.peer.replaceTrack(e,t)},__trysteroGetRemoteStreamByKey:e=>n.remoteStreamsByKey.get(e),__trysteroSetRemoteStreamByKey:(e,t)=>void n.remoteStreamsByKey.set(e,t),__trysteroGetRemoteStreamById:e=>n.remoteStreamsById.get(e),__trysteroSetRemoteStreamById:(e,t)=>void n.remoteStreamsById.set(e,t),__trysteroGetRemoteTrackByKey:e=>n.remoteTracksByKey.get(e),__trysteroSetRemoteTrackByKey:(e,t,a)=>void n.remoteTracksByKey.set(e,{track:t,stream:a}),__trysteroGetRemoteTrackById:e=>n.remoteTracksById.get(e),__trysteroSetRemoteTrackById:(e,t,a)=>void n.remoteTracksById.set(e,{track:t,stream:a})};return s.proxy=u,s.detach=l,n.bindings[e]=s,n.controlRoomId??=e,n.idleTimer=resetTimer(n.idleTimer),t.then(t=>{if(n.isClosing||n.bindings[e]!==s)return;s.roomToken=t,n.bindingsByToken[t]=s;let a=n.pendingDataByToken.get(t);a?.length&&(s.pendingData.push(...a),n.pendingDataByToken.delete(t)),s.pendingSendData.splice(0).forEach(e=>n.peer.sendData(wrapRoomFrame(t,e))),this.flushBindingQueues(s)}),{proxy:u,isNew:!0}}pruneRoomOwnership(e,t){e.streamOwners.forEach((n,a)=>{n.delete(t),n.size===0&&(e.streamOwners.delete(a),e.peer.removeStream(a))}),e.trackOwners.forEach((n,a)=>{n.rooms.delete(t),n.rooms.size===0&&(e.trackOwners.delete(a),e.peer.removeTrack(a))})}scheduleIdleTimer(e){e.isClosing||keys(e.bindings).length>0||(e.idleTimer=resetTimer(e.idleTimer),e.idleTimer=setTimeout(()=>{let t=this.byApp[e.appId]?.[e.peerId];!t||keys(t.bindings).length>0||this.clear(e.appId,e.peerId,{destroyPeer:!0})},e.idleMs))}getSignalBinding(e){if(e.controlRoomId){let t=e.bindings[e.controlRoomId];if(t?.handlers.signal)return t}let t=values(e.bindings).find(e=>!!e.handlers.signal);return t?(e.controlRoomId=t.roomId,t):null}flushBindingQueues(e){let{handlers:t}=e;t.data&&e.pendingData.length>0&&e.pendingData.splice(0).forEach(e=>t.data?.(e)),(t.track||t.stream)&&e.pendingTracks.length&&e.pendingTracks.splice(0).forEach(({track:e,stream:n})=>{t.track?.(e,n),t.stream?.(n)})}dispatchData(e,t){let n=unwrapFrame(t);if(!n)return;if(n.type===`presence`){n.isPresent?e.remoteRoomTokens.add(n.roomToken):e.remoteRoomTokens.delete(n.roomToken),this.roomPresenceHandlers[e.appId]?.(e.peerId,n.roomToken,n.isPresent);return}let a=e.bindingsByToken[n.roomToken];if(!a){let t=e.pendingDataByToken.get(n.roomToken)??[];t.push(n.payload),e.pendingDataByToken.set(n.roomToken,t);return}a.handlers.data?a.handlers.data(n.payload):a.pendingData.push(n.payload)}dispatchSignal(e,t){this.getSignalBinding(e)?.handlers.signal?.(t)}dispatchTrack(e,t,n){values(e.bindings).forEach(e=>{if(e.handlers.track||e.handlers.stream){e.handlers.track?.(t,n),e.handlers.stream?.(n);return}e.pendingTracks.push({track:t,stream:n})})}},offerPostAnswerTtlMs=23333,offerIdSize=12,disconnectedPeerGraceMs=7533,answeringTtlMs=23333,legacyCandidateKey=`__legacy__`,offerRelayPlaceholder=`offer-placeholder`,publishCipheredSignalingMessage=(e,t,n,a,o,s)=>{e.toCipher(t).then(t=>{e.isLeaving()||!s()||a(n,toJson(o(t.sdp)))})},makeState=()=>({status:`idle`,offerPeer:null,offerId:null,offerSdp:null,offerInitPromise:null,offerAnswered:!1,offerRelays:[],offerSignalRelays:[],offerSignalBacklog:[],offerRelayTimers:[],offerExpiryTimer:null,connectedPeer:null,connectedPeerUnhealthySinceMs:null,answeringExpiryTimer:null,answeringPeer:null,pendingCandidates:{}}),getState=(e,t)=>e[t]??=makeState(),updateStatus=e=>{e.connectedPeer?e.status=`connected`:e.answeringPeer?e.status=`answering`:e.offerPeer||e.offerRelays.some(Boolean)?e.status=`offering`:e.status=`idle`},clearAnswering=(e,t)=>{e.answeringPeer===t&&(e.answeringExpiryTimer=resetTimer(e.answeringExpiryTimer),e.answeringPeer=null,updateStatus(e))},clearConnectedPeer=(e,t,n)=>{e.connectedPeer&&(e.connectedPeer.isDead||e.connectedPeer.destroy(),e.connectedPeer=null,e.connectedPeerUnhealthySinceMs=null,updateStatus(e))},clearOfferRelay=(e,t)=>{e.offerRelayTimers[t]=resetTimer(e.offerRelayTimers[t]),e.offerRelays[t]&&(e.offerRelays[t]=void 0,updateStatus(e))},clearOfferRelayIfPlaceholder=(e,t)=>{e?.offerRelays[t]===offerRelayPlaceholder&&clearOfferRelay(e,t)},hasRemoteDescription=e=>{if(e.isDead||e.connection.connectionState===`closed`)return!0;try{return!!e.connection.remoteDescription}catch{return!0}},resetOfferState=(e,t)=>{let n=e.offerAnswered;e.offerExpiryTimer=resetTimer(e.offerExpiryTimer),e.offerInitPromise=null,e.offerRelays.forEach((t,n)=>clearOfferRelay(e,n)),e.offerRelays=[],e.offerSignalRelays=[],e.offerRelayTimers=[],e.offerSignalBacklog=[],e.offerPeer&&e.offerPeer!==e.connectedPeer&&(n||hasRemoteDescription(e.offerPeer)?e.offerPeer.isDead||e.offerPeer.destroy():t.recycle(e.offerPeer)),e.offerPeer=null,e.offerId=null,e.offerSdp=null,e.offerAnswered=!1,updateStatus(e)},scheduleAnsweringExpiry=(e,t,n,a)=>{resetTimer(t.answeringExpiryTimer),t.answeringExpiryTimer=setTimeout(()=>{let t=e.peerStates[n];!t||t.connectedPeer||t.answeringPeer!==a||(a.destroy(),clearAnswering(t,a))},answeringTtlMs)},flushBufferedCandidates=async(e,t,n)=>{let a=n?[n,legacyCandidateKey]:[legacyCandidateKey];for(let n of a){let a=e.pendingCandidates[n];if(a?.length){delete e.pendingCandidates[n];for(let e of a)await t.signal(e)}}},scheduleOfferExpiry=(e,t,n,a=offerTtl)=>{resetTimer(t.offerExpiryTimer);let o=t.offerId;t.offerExpiryTimer=setTimeout(()=>{let t=e.peerStates[n];!t||t.connectedPeer||t.offerId!==o||resetOfferState(t,e.offerPool)},a)},ensureOffer=(e,t,n,a)=>t.offerPeer&&t.offerId&&t.offerSdp?Promise.resolve({peer:t.offerPeer,offer:t.offerSdp,offerId:t.offerId}):(t.offerInitPromise||=(async()=>{let o=(await e.offerPool.checkout(1,!1,e.encryptOffer))[0];if(!o)throw mkErr(`failed to allocate offer peer`);let{peer:s,offer:l}=o;t.offerPeer=s,t.offerId=genId(offerIdSize),t.offerSdp=l,t.offerAnswered=!1,t.offerSignalBacklog=[],updateStatus(t);let u=()=>{t.offerPeer===s&&!t.connectedPeer&&resetOfferState(t,e.offerPool),e.disconnectPeer(s,n)};return s.setHandlers({connect:()=>e.connectPeer(s,n,a),signal:e=>{t.offerPeer===s&&(t.offerSignalBacklog.push(e),t.offerSignalRelays.forEach(t=>t?.(e)))},close:u,error:u}),scheduleOfferExpiry(e,t,n),{peer:s,offer:l,offerId:t.offerId}})().finally(()=>t.offerInitPromise=null),t.offerInitPromise),handleAnnouncement=async(e,t,n,a,o)=>{if(a){e.attachSharedPeerToRoom(n,a);return}let s=e.peerStates[n];if(!s||s.connectedPeer||s.answeringPeer||s.offerAnswered){clearOfferRelayIfPlaceholder(s,t);return}if(s.offerRelays[t]!==offerRelayPlaceholder)return;let[l,u]=await all([sha1(topicPath(e.rootTopicPlaintext,n)),ensureOffer(e,s,n,t)]);if(e.isLeaving())return;if(s.connectedPeer||s.answeringPeer||s.offerAnswered||s.offerRelays[t]!==offerRelayPlaceholder){clearOfferRelayIfPlaceholder(s,t);return}s.offerRelayTimers[t]=resetTimer(s.offerRelayTimers[t]),s.offerRelays[t]=!0,updateStatus(s),s.offerRelayTimers[t]=setTimeout(()=>prunePendingOffer(e,n,t),(e.announceIntervals[t]??e.announceIntervalMs)*.9);let d=!1;s.offerSignalRelays[t]=t=>{d&&(e.isLeaving()||s.connectedPeer||s.offerPeer!==u.peer||s.offerId!==u.offerId||t.type!==`candidate`||publishCipheredSignalingMessage(e,t,l,o,e=>({peerId:selfId,offerId:u.offerId,candidate:e}),()=>!s.connectedPeer&&s.offerPeer===u.peer&&s.offerId===u.offerId))},o(l,toJson({peerId:selfId,offerId:u.offerId,offer:u.offer})),d=!0,s.offerSignalBacklog.forEach(e=>s.offerSignalRelays[t]?.(e))},handleOffer=async(e,t,n,a,o,s,l)=>{let u=getState(e.peerStates,n);if(u.answeringPeer||u.offerAnswered)return;let d=!!(u.offerPeer||u.offerRelays.some(Boolean));if((d||s)&&selfId<n)return;d&&resetOfferState(u,e.offerPool);let f=e.initPeer(!1,e.config);u.answeringPeer=f,scheduleAnsweringExpiry(e,u,n,f),updateStatus(u);let m=()=>{clearAnswering(u,f),e.disconnectPeer(f,n)};f.setHandlers({connect:()=>e.connectPeer(f,n,t),close:m,error:m});let h;try{h=await e.toPlain({type:`offer`,sdp:a})}catch{clearAnswering(u,f),e.onJoinError?.({error:`incorrect room password when decrypting offer`,appId:e.appId,peerId:n,roomId:e.roomId});return}if(f.isDead){clearAnswering(u,f);return}let v=await sha1(topicPath(e.rootTopicPlaintext,n));e.isLeaving()||(f.setHandlers({signal:t=>{e.isLeaving()||u.answeringPeer!==f||f.isDead||t.type!==`answer`&&t.type!==`candidate`||publishCipheredSignalingMessage(e,t,v,l,e=>{let n={peerId:selfId};return t.type===`answer`?n.answer=e:n.candidate=e,o&&(n.offerId=o),n},()=>u.answeringPeer===f&&!f.isDead)}}),await f.signal(h),await flushBufferedCandidates(u,f,o))},handleCandidate=async(e,t,n,a,o)=>{let s;try{s=await e.toPlain({type:candidateType,sdp:n})}catch{return}let l=getState(e.peerStates,t),u=a&&l?.offerPeer&&l.offerId===a?l.offerPeer:null,d=l?.answeringPeer??null,f=!a&&l?.offerPeer?l.offerPeer:null,m=o&&!o.isDead?o:u??d??f;if(!m||m.isDead){let e=a??legacyCandidateKey;(l.pendingCandidates[e]??=[]).push(s);return}m.signal(s)},handleAnswer=async(e,t,n,a,o,s)=>{let l;try{l=await e.toPlain({type:`answer`,sdp:a})}catch{e.onJoinError?.({error:`incorrect room password when decrypting answer`,appId:e.appId,peerId:n,roomId:e.roomId});return}if(s)e.offerPool.claimLeased(s),s.setHandlers({connect:()=>e.connectPeer(s,n,t),close:()=>e.disconnectPeer(s,n)}),s.signal(l);else{let t=e.peerStates[n];if(!t||!t.offerPeer||t.offerAnswered||o&&t.offerId&&o!==t.offerId||t.offerPeer.isDead)return;t.offerAnswered=!0,scheduleOfferExpiry(e,t,n,offerPostAnswerTtlMs),t.offerPeer.signal(l)}},prunePendingOffer=(e,t,n)=>{let a=e.peerStates[t];!a||a.connectedPeer||a.offerRelays[n]&&clearOfferRelay(a,n)},createSignalHandler=e=>t=>async(n,a,o)=>{if(e.isLeaving())return;let s=typeof a==`string`?fromJson(a):a,l=typeof s.peerId==`string`?s.peerId:``,u=s.offer,d=s.answer,f=s.candidate,m=s.offerId,h=s.peer,v=s.hasOutgoingOffer===!0;if(l===selfId)return;let y=e.peerStates[l],b=y?.connectedPeer;if(b&&y){let e=getConnectedPeerHealth(b);if(e===`live`){y.connectedPeerUnhealthySinceMs=null;return}if(e===`stale`)clearConnectedPeer(y,l,`message-from-stale-peer`);else{let e=Date.now(),t=y.connectedPeerUnhealthySinceMs??e;if(y.connectedPeerUnhealthySinceMs=t,e-t<disconnectedPeerGraceMs)return;clearConnectedPeer(y,l,`message-from-prolonged-disconnect`)}}let x=e.sharedPeers.get(e.appId,l);x&&e.sharedPeers.getHealth(x.peer)===`stale`&&(e.sharedPeers.clear(e.appId,l,{destroyPeer:!0}),x=void 0);let S=!!(l&&!u&&!d&&!f),[C,T]=await all([e.rootTopicP,e.selfTopicP]);if(!e.isLeaving()&&!(n!==C&&n!==T)){if(S&&!x){let n=getState(e.peerStates,l),a=selfId<l;if(n.answeringPeer||n.connectedPeer||n.offerAnswered)return;if(!a&&!n.offerPeer){let t=await sha1(topicPath(e.rootTopicPlaintext,l));!e.isLeaving()&&!n.connectedPeer&&o(t,toJson({peerId:selfId}));return}if(n.offerRelays[t])return;n.offerRelays[t]=offerRelayPlaceholder,updateStatus(n)}if(x&&(u||d||f)){if(x.bindings[e.roomId])return;e.attachSharedPeerToRoom(l,x);return}if(S)return handleAnnouncement(e,t,l,x,o);if(u)return handleOffer(e,t,l,u,m,v,o);if(f)return handleCandidate(e,l,f,m,h);if(d)return handleAnswer(e,t,l,d,m,h)}},announceIntervalMs=5333,announceWarmupIntervalsMs=[233,533,1333],sharedPeerIdleMsDefault=123333,strategy_default=({init:e,subscribe:t,announce:n})=>{let a={},o={},s={},l={},u=new SharedPeerManager,d=()=>values(a).some(e=>keys(e).length>0),f=e=>o[e]??={},m=e=>s[e]??={},h=(e,t,n)=>{u.getHealth(e.peer)===`live`&&u.sendRoomPresence(e,t,n)},v=(e,t)=>{entries(o[e]??{}).forEach(([n,a])=>{let{roomToken:s,roomTokenPromise:l}=a;if(s){h(t,s,!0);return}l.then(s=>{o[e]?.[n]===a&&a.roomToken===s&&(u.get(e,t.peerId)!==t||t.isClosing||h(t,s,!0))})})},y=(e,t,n)=>values(u.getMap(e)).forEach(e=>h(e,t,n)),b=e=>{l[e]||(l[e]=u.setRoomPresenceHandler(e,(t,n,a)=>{if(!a)return;let l=u.get(e,t),d=s[e]?.[n];!l||!d||o[e]?.[d]?.attachSharedPeerToRoom(t,l)}))},x=e=>{a[e]&&keys(a[e]).length>0||(l[e]?.(),delete l[e],delete o[e],delete s[e])},S=!1,C=[],T=null,E=noOp;return(l,h,D)=>{if(!l)throw mkErr(`requires a config map as the first argument`);if(D&&typeof D!=`object`)throw mkErr(`third argument must be a callbacks object`);let{appId:O}=l,k=D?.onJoinError,j=D?.onPeerHandshake,M=D?.handshakeTimeoutMs;if(!O)throw mkErr(`config map is missing appId field`);if(!h)throw mkErr(`roomId argument required`);if(M!==void 0&&(!Number.isFinite(M)||M<=0))throw mkErr(`handshakeTimeoutMs must be a positive number`);if(a[O]?.[h])return a[O][h];b(O);let N=topicPath(libName,O,h),F=sha1(N),I=sha1(topicPath(N,selfId)),L=genKey(l.password??``,O,h),R=deriveRoomNamespace(O,h),z=l._test_only_sharedPeerIdleMs??sharedPeerIdleMsDefault,B=!1,V=e=>async t=>({type:t.type,sdp:await e(L,t.sdp)}),H=V(decrypt),U=V(encrypt),W=u.getMap(O);T||=new OfferPool(()=>peer_default(!0,l));let G=T,ee=async e=>{let t=await e.getOffer(Date.now()-e.created>offerTtl);if(!t||t.type!==`offer`)throw mkErr(`failed to get offer for peer`);return(await U(t)).sdp},te=(e,t)=>{let n=getState(K.peerStates,e);n.answeringExpiryTimer=resetTimer(n.answeringExpiryTimer),n.answeringPeer=null;let{proxy:a,isNew:o}=u.bind(h,R,t,{onDetach:()=>{let n=K.peerStates[e];n?.connectedPeer===t.peer&&(n.connectedPeer=null,n.connectedPeerUnhealthySinceMs=null,updateStatus(n))}});n.connectedPeer=t.peer,n.connectedPeerUnhealthySinceMs=null,updateStatus(n),o&&ie(a,e),resetOfferState(n,G)},K={appId:O,roomId:h,config:l,peerStates:{},rootTopicPlaintext:N,rootTopicP:F,selfTopicP:I,toPlain:H,toCipher:U,isLeaving:()=>B,onJoinError:k,sharedPeers:u,offerPool:G,encryptOffer:ee,initPeer:peer_default,connectPeer:(e,t,n)=>{if(B){e.destroy();return}let a=getState(K.peerStates,t);if(a.connectedPeer){let n=W[t];if(n&&a.connectedPeer===n.peer&&n.bindings[h])return;a.connectedPeer!==e&&!e.isDead&&e.destroy();return}let o=W[t];if(o&&u.getHealth(o.peer)===`stale`&&(u.clear(O,t,{destroyPeer:!0}),o=void 0),o&&o.peer!==e){e.isDead||e.destroy(),te(t,o);return}let s=!o;o||=u.register(O,t,e,z),te(t,o),s&&v(O,o)},disconnectPeer:(e,t)=>{if(B)return;let n=K.peerStates[t];n?.connectedPeer===e&&clearConnectedPeer(n,t,`close-event`)},attachSharedPeerToRoom:te,announceIntervals:[],announceIntervalMs},q=createSignalHandler(K);if(!S){let t=e(l);G.warmup(),C=(Array.isArray(t)?t:[t]).map(e=>Promise.resolve(e)),S=!0,E=l.relayConfig?.manualReconnection?noOp:watchOnline()}K.announceIntervals=C.map(()=>announceIntervalMs);let ne=C.map(()=>0),re=[],J=C.map(async(e,n)=>t(await e,await F,await I,q(n),e=>G.getOffers(e,ee)));all([F,I]).then(([e,t])=>{if(B)return;let a=async(o,s)=>{if(B)return;let l=await n(o,e,t);if(B)return;typeof l==`number`&&(K.announceIntervals[s]=l);let u=ne[s]??0;ne[s]=u+1;let d=K.announceIntervals[s]??announceIntervalMs,f=announceWarmupIntervalsMs[u];re[s]=setTimeout(()=>{a(o,s)},typeof f==`number`?Math.min(d,f):d)};J.forEach(async(e,t)=>{if(await e,B)return;let n=await C[t];n&&!B&&a(n,t)})});let ie=noOp,{compose:ae}=createPasswordHandshake(l.password??``,O,h),oe=ae(j),se={...oe?{onPeerHandshake:oe}:{},...M===void 0?{}:{handshakeTimeoutMs:M},onHandshakeError:(e,t)=>k?.({error:t.replace(/^handshake failed: /,``),appId:O,peerId:e,roomId:h})};a[O]??={};let ce=f(O),Y=room_default(e=>ie=e,e=>{if(B)return;let t=K.peerStates[e];t?.connectedPeer&&(t.connectedPeer=null,updateStatus(t))},()=>{B=!0,ie=noOp;let e=o[O]?.[h];e?.roomToken&&(y(O,e.roomToken,!1),delete s[O]?.[e.roomToken],s[O]&&!keys(s[O]).length&&delete s[O]),o[O]&&(delete o[O][h],keys(o[O]).length||delete o[O]),entries(K.peerStates).forEach(([e,t])=>{if(t.answeringExpiryTimer=resetTimer(t.answeringExpiryTimer),t.connectedPeer&&!t.connectedPeer.isDead){let n=W[e];(!n||n.peer!==t.connectedPeer)&&t.connectedPeer.destroy()}t.answeringPeer&&!t.answeringPeer.isDead&&t.answeringPeer.destroy(),resetOfferState(t,G),t.connectedPeer=null,t.answeringPeer=null,updateStatus(t)}),a[O]&&(delete a[O][h],keys(a[O]).length===0&&delete a[O]),re.forEach(resetTimer),J.forEach(async e=>{(await e)()}),!d()&&(S=!1,G.destroy(),T=null,E(),x(O))},se),le={roomToken:null,roomTokenPromise:R,attachSharedPeerToRoom:te};return ce[h]=le,R.then(e=>{B||o[O]?.[h]!==le||(le.roomToken=e,m(O)[e]=h,values(W).forEach(t=>{t.remoteRoomTokens.has(e)&&te(t.peerId,t)}),y(O,e,!0))}),a[O][h]=Y}},relayManager=createRelayManager(e=>e.socket),topicToInfoHash={},infoHashToTopic={},announceIntervals=relayManager.scoped(),announceFns=relayManager.scoped(),subscriptionTokens=relayManager.scoped(),trackerAnnounceMs={},handledSignals={},msgHandlers=relayManager.scoped(),roomOutstandingOffers={},roomOfferGenerationPromises={},roomSubscriberCounts={},trackerAction=`announce`,hashLimit=20,offerPoolSize=3,defaultAnnounceMs=1e4,maxAnnounceMs=2e4,offerRetentionMs=12e4,signalDedupeWindowMs=4e3,defaultRedundancy=3,getInfoHash=async e=>{if(topicToInfoHash[e])return topicToInfoHash[e];let t=(await sha1(e)).slice(0,hashLimit);return topicToInfoHash[e]=t,infoHashToTopic[t]=e,t},send=async(e,t,n)=>e.send(toJson({action:trackerAction,info_hash:await getInfoHash(t),peer_id:selfId,...n})),warn=(e,t,n=!1)=>console.warn(`${libName}: torrent tracker ${n?`failure`:`warning`} from ${e} - ${t}`),getRoomOutstandingOffers=e=>roomOutstandingOffers[e]??={},deleteRoomOfferBookkeeping=e=>{delete roomOutstandingOffers[e],delete roomOfferGenerationPromises[e]},claimOutstandingOffer=(e,t)=>{let n=roomOutstandingOffers[e],a=n?.[t];if(a)return delete n[t],a.claim?.(),!keys(n).length&&!roomSubscriberCounts[e]&&deleteRoomOfferBookkeeping(e),a},reclaimOutstandingOffer=(e,t)=>{let n=roomOutstandingOffers[e],a=n?.[t];a&&(delete n[t],a.reclaim?.(),!keys(n).length&&!roomSubscriberCounts[e]&&deleteRoomOfferBookkeeping(e))},reclaimAllOutstandingOffers=e=>{keys(getRoomOutstandingOffers(e)).forEach(t=>reclaimOutstandingOffer(e,t)),deleteRoomOfferBookkeeping(e)},pruneOutstandingOffers=e=>{let t=Date.now();entries(getRoomOutstandingOffers(e)).forEach(([n,a])=>{t-a.createdAt>offerRetentionMs&&reclaimOutstandingOffer(e,n)})},ensureOutstandingOffers=async(e,t)=>{for(;roomOfferGenerationPromises[e];)await roomOfferGenerationPromises[e];let n=(async()=>{pruneOutstandingOffers(e);let n=getRoomOutstandingOffers(e),a=keys(n).length,o=Math.max(0,offerPoolSize-a);o>0&&(await t(o)).forEach(e=>{n[genId(hashLimit)]={...e,createdAt:Date.now()}})})().finally(()=>{roomOfferGenerationPromises[e]===n&&delete roomOfferGenerationPromises[e]});return roomOfferGenerationPromises[e]=n,await n,getRoomOutstandingOffers(e)},joinRoomStrategy=strategy_default({init:e=>getRelays(e,defaultRelayUrls,defaultRedundancy).map(e=>{let t=relayManager.register(e,makeSocket(e,n=>{let a=fromJson(n),o=a[`failure reason`],s=a[`warning message`],{interval:l}=a,u=a.info_hash?infoHashToTopic[a.info_hash]:void 0;if(o){warn(t.url,o,!0);return}if(s&&warn(t.url,s),l&&l*1e3>(trackerAnnounceMs[t.url]??defaultAnnounceMs)&&u&&announceFns.forKey(e)[u]){let n=Math.min(l*1e3,maxAnnounceMs),a=announceIntervals.forKey(e),o=announceFns.forKey(e);a[u]&&clearInterval(a[u]),trackerAnnounceMs[t.url]=n;let s=o[u];s&&(a[u]=setInterval(()=>{s()},n))}if((a.offer||a.answer)&&u&&a.offer_id){if(a.peer_id===selfId)return;let t=`${u}:${a.offer?`offer`:`answer`}:${a.offer_id}:${a.peer_id??``}`,n=Date.now(),o=handledSignals[t];if(typeof o==`number`&&n-o<signalDedupeWindowMs)return;handledSignals[t]=n,entries(handledSignals).forEach(([e,t])=>{n-t>signalDedupeWindowMs*6&&delete handledSignals[e]}),msgHandlers.forKey(e)[u]?.(a)}}));return t.ready}),subscribe:(e,t,n,a,o)=>{let s=msgHandlers.forRelay(e),l=announceFns.forRelay(e),u=announceIntervals.forRelay(e),d=subscriptionTokens.forRelay(e),f=Symbol(t);d[t]=f,roomSubscriberCounts[t]=(roomSubscriberCounts[t]??0)+1;let m=n=>{if(n.offer&&n.peer_id&&n.offer_id)a(t,{offer:n.offer.sdp,peerId:n.peer_id,hasOutgoingOffer:keys(getRoomOutstandingOffers(t)).length>0},(a,o)=>void send(e,t,{answer:{type:`answer`,sdp:fromJson(o).answer},offer_id:n.offer_id,to_peer_id:n.peer_id}));else if(n.answer&&n.offer_id&&n.peer_id){let e=claimOutstandingOffer(t,n.offer_id);e&&a(t,{answer:n.answer.sdp,peerId:n.peer_id,peer:e.peer},()=>{})}};s[t]=m;let h=async()=>{d[t]===f&&send(e,t,{numwant:offerPoolSize,offers:entries(await ensureOutstandingOffers(t,o)).map(([e,{offer:t}])=>({offer_id:e,offer:{type:`offer`,sdp:t}}))})};return trackerAnnounceMs[e.url]=defaultAnnounceMs,l[t]=h,u[t]=setInterval(h,trackerAnnounceMs[e.url]),h(),()=>{if(roomSubscriberCounts[t]=Math.max(0,(roomSubscriberCounts[t]??1)-1),roomSubscriberCounts[t]||delete roomSubscriberCounts[t],d[t]!==f){roomSubscriberCounts[t]||reclaimAllOutstandingOffers(t);return}let e=u[t];e&&(clearInterval(e),delete u[t]),s[t]===m&&delete s[t],l[t]===h&&delete l[t],delete d[t],roomSubscriberCounts[t]||reclaimAllOutstandingOffers(t)}},announce:e=>trackerAnnounceMs[e.url]}),joinRoom=(e,t,n)=>joinRoomStrategy({...e,trickleIce:e.trickleIce??!1},t,n),getRelaySockets=relayManager.getSockets,defaultRelayUrls=[`tracker.webtorrent.dev`,`tracker.openwebtorrent.com`,`tracker.btorrent.xyz`,`tracker.files.fm:7073/announce`].map(e=>`wss://`+e),require_lodash_throttle=__commonJSMin(((e,t)=>{var n=`Expected a function`,a=NaN,o=`[object Symbol]`,s=/^\s+|\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,d=/^0o[0-7]+$/i,f=parseInt,m={}.Object===Object&&{},h=typeof self==`object`&&self&&self.Object===Object&&self,v=m||h||Function(`return this`)(),y=Object.prototype.toString,b=Math.max,x=Math.min,S=function(){return v.Date.now()};function C(e,t,a){var o,s,l,u,d,f,m=0,h=!1,v=!1,y=!0;if(typeof e!=`function`)throw TypeError(n);t=k(t)||0,E(a)&&(h=!!a.leading,v=`maxWait`in a,l=v?b(k(a.maxWait)||0,t):l,y=`trailing`in a?!!a.trailing:y);function C(t){var n=o,a=s;return o=s=void 0,m=t,u=e.apply(a,n),u}function T(e){return m=e,d=setTimeout(j,t),h?C(e):u}function D(e){var n=e-f,a=e-m,o=t-n;return v?x(o,l-a):o}function O(e){var n=e-f,a=e-m;return f===void 0||n>=t||n<0||v&&a>=l}function j(){var e=S();if(O(e))return M(e);d=setTimeout(j,D(e))}function M(e){return d=void 0,y&&o?C(e):(o=s=void 0,u)}function N(){d!==void 0&&clearTimeout(d),m=0,o=f=s=d=void 0}function F(){return d===void 0?u:M(S())}function I(){var e=S(),n=O(e);if(o=arguments,s=this,f=e,n){if(d===void 0)return T(f);if(v)return d=setTimeout(j,t),C(f)}return d===void 0&&(d=setTimeout(j,t)),u}return I.cancel=N,I.flush=F,I}function T(e,t,a){var o=!0,s=!0;if(typeof e!=`function`)throw TypeError(n);return E(a)&&(o=`leading`in a?!!a.leading:o,s=`trailing`in a?!!a.trailing:s),C(e,t,{leading:o,maxWait:t,trailing:s})}function E(e){var t=typeof e;return!!e&&(t==`object`||t==`function`)}function D(e){return!!e&&typeof e==`object`}function O(e){return typeof e==`symbol`||D(e)&&y.call(e)==`[object Symbol]`}function k(e){if(typeof e==`number`)return e;if(O(e))return a;if(E(e)){var t=typeof e.valueOf==`function`?e.valueOf():e;e=E(t)?t+``:t}if(typeof e!=`string`)return e===0?e:+e;e=e.replace(s,``);var n=u.test(e);return n||d.test(e)?f(e.slice(2),n?2:8):l.test(e)?a:+e}t.exports=T})),import_lodash_throttle=__toESM(require_lodash_throttle()),endpoints={getMarketData:`https://farmhand.vercel.app/api/get-market-data`,postDayResults:`https://farmhand.vercel.app/api/post-day-results`},features=Object.keys({BASE_URL:`./`,DEV:!1,MODE:`production`,PROD:!0,SSR:!1,VITE_API_ROOT:`https://farmhand.vercel.app/`,VITE_FARMHAND_PACKAGE_VERSION:`1.22.1`,VITE_NAME:`@jeremyckahn/farmhand`,VITE_TURN_CREDENTIAL:``,VITE_TURN_USERNAME:``}).reduce((e,t)=>{let n=t.match(/VITE_ENABLE_(.*)/);return n&&(e[n[1]]=!0),e},{}),searchParams=new URLSearchParams(import_window.default.location?.search);for(let e of searchParams.keys()){let t=e.match(/enable_(.*)/);t&&(features[t[1]]=!0)}var rtcConfig={iceServers:[{urls:`stun:stun.relay.metered.ca:80`}]},handlePeerMetadataRequest=(e,t,n)=>{e.updatePeer(e,t,n)},handleCowTradeRequest=async(e,{cowOffered:t,cowRequested:n},a)=>{let o=!1;e.setState(e=>{let{allowCustomPeerCowNames:s,cowIdOfferedForTrade:l,cowsTraded:u,cowInventory:d,playerId:f,isAwaitingCowTradeRequest:m,peers:h,sendCowAccept:v,sendCowReject:y}=e;if(!v||!y)return console.error(`Peer connection not set up correctly`),null;let b=d.find(({id:e})=>e===l);if(m||n.id!==l||!b)return y({reason:cowTradeRejectionReason.REQUESTED_COW_UNAVAILABLE},a),null;let x={...t,timesTraded:t.originalOwnerId===f?t.timesTraded:t.timesTraded+1},[,S]=Object.entries(h).find(([,e])=>e?.playerId===x.ownerId)??[];return S?(e=changeCowAutomaticHugState(e,b,!1),e=removeCowFromInventory(e,b),e=addCowToInventory(e,{...x,ownerId:f}),e=showNotification(e,COW_TRADED_NOTIFICATION(``,b,t,f,s),`success`),v({...b,isUsingHuggingMachine:!1},a),o=!0,{...e,cowIdOfferedForTrade:x.id,cowsTraded:x.originalOwnerId===f?u:u+1,isAwaitingCowTradeRequest:!0,selectedCowId:x.id,peers:{...h,[a]:{...S,cowOfferedForTrade:{...b,ownerId:S.playerId}}}}):(console.error(`No data for peer ${x.ownerId}`),null)},async()=>{o&&(await sleep(750),await e.persistState(),e.showNotification(PROGRESS_SAVED_MESSAGE,`info`),e.setState(()=>({isAwaitingCowTradeRequest:!1})))})},handleCowTradeRequestAccept=(e,t,n)=>{let a=!1;e.setState(e=>{let{allowCustomPeerCowNames:o,cowIdOfferedForTrade:s,cowInventory:l,cowsTraded:u,cowTradeTimeoutId:d,playerId:f,peers:m}=e,h=l.find(({id:e})=>e===s);if(!h)return console.error(`handleCowTradeRequestAccept: cow with ID ${s} is no longer available`),e=showNotification(e,UNKNOWN_COW_TRADE_FAILURE,`error`),{...e,isAwaitingCowTradeRequest:!1};let[,v]=Object.entries(m).find(([,e])=>{let{playerId:n}=e;return n===t.ownerId})||[],y=t.originalOwnerId===f,b={...t,timesTraded:y?t.timesTraded:t.timesTraded+1};return e=removeCowFromInventory(e,h),e=addCowToInventory(e,{...b,ownerId:f}),e=showNotification(e,COW_TRADED_NOTIFICATION(``,h,b,f,o),`success`),y||(e=addExperience(e,EXPERIENCE_VALUES.COW_TRADED)),d&&clearTimeout(d),a=!0,{...e,cowsTraded:b.originalOwnerId===f?u:u+1,cowTradeTimeoutId:null,isAwaitingCowTradeRequest:!1,cowIdOfferedForTrade:b.id,selectedCowId:b.id,peers:{...m,[n]:{...v,cowOfferedForTrade:{...h,ownerId:v.playerId}}}}},async()=>{a&&(await e.persistState(),e.showNotification(PROGRESS_SAVED_MESSAGE,`info`))})},handleCowTradeRequestReject=(e,{reason:t})=>{let{cowTradeTimeoutId:n}=e.state;typeof n==`number`&&clearTimeout(n),e.setState({cowTradeTimeoutId:null,isAwaitingCowTradeRequest:!1}),e.showNotification(REQUESTED_COW_TRADE_UNAVAILABLE,`error`)},relayRedundancy=4,useFarmhandNetwork=(e,t,n,a,o,s,l,u)=>{let{hasBooted:d,isOnline:f,room:m,redirect:h,heartbeatTimeoutId:v,peerRoom:y,sendPeerMetadata:b}=e,x=(0,import_react$24.useCallback)(e=>(0,import_lodash_throttle.default)((...n)=>{e(...n),t(e=>({...e,pendingPeerMessages:[]}))},5e3,{trailing:!0}),[t]),S=(0,import_react$24.useCallback)(()=>{typeof a.current?.state?.cowTradeTimeoutId==`number`&&(n.current.showNotification(REQUESTED_COW_TRADE_UNAVAILABLE,`error`),console.error(`Cow trade request timed out`),t(e=>({...e,cowTradeTimeoutId:null,isAwaitingCowTradeRequest:!1})))},[t,n,a]),C=(0,import_react$24.useCallback)(o=>{let{cowIdOfferedForTrade:s,cowInventory:l,peers:u,sendCowTradeRequest:d}=a.current?.state??e;if(!d)return;let{ownerId:f}=o,[m]=Object.entries(u).find(([,e])=>e?.playerId===f)??[];if(!m){console.error(`Owner not found for cow ${JSON.stringify(o)}`);return}if(l.find(({id:e})=>e===o.id)){console.error(`Cow ID ${o.id} is already in inventory`),n.current.showNotification(COW_ALREADY_OWNED,`error`);return}let h=l.find(({id:e})=>e===s);if(!h){console.error(`Cow ID ${s} not found`);return}let v=setTimeout(S,COW_TRADE_TIMEOUT);d({cowOffered:{...h,isUsingHuggingMachine:!1},cowRequested:o},m),t(e=>({...e,cowTradeTimeoutId:v,isAwaitingCowTradeRequest:!0}))},[t,S,n,a]),T=(0,import_react$24.useCallback)(()=>{t(e=>(clearTimeout(e.heartbeatTimeoutId??-1),e));let e=import_window.default.setTimeout(()=>{t(e=>({...e,money:moneyTotal(e.money,e.activePlayers??0)})),T()},HEARTBEAT_INTERVAL_PERIOD);t(t=>({...t,heartbeatTimeoutId:e}))},[t]),E=(0,import_react$24.useCallback)(async()=>{let{isOnline:e,priceCrashes:o,priceSurges:s,room:l,playerId:u,peerRoom:d}=a.current.state;if(e){n.current.showNotification(CONNECTING_TO_SERVER,`info`);try{t(e=>({...e,isAwaitingNetworkRequest:!0,peers:{}})),d?.leave();let{valueAdjustments:e}=await getData(endpoints.getMarketData,{farmId:u,room:l});T(),t(t=>({...t,activePlayers:1,peerRoom:joinRoom({appId:`@jeremyckahn/farmhand`,rtcConfig},l),valueAdjustments:FarmhandService.applyPriceEvents(e,o,s)})),n.current.showNotification(CONNECTED_TO_ROOM(``,l),`success`)}catch(e){n.current.showNotification(SERVER_ERROR,`error`),console.error(e),t(e=>({...e,redirect:withCurrentHashQuery(`/`),cowIdOfferedForTrade:``}))}t(e=>({...e,isAwaitingNetworkRequest:!1,isAwaitingCowTradeRequest:!1}))}},[T,n,a,t]),D=(0,import_react$24.useCallback)((e,t)=>{n.current.prependPendingPeerMessage(e,t)},[n]);return(0,import_react$24.useEffect)(()=>{if(!d||!o)return;let e=decodeURIComponent(s),S=l.startsWith(`/online`),C=!!h&&h!==o.redirect;if(!C&&(S!==f||e!==m)?t(t=>({...t,isOnline:S,redirect:``,room:e})):h&&!C&&S===f&&e===m&&t(e=>({...e,redirect:``})),(f!==o.isOnline||m!==o.room)&&(f&&E(),!f&&typeof v==`number`&&(clearTimeout(v),t(e=>({...e,activePlayers:null,heartbeatTimeoutId:null,peerRoom:null})))),f===!1&&o.isOnline===!0&&n.current.showNotification(DISCONNECTED_FROM_SERVER,`info`),y!==o.peerRoom)if(y){y.onPeerJoin(e=>n.current.addPeer(e)),y.onPeerLeave(e=>n.current.removePeer(e));let[e,o]=y.makeAction(`peerMetadata`);o((...e)=>handlePeerMetadataRequest(a.current,e[0],e[1]));let[s,l]=y.makeAction(`cowTrade`);l((...e)=>handleCowTradeRequest(a.current,e[0],e[1]));let[d,f]=y.makeAction(`cowAccept`);f((...e)=>handleCowTradeRequestAccept(a.current,e[0],e[1]));let[m,h]=y.makeAction(`cowReject`);h((...e)=>handleCowTradeRequestReject(a.current,e[0])),t(t=>({...t,getCowAccept:f,getCowReject:h,getCowTradeRequest:l,getPeerMetadata:o,pendingPeerMessages:[],sendCowAccept:d,sendCowReject:m,sendCowTradeRequest:s,sendPeerMetadata:x(e)})),e(u)}else o.peerRoom?.leave(),t(e=>({...e,peers:{},sendPeerMetadata:null}));b?.(u)},[d,f,m,h,v,y,b,o,s,l,E,x,u,n,a,t]),{syncToRoom:E,scheduleHeartbeat:T,wrapSendPeerMetadata:x,tradeForPeerCow:C,handleCowTradeTimeout:S,messagePeers:D}},computeMarketPositions=(e,t,n)=>n.reduce((n,{id:a,quantity:o})=>{let s=e[a]||0,l=t[a]||0;return itemsMap[a].doesPriceFluctuate&&s!==o&&(o<s||o<l?n[a]=-1:(o>s||o>l)&&(n[a]=1)),n},{}),useFarmhandDayAdvancement=(e,t,n,a,o)=>{let s=(0,import_react$24.useCallback)(async()=>{await n.localforage?.clear(),a.current.showNotification(DATA_DELETED)},[n.localforage,a]),l=(0,import_react$24.useCallback)((e,t={})=>n.localforage?.setItem(`state`,reduceByPersistedKeys({...e,...t})),[n.localforage]),u=(0,import_react$24.useCallback)(async()=>{let n=[],a=null;t(e=>({...e,isAwaitingNetworkRequest:!0}));let o;if(e.current.isOnline){let{inventory:s,room:l,todaysPurchases:u,todaysStartingInventory:d}=e.current,f=computeMarketPositions(d,u,s);try{o=(await postData(endpoints.postDayResults,{positions:f,room:l})).valueAdjustments,Object.keys(f).length&&(n.push({message:POSITIONS_POSTED_NOTIFICATION(``,`You`,f),severity:`info`}),a=POSITIONS_POSTED_NOTIFICATION(``,``,f))}catch(e){n.push({message:SERVER_ERROR,severity:`error`}),t(e=>({...e,redirect:withCurrentHashQuery(`/`),cowIdOfferedForTrade:``,isAwaitingNetworkRequest:!1})),console.error(e)}}return{broadcastedPositionMessage:a,serverMessages:n,serverValueAdjustments:o}},[e,t]);return{clearPersistedData:s,persistState:l,updateServerForNextDay:u,incrementDay:(0,import_react$24.useCallback)(async(n=!1)=>{if(e.current.isWaitingForDayToCompleteIncrementing&&!n)return;n||t(e=>({...e,isWaitingForDayToCompleteIncrementing:!0}));let{broadcastedPositionMessage:a,serverMessages:s,serverValueAdjustments:l}=await u();t(e=>{let t=computeStateForNextDay(e,n),u=[...s,...t.newDayNotifications];return t.valueAdjustments=FarmhandService.applyPriceEvents(l??t.valueAdjustments,t.priceCrashes,t.priceSurges),t.isAwaitingNetworkRequest=!1,t.isWaitingForDayToCompleteIncrementing=!0,t.newDayNotifications=[],t.todaysNotifications=[],o.current={state:t,pendingNotifications:u,broadcastedPositionMessage:a,isFirstDay:n},t})},[e,u,t,o])}},useFarmhandNotifications=(e,t)=>({showInventoryFullNotifications:(0,import_react$24.useCallback)((e,n)=>{inventorySpaceRemaining(e)>0&&inventorySpaceRemaining(n)<=0&&t.current.showNotification(INVENTORY_FULL_NOTIFICATION,`warning`)},[t]),showRecipeLearnedNotifications:(0,import_react$24.useCallback)(({learnedRecipes:n})=>{let a=[];Object.keys(e.learnedRecipes).forEach(e=>{n.hasOwnProperty(e)||a.push(recipesMap[e])}),a.length>1?t.current.showNotification(RECIPES_LEARNED(``,a)):a.length===1&&t.current.showNotification(RECIPE_LEARNED(``,a[0]))},[e.learnedRecipes,t])}),FarmhandReducers=class e extends import_react$24.Component{addCowToInventory(...e){throw Error(`Unimplemented`)}addPeer(...e){throw Error(`Unimplemented`)}adjustLoan(...e){throw Error(`Unimplemented`)}changeCowAutomaticHugState(...e){throw Error(`Unimplemented`)}changeCowBreedingPenResident(...e){throw Error(`Unimplemented`)}changeCowName(...e){throw Error(`Unimplemented`)}clearPlot(...e){throw Error(`Unimplemented`)}chopForestPlot(...e){throw Error(`Unimplemented`)}computeStateForNextDay(...e){throw Error(`Unimplemented`)}fertilizePlot(...e){throw Error(`Unimplemented`)}forRange(...e){throw Error(`Unimplemented`)}harvestForestPlot(...e){throw Error(`Unimplemented`)}harvestPlot(...e){throw Error(`Unimplemented`)}hugCow(...e){throw Error(`Unimplemented`)}makeRecipe(...e){throw Error(`Unimplemented`)}makeFermentationRecipe(...e){throw Error(`Unimplemented`)}makeWine(...e){throw Error(`Unimplemented`)}modifyCow(...e){throw Error(`Unimplemented`)}mulchForestPlot(...e){throw Error(`Unimplemented`)}offerCow(...e){throw Error(`Unimplemented`)}plantInPlot(...e){throw Error(`Unimplemented`)}plantTreeInPlot(...e){throw Error(`Unimplemented`)}prependPendingPeerMessage(...e){throw Error(`Unimplemented`)}purchaseCombine(...e){throw Error(`Unimplemented`)}purchaseComposter(...e){throw Error(`Unimplemented`)}purchaseCow(...e){throw Error(`Unimplemented`)}purchaseCowPen(...e){throw Error(`Unimplemented`)}purchaseCellar(...e){throw Error(`Unimplemented`)}purchaseField(...e){throw Error(`Unimplemented`)}purchaseForest(...e){throw Error(`Unimplemented`)}purchaseItem(...e){throw Error(`Unimplemented`)}purchaseSmelter(...e){throw Error(`Unimplemented`)}purchaseStorageExpansion(...e){throw Error(`Unimplemented`)}purchaseWoodChipper(...e){throw Error(`Unimplemented`)}removeCowFromInventory(...e){throw Error(`Unimplemented`)}removeKegFromCellar(...e){throw Error(`Unimplemented`)}removePeer(...e){throw Error(`Unimplemented`)}selectCow(...e){throw Error(`Unimplemented`)}sellCow(...e){throw Error(`Unimplemented`)}sellItem(...e){throw Error(`Unimplemented`)}sellKeg(...e){throw Error(`Unimplemented`)}setLightningRod(...e){throw Error(`Unimplemented`)}setScarecrow(...e){throw Error(`Unimplemented`)}setSprinkler(...e){throw Error(`Unimplemented`)}showNotification(...e){throw Error(`Unimplemented`)}updatePeer(...e){throw Error(`Unimplemented`)}upgradeTool(...e){throw Error(`Unimplemented`)}waterAllPlots(...e){throw Error(`Unimplemented`)}waterField(...e){throw Error(`Unimplemented`)}waterPlot(...e){throw Error(`Unimplemented`)}withdrawCow(...e){throw Error(`Unimplemented`)}constructor(t){super(t);let n=Object.getOwnPropertyNames(e.prototype).filter(e=>e!==`constructor`);for(let e of n){let t=reducers_exports[e];t&&(this[e]=(...e)=>{this.setState(n=>t(n,...e))})}}},useFarmhandReducers=e=>(0,import_react$24.useMemo)(()=>{let t={};Object.assign(t,reducers_exports);let n=Object.getOwnPropertyNames(FarmhandReducers.prototype).filter(e=>e!==`constructor`);for(let a of n){let n=reducers_exports[a];typeof n==`function`&&(t[a]=(...t)=>{e(e=>{let a=n(e,...t);return!a||a===e?e:{...a}})})}return t},[e]),usePrevious=e=>{let t=(0,import_react$24.useRef)();return(0,import_react$24.useEffect)(()=>{t.current=e},[e]),t.current},{CLEANUP,HARVEST,MINE,WATER}=fieldMode,useFarmhand=e=>{let{features:t,match:{path:n=``,params:{room:a}={}}={}}=e,o=(0,import_react$24.useCallback)(()=>({activePlayers:null,allowCustomPeerCowNames:!1,cellarInventory:[],currentDialogView:dialogView.NONE,completedAchievements:{},cowForSale:generateCow(),cowBreedingPen:{cowId1:null,cowId2:null,daysUntilBirth:-1},cowColorsPurchased:{},cowIdOfferedForTrade:``,cowInventory:[],cowsSold:{},cowsTraded:0,cowTradeTimeoutId:-1,cropsHarvested:{},dayCount:0,experience:0,farmName:`Unnamed`,field:createNewField(),fieldMode:fieldMode.OBSERVE,forest:createNewForest(),treesChopped:0,treeFruitsHarvested:{},mulchApplied:{},getCowAccept:noop$3,getCowReject:noop$3,getCowTradeRequest:noop$3,getPeerMetadata:noop$3,hasBooted:!1,hasProducedRainbowFertilizer:!1,heartbeatTimeoutId:null,historicalDailyLosses:[],historicalDailyRevenue:[],historicalValueAdjustments:[],hoveredPlotRangeSize:0,playerId:v4(),inventory:[{id:scarecrow.id,quantity:1}],inventoryLimit:100,isAwaitingCowTradeRequest:!1,isAwaitingNetworkRequest:!1,isCombineEnabled:!1,isMenuOpen:!doesMenuObstructStage(),itemsSold:{},cellarItemsSold:{},isChatOpen:!1,isDialogViewOpen:!1,isOnline:n.startsWith(`/online`)??!1,isWaitingForDayToCompleteIncrementing:!1,learnedRecipes:{},loanBalance:500,loansTakenOut:1,money:500,latestNotification:null,newDayNotifications:[],notificationLog:[],peers:{},peerRoom:null,pendingPeerMessages:[],latestPeerMessages:[],sendPeerMetadata:null,selectedCowId:``,selectedForestItemId:``,selectedItemId:``,priceCrashes:{},priceSurges:{},profitabilityStreak:0,recipesMade:{},record7dayProfitAverage:0,recordProfitabilityStreak:0,recordSingleDayProfit:0,revenue:0,redirect:``,room:decodeURIComponent(e.match?.params?.room||`global`),sendCowAccept:noop$3,sendCowReject:noop$3,purchasedCombine:0,purchasedComposter:0,purchasedCowPen:0,purchasedCellar:0,purchasedField:0,purchasedForest:0,purchasedSmelter:0,purchasedWoodChipper:0,sendCowTradeRequest:noop$3,showHomeScreen:!0,showNotifications:!0,stageFocus:stageFocusType.HOME,todaysNotifications:[],todaysLosses:0,todaysPurchases:{},todaysRevenue:0,todaysStartingInventory:{},toolLevels:{[toolType.AXE]:toolLevel.UNAVAILABLE,[toolType.HOE]:toolLevel.DEFAULT,[toolType.PICKER_POLE]:toolLevel.UNAVAILABLE,[toolType.SCYTHE]:toolLevel.DEFAULT,[toolType.SHOVEL]:toolLevel.UNAVAILABLE,[toolType.WATERING_CAN]:toolLevel.DEFAULT},useAlternateEndDayButtonPosition:!1,valueAdjustments:{},version:`1.22.1`}),[n,e.match?.params?.room]),[s,l]=(0,import_react$24.useState)(o),u=(0,import_react$24.useRef)(s);u.current=s;let d=a===void 0?s.room:a,f=(0,import_react$24.useRef)(null),m=(0,import_react$24.useRef)(!1),h=useFarmhandReducers(l),v=(0,import_react$24.useRef)(h);v.current=h;let y=usePrevious(s),b=STAGE_TITLE_MAP[s.stageFocus],x=FarmhandService.getFieldToolInventory(s.inventory),S=FarmhandService.computePlayerInventory(s.inventory,s.valueAdjustments),C=FarmhandService.getPlantableCropInventory(s.inventory),T=FarmhandService.getPlantableTreeInventory(s.inventory),E=FarmhandService.getMulchInventory(s.inventory),D=(0,import_react$24.useMemo)(()=>getLevelEntitlements(levelAchieved(s.experience)),[s.experience]),O=(0,import_react$24.useMemo)(()=>getAvailableShopInventory(D),[D]),k=D.stageFocusType[stageFocusType.FOREST],j=s.isOnline&&s.room!==`global`,M=(0,import_react$24.useMemo)(()=>getViewList({isForestUnlocked:k,purchasedCellar:s.purchasedCellar,purchasedCowPen:s.purchasedCowPen,showHomeScreen:s.showHomeScreen}),[s.showHomeScreen,k,s.purchasedCowPen,s.purchasedCellar]),N=(0,import_react$24.useMemo)(()=>getPeerMetadata(s),[s]),F=s.isAwaitingNetworkRequest||s.isAwaitingCowTradeRequest||s.isWaitingForDayToCompleteIncrementing,I=(0,import_react$24.useRef)(null),{openDialogView:L,closeDialogView:R,focusNextView:z,focusPreviousView:B}=useFarmhandNavigation(l,M),V=(0,import_react$24.useRef)(!0),H=(0,import_react$24.useRef)(!1);(0,import_react$24.useEffect)(()=>{if(s.hasBooted){if(H.current){H.current=!1,setHashQueryParam(VIEW_QUERY_PARAM_NAME,s.stageFocus);return}if(V.current){V.current=!1,setHashQueryParam(VIEW_QUERY_PARAM_NAME,s.stageFocus);return}setHashQueryParam(VIEW_QUERY_PARAM_NAME,s.stageFocus,`push`),removeHashQueryParam(`tab`)}},[s.stageFocus,s.hasBooted]),(0,import_react$24.useEffect)(()=>{let e=()=>{let e=getValidatedStageFocusFromHash(u.current)??stageFocusType.HOME;e!==u.current.stageFocus&&(H.current=!0,l(t=>({...t,stageFocus:e})))};return import_window.default.addEventListener(`popstate`,e),()=>import_window.default.removeEventListener(`popstate`,e)},[]);let{syncToRoom:U,scheduleHeartbeat:W,tradeForPeerCow:G,handleCowTradeTimeout:ee,messagePeers:te}=useFarmhandNetwork(s,l,v,I,y,d,n,N),{clearPersistedData:K,persistState:q,updateServerForNextDay:ne,incrementDay:re}=useFarmhandDayAdvancement(u,l,e,v,f),{showInventoryFullNotifications:J,showRecipeLearnedNotifications:ie}=useFarmhandNotifications(s,v);I.current=(0,import_react$24.useMemo)(()=>({state:s,props:e,viewTitle:b,fieldToolInventory:x,mulchInventory:E,playerInventory:S,plantableCropInventory:C,plantableTreeInventory:T,viewList:M,levelEntitlements:D,shopInventory:O,peerMetadata:N,isInputBlocked:F,isChatAvailable:j,isForestUnlocked:k,setState:(e,t)=>{l(n=>{let a=typeof e==`function`?e(n):e;if(a==null)return n;let o={...n,...a};return t&&setTimeout(t,0),o})},...v.current,purchaseItem:(e,t)=>v.current.purchaseItem(e,t),sellItem:(e,t)=>v.current.sellItem(e,t),showNotification:(e,t,n)=>v.current.showNotification(e,t,n),prependPendingPeerMessage:(e,t)=>v.current.prependPendingPeerMessage(e,t),forRange:(e,t,n,a,o)=>v.current.forRange(e,t,n,a,o),createInitialState:o,getData,postData,tradeForPeerCow:G,handleCowTradeTimeout:ee,clearPersistedData:K,syncToRoom:U,scheduleHeartbeat:W,showInventoryFullNotifications:J,showRecipeLearnedNotifications:ie,persistState:(e={})=>q(I.current?.state??s,e),updateServerForNextDay:ne,incrementDay:re,openDialogView:L,closeDialogView:R,focusNextView:z,focusPreviousView:B,messagePeers:te}),[s,e,b,x,E,S,C,T,M,D,O,N,F,j,k,G,ee,K,U,W,J,ie,q,ne,re,L,R,z,B,te,o]);let ae=(0,import_react$24.useMemo)(()=>{let e={debounced:{}};return Object.keys(ui_events_default).forEach(t=>{let n=t;e[n]=(...e)=>ui_events_default[n].apply(I.current,e),e.debounced[n]=(0,import_lodash_debounce.default)(e[n],50)}),e},[]),oe=(0,import_react$24.useMemo)(()=>{let e={incrementDay:`shift+c`,nextView:`right`,openAccounting:`b`,openAchievements:`a`,openLog:`l`,openPriceEvents:`e`,openStats:`s`,openSettings:`,`,openKeybindings:`shift+?`,previousView:`left`,toggleMenu:`m`};return nullArray(9).forEach((t,n)=>{e[`numberKey${n+1}`]=String(n+1)}),e},[]),se=(0,import_react$24.useMemo)(()=>{let e={incrementDay:()=>re(),nextView:z,openAccounting:()=>L(dialogView.ACCOUNTING),openAchievements:()=>L(dialogView.ACHIEVEMENTS),openLog:()=>L(dialogView.FARMERS_LOG),openPriceEvents:()=>L(dialogView.PRICE_EVENTS),openStats:()=>L(dialogView.STATS),openSettings:()=>L(dialogView.SETTINGS),openKeybindings:()=>L(dialogView.KEYBINDINGS),previousView:B,selectHoe:()=>ae.handleFieldModeSelect(CLEANUP),selectScythe:()=>ae.handleFieldModeSelect(HARVEST),selectWateringCan:()=>ae.handleFieldModeSelect(WATER),selectShovel:()=>{s.toolLevels[toolType.SHOVEL]!==toolLevel.UNAVAILABLE&&ae.handleFieldModeSelect(MINE)},toggleMenu:()=>ae.handleMenuToggle()};return nullArray(9).forEach((t,n)=>{e[`numberKey${n+1}`]=()=>{let e=M[n];typeof e==`string`&&l(t=>({...t,stageFocus:stageFocusType[e]}))}}),e},[re,z,L,B,ae,s.toolLevels,M,K]);(0,import_react$24.useEffect)(()=>{if(m.current)return;m.current=!0,Object.defineProperty(import_window.default,"farmhand",{get:()=>I.current,configurable:!0});let t=!0;return(async()=>{let n=await e.localforage?.getItem(`state`);if(t){if(n){let e=transformStateDataForImport({...o(),...n}),{isCombineEnabled:t,newDayNotifications:a}=e,s=getValidatedStageFocusFromHash(e);l(t=>({...t,...e,...s&&{stageFocus:s},newDayNotifications:[],hasBooted:!0})),a.forEach(({message:e,severity:t})=>{setTimeout(()=>v.current.showNotification(e,t),0)}),t&&v.current.forRange(harvestPlot,1/0,0,0)}else{await re(!0),l(e=>({...e,historicalValueAdjustments:[]})),v.current.showNotification(LOAN_INCREASED(``,500),`info`);let e=getValidatedStageFocusFromHash(u.current);l(t=>({...t,...e&&{stageFocus:e},hasBooted:!0}))}U()}})(),()=>{t=!1}},[o,re,e.localforage,U]);let ce=(0,import_react$24.useRef)(import_window.default.innerWidth);(0,import_react$24.useEffect)(()=>{let e=()=>{let{innerWidth:e}=import_window.default,t=e!==ce.current;ce.current=e,t&&l(e=>{let t=!doesMenuObstructStage();return e.isMenuOpen===t?e:{...e,isMenuOpen:t}})};return import_window.default.addEventListener(`resize`,e),()=>import_window.default.removeEventListener(`resize`,e)},[]),(0,import_react$24.useEffect)(()=>{if(!s.hasBooted||!f.current)return;let t=!0,{state:n,pendingNotifications:a,broadcastedPositionMessage:o,isFirstDay:u}=f.current;return f.current=null,(async()=>{try{if(await e.localforage?.setItem(`state`,reduceByPersistedKeys({...n,...u&&{historicalValueAdjustments:[]},newDayNotifications:a})),!t)return;if([...a].concat(u?[]:[{message:PROGRESS_SAVED_MESSAGE,severity:`info`}]).forEach(({message:e,severity:t})=>v.current.showNotification(e,t)),n.isCombineEnabled){if(n.stageFocus===stageFocusType.FIELD&&await sleep(1e3),!t)return;v.current.forRange(harvestPlot,1/0,0,0)}}catch(e){console.error(e),t&&v.current.showNotification(JSON.stringify(e),`error`)}finally{t&&(l(e=>({...e,isWaitingForDayToCompleteIncrementing:!1})),o&&v.current.prependPendingPeerMessage(o))}})(),()=>{t=!1}},[s.dayCount,s.hasBooted,e.localforage,l]),(0,import_react$24.useEffect)(()=>()=>{u.current.heartbeatTimeoutId&&clearTimeout(u.current.heartbeatTimeoutId),u.current.peerRoom?.leave()},[]),(0,import_react$24.useEffect)(()=>{!s.hasBooted||!y||(updateAchievements(s,y)!==s&&l(e=>{let t=updateAchievements(e,y);return t===e?e:t}),s.stageFocus===stageFocusType.COW_PEN&&y.stageFocus!==stageFocusType.COW_PEN&&l(e=>({...e,selectedCowId:``})),s.stageFocus!==y.stageFocus&&s.isMenuOpen&&l(e=>{let t=!doesMenuObstructStage();return e.isMenuOpen===t?e:{...e,isMenuOpen:t}}),s.money<y.money&&l(e=>({...e,todaysLosses:moneyTotal(e.todaysLosses,s.money-y.money)})),J(y,s),ie(y))},[s,y,J,ie]);let Y=s.redirect;return{gameState:{...s,blockInput:F,features:t??{},fieldToolInventory:x,mulchInventory:E,isChatAvailable:j,levelEntitlements:D,plantableCropInventory:C,plantableTreeInventory:T,playerInventory:S,playerInventoryQuantities:getInventoryQuantities(s.inventory),shopInventory:O,viewList:M,viewTitle:b},handlers:ae,isInputBlocked:F,keyMap:oe,keyHandlers:se,redirect:Y,state:s,viewList:M,focusPreviousView:B,focusNextView:z,isChatAvailable:j}},emptyObject=Object.freeze({}),Farmhand=e=>{let{gameState:t,handlers:n,isInputBlocked:a,keyMap:o,keyHandlers:s,redirect:l,state:u,viewList:d,focusPreviousView:f,focusNextView:m,isChatAvailable:h}=useFarmhand(e);return(0,import_jsx_runtime.jsx)(import_index_es.GlobalHotKeys,{allowChanges:!0,keyMap:a?emptyObject:o,handlers:a?emptyObject:s,children:(0,import_jsx_runtime.jsxs)(ThemeProvider,{theme:mui_theme_default,children:[(0,import_jsx_runtime.jsx)(CssBaseline,{}),(0,import_jsx_runtime.jsxs)(SnackbarProvider,{anchorOrigin:{vertical:`top`,horizontal:`right`},classes:{containerRoot:`Farmhand notification-container`},content:snackbarProviderContentCallback,maxSnack:4,children:[l&&(0,import_jsx_runtime.jsx)(Redirect,{to:l}),(0,import_jsx_runtime.jsxs)(FarmhandContext.Provider,{value:{gameState:t,handlers:n},children:[(0,import_jsx_runtime.jsxs)(Div,{className:(0,import_classnames.default)(`Farmhand farmhand-root fill`,u.isMenuOpen?`menu-open`:`menu-closed`,{"use-alternate-end-day-button-position":u.useAlternateEndDayButtonPosition,"block-input":a,"has-booted":u.hasBooted}),sx:e=>({...fillSx,display:`flex`,paddingTop:`3.5em`,position:`fixed`,touchAction:`manipulation`,opacity:+!!u.hasBooted,transform:u.hasBooted?`scale(1)`:`scale(0)`,transition:`opacity, transform 200ms`,...a&&{"& button, & input":{filter:`contrast(65%)`,pointerEvents:`none`}},[`@media (min-width: ${breakpoints.smallPhone}px) and (orientation: landscape)`]:{paddingTop:`3em`},[`@media (min-width: ${breakpoints.sm}px)`]:{paddingTop:`4em`},"& .sidebar-wrapper":{display:`flex`},"& .bottom-controls":{alignItems:`center`,bottom:`1em`,display:`flex`,flexFlow:`column`,justifyContent:`center`,left:`50%`,opacity:.85,position:`fixed`,transition:e.transitions.create(`left`,{duration:e.transitions.duration.enteringScreen,easing:e.transitions.easing.easeOut}),width:0,zIndex:20,[`@media (max-width: ${breakpoints.mediumPhone}px)`]:{bottom:`0.5em`},"& .MuiMobileStepper-root":{background:`none`},"& .fab-buttons":{display:`flex`,flexFlow:`row`,"& button":{margin:`0.5em`,position:`relative`,[`@media (max-width: ${breakpoints.mediumPhone}px)`]:{margin:`0.25em 0.5em`},"@media (max-width: 320px)":{margin:`0.25em 0.1em`}}},...u.isMenuOpen&&{"@media (orientation: landscape)":{left:`calc(50vw + ${layout.sidebarWidth} / 2)`}}},"& .end-day":{position:`fixed`,top:`5em`,right:`1em`,[`@media (min-width: ${breakpoints.sm}px)`]:{right:`1.25em`,top:`5.5em`},...u.useAlternateEndDayButtonPosition&&{right:`auto`,left:`1em`}},"& .menu-button":{transition:e.transitions.create(`transform`,{duration:e.transitions.duration.shorter}),transform:u.isMenuOpen?`rotate(-90deg)`:`rotate(0deg)`}}),children:[(0,import_jsx_runtime.jsx)(UpdateNotifier,{}),(0,import_jsx_runtime.jsx)(Consumer$29,{}),(0,import_jsx_runtime.jsxs)(Drawer,{className:`sidebar-wrapper`,open:t.isMenuOpen,variant:`persistent`,role:`complementary`,PaperProps:{className:`sidebar`,sx:{backgroundImage:`url(${blue_stripe_bg_default})`,boxSizing:`border-box`,overflow:`auto`,padding:`1em 1em 0`,position:`relative`,width:layout.sidebarWidth,zIndex:20,[`@media (max-width: ${breakpoints.smallPhone}px)`]:{width:layout.narrowSidebarWidth},"& .button-array":{display:`flex`,flexWrap:`wrap`,margin:`0.5em 0`}}},children:[(0,import_jsx_runtime.jsx)(Consumer$14,{}),(0,import_jsx_runtime.jsx)(Consumer$24,{}),(0,import_jsx_runtime.jsx)(`div`,{className:`spacer`})]}),(0,import_jsx_runtime.jsx)(Consumer,{}),(0,import_jsx_runtime.jsxs)(`div`,{className:`bottom-controls`,children:[(0,import_jsx_runtime.jsx)(MobileStepper,{variant:`dots`,steps:d.length,position:`static`,activeStep:d.indexOf(u.stageFocus),className:``,backButton:null,nextButton:null}),(0,import_jsx_runtime.jsxs)(`div`,{className:`fab-buttons buttons`,children:[(0,import_jsx_runtime.jsx)(Fab,{"aria-label":`Previous view`,color:`primary`,onClick:f,children:(0,import_jsx_runtime.jsx)(import_KeyboardArrowLeft.default,{})}),(0,import_jsx_runtime.jsx)(Fab,{className:(0,import_classnames.default)(`menu-button`,{"is-open":u.isMenuOpen}),color:`primary`,"aria-label":`Open drawer`,onClick:()=>n.handleMenuToggle(),children:(0,import_jsx_runtime.jsx)(import_Menu.default,{})}),(0,import_jsx_runtime.jsx)(Fab,{"aria-label":`Next view`,color:`primary`,onClick:m,children:(0,import_jsx_runtime.jsx)(import_KeyboardArrowRight.default,{})})]})]}),(0,import_jsx_runtime.jsx)(Tooltip,{placement:`left`,title:(0,import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment,{children:[(0,import_jsx_runtime.jsx)(`p`,{children:`End the day to save your progress and advance the game.`}),(0,import_jsx_runtime.jsx)(`p`,{children:`(shift + c)`})]}),children:(0,import_jsx_runtime.jsx)(Fab,{"aria-label":`End the day to save your progress and advance the game.`,className:`end-day`,color:`error`,onClick:n.handleClickEndDayButton,sx:{zIndex:Z_INDEX.END_DAY_BUTTON},children:(0,import_jsx_runtime.jsx)(import_Hotel.default,{})})})]}),h?(0,import_jsx_runtime.jsx)(ChatRoom,{}):null,(0,import_jsx_runtime.jsx)(NotificationSystem_default,{})]})]})]})})};Farmhand.defaultProps={features:{},localforage:import_localforage.default.createInstance({name:`farmhand`,description:`Persisted game data for Farmhand`}),match:{path:``,params:{}}},Farmhand.propTypes={features:import_prop_types$1.object,history:import_prop_types$1.object,location:import_prop_types$1.object,match:import_prop_types$1.object.isRequired};var FarmhandRoute=e=>(0,import_jsx_runtime.jsx)(Farmhand,{...e,features});import_react_dom.render((0,import_jsx_runtime.jsx)(HashRouter,{hashType:`noslash`,children:(0,import_jsx_runtime.jsx)(Route,{path:[`/online/:room`,`/online`,`/`],component:FarmhandRoute})}),document.getElementById(`root`));
844
+ //# sourceMappingURL=index-DlKpalMp.js.map