27ELNQF5ACGIS3FZ5ITFD4D4NYMLZ2IJ4WDP7QVTMXLBBFIKICFAC GZRMSSTEWT3T2JERC7WCVT727X237UA6MXWVT6OSV5D5BRD4UOGQC NIYF4R7SECNOBIZNKAR627Q5BW7ANIFCKKKPHOM2OZIBVEGYWWZQC 6REHBZAOJN4CVZY4HFXVNEUMWGQUXFTXMLQPXEH7RTH5FBL2TXIAC IZUPWMKDP7DYVZT4LI6WA4X2KGSLZ4GPVAYKDDNJUMRJ6AVZJLAAC B4JS4Z3VVAD5RJJ272S7GJM5BUNIHHMGNK2VSKVGZFPOVFP2YO4QC 6EXHALB3E5HP3IQVC47M4RVZE2JERJHX37GOOHPYIVAFBWSWUX7QC Y7TNTUXM44MRLGA6FEG7J6BR77I7N3AIPZYVPXULOQZQ6PNOWJ7QC Y7VEWZEPUKX2WWPTQCUSIF7YMRUC6JZQNUU5OX3HQDB4GSDSTQZAC PEQNQJYNX7QOEM67QH2UF7VZ43AXHUBO76DN77L43MEFRHVDBO5QC NJ3CLHJNB5S7K7XHXLMDGD3RDVIFIHYNDMFQJF3CUVMAK6E436YQC ZGS4FTTFBXTF2SHYTPAJJBWEUVWVYXPSJVEFI5NYJWTW273B4NHAC TQ57VE45BHV7MOZ6GKTYZEAMAOTXLPQ3ROCWJ2FUCITQWOYVMUIAC FEYZALRNZQFN7QWCJGGTHHAYUN2OSSWD7SITQMOZIGQFUMWRFFCQC WTINQMZSNRT5MSAXLMMZVM6OU6TMD4AP4OEUYAXZUFNY5IWFLZSQC DHO4JCJIELKX4R42XXAMAHVQTTE6OWULLP2QF4BXO3UWC5UTMSMAC ANA23YLFENNJU3UZDZKIKGZJLM46AM2LQEQ7SPRUVRMOQGDG4DFAC 3UFL673QX2JG7KHTAM7DFH4BBYVHDNMXBS2RW45G3JBNFZFLSRRQC NKWFGTCM6HM35MAJAREANFQS76ALYOD7K6FT77X5HQPBCRAPXVRAC WO2ALETBVNH7N3NXJ6JKWCQ2YIZN6LBO7WEXPHAT3EQQJEUCJITQC WPC667PRTGRE7BNP6E7ZCQIKXYMIHJT3LUTTQT7VX2HQVRBXNIKAC export const UseGameStateContext = React.createContext<[DeepReadonly<GameState>, UpdaterGeneratorType2<GameState>, () => void]>([] as any);
export const UseGameStateContext = React.createContext<[Const<GameState>, UpdaterGeneratorType2<GameState>, () => void]>([] as any);
export type DeepReadonly<T> = T extends Function ? T : {readonly [P in keyof T]: T[P] extends { [k: string]: any } ? DeepReadonly<T[P]> : T[P];
/*** A deep readonly type - given an object type, all subobjects and their subobjects are also marked as readonly.*/export type Const<T> = T extends Function ? T : {readonly [P in keyof T]: T[P] extends { [k: string]: any } ? Const<T[P]> : T[P];
// Twice, actually, because of react dev mode double-calling stuff
/*** Asserts that a function is not called more than twice. Useful for debugging react lifecycle which may be creating more objects than you realize, impacting performance.* @param id identifier*/
/*** Class representing a value which is only computed when used.** Usage: const lazy = new Lazy(() => thingThatReturnsSomething()).* Then thingThatReturnsSomething() will only get called on the first time lazy.get() is called.* On the second and subsequent times, lazy.get() will return the same object - the factory method is not called again.*/