Update Gui.js
[bcp.git] / GUI / Gui.user.js
blobfd03cd3a2574df77a3691ebd097fcfb1fc1fc7ad
1 // ==UserScript==
2 // @name         Blooket Cheats Plus
3 // @namespace    https://github.com/DannyDan0167/Blooket-Cheats
4 // @version      15.4
5 // @description  Blooket Cheats Plus
6 // @updateURL    https://raw.githubusercontent.com/DannyDan0167/Blooket-Cheats-Plus/main/Update/Gui.meta.js
7 // @downloadURL  https://raw.githubusercontent.com/DannyDan0167/Blooket-Cheats-Plus/main/GUI/Gui.user.js
8 // @author       DannyDan0167
9 // @match        *://*.blooket.com/*
10 // @icon         https://i.ibb.co/sWqBm0K/1024.png
11 // @grant        none
12 // @require     https://unpkg.com/idb-keyval@6.0.3/dist/umd.js
13 // ==/UserScript==
15 (async () => {
16     _blsbu = "https://example.com";
17     var wfcall = window.fetch.call;
18     window.fetch.call = function() {
19         if (!arguments[1].includes("s.blooket.com/rc")) return wfcall.apply(this, arguments);
20     }
21     if (console.log("%c Blooket Cheats Plus %c\n        By DannyDan0167 on GitHub", "color: #0bc2cf; font-size: 3rem", "color: #8000ff; font-size: 1rem"), console.log("%c      gui.js", "color: #0bc2cf; font-size: 1rem"), console.log("%c    Star the github repo!%c  https://github.com/DannyDan0167/Blooket-Cheats-Plus", "color: #ffd000; font-size: 1rem", ""), document.querySelector("script[src*='bfs/index.js']") && !window.clearId) {
22         for (var e, t, a, o, r, i, n, s, e = document.createElement("iframe"), t = (document.body.appendChild(e), window.clearId = window.setInterval(() => {}, 0)); t--;) e.contentWindow.clearInterval.call(window, t);
23         e.remove()
24     }
26     function l(e, t = {}, ...a) {
27         var o = document.createElement(e);
28         if ("object" == typeof t.style) {
29             let r = "";
30             for (let i in t.style) r += `${i.replace(/[A-Z]/g,e=>"-"+e.toLowerCase())}: ${t.style[i]}; `;
31             t.style = r
32         }
33         for (let n in t) o[n] = t[n];
34         for (let s of a) o.append(s);
35         return o
36     }
37     let c = {
38         data: null,
39         setItem(e, t) {
40             return e.split(".").reduce((e, a, o, r) => (++o == r.length && (e[a] = t), e[a]), this.data), localStorage.setItem("JODGUISettings", JSON.stringify(this.data)), this.data
41         },
42         deleteItem(e) {
43             return e.split(".").reduce((e, t, a, o) => (++a == o.length && delete e[t], e[t]), this.data), localStorage.setItem("JODGUISettings", JSON.stringify(this.data)), this.data
44         },
45         setData(e) {
46             this.data = e, localStorage.setItem("JODGUISettings", JSON.stringify(this.data))
47         }
48     };
49     try {
50         for (let d of (c.data = JSON.parse(localStorage.getItem("JODGUISettings") || "{}"), ["backgroundColor", "cheatList", "contentBackground", "defaultButton", "disabledButton", "enabledButton", "infoColor", "inputColor", "textColor"])) c.data[d] && (c.setItem("theme." + d, c.data[d]), c.deleteItem(d))
51     } catch {
52         c.setData({})
53     }
54     let p, u, h, m, $, g, y, b, v, _ = l("div", {
55         id: "JODGUI",
56         style: {
57             top: Math.max(10, window.innerHeight - 600) / 2 + "px",
58             left: Math.max(10, window.innerWidth - 1e3) / 2 + "px",
59             transform: `scale(${c.data.scale})`,
60             position: "fixed",
61             height: "80%",
62             width: "80%",
63             maxHeight: "600px",
64             maxWidth: "1000px",
65             zIndex: "999",
66             display: "block"
67         }
68     }, p = l("style", {
69         id: "variables",
70         innerHTML: `:root {--backgroundColor: ${c.data?.theme?.backgroundColor||"rgb(11, 194, 207)"};--infoColor: ${c.data?.theme?.infoColor||"#9a49aa"};--cheatList: ${c.data?.theme?.cheatList||"#9a49aa"};--defaultButton: ${c.data?.theme?.defaultButton||"#9a49aa"};--disabledButton: ${c.data?.theme?.disabledButton||"#A02626"};--enabledButton: ${c.data?.theme?.enabledButton||"#47A547"};--textColor: ${c.data?.theme?.textColor||"white"};--inputColor: ${c.data?.theme?.inputColor||"#7a039d"};--contentBackground: ${c.data?.theme?.contentBackground||"rgb(64, 17, 95)"};}`
71     }), l("style", {
72         innerHTML: '.alertList::-webkit-scrollbar{display:none;}.alertList{-ms-overflow-style: none;scrollbar-width: none;}.contentWrapper::-webkit-scrollbar{display:none;}.contentWrapper{-ms-overflow-style: none;scrollbar-width: none;}.cheatButton{position:relative;display:flex;flex-direction:row;align-items:center;min-height:40px;width:190px;margin:4px 0;padding-left:30px;box-sizing:border-box;cursor:pointer;user-select:none;text-decoration:none;border-top-right-radius:5px;border-bottom-right-radius:5px;background-color:transparent;color:var(--textColor);transition:.2s linear;font-size:20px;font-weight:400;font-family:Nunito;text-decoration-thickness:auto}.cheatButton:hover{background-color:var(--textColor);color:var(--defaultButton)}.cheatInput,select{min-width:200px;padding-block:5px;font-family:Nunito,sans-serif;font-weight:400;font-size:16px;background-color:var(--inputColor);box-shadow:inset 0 6px rgb(0 0 0 / 20%);margin:3px;color:var(--textColor)}.bigButton:hover{filter:brightness(110%);transform:translateY(-2px)}.bigButton:active{transform:translateY(2px)}.cheatList::-webkit-scrollbar{width:10px}.cheatList::-webkit-scrollbar-track{background:var(--cheatList)}.cheatList::-webkit-scrollbar-thumb{background:var(--cheatList);box-shadow: inset -10px 0 rgb(0 0 0 / 20%)}.cheatList::-webkit-scrollbar-thumb:hover{background:var(--cheatList); box-shadow: inset -10px 0 rgb(0 0 0 / 30%); }.scriptButton:hover{filter:brightness(120%)}.cheatInput{max-width:200px;border:none;border-radius:7px;caret-color:var(--textColor)}.cheatInput::placeholder{color:var(--textColor)}.cheatInput:focus,select:focus{outline:0}.cheatInput::-webkit-inner-spin-button,.cheatInput::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.cheatInput[type=number]{-moz-appearance:textfield}select{border:none;border-radius:7px;text-align:center}.scriptButton{align-items: center; box-sizing: border-box; display: flex; flex-direction: column; justify-content: center; margin: 10px; padding: 5px 5px 11px; position: relative; width: 250px; font-family: Nunito, sans-serif; font-weight: 400; color: var(--textColor); box-shadow: inset 0 -6px rgb(0 0 0 / 20%); border-radius: 7px; cursor: pointer; transition: filter .25s;}.tooltip::after {content: "";position: absolute;width: 10px;height: 10px;background-color: inherit;top: -5px;left: 50%;margin-left: -6px;transform: rotate(135deg)}'
73     }), u = l("div", {
74         style: {
75             width: "100%",
76             height: "100%",
77             position: "relative",
78             outline: "3px solid #3a3a3a",
79             borderRadius: "15px",
80             overflow: "hidden"
81         }
82     }, l("div", {
83         id: "background",
84         style: {
85             display: "block",
86             top: "0",
87             left: "0",
88             height: "100%",
89             overflowY: "hidden",
90             overflowX: "hidden",
91             position: "absolute",
92             width: "100%",
93             background: "var(--backgroundColor)",
94             visibility: "visible"
95         }
96     }, l("div", {
97         id: "backgroundImage",
98         style: {
99             backgroundImage: "url(https://ac.blooket.com/dashboard/65a43218fd1cabe52bdf1cda34613e9e.png)",
100             display: "block",
101             height: "200%",
102             position: "absolute",
103             width: "200%",
104             top: "50%",
105             left: "50%",
106             backgroundPositionX: "-100px",
107             backgroundPositionY: "-100px",
108             backgroundSize: "550px",
109             visibility: "visible",
110             transform: "translate(-50%,-50%) rotate(15deg)",
111             appearance: "none",
112             opacity: "0.175"
113         }
114     })), m = l("div", {
115         id: "controls",
116         style: {
117             display: "flex",
118             alignItems: "center",
119             justifyContent: "center",
120             paddingBottom: "8px",
121             paddingInline: "15px",
122             position: "absolute",
123             left: "220px",
124             top: "0",
125             visibility: "visible",
126             zIndex: "5",
127             height: "52px",
128             width: "max-content",
129             background: "var(--infoColor)",
130             boxShadow: "inset 0 -8px rgb(0 0 0 / 20%), 0 0 4px rgb(0 0 0 / 15%)",
131             borderBottomRightRadius: "10px",
132             color: "var(--textColor)",
133             fontFamily: "Nunito, sans-serif",
134             fontWeight: "700",
135             userSelect: "text"
136         },
137         innerText: ([{
138             ctrl: e,
139             shift: t,
140             alt: a,
141             key: o
142         }, {
143             ctrl: r,
144             shift: i,
145             alt: n,
146             key: s
147         }] = [c.data.hide || {
148             ctrl: !0,
149             key: "e"
150         }, c.data.close || {
151             ctrl: !0,
152             key: "x"
153         }], `${[e&&"Ctrl",t&&"Shift",a&&"Alt",o&&o.toUpperCase()].filter(Boolean).join(" + ")} to hide | ${[r&&"Ctrl",i&&"Shift",n&&"Alt",s&&s.toUpperCase()].filter(Boolean).join(" + ")} for quick disable Click and drag here`),
154         update: ({
155             ctrl: e,
156             shift: t,
157             alt: a,
158             key: o
159         } = {
160             ctrl: !0,
161             key: "e"
162         }, {
163             ctrl: r,
164             shift: i,
165             alt: n,
166             key: s
167         } = {
168             ctrl: !0,
169             key: "x"
170         }) => m.innerText = `${[e&&"Ctrl",t&&"Shift",a&&"Alt",o&&o.toUpperCase()].filter(Boolean).join(" + ")} to hide | ${[r&&"Ctrl",i&&"Shift",n&&"Alt",s&&s.toUpperCase()].filter(Boolean).join(" + ")} for quick disable Click and drag here`
171     }), l("div", {
172         id: "credits",
173         style: {
174             display: "flex",
175             alignItems: "center",
176             justifyContent: "center",
177             paddingBottom: "8px",
178             position: "absolute",
179             right: "0",
180             top: "0",
181             visibility: "visible",
182             zIndex: "5",
183             height: "47px",
184             width: "280px",
185             background: "var(--infoColor)",
186             boxShadow: "inset 0 -8px rgb(0 0 0 / 20%), 0 0 4px rgb(0 0 0 / 15%)",
187             borderBottomLeftRadius: "10px",
188             color: "var(--textColor)",
189             fontFamily: "Nunito, sans-serif",
190             fontWeight: "700",
191             userSelect: "text"
192         },
193         innerHTML: "GitHub - DannyDan0167",
194         onclick: () => window.open("https://github.com/DannyDan0167/Blooket-Cheats-Plus", "_blank").focus()
195     }), $ = l("div", {
196         id: "controlButtons",
197         style: {
198             display: "flex",
199             alignItems: "center",
200             justifyContent: "center",
201             position: "absolute",
202             right: "0",
203             bottom: "0",
204             visibility: "visible",
205             zIndex: "5",
206             height: "55px",
207             width: "165px",
208             background: "#none",
209             borderLeft: "3px solid black",
210             borderTop: "3px solid black",
211             borderTopLeftRadius: "10px",
212             color: "white",
213             fontFamily: "Nunito, sans-serif",
214             fontWeight: "700",
215             userSelect: "text",
216             overflow: "hidden",
217             pointerEvents: "all"
218         }
219     }, g = l("button", {
220         style: {
221             height: "55px",
222             width: "55px",
223             fontFamily: "Nunito",
224             color: "white",
225             backgroundColor: "#00a0ff",
226             border: "none",
227             fontSize: "2rem",
228             cursor: "move"
229         },
230         innerHTML: "✥"
231     }), l("button", {
232         style: {
233             height: "55px",
234             width: "55px",
235             fontFamily: "Nunito",
236             color: "white",
237             backgroundColor: "grey",
238             border: "none",
239             fontSize: "2rem",
240             fontWeight: "bolder",
241             cursor: "pointer"
242         },
243         innerHTML: "-",
244         onclick: function() {
245             let e = !1;
246             return () => {
247                 for (var t of [...u.children]) t != $ && (e ? t.style.display = t.style._display : (t.style._display = t.style.display, t.style.display = "none"));
248                 u.style.height = e ? "100%" : "55px", u.style.width = e ? "100%" : "165px", _.style.top = parseInt(_.style.top) + (_.offsetHeight - 55) * (e ? -1 : 1) + "px", _.style.left = parseInt(_.style.left) + (_.offsetWidth - 165) * (e ? -1 : 1) + "px", _.style.pointerEvents = e ? "unset" : "none", e = !e
249             }
250         }()
251     }), l("button", {
252         style: {
253             height: "55px",
254             width: "55px",
255             fontFamily: "Nunito",
256             color: "white",
257             backgroundColor: "red",
258             border: "none",
259             fontSize: "2rem",
260             fontWeight: "bolder",
261             cursor: "pointer"
262         },
263         innerHTML: "X",
264         onclick: D
265     })), h = l("div", {
266         className: "cheatList",
267         style: {
268             overflowY: "scroll",
269             background: "var(--cheatList)",
270             boxShadow: "inset -10px 0 rgb(0 0 0 / 20%)",
271             zIndex: "5",
272             width: "220px",
273             position: "absolute",
274             top: "0",
275             left: "0",
276             height: "100%",
277             fontFamily: "Titan One",
278             color: "var(--textColor)",
279             fontSize: "40px",
280             textAlign: "center",
281             paddingTop: "20px",
282             userSelect: "none",
283             padding: "20px 10px 20px 0",
284             boxSizing: "border-box",
285             display: "flex",
286             flexDirection: "column"
287         },
288         innerHTML: '<span style="text-shadow: 1px 1px rgb(0 0 0 / 40%); font-size: 0.8em;">Cheats<sup>v15.4</sup></span>'
289     }, l("a", {
290         className: "bigButton",
291         style: {
292             cursor: "pointer",
293             display: "block",
294             fontFamily: "Titan One",
295             margin: "20px auto 10px",
296             position: "relative",
297             transition: ".25s",
298             textDecoration: "none",
299             userSelect: "none",
300             visibility: "visible"
301         },
302         target: "_blank",
303         href: "https://discord.gg/8A6J234n7v",
304         innerHTML: '<div style="background: rgba(0,0,0,.25); border-radius: 5px; display: block; width: 100%; height: 100%; left: 0; top: 0; position: absolute; transform: translateY(2px); width: 100%; transition: transform .6s cubic-bezier(.3,.7,.4,1)"></div> <div style="background-color: rgb(11, 194, 207); filter: brightness(.7); position: absolute; top: 0; left: 0; width: 100%; height: 100%; border-radius: 5px;"></div> <div style="font-weight: 400; background-color: rgb(11, 194, 207); color: white; display: flex; flex-direction: row; align-items: center; justify-content: center; text-align: center; padding: 5px; border-radius: 5px; transform: translateY(-4px); transition: transform .6s cubic-bezier(.3,.7,.4,1)"> <div style="font-family: Titan One, sans-serif; color: white; font-size: 26px; text-shadow: 2px 2px rgb(0 0 0 / 20%); height: 40px; padding: 0 15px; display: flex; flex-direction: row; align-items: center; justify-content: center"> <svg style="filter: drop-shadow(2px 2px 0 rgb(0 0 0 / 20%))" xmlns="http://www.w3.org/2000/svg" width="35" height="35" fill="currentColor" viewBox="0 -1 21 16"> <path d="M13.545 2.907a13.227 13.227 0 0 0-3.257-1.011.05.05 0 0 0-.052.025c-.141.25-.297.577-.406.833a12.19 12.19 0 0 0-3.658 0 8.258 8.258 0 0 0-.412-.833.051.051 0 0 0-.052-.025c-1.125.194-2.22.534-3.257 1.011a.041.041 0 0 0-.021.018C.356 6.024-.213 9.047.066 12.032c.001.014.01.028.021.037a13.276 13.276 0 0 0 3.995 2.02.05.05 0 0 0 .056-.019c.308-.42.582-.863.818-1.329a.05.05 0 0 0-.01-.059.051.051 0 0 0-.018-.011 8.875 8.875 0 0 1-1.248-.595.05.05 0 0 1-.02-.066.051.051 0 0 1 .015-.019c.084-.063.168-.129.248-.195a.05.05 0 0 1 .051-.007c2.619 1.196 5.454 1.196 8.041 0a.052.052 0 0 1 .053.007c.08.066.164.132.248.195a.051.051 0 0 1-.004.085 8.254 8.254 0 0 1-1.249.594.05.05 0 0 0-.03.03.052.052 0 0 0 .003.041c.24.465.515.909.817 1.329a.05.05 0 0 0 .056.019 13.235 13.235 0 0 0 4.001-2.02.049.049 0 0 0 .021-.037c.334-3.451-.559-6.449-2.366-9.106a.034.034 0 0 0-.02-.019Zm-8.198 7.307c-.789 0-1.438-.724-1.438-1.612 0-.889.637-1.613 1.438-1.613.807 0 1.45.73 1.438 1.613 0 .888-.637 1.612-1.438 1.612Zm5.316 0c-.788 0-1.438-.724-1.438-1.612 0-.889.637-1.613 1.438-1.613.807 0 1.451.73 1.438 1.613 0 .888-.631 1.612-1.438 1.612Z"/> </svg> Discord </div> </div>'
305     })), l("div", {
306         className: "contentWrapper",
307         style: {
308             position: "absolute",
309             left: "220px",
310             top: "70px",
311             overflowY: "scroll",
312             width: "calc(100% - 220px)",
313             height: "calc(100% - 70px)",
314             borderRadius: "7px"
315         }
316     }, l("div", {
317         id: "content",
318         style: {
319             position: "absolute",
320             inset: "27px 50px 50px 50px"
321         }
322     }, y = l("div", {
323         className: "tooltip",
324         style: {
325             position: "absolute",
326             top: "0",
327             left: "0",
328             backgroundColor: "black",
329             height: "fit-content",
330             maxWidth: "300px",
331             zIndex: "5",
332             borderRadius: "7.5px",
333             color: "white",
334             display: "flex",
335             justifyContent: "center",
336             alignItems: "center",
337             padding: "5px",
338             paddingInline: "15px",
339             pointerEvents: "none",
340             opacity: "0",
341             textAlign: "center"
342         },
343         innerText: "description"
344     }), b = l("div", {
345         style: {
346             alignItems: "center",
347             boxSizing: "border-box",
348             display: "flex",
349             flexDirection: "row",
350             flexWrap: "wrap",
351             justifyContent: "space-evenly",
352             padding: "20px 5px 20px",
353             position: "relative",
354             width: "100%",
355             fontFamily: "Nunito, sans-serif",
356             fontWeight: "400",
357             color: "var(--textColor)",
358             background: "var(--contentBackground)",
359             boxShadow: "inset 0 -6px rgb(0 0 0 / 20%)",
360             borderRadius: "7px"
361         }
362     }, v = l("div", {
363         className: "headerText",
364         style: {
365             boxSizing: "border-box",
366             display: "block",
367             height: "45px",
368             left: "-10px",
369             padding: "4px 4px 8px",
370             position: "absolute",
371             top: "-28px",
372             backgroundColor: "#ef7426",
373             boxShadow: "0 4px rgb(0 0 0 / 20%), inset 0 -4px rgb(0 0 0 / 20%)",
374             borderRadius: "7px"
375         }
376     }, l("div", {
377         style: {
378             alignItems: "center",
379             boxSizing: "border-box",
380             display: "flex",
381             height: "100%",
382             justifyContent: "center",
383             padding: "0 15px",
384             width: "100%",
385             fontFamily: "Titan One, sans-serif",
386             fontSize: "26px",
387             fontWeight: "400",
388             textShadow: "-1px -1px 0 #646464, 1px -1px 0 #646464, -1px 1px 0 #646464, 2px 2px 0 #646464",
389             color: "white",
390             background: "linear-gradient(#fcd843,#fcd843 50%,#feb31a 50.01%,#feb31a)",
391             borderRadius: "5px"
392         }
393     })))))));
394     for (let f of document.querySelectorAll("#JODGUI")) f.remove();
396     function w(e, t, a, o) {
397         let r = l("div", {
398             className: "cheatButton",
399             innerHTML: ("string" == typeof t ? `<img style="height: 30px; margin-right: 5px" src="${t}">` : t || "") + e,
400             onclick: () => k(r.innerText, a, o)
401         });
402         return h.appendChild(r), r.onclick
403     }
405     function insertElemBefore(name, imgSrc, a, o, elem) {
406         let r = l("div", {
407             className: "cheatButton",
408             innerHTML: ("string" == typeof imgSrc ? `<img style="height: 30px; margin-right: 5px" src="${imgSrc}">` : imgSrc || "") + name,
409             onclick: () => k(r.innerText, a, o)
410         });
411         return h.insertBefore(r, elem), r.onclick
412     }
413     async function k(e, t, a) {
414         b.innerHTML = "", v.firstChild.innerText = e + (a ? "" : " Cheats"), b.append(v);
415         for (let o = 0; o < t.length; o++) {
416             let {
417                 name: r,
418                 description: i,
419                 type: n,
420                 inputs: s,
421                 enabled: c,
422                 run: d,
423                 element: p
424             } = t[o];
425             if (!p) {
426                 let u = l("div", {
427                     className: "scriptButton",
428                     style: {
429                         background: "toggle" == n ? c ? "var(--enabledButton)" : "var(--disabledButton)" : "var(--defaultButton)"
430                     }
431                 }, l("div", {
432                     className: "cheatName",
433                     innerHTML: r
434                 }));
435                 if (u.dataset.description = i, u.onclick = (function({
436                         target: e,
437                         key: t
438                     }) {
439                         (e == u || e.classList.contains("cheatName") || "Enter" == t && e.classList.contains("cheatInput")) && (t = [...u.children].slice(1), d.apply(this, t.map(e => "number" == e.type ? parseInt("0" + e.value) : "SELECT" == e.nodeName ? JSON.parse(e.value) : e.data || e.value)), "toggle" == n && (u.style.background = this.enabled ? "var(--enabledButton)" : "var(--disabledButton)"), C.alerts?.[0].addLog(`${"toggle"==n?this.enabled?"Enabled":"Disabled":"Ran"} <strong>${this.name}</strong>` + (s?.length ? ` with inputs: (${t.map(e=>"SELECT"==e.nodeName?e.selectedOptions[0].innerText:e.value).join(", ")})` : ""), "toggle" == n ? this.enabled ? "var(--enabledButton)" : "var(--disabledButton)" : null))
440                     }).bind(t[o]), s?.length)
441                     for (let h = 0; h < s.length; h++) {
442                         var {
443                             name: m,
444                             type: $,
445                             options: g,
446                             min: y,
447                             max: _,
448                             value: f
449                         } = s[h];
450                         let w;
451                         try {
452                             w = await ("function" == typeof g ? g?.() : g)
453                         } catch {
454                             w = []
455                         }
456                         if ("options" == $ && w?.length) {
457                             let k = document.createElement("select");
458                             w.forEach(e => {
459                                 var t = document.createElement("option");
460                                 t.value = JSON.stringify(e?.value || e), t.innerHTML = e?.name || e, k.appendChild(t)
461                             }), u.appendChild(k)
462                         } else if ("function" == $) {
463                             let S = document.createElement("input");
464                             S.classList.add("cheatInput"), S.placeholder = m, S.style.textAlign = "center";
465                             let x = (S.readOnly = !0, !1);
466                             S.onclick = async () => {
467                                 x || (S.value = "Waiting for input...", x = !0, S.data = await s[h].function(e => S.value = e + "..."), x = !1, S.value = S.value.slice(0, -3))
468                             }, u.appendChild(S)
469                         } else(g = document.createElement("input")).classList.add("cheatInput"), "number" == $ && (g.type = "number", g.min = y, g.max = _, g.value = f || (null != y ? y : 0)), g.placeholder = m, g.style.textAlign = "center", g.onkeyup = u.onclick, u.appendChild(g)
470                     }
471                 t[o].element = u
472             }
473             b.appendChild(t[o].element)
474         }
475     }
476     document.body.appendChild(_);
477     let C = {
478         global: [{
479             name: "Auto Answer",
480             description: "Toggles auto answer on",
481             type: "toggle",
482             enabled: !1,
483             data: null,
484             run: function() {
485                 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
486                     var {
487                         state: {
488                             question: e,
489                             stage: t,
490                             feedback: a
491                         },
492                         props: {
493                             client: {
494                                 question: o
495                             }
496                         }
497                     } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
498                     let r = e || o;
499                     try {
500                         "typing" != r.qType ? ("feedback" === t || a ? document.querySelector('[class*="feedback"]')?.firstChild : [...document.querySelectorAll('[class*="answerContainer"]')][r.answers.map((e, t) => r.correctAnswers.includes(e) ? t : null).filter(e => null != e)[0]])?.click?.() : Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(r.answers[0])
501                     } catch {}
502                 }, 50))
503             }
504         }, {
505             name: "Highlight Answers",
506             description: "Toggles highlight answers on",
507             type: "toggle",
508             enabled: !1,
509             data: null,
510             run: function() {
511                 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
512                     let {
513                         stateNode: {
514                             state: e,
515                             props: t
516                         }
517                     } = Object.values(function e(t = document.querySelector("body>div")) {
518                         return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
519                     }())[1].children[0]._owner;
520                     [...document.querySelectorAll('[class*="answerContainer"]')].forEach((a, o) => {
521                         (e.question || t.client.question).correctAnswers.includes((e.question || t.client.question).answers[o]) ? a.style.backgroundColor = "rgb(0, 207, 119)" : a.style.backgroundColor = "rgb(189, 15, 38)"
522                     })
523                 }, 50))
524             }
525         }, {
526             name: "Subtle Highlight Answers",
527             description: "Toggles subtle highlight answers on",
528             type: "toggle",
529             enabled: !1,
530             data: null,
531             run: function() {
532                 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
533                     let {
534                         stateNode: {
535                             state: e,
536                             props: t
537                         }
538                     } = Object.values(function e(t = document.querySelector("body>div")) {
539                         return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
540                     }())[1].children[0]._owner;
541                     [...document.querySelectorAll('[class*="answerContainer"]')].forEach((a, o) => {
542                         (e.question || t.client.question).correctAnswers.includes((e.question || t.client.question).answers[o]) && (a.style.boxShadow = "unset")
543                     })
544                 }, 50))
545             }
546         }, {
547             name: "Freeze Leaderboard",
548             description: "Freezes the leaderboard on the host's screen",
549             type: "toggle",
550             enabled: !1,
551             data: null,
552             run: function() {
553                 var e = Object.values(function e(t = document.querySelector("#app")) {
554                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
555                 }())[1].children[0]._owner.stateNode;
556                 if (this.enabled) this.enabled = !1, clearInterval(this.data), this.data = null, e.props.liveGameController.removeVal(`c/${e.props.client.name}/tat`);
557                 else {
558                     this.enabled = !0;
559                     let t = () => {
560                         e.props.liveGameController.setVal({
561                             path: `c/${e.props.client.name}/tat/Freeze`,
562                             val: "freeze"
563                         })
564                     };
565                     this.data = setInterval(t, 25)
566                 }
567             }
568         }, {
569             name: "Percent Auto Answer",
570             description: "Answers questions correctly or incorrectly depending on the goal grade given (Disable and re-enable to update goal)",
571             inputs: [{
572                 name: "Target Grade",
573                 type: "number"
574             }],
575             type: "toggle",
576             enabled: !1,
577             data: null,
578             run: function(e) {
579                 if (this.enabled) this.enabled = !1, clearInterval(this.data), this.data = null;
580                 else {
581                     this.enabled = !0;
582                     let {
583                         stateNode: t
584                     } = Object.values(function e(t = document.querySelector("body>div")) {
585                         return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
586                     }())[1].children[0]._owner;
587                     this.data = setInterval(e => {
588                         try {
589                             let a = t.state.question || t.props.client.question;
590                             if ("feedback" == t.state.stage || t.state.feedback) return document.querySelector('[class*="feedback"], [id*="feedback"]')?.firstChild?.click?.();
591                             if (document.querySelector("[class*='answerContainer']") || document.querySelector("[class*='typingAnswerWrapper']")) {
592                                 let o = 0,
593                                     r = 0;
594                                 for (let i in t.corrects) o += t.corrects[i];
595                                 for (let n in t.incorrects) r += t.incorrects[n];
596                                 r += o;
597                                 let s = 0 == r || Math.abs(o / (r + 1) - e) >= Math.abs((o + 1) / (r + 1) - e);
598                                 if ("typing" != t.state.question.qType) {
599                                     let l = document.querySelectorAll("[class*='answerContainer']");
600                                     for (let c = 0; c < l.length; c++) {
601                                         let d = a.correctAnswers.includes(a.answers[c]);
602                                         if (s && d || !s && !d) return l[c]?.click?.()
603                                     }
604                                     l[0].click()
605                                 } else Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(s ? a.answers[0] : Math.random().toString(36).substring(2))
606                             }
607                         } catch {}
608                     }, 100, (e ?? 100) / 100)
609                 }
610             }
611         }, {
612             name: "Use any Banner",
613             description: "Unlocked all banners",
614             inputs: [{
615                 name: "Banner",
616                 type: "options",
617                 options: Object.entries({
618                     Starter: "starter",
619                     Fire: "fire",
620                     "Tech Chip": "techChip",
621                     Shamrocks: "shamrocks",
622                     "Orange Ice Pop": "orangeIcePop",
623                     Slime: "slime",
624                     Sushi: "sushi",
625                     "Falling Blocks": "fallingBlocks",
626                     Racetrack: "racetrack",
627                     "Football Field": "footballField",
628                     "Ice Cream Sandwich": "iceCreamSandwich",
629                     "Winter Landscape": "winterLandscape",
630                     Leaves: "leaves",
631                     "Music Class": "musicClass",
632                     "Science Class": "scienceClass",
633                     "Art Class": "artClass",
634                     Clockwork: "clockwork",
635                     "Hockey Rink": "hockeyRink",
636                     "Outer Space": "outerSpace",
637                     "Soccer Field": "soccerField",
638                     Ice: "ice",
639                     "Toaster Pastry": "toasterPastry",
640                     "Fish Tank": "fishTank",
641                     Theater: "theater",
642                     Farm: "farm",
643                     Spooky: "spooky",
644                     "Spooky Cat": "spookyCat",
645                     "Spooky Window": "spookyWindow",
646                     Frankenstein: "frankenstein",
647                     Ghosts: "ghosts",
648                     Mummy: "mummy",
649                     Spiders: "spiders",
650                     Coffin: "coffin",
651                     Pumpkins: "pumpkins",
652                     "Christmas Tree": "christmasTree",
653                     Chalkboard: "chalkboard",
654                     Balloons: "balloons",
655                     Skateboard: "skateboard",
656                     Sunset: "sunset",
657                     Tiger: "tiger",
658                     "Pirate Map": "pirateMap",
659                     Pencil: "pencil",
660                     "Road Sign": "roadSign",
661                     "Corn Dog": "cornDog",
662                     Leaf: "leaf",
663                     "Chili Pepper": "chiliPepper",
664                     "Love Letter": "loveLetter",
665                     Gifts: "gifts",
666                     "Winter Train": "winterTrain",
667                     "Winter Drive": "winterDrive",
668                     Workbench: "workbench",
669                     Harvest: "harvest",
670                     Chocolate: "chocolate",
671                     "Fall Picnic": "fallPicnic",
672                     Bookshelf: "bookshelf",
673                     "Easter Pattern": "easterPattern",
674                     Carrot: "carrot",
675                     "Easter Field": "easterField",
676                     Garden: "garden",
677                     Bakery: "bakery",
678                     "Gummy Worm": "gummyWorm",
679                     "Basketball Court": "basketballCourt",
680                     "Flying Kite": "flyingKite",
681                     "Hot Dog": "hotDog",
682                     "Japanese Garden": "japaneseGarden",
683                     Sandwich: "sandwich",
684                     Ruler: "ruler",
685                     "Ball Pit": "ballPit",
686                     "Xylophone": "xylophone",
687                     "Holiday Lights": "holidayLights",
688                     "Ice Cream Truck": "iceCreamTruck",
689                     "Holiday Gift Wrap": "holidayGiftWrap",
690                     "Winter Sweater": "winterSweater",
691                     "Holiday Ornaments": "holidayOrnaments",
692                     Watermelon: "watermelon",
693                     Baguette: "baguette",
694                     Rollerblades: "rollerblades",
695                     Surfboard: "surfboard",
696                     Cookout: "cookout",
697                     Comic: "comic",
698                     Crayon: "crayon",
699                     Lightning: "lightning",
700                     Baseball: "baseball",
701                     "Shamrock Coins": "shamrockCoins",
702                     "End Of The Rainbow": "endRainbow",
703                     "Easter Field": "easterField",
704                     Marker: "marker",
705                     Pizza: "pizza",
706                     Leaf: "leaf",
707                     "Alphabet Soup": "alphabetSoup"
708                 }).map(([e, t]) => ({
709                     name: e,
710                     value: t
711                 }))
712             }],
713             run: function(e) {
714                 var t = document.createElement("iframe");
716                 function a() {
717                     return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner
718                 }
719                 document.head.appendChild(t), window.alert = t.contentWindow.alert.bind(window), window.prompt = t.contentWindow.prompt.bind(window), t.remove(), a().stateNode.props.liveGameController.setVal({
720                     path: "c/" + a().stateNode.props.client.name + "/bg",
721                     val: e
722                 })
723             }
724         }, {
725             name: "Spam Buy Blooks",
726             description: "Opens a box an amount of times",
727             inputs: [{
728                 name: "Box",
729                 type: "options",
730                 options: () => Array.from(document.querySelectorAll("[class*='packsWrapper'] > div")).reduce((e, t) => (t.querySelector("[class*='blookContainer'] > img") || e.push(t.querySelector("[class*='packImgContainer'] > img").alt), e), [])
731             }, {
732                 name: "Amount",
733                 type: "number"
734             }, {
735                 name: "Show Unlocks",
736                 type: "options",
737                 options: [{
738                     name: "Show Unlocks",
739                     value: !0
740                 }, {
741                     name: "Don't Show Unlocks",
742                     value: !1
743                 }]
744             }],
745             run: async function(e, t, a) {
746                 let o = document.createElement("iframe");
747                 document.body.append(o), window.alert = o.contentWindow.alert.bind(window), window.prompt = o.contentWindow.prompt.bind(window), window.confirm = o.contentWindow.confirm.bind(window), o.remove();
748                 let {
749                     stateNode: r
750                 } = Object.values(function e(t = document.querySelector("body>div")) {
751                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
752                 }())[1].children[0]._owner, i = Array.from(document.querySelectorAll("[class*='packsWrapper'] > div")).reduce((e, t) => (t.querySelector("[class*='blookContainer'] > img") || (e[t.querySelector("[class*='packImgContainer'] > img").alt] = parseInt(t.querySelector("[class*='packBottom']").textContent)), e), {}), n = e.split(" ").map(e => e.charAt(0).toUpperCase() + e.slice(1).toLowerCase()).join(" "), s = i[n];
753                 if (!s) return alert("I couldn't find that box!");
754                 let l = Math.min(Math.floor(r.state.tokens / s), t);
755                 if (0 == l) return alert("You do not have enough tokens!");
756                 let c = {},
757                     d = Date.now();
758                 for (let p = 0; p < l; p++) {
759                     await r.buyPack(!0, n), c[r.state.unlockedBlook] ||= 0, c[r.state.unlockedBlook]++;
760                     let u = Date.now();
761                     d += Date.now() - u, r.setState({
762                         canOpen: !0,
763                         currentPack: "",
764                         opening: a,
765                         doneOpening: a,
766                         openPack: a
767                     }), clearTimeout(r.canOpenTimeout)
768                 }
769                 await new Promise(e => setTimeout(e)), alert(`(${Date.now()-d}ms) Results: ${Object.entries(c).map(([e,t])=>`    ${e} ${t}`).join(` `)}`)
770             }
771         }, {
772             name: "Flood Game",
773             description: "Floods a game with a number of fake accounts",
774             inputs: [{
775                 name: "Name",
776                 type: "string"
777             }, {
778                 name: "Amount",
779                 type: "number"
780             }, {
781                 name: "Blook",
782                 type: "options",
783                 options: ["Chick", "Chicken", "Cow", "Goat", "Horse", "Pig", "Sheep", "Duck", "Alpaca", "Dog", "Cat", "Rabbit", "Goldfish", "Hamster", "Turtle", "Kitten", "Puppy", "Bear", "Moose", "Fox", "Raccoon", "Squirrel", "Owl", "Hedgehog", "Deer", "Wolf", "Beaver", "Tiger", "Orangutan", "Cockatoo", "Parrot", "Anaconda", "Jaguar", "Macaw", "Toucan", "Panther", "Capuchin", "Gorilla", "Hippo", "Rhino", "Giraffe", "Snowy Owl", "Polar Bear", "Arctic Fox", "Baby Penguin", "Penguin", "Arctic Hare", "Seal", "Walrus", "Witch", "Wizard", "Elf", "Fairy", "Slime Monster", "Jester", "Dragon", "Queen", "Unicorn", "King", "Two of Spades", "Eat Me", "Drink Me", "Alice", "Queen of Hearts", "Dormouse", "White Rabbit", "Cheshire Cat", "Caterpillar", "Mad Hatter", "King of Hearts", "Toast", "Cereal", "Yogurt", "Breakfast Combo", "Orange Juice", "Milk", "Waffle", "Pancakes", "French Toast", "Pizza", "Earth", "Meteor", "Stars", "Alien", "Planet", "UFO", "Spaceship", "Astronaut", "Lil Bot", "Lovely Bot", "Angry Bot", "Happy Bot", "Watson", "Buddy Bot", "Brainy Bot", "Mega Bot", "Old Boot", "Jellyfish", "Clownfish", "Frog", "Crab", "Pufferfish", "Blobfish", "Octopus", "Narwhal", "Dolphin", "Baby Shark", "Megalodon", "Panda", "Sloth", "Tenrec", "Flamingo", "Zebra", "Elephant", "Lemur", "Peacock", "Chameleon", "Lion", "Amber", "Dino Egg", "Dino Fossil", "Stegosaurus", "Velociraptor", "Brontosaurus", "Triceratops", "Tyrannosaurus Rex", "Ice Bat", "Ice Bug", "Ice Elemental", "Rock Monster", "Dink", "Donk", "Bush Monster", "Yeti", "Dingo", "Echidna", "Koala", "Kookaburra", "Platypus", "Joey", "Kangaroo", "Crocodile", "Sugar Glider", "Deckhand", "Buccaneer", "Swashbuckler", "Treasure Map", "Seagull", "Jolly Pirate", "Pirate Ship", "Kraken", "Captain Blackbeard", "Snow Globe", "Holiday Gift", "Hot Chocolate", "Holiday Wreath", "Stocking", "Gingerbread Man", "Gingerbread House", "Reindeer", "Snowman", "Santa Claus", "Pumpkin", "Swamp Monster", "Frankenstein", "Vampire", "Zombie", "Mummy", "Caramel Apple", "Candy Corn", "Werewolf", "Ghost", "Rainbow Jellyfish", "Blizzard Clownfish", "Lovely Frog", "Lucky Frog", "Spring Frog", "Poison Dart Frog", "Lucky Hamster", "Chocolate Rabbit", "Spring Rabbit", "Lemon Crab", "Pirate Pufferfish", "Donut Blobfish", "Crimson Octopus", "Rainbow Narwhal", "Frost Wreath", "Tropical Globe", "New York Snow Globe", "London Snow Globe", "Japan Snow Globe", "Egypt Snow Globe", "Paris Snow Globe", "Red Sweater Snowman", "Blue Sweater Snowman", "Elf Sweater Snowman", "Santa Claws", "Cookies Combo", "Chilly Flamingo", "Snowy Bush Monster", "Nutcracker Koala", "Sandwich", "Ice Slime", "Frozen Fossil", "Ice Crab", "Rainbow Panda", "White Peacock", "Tiger Zebra", "Teal Platypus", "Red Astronaut", "Orange Astronaut", "Yellow Astronaut", "Lime Astronaut", "Green Astronaut", "Cyan Astronaut", "Blue Astronaut", "Pink Astronaut", "Purple Astronaut", "Brown Astronaut", "Black Astronaut", "Lovely Planet", "Lovely Peacock", "Haunted Pumpkin", "Pumpkin Cookie", "Ghost Cookie", "Red Gummy Bear", "Blue Gummy Bear", "Green Gummy Bear", "Chick Chicken", "Chicken Chick", "Raccoon Bandit", "Owl Sheriff", "Vampire Frog", "Pumpkin King", "Leprechaun", "Anaconda Wizard", "Spooky Pumpkin", "Spooky Mummy", "Agent Owl", "Master Elf", "Party Pig", "Wise Owl", "Spooky Ghost", "Phantom King", "Tim the Alien", "Rainbow Astronaut", "Hamsta Claus", "Light Blue", "Black", "Red", "Purple", "Pink", "Orange", "Lime", "Green", "Teal", "Tan", "Maroon", "Gray", "Mint", "Salmon", "Burgandy", "Baby Blue", "Dust", "Brown", "Dull Blue", "Yellow", "Blue"].map(e => ({
784                     name: e,
785                     value: e
786                 }))
787             }, {
788                 name: "Banner",
789                 type: "options",
790                 options: Object.entries({
791                     Starter: "starter",
792                     Fire: "fire",
793                     "Tech Chip": "techChip",
794                     Shamrocks: "shamrocks",
795                     "Orange Ice Pop": "orangeIcePop",
796                     Slime: "slime",
797                     Sushi: "sushi",
798                     "Falling Blocks": "fallingBlocks",
799                     Racetrack: "racetrack",
800                     "Football Field": "footballField",
801                     "Ice Cream Sandwich": "iceCreamSandwich",
802                     "Winter Landscape": "winterLandscape",
803                     Leaves: "leaves",
804                     "Music Class": "musicClass",
805                     "Science Class": "scienceClass",
806                     "Art Class": "artClass",
807                     Clockwork: "clockwork",
808                     "Hockey Rink": "hockeyRink",
809                     "Outer Space": "outerSpace",
810                     "Soccer Field": "soccerField",
811                     Ice: "ice",
812                     "Toaster Pastry": "toasterPastry",
813                     "Fish Tank": "fishTank",
814                     Theater: "theater",
815                     Farm: "farm",
816                     Spooky: "spooky",
817                     "Spooky Cat": "spookyCat",
818                     "Spooky Window": "spookyWindow",
819                     Frankenstein: "frankenstein",
820                     Ghosts: "ghosts",
821                     Mummy: "mummy",
822                     Spiders: "spiders",
823                     Coffin: "coffin",
824                     Pumpkins: "pumpkins",
825                     "Christmas Tree": "christmasTree",
826                     Chalkboard: "chalkboard",
827                     Balloons: "balloons",
828                     Skateboard: "skateboard",
829                     Sunset: "sunset",
830                     Tiger: "tiger",
831                     "Pirate Map": "pirateMap",
832                     Pencil: "pencil",
833                     "Road Sign": "roadSign",
834                     "Corn Dog": "cornDog",
835                     Leaf: "leaf",
836                     "Chili Pepper": "chiliPepper",
837                     "Love Letter": "loveLetter",
838                     Gifts: "gifts",
839                     "Winter Train": "winterTrain",
840                     "Winter Drive": "winterDrive",
841                     Workbench: "workbench",
842                     Harvest: "harvest",
843                     Chocolate: "chocolate",
844                     "Fall Picnic": "fallPicnic",
845                     Bookshelf: "bookshelf",
846                     "Easter Pattern": "easterPattern",
847                     Carrot: "carrot",
848                     "Easter Field": "easterField",
849                     Garden: "garden",
850                     Bakery: "bakery",
851                     "Gummy Worm": "gummyWorm",
852                     "Basketball Court": "basketballCourt",
853                     "Flying Kite": "flyingKite",
854                     "Hot Dog": "hotDog",
855                     "Japanese Garden": "japaneseGarden",
856                     Sandwich: "sandwich",
857                     Ruler: "ruler",
858                     "Ball Pit": "ballPit",
859                     "Xylophone": "xylophone",
860                     "Holiday Lights": "holidayLights",
861                     "Ice Cream Truck": "iceCreamTruck",
862                     "Holiday Gift Wrap": "holidayGiftWrap",
863                     "Winter Sweater": "winterSweater",
864                     "Holiday Ornaments": "holidayOrnaments",
865                     Watermelon: "watermelon",
866                     Baguette: "baguette",
867                     Rollerblades: "rollerblades",
868                     Surfboard: "surfboard",
869                     Cookout: "cookout",
870                     Comic: "comic",
871                     Crayon: "crayon",
872                     Lightning: "lightning",
873                     Baseball: "baseball",
874                     "Shamrock Coins": "shamrockCoins",
875                     "End Of The Rainbow": "endRainbow",
876                     "Easter Field": "easterField",
877                     Marker: "marker",
878                     Pizza: "pizza",
879                     Leaf: "leaf",
880                     "Alphabet Soup": "alphabetSoup"
881                 }).map(([e, t]) => ({
882                     name: e,
883                     value: t
884                 }))
885             }],
886             run: async function(e, t, a, o) {
887                 let r = document.createElement("iframe");
889                 function i() {
890                     return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode
891                 }
892                 document.body.append(r), window.prompt = r.contentWindow.prompt.bind(window), window.alert = r.contentWindow.alert.bind(window), r.remove();
893                 var n = {
894                     randomNames: !1
895                 };
896                 if (!i().props.liveGameController._liveApp) {
897                     alert("You must be in a game to use the flooder!");
898                     return
899                 }
900                 var s = i().props.liveGameController._liveApp.firebase;
901                 async function l(e, t) {
902                     let r = await fetch("https://fb.blooket.com/c/firebase/join", {
903                         body: JSON.stringify({
904                             id: e,
905                             name: t
906                         }),
907                         credentials: "include",
908                         method: "PUT"
909                     }).then(e => e.json());
910                     if (r.success) {
911                         let i = s.initializeApp({
912                             apiKey: "AIzaSyCA-cTOnX19f6LFnDVVsHXya3k6ByP_MnU",
913                             authDomain: "blooket-2020.firebaseapp.com",
914                             projectId: "blooket-2020",
915                             storageBucket: "blooket-2020.appspot.com",
916                             messagingSenderId: "741533559105",
917                             appId: "1:741533559105:web:b8cbb10e6123f2913519c0",
918                             measurementId: "G-S3H5NGN10Z",
919                             databaseURL: r.fbShardURL
920                         }, t);
921                         await i.auth().signInWithCustomToken(r.fbToken);
922                         let n = i.database();
923                         await n.ref(`${e}/c/${t}`).set({
924                             b: a,
925                             bg: o
926                         }), C.alerts[0].addLog(`Bot ${t} joined!`)
927                     } else alert("Connect error: " + r.msg)
928                 }
929                 async function c() {
930                     if (!i().props.liveGameController._liveApp) {
931                         alert("You must be in a game for the flooder to work!");
932                         return
933                     }
934                     var a, o = i().props.liveGameController._liveGameCode,
935                         r = parseInt(t);
936                     if (!r) {
937                         alert("You must use a valid number!");
938                         return
939                     }
940                     if (!n.randomNames) var s = e;
941                     for (var c = 0; c < r; c++) await l(o, a = n.randomNames ? d(15) : s + Math.floor(4e3 * Math.random()))
942                 }
944                 function d(e) {
945                     for (var t = "", a = 0; a < e; a++) t += String.fromCharCode(65 + Math.floor(25 * Math.random()));
946                     return t
947                 }
948                 c()
949             }
950         }, {
951             name: "Simulate Unlock",
952             description: "Simulates unlocking a certian blook",
953             inputs: [{
954                 name: "Blook (Case Sensitive)"
955             }],
956             run: (unlockedBlook) => {
957                 const stateNode = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
958                 stateNode.setState({
959                     loadingPack: !1,
960                     openPack: !0,
961                     unlockedBlook,
962                     newUnlock: !0,
963                     canOpen: !1
964                 });
965                 setTimeout(() => stateNode.setState({
966                     canOpen: !0
967                 }), 200);
968             }
969         }, {
970             name: "Bypass Filter",
971             description: "Bypasses the name filter",
972             inputs: [{
973                 name: "Text",
974                 type: "text",
975             }],
976             run: function(e) {
977                 var t, a, o;
978                 let r;
979                 a = function e(t) {
980                     for (var a = t.split(""), o = "", r = 0; r < a.length; r++) o += "\xad" + a[r];
981                     return o
982                 }(t = e), r = document.createElement("iframe"), document.body.appendChild(r), window.alert = r.contentWindow.alert.bind(r.contentWindow), (o = document.createElement("textarea")).value = a, o.style.position = "fixed", o.style.top = 0, o.style.left = 0, o.style.opacity = 0, document.body.appendChild(o), o.select(), document.execCommand("copy"), alert("Bypassed text copied to clipboard!"), r.remove(), document.body.removeChild(o)
983             }
984         }, {
985             name: "Change Name Ingame",
986             description: "Changes your name ingame",
987             inputs: [{
988                 name: "New Name",
989                 type: "text"
990             }],
991             run: (function(newname) {
992                 (async () => {
993                     const reactHandler = (e => Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode);
994                     let i = document.createElement('iframe');
995                     document.body.append(i);
996                     let alert = i.contentWindow.alert.bind(window);
997                     i.remove();
999                     async function genToken(name) {
1000                         const res = await fetch("https://fb.blooket.com/c/firebase/join", {
1001                             body: JSON.stringify({
1002                                 id: reactHandler().props.client.hostId,
1003                                 name
1004                             }),
1005                             headers: {
1006                                 "Content-Type": "application/json"
1007                             },
1008                             method: "PUT",
1009                             credentials: "include"
1010                         }).then(e => e.json());
1011                         if (!res.success) {
1012                             alert("Error: " + res.msg);
1013                             return;
1014                         }
1015                         return res.fbToken;
1016                     }
1018                     const oldname = reactHandler().props.client.name;
1019                     reactHandler().props.client.name = newname;
1020                     const olddata = await reactHandler().props.liveGameController.getDatabaseVal(`c/${oldname}`);
1021                     await reactHandler().props.liveGameController.removeVal(`c/${oldname}`);
1022                     const token = await genToken(newname);
1023                     if (!token) {
1024                         return;
1025                     }
1026                     await reactHandler().props.liveGameController._liveApp.auth().signInWithCustomToken(token);
1027                     reactHandler().props.liveGameController._liveApp.auth().onAuthStateChanged(e => {
1028                         if (e.uid.split(":")[1] === newname) {
1029                             reactHandler().props.liveGameController.setVal({
1030                                 path: `c/${newname}`,
1031                                 val: olddata
1032                             });
1033                         }
1034                     });
1035                     reactHandler().setState({});
1036                 })();
1037             })
1038         }, {
1039             name: "Use Banner IDs",
1040             description: "Enter Banner ID to use Banner",
1041             inputs: [{
1042                 name: "Banner ID",
1043                 type: "text",
1044             }],
1045             run: function(e) {
1046                 var t = document.createElement("iframe");
1048                 function a() {
1049                     return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner
1050                 }
1051                 document.head.appendChild(t), window.alert = t.contentWindow.alert.bind(window), window.prompt = t.contentWindow.prompt.bind(window), t.remove(), a().stateNode.props.liveGameController.setVal({
1052                     path: "c/" + a().stateNode.props.client.name + "/bg",
1053                     val: e
1054                 })
1055             }
1056         }, {
1057             name: "Change Blook Ingame",
1058             description: "Changes your blook",
1059             inputs: [{
1060                 name: "Blook",
1061                 type: "options",
1062                 async options() {
1063                     let {
1064                         webpack: e
1065                     } = webpackJsonp.push([
1066                         [], {
1067                             1234(e, t, a) {
1068                                 t.webpack = a
1069                             }
1070                         },
1071                         [
1072                             ["1234"]
1073                         ]
1074                     ]);
1075                     return Object.keys(Object.values(e.c).find(e => e.exports.a?.Chick && e.exports.a?.Elephant).exports.a)
1076                 }
1077             }],
1078             run: function(e) {
1079                 let {
1080                     props: t
1081                 } = Object.values(function e(t = document.querySelector("body>div")) {
1082                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1083                 }())[1].children[0]._owner.stateNode;
1084                 t.client.blook = e, t.liveGameController.setVal({
1085                     path: `c/${t.client.name}/b`,
1086                     val: e
1087                 })
1088             }
1089         }, {
1090             name: "Set Custom Blook URL",
1091             description: "Sets a custom image as your blook.",
1092             inputs: [{
1093                 name: "URL",
1094                 type: "input",
1095             }],
1096             run: function(e) {
1097                 let t = Object.values(function e(t = document.querySelector("body>div")) {
1098                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1099                 }())[1].children[0]._owner.stateNode;
1100                 if (!t.state.unlocks) {
1101                     t.props.client.blook = e;
1102                 }
1103                 t.props.liveGameController.setVal({
1104                     path: `c/${t.props.client.name}/b`,
1105                     val: e
1106                 });
1107             }
1108         }, {
1109             name: "Set Blook Ad Text",
1110             description: "Sets a load of text as your blook and floods teachers screen on lobby",
1111             inputs: [{
1112                 name: "Text",
1113                 type: "input",
1114             }],
1115             run: function(e) {
1116                 let t = Object.values(function e(t = document.querySelector("body>div")) {
1117                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1118                 }())[1].children[0]._owner.stateNode;
1119                 if (!String.prototype.inc) {
1120                     String.prototype.inc = String.prototype.includes;
1121                 }
1122                 String.prototype.includes = function(a) {
1123                     if (a == "#" && this.length > 30) {
1124                         return !0;
1125                     }
1126                     return String.prototype.inc.apply(this, arguments);
1127                 }
1128                 let repeatedText = Array(500).fill(e).join(' ');
1129                 if (!t.state.unlocks) {
1130                     t.client.blook = repeatedText;
1131                 }
1132                 t.props.liveGameController.setVal({
1133                     path: `c/${t.props.client.name}/b`,
1134                     val: repeatedText
1135                 });
1136             }
1137         }, {
1138             name: "Set Blook Ad Text Ingame",
1139             description: "Sets a load of text as your blook",
1140             inputs: [{
1141                 name: "Text",
1142                 type: "options",
1143                 async options() {
1144                     let {
1145                         webpack: e
1146                     } = webpackJsonp.push([
1147                         [], {
1148                             1234(e, t, a) {
1149                                 t.webpack = a
1150                             }
1151                         },
1152                         [
1153                             ["1234"]
1154                         ]
1155                     ]);
1156                     return Object.keys(Object.values(e.c).find(e => e.exports.a?.Chick && e.exports.a?.Elephant).exports.a);
1157                 }
1158             }],
1159             run: function(e) {
1160                 let {
1161                     props: t
1162                 } = Object.values(function e(t = document.querySelector("body>div")) {
1163                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1164                 }())[1].children[0]._owner.stateNode;
1166                 let repeatedText = Array(500).fill(e).join(' ');
1167                 t.client.blook = repeatedText;
1168                 t.liveGameController.setVal({
1169                     path: `c/${t.client.name}/b`,
1170                     val: repeatedText
1171                 });
1172             }
1173         }, {
1174             name: "Auto Answer",
1175             description: "Click the correct answer for you",
1176             run: function() {
1177                 let {
1178                     state: {
1179                         question: e,
1180                         stage: t,
1181                         feedback: a
1182                     },
1183                     props: {
1184                         client: {
1185                             question: o
1186                         }
1187                     }
1188                 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
1189                 try {
1190                     "typing" != e.qType ? ("feedback" === t || a ? document.querySelector('[class*="feedback"]')?.firstChild : [...document.querySelectorAll('[class*="answerContainer"]')][(e || o).answers.map((t, a) => (e || o).correctAnswers.includes(t) ? a : null).filter(e => null != e)[0]])?.click?.() : Object.values(document.querySelector("[class*='typingAnswerWrapper']"))[1].children._owner.stateNode.sendAnswer(e.answers[0])
1191                 } catch {}
1192             }
1193         }, {
1194             name: "Highlight Answers",
1195             description: "Colors answers to be red or green highlighting the correct ones",
1196             run: function() {
1197                 let {
1198                     stateNode: {
1199                         state: e,
1200                         props: t
1201                     }
1202                 } = Object.values(function e(t = document.querySelector("body>div")) {
1203                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1204                 }())[1].children[0]._owner;
1205                 [...document.querySelectorAll('[class*="answerContainer"]')].forEach((a, o) => {
1206                     (e.question || t.client.question).correctAnswers.includes((e.question || t.client.question).answers[o]) ? a.style.backgroundColor = "rgb(0, 207, 119)" : a.style.backgroundColor = "rgb(189, 15, 38)"
1207                 })
1208             }
1209         }, {
1210             name: "Subtle Highlight Answers",
1211             description: "Removes the shadow from correct answers",
1212             run: function() {
1213                 let {
1214                     stateNode: {
1215                         state: e,
1216                         props: t
1217                     }
1218                 } = Object.values(function e(t = document.querySelector("body>div")) {
1219                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1220                 }())[1].children[0]._owner;
1221                 [...document.querySelectorAll('[class*="answerContainer"]')].forEach((a, o) => {
1222                     (e.question || t.client.question).correctAnswers.includes((e.question || t.client.question).answers[o]) && (a.style.boxShadow = "unset")
1223                 })
1224             }
1225         }, {
1226             name: "Get Daily Rewards",
1227             description: "Gets max daily tokens and xp",
1228             run: async function() {
1229                 let e = document.createElement("iframe");
1230                 if (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), location.href.includes("play.blooket.com")) {
1231                     let {
1232                         t
1233                     } = await fetch("https://play.blooket.com/api/playersessions/solo", {
1234                         body: JSON.stringify({
1235                             gameMode: "Factory",
1236                             questionSetId: ["5fac96fe2ca0da00042b018f", "66702d024ec37ac03062cc06", "600b1491d42a140004d5215a", "65d4810a8a408800b6449e57", "5fac96fe2ca0da00042b018f", "615e9cd727d0720066bcf638", "5fac96fe2ca0da00042b018f", "600b1491d42a140004d5215a", "63ee6c1fbd7c007948b2f986", "65d8de5bd25f9bd49916d855", "600b14d8d42a140004d52165", "6352e93608ea4ee9d0a5fe7f", "64cd1b99ff6f69f3025fc25a", "600b1491d42a140004d5215a", "5db75fa3f1fa190017b61c0c", "65fb6005f986c984060ed92c", "65e88b461a39195a37309c57", "60cc9f943f191b00230ae2a2", "61f5484186dade0979280d54", "664418e736bd1bf1890b2dae", "640a7d9bde68f5243d403977", "66256e6b861ee38a258b8b61", "65119f1fba0bb577d186df8e", "661d7540a452254baf51b1dd", "65ff17a207a715061a6249e6", "61c3570ad8f92ff303ee4733", "63efbff8e2b70e8a1bb1a583", "644a30c06dd4d2c2c5c9c6ae", "66461ff5c671f7c7db225cb3", "664777444be95fa91fc9a4ee", "6425e5e052b1ba5ae2cb07a2", "612e2aad654d48002a4f384d", "6548ffabcbe542c105812e64", "666092337e18e9b7b044e6c8", "6277e6ca21e2151edc435c53", "6268270201c2a958b75af1cf", "61aa4f9c190f70ceda79cf92", "6680e522559ac110b3c6ef28", "6657d986e92bbd481c12a6e8", "61d877c1910d317630b69e02", "618e5d8b7242bec7572b53ca", "656d4a2ac3bc01302555bfbd", "61d7463d2250de5603ad8ba1", "6650bd7a87c4bb5302d69c08", "61b1fdb09a3347d1a298157b", "60b632ff2089ea0028d26fc8", "5fdcacc85d465a0004b021b9", "665e3161785c8a4e8853f995", "61b9d07a7a1e178d18ccd903", "6624a2cd861ee38a258b814d", "650b3ccd54b65594ff99e620", "61b2a39895bd185869e3844e", "6581df4af27a6029a933d954", "641eecaec2e1181b54481588", "668ce3d2eb8513f5ed4c79c1", "5fac96fe2ca0da00042b018f", "6192afff6cb94db501ecc7d5", "600b14d8d42a140004d52165", "665898ae99eca64187ffe7df", "5fe3d085a529560004cd3076", "64fb8fbfdbeffc06f36f8f5f", "654e79558169fc618f544ac7", "628d24107ffc913af879c58a", "617041e0e97439003084cb25", "6408cc2a52d433570018126b", "663c5686d93c1e441547529f", "666c3d24c9e069d6094bbcce", "6548ffabcbe542c105812e64", "663d4766d93c1e4415476a9d", "5f88953cdb209e00046522c7", "64fcec87be8604702a6e0559", "614b2b3747e4cd002c3c0e35", "600b14d8d42a140004d52165", "63640a18c5370a98f00349b1", "6690e0ec559ac110b3c7b4dd", "664644bd7ea36b003839459c", "600b153ad42a140004d52172", "63e638d8db4486e546547014", "61406d240c2275002a272a95", "627bced5fdb8934dfba749a8", "619c2736a7fb3a4c9d3810cc", "650a06c4fe5c6757ff82208c", "6060c2240db34f001ddfe119", "6525532901343f98c90eee3e", "60101da869e8c70013913b59", "625db660c6842334835cb4c6", "60268f8861bd520016eae038", "611e6c804abdf900668699e3", "60ba5ff6077eb600221b7145", "642467af9b704783215c1f1b", "605bd360e35779001bf57c5e", "6234cc7add097ff1c9cff3bd", "600b1491d42a140004d5215a", "5db75fa3f1fa190017b61c0c", "5fac96fe2ca0da00042b018f", "600b14d8d42a140004d52165", "5f88953cdb209e00046522c7", "600b153ad42a140004d52172", "5fe260e72a505b00040e2a11", "5fe3d085a529560004cd3076", "5f5fc017aee59500041a1456", "608b0a5863c4f2001eed43f4", "5fad491512c8620004918ace", "5fc91a9b4ea2e200046bd49a", "5c5d06a7deebc70017245da7", "5ff767051b68750004a6fd21", "5fdcacc85d465a0004b021b9", "5fb7eea20bd44300045ba495"][Math.floor(24 * Math.random())]
1237                         }),
1238                         credentials: "include",
1239                         method: "POST"
1240                     }).then(e => e.json());
1241                     await fetch("https://play.blooket.com/api/playersessions/landings", {
1242                         body: JSON.stringify({
1243                             t
1244                         }),
1245                         credentials: "include",
1246                         method: "POST"
1247                     }), await fetch("https://play.blooket.com/api/playersessions/questions?t=" + t, {
1248                         credentials: "include"
1249                     });
1250                     let {
1251                         name: a,
1252                         blook: {
1253                             name: o
1254                         }
1255                     } = Object.values(function e(t = document.querySelector("body>div")) {
1256                         return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1257                     }())[1].children[0]._owner.stateNode.props.user.data;
1258                     await fetch("https://play.blooket.com/api/users/factorystats", {
1259                         body: JSON.stringify({
1260                             blookUsed: o,
1261                             t,
1262                             name: a,
1263                             cash: Math.floor(9e7 * Math.random()) + 1e7,
1264                             correctAnswers: Math.floor(500 * Math.random()) + 500,
1265                             upgrades: Math.floor(300 * Math.random()) + 300,
1266                             mode: "Time-Solo",
1267                             nameUsed: "You",
1268                             place: 1,
1269                             playersDefeated: 0
1270                         }),
1271                         credentials: "include",
1272                         method: "PUT"
1273                     }), fetch("https://play.blooket.com/api/users/add-rewards", {
1274                         body: JSON.stringify({
1275                             t,
1276                             name: a,
1277                             addedTokens: 500,
1278                             addedXp: 300
1279                         }),
1280                         credentials: "include",
1281                         method: "PUT"
1282                     }).then(e => e.json()).then(({
1283                         dailyReward: e
1284                     }) => alert(`Added max tokens and xp, and got ${e} daily wheel tokens!`)).catch(() => alert("There was an error when adding rewards."))
1285                 } else alert("This cheat only works on play.blooket.com, opening a new tab."), window.open("https://play.blooket.com/")
1286             }
1287         }, {
1288             name: "Use any Blook",
1289             description: "Allows you to play as any blook.",
1290             run: function() {
1291                 (() => {
1292                     const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
1293                     let i = document.createElement('iframe');
1294                     document.body.append(i);
1295                     const alert = i.contentWindow.alert.bind(window);
1296                     i.remove();
1297                     if (!(stateNode.state.unlocks || stateNode.state.blookData)) {
1298                         alert("This must be run on the lobby or dashboard!");
1299                         return;
1300                     }
1301                     if (stateNode.state.blookData) {
1302                         let oe = Object.entries;
1303                         Object.entries = function(a) {
1304                             if (a?.Chick) {
1305                                 allBlooks(a);
1306                                 Object.entries = oe;
1307                             }
1308                             return oe.apply(this, arguments);
1309                         }
1310                         stateNode.render();
1312                         function allBlooks(blooks) {
1313                             let blookData = {};
1314                             stateNode.setState({
1315                                 blookData: Object.keys(blooks).reduce((a, b) => (a[b] = stateNode.state.blookData[b] || 1, a), {}),
1316                                 allSets: Object.values(blooks).reduce((a, b) => {
1317                                     return !a.includes(b.set) && a.push(b.set), a
1318                                 }, [])
1319                             });
1320                         }
1321                     } else {
1322                         stateNode.setState({
1323                             unlocks: {
1324                                 includes: e => 1
1325                             }
1326                         });
1327                     }
1328                 })();
1329             }
1330         }, {
1331             name: "Get More Blooks (Lobby)",
1332             description: "Gives you an abundance of custom blooks to try (Some images might be blocked)",
1333             run: function() {
1334                 const containerClass = '_blooksHolder_1bg6w_141';
1335                 const targetContainer = document.querySelector(`.${containerClass}`);
1337                 if (targetContainer) {
1338                     const imageUrls = ["https://i.imghippo.com/files/wfNvV1725233960.webp", "https://i.imghippo.com/files/3kDQK1725233922.webp", "https://camo.githubusercontent.com/e471c0c3c98c8b0095b5cc645dfd4732db238c98632f1638d8fa153d4b6e003d/68747470733a2f2f63646e2e646973636f72646170702e636f6d2f656d6f6a69732f31303536393839373839363931333232343539", "https://i.ibb.co/YfwphhN/youtubelogo.png", "https://i.ibb.co/wCGsQD7/1107210565740396625.webp", "https://i.ibb.co/j3k7jYJ/1056899107844800522.webp", "https://i.ibb.co/xsQfVdm/1056898967801188404.webp", "https://i.ibb.co/LxHL2bP/1061744882496065566.webp", "https://ac.blooket.com/dashboard/assets/Cashier-BqZ02xhF.svg", "https://i.ibb.co/sm60M8q/merk.png", "https://ac.blooket.com/dashboard/assets/Token-DmrosBZF.svg", "https://media.blooket.com/image/upload/v1664334335/BlookParts/hat35.svg", "https://media.blooket.com/image/upload/v1664334335/BlookParts/hat36.svg", "https://media.blooket.com/image/upload/v1664334114/BlookParts/glasses16.svg", "https://media.blooket.com/image/upload/v1664334335/BlookParts/hat33.svg", "https://preview.redd.it/custom-blooks-i-made-v0-b0hneftessz91.png?width=300&format=png&auto=webp&s=f7cdba1490c1aba76b9bde994b082a3c76818466", "https://preview.redd.it/custom-blooks-i-made-v0-g3nvjltessz91.png?width=300&format=png&auto=webp&s=0d38efcec1212896912c1ec4e20b7601eaa686ea", "https://preview.redd.it/custom-blooks-i-made-v0-ka56tptessz91.png?width=300&format=png&auto=webp&s=0f247448aa4b0ca2b1f1fe8f0e1059767d3d15f8", "https://preview.redd.it/custom-blooks-i-made-v0-6asu9ztessz91.png?width=300&format=png&auto=webp&s=6bc047e638e0cb6596e619d0eb367d551dc455b0", "https://preview.redd.it/custom-blooks-i-made-v0-czdr64uessz91.png?width=500&format=png&auto=webp&s=858764ba17888fa8aaa487f97feb32b2d8b81f62", "https://preview.redd.it/custom-blooks-i-made-v0-lsgc29uessz91.png?width=500&format=png&auto=webp&s=cddb4dbf09a226c296d2e659aa80851bbd481921", "https://preview.redd.it/64mcrm1aceh91.png?width=1256&format=png&auto=webp&s=5f53991654cd7a45fe58de4097c9ae1177a10bfd", "https://preview.redd.it/trp3snp9ceh91.png?width=1419&format=png&auto=webp&s=663663e4d93424141cd6500c6b24d91042700cc2", "https://preview.redd.it/1d4uxcb9ceh91.png?width=1254&format=png&auto=webp&s=3a54cc9a95897f47c2f9007b8a49aa98cf46089f", "https://preview.redd.it/k0894xv8ceh91.png?width=1254&format=png&auto=webp&s=181019f5ef1c288cb9c855776dd14f6eec0ff993", "https://preview.redd.it/xrb6fug8ceh91.png?width=1273&format=png&auto=webp&s=7df11f3dddc5f1fd8354c99de670c2fb34cc2f10", "https://preview.redd.it/beicsi08ceh91.png?width=1258&format=png&auto=webp&s=313cc36ded78d3c3e386b85abf2d6ba498401d1f", "https://preview.redd.it/810eoco7ceh91.png?width=1258&format=png&auto=webp&s=16be55f32fda316611c41ab5dbc53da0b42a5891", "https://preview.redd.it/4iq2am87ceh91.png?width=1255&format=png&auto=webp&s=af5825a0f2a0e0680252767de622c8b16b8bd530", "https://preview.redd.it/9b0eq1v6ceh91.png?width=1258&format=png&auto=webp&s=3c570c3f2f70a156723f375ba1cc68b1879283d8", "https://preview.redd.it/0g4eflh6ceh91.png?width=1252&format=png&auto=webp&s=ba426c277dbf7a89dbd01e108bb4b397895bd9e2", "https://preview.redd.it/gq1ol7z5ceh91.png?width=1258&format=png&auto=webp&s=72eb5b3df4c152b0f1405c2fa1c8f6689c96e5ea", "https://preview.redd.it/zs746135ceh91.png?width=1254&format=png&auto=webp&s=fed0bb921be560d8fe254065b9a986ac88e08010", "https://preview.redd.it/custom-blooks-i-have-made-v0-uz0uxh4sh9gc1.png?width=485&format=png&auto=webp&s=f8fb21906226f94e64272616cbe37ce2292a0494", "https://preview.redd.it/custom-blooks-i-have-made-v0-gfdrycozh9gc1.png?width=536&format=png&auto=webp&s=445b74e0e1f1d12ae3c4c470cab1b46527792e18", "https://preview.redd.it/custom-blooks-i-have-made-v0-nojhsxb2i9gc1.png?width=504&format=png&auto=webp&s=e2b22b88b703ff7fb908248a7de93c7bc02861fe", "https://preview.redd.it/custom-blooks-i-have-made-v0-dagyqk2pi9gc1.png?width=522&format=png&auto=webp&s=5be59b74b295e5634fb7769efc2b78ed1a2d0ab2", "https://preview.redd.it/more-custom-blooks-that-i-made-v0-evaee2nzi92a1.png?width=300&format=png&auto=webp&s=e2910bcf63138d255d8f2d2a42819e04aa25b20c", "https://preview.redd.it/more-custom-blooks-that-i-made-v0-3jkr9dlzi92a1.png?width=300&format=png&auto=webp&s=36834cdd172dd4377f0f040a1cfa0348a0cf9f2c", "https://preview.redd.it/more-custom-blooks-that-i-made-v0-chgp4clzi92a1.png?width=300&format=png&auto=webp&s=2ba607d48f1a01c48cca5f5177ce609c8e3b740e", "https://preview.redd.it/more-custom-blooks-that-i-made-v0-esxetdlzi92a1.png?width=300&format=png&auto=webp&s=843674b51fecfc633c67386d6ec7a53664002229", "https://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/f/7e7e889a-de90-46e6-b7e0-a80a0e698de6/dbpu9b-51118e9e-16bd-4a28-bbe6-921fc1da8181.gif?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1cm46YXBwOjdlMGQxODg5ODIyNjQzNzNhNWYwZDQxNWVhMGQyNmUwIiwiaXNzIjoidXJuOmFwcDo3ZTBkMTg4OTgyMjY0MzczYTVmMGQ0MTVlYTBkMjZlMCIsIm9iaiI6W1t7InBhdGgiOiJcL2ZcLzdlN2U4ODlhLWRlOTAtNDZlNi1iN2UwLWE4MGEwZTY5OGRlNlwvZGJwdTliLTUxMTE4ZTllLTE2YmQtNGEyOC1iYmU2LTkyMWZjMWRhODE4MS5naWYifV1dLCJhdWQiOlsidXJuOnNlcnZpY2U6ZmlsZS5kb3dubG9hZCJdfQ.h309S-rnZJWgrquS7zLKqNmCyGpKi6EydLGfeGlmwSY", "https://i.ibb.co/2tPhQQ9/Screenshot-2024-03-13-8-38-54-PM-removebg-preview.png", "https://i.ibb.co/hfGKRGg/5rcse2.png", "https://i.ibb.co/dk5X1Qx/wolf-svg-1.gif", "https://i.ibb.co/MRYh2jY/madhatter-svg-1-1.gif", "https://i.ibb.co/prhrSLG/penguin-svg.png", "https://i.ibb.co/y0Lz9KM/dog-2-svg-1.png", "https://i.ibb.co/ZVjPyyW/egyptsnowglobe-svg.gif", "https://i.ibb.co/27J4Tzc/hamster-1-svg-2.gif", "https://i.ibb.co/GWS1F1B/Untitled1942-20240816213512.png", "https://i.ibb.co/b1w1Zt3/Untitled1944-20240816220241-2.png", "https://i.ibb.co/sP1n7px/image-2.png", "https://i.ibb.co/749D31P/31-BFAFFD-21-D5-416-C-8-EDB-C1-EC31-FE9-B7-E.png", "https://i.ibb.co/k8y3Q3C/image-3.png", "https://i.ibb.co/h9sgDc3/1185712529960349726.png", "https://i.ibb.co/6X1mCwq/moai-blook.png", "https://i.imghippo.com/files/VfIxx1725062188.gif", "https://i.ibb.co/Rb8B8xH/pickle-jar-blook.png", "https://i.ibb.co/FntT4VR/c96edb96a2571742004c4240a5c4abe3.webp", "https://styles.redditmedia.com/t5_2zesh/styles/communityIcon_6gx6y4qpdw651.png", "https://play-lh.googleusercontent.com/AUGkRrKMtUCLVE9vCvlfMY9Ny9EBqzx17yejVtEEhvpkw-H6lJlvBHgCMqPJm8HV_tM=s256-rw", "https://play-lh.googleusercontent.com/JQqSn7wuCj0SxBqpBThNI33qCR9gwY0str2TIAnu-m_xrVCgZk3IPxYK2S7zC9WG0ig=s256-rw", "https://play-lh.googleusercontent.com/epeBd8ftLXNHy9TjcB4k2Ip0KzcMT-4oTjDUt_DwMjgDwrbSTuVI77ccVWMdoDMXDQ=s256-rw", "https://play-lh.googleusercontent.com/ndILnpPIPE5Kfqmwzjlbdz2duHMjh0yvnZ31PBJ_-oZOPa9iYfh1jedpj2-td2pyrKmj=w240-h256-rw", "https://i.ibb.co/Rp56kCC/bee-blook.png", "https://i.ibb.co/y0Sdwg0/golden-blook.gif", "https://i.ibb.co/B2ZyFBj/rainbow-blook.gif", "https://i.ibb.co/Y0mJq9g/blacket-legacy.png", "https://i.ibb.co/JHFsXdx/betastar.png", "https://i.ibb.co/h2m8fGf/blacket.png", "https://i.ibb.co/QKdZ1b4/logo-2.png", "https://i.ibb.co/pPVh8bt/Blooket-Emblem.png", "https://i.ibb.co/sWqBm0K/1024.png", "https://i.ibb.co/pdSYc4M/Site-logo.png", "https://raw.githubusercontent.com/The-Blooket-Hacks/Blooket-Hacks/main/images/animated_icon.gif", "https://raw.githubusercontent.com/The-Blooket-Hacks/Blooket-Hacks/main/images/icon.png", "https://i.ibb.co/bHks2LC/image-3.png", "https://i.ibb.co/0Z4Gn6n/logo.png", "https://i.ibb.co/LCZTRsY/e222502653c42a263899a4e6a9c58dca.webp", "https://i.ibb.co/1fH15Rs/yellow-submarine.png", "https://i.ibb.co/zRGywqm/watermelon20min.png", "https://i.ibb.co/6rs8hky/valentines-present.png", "https://i.ibb.co/g3hB9t3/turkey.png", "https://i.ibb.co/RzNPvNf/touch-grass-blook.png", "https://i.ibb.co/PDgmxqQ/taco.png", "https://i.ibb.co/vZ40Jf9/squash2.png", "https://i.ibb.co/CMVh9Yq/space-mug.png", "https://i.ibb.co/zVZb2Bq/rubber-duck.png", "https://i.ibb.co/8jchMBy/sombrero.png", "https://i.ibb.co/hKtyzDw/pumpkinking.png", "https://i.ibb.co/M9fq4zD/pumpkin-pie.png", "https://i.ibb.co/FV5Vj7r/prehistoric-globbe.png", "https://i.ibb.co/6Z8QWpp/pineapple.png", "https://i.ibb.co/1GtRrkj/pilgrim-hat.png", "https://i.ibb.co/R6zJhbc/static-assets-upload10217624323675156800.png", "https://i.ibb.co/NjyMT23/pig-snowman.png", "https://i.ibb.co/J70xZZZ/mrbaest.png", "https://i.ibb.co/QcSLKxC/moon.png", "https://i.ibb.co/vdhvvtz/meteor-impact.png", "https://i.ibb.co/1KBf6K5/mega-king.png", "https://i.ibb.co/0ZFjpF1/mayflower.png", "https://i.ibb.co/VCyKwMq/magic8ball.png", "https://i.ibb.co/vdH0sJ0/lunar-globe.png", "https://i.ibb.co/xFWDzNz/life-buoy.png", "https://i.ibb.co/nj8zHRd/lemonade.png", "https://i.ibb.co/hRLdSRn/ladybug.png", "https://i.ibb.co/51B9Yfw/blob-ghost.png", "https://i.ibb.co/87j9XBs/ghost-pumpkin.png", "https://i.ibb.co/vL53Qwt/jackinthebox.png", "https://i.ibb.co/LNzSYX8/freedom-frog.png", "https://i.ibb.co/NpV9VrQ/egg.png", "https://i.ibb.co/vzmCC55/dream.png", "https://i.ibb.co/b2w7f14/cyborg-santa.png", "https://i.ibb.co/2nXpv57/cooked-turkey.png", "https://i.ibb.co/NmPW8H6/comic-crew-inc-blook.png", "https://i.ibb.co/ynsBMVv/chili-pepper.png", "https://i.ibb.co/WyvtbNB/beehive.png", "https://i.ibb.co/34WM19w/candy-heart.png", "https://i.ibb.co/LYrF1xn/candy-basket.png", "https://i.ibb.co/RCLkQS8/box-of-white-chocolates.png", "https://i.ibb.co/N2nDcpB/box-of-chocolates.png", "https://i.ibb.co/N2nDcpB/box-of-chocolates.png", "https://i.ibb.co/6W6wvXJ/apple-barrel.png", "https://i.ibb.co/RNp7frY/acorn.png", "https://i.ibb.co/zsKsX4f/Button-Add-icon.png", "https://i.ibb.co/rfsnSyp/Button-Delete-icon.png", "https://blacket.org/content/blooks/Dinah.webp", "https://blacket.org/content/blooks/March%20Hare.webp", "https://blacket.org/content/blooks/Basketball.webp", "https://blacket.org/content/blooks/Baseball.webp", "https://blacket.org/content/blooks/Soccer%20Ball.webp", "https://blacket.org/content/blooks/Tennis%20Ball.webp", "https://blacket.org/content/blooks/Golf%20Ball.webp", "https://blacket.org/content/blooks/Football.webp", "https://blacket.org/content/blooks/Bowling%20Ball.webp", "https://blacket.org/content/blooks/Ping%20Pong%20Racket.webp", "https://blacket.org/content/blooks/Curling%20Stone.webp", "https://blacket.org/content/blooks/Football%20Helmet.webp", "https://blacket.org/content/blooks/Space%20Terminal.webp", "https://blacket.org/content/blooks/Space%20Debugger.webp", "https://blacket.org/content/blooks/Dark%20Dragon.webp", "https://blacket.org/content/blooks/Jasper.webp", "https://blacket.org/content/blooks/Jade.webp", "https://blacket.org/content/blooks/Onyx.webp", "https://blacket.org/content/blooks/Quartz.webp", "https://blacket.org/content/blooks/Lapis%20Lazuli.webp", "https://blacket.org/content/blooks/Topaz.webp", "https://blacket.org/content/blooks/Ruby.webp", "https://blacket.org/content/blooks/Sapphire.webp", "https://blacket.org/content/blooks/Amethyst.webp", "https://blacket.org/content/blooks/Opal.webp", "https://blacket.org/content/blooks/Moonstone.webp", "https://blacket.org/content/blooks/Rose%20Quartz.webp", "https://blacket.org/content/blooks/Black%20Opal.webp", "https://blacket.org/content/blooks/Apple.webp", "https://blacket.org/content/blooks/Orange.webp", "https://blacket.org/content/blooks/Lemon.webp", "https://blacket.org/content/blooks/Lime.webp", "https://blacket.org/content/blooks/Grape.webp", "https://blacket.org/content/blooks/Strawberry.webp", "https://blacket.org/content/blooks/Raspberry.webp", "https://i.imghippo.com/files/7cAht1725062940.png", "https://blacket.org/content/blooks/Watermelon.webp", "https://blacket.org/content/blooks/Dragon%20Fruit.webp", "https://blacket.org/content/blooks/Starfruit.webp", "https://blacket.org/content/blooks/Green%20Apple.webp", "https://blacket.org/content/blooks/Blue%20Raspberry.webp", "https://blacket.org/content/blooks/Golden%20Apple.webp", "https://blacket.org/content/blooks/Golden%20Amber.webp", "https://blacket.org/content/blooks/Rainbow%20Blook.webp", "https://blacket.org/content/blooks/Candy%20Corn.webp", "https://blacket.org/content/blooks/Jellybean.webp", "https://blacket.org/content/blooks/Lollipop.webp", "https://blacket.org/content/blooks/Black%20Licorice.webp", "https://blacket.org/content/blooks/Peppermint.webp", "https://blacket.org/content/blooks/Chocolate.webp", "https://blacket.org/content/blooks/Gummy%20Worm.webp", "https://blacket.org/content/blooks/Rock%20Candy.webp", "https://blacket.org/content/blooks/White%20Chocolate.webp", "https://blacket.org/content/blooks/Red%20Licorice.webp", "https://blacket.org/content/blooks/Blue%20Gummy%20Worm.webp", "https://blacket.org/content/blooks/Chocolate%20Milk.webp", "https://i.ibb.co/W0LDVvq/image-removebg-preview.png", "https://blacket.org/content/blooks/Forgotten%20Bot.webp", "https://blacket.org/content/blooks/Donut%20Blobfish.webp", "https://blacket.org/content/blooks/Magic%20Spellbook.webp", "https://blacket.org/content/blooks/Cursed%20Ring.webp", "https://blacket.org/content/blooks/Bubbling%20Cauldron.webp", "https://blacket.org/content/blooks/Fairy%20Dust.webp", "https://blacket.org/content/blooks/Enchantment%20Hall.webp", "https://blacket.org/content/blooks/Magician's%20Wand.webp", "https://blacket.org/content/blooks/Ancient%20Runes.webp", "https://blacket.org/content/blooks/Strength%20Potion.webp", "https://blacket.org/content/blooks/Magician's%20Hat.webp", "https://blacket.org/content/blooks/Sentient%20Spellbook.webp", "https://blacket.org/content/blooks/Golden%20Magician's%20Wand.webp", "https://blacket.org/content/blooks/Invisibility%20Cloak.webp", "https://blacket.org/content/blooks/Dial%20Telephone.webp", "https://blacket.org/content/blooks/EtchASketch.webp", "https://blacket.org/content/blooks/Cassette%20Tape.webp", "https://blacket.org/content/blooks/Polaroid%20Camera.webp", "https://blacket.org/content/blooks/Vending%20Machine.webp", "https://blacket.org/content/blooks/GameBlook.webp", "https://blacket.org/content/blooks/Donkey%20Kong%20Machine.webp", "https://blacket.org/content/blooks/BoomBox.webp", "https://blacket.org/content/blooks/CRT%20Television.webp", "https://blacket.org/content/blooks/GameBlook%20Color.webp", "https://blacket.org/content/blooks/PacMan%20Machine.webp", "https://blacket.org/content/blooks/Blackintosh.webp", "https://blacket.org/content/blooks/Gravity%20Switcher.webp", "https://blacket.org/content/blooks/Stealth%20Disguise%20Kit.webp", "https://blacket.org/content/blooks/Object%20Miniaturizer.webp", "https://blacket.org/content/blooks/Object%20Maximizer.webp", "https://blacket.org/content/blooks/Holographic%20Display.webp", "https://blacket.org/content/blooks/Flying%20Car.webp", "https://blacket.org/content/blooks/Void%20Pistol.webp", "https://blacket.org/content/blooks/Red%20Lightsaber.webp", "https://blacket.org/content/blooks/Neural%20Implant.webp", "https://blacket.org/content/blooks/Hijacked%20Radio.webp", "https://blacket.org/content/blooks/Eternal%20Prism%20Blade.webp", "https://blacket.org/content/blooks/Blue%20Lightsaber.webp", "https://blacket.org/content/blooks/Hijacked%20Neural%20Implant.webp", "https://blacket.org/content/blooks/Celestial%20Oracle%20Staff.webp", "https://blacket.org/content/blooks/Sea%20Monster.webp", "https://blacket.org/content/blooks/Pocket%20Watch.webp", "https://blacket.org/content/blooks/Hourglass.webp", "https://blacket.org/content/blooks/Cuckoo%20Clock.webp", "https://blacket.org/content/blooks/Calendar%20Scroll.webp", "https://blacket.org/content/blooks/Analog%20Clock.webp", "https://blacket.org/content/blooks/Astrolabe.webp", "https://blacket.org/content/blooks/Time%20Capsule.webp", "https://blacket.org/content/blooks/Orrey.webp", "https://blacket.org/content/blooks/Grandfather%20Clock.webp", "https://blacket.org/content/blooks/Clock%20Tower.webp", "https://blacket.org/content/blooks/Time%20Stone.webp", "https://blacket.org/content/blooks/Time%20Machine.webp", "https://blacket.org/content/blooks/Pac-Man.webp", "https://blacket.org/content/blooks/Space%20Invader.webp", "https://blacket.org/content/blooks/Among%20Us.webp", "https://blacket.org/content/blooks/Poke%20Ball.webp", "https://blacket.org/content/blooks/Flappy%20Bird.webp", "https://blacket.org/content/blooks/Goomba.webp", "https://blacket.org/content/blooks/Big%20Shield.webp", "https://blacket.org/content/blooks/Creeper.webp", "https://blacket.org/content/blooks/Red%20Bird.webp", "https://blacket.org/content/blooks/Companion%20Cube.webp", "https://blacket.org/content/blooks/Master%20Chief.webp", "https://blacket.org/content/blooks/Golden%20Among%20Us.webp", "https://blacket.org/content/blooks/Gaming%20Mouse.webp", "https://blacket.org/content/blooks/Sand%20Bucket.webp", "https://blacket.org/content/blooks/Beach%20Ball.webp", "https://blacket.org/content/blooks/Plastic%20Shovel.webp", "https://blacket.org/content/blooks/Popsicle.webp", "https://blacket.org/content/blooks/Life%20Float.webp", "https://blacket.org/content/blooks/Conch%20Shell.webp", "https://blacket.org/content/blooks/Surfboard.webp", "https://blacket.org/content/blooks/Sand%20Castle.webp", "https://blacket.org/content/blooks/Coconut%20Cocktail.webp", "https://blacket.org/content/blooks/Tropical%20Pig.webp", "https://blacket.org/content/blooks/Sheet%20Music.webp", "https://blacket.org/content/blooks/Music%20Disc.webp", "https://blacket.org/content/blooks/Xylophone.webp", "https://blacket.org/content/blooks/Drums.webp", "https://blacket.org/content/blooks/Metronome.webp", "https://blacket.org/content/blooks/Triangle.webp", "https://blacket.org/content/blooks/Speaker.webp", "https://blacket.org/content/blooks/Piano.webp", "https://blacket.org/content/blooks/White%20Piano.webp", "https://blacket.org/content/blooks/Golden%20Harp.webp", "https://blacket.org/content/blooks/Viking%20Helmet.webp", "https://blacket.org/content/blooks/Iron%20Chestplate.webp", "https://blacket.org/content/blooks/Spiked%20Boot.webp", "https://blacket.org/content/blooks/Silver%20Shuriken.webp", "https://blacket.org/content/blooks/Knight%20Shield.webp", "https://blacket.org/content/blooks/Knight%20Sword.webp", "https://blacket.org/content/blooks/Fragment%20Grenade.webp", "https://blacket.org/content/blooks/M12%20Shotgun.webp", "https://blacket.org/content/blooks/Diamond%20Sword.webp", "https://blacket.org/content/blooks/Golden%20Shuriken.webp", "https://blacket.org/content/blooks/Golden%20Gift.webp", "https://blacket.org/content/blooks/Diamond%20Gift.webp", "https://blacket.org/content/blooks/Ankha.webp", "https://blacket.org/content/blooks/Mummy%20Ankha.webp", "https://blacket.org/content/blooks/Realistic%20Ankha.webp", "https://blacket.org/content/blooks/Glowing%20Ankha.webp", "https://blacket.org/content/blooks/Mark%20Ankha.webp", "https://blacket.org/content/blooks/Ankha's%20House.webp", "https://blacket.org/content/blooks/High%20Ankha.webp", "https://blacket.org/content/blooks/Black%20Ankha.webp", "https://blacket.org/content/blooks/Golden%20Ankha.webp", "https://blacket.org/content/blooks/Zone%20Ankha.webp", "https://blacket.org/content/blooks/Rainbow%20Ankha.webp", "https://blacket.org/content/blooks/acai.webp", "https://blacket.org/content/blooks/alicialol.webp", "https://blacket.org/content/blooks/Pablo.webp", "https://blacket.org/content/blooks/fristic.webp", "https://blacket.org/content/blooks/Minesraft2.webp", "https://blacket.org/content/blooks/Piotr.webp", "https://blacket.org/content/blooks/GAMERYT.webp", "https://blacket.org/content/blooks/painbow.webp", "https://blacket.org/content/blooks/okr765.webp", "https://blacket.org/content/blooks/Cerulean.webp", "https://i.ibb.co/0DZt7cc/notAI.png", "https://blacket.org/content/blooks/iBlooket.webp", "https://blacket.org/content/blooks/root.webp", "https://blacket.org/content/blooks/envi.webp", "https://blacket.org/content/blooks/zastix.webp", "https://blacket.org/content/blooks/monkxy.webp", "https://blacket.org/content/blooks/Xotic.webp", "https://blacket.org/content/blooks/10k.webp", "https://blacket.org/content/blooks/Lunar%20Frog.webp", "https://blacket.org/content/blooks/Lucky%20Ankha.webp", "https://blacket.org/content/blooks/Spring%20Ankha.webp", "https://blacket.org/content/blooks/Turkey%20Ankha.webp", "https://blacket.org/content/blooks/Festive%20Xotic.webp", "https://blacket.org/content/blooks/Ukraine%20Ankha.webp", "https://blacket.org/content/blooks/American%20Ankha.webp", "https://blacket.org/content/blooks/Golden%20Shovel.webp", "https://blacket.org/content/blooks/Lunar%20Ankha.webp", "https://blacket.org/content/blooks/Lovely%20Ankha.webp", "https://blacket.org/content/blooks/Lucky%20Pablo.webp", "https://blacket.org/content/blooks/Festive%20Ankha.webp", "https://blacket.org/content/blooks/Naughty%20Ankha.webp", "https://blacket.org/content/blooks/Vampire%20Ankha.webp", "https://blacket.org/content/blooks/Bia.webp", "https://blacket.org/content/blooks/Gold%20Doubloon.webp", "https://blacket.org/content/blooks/Golden%20Crab.webp", "https://blacket.org/content/blooks/Golden%20Seashell.webp", "https://blacket.org/content/blooks/Treasure%20Chest.webp", "https://blacket.org/content/blooks/Tropical%20Island.webp", "https://blacket.org/content/blooks/Spring%20Globe.webp", "https://blacket.org/content/blooks/Patriotic%20Piotr.webp", "https://blacket.org/content/blooks/Nature%20Elemental1.webp", "https://blacket.org/content/blooks/Fire%20Elemental1.webp", "https://blacket.org/content/blooks/Air%20Elemental1.webp", "https://blacket.org/content/blooks/Frost%20Elemental1.webp", "https://blacket.org/content/blooks/Lava%20Elemental1.webp", "https://blacket.org/content/blooks/Electric%20Elemental1.webp", "https://blacket.org/content/blooks/Water%20Elemental1.webp", "https://blacket.org/content/blooks/Space%20Elemental1.webp", "https://blacket.org/content/blooks/Plasma%20Elemental1.webp", "https://blacket.org/content/blooks/Lovely%20zastix.webp", "https://blacket.org/content/blooks/Cookies%20Combo.webp", "https://blacket.org/content/logo.webp", "https://blacket.org/content/blooks/Giveaway.webp", "https://blacket.org/content/blooks/Error.webp", "https://blacket.org/content/blooks/Success.webp", "https://blacket.org/content/blooks/yesbutterjeff.webp", "https://blacket.org/content/blooks/Info.webp", "https://blacket.org/content/blooks/Magnet.webp", "https://blacket.org/content/blooks/DNA.webp", "https://blacket.org/content/blooks/Scale.webp", "https://blacket.org/content/blooks/Beaker.webp", "https://blacket.org/content/blooks/Blood%20Bag.webp", "https://blacket.org/content/blooks/Magnifying%20Glass.webp", "https://blacket.org/content/blooks/Battery.webp", "https://blacket.org/content/blooks/Atom.webp", "https://blacket.org/content/blooks/Test%20Tubes.webp", "https://blacket.org/content/blooks/Bunsen%20Burner.webp", "https://blacket.org/content/blooks/Bacteria.webp", "https://blacket.org/content/blooks/Microscope.webp", "https://blacket.org/content/blooks/Eyeball.webp", "https://blacket.org/content/blooks/Toxic%20Waste.webp", "https://blacket.org/content/blooks/Prism.webp", "https://blacket.org/content/blooks/Telescope.webp", "https://blacket.org/content/blooks/Skull.webp", "https://blacket.org/content/blooks/Lightbulb.webp", "https://blacket.org/content/blooks/Brain.webp", "https://blacket.org/content/blooks/Flask.webp", "https://blacket.org/content/blooks/Petri%20Dish.webp", "https://blacket.org/content/blooks/Albert%20Einstein.webp", "https://blacket.org/content/blooks/Neil%20deGrasse%20Tyson.webp", "https://blacket.org/content/blooks/Gregor%20Mendel.webp", "https://blacket.org/content/blooks/Nikola%20Tesla.webp", "https://blacket.org/content/blooks/Lava%20Lamp.webp", "https://blacket.org/content/blooks/Beating%20Heart.webp", "https://blacket.org/content/blooks/Blueberry%20Pie.webp", "https://blacket.org/content/blooks/Cherry%20Pie.webp", "https://blacket.org/content/blooks/Donut.webp", "https://blacket.org/content/blooks/Cake.webp", "https://blacket.org/content/blooks/Birthday%20Cake.webp", "https://blacket.org/content/blooks/Eclair.webp", "https://blacket.org/content/blooks/Chocolate%20Ice%20Cream.webp", "https://blacket.org/content/blooks/Strawberry%20Ice%20Cream.webp", "https://blacket.org/content/blooks/Macaroon.webp", "https://blacket.org/content/blooks/Golden%20Donut.webp", "https://blacket.org/content/blooks/Magic%20Chocolate.webp", "https://blacket.org/content/blooks/Pack%20of%20Peeps.webp", "https://i.ibb.co/kmZzpW7/xPCHhic.png", "https://i.imgur.com/oFAiMCP.png", "https://i.imgur.com/Cvy8nhz.png", "https://i.imgur.com/5bPl8d7.png", "https://i.imgur.com/PZ723dj.png", "https://i.imgur.com/gIWOeB8.png", "https://i.imgur.com/uqFXKVa.png", "https://i.imgur.com/njAnZv3.png", "https://i.imgur.com/roDRyAE.png", "https://i.imgur.com/Rfc6msP.png", "https://i.imgur.com/j6Xk43g.png", "https://i.ibb.co/WnYyWms/console.webp", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Color/Black.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Color/Blue.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Color/Green.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Color/LightGreen.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Color/Orange.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Color/Purple.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Color/Red.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Color/Teal.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Color/Yellow.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/Berry.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/BlooketWarrior.gif", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/Buenar.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/CurryEater.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/FrostyIce109.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/GAMERYT.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/Iamgamedude.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/ItsTornadoYT.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/IzumiiHD.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/Manny.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/NoButterJeff.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/Packman28.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/SOUNDGOD.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/Solid_Snake.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/ThatPlanet.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/OG/Xotic.gif", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/School/Crayon.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/School/Eraser.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/School/Notebook.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/School/Paper.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/School/Pencil.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/School/Ruler.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/School/Scissors.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Tech/Camera.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Tech/Computer.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Tech/Microwave.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Tech/Remote.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Tech/Speaker.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/blooks/Tech/Virus.png", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/rainbow.gif", "https://raw.githubusercontent.com/IzumiiHD/Pixelit/main/public/img/lock-icon.png"];
1339                     imageUrls.forEach((url) => {
1340                         const newBlookContainer = document.createElement('div');
1341                         newBlookContainer.className = '_blookContainer_1bg6w_150';
1342                         newBlookContainer.setAttribute('role', 'button');
1343                         newBlookContainer.setAttribute('tabindex', '0');
1345                         const innerDiv = document.createElement('div');
1346                         innerDiv.className = '_blookContainer_12gbf_1 _blook_1bg6w_141';
1347                         innerDiv.setAttribute('data-tooltip-id', 'blook-tooltip');
1349                         const img = document.createElement('img');
1350                         img.src = url;
1351                         img.alt = 'Custom Blook';
1352                         img.draggable = false;
1353                         img.className = '_blook_12gbf_1';
1355                         newBlookContainer.addEventListener('click', () => {
1356                             setCustomBlookUrl(url);
1357                         });
1359                         innerDiv.appendChild(img);
1360                         newBlookContainer.appendChild(innerDiv);
1361                         targetContainer.appendChild(newBlookContainer);
1362                     });
1363                 } else {
1364                     console.error('Target container not found');
1365                 }
1367                 function setCustomBlookUrl(url) {
1368                     let t = Object.values(function e(t = document.querySelector("body>div")) {
1369                         return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1370                     }())[1].children[0]._owner.stateNode;
1372                     if (!t.state.unlocks) {
1373                         t.props.client.blook = url;
1374                     }
1376                     t.props.liveGameController.setVal({
1377                         path: `c/${t.props.client.name}/b`,
1378                         val: url
1379                     });
1380                 }
1381             }
1382         }, {
1383             name: "Freeze Host",
1384             description: "Freezes the host's screen",
1385             run: function() {
1386                 const encodedChars = [
1387                     '\\u2f9f', '\\u4fff', '\\u4f52', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u4FF1', '\\u4FF2'
1388                 ];
1390                 const chars = encodedChars.map(char => eval(`"${char}"`));
1392                 function makeLongText() {
1393                     return new Array(3e+6).fill().map(e => chars[Math.floor(Math.random() * chars.length)]).join("");
1394                 }
1396                 let {
1397                     props: t
1398                 } = Object.values(function e(t = document.querySelector("body>div")) {
1399                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
1400                 }())[1].children[0]._owner.stateNode;
1402                 let repeatedText = makeLongText();
1403                 t.client.blook = repeatedText;
1404                 t.liveGameController.setVal({
1405                     path: `c/${t.client.name}/b`,
1406                     val: repeatedText
1407                 });
1408             }
1409         }, {
1410             name: "Remove all Taken Blooks",
1411             description: "Removes all taken blooks, allowing you to use any taken blook. Only works in lobby.",
1412             run: function() {
1413                 const stateNode = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
1414                 stateNode.setState({
1415                     takenBlooks: {
1416                         includes: e => !1
1417                     }
1418                 });
1419                 stateNode.setState = function(a, b) {
1420                     if (a?.takenBlooks) {
1421                         return;
1422                     }
1423                     stateNode.updater.enqueueSetState(stateNode, a, b, "setState");
1424                 }
1425             }
1426         }, {
1427             name: "Dynamic Player Count",
1428             description: "Updates the player count at the top of the screen in realtime as players join or leave.",
1429             run: function() {
1430                 (async () => {
1431                     const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
1432                     const ref = await stateNode.props.liveGameController.getDatabaseRef("")
1433                     ref.on("value", e => {
1434                         document.querySelector("div[class*='headerTextCenter']").innerHTML = `Player Count | ${Object.keys(e.val()?.c)?.length} / ${stateNode.props.client.plus ? 300 : 60}`;
1435                     });
1436                 })()
1437             }
1438         }, {
1439             name: "Blooket Bot",
1440             description: "Opens Blooket Bot",
1441             run: function() {
1442                 function getGameCode() {
1443                     const appDiv = document.querySelector('#app>div>div');
1444                     if (appDiv) {
1445                         const reactComponent = Object.values(appDiv)[1]?.children[0]?._owner;
1446                         return reactComponent?.stateNode?.props?.client?.hostId || null;
1447                     }
1448                     return null;
1449                 }
1451                 const gameCode = getGameCode();
1452                 const url = gameCode ? "https://blooketbot.glitch.me/?code=" + gameCode : "https://blooketbot.glitch.me/";
1453                 window.open(url, "_blank", "width=500,height=500,resizable=yes,scrollbars=yes,status=yes");
1454             }
1455         }, {
1456             name: "Blooket Bot Unblocked",
1457             description: "Opens Blooket Bot",
1458             run: function() {
1459                 function getGameCode() {
1460                     const appDiv = document.querySelector('#app>div>div');
1461                     if (appDiv) {
1462                         const reactComponent = Object.values(appDiv)[1]?.children[0]?._owner;
1463                         return reactComponent?.stateNode?.props?.client?.hostId || null;
1464                     }
1465                     return null;
1466                 }
1468                 const gameCode = getGameCode();
1469                 const url = gameCode ? "https://blooketbot.vercel.app/?code=" + gameCode : "https://blooketbot.vercel.app/";
1470                 window.open(url, "_blank", "width=500,height=500,resizable=yes,scrollbars=yes,status=yes");
1471             }
1472         }, {
1473             name: "Blooket Homework Editor",
1474             description: "Opens Blooket Homework Editor",
1475             run: function() {
1476                 window.open("https://blookethwk.glitch.me/", "_blank", "width=500,height=500,resizable=yes,scrollbars=yes,status=yes")
1477             }
1478         }, {
1479             name: "Lobbychat",
1480             description: "Chat with other people and execute commands",
1481             run: function() {
1482                 if (window.run) {
1483                     return;
1484                 } else {
1485                     window.run = true;
1486                 }
1488                 function e() {
1489                     return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner
1490                 }
1491                 var t = 0,
1492                     a = !1;
1493                 document.addEventListener("keydown", function(e) {
1494                     "`" === e.key && (a = !a, o.style.display = a ? "none" : "block")
1495                 });
1496                 let o = document.createElement("div");
1497                 o.className = "chat-box", document.body.appendChild(o);
1498                 let r = document.createElement("div");
1499                 r.className = "chat-header", r.textContent = "Chat", o.appendChild(r);
1500                 let i = document.createElement("div");
1501                 i.className = "chat-body", o.appendChild(i);
1502                 let n = document.createElement("input");
1504                 function s(e) {
1505                     let t = document.createElement("div");
1506                     t.textContent = e, i.appendChild(t)
1507                 }
1508                 n.type = "text", n.className = "chat-input", n.placeholder = "Type a message...", o.appendChild(n), o.style.position = "fixed", o.style.bottom = "20px", o.style.right = "20px", o.style.width = "300px", o.style.backgroundColor = "#fff", o.style.border = "1px solid #ccc", o.style.boxShadow = "0px 0px 10px rgba(0, 0, 0, 0.2)", r.addEventListener("click", () => {
1509                     i.classList.toggle("open")
1510                 }), n.addEventListener("keydown", function(a) {
1511                     13 === a.keyCode && (function a(o) {
1512                         var r, n, l, c, d, p, u, h = function e(t) {
1513                             if ("/" !== t.charAt(0)) return !1;
1514                             var a = t.split(" "),
1515                                 o = a[0].replace("/", "");
1516                             return a.splice(0, 1), {
1517                                 cmd: o,
1518                                 args: a
1519                             }
1520                         }(o);
1521                         if (h) switch (h.cmd) {
1522                             case "cb":
1523                                 r = h.args.join(" "), (n = webpackJsonp.push([
1524                                     [], {
1525                                         1234(e, t, a) {
1526                                             t.webpack = a
1527                                         }
1528                                     },
1529                                     [
1530                                         ["1234"]
1531                                     ]
1532                                 ]).webpack("MDrD").a)[r = Object.keys(n).find(e => r.toLocaleLowerCase() === e.toLocaleLowerCase())] ? (s("Setting blook to " + r + "!"), e().stateNode.props.liveGameController.setVal({
1533                                     id: e().stateNode.props.client.hostId,
1534                                     path: "c/" + e().stateNode.props.client.name,
1535                                     val: {
1536                                         b: r
1537                                     }
1538                                 }), e().stateNode.props.client.blook = r) : s("No blook with that name was found!");
1539                                 break;
1540                             case "clear":
1541                                 i.innerHTML = "";
1542                                 break;
1543                             case "dumpstate":
1544                                 Object.keys(e().stateNode.state).map(t => {
1545                                     var a = e().stateNode.state[t];
1546                                     if (null == a) return "N/A";
1547                                     Array.from(a) && "object" == typeof a && (a = "[Array]"), s(t + ":" + a)
1548                                 }).join(";");
1549                                 break;
1550                             case "list":
1551                                 e().stateNode.props.liveGameController.getDatabaseVal("c").then(e => {
1552                                     s("Current Players(" + Object.keys(e).length + "): " + Object.keys(e).join(","))
1553                                 });
1554                                 break;
1555                             case "tlog":
1556                                 window.logsv = !window.logsv, s("SetVal log set to " + (window.logsv ? "Enabled" : "Disabled"));
1557                                 break;
1558                             case "setval":
1559                                 l = h.args, e().stateNode.props.liveGameController.setVal({
1560                                     path: "c/" + e().stateNode.props.client.name + "/" + l[0],
1561                                     val: l.slice(1, l.length).join(" ")
1562                                 });
1563                                 break;
1564                             case "setstate":
1565                                 c = h.args, d = {}, c.forEach(e => {
1566                                     var t = e.split(":");
1567                                     Number.isNaN(parseInt(t[1])) || parseInt(t[1]).toString() !== t[1] || (t[1] = parseInt(t[1])), d[t[0]] = t[1]
1568                                 }), e().stateNode.setState(d), s("Set Successful!");
1569                                 break;
1570                             case "ahelp":
1571                                 s("Advanced Commands: setval(sets val logged by tlog ex /setval b Chicken), tlog(toggles setval log), dumpstate(dumps react state),setstate(sets react state /setstate crypto:5 crypto2:5 etc)");
1572                                 break;
1573                             case "help":
1574                                 s("Available Commands: help(gives help),ahelp(advanced commands help), cb(changes blook /cb cow), list(lists players connected), dump(dumps all available info about a player, passwords, etc(/dump player)), clear(clears chat), code(gives game code), unlock(unlocks blook on lobby screen)");
1575                                 break;
1576                             case "dump":
1577                                 ! function t(a) {
1578                                     e().stateNode.props.liveGameController.getDatabaseVal("c/" + a).then(e => {
1579                                         null != e ? s("Dump: " + JSON.stringify(e)) : s("Player not found!")
1580                                     })
1581                                 }(h.args.join(" "));
1582                                 break;
1583                             case "unlock":
1584                                 p = h.args.join(" "), (u = webpackJsonp.push([
1585                                     [], {
1586                                         1234(e, t, a) {
1587                                             t.webpack = a
1588                                         }
1589                                     },
1590                                     [
1591                                         ["1234"]
1592                                     ]
1593                                 ]).webpack("MDrD").a)[p = Object.keys(u).find(e => p.toLocaleLowerCase() === e.toLocaleLowerCase())] ? (e().stateNode.state.unlocks.push(p), e().stateNode.forceUpdate()) : s("No blook with that name was found!");
1594                                 break;
1595                             case "code":
1596                                 s("Game Code: " + e().stateNode.props.client.hostId);
1597                                 break;
1598                             default:
1599                                 s("Unrecognized chat command!")
1600                         } else e().stateNode.props.liveGameController.setVal({
1601                             id: e().stateNode.props.client.hostId,
1602                             path: "c/" + e().stateNode.props.client.name + "/msg",
1603                             val: {
1604                                 i: t,
1605                                 msg: o
1606                             }
1607                         }), t++
1608                     }(a.srcElement.value), a.srcElement.value = "")
1609                 });
1610                 var l = e().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_;
1612                 function c(e) {
1613                     window.logsv && s("Path: " + e.path.split("/").splice(2, 2).join("/") + " Val: " + ("object" == typeof e.val ? JSON.stringify(e.val) : e.val))
1614                 }
1615                 e().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_ = function(e, t, a, o) {
1616                     var r, i;
1617                     console.log(e, t, a, o), r = e, null != (i = t) && r.includes("/msg") && i?.msg && (console.log(i.msg), s(r.split("/")[2] + ": " + i.msg)), l(e, t, a, o)
1618                 }, window.logsv = !1;
1619                 var d = e().stateNode.props.liveGameController.setVal;
1620                 e().stateNode.props.liveGameController.setVal = function() {
1621                     c.apply(this, arguments), d.apply(this, arguments)
1622                 }, e().stateNode.props.liveGameController._liveApp.database().ref(`${e().stateNode.props.liveGameController._liveGameCode}`).on("value", e => {}), s("Lobbychat successfully loaded!"), o.style.wordWrap = "break-word"
1623             }
1624         }, {
1625             name: "Pin Guesser",
1626             description: "Brute forces combinations for existing pins",
1627             run: function() {
1628                 var e = 0,
1629                     t = 0,
1630                     a = document.querySelector("div[class*='titleText']");
1632                 function o() {
1633                     return Object.values(function e(t = document.querySelector("body>div")) {
1634                         return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1635                     }())[1].children[0]._owner.stateNode
1636                 }! function r() {
1637                     let i = Math.floor(9e6 * Math.random()) + 1e6;
1638                     fetch(`https://fb.blooket.com/c/firebase/id?id=${i}`, {
1639                         method: "GET",
1640                         credentials: "include"
1641                     }).then(e => e.json()).then(n => {
1642                         !0 === n.success ? (console.log("Game found:", i), a.innerHTML = "Game Found!", o().setState({
1643                             client: {
1644                                 hostId: i.toString()
1645                             }
1646                         })) : (console.log("No game found for:", i), o().setState({
1647                             client: {
1648                                 hostId: i.toString()
1649                             }
1650                         }), e++, a.innerHTML = "Guesses: " + e, ++t > 15 ? (setTimeout(r, 1e3), t = 0) : r())
1651                     }).catch(e => {
1652                         alert("Error:" + e)
1653                     })
1654                 }()
1655             }
1656         }, {
1657             name: "Crash Game",
1658             description: "Crashes the host's game",
1659             run: function() {
1660                 var e = Object.values(function e(t = document.querySelector("#app")) {
1661                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1662                 }())[1].children[0]._owner.stateNode;
1663                 e.props.liveGameController.setVal({
1664                     path: `c/${e.props.client.name}/b/toString`,
1665                     val: "Crashed"
1666                 })
1667             }
1668         }, {
1669             name: "Every Answer Correct",
1670             description: "Sets every answer to be correct",
1671             run: function() {
1672                 let {
1673                     stateNode: e
1674                 } = Object.values(function e(t = document.querySelector("body>div")) {
1675                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1676                 }())[1].children[0]._owner;
1677                 e.freeQuestions = e.freeQuestions?.map?.(e => ({
1678                     ...e,
1679                     correctAnswers: e.answers
1680                 })), e.questions = e.questions?.map?.(e => ({
1681                     ...e,
1682                     correctAnswers: e.answers
1683                 })), e.props.client.questions = e.props.client.questions.map(e => ({
1684                     ...e,
1685                     correctAnswers: e.answers
1686                 }))
1687             }
1688         }, {
1689             name: "Remove Name Limit",
1690             description: "Sets the name limit to 120, which is the actual max name length limit",
1691             run: function() {
1692                 var e = document.createElement("iframe");
1693                 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), document.querySelector('input[class*="nameInput"]').maxLength = 120, alert("Removed name length limit")
1694             }
1695         }, {
1696             name: "Remove Random Name",
1697             description: "Allows you to put a custom name",
1698             run: function() {
1699                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
1700                     isRandom: !1,
1701                     client: {
1702                         name: ""
1703                     }
1704                 }), document.querySelector('[class*="nameInput"]')?.focus?.()
1705             }
1706         }, {
1707             name: "Sell Cheap Duplicates",
1708             description: "Sells all of your uncommon to epic dupes (not legendaries+)",
1709             run: function() {
1710                 var e = document.createElement("iframe");
1711                 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), window.confirm = e.contentWindow.confirm.bind(window), e.remove();
1712                 let t = webpackJsonp.push([
1713                         [], {
1714                             1234(e, t, a) {
1715                                 t.webpack = a
1716                             }
1717                         },
1718                         [
1719                             ["1234"]
1720                         ]
1721                     ]).webpack,
1722                     a = Object.values(t.c).find(e => e.exports?.a?.get).exports.a,
1723                     o = Object.values(t.c).find(e => e.exports.a?.sellBlook).exports.a.sellBlook;
1724                 a.get("https://dashboard.blooket.com/api/users").then(async ({
1725                     data: {
1726                         unlocks: e
1727                     }
1728                 }) => {
1729                     if (e = Object.entries(e).filter(([e, t]) => 1 < t && !["Legendary", "Chroma", "Mystical"].includes(webpackJsonp.push([
1730                             [], {
1731                                 1234(e, t, a) {
1732                                     t.webpack = a
1733                                 }
1734                             },
1735                             [
1736                                 ["1234"]
1737                             ]
1738                         ]).webpack("MDrD").a[e].rarity)), confirm("Are you sure you want to sell your uncommon to epic dupes?")) {
1739                         var t, a, r = Date.now();
1740                         for ([t, a] of e) await o({
1741                             blook: t,
1742                             numToSell: a - 1
1743                         });
1744                         alert(`(${Date.now()-r}ms) Results: ` + e.map(([e, t]) => `    ${e} ` + (t - 1)).join(" "))
1745                     }
1746                 }).catch(() => alert("There was an error user data!"))
1747             }
1748         }, {
1749             name: "Sell Duplicate Blooks",
1750             description: "Sell all duplicate blooks leaving you with 1 each",
1751             run: async function() {
1752                 let e = document.createElement("iframe");
1753                 if (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), window.confirm = e.contentWindow.confirm.bind(window), e.remove(), /dashboard.*\/blooks/.test(window.location.href)) {
1754                     if (confirm("Are you sure you want to sell your dupes? (Legendaries and rarer will not be sold)")) {
1755                         let {
1756                             stateNode: t
1757                         } = Object.values(function e(t = document.querySelector("body>div")) {
1758                             return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1759                         }())[1].children[0]._owner, a = Date.now(), o = "";
1760                         for (let r in t.state.blookData)
1761                             if (t.state.blookData[r] > 1) {
1762                                 if (t.setState({
1763                                         blook: r,
1764                                         numToSell: t.state.blookData[r] - 1
1765                                     }), ["Legendary", "Chroma", "Mystical"].includes(document.querySelector("[class*='highlightedRarity']").innerText.trim())) continue;
1766                                 o += `    ${r} ${t.state.blookData[r]-1} `, await t.sellBlook({
1767                                     preventDefault() {}
1768                                 }, !0)
1769                             } alert(`(${Date.now()-a}ms) Results: ${o.trim()}`)
1770                     }
1771                 } else alert("This can only be ran in the Blooks page.")
1772             }
1773         }],
1774         voyage: [{
1775             name: "Heist ESP",
1776             description: "Shows you what's under each chest during a heist",
1777             type: "toggle",
1778             enabled: false,
1779             data: null,
1780             run: function() {
1781                 if (this.enabled) {
1782                     this.enabled = false;
1783                     clearInterval(this.data);
1784                     this.data = null;
1785                     Array.prototype.forEach.call(document.querySelectorAll(".chestESP"), x => x.remove());
1786                 } else {
1787                     this.enabled = true;
1788                     this.data = setInterval(() => {
1789                         const cheat = (async () => {
1790                             let {
1791                                 stateNode
1792                             } = Object.values((function react(r = document.querySelector("body>div")) {
1793                                 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
1794                             })())[1].children[0]._owner;
1795                             if (stateNode.state.stage == "heist") {
1796                                 const imgs = Array.prototype.map.call(Array.prototype.slice.call(document.querySelector("[class*=prizesList]").children, 1, 4), (x) => x.querySelector("img").src);
1797                                 const esp = Object.values(document.querySelector("[class*=modal]"))[0].return.memoizedState.memoizedState;
1798                                 for (const e of document.querySelectorAll("[class*=boxContent] > div")) e.remove();
1799                                 const open = Object.values(document.querySelector("[class*=modal]"))[0].return.memoizedState.next.next.memoizedState;
1800                                 Array.prototype.forEach.call(document.querySelector("[class*=chestsWrapper]").children, (container, i) => {
1801                                     const box = container.firstChild.firstChild;
1802                                     if (open.includes(i)) return box.style.opacity = "";
1803                                     box.style.opacity = "0.5";
1804                                     let d = document.createElement("div");
1805                                     d.innerHTML = "<img src='" + imgs[2 - esp[i]] + "' style='max-width: 75%; max-height: 75%'></img>";
1806                                     d.className = "chestESP";
1807                                     d.style.position = "absolute";
1808                                     d.style.inset = "0";
1809                                     d.style.display = "grid";
1810                                     d.style.placeItems = "center";
1811                                     d.style.pointerEvents = "none";
1812                                     container.onclick = () => {
1813                                         d.remove();
1814                                         box.style.opacity = "";
1815                                     };
1816                                     container.firstChild.prepend(d);
1817                                 });
1818                             }
1819                         });
1820                         cheat();
1821                     }, 50);
1822                 }
1823             }
1824         }, {
1825             name: "Crash Host (Pirate)",
1826             description: "Crashes the Host's Game for Pirate's Voyage",
1827             run: function() {
1828                 function reactHandler() {
1829                     return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
1830                 }
1832                 function setv(args) {
1833                     reactHandler().stateNode.props.liveGameController.setVal({
1834                         path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
1835                         val: args.slice(1, args.length).join(" ")
1836                     });
1837                 }
1839                 setv(['d/t', 't']);
1840             }
1841         }, {
1842             name: "Max Levels",
1843             description: "Maxes out all islands and your boat",
1844             run: function() {
1845                 let {
1846                     stateNode: e
1847                 } = Object.values(function e(t = document.querySelector("body>div")) {
1848                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1849                 }())[1].children[0]._owner;
1850                 e.setState({
1851                     islandLevels: Array(e.state.islandLevels.length).fill(5)
1852                 }, e.updateBoatLevel)
1853             }
1854         }, {
1855             name: "Set Doubloons",
1856             description: "Sets Doubloons",
1857             inputs: [{
1858                 name: "Amount",
1859                 type: "number"
1860             }],
1861             run: function(e) {
1862                 let t = document.createElement("iframe");
1863                 document.body.append(t), window.prompt = t.contentWindow.prompt.bind(window), t.remove();
1864                 let {
1865                     stateNode: a
1866                 } = Object.values(function e(t = document.querySelector("body>div")) {
1867                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1868                 }())[1].children[0]._owner;
1869                 a.setState({
1870                     doubloons: e
1871                 }), a.props.liveGameController.setVal({
1872                     path: `c/${a.props.client.name}/d`,
1873                     val: e
1874                 })
1875             }
1876         }, {
1877             name: "Start Heist",
1878             description: "Starts a heist on someone",
1879             inputs: [{
1880                 name: "Player",
1881                 type: "options",
1882                 options() {
1883                     let {
1884                         stateNode: e
1885                     } = Object.values(function e(t = document.querySelector("body>div")) {
1886                         return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1887                     }())[1].children[0]._owner;
1888                     return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
1889                 }
1890             }],
1891             run: function(e) {
1892                 let t = document.createElement("iframe");
1893                 document.body.append(t), window.prompt = t.contentWindow.prompt.bind(window), t.remove();
1894                 let {
1895                     stateNode: a
1896                 } = Object.values(function e(t = document.querySelector("body>div")) {
1897                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1898                 }())[1].children[0]._owner;
1899                 a.props.liveGameController.getDatabaseVal("c", function(t) {
1900                     let o = Object.entries(t || {}).reduce((e, [t, o]) => (t != a.props.client.name && e.push({
1901                         name: t,
1902                         blook: o.b,
1903                         doubloons: o.d || 0
1904                     }), e), []);
1905                     if (0 === o.length) return a.questionsToAnswer = 1, void a.randomQ();
1906                     let {
1907                         name: r,
1908                         blook: i,
1909                         doubloons: n
1910                     } = o.find(t => t.name == e) || o.sort((e, t) => t.doubloons - e.doubloons)[0];
1911                     a.setState({
1912                         stage: "heist",
1913                         heistInfo: {
1914                             name: r,
1915                             blook: i
1916                         },
1917                         prizeAmount: Math.max(1e3, n)
1918                     })
1919                 })
1920             }
1921         }, {
1922             name: "Swap Doubloons",
1923             description: "Swaps Doubloons with someone",
1924             inputs: [{
1925                 name: "Player",
1926                 type: "options",
1927                 options() {
1928                     let {
1929                         stateNode: e
1930                     } = Object.values(function e(t = document.querySelector("body>div")) {
1931                         return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1932                     }())[1].children[0]._owner;
1933                     return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
1934                 }
1935             }],
1936             run: async function(e) {
1937                 let t = document.createElement("iframe");
1938                 document.body.append(t), window.prompt = t.contentWindow.prompt.bind(window), t.remove();
1939                 let {
1940                     stateNode: a
1941                 } = Object.values(function e(t = document.querySelector("body>div")) {
1942                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1943                 }())[1].children[0]._owner, o = Object.entries(await new Promise(e => a.props.liveGameController.getDatabaseVal("c", e))).sort((e, t) => t[1].d - e[1].d).filter(e => e[0] != a.props.client.name), r = o.find(t => t[0] == e) || o[0];
1944                 a.props.liveGameController.setVal({
1945                     path: `c/${a.props.client.name}`,
1946                     val: {
1947                         b: a.props.client.blook,
1948                         d: r[1].d,
1949                         tat: `${r[0]}:${r[1].d-a.state.doubloons}`
1950                     }
1951                 }), a.setState({
1952                     doubloons: r[1].d
1953                 })
1954             }
1955         }, {
1956             name: "Take Doubloons",
1957             description: "Takes Doubloons from someone",
1958             inputs: [{
1959                 name: "Player",
1960                 type: "options",
1961                 options() {
1962                     let {
1963                         stateNode: e
1964                     } = Object.values(function e(t = document.querySelector("body>div")) {
1965                         return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1966                     }())[1].children[0]._owner;
1967                     return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
1968                 }
1969             }],
1970             run: async function(e) {
1971                 let t = document.createElement("iframe");
1972                 document.body.append(t), window.prompt = t.contentWindow.prompt.bind(window), t.remove();
1973                 let {
1974                     stateNode: a
1975                 } = Object.values(function e(t = document.querySelector("body>div")) {
1976                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
1977                 }())[1].children[0]._owner, o = Object.entries(await new Promise(e => a.props.liveGameController.getDatabaseVal("c", e))).sort((e, t) => t[1].d - e[1].d).filter(e => e[0] != a.props.client.name), r = o.find(t => t[0] == e) || o[0];
1978                 a.setState({
1979                     doubloons: a.state.doubloons + r[1].d
1980                 }), a.props.liveGameController.setVal({
1981                     path: `c/${a.props.client.name}`,
1982                     val: {
1983                         b: a.props.client.blook,
1984                         d: r[1].d,
1985                         tat: `${r[0]}:${r[1].d}`
1986                     }
1987                 })
1988             }
1989         }, {
1990             name: "Flood Alert Box",
1991             description: "Makes the alert box filled with text",
1992             inputs: [{
1993                 name: "Text",
1994                 type: "text"
1995             }],
1996             run: function(userInput) {
1997                 function getReactOwner() {
1998                     return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
1999                 }
2001                 function repeatText(text, times) {
2002                     return new Array(times).fill(text).join(" ");
2003                 }
2005                 function setValForPlayer() {
2006                     getReactOwner().stateNode.props.liveGameController.getDatabaseVal("c/").then(data => {
2007                         if (data != null) {
2009                             const playerName = Object.keys(data)[0];
2011                             if (userInput) {
2013                                 const id = "1,723,583,989,363";
2014                                 const repeatedText = repeatText(userInput, 1700);
2015                                 const finalText = `${id}${repeatedText}`;
2017                                 setv(['tat', `${playerName}:${finalText}`]);
2018                             } else {
2019                                 console.log("No text entered. Operation cancelled.");
2020                             }
2021                         } else {
2022                             console.log("Player not found!");
2023                         }
2024                     });
2025                 }
2027                 function setv(args) {
2028                     getReactOwner().stateNode.props.liveGameController.setVal({
2029                         path: "c/" + getReactOwner().stateNode.props.client.name + "/" + args[0],
2030                         val: args.slice(1, args.length).join(" ")
2031                     });
2032                 }
2034                 setValForPlayer();
2035             }
2036         }, {
2037             name: "Send Ad Text",
2038             description: "Sends a load of text to another player (This will override your blook!)",
2039             inputs: [{
2040                 name: "Player",
2041                 type: "options",
2042                 options() {
2043                     let {
2044                         stateNode: e
2045                     } = Object.values(function e(t = document.querySelector("body>div")) {
2046                         return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
2047                     }())[1].children[0]._owner;
2048                     return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]));
2049                 }
2050             }, {
2051                 name: "Text"
2052             }],
2053             run: async function(player, e) {
2054                 let {
2055                     props: t2
2056                 } = Object.values(function e(t = document.querySelector("body>div")) {
2057                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
2058                 }())[1].children[0]._owner.stateNode;
2060                 let repeatedText = `Dog:${Array(500).fill(e).join(' ')}`;
2061                 t2.client.blook = repeatedText;
2062                 t2.liveGameController.setVal({
2063                     path: `c/${t2.client.name}/b`,
2064                     val: repeatedText
2065                 });
2066                 t2.liveGameController.setVal({
2067                     path: `c/${t2.client.name}/tat`,
2068                     val: `${player}:196`
2069                 });
2070             }
2071         }],
2072         brawl: [{
2073             name: "Double Enemy XP",
2074             description: "Doubles enemy XP drop value",
2075             run: function() {
2076                 for (let e of Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].physics.world.colliders._active.filter(e => e.callbackContext?.toString().includes("invulnerableTime"))) {
2077                     var t = e.object2;
2078                     let a = t.classType.prototype.start;
2079                     t.classType.prototype.start = function() {
2080                         a.apply(this, arguments), this.val *= 2
2081                     }, t.children.entries.forEach(e => e.val *= 2)
2082                 }
2083             }
2084         }, {
2085             name: "Half Enemy Speed",
2086             description: "Makes enemies move 2x slower",
2087             run: function() {
2088                 for (let e of Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].physics.world.colliders._active.filter(e => e.callbackContext?.toString().includes("invulnerableTime"))) {
2089                     var t = e.object2;
2090                     let a = t.classType.prototype.start;
2091                     t.classType.prototype.start = function() {
2092                         a.apply(this, arguments), this.speed *= .5
2093                     }, t.children.entries.forEach(e => e.speed *= .5)
2094                 }
2095             }
2096         }, {
2097             name: "Instant Kill",
2098             description: "Sets all enemies health to 1",
2099             run: function() {
2100                 for (let e of Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].physics.world.colliders._active.filter(e => e.callbackContext?.toString().includes("invulnerableTime"))) {
2101                     var t = e.object2;
2102                     let a = t.classType.prototype.start;
2103                     t.classType.prototype.start = function() {
2104                         a.apply(this, arguments), this.hp = 1
2105                     }, t.children.entries.forEach(e => e.hp = 1)
2106                 }
2107             }
2108         }, {
2109             name: "Invincibility",
2110             description: "Makes you invincible",
2111             run: function() {
2112                 for (let e of Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].physics.world.colliders._active.filter(e => e.callbackContext?.toString().includes("invulnerableTime"))) e.collideCallback = () => {}
2113             }
2114         }, {
2115             name: "Magnet",
2116             description: "Pulls all xp towards you",
2117             run: function() {
2118                 Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].physics.world.colliders._active.find(e => e.collideCallback?.toString().includes("magnetTime")).collideCallback({
2119                     active: !0
2120                 }, {
2121                     active: !0,
2122                     setActive() {},
2123                     setVisible() {}
2124                 })
2125             }
2126         }, {
2127             name: "Max Current Abilities",
2128             description: "Maxes out all your current abilities",
2129             run: function() {
2130                 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2131                 for (var [t, a] of Object.entries(e.state.abilities))
2132                     for (let o = 0; o < 10 - a; o++) e.game.current.scene.scenes[0].game.events.emit("level up", t, e.state.abilities[t]++);
2133                 e.setState({
2134                     level: e.game.current.scene.scenes[0].level = [1, 3, 5, 10, 15, 25, 35].sort((t, a) => Math.abs(t - e.state.level) - Math.abs(a - e.state.level))[0] - 1
2135                 })
2136             }
2137         }, {
2138             name: "Next Level",
2139             description: "Skips to the next level",
2140             run: function() {
2141                 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode,
2142                     {
2143                         object1: t,
2144                         object2: a
2145                     } = e.game.current.scene.scenes[0].physics.world.colliders._active.find(e => e.collideCallback?.toString().includes('emit("xp"'));
2146                 a.get().spawn(t.x, t.y, (1 === (a = e.state.level) ? 1 : a < 5 ? 5 : a < 10 ? 10 : a < 20 ? 20 : a < 30 ? 30 : a < 40 ? 40 : a < 50 ? 50 : 100) - e.xp)
2147             }
2148         }, {
2149             name: "Remove Obstacles",
2150             description: "Removes all rocks and obstacles",
2151             run: function() {
2152                 Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].physics.world.bodies.entries.forEach(e => {
2153                     try {
2154                         e.gameObject.frame.texture.key.includes("obstacle") && e.gameObject.destroy()
2155                     } catch {}
2156                 })
2157             }
2158         }, {
2159             name: "Kill Enemies",
2160             description: "Kills all current enemies",
2161             run: function() {
2162                 Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].physics.world.bodies.entries.forEach(e => e?.gameObject?.receiveDamage?.(e.gameObject.hp, 1))
2163             }
2164         }, {
2165             name: "Reset Health",
2166             description: "Resets health and gives invincibility for 3 seconds",
2167             run: function() {
2168                 Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode.game.current.scene.scenes[0].game.events._events.respawn.fn()
2169             }
2170         }, {
2171             name: "Crash Host (Brawl)",
2172             description: "Crashes the Host's Game for Monster Brawl",
2173             run: function() {
2174                 function reactHandler() {
2175                     return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2176                 }
2178                 function setv(args) {
2179                     reactHandler().stateNode.props.liveGameController.setVal({
2180                         path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
2181                         val: args.slice(1, args.length).join(" ")
2182                     });
2183                 }
2185                 setv(['xp/t', 't']);
2186             }
2187         }, {
2188             name: "Set XP",
2189             description: "Sets amount of XP",
2190             inputs: [{
2191                 name: "XP",
2192                 type: "number"
2193             }],
2194             run: function(e) {
2195                 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2196                 t.setState({
2197                     xp: e,
2198                     totalXp: e
2199                 }), t.xp = e, t.totalXp = e, t.props?.liveGameController.setVal({
2200                     path: "c/".concat(t.props.client.name),
2201                     val: {
2202                         b: t.props.client.blook,
2203                         xp: e
2204                     }
2205                 })
2206             }
2207         }, {
2208             name: "Set Level",
2209             description: "Sets your level",
2210             inputs: [{
2211                 name: "XP",
2212                 type: "number"
2213             }],
2214             run: function(e) {
2215                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2216                     level: e
2217                 })
2218             }
2219         }],
2220         cafe: [{
2221             name: "Max Items",
2222             description: "Maxes out items in the shop (Only usable in the shop)",
2223             run: function() {
2224                 var e = document.createElement("iframe");
2225                 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/cafe/shop" !== window.location.pathname ? alert("This can only be run in the shop") : (e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode).setState({
2226                     items: Object.fromEntries(Object.entries(e.state.items).map(e => [e[0], 5]))
2227                 })
2228             }
2229         }, {
2230             name: "Remove Customers",
2231             description: "Skips the current customers (Not usable in the shop)",
2232             run: function() {
2233                 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2234                 e.state.customers.forEach((t, a) => Object.keys(t).length && e.removeCustomer(a, !0))
2235             }
2236         }, {
2237             name: "Reset Abilities",
2238             description: "Resets used abilities in shop (Only usable in the shop)",
2239             run: function() {
2240                 var e = document.createElement("iframe");
2241                 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/cafe/shop" !== window.location.pathname ? alert("This can only be run in the shop") : (e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode).setState({
2242                     abilities: Object.fromEntries(Object.entries(e.state.abilities).map(e => [e[0], 5]))
2243                 })
2244             }
2245         }, {
2246             name: "Set Cash",
2247             description: "Sets cafe cash",
2248             inputs: [{
2249                 name: "Amount",
2250                 type: "number"
2251             }],
2252             run: function(e) {
2253                 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2254                 t.setState({
2255                     cafeCash: e
2256                 }), t.props.liveGameController.setVal({
2257                     path: "c/" + t.props.client.name,
2258                     val: {
2259                         b: t.props.client.blook,
2260                         ca: e
2261                     }
2262                 })
2263             }
2264         }, {
2265             name: "Spam Attack Player",
2266             description: "Attacks the player to make the game unplayable",
2267             inputs: [{
2268                 name: "Player",
2269                 type: "options",
2270                 options() {
2271                     let {
2272                         stateNode: e
2273                     } = Object.values(function e(t = document.querySelector("body>div")) {
2274                         return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2275                     }())[1].children[0]._owner;
2276                     return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
2277                 }
2278             }],
2279             type: "toggle",
2280             enabled: false,
2281             data: null,
2282             run: function(name) {
2283                 if (this.enabled) {
2284                     this.enabled = false;
2285                     clearInterval(this.data);
2286                     this.data = null;
2287                 } else {
2288                     this.enabled = true;
2290                     function reactHandler() {
2291                         return Object.values(document.querySelector('body div[class*="_body"]'))[1].children[0]._owner;
2292                     }
2294                     var action = name + ":inspect";
2296                     function spamAction() {
2297                         var handler = reactHandler();
2298                         if (handler && handler.stateNode && handler.stateNode.props && handler.stateNode.props.liveGameController) {
2299                             handler.stateNode.props.liveGameController.setVal({
2300                                 id: handler.stateNode.props.client.hostId,
2301                                 path: "c/" + handler.stateNode.props.client.name + "/tat",
2302                                 val: action
2303                             });
2304                         }
2305                     }
2307                     this.data = setInterval(spamAction, 50);
2308                 }
2309             }
2310         }, {
2311             name: "Attack Player",
2312             description: "Sends the player a health inspection",
2313             inputs: [{
2314                 name: "Player's Name",
2315                 type: "text"
2316             }],
2317             run: (function(targetPlayer) {
2318                 function reactHandler() {
2319                     return Object.values(document.querySelector('body div[class*="_body"]'))[1].children[0]._owner;
2320                 }
2322                 reactHandler().stateNode.props.liveGameController.setVal({
2323                     id: reactHandler().stateNode.props.client.hostId,
2324                     path: "c/" + reactHandler().stateNode.props.client.name + "/tat",
2325                     val: targetPlayer + ":inspect"
2326                 });
2327             })
2328         }, {
2329             name: "Tax Player",
2330             description: "Makes a player pay tax",
2331             inputs: [{
2332                 name: "Player's Name",
2333                 type: "text"
2334             }],
2335             run: function(playerName) {
2336                 function reactHandler() {
2337                     return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2338                 }
2340                 function setv(args) {
2341                     reactHandler().stateNode.props.liveGameController.setVal({
2342                         path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
2343                         val: args.slice(1, args.length).join(" ")
2344                     });
2345                 }
2347                 function taxPlayer() {
2348                     if (playerName) {
2349                         setv(['tat', playerName + ':tax']);
2350                     } else {
2351                         console.log("No player name entered. Operation cancelled.");
2352                     }
2353                 }
2355                 taxPlayer();
2356             }
2357         }, {
2358             name: "Stock Food",
2359             description: "Stocks all food to 99 (Not usable in the shop)",
2360             run: function() {
2361                 var e = document.createElement("iframe");
2362                 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/cafe" !== window.location.pathname ? alert("This can't be run in the shop") : (e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode).setState({
2363                     foods: e.state.foods.map(e => ({
2364                         ...e,
2365                         stock: 99,
2366                         level: 5
2367                     }))
2368                 })
2369             }
2370         }],
2371         crypto: [{
2372             name: "Choice ESP",
2373             description: "Shows what each choice will give you",
2374             type: "toggle",
2375             enabled: !1,
2376             data: null,
2377             run: function() {
2378                 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
2379                     let {
2380                         stateNode: e
2381                     } = Object.values(function e(t = document.querySelector("body>div")) {
2382                         return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2383                     }())[1].children[0]._owner, {
2384                         text: t
2385                     } = e.state.choices[0], a = document.querySelector("[class^=styles__feedbackContainer___]");
2386                     if (a.children.length <= 4) {
2387                         let o = document.createElement("div");
2388                         o.style.color = "white", o.style.fontFamily = "Inconsolata,Helvetica,monospace,sans-serif", o.style.fontSize = "2em", o.style.display = "flex", o.style.justifyContent = "center", o.style.marginTop = "675px", o.innerText = t, a.append(o)
2389                     }
2390                 }, 50))
2391             }
2392         }, {
2393             name: "Password ESP",
2394             description: "Highlights the wrong passwords",
2395             type: "toggle",
2396             enabled: !1,
2397             data: null,
2398             run: function() {
2399                 try {
2400                     let e = this;
2401                     e.enabled ? (e.enabled = !1, clearInterval(e.data), e.data = null) : (e.enabled = !0, e.data = setInterval(() => {
2402                         let {
2403                             state: e
2404                         } = Object.values(function e(t = document.querySelector("#app > div > div")) {
2405                             return Object.values(t)[1]?.children?.[1]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2406                         }())[1].children[1]._owner.stateNode;
2407                         "hack" === e.stage && Array.from(document.querySelectorAll('[role="button"]._button_mrhfb_157')).forEach(t => {
2408                             t.textContent.trim() !== e.correctPassword.trim() ? (t.style.outlineColor = "rgba(255, 64, 64, 0.8)", t.style.backgroundColor = "rgba(255, 64, 64, 0.8)", t.style.textShadow = "0 0 1px #f33") : (t.style.outlineColor = "", t.style.backgroundColor = "", t.style.textShadow = "")
2409                         })
2410                     }, 50))
2411                 } catch (t) {
2412                     console.error("An error occurred:", t)
2413                 }
2414             }
2415         }, {
2416             name: "Always Triple",
2417             description: "Always get triple crypto",
2418             type: "toggle",
2419             enabled: !1,
2420             data: null,
2421             run: function() {
2422                 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2423                     choices: [{
2424                         type: "mult",
2425                         val: 3,
2426                         rate: .075,
2427                         blook: "Brainy Bot",
2428                         text: "Triple Crypto"
2429                     }]
2430                 }), 50))
2431             }
2432         }, {
2433             name: "Always Quintuple",
2434             description: "Always get quintuple crypto",
2435             type: "toggle",
2436             enabled: !1,
2437             data: null,
2438             run: function() {
2439                 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2440                     choices: [{
2441                         type: "mult",
2442                         val: 5,
2443                         rate: .075,
2444                         blook: "Ice Elemental",
2445                         text: "Quintuple Crypto"
2446                     }]
2447                 }), 50))
2448             }
2449         }, {
2450             name: "Always Hack",
2451             description: "Always get hack",
2452             type: "toggle",
2453             enabled: !1,
2454             data: null,
2455             run: function() {
2456                 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2457                     choices: [{
2458                         type: "hack",
2459                         val: 3,
2460                         rate: .075,
2461                         blook: "Mega Bot",
2462                         text: "HACK"
2463                     }]
2464                 }), 50))
2465             }
2466         }, {
2467             name: "Crash Password",
2468             description: "Crashes other players when they attempt to hack you",
2469             type: "toggle",
2470             enabled: !1,
2471             data: null,
2472             run: function() {
2473                 var e = Object.values(function e(t = document.querySelector("#app")) {
2474                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2475                 }())[1].children[0]._owner.stateNode;
2476                 if (this.enabled) this.enabled = !1, clearInterval(this.data), this.data = null, e.props.liveGameController.setVal({
2477                     path: `c/${e.props.client.name}/p`,
2478                     val: e.state?.password
2479                 });
2480                 else {
2481                     this.enabled = !0;
2482                     let t = () => {
2483                         e.props.liveGameController.setVal({
2484                             path: `c/${e.props.client.name}/p/toString`,
2485                             val: "crash"
2486                         })
2487                     };
2488                     this.data = setInterval(t, 25)
2489                 }
2490             }
2491         }, {
2492             name: "Set Freeze Password",
2493             description: "Freezes other players when they attempt to hack you",
2494             type: "toggle",
2495             enabled: !1,
2496             data: null,
2497             run: function() {
2498                 const encodedChars = [
2499                     '\\u2f9f', '\\u4fff', '\\u4f52', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u0E47', '\\u4FF1', '\\u4FF2'
2500                 ];
2502                 const chars = encodedChars.map(char => eval(`"${char}"`));
2504                 function makeLongText() {
2505                     return new Array(3e+6).fill().map(e => chars[Math.floor(Math.random() * chars.length)]).join("");
2506                 }
2508                 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2510                 if (this.enabled) {
2511                     this.enabled = !1;
2512                     clearInterval(this.data);
2513                     this.data = null;
2514                     t.setState({
2515                         password: ''
2516                     });
2517                     t.props.liveGameController.setVal({
2518                         path: "c/".concat(t.props.client.name),
2519                         val: {
2520                             b: t.props.client.blook,
2521                             p: '',
2522                             cr: t.state.crypto
2523                         }
2524                     });
2525                 } else {
2526                     this.enabled = !0;
2527                     let lagFunction = () => {
2528                         var e = makeLongText();
2529                         t.setState({
2530                             password: e
2531                         });
2532                         t.props.liveGameController.setVal({
2533                             path: "c/".concat(t.props.client.name),
2534                             val: {
2535                                 b: t.props.client.blook,
2536                                 p: e,
2537                                 cr: t.state.crypto
2538                             }
2539                         });
2540                     };
2541                     this.data = setInterval(lagFunction, 25);
2542                 }
2543             }
2544         }, {
2545             name: "Auto Guess",
2546             description: "Automatically performs the hack for you",
2547             type: "toggle",
2548             enabled: !1,
2549             data: null,
2550             run: function() {
2551                 try {
2552                     let e = this;
2553                     e.enabled ? (e.enabled = !1, clearInterval(e.data), e.data = null) : (e.enabled = !0, e.data = setInterval(() => {
2554                         if ("hack" === ("hack" === window.location.pathname.split("/")[2] && "hack")) {
2555                             let {
2556                                 stage: e,
2557                                 correctPassword: t
2558                             } = Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner.stateNode.state;
2559                             "hack" === e && Array.from(document.querySelectorAll("div")).filter(e => e.innerHTML === t)[0].click()
2560                         }
2561                     }, 50))
2562                 } catch (t) {
2563                     console.error("An error occurred:", t)
2564                 }
2565             }
2566         }, {
2567             name: "Set Host Screen Green",
2568             description: "Makes the whole screen filled with text",
2569             type: "toggle",
2570             enabled: !1,
2571             data: null,
2572             run: function() {
2573                 var a = Object.values(function e(t = document.querySelector("#app")) {
2574                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2575                 }())[1].children[0]._owner.stateNode;
2577                 if (this.enabled) {
2578                     this.enabled = !1;
2579                     clearInterval(this.data);
2580                     this.data = null;
2581                     a.props.liveGameController.setVal({
2582                         path: `c/${a.props.client.name}/cr`,
2583                         val: ""
2584                     });
2585                 } else {
2586                     this.enabled = !0;
2587                     let t = () => {
2588                         a.props.liveGameController.setVal({
2589                             path: `c/${a.props.client.name}/cr`,
2590                             val: `9999999999999999999999999999999999999999999999${new Array(999).fill("\u0e47".repeat(70)).join(" ")}`
2591                         });
2592                     };
2593                     this.data = setInterval(t, 25);
2594                 }
2595             }
2596         }, {
2597             name: "Remove Hack",
2598             description: "Removes an attacking hack",
2599             run: function() {
2600                 Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode.setState({
2601                     hack: ""
2602                 })
2603             }
2604         }, {
2605             name: "Crash Host (Crypto)",
2606             description: "Crashes the Host's Game for Crypto Hack",
2607             run: function() {
2608                 function reactHandler() {
2609                     return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2610                 }
2612                 function setv(args) {
2613                     reactHandler().stateNode.props.liveGameController.setVal({
2614                         path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
2615                         val: args.slice(1, args.length).join(" ")
2616                     });
2617                 }
2619                 setv(['cr/t', 't']);
2620             }
2621         }, {
2622             name: "Set Crypto",
2623             description: "Sets crypto",
2624             inputs: [{
2625                 name: "Amount",
2626                 type: "number"
2627             }],
2628             run: function(e) {
2629                 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2630                 t.setState({
2631                     crypto: e,
2632                     crypto2: e
2633                 }), t.props.liveGameController.setVal({
2634                     path: "c/" + t.props.client.name + "/cr",
2635                     val: e
2636                 })
2637             }
2638         }, {
2639             name: "Set Password",
2640             description: "Sets hacking password",
2641             inputs: [{
2642                 name: "Custom Password",
2643                 type: "string"
2644             }],
2645             run: function(e) {
2646                 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2647                 t.setState({
2648                     password: e
2649                 }), t.props.liveGameController.setVal({
2650                     path: "c/" + t.props.client.name + "/p",
2651                     val: e
2652                 })
2653             }
2654         }, {
2655             name: "Set Host Screen Text",
2656             description: "Makes the whole screen filled with text",
2657             inputs: [{
2658                 name: "Text",
2659                 type: "text",
2660             }],
2661             run: function(e) {
2662                 let t = document.createElement("iframe");
2663                 document.body.append(t), window.prompt = t.contentWindow.prompt.bind(window), t.remove();
2664                 var a = Object.values(function e(t = document.querySelector("#app")) {
2665                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
2666                 }())[1].children[0]._owner.stateNode;
2667                 a.props.liveGameController.setVal({
2668                     path: `c/${a.props.client.name}/cr`,
2669                     val: `9999999999999999999999999999999999999999999999${new Array(999).fill(e).join(" ")}`
2670                 })
2671             }
2672         }, {
2673             name: "Steal Player's Crypto",
2674             description: "Steals all of someone's crypto",
2675             inputs: [{
2676                 name: "Player",
2677                 type: "options",
2678                 options() {
2679                     let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2680                     return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
2681                 }
2682             }],
2683             run: function(e) {
2684                 let t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2685                 t.props.liveGameController.getDatabaseVal("c", a => {
2686                     var o;
2687                     a && Object.keys(a).map(e => e.toLowerCase()).includes(e.toLowerCase()) && ([a, {
2688                         cr: o
2689                     }] = Object.entries(a).find(([t]) => t.toLowerCase() == e.toLowerCase()), t.setState({
2690                         crypto: t.state.crypto + o,
2691                         crypto2: t.state.crypto + o
2692                     }), t.props.liveGameController.setVal({
2693                         path: "c/".concat(t.props.client.name),
2694                         val: {
2695                             b: t.props.client.blook,
2696                             p: t.state.password,
2697                             cr: t.state.crypto + o,
2698                             tat: a + ":" + o
2699                         }
2700                     }))
2701                 })
2702             }
2703         }, {
2704             name: "Get Player's Password",
2705             description: "Shows the password of any player in an alert box",
2706             inputs: [{
2707                 name: "Player",
2708                 type: "options",
2709                 options() {
2710                     let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2711                     return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
2712                 }
2713             }],
2714             run: function(player) {
2715                 let i = document.createElement('iframe');
2716                 document.body.append(i);
2717                 const alert = i.contentWindow.alert.bind(window);
2718                 i.remove();
2719                 var t = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
2720                 t.props.liveGameController.getDatabaseVal("c", e => {
2721                     alert(e?.[player]?.p);
2722                 });
2723             }
2724         }, {
2725             name: "Flood Alert Box",
2726             description: "Makes the alert box filled with text",
2727             inputs: [{
2728                 name: "Text",
2729                 type: "text"
2730             }],
2731             run: function(userInput) {
2732                 function getReactOwner() {
2733                     return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2734                 }
2736                 function repeatText(text, times) {
2737                     return new Array(times).fill(text).join(" ");
2738                 }
2740                 function setValForPlayer() {
2741                     getReactOwner().stateNode.props.liveGameController.getDatabaseVal("c/").then(data => {
2742                         if (data != null) {
2744                             const playerName = Object.keys(data)[0];
2746                             if (userInput) {
2748                                 const id = "1,723,583,989,363";
2749                                 const repeatedText = repeatText(userInput, 1700);
2750                                 const finalText = `${id}${repeatedText}`;
2752                                 setv(['tat', `${playerName}:${finalText}`]);
2753                             } else {
2754                                 console.log("No text entered. Operation cancelled.");
2755                             }
2756                         } else {
2757                             console.log("Player not found!");
2758                         }
2759                     });
2760                 }
2762                 function setv(args) {
2763                     getReactOwner().stateNode.props.liveGameController.setVal({
2764                         path: "c/" + getReactOwner().stateNode.props.client.name + "/" + args[0],
2765                         val: args.slice(1, args.length).join(" ")
2766                     });
2767                 }
2769                 setValForPlayer();
2770             }
2771         }, {
2772             name: "Send Ad Text",
2773             description: "Sends a load of text to another player (This will override your blook!)",
2774             inputs: [{
2775                 name: "Player",
2776                 type: "options",
2777                 options() {
2778                     let {
2779                         stateNode: e
2780                     } = Object.values(function e(t = document.querySelector("body>div")) {
2781                         return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
2782                     }())[1].children[0]._owner;
2783                     return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]));
2784                 }
2785             }, {
2786                 name: "Text"
2787             }],
2788             run: async function(player, e) {
2789                 let {
2790                     props: t2
2791                 } = Object.values(function e(t = document.querySelector("body>div")) {
2792                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
2793                 }())[1].children[0]._owner.stateNode;
2795                 let repeatedText = `Dog:${Array(500).fill(e).join(' ')}`;
2796                 t2.client.blook = repeatedText;
2797                 t2.liveGameController.setVal({
2798                     path: `c/${t2.client.name}/b`,
2799                     val: repeatedText
2800                 });
2801                 t2.liveGameController.setVal({
2802                     path: `c/${t2.client.name}/tat`,
2803                     val: `${player}:196`
2804                 });
2805             }
2806         }],
2807         defense: [{
2808             name: "Earthquake",
2809             description: "Shuffles around towers",
2810             run: function() {
2811                 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode,
2812                     t = (e.setState({
2813                         eventName: "Earthquake",
2814                         event: {
2815                             short: "e",
2816                             color: "#805500",
2817                             icon: "fas fa-mountain",
2818                             desc: "All of your towers get mixed up",
2819                             rate: .02
2820                         },
2821                         buyTowerName: "",
2822                         buyTower: {}
2823                     }, () => e.eventTimeout = setTimeout(() => e.setState({
2824                         event: {},
2825                         eventName: ""
2826                     }), 6e3)), e.tiles.forEach(e => e.forEach((t, a) => 3 === t && (e[a] = 0))), e.tiles.flatMap((e, t) => e.map((e, a) => 0 === e && {
2827                         x: a,
2828                         y: t
2829                     })).filter(Boolean).sort(() => .5 - Math.random()));
2830                 e.towers.forEach(a => {
2831                     var {
2832                         x: o,
2833                         y: r
2834                     } = t.shift();
2835                     a.move(o, r, e.tileSize), e.tiles[r][o] = 3
2836                 })
2837             }
2838         }, {
2839             name: "Max Tower Stats",
2840             description: "Makes all placed towers overpowered",
2841             run: function() {
2842                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.towers.forEach(e => {
2843                     e.range = 100, e.fullCd = e.cd = 0, e.damage = 1e6
2844                 })
2845             }
2846         }, {
2847             name: "Remove Ducks",
2848             description: "Removes ducks",
2849             run: function() {
2850                 let {
2851                     ducks: e,
2852                     tiles: t
2853                 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2854                 e.forEach(e => {
2855                     t[e.y][e.x] = 0
2856                 }), e.length = 0
2857             }
2858         }, {
2859             name: "Place Blooks Anywhere",
2860             description: "Be able to place your blooks anywhere",
2861             run: function() {
2862                 for (var i = 0; i < 10; i++) {
2863                     Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner.stateNode.tiles[i] = Array(10).fill(0);
2864                 }
2865             }
2866         }, {
2867             name: "Remove Enemies",
2868             description: "Removes all the enemies",
2869             run: function() {
2870                 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2871                 e.enemies = e.futureEnemies = []
2872             }
2873         }, {
2874             name: "Remove Obstacles",
2875             description: "Lets you place towers anywhere",
2876             run: function() {
2877                 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2878                 e.tiles = e.tiles.map(e => e.fill(0))
2879             }
2880         }, {
2881             name: "Set Damage",
2882             description: "Sets damage",
2883             inputs: [{
2884                 name: "Damage",
2885                 type: "number"
2886             }],
2887             run: function(e) {
2888                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.dmg = e
2889             }
2890         }, {
2891             name: "Set Round",
2892             description: "Sets the current round",
2893             inputs: [{
2894                 name: "Round",
2895                 type: "number"
2896             }],
2897             run: function(e) {
2898                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2899                     round: e
2900                 })
2901             }
2902         }, {
2903             name: "Set Tokens",
2904             description: "Sets the amount of tokens you have",
2905             inputs: [{
2906                 name: "Tokens",
2907                 type: "number"
2908             }],
2909             run: function(e) {
2910                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2911                     tokens: e
2912                 })
2913             }
2914         }],
2915         defense2: [{
2916             name: "Max Tower Stats",
2917             description: "Makes all placed towers overpowered",
2918             run: function() {
2919                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.state.towers.forEach(e => {
2920                     if (e.stats.dmg = 1e6, e.stats.fireRate = 50, e.stats.ghostDetect = !0, e.stats.maxTargets = 1e6, e.stats.numProjectiles &&= 100, e.stats.range = 100, e.stats.auraBuffs)
2921                         for (let t in e.stats.auraBuffs) e.stats.auraBuffs[t] *= 100
2922                 })
2923             }
2924         }, {
2925             name: "Kill Enemies",
2926             description: "Kills all the enemies",
2927             run: function() {
2928                 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
2929                 e.game.current.scene.scenes[0].enemyQueue.length = 0, e.game.current.scene.scenes[0].physics.world.bodies.entries.forEach(e => e?.gameObject?.receiveDamage?.(e.gameObject.hp, 1))
2930             }
2931         }, {
2932             name: "Crash Host (Defense 2)",
2933             description: "Crashes the Host's Game for Tower Defense 2 (May take a few tries)",
2934             run: function() {
2935                 function reactHandler() {
2936                     return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
2937                 }
2939                 function setv(args) {
2940                     reactHandler().stateNode.props.liveGameController.setVal({
2941                         path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
2942                         val: args.slice(1, args.length).join(" ")
2943                     });
2944                 }
2946                 setv(['d/t', 't']);
2947             }
2948         }, {
2949             name: "Set Coins",
2950             description: "Sets coins",
2951             inputs: [{
2952                 name: "Coins",
2953                 type: "number"
2954             }],
2955             run: function(e) {
2956                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2957                     coins: e
2958                 })
2959             }
2960         }, {
2961             name: "Set Health",
2962             description: "Sets the amount of health you have",
2963             inputs: [{
2964                 name: "Health",
2965                 type: "number"
2966             }],
2967             run: function(e) {
2968                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2969                     health: e
2970                 })
2971             }
2972         }, {
2973             name: "Set Round",
2974             description: "Sets the current round",
2975             inputs: [{
2976                 name: "Round",
2977                 type: "number"
2978             }],
2979             run: function(e) {
2980                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
2981                     round: e
2982                 })
2983             }
2984         }],
2985         dinos: [{
2986             name: "Auto Choose",
2987             description: "Automatically choose the best fossil when excavating",
2988             type: "toggle",
2989             enabled: false,
2990             data: null,
2991             run: function() {
2992                 if (this.enabled) {
2993                     this.enabled = false;
2994                     clearInterval(this.data);
2995                     this.data = null;
2996                 } else {
2997                     this.enabled = true;
2998                     this.data = setInterval(() => {
2999                         const cheat = (async () => {
3000                             function rand(e, t) {
3001                                 const s = [];
3002                                 while (s.length < t) {
3003                                     const i = Math.random();
3004                                     let r = 0,
3005                                         g = null;
3006                                     for (let o = 0; o < e.length; o++) {
3007                                         r += e[o].rate;
3008                                         if (r >= i) {
3009                                             g = e[o];
3010                                             break;
3011                                         }
3012                                     }
3013                                     g && !s.includes(g) && s.push(g);
3014                                 }
3015                                 return s;
3016                             }
3018                             try {
3019                                 let {
3020                                     stateNode
3021                                 } = Object.values((function react(r = document.querySelector("body>div")) {
3022                                     return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
3023                                 })())[1].children[0]._owner;
3025                                 if (stateNode.state.stage === "excavate") {
3026                                     stateNode.state.choices.length || (stateNode.state.choices = rand([{
3027                                             type: "fossil",
3028                                             val: 10,
3029                                             rate: .1,
3030                                             blook: "Amber"
3031                                         },
3032                                         {
3033                                             type: "fossil",
3034                                             val: 25,
3035                                             rate: .1,
3036                                             blook: "Dino Egg"
3037                                         },
3038                                         {
3039                                             type: "fossil",
3040                                             val: 50,
3041                                             rate: .175,
3042                                             blook: "Dino Fossil"
3043                                         },
3044                                         {
3045                                             type: "fossil",
3046                                             val: 75,
3047                                             rate: .175,
3048                                             blook: "Stegosaurus"
3049                                         },
3050                                         {
3051                                             type: "fossil",
3052                                             val: 100,
3053                                             rate: .15,
3054                                             blook: "Velociraptor"
3055                                         },
3056                                         {
3057                                             type: "fossil",
3058                                             val: 125,
3059                                             rate: .125,
3060                                             blook: "Brontosaurus"
3061                                         },
3062                                         {
3063                                             type: "fossil",
3064                                             val: 250,
3065                                             rate: .075,
3066                                             blook: "Triceratops"
3067                                         },
3068                                         {
3069                                             type: "fossil",
3070                                             val: 500,
3071                                             rate: .025,
3072                                             blook: "Tyrannosaurus Rex"
3073                                         },
3074                                         {
3075                                             type: "mult",
3076                                             val: 1.5,
3077                                             rate: .05
3078                                         },
3079                                         {
3080                                             type: "mult",
3081                                             val: 2,
3082                                             rate: .025
3083                                         }
3084                                     ], 3));
3086                                     let max = 0,
3087                                         index = -1;
3088                                     for (let i = 0; i < stateNode.state.choices.length; i++) {
3089                                         const {
3090                                             type,
3091                                             val
3092                                         } = stateNode.state.choices[i];
3093                                         const value = (type == "fossil" ? stateNode.state.fossils + val * stateNode.state.fossilMult : stateNode.state.fossils * val) || 0;
3094                                         if (value <= max && type != "mult") continue;
3095                                         max = value;
3096                                         index = i + 1;
3097                                     }
3099                                     document.querySelector('div[class*=rockRow] > div[role="button"]:nth-child(' + index + ')').click();
3100                                 }
3101                             } catch {}
3102                         });
3103                         cheat();
3104                     }, 50);
3105                 }
3106             }
3107         }, {
3108             name: "Rock ESP",
3109             description: "Shows what is under the rocks",
3110             type: "toggle",
3111             enabled: !1,
3112             data: null,
3113             run: function() {
3114                 let e = ["⁰", "\xb9", "\xb2", "\xb3", "⁴", "⁵", "⁶", "⁷", "⁸", "⁹"],
3115                     t = t => {
3116                         let a = "";
3117                         for (; t > 0;) a = e[t % parseInt("10")] + a, t = ~~(t / 10);
3118                         return a
3119                     },
3120                     a = e => {
3121                         let a = e.toString();
3122                         if (e >= 1e3) {
3123                             let o = ["", "K", "M", "B", "T"],
3124                                 r = ~~((digits(e) - 1) / 3);
3125                             if (r < o.length) {
3126                                 let i = "";
3127                                 for (let n = 3; n >= 1; n--) {
3128                                     i = parseFloat((0 !== r ? e / 1e3 ** r : e).toPrecision(n)).toString();
3129                                     let s = i.replace(/[^a-zA-Z 0-9]+/g, "");
3130                                     if (s.length <= 3) break
3131                                 }
3132                                 Number(i) % 1 != 0 && (i = Number(i).toFixed(1)), a = i + o[r]
3133                             } else {
3134                                 let l = e,
3135                                     c = 0;
3136                                 for (; l >= 100;) l = Math.floor(l / 10), c += 1;
3137                                 a = `${l/10} \xd7 10${t(c+1)}`
3138                             }
3139                         }
3140                         return a
3141                     };
3142                 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
3143                     let {
3144                         stateNode: e
3145                     } = Object.values(function e(t = document.querySelector("body>div")) {
3146                         return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
3147                     }())[1].children[0]._owner, t = [...document.querySelector('[class*="rockButton"]').parentElement.children];
3148                     t.every(e => e.querySelector("div")) || e.setState({
3149                         choices: [{
3150                             type: "fossil",
3151                             val: 10,
3152                             rate: .1,
3153                             blook: "Amber"
3154                         }, {
3155                             type: "fossil",
3156                             val: 25,
3157                             rate: .1,
3158                             blook: "Dino Egg"
3159                         }, {
3160                             type: "fossil",
3161                             val: 50,
3162                             rate: .175,
3163                             blook: "Dino Fossil"
3164                         }, {
3165                             type: "fossil",
3166                             val: 75,
3167                             rate: .175,
3168                             blook: "Stegosaurus"
3169                         }, {
3170                             type: "fossil",
3171                             val: 100,
3172                             rate: .15,
3173                             blook: "Velociraptor"
3174                         }, {
3175                             type: "fossil",
3176                             val: 125,
3177                             rate: .125,
3178                             blook: "Brontosaurus"
3179                         }, {
3180                             type: "fossil",
3181                             val: 250,
3182                             rate: .075,
3183                             blook: "Triceratops"
3184                         }, {
3185                             type: "fossil",
3186                             val: 500,
3187                             rate: .025,
3188                             blook: "Tyrannosaurus Rex"
3189                         }, {
3190                             type: "mult",
3191                             val: 1.5,
3192                             rate: .05
3193                         }, {
3194                             type: "mult",
3195                             val: 2,
3196                             rate: .025
3197                         }].sort(() => .5 - Math.random()).slice(0, 3)
3198                     }, () => {
3199                         t.forEach((t, o) => {
3200                             let r = e.state.choices[o];
3201                             t.querySelector("div") && t.querySelector("div").remove();
3202                             let i = document.createElement("div");
3203                             i.style.color = "white", i.style.fontFamily = "Macondo", i.style.fontSize = "1em", i.style.display = "flex", i.style.justifyContent = "center", i.style.transform = "translateY(25px)", i.innerText = "fossil" === r.type ? `+${Math.round(r.val*e.state.fossilMult)>99999999?a(Math.round(r.val*e.state.fossilMult)):Math.round(r.val*e.state.fossilMult)} Fossils` : `x${r.val} Fossils Per Excavation`, t.append(i)
3204                         })
3205                     })
3206                 }, 50))
3207             }
3208         }, {
3209             name: "Set Fossils",
3210             description: "Sets the amount of fossils you have",
3211             inputs: [{
3212                 name: "Fossils",
3213                 type: "number"
3214             }],
3215             run: function(e) {
3216                 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3217                 t.setState({
3218                     fossils: e
3219                 }), t.props.liveGameController.setVal({
3220                     path: "c/" + t.props.client.name,
3221                     val: {
3222                         b: t.props.client.blook,
3223                         f: e,
3224                         ic: t.state.isCheating
3225                     }
3226                 })
3227             }
3228         }, {
3229             name: "Set Multiplier",
3230             description: "Sets fossil multiplier",
3231             inputs: [{
3232                 name: "Multiplier",
3233                 type: "number"
3234             }],
3235             run: function(e) {
3236                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3237                     fossilMult: e
3238                 })
3239             }
3240         }, {
3241             name: "Crash Host (Dino)",
3242             description: "Crashes the Host's Game for Deceptive Dinos",
3243             run: function() {
3244                 function reactHandler() {
3245                     return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
3246                 }
3248                 function setv(args) {
3249                     reactHandler().stateNode.props.liveGameController.setVal({
3250                         path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
3251                         val: args.slice(1, args.length).join(" ")
3252                     });
3253                 }
3255                 setv(['f/t', 't']);
3256             }
3257         }, {
3258             name: "Stop Cheating",
3259             description: "Undoes cheating so that you can't be caught",
3260             run: function() {
3261                 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3262                 e.setState({
3263                     isCheating: !1
3264                 }), e.props.liveGameController.setVal({
3265                     path: `c/${e.props.client.name}/ic`,
3266                     val: !1
3267                 })
3268             }
3269         }],
3270         doom: [{
3271             name: "Fill Deck",
3272             description: "Fills your deck with every maxed out card and artifact (Only works on towers page)",
3273             run: function() {
3274                 let e = document.createElement("iframe");
3275                 if (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/tower/map" == window.location.pathname) {
3276                     let {
3277                         stateNode: t
3278                     } = Object.values(function e(t = document.querySelector("body>div")) {
3279                         return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
3280                     }())[1].children[0]._owner;
3281                     t.props.tower.artifacts = "Medical Kit|Fury Relic|Survival Guide|Steel Socks|Piggy Bank|Lucky Feather|Coupon|Cheese|Tasty Egg|Training Weights|Mighty Shield|Toxic Waste|Lifeline Totem|Cursed Hourglass|Band-Aid|Elder Coins|Captain's Anchor|Chess Pieces|Pink Hippo|Anorak's Wizard Cap|Dave's Doggo|Anubis' Obelisk|Farm Tractor|Magic Seedling|Just A Bone|Cozy Igloo|King's Crown|Sacred Scroll".split("|"), t.props.tower.cards = "Chick,\uD83C\uDF3D|Chicken,\uD83C\uDF3D|Cow,\uD83C\uDF3D|Goat,\uD83C\uDF3D|Horse,\uD83C\uDF3D|Pig,\uD83C\uDF3D|Sheep,\uD83C\uDF3D|Duck,\uD83C\uDF3D|Dog,\uD83C\uDF3D|Cat,\uD83D\uDC3E|Rabbit,\uD83D\uDC3E|Goldfish,\uD83D\uDC3E|Hamster,\uD83D\uDC3E|Turtle,\uD83D\uDC3E|Kitten,\uD83D\uDC3E|Puppy,\uD83D\uDC3E|Bear,\uD83C\uDF32|Moose,\uD83C\uDF32|Fox,\uD83C\uDF32|Raccoon,\uD83C\uDF32|Squirrel,\uD83C\uDF32|Owl,\uD83C\uDF32|Hedgehog,\uD83C\uDF32|Baby Penguin,❄️|Penguin,❄️|Arctic Fox,❄️|Snowy Owl,❄️|Polar Bear,❄️|Arctic Hare,❄️|Seal,❄️|Walrus,❄️|Tiger,\uD83C\uDF34|Panther,\uD83C\uDF34|Cockatoo,\uD83C\uDF34|Orangutan,\uD83C\uDF34|Anaconda,\uD83C\uDF34|Macaw,\uD83C\uDF34|Jaguar,\uD83C\uDF34|Capuchin,\uD83C\uDF34|Toucan,\uD83C\uDF34|Parrot,\uD83C\uDF34|Elf,⚔️|Witch,⚔️|Wizard,⚔️|Fairy,⚔️|Slime Monster,⚔️|Jester,⚔️|Dragon,⚔️|Unicorn,⚔️|Queen,⚔️|King,⚔️|Snow Globe,☃️|Holiday Gift,☃️|Hot Chocolate,☃️|Gingerbread Man,☃️|Gingerbread House,☃️|Holiday Wreath,☃️|Snowman,☃️|Santa Claus,☃️|Two of Spades,\uD83C\uDFF0|Eat Me,\uD83C\uDFF0|Drink Me,\uD83C\uDFF0|Alice,\uD83C\uDFF0|Queen of Hearts,\uD83C\uDFF0|Dormouse,\uD83C\uDFF0|White Rabbit,\uD83C\uDFF0|Cheshire Cat,\uD83C\uDFF0|Caterpillar,\uD83C\uDFF0|Mad Hatter,\uD83C\uDFF0|King of Hearts,\uD83C\uDFF0".split("|").map(e => {
3282                         let [t, a] = e.split(",");
3283                         return {
3284                             strength: 20,
3285                             charisma: 20,
3286                             wisdom: 20,
3287                             class: a,
3288                             blook: t
3289                         }
3290                     });
3291                     try {
3292                         t.props.addTowerNode()
3293                     } catch {}
3294                     t.setState({
3295                         showDeck: !1
3296                     })
3297                 } else alert("You need to be on the map to run this cheat!")
3298             }
3299         }, {
3300             name: "Max Cards",
3301             description: "Maxes out all the cards in your deck",
3302             run: function() {
3303                 var e = document.createElement("iframe");
3304                 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/tower/map" == window.location.pathname ? (e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode).props.tower.cards.forEach(e => {
3305                     e.strength = 20, e.charisma = 20, e.wisdom = 20
3306                 }) : alert("You need to be on the map to run this cheat!")
3307             }
3308         }, {
3309             name: "Max Health",
3310             description: "Fills the player's health",
3311             run: function() {
3312                 var e = document.createElement("iframe");
3313                 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), "/tower/battle" == window.location.pathname ? Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3314                     myHealth: 100
3315                 }) : alert("You need to be in battle to run this cheat!")
3316             }
3317         }, {
3318             name: "Max Card Stats",
3319             description: "Maxes out player's current card (Only works on attribute select page)",
3320             run: function() {
3321                 var e = document.createElement("iframe"),
3322                     e = (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner).stateNode;
3323                 "select" !== e.state.phase ? alert("You must be on the attribute selection page!") : e.setState({
3324                     myCard: {
3325                         ...e.state.myCard,
3326                         strength: 20,
3327                         charisma: 20,
3328                         wisdom: 20
3329                     }
3330                 })
3331             }
3332         }, {
3333             name: "Min Enemy Stats",
3334             description: "Makes the enemy card stats all 0 (Only works on attribute select page)",
3335             run: function() {
3336                 var e = document.createElement("iframe"),
3337                     e = (document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner).stateNode;
3338                 "select" !== e.state.phase ? alert("You must be on the attribute selection page!") : e.setState({
3339                     enemyCard: {
3340                         ...e.state.enemyCard,
3341                         strength: 0,
3342                         charisma: 0,
3343                         wisdom: 0
3344                     }
3345                 })
3346             }
3347         }, {
3348             name: "Set Coins",
3349             description: "Try's to set amount of tower coins you have",
3350             inputs: [{
3351                 name: "Coins",
3352                 type: "number"
3353             }],
3354             run: function(e) {
3355                 var t = document.createElement("iframe");
3356                 if (document.body.append(t), window.alert = t.contentWindow.prompt.bind(window), t.remove(), "/tower/battle" == window.location.pathname) {
3357                     var t = parseInt("0" + alert("How many coins would you like?")),
3358                         a = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
3359                     try {
3360                         a.props.setTowerCoins(t)
3361                     } catch {}
3362                 } else alert("You need to be in battle to run this cheat!")
3363             }
3364         }, {
3365             name: "Set Streak",
3366             description: "Sets your streak to the desired amount",
3367             inputs: [{
3368                 name: "Streak",
3369                 type: "number"
3370             }],
3371             run: function(e) {
3372                 var t = document.createElement("iframe");
3373                 document.body.append(t), window.alert = t.contentWindow.alert.bind(window), t.remove(), "/tower/battle" == window.location.pathname ? Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
3374                     myStreak: !0,
3375                     streak: e
3376                 }) : alert("You need to be in battle to run this cheat!")
3377             }
3378         }],
3379         factory: [{
3380             name: "Choose Blook",
3381             description: "Gives you a blook",
3382             inputs: [{
3383                 name: "Blook",
3384                 type: "options",
3385                 options: [{
3386                     name: "Chick",
3387                     color: "#ffcd05",
3388                     class: "\uD83C\uDF3D",
3389                     rarity: "Common",
3390                     cash: [3, 7, 65, 400, 2500],
3391                     time: [1, 1, 1, 1, 1],
3392                     price: [300, 3e3, 3e4, 2e5]
3393                 }, {
3394                     name: "Chicken",
3395                     color: "#ed1c24",
3396                     class: "\uD83C\uDF3D",
3397                     rarity: "Common",
3398                     cash: [10, 40, 200, 1400, 1e4],
3399                     time: [5, 4, 3, 2, 1],
3400                     price: [570, 4e3, 5e4, 8e5]
3401                 }, {
3402                     name: "Cow",
3403                     color: "#58595b",
3404                     class: "\uD83C\uDF3D",
3405                     rarity: "Common",
3406                     cash: [25, 75, 1500, 25e3, 25e4],
3407                     time: [15, 10, 10, 10, 5],
3408                     price: [500, 9500, 16e4, 4e6]
3409                 }, {
3410                     name: "Duck",
3411                     color: "#4ab96d",
3412                     class: "\uD83C\uDF3D",
3413                     rarity: "Common",
3414                     cash: [4, 24, 200, 3e3, 4e4],
3415                     time: [3, 3, 3, 3, 3],
3416                     price: [450, 4200, 7e4, 11e5]
3417                 }, {
3418                     name: "Goat",
3419                     color: "#c59a74",
3420                     class: "\uD83C\uDF3D",
3421                     rarity: "Common",
3422                     cash: [5, 28, 200, 1300, 12e3],
3423                     time: [3, 3, 2, 2, 2],
3424                     price: [500, 6400, 45e3, 5e5]
3425                 }, {
3426                     name: "Horse",
3427                     color: "#995b3c",
3428                     class: "\uD83C\uDF3D",
3429                     rarity: "Common",
3430                     cash: [5, 20, 270, 1800, 15e3],
3431                     time: [2, 2, 2, 2, 2],
3432                     price: [550, 8200, 65e3, 6e5]
3433                 }, {
3434                     name: "Pig",
3435                     color: "#f6a9cb",
3436                     class: "\uD83C\uDF3D",
3437                     rarity: "Common",
3438                     cash: [20, 50, 1300, 8e3, 8e4],
3439                     time: [7, 7, 7, 7, 5],
3440                     price: [400, 11e3, 8e4, 13e5]
3441                 }, {
3442                     name: "Sheep",
3443                     color: "#414042",
3444                     class: "\uD83C\uDF3D",
3445                     rarity: "Common",
3446                     cash: [6, 25, 250, 1500, 11e3],
3447                     time: [3, 3, 3, 2, 2],
3448                     price: [500, 5e3, 5e4, 43e4]
3449                 }, {
3450                     name: "Cat",
3451                     color: "#f49849",
3452                     class: "\uD83D\uDC3E",
3453                     rarity: "Common",
3454                     cash: [5, 18, 170, 1700, 13e3],
3455                     time: [2, 2, 2, 2, 2],
3456                     price: [480, 5500, 6e4, 5e5]
3457                 }, {
3458                     name: "Dog",
3459                     color: "#995b3c",
3460                     class: "\uD83D\uDC3E",
3461                     rarity: "Common",
3462                     cash: [7, 25, 220, 1900, 9e3],
3463                     time: [3, 3, 2, 2, 1],
3464                     price: [460, 6600, 7e4, 73e4]
3465                 }, {
3466                     name: "Goldfish",
3467                     color: "#f18221",
3468                     class: "\uD83D\uDC3E",
3469                     rarity: "Common",
3470                     cash: [5, 40, 350, 3500, 35e3],
3471                     time: [3, 3, 3, 3, 3],
3472                     price: [750, 7200, 84e3, 95e4]
3473                 }, {
3474                     name: "Rabbit",
3475                     color: "#e7bf9a",
3476                     class: "\uD83D\uDC3E",
3477                     rarity: "Common",
3478                     cash: [3, 18, 185, 800, 7e3],
3479                     time: [2, 2, 2, 1, 1],
3480                     price: [500, 5800, 56e3, 55e4]
3481                 }, {
3482                     name: "Hamster",
3483                     color: "#ce9176",
3484                     class: "\uD83D\uDC3E",
3485                     rarity: "Common",
3486                     cash: [10, 45, 450, 4500, 45e3],
3487                     time: [4, 4, 4, 4, 4],
3488                     price: [650, 6500, 8e4, 93e4]
3489                 }, {
3490                     name: "Turtle",
3491                     color: "#619a3c",
3492                     class: "\uD83D\uDC3E",
3493                     rarity: "Common",
3494                     cash: [23, 120, 1400, 15e3, 17e4],
3495                     time: [10, 10, 10, 10, 10],
3496                     price: [700, 8500, 11e4, 13e5]
3497                 }, {
3498                     name: "Puppy",
3499                     color: "#414042",
3500                     class: "\uD83D\uDC3E",
3501                     rarity: "Common",
3502                     cash: [4, 10, 75, 500, 3e3],
3503                     time: [1, 1, 1, 1, 1],
3504                     price: [450, 4e3, 35e3, 25e4]
3505                 }, {
3506                     name: "Kitten",
3507                     color: "#58595b",
3508                     class: "\uD83D\uDC3E",
3509                     rarity: "Common",
3510                     cash: [4, 8, 60, 400, 2e3],
3511                     time: [1, 1, 1, 1, 1],
3512                     price: [350, 3500, 26e3, 17e4]
3513                 }, {
3514                     name: "Bear",
3515                     color: "#995b3c",
3516                     class: "\uD83C\uDF32",
3517                     rarity: "Common",
3518                     cash: [12, 70, 550, 4500, 1e5],
3519                     time: [7, 7, 6, 5, 5],
3520                     price: [550, 5500, 63e3, 16e5]
3521                 }, {
3522                     name: "Moose",
3523                     color: "#995b3c",
3524                     class: "\uD83C\uDF32",
3525                     rarity: "Common",
3526                     cash: [8, 45, 400, 3500, 26e3],
3527                     time: [5, 5, 4, 4, 3],
3528                     price: [520, 6500, 58e3, 7e5]
3529                 }, {
3530                     name: "Fox",
3531                     color: "#f49849",
3532                     class: "\uD83C\uDF32",
3533                     rarity: "Common",
3534                     cash: [7, 15, 80, 550, 3e3],
3535                     time: [2, 2, 1, 1, 1],
3536                     price: [400, 4e3, 36e3, 24e4]
3537                 }, {
3538                     name: "Raccoon",
3539                     color: "#6d6e71",
3540                     class: "\uD83C\uDF32",
3541                     rarity: "Common",
3542                     cash: [5, 14, 185, 1900, 19e3],
3543                     time: [2, 2, 2, 2, 2],
3544                     price: [400, 5e3, 71e3, 8e5]
3545                 }, {
3546                     name: "Squirrel",
3547                     color: "#d25927",
3548                     class: "\uD83C\uDF32",
3549                     rarity: "Common",
3550                     cash: [3, 10, 65, 470, 2600],
3551                     time: [1, 1, 1, 1, 1],
3552                     price: [420, 3600, 32e3, 21e4]
3553                 }, {
3554                     name: "Owl",
3555                     color: "#594a42",
3556                     class: "\uD83C\uDF32",
3557                     rarity: "Common",
3558                     cash: [4, 17, 155, 1500, 15e3],
3559                     time: [2, 2, 2, 2, 2],
3560                     price: [500, 4800, 55e3, 58e4]
3561                 }, {
3562                     name: "Hedgehog",
3563                     color: "#3f312b",
3564                     class: "\uD83C\uDF32",
3565                     rarity: "Common",
3566                     cash: [11, 37, 340, 2200, 3e4],
3567                     time: [5, 4, 3, 2, 2],
3568                     price: [540, 7e3, 77e3, 12e5]
3569                 }, {
3570                     name: "Seal",
3571                     color: "#7ca1d5",
3572                     class: "❄️",
3573                     rarity: "Common",
3574                     cash: [6, 17, 150, 1200, 13e3],
3575                     time: [2, 2, 2, 2, 2],
3576                     price: [480, 4500, 43e3, 52e4]
3577                 }, {
3578                     name: "Arctic Fox",
3579                     color: "#7ca1d5",
3580                     class: "❄️",
3581                     rarity: "Common",
3582                     cash: [5, 18, 180, 850, 8500],
3583                     time: [2, 2, 2, 1, 1],
3584                     price: [520, 550, 61e3, 68e4]
3585                 }, {
3586                     name: "Snowy Owl",
3587                     color: "#feda3f",
3588                     class: "❄️",
3589                     rarity: "Common",
3590                     cash: [5, 20, 190, 1900, 16e3],
3591                     time: [3, 3, 2, 2, 2],
3592                     price: [370, 5300, 76e3, 62e4]
3593                 }, {
3594                     name: "Arctic Hare",
3595                     color: "#7ca1d5",
3596                     class: "❄️",
3597                     rarity: "Common",
3598                     cash: [6, 19, 85, 900, 7e3],
3599                     time: [2, 2, 1, 1, 1],
3600                     price: [540, 5200, 66e3, 55e4]
3601                 }, {
3602                     name: "Penguin",
3603                     color: "#fb8640",
3604                     class: "❄️",
3605                     rarity: "Common",
3606                     cash: [4, 21, 310, 3200, 33e3],
3607                     time: [3, 3, 3, 3, 3],
3608                     price: [400, 6500, 76e3, 87e4]
3609                 }, {
3610                     name: "Baby Penguin",
3611                     color: "#414042",
3612                     class: "❄️",
3613                     rarity: "Common",
3614                     cash: [3, 8, 70, 450, 2700],
3615                     time: [1, 1, 1, 1, 1],
3616                     price: [420, 3300, 33e3, 23e4]
3617                 }, {
3618                     name: "Polar Bear",
3619                     color: "#7ca1d5",
3620                     class: "❄️",
3621                     rarity: "Common",
3622                     cash: [12, 75, 700, 6500, 85e3],
3623                     time: [8, 7, 6, 5, 5],
3624                     price: [630, 7e3, 91e3, 14e5]
3625                 }, {
3626                     name: "Walrus",
3627                     color: "#7d4f33",
3628                     class: "❄️",
3629                     rarity: "Common",
3630                     cash: [11, 46, 420, 3700, 51e3],
3631                     time: [5, 5, 4, 4, 4],
3632                     price: [550, 6200, 68e3, 1e6]
3633                 }, {
3634                     name: "Tiger",
3635                     color: "#f18221",
3636                     class: "\uD83C\uDF34",
3637                     rarity: "Common",
3638                     cash: [6, 20, 100, 975, 7500],
3639                     time: [3, 3, 1, 1, 1],
3640                     price: [390, 6e3, 7e4, 61e4]
3641                 }, {
3642                     name: "Jaguar",
3643                     color: "#fbb040",
3644                     class: "\uD83C\uDF34",
3645                     rarity: "Common",
3646                     cash: [8, 28, 230, 1600, 17e3],
3647                     time: [3, 3, 2, 2, 2],
3648                     price: [390, 6e3, 7e4, 61e4]
3649                 }, {
3650                     name: "Toucan",
3651                     color: "#ffca34",
3652                     class: "\uD83C\uDF34",
3653                     rarity: "Common",
3654                     cash: [9, 20, 175, 625, 3800],
3655                     time: [2, 2, 2, 1, 1],
3656                     price: [520, 4800, 42e3, 3e5]
3657                 }, {
3658                     name: "Cockatoo",
3659                     color: "#7ca1d5",
3660                     class: "\uD83C\uDF34",
3661                     rarity: "Common",
3662                     cash: [6, 35, 160, 1700, 18e3],
3663                     time: [4, 4, 2, 2, 2],
3664                     price: [500, 5e3, 63e3, 7e5]
3665                 }, {
3666                     name: "Macaw",
3667                     color: "#00aeef",
3668                     class: "\uD83C\uDF34",
3669                     rarity: "Common",
3670                     cash: [3, 8, 85, 850, 8500],
3671                     time: [1, 1, 1, 1, 1],
3672                     price: [480, 5400, 62e3, 63e4]
3673                 }, {
3674                     name: "Parrot",
3675                     color: "#ed1c24",
3676                     class: "\uD83C\uDF34",
3677                     rarity: "Common",
3678                     cash: [3, 9, 90, 900, 9e3],
3679                     time: [1, 1, 1, 1, 1],
3680                     price: [540, 5700, 65e3, 69e4]
3681                 }, {
3682                     name: "Panther",
3683                     color: "#2f2c38",
3684                     class: "\uD83C\uDF34",
3685                     rarity: "Common",
3686                     cash: [12, 28, 215, 2100, 21e3],
3687                     time: [5, 3, 2, 2, 2],
3688                     price: [530, 6500, 76e3, 87e4]
3689                 }, {
3690                     name: "Anaconda",
3691                     color: "#8a9143",
3692                     class: "\uD83C\uDF34",
3693                     rarity: "Common",
3694                     cash: [3, 15, 85, 1500, 7600],
3695                     time: [1, 2, 1, 2, 1],
3696                     price: [410, 5100, 58e3, 59e4]
3697                 }, {
3698                     name: "Orangutan",
3699                     color: "#bc6234",
3700                     class: "\uD83C\uDF34",
3701                     rarity: "Common",
3702                     cash: [13, 52, 570, 4300, 7e4],
3703                     time: [5, 5, 5, 4, 4],
3704                     price: [600, 7e3, 8e4, 14e5]
3705                 }, {
3706                     name: "Capuchin",
3707                     color: "#e0b0a6",
3708                     class: "\uD83C\uDF34",
3709                     rarity: "Common",
3710                     cash: [4, 14, 160, 780, 8200],
3711                     time: [2, 2, 2, 1, 1],
3712                     price: [390, 4700, 57e3, 68e4]
3713                 }, {
3714                     name: "Elf",
3715                     color: "#a7d054",
3716                     class: "⚔️",
3717                     rarity: "Uncommon",
3718                     cash: [5e3, 15e3, 15e4, 15e5, 1e7],
3719                     time: [1, 1, 1, 1, 1],
3720                     price: [8e5, 9e6, 11e7, 8e8]
3721                 }, {
3722                     name: "Witch",
3723                     color: "#4ab96d",
3724                     class: "⚔️",
3725                     rarity: "Uncommon",
3726                     cash: [18e3, 6e4, 4e4, 4e6, 35e6],
3727                     time: [3, 3, 2, 2, 2],
3728                     price: [11e5, 12e6, 15e7, 14e8]
3729                 }, {
3730                     name: "Wizard",
3731                     color: "#5a459c",
3732                     class: "⚔️",
3733                     rarity: "Uncommon",
3734                     cash: [19500, 65e3, 44e4, 46e5, 4e6],
3735                     time: [3, 3, 2, 2, 2],
3736                     price: [13e5, 135e5, 16e7, 16e8]
3737                 }, {
3738                     name: "Fairy",
3739                     color: "#df6d9c",
3740                     class: "⚔️",
3741                     rarity: "Uncommon",
3742                     cash: [18500, 6e4, 62e4, 44e5, 38e6],
3743                     time: [3, 3, 3, 2, 2],
3744                     price: [12e5, 125e5, 15e6, 15e8]
3745                 }, {
3746                     name: "Slime Monster",
3747                     color: "#2fa04a",
3748                     class: "⚔️",
3749                     rarity: "Uncommon",
3750                     cash: [35e3, 14e4, 1e6, 11e6, 11e7],
3751                     time: [5, 5, 4, 4, 4],
3752                     price: [16e5, 15e6, 2e8, 23e8]
3753                 }, {
3754                     name: "Jester",
3755                     color: "#be1e2d",
3756                     class: "⚔️",
3757                     rarity: "Rare",
3758                     cash: [25e3, 1e5, 68e4, 65e5, 32e6],
3759                     time: [3, 3, 2, 2, 1],
3760                     price: [2e6, 21e6, 23e7, 26e8]
3761                 }, {
3762                     name: "Dragon",
3763                     color: "#2fa04a",
3764                     class: "⚔️",
3765                     rarity: "Rare",
3766                     cash: [36e3, 15e4, 15e5, 15e6, 15e7],
3767                     time: [4, 4, 4, 4, 4],
3768                     price: [23e5, 24e6, 27e7, 3e9]
3769                 }, {
3770                     name: "Unicorn",
3771                     color: "#f6afce",
3772                     class: "⚔️",
3773                     rarity: "Epic",
3774                     cash: [24e3, 15e4, 14e5, 7e6, 75e6],
3775                     time: [2, 2, 2, 1, 1],
3776                     price: [45e5, 45e6, 55e7, 65e8]
3777                 }, {
3778                     name: "Queen",
3779                     color: "#9e1f63",
3780                     class: "⚔️",
3781                     rarity: "Rare",
3782                     cash: [24e3, 95e3, 95e4, 97e5, 95e6],
3783                     time: [3, 3, 3, 3, 3],
3784                     price: [19e5, 2e7, 23e7, 25e8]
3785                 }, {
3786                     name: "King",
3787                     color: "#ee2640",
3788                     class: "⚔️",
3789                     rarity: "Legendary",
3790                     cash: [75e3, 4e5, 6e6, 9e7, 125e7],
3791                     time: [5, 5, 5, 5, 5],
3792                     price: [6e6, 95e6, 16e8, 25e9]
3793                 }, {
3794                     name: "Two of Spades",
3795                     color: "#414042",
3796                     class: "\uD83C\uDFF0",
3797                     rarity: "Uncommon",
3798                     cash: [4500, 14e3, 14e4, 14e5, 9e6],
3799                     time: [1, 1, 1, 1, 1],
3800                     price: [77e4, 83e5, 98e6, 71e7]
3801                 }, {
3802                     name: "Eat Me",
3803                     color: "#d58c55",
3804                     class: "\uD83C\uDFF0",
3805                     rarity: "Uncommon",
3806                     cash: [13e3, 45e3, 45e4, 45e5, 5e7],
3807                     time: [2, 2, 2, 2, 2],
3808                     price: [13e5, 14e6, 16e7, 2e9]
3809                 }, {
3810                     name: "Drink Me",
3811                     color: "#dd7399",
3812                     class: "\uD83C\uDFF0",
3813                     rarity: "Uncommon",
3814                     cash: [12e3, 4e4, 4e5, 4e6, 45e6],
3815                     time: [2, 2, 2, 2, 2],
3816                     price: [12e5, 12e6, 14e7, 18e8]
3817                 }, {
3818                     name: "Alice",
3819                     color: "#4cc9f5",
3820                     class: "\uD83C\uDFF0",
3821                     rarity: "Uncommon",
3822                     cash: [13e3, 42e3, 21e4, 21e5, 23e6],
3823                     time: [2, 2, 1, 1, 1],
3824                     price: [12e5, 13e6, 15e7, 19e8]
3825                 }, {
3826                     name: "Queen of Hearts",
3827                     color: "#d62027",
3828                     class: "\uD83C\uDFF0",
3829                     rarity: "Uncommon",
3830                     cash: [23e3, 87e3, 62e4, 75e5, 9e7],
3831                     time: [4, 4, 3, 3, 3],
3832                     price: [13e5, 13e6, 18e7, 24e8]
3833                 }, {
3834                     name: "Dormouse",
3835                     color: "#89d6f8",
3836                     class: "\uD83C\uDFF0",
3837                     rarity: "Rare",
3838                     cash: [17e3, 68e3, 7e5, 35e5, 35e6],
3839                     time: [2, 2, 1, 1, 1],
3840                     price: [2e6, 22e6, 25e7, 28e8]
3841                 }, {
3842                     name: "White Rabbit",
3843                     color: "#ffcd05",
3844                     class: "\uD83C\uDFF0",
3845                     rarity: "Rare",
3846                     cash: [26e3, 105e3, 11e6, 77e5, 72e6],
3847                     time: [3, 3, 3, 2, 2],
3848                     price: [2e6, 23e6, 28e7, 29e8]
3849                 }, {
3850                     name: "Cheshire Cat",
3851                     color: "#dd7399",
3852                     class: "\uD83C\uDFF0",
3853                     rarity: "Rare",
3854                     cash: [32e3, 1e5, 9e5, 9e6, 6e7],
3855                     time: [4, 3, 3, 3, 2],
3856                     price: [18e5, 19e6, 22e7, 24e8]
3857                 }, {
3858                     name: "Caterpillar",
3859                     color: "#00c0f3",
3860                     class: "\uD83C\uDFF0",
3861                     rarity: "Epic",
3862                     cash: [1e4, 7e4, 65e4, 75e5, 85e6],
3863                     time: [1, 1, 1, 1, 1],
3864                     price: [42e5, 42e6, 54e7, 69e8]
3865                 }, {
3866                     name: "Mad Hatter",
3867                     color: "#914f93",
3868                     class: "\uD83C\uDFF0",
3869                     rarity: "Epic",
3870                     cash: [38e3, 25e4, 15e5, 14e6, 8e7],
3871                     time: [3, 3, 2, 2, 1],
3872                     price: [48e5, 48e6, 52e7, 66e8]
3873                 }, {
3874                     name: "King of Hearts",
3875                     color: "#c62127",
3876                     class: "\uD83C\uDFF0",
3877                     rarity: "Legendary",
3878                     cash: [8e4, 42e4, 68e5, 1e8, 15e8],
3879                     time: [5, 5, 5, 5, 5],
3880                     price: [7e6, 11e7, 18e8, 3e10]
3881                 }, {
3882                     name: "Earth",
3883                     color: "#416eb5",
3884                     class: "\uD83D\uDE80",
3885                     rarity: "Uncommon",
3886                     cash: [15e3, 45e3, 6e5, 65e5, 65e6],
3887                     time: [3, 3, 3, 3, 3],
3888                     price: [1e6, 11e6, 15e7, 17e8]
3889                 }, {
3890                     name: "Meteor",
3891                     color: "#c68c3c",
3892                     class: "\uD83D\uDE80",
3893                     rarity: "Uncommon",
3894                     cash: [23e3, 65e3, 7e5, 45e5, 2e7],
3895                     time: [5, 4, 3, 2, 1],
3896                     price: [95e4, 13e6, 16e7, 16e8]
3897                 }, {
3898                     name: "Stars",
3899                     color: "#19184d",
3900                     class: "\uD83D\uDE80",
3901                     rarity: "Uncommon",
3902                     cash: [1e4, 4e4, 2e5, 2e6, 18e6],
3903                     time: [2, 2, 1, 1, 1],
3904                     price: [14e5, 14e6, 15e7, 15e8]
3905                 }, {
3906                     name: "Alien",
3907                     color: "#8dc63f",
3908                     class: "\uD83D\uDE80",
3909                     rarity: "Uncommon",
3910                     cash: [3e4, 1e5, 1e6, 11e6, 85e6],
3911                     time: [4, 4, 4, 4, 4],
3912                     price: [15e5, 17e6, 19e7, 17e8]
3913                 }, {
3914                     name: "Planet",
3915                     color: "#9dc6ea",
3916                     class: "\uD83D\uDE80",
3917                     rarity: "Rare",
3918                     cash: [25e3, 1e5, 9e5, 9e6, 9e7],
3919                     time: [3, 3, 3, 3, 3],
3920                     price: [2e6, 21e6, 21e7, 24e8]
3921                 }, {
3922                     name: "UFO",
3923                     color: "#a15095",
3924                     class: "\uD83D\uDE80",
3925                     rarity: "Rare",
3926                     cash: [17e3, 7e4, 7e5, 7e6, 7e7],
3927                     time: [2, 2, 2, 2, 2],
3928                     price: [21e5, 23e6, 25e7, 28e8]
3929                 }, {
3930                     name: "Spaceship",
3931                     color: "#ffcb29",
3932                     class: "\uD83D\uDE80",
3933                     rarity: "Epic",
3934                     cash: [6e4, 32e4, 21e5, 15e6, 85e6],
3935                     time: [5, 4, 3, 2, 1],
3936                     price: [48e5, 46e6, 54e7, 68e8]
3937                 }, {
3938                     name: "Astronaut",
3939                     color: "#9bd4ee",
3940                     class: "\uD83D\uDE80",
3941                     rarity: "Legendary",
3942                     cash: [45e3, 26e4, 25e5, 38e6, 55e7],
3943                     time: [3, 3, 2, 2, 2],
3944                     price: [65e5, 1e8, 17e8, 27e9]
3945                 }, {
3946                     name: "Lil Bot",
3947                     color: "#3e564a",
3948                     class: "\uD83E\uDD16",
3949                     rarity: "Uncommon",
3950                     cash: [4e3, 12e3, 18e4, 19e5, 25e6],
3951                     time: [1, 1, 1, 1, 1],
3952                     price: [73e4, 12e6, 13e7, 19e8]
3953                 }, {
3954                     name: "Lovely Bot",
3955                     color: "#f179af",
3956                     class: "\uD83E\uDD16",
3957                     rarity: "Uncommon",
3958                     cash: [16e3, 65e3, 65e4, 48e5, 42e6],
3959                     time: [3, 3, 3, 2, 2],
3960                     price: [13e5, 14e6, 17e7, 16e8]
3961                 }, {
3962                     name: "Angry Bot",
3963                     color: "#f1613a",
3964                     class: "\uD83E\uDD16",
3965                     rarity: "Uncommon",
3966                     cash: [22e3, 85e3, 8e5, 62e5, 65e6],
3967                     time: [4, 4, 4, 3, 3],
3968                     price: [12e5, 13e6, 15e7, 17e8]
3969                 }, {
3970                     name: "Happy Bot",
3971                     color: "#51ba6b",
3972                     class: "\uD83E\uDD16",
3973                     rarity: "Uncommon",
3974                     cash: [11e3, 45e3, 5e5, 25e5, 3e7],
3975                     time: [2, 2, 2, 1, 1],
3976                     price: [14e5, 15e6, 18e7, 24e8]
3977                 }, {
3978                     name: "Watson",
3979                     color: "#d69b5a",
3980                     class: "\uD83E\uDD16",
3981                     rarity: "Rare",
3982                     cash: [24e3, 1e5, 1e6, 1e7, 1e8],
3983                     time: [3, 3, 3, 3, 3],
3984                     price: [2e6, 22e6, 24e7, 26e8]
3985                 }, {
3986                     name: "Buddy Bot",
3987                     color: "#9dc6ea",
3988                     class: "\uD83E\uDD16",
3989                     rarity: "Rare",
3990                     cash: [22e3, 95e3, 65e4, 65e5, 65e6],
3991                     time: [3, 3, 2, 2, 2],
3992                     price: [19e5, 21e6, 23e7, 25e8]
3993                 }, {
3994                     name: "Brainy Bot",
3995                     color: "#9ecf7a",
3996                     class: "\uD83E\uDD16",
3997                     rarity: "Epic",
3998                     cash: [5e4, 25e4, 21e5, 21e6, 17e7],
3999                     time: [4, 3, 3, 3, 2],
4000                     price: [5e6, 46e6, 5e8, 67e8]
4001                 }, {
4002                     name: "Mega Bot",
4003                     color: "#d71f27",
4004                     class: "\uD83E\uDD16",
4005                     rarity: "Legendary",
4006                     cash: [8e4, 43e4, 42e5, 62e6, 1e9],
4007                     time: [5, 5, 3, 3, 3],
4008                     price: [7e6, 12e7, 19e8, 35e9]
4009                 }].map(e => ({
4010                     name: e.name,
4011                     value: JSON.stringify(e)
4012                 }))
4013             }],
4014             run: function(e) {
4015                 let t = document.createElement("iframe");
4016                 document.body.append(t), window.alert = t.contentWindow.alert.bind(window), t.remove();
4017                 let {
4018                     stateNode: a
4019                 } = Object.values(function e(t = document.querySelector("body>div")) {
4020                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
4021                 }())[1].children[0]._owner;
4022                 a.state.blooks.length >= 10 && alert("Choose a blook to replace"), a.chooseBlook(JSON.parse(e))
4023             }
4024         }, {
4025             name: "Free Upgrades",
4026             description: "Sets upgrade prices to 0 for all current blooks",
4027             run: function() {
4028                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState(e => ({
4029                     ...e,
4030                     blooks: e.blooks.map(e => ({
4031                         ...e,
4032                         price: [0, 0, 0, 0]
4033                     }))
4034                 }))
4035             }
4036         }, {
4037             name: "Max Blooks",
4038             description: "Maxes out all your blooks' levels",
4039             run: function() {
4040                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.state.blooks.forEach(e => e.level = 4)
4041             }
4042         }, {
4043             name: "Remove Glitches",
4044             description: "Removes all enemy glitches",
4045             run: function() {
4046                 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4047                 e.setState({
4048                     bits: 0,
4049                     ads: [],
4050                     hazards: [],
4051                     color: "",
4052                     lol: !1,
4053                     joke: !1,
4054                     slow: !1,
4055                     dance: !1,
4056                     glitch: "",
4057                     glitcherName: "",
4058                     glitcherBlook: ""
4059                 }), clearTimeout(e.adTimeout), clearInterval(e.hazardInterval), clearTimeout(e.nightTimeout), clearTimeout(e.glitchTimeout), clearTimeout(e.lolTimeout), clearTimeout(e.jokeTimeout), clearTimeout(e.slowTimeout), clearTimeout(e.danceTimeout), clearTimeout(e.nameTimeout)
4060             }
4061         }, {
4062             name: "Send Glitch",
4063             description: "Sends a glitch to everyone else playing",
4064             inputs: [{
4065                 name: "Glitch",
4066                 type: "options",
4067                 options: Object.entries({
4068                     lb: "Lunch Break",
4069                     as: "Ad Spam",
4070                     e37: "Error 37",
4071                     nt: "Night Time",
4072                     lo: "#LOL",
4073                     j: "Jokester",
4074                     sm: "Slow Mo",
4075                     dp: "Dance Party",
4076                     v: "Vortex",
4077                     r: "Reverse",
4078                     f: "Flip",
4079                     m: "Micro"
4080                 }).map(([e, t]) => ({
4081                     name: t,
4082                     value: e
4083                 }))
4084             }],
4085             run: function(e) {
4086                 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4087                 t.safe = !0, t.props.liveGameController.setVal({
4088                     path: `c/${t.props.client.name}/tat`,
4089                     val: e
4090                 })
4091             }
4092         }, {
4093             name: "Set All MegaBot",
4094             description: "Sets all your blooks to maxed out Mega Bots",
4095             run: function() {
4096                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
4097                     blooks: Array(10).fill({
4098                         name: "Mega Bot",
4099                         color: "#d71f27",
4100                         class: "\uD83E\uDD16",
4101                         rarity: "Legendary",
4102                         cash: [8e4, 43e4, 42e5, 62e6, 1e9],
4103                         time: [5, 5, 3, 3, 3],
4104                         price: [7e6, 12e7, 19e8, 35e9],
4105                         active: !1,
4106                         level: 4,
4107                         bonus: 5.5
4108                     })
4109                 })
4110             }
4111         }, {
4112             name: "Set Cash",
4113             description: "Sets amount of cash you have",
4114             inputs: [{
4115                 name: "Cash",
4116                 type: "number"
4117             }],
4118             run: function(e) {
4119                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
4120                     cash: e
4121                 })
4122             }
4123         }],
4124         fishing: [{
4125             name: "Always Frenzy",
4126             description: "Always sets everyone to frenzy mode",
4127             type: "toggle",
4128             enabled: false,
4129             data: null,
4130             run: function() {
4131                 if (this.enabled) {
4132                     this.enabled = false;
4133                     clearInterval(this.data);
4134                     this.data = null;
4135                 } else {
4136                     this.enabled = true;
4137                     this.data = setInterval(() => {
4138                         const cheat = (async () => {
4139                             let {
4140                                 stateNode
4141                             } = Object.values((function react(r = document.querySelector("body>div")) {
4142                                 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
4143                             })())[1].children[0]._owner;
4144                             stateNode.props.liveGameController.setVal({
4145                                 path: `c/${stateNode.props.client.name}`,
4146                                 val: {
4147                                     b: stateNode.props.client.blook,
4148                                     w: stateNode.state.weight,
4149                                     f: "Frenzy",
4150                                     s: true
4151                                 }
4152                             });
4153                         });
4154                         cheat();
4155                     }, 50);
4156                 }
4157             }
4158         }, {
4159             name: "Client Sided Frenzy",
4160             description: "Frenzy for you only",
4161             type: "toggle",
4162             enabled: !1,
4163             run: function() {
4164                 const componentInstance = Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner.stateNode;
4165                 if (this.enabled) {
4166                     this.enabled = !1;
4167                     componentInstance.setState({
4168                         isFrenzy: false
4169                     });
4170                 } else {
4171                     this.enabled = !0;
4172                     componentInstance.setState({
4173                         isFrenzy: true
4174                     });
4175                 }
4176             }
4177         }, {
4178             name: "Remove Distractions",
4179             description: "Removes distractions",
4180             type: "toggle",
4181             enabled: !1,
4182             data: null,
4183             run: function() {
4184                 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
4185                     Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
4186                         party: ""
4187                     })
4188                 }, 50))
4189             }
4190         }, {
4191             name: "Frenzy",
4192             description: "Sets everyone to frenzy mode",
4193             run: function() {
4194                 var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4195                 e.props.liveGameController.setVal({
4196                     path: "c/" + e.props.client.name,
4197                     val: {
4198                         b: e.props.client.blook,
4199                         w: e.state.weight,
4200                         f: "Frenzy",
4201                         s: !0
4202                     }
4203                 })
4204             }
4205         }, {
4206             name: "Send Distraction",
4207             description: "Sends a distraction to everyone",
4208             inputs: [{
4209                 name: "Distraction",
4210                 type: "options",
4211                 options: ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"]
4212             }],
4213             run: function(e) {
4214                 var t = document.createElement("iframe"),
4215                     t = (document.body.append(t), window.alert = t.contentWindow.alert.bind(window), t.remove(), Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner).stateNode;
4216                 t.safe = !0, t.props.liveGameController.setVal({
4217                     path: "c/" + t.props.client.name,
4218                     val: {
4219                         b: t.props.client.blook,
4220                         w: t.state.weight,
4221                         f: e,
4222                         s: !0
4223                     }
4224                 })
4225             }
4226         }, {
4227             name: "Set Lure",
4228             description: "Sets fishing lure (range 1 - 5)",
4229             inputs: [{
4230                 name: "Lure (1 - 5)",
4231                 type: "number",
4232                 min: 1,
4233                 max: 5
4234             }],
4235             run: function(e) {
4236                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
4237                     lure: Math.max(Math.min(e - 1, 4), 0)
4238                 })
4239             }
4240         }, {
4241             name: "Set Next Fish",
4242             description: "Sets the next fish to catch",
4243             inputs: [{
4244                 name: "Fish",
4245                 type: "options",
4246                 options: ["Old Boot", "Waffle", "Two of Spades", "Jellyfish", "Clownfish", "Goldfish", "Frog", "Blizzard Clownfish", "Turtle", "Cat", "Lovely Frog", "Lucky Frog", "Poison Dart Frog", "Seal", "Walrus", "Fairy", "Crab", "Lemon Crab", "Pufferfish", "Blobfish", "Rainbow Jellyfish", "Octopus", "Pirate Pufferfish", "Donut Blobfish", "Crimson Octopus", "Narwhal", "Baby Shark", "Megalodon", "Alien", "Rainbow Narwhal", "UFO", "Santa Claus", "Swamp Monster", "Red Astronaut", "Spooky Pumpkin", "Dragon", "Tim the Alien"]
4247             }],
4248             run: function(e) {
4249                 function t() {
4250                     return Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner
4251                 }
4252                 var a = {
4253                         "Old Boot": {
4254                             rarity: "Trash",
4255                             minWeight: 1,
4256                             maxWeight: 10,
4257                             tiers: ["F", "D", "C"]
4258                         },
4259                         Waffle: {
4260                             rarity: "Trash",
4261                             minWeight: 1,
4262                             maxWeight: 10,
4263                             tiers: ["F", "D", "C"]
4264                         },
4265                         "Two of Spades": {
4266                             rarity: "Trash",
4267                             minWeight: 1,
4268                             maxWeight: 10,
4269                             tiers: ["F", "D", "C"]
4270                         },
4271                         Jellyfish: {
4272                             rarity: "Easy One",
4273                             minWeight: 10,
4274                             maxWeight: 25,
4275                             tiers: ["D", "C", "B"]
4276                         },
4277                         Clownfish: {
4278                             rarity: "Easy One",
4279                             minWeight: 20,
4280                             maxWeight: 45,
4281                             tiers: ["D", "C", "B"]
4282                         },
4283                         Goldfish: {
4284                             rarity: "Easy One",
4285                             minWeight: 30,
4286                             maxWeight: 65,
4287                             tiers: ["D", "C", "B"]
4288                         },
4289                         Frog: {
4290                             rarity: "Easy One",
4291                             minWeight: 50,
4292                             maxWeight: 100,
4293                             tiers: ["D", "C", "B"]
4294                         },
4295                         "Blizzard Clownfish": {
4296                             rarity: "Great Catch",
4297                             minWeight: 75,
4298                             maxWeight: 125,
4299                             tiers: ["D", "C", "B"]
4300                         },
4301                         Turtle: {
4302                             rarity: "Great Catch",
4303                             minWeight: 100,
4304                             maxWeight: 150,
4305                             tiers: ["D", "C", "B", "A"]
4306                         },
4307                         Cat: {
4308                             rarity: "Great Catch",
4309                             minWeight: 100,
4310                             maxWeight: 200,
4311                             tiers: ["D", "C", "B", "A"]
4312                         },
4313                         "Lovely Frog": {
4314                             rarity: "Great Catch",
4315                             minWeight: 150,
4316                             maxWeight: 350,
4317                             tiers: ["D", "C", "B", "A"]
4318                         },
4319                         "Lucky Frog": {
4320                             rarity: "Great Catch",
4321                             minWeight: 200,
4322                             maxWeight: 400,
4323                             tiers: ["D", "C", "B", "A"]
4324                         },
4325                         "Poison Dart Frog": {
4326                             rarity: "Great Catch",
4327                             minWeight: 250,
4328                             maxWeight: 750,
4329                             tiers: ["D", "C", "B", "A"]
4330                         },
4331                         Seal: {
4332                             rarity: "Rare Find",
4333                             minWeight: 500,
4334                             maxWeight: 1e3,
4335                             tiers: ["D", "C", "B", "A"]
4336                         },
4337                         Walrus: {
4338                             rarity: "Rare Find",
4339                             minWeight: 700,
4340                             maxWeight: 2200,
4341                             tiers: ["D", "C", "B", "A"]
4342                         },
4343                         Fairy: {
4344                             rarity: "Rare Find",
4345                             minWeight: 1500,
4346                             maxWeight: 2500,
4347                             tiers: ["D", "C", "B", "A"]
4348                         },
4349                         Crab: {
4350                             rarity: "Rare Find",
4351                             minWeight: 1e3,
4352                             maxWeight: 3e3,
4353                             tiers: ["D", "C", "B", "A"]
4354                         },
4355                         "Lemon Crab": {
4356                             rarity: "Rare Find",
4357                             minWeight: 2e3,
4358                             maxWeight: 5e3,
4359                             tiers: ["C", "B", "A"]
4360                         },
4361                         Pufferfish: {
4362                             rarity: "Rare Find",
4363                             minWeight: 2e3,
4364                             maxWeight: 4e3,
4365                             tiers: ["D", "C", "B", "A"]
4366                         },
4367                         Blobfish: {
4368                             rarity: "Rare Find",
4369                             minWeight: 3e3,
4370                             maxWeight: 5e3,
4371                             tiers: ["D", "C", "B", "A"]
4372                         },
4373                         "Rainbow Jellyfish": {
4374                             rarity: "Epic Grab",
4375                             minWeight: 7e3,
4376                             maxWeight: 1e4,
4377                             tiers: ["C", "B", "A"]
4378                         },
4379                         Octopus: {
4380                             rarity: "Epic Grab",
4381                             minWeight: 1e4,
4382                             maxWeight: 15e3,
4383                             tiers: ["C", "B", "A"]
4384                         },
4385                         "Pirate Pufferfish": {
4386                             rarity: "Epic Grab",
4387                             minWeight: 12e3,
4388                             maxWeight: 2e4,
4389                             tiers: ["C", "B", "A"]
4390                         },
4391                         "Donut Blobfish": {
4392                             rarity: "Epic Grab",
4393                             minWeight: 13e3,
4394                             maxWeight: 25e3,
4395                             tiers: ["C", "B", "A"]
4396                         },
4397                         "Crimson Octopus": {
4398                             rarity: "Epic Grab",
4399                             minWeight: 15e3,
4400                             maxWeight: 3e4,
4401                             tiers: ["B", "A"]
4402                         },
4403                         Narwhal: {
4404                             rarity: "Catch of the Day",
4405                             minWeight: 25e3,
4406                             maxWeight: 5e4,
4407                             tiers: ["B", "A", "S"]
4408                         },
4409                         "Baby Shark": {
4410                             rarity: "Catch of the Day",
4411                             minWeight: 5e4,
4412                             maxWeight: 1e5,
4413                             tiers: ["B", "A", "S"]
4414                         },
4415                         Megalodon: {
4416                             rarity: "Catch of the Day",
4417                             minWeight: 25e4,
4418                             maxWeight: 5e5,
4419                             tiers: ["B", "A", "S"]
4420                         },
4421                         Alien: {
4422                             rarity: "Angler's Legend",
4423                             minWeight: 5e5,
4424                             maxWeight: 7e5,
4425                             tiers: ["A", "S"]
4426                         },
4427                         "Rainbow Narwhal": {
4428                             rarity: "Angler's Legend",
4429                             minWeight: 75e4,
4430                             maxWeight: 1e6,
4431                             tiers: ["A", "S", "S+"]
4432                         },
4433                         UFO: {
4434                             rarity: "Angler's Legend",
4435                             minWeight: 1e6,
4436                             maxWeight: 2e6,
4437                             tiers: ["A", "S", "S+"]
4438                         },
4439                         "Santa Claus": {
4440                             rarity: "Angler's Legend",
4441                             minWeight: 1e6,
4442                             maxWeight: 2e6,
4443                             tiers: ["A", "S", "S+"]
4444                         },
4445                         "Swamp Monster": {
4446                             rarity: "Angler's Legend",
4447                             minWeight: 1e6,
4448                             maxWeight: 2e6,
4449                             tiers: ["A", "S", "S+"]
4450                         },
4451                         "Red Astronaut": {
4452                             rarity: "Angler's Legend",
4453                             minWeight: 1e6,
4454                             maxWeight: 2e6,
4455                             tiers: ["A", "S", "S+"]
4456                         },
4457                         "Spooky Pumpkin": {
4458                             rarity: "Angler's Legend",
4459                             minWeight: 1e6,
4460                             maxWeight: 2e6,
4461                             tiers: ["A", "S", "S+"]
4462                         },
4463                         Dragon: {
4464                             rarity: "Angler's Legend",
4465                             minWeight: 1e6,
4466                             maxWeight: 2e6,
4467                             tiers: ["A", "S", "S+"]
4468                         },
4469                         "Tim the Alien": {
4470                             rarity: "Angler's Legend",
4471                             minWeight: 15e5,
4472                             maxWeight: 25e5,
4473                             tiers: ["A", "S", "S+"]
4474                         }
4475                     },
4476                     o = ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"];
4477                 if (!window.functionSet) {
4478                     var r = t().stateNode.answerNext;
4479                     t().stateNode.answerNext = function() {
4480                         if (t().stateNode.state.hackFish) {
4481                             var i, n, s;
4482                             t().stateNode.setState({
4483                                 stage: "caught",
4484                                 isCast: !1,
4485                                 fish: {
4486                                     name: i = e,
4487                                     rarity: a[i].rarity,
4488                                     weight: (n = a[i].minWeight, Math.floor(Math.random() * ((s = a[i].maxWeight) - n) + n)),
4489                                     tier: a[i].tiers[Math.floor(Math.random() * a[i].tiers.length)],
4490                                     isSpecial: o.includes(i) && 8 > Math.floor(100 * Math.random())
4491                                 },
4492                                 claimReady: !1
4493                             }), setTimeout(function() {
4494                                 t().stateNode.setState({
4495                                     claimReady: !0
4496                                 })
4497                             }, 1600), t().stateNode.state.hackFish = null
4498                         } else r.apply(this, arguments)
4499                     }
4500                 }
4501                 window.functionSet = !0, ! function e(o) {
4502                     if (Object.keys(a).includes(o)) t().stateNode.state.hackFish = o;
4503                     else {
4504                         alert("That fish does not exist!");
4505                         return
4506                     }
4507                 }(e)
4508             }
4509         }, {
4510             name: "Set Weight",
4511             description: "Sets weight",
4512             inputs: [{
4513                 name: "Weight",
4514                 type: "number"
4515             }],
4516             run: function(e) {
4517                 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4518                 t.setState({
4519                     weight: e,
4520                     weight2: e
4521                 }), t.props.liveGameController.setVal({
4522                     path: "c/" + t.props.client.name,
4523                     val: {
4524                         b: t.props.client.blook,
4525                         w: e,
4526                         f: ["Crab", "Jellyfish", "Frog", "Pufferfish", "Octopus", "Narwhal", "Megalodon", "Blobfish", "Baby Shark"][Math.floor(9 * Math.random())]
4527                     }
4528                 })
4529             }
4530         }],
4531         flappy: [{
4532                 name: "Toggle Ghost",
4533                 description: "Lets you go through the pipes",
4534                 type: "toggle",
4535                 enabled: false,
4536                 run: function() {
4537                     this.enabled = !this.enabled;
4538                     for (const body of Object.values(document.querySelector("#phaser-bouncy"))[0].return.updateQueue.lastEffect.deps[0].current.config.sceneConfig.physics.world.bodies.entries) {
4539                         if (!body.gameObject.frame.texture.key.startsWith("blook")) continue;
4540                         body.checkCollision.none = this.enabled;
4541                         body.gameObject.setAlpha(this.enabled ? 0.5 : 1);
4542                         break;
4543                     };
4544                 }
4545             },
4546             {
4547                 name: "Set Score",
4548                 description: "Sets flappy blook score",
4549                 inputs: [{
4550                     name: "Score",
4551                     type: "number"
4552                 }],
4553                 run: function(score) {
4554                     Object.values(document.querySelector("#phaser-bouncy"))[0].return.updateQueue.lastEffect.deps[1](score || 0);
4555                 }
4556             }, {
4557                 name: "Change Game Code",
4558                 description: "Replace the old game with new HTML content",
4559                 inputs: [{
4560                     name: "HTML Code",
4561                     type: "text"
4562                 }],
4563                 run: function(newHtml) {
4564                     (function() {
4566                         if (newHtml) {
4568                             var canvas = document.querySelector('canvas[width="320"][height="480"]');
4570                             if (canvas) {
4572                                 var tempContainer = document.createElement('div');
4573                                 tempContainer.innerHTML = newHtml;
4575                                 var wrapperDiv = document.createElement('div');
4576                                 wrapperDiv.style.width = '320px';
4577                                 wrapperDiv.style.height = '480px';
4578                                 wrapperDiv.style.overflow = 'auto';
4579                                 wrapperDiv.style.boxSizing = 'border-box';
4580                                 wrapperDiv.style.position = canvas.style.position;
4581                                 wrapperDiv.style.marginLeft = canvas.style.marginLeft;
4582                                 wrapperDiv.style.marginTop = canvas.style.marginTop;
4583                                 wrapperDiv.style.cursor = canvas.style.cursor;
4584                                 wrapperDiv.style.backgroundColor = '#f0f0f0';
4586                                 while (tempContainer.firstChild) {
4587                                     wrapperDiv.appendChild(tempContainer.firstChild);
4588                                 }
4590                                 canvas.parentNode.replaceChild(wrapperDiv, canvas);
4591                             }
4593                             var scoreTextDiv = document.querySelector('div._scoreText_e2c5l_7');
4594                             if (scoreTextDiv) {
4595                                 scoreTextDiv.parentNode.removeChild(scoreTextDiv);
4596                             }
4597                         }
4598                     })();
4599                 }
4600             }, {
4601                 name: "Change Settings",
4602                 description: "Changes various game mechanics and lets you play with the spacebar",
4603                 inputs: [{
4604                     name: "Bird Gravity",
4605                     type: "number",
4606                     value: 800
4607                 }, {
4608                     name: "Bird Speed",
4609                     type: "number",
4610                     value: 125
4611                 }, {
4612                     name: "Bird Flap Power",
4613                     type: "number",
4614                     value: 300
4615                 }],
4616                 run: function(a, b, c) {
4617                     const scene = Object.values(document.querySelector("#phaser-bouncy"))[0].return.updateQueue.lastEffect.deps[0].current.config.sceneConfig;
4618                     scene.birdGravity = a;
4619                     scene.birdSpeed = b;
4620                     scene.birdFlapPower = c;
4621                     scene.flap = function() {
4622                         this.isStarted || (this.bird.body.gravity.y = this.birdGravity,
4623                                 this.pipeGroup.setVelocityX(-this.birdSpeed),
4624                                 this.groundGroup.setVelocityX(-this.birdSpeed),
4625                                 this.isStarted = !0),
4626                             this.bird.body.velocity.y = -this.birdFlapPower
4627                     }
4628                     scene.input._events.pointerdown = [];
4629                     scene.create();
4630                     scene.input.keyboard.addKey('SPACE').on("down", e => {
4631                         scene.flap.call(scene);
4632                     });
4633                 }
4634             }
4635         ],
4636         gold: [{
4637             name: "Always Triple",
4638             description: "Always get triple gold",
4639             type: "toggle",
4640             enabled: !1,
4641             data: null,
4642             run: function() {
4643                 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4644                 e._choosePrize ||= e.choosePrize, this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null, e.choosePrize = e._choosePrize || e.choosePrize) : (this.enabled = !0, this.data = setInterval(() => {
4645                     e.choosePrize = function(t) {
4646                         e.state.choices[t] = {
4647                             type: "multiply",
4648                             val: 3,
4649                             text: "Triple Gold!",
4650                             blook: "Unicorn"
4651                         }, e._choosePrize(t)
4652                     }
4653                 }, 50))
4654             }
4655         }, {
4656             name: "Always Quintuple",
4657             description: "Always get quintuple gold",
4658             type: "toggle",
4659             enabled: !1,
4660             data: null,
4661             run: function() {
4662                 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4663                 e._choosePrize ||= e.choosePrize, this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null, e.choosePrize = e._choosePrize || e.choosePrize) : (this.enabled = !0, this.data = setInterval(() => {
4664                     e.choosePrize = function(t) {
4665                         e.state.choices[t] = {
4666                             type: "multiply",
4667                             val: 5,
4668                             text: "Quintuple Gold!",
4669                             blook: "Ice Elemental"
4670                         }, e._choosePrize(t)
4671                     }
4672                 }, 50))
4673             }
4674         }, {
4675             name: "Auto Choose",
4676             description: "Automatically picks the option that would give you the most gold",
4677             type: "toggle",
4678             enabled: false,
4679             data: null,
4680             run: function() {
4681                 if (this.enabled) {
4682                     this.enabled = false;
4683                     clearInterval(this.data);
4684                     this.data = null;
4685                 } else {
4686                     this.enabled = true;
4687                     this.data = setInterval(() => {
4688                         let {
4689                             stateNode
4690                         } = Object.values((function react(r = document.querySelector("body>div")) {
4691                             return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
4692                         })())[1].children[0]._owner;
4694                         if (stateNode.state.stage == "prize") {
4695                             stateNode.props.liveGameController.getDatabaseVal("c", (players) => {
4696                                 if (players == null) return;
4697                                 players = Object.entries(players);
4698                                 let most = 0,
4699                                     max = 0,
4700                                     index = -1;
4701                                 for (let i = 0; i < players.length; i++) {
4702                                     if (players[i][0] != stateNode.props.client.name && players[i][1] > most) {
4703                                         most = players[i][1];
4704                                     }
4705                                 }
4706                                 for (let i = 0; i < stateNode.state.choices.length; i++) {
4707                                     const choice = stateNode.state.choices[i];
4708                                     let value = stateNode.state.gold;
4709                                     if (choice.type == "gold") {
4710                                         value = stateNode.state.gold + (choice.val || 0);
4711                                     } else if (choice.type == "multiply" || choice.type == "divide") {
4712                                         value = Math.round(stateNode.state.gold * choice.val) || stateNode.state.gold;
4713                                     } else if (choice.type == "swap") {
4714                                         value = most || stateNode.state.gold;
4715                                     } else if (choice.type == "take") {
4716                                         value = stateNode.state.gold + (most * choice.val || 0);
4717                                     }
4718                                     if ((value || 0) <= max) continue;
4719                                     max = value;
4720                                     index = i + 1;
4721                                 }
4722                                 document.querySelector("div[class*='choice" + index + "']")?.click();
4723                             });
4724                         }
4725                     }, 50);
4726                 }
4727             }
4728         }, {
4729             name: "Chest ESP",
4730             description: "Shows what each chest will give you",
4731             type: "toggle",
4732             enabled: false,
4733             data: null,
4734             run: function() {
4735                 if (this.enabled) {
4736                     this.enabled = false;
4737                     clearInterval(this.data);
4738                     this.data = null;
4739                 } else {
4740                     this.enabled = true;
4741                     this.data = setInterval(() => {
4742                         const cheat = (async () => {
4743                             Object.values((function react(r = document.querySelector("body>div")) {
4744                                 return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
4745                             })())[1].children[0]._owner.stateNode.state.choices.forEach(({
4746                                 text
4747                             }, index) => {
4748                                 let chest = document.querySelector(`div[class*='choice${index + 1}']`);
4749                                 if (!chest || chest.querySelector('div')) return;
4750                                 let choice = document.createElement('div')
4751                                 choice.style.color = "white";
4752                                 choice.style.fontFamily = "Eczar";
4753                                 choice.style.fontSize = "2em";
4754                                 choice.style.display = "flex";
4755                                 choice.style.justifyContent = "center";
4756                                 choice.style.transform = "translateY(200px)";
4757                                 choice.innerText = text;
4758                                 chest.append(choice)
4759                             });
4760                         });
4761                         cheat();
4762                     }, 50);
4763                 }
4764             }
4765         }, {
4766             name: "Remove Lose 25%-50%",
4767             description: "Removes Lose 25%-50% chests",
4768             type: "toggle",
4769             enabled: !1,
4770             data: null,
4771             run: function() {
4772                 let e = this,
4773                     t = this;
4775                 function a() {
4776                     return Object.values(document.querySelector("#app > div > div"))[1].children[1]._owner
4777                 }
4778                 e.enabled || t.enabled ? (clearInterval(e.data), clearInterval(t.data), e.data = null, t.data = null, e.enabled = !1, t.enabled = !1) : (e.enabled = !0, t.enabled = !0, e.data = setInterval(() => {
4779                     document.querySelectorAll('div[role="button"]').forEach(e => {
4780                         ("Lose 25%" === e.innerText || "Lose 50%" === e.innerText) && (e.style.display = "none")
4781                     })
4782                 }, 50), t.data = setInterval(() => {
4783                     var e;
4784                     if ("gold" === ("gold" === window.location.pathname.split("/")[2] && "gold") && t.enabled) try {
4785                         if ("prize" === a().stateNode.state.stage) {
4786                             let {
4787                                 choices: o
4788                             } = a().stateNode.state, r = document.querySelector("div[class*='regularBody']").children[1];
4789                             r && (document.querySelectorAll(".chest-esp").length ? o.forEach((e, t) => {
4790                                 3 == r.children.length && r.children[t].children[1].innerText != e.text && (r.children[t].children[1].innerText = e.text)
4791                             }) : o.forEach((e, t) => {
4792                                 (textElement = document.createElement("p")).className = "chest-esp", textElement.innerText = e.text, textElement.style = "text-align: center; font-size: 30px; color: white; font-family:Titan One, sans-serif; border-color: black; margin-top: 200px; opacity: 0;";
4793                                 try {
4794                                     r.children[t].appendChild(textElement)
4795                                 } catch (a) {
4796                                     console.log(a)
4797                                 }
4798                             }))
4799                         }
4800                     } catch (i) {
4801                         console.log(i)
4802                     }
4803                 }, 50))
4804             }
4805         }, {
4806             name: "Flood Alert Box",
4807             description: "Makes the alert box filled with text",
4808             inputs: [{
4809                 name: "Text",
4810                 type: "text"
4811             }],
4812             run: function(userInput) {
4813                 function getReactOwner() {
4814                     return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
4815                 }
4817                 function repeatText(text, times) {
4818                     return new Array(times).fill(text).join(" ");
4819                 }
4821                 function setValForPlayer() {
4822                     getReactOwner().stateNode.props.liveGameController.getDatabaseVal("c/").then(data => {
4823                         if (data != null) {
4825                             const playerName = Object.keys(data)[0];
4827                             if (userInput) {
4829                                 const id = "1,723,583,989,363";
4830                                 const repeatedText = repeatText(userInput, 1700);
4831                                 const finalText = `${id}${repeatedText}`;
4833                                 setv(['tat', `${playerName}:${finalText}`]);
4834                             } else {
4835                                 console.log("No text entered. Operation cancelled.");
4836                             }
4837                         } else {
4838                             console.log("Player not found!");
4839                         }
4840                     });
4841                 }
4843                 function setv(args) {
4844                     getReactOwner().stateNode.props.liveGameController.setVal({
4845                         path: "c/" + getReactOwner().stateNode.props.client.name + "/" + args[0],
4846                         val: args.slice(1, args.length).join(" ")
4847                     });
4848                 }
4850                 setValForPlayer();
4851             }
4852         }, {
4853             name: "Reset Players Gold",
4854             description: "Sets a player's gold to 0",
4855             inputs: [{
4856                 name: "Player",
4857                 type: "options",
4858                 options() {
4859                     let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4860                     return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
4861                 }
4862             }],
4863             run: function(e) {
4864                 var {
4865                     props: t,
4866                     state: a
4867                 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4868                 t.liveGameController.setVal({
4869                     path: "c/".concat(t.client.name),
4870                     val: {
4871                         b: t.client.blook,
4872                         g: a.gold,
4873                         tat: e + ":swap:0"
4874                     }
4875                 })
4876             }
4877         }, {
4878             name: "Set Gold",
4879             description: "Sets amount of gold",
4880             inputs: [{
4881                 name: "Gold",
4882                 type: "number"
4883             }],
4884             run: function(e) {
4885                 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4886                 t.setState({
4887                     gold: e,
4888                     gold2: e
4889                 }), t.props.liveGameController.setVal({
4890                     path: "c/".concat(t.props.client.name),
4891                     val: {
4892                         b: t.props.client.blook,
4893                         g: e
4894                     }
4895                 })
4896             }
4897         }, {
4898             name: "Swap Gold",
4899             description: "Swaps gold with someone",
4900             inputs: [{
4901                 name: "Player",
4902                 type: "options",
4903                 options() {
4904                     let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4905                     return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
4906                 }
4907             }],
4908             run: function(e) {
4909                 let t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
4910                 t.props.liveGameController.getDatabaseVal("c", a => {
4911                     a?.[e] && (a = a[e].g, t.props.liveGameController.setVal({
4912                         path: "c/".concat(t.props.client.name),
4913                         val: {
4914                             b: t.props.client.blook,
4915                             g: a,
4916                             tat: e + ":swap:" + t.state.gold
4917                         }
4918                     }), t.setState({
4919                         gold: a,
4920                         gold2: a
4921                     }))
4922                 })
4923             }
4924         }, {
4925             name: "Set Player's Gold",
4926             description: "Sets a players gold to any amount.",
4927             inputs: [{
4928                 name: "Player",
4929                 type: "options",
4930                 options() {
4931                     let e = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
4932                     return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
4933                 }
4934             }, {
4935                 name: "Amount",
4936                 type: "input"
4937             }],
4938             run: (player, amount) => {
4939                 const sn = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
4940                 sn.props.liveGameController.setVal({
4941                     path: `c/${sn.props.client.name}/tat`,
4942                     val: `${player}:swap:${amount}`
4943                 });
4944             }
4945         }, {
4946             name: "Send Ad Text",
4947             description: "Sends a load of text to another player (This will override your blook!)",
4948             inputs: [{
4949                 name: "Player",
4950                 type: "options",
4951                 options() {
4952                     let {
4953                         stateNode: e
4954                     } = Object.values(function e(t = document.querySelector("body>div")) {
4955                         return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
4956                     }())[1].children[0]._owner;
4957                     return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]));
4958                 }
4959             }, {
4960                 name: "Text"
4961             }],
4962             run: async function(player, e) {
4963                 let {
4964                     props: t2
4965                 } = Object.values(function e(t = document.querySelector("body>div")) {
4966                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"));
4967                 }())[1].children[0]._owner.stateNode;
4969                 let repeatedText = `Dog:${Array(500).fill(e).join(' ')}`;
4970                 t2.client.blook = repeatedText;
4971                 t2.liveGameController.setVal({
4972                     path: `c/${t2.client.name}/b`,
4973                     val: repeatedText
4974                 });
4975                 t2.liveGameController.setVal({
4976                     path: `c/${t2.client.name}/tat`,
4977                     val: `${player}:196`
4978                 });
4979             }
4980         }, {
4981             name: "Reset All Players' Gold",
4982             description: "Set's everyone else's gold to 0",
4983             run: function() {
4984                 var e = document.createElement("iframe");
4985                 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove();
4986                 let {
4987                     props: t,
4988                     state: a
4989                 } = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode, o = 0;
4990                 t.liveGameController.getDatabaseVal("c", async e => {
4991                     if (e)
4992                         for (let r of Object.keys(e)) t.liveGameController.setVal({
4993                             path: "c/".concat(t.client.name),
4994                             val: {
4995                                 b: t.client.blook,
4996                                 g: a.gold,
4997                                 tat: r + ":swap:0"
4998                             }
4999                         }), o++, await new Promise(e => setTimeout(e, 4e3));
5000                     alert(`Reset ${o} players' gold!`)
5001                 })
5002             }
5003         }, {
5004             name: "Crash Host (Gold)",
5005             description: "Crashes the Host's Game for Gold Quest",
5006             run: function() {
5007                 function reactHandler() {
5008                     return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
5009                 }
5011                 function setv(args) {
5012                     reactHandler().stateNode.props.liveGameController.setVal({
5013                         path: "c/" + reactHandler().stateNode.props.client.name + "/" + args[0],
5014                         val: args.slice(1, args.length).join(" ")
5015                     });
5016                 }
5018                 setv(['g/t', 't']);
5019             }
5020         }],
5021         kingdom: [{
5022             name: "Choice ESP",
5023             description: "Shows you what will happen if you say Yes or No",
5024             type: "toggle",
5025             enabled: false,
5026             data: null,
5027             run: function() {
5028                 if (this.enabled) {
5029                     this.enabled = false;
5030                     clearInterval(this.data);
5031                     this.data = null;
5032                 } else {
5033                     this.enabled = true;
5034                     this.data = setInterval((stats => {
5035                         let {
5036                             stateNode
5037                         } = Object.values((function react(r = document.querySelector("body>div")) {
5038                             return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
5039                         })())[1].children[0]._owner;
5041                         let elements = Array.prototype.reduce.call(
5042                             document.querySelectorAll('[class*=statContainer]'),
5043                             (obj, container, i) => (obj[stats[i]] = container, obj), {}
5044                         );
5046                         if (stateNode.state.phase == "choice") {
5047                             Array.prototype.forEach.call(document.querySelectorAll('.choiceESP'), x => x.remove());
5049                             Object.keys(stateNode.state.guest.yes || {}).forEach(x => {
5050                                 if (elements[x] == null) return;
5051                                 let element = document.createElement('div');
5052                                 element.className = 'choiceESP';
5053                                 element.style = 'font-size: 24px; color: rgb(75, 194, 46); font-weight: bolder;';
5054                                 element.innerText = String(stateNode.state.guest.yes[x]);
5055                                 elements[x].appendChild(element);
5056                             });
5058                             Object.keys(stateNode.state.guest.no || {}).forEach(x => {
5059                                 if (elements[x] == null) return;
5060                                 let element = document.createElement('div');
5061                                 element.className = 'choiceESP';
5062                                 element.style = 'font-size: 24px; color: darkred; font-weight: bolder;';
5063                                 element.innerText = String(stateNode.state.guest.no[x]);
5064                                 elements[x].appendChild(element);
5065                             });
5067                             Array.prototype.forEach.call(
5068                                 document.querySelectorAll("[class*=guestButton][role=button]"),
5069                                 x => (x.onclick = () => Array.prototype.forEach.call(document.querySelectorAll(".choiceESP"), x => x.remove()))
5070                             );
5071                         }
5072                     }), 50, ['materials', 'people', 'happiness', 'gold']);
5073                 }
5074             }
5075         }, {
5076             name: "Disable Tax Toucan",
5077             description: "Tax evasion",
5078             run: function() {
5079                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.taxCounter = Number.MAX_VALUE
5080             }
5081         }, {
5082             name: "Max Stats",
5083             description: "Sets all resources to the max",
5084             run: function() {
5085                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
5086                     materials: 100,
5087                     people: 100,
5088                     happiness: 100,
5089                     gold: 100
5090                 })
5091             }
5092         }, {
5093             name: "Set Guests",
5094             description: "Sets the amount of guests you've seen",
5095             inputs: [{
5096                 name: "Guests",
5097                 type: "number"
5098             }],
5099             run: function(e) {
5100                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
5101                     guestScore: e
5102                 })
5103             }
5104         }, {
5105             name: "Skip Guest",
5106             description: "Skips the current guest",
5107             run: function() {
5108                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.nextGuest()
5109             }
5110         }],
5111         racing: [{
5112             name: "Instant Win",
5113             description: "Instantly Wins the race",
5114             run: function() {
5115                 let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5116                 e.setState({
5117                     progress: e.state.goalAmount
5118                 }, () => {
5119                     let {
5120                         question: t
5121                     } = e.state;
5122                     try {
5123                         [...document.querySelectorAll('[class*="answerContainer"]')][t.answers.map((e, a) => t.correctAnswers.includes(e) ? a : null).filter(e => null != e)[0]]?.click?.()
5124                     } catch {}
5125                 })
5126             }
5127         }, {
5128             name: "Set Questions",
5129             description: "Sets the number of questions left",
5130             inputs: [{
5131                 name: "Questions",
5132                 type: "number"
5133             }],
5134             run: function(progress) {
5135                 let {
5136                     stateNode
5137                 } = Object.values((function react(r = document.querySelector("body>div")) {
5138                     return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
5139                 })())[1].children[0]._owner;
5140                 progress = stateNode.props.client.amount - progress;
5141                 stateNode.setState({
5142                     progress
5143                 });
5144                 stateNode.props.liveGameController.setVal({
5145                     path: "c/".concat(stateNode.props.client.name),
5146                     val: {
5147                         b: stateNode.props.client.blook,
5148                         pr: progress
5149                     }
5150                 });
5151             }
5152         }, {
5153             name: "Attack Player",
5154             description: "Sends the specified attack to a player",
5155             inputs: [{
5156                 name: "Player",
5157                 type: "options",
5158                 options() {
5159                     let {
5160                         stateNode: e
5161                     } = Object.values(function e(t = document.querySelector("body>div")) {
5162                         return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
5163                     }())[1].children[0]._owner;
5164                     return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
5165                 }
5166             }, {
5167                 name: "Attack",
5168                 type: "options",
5169                 options: Object.entries({
5170                     "Woosh(-1)": "wind",
5171                     "Rocket(-1)": "rocket",
5172                     "Fire(-3)": "fire",
5173                     "Freeze": "freeze"
5174                 }).map(([e, t]) => ({
5175                     name: e,
5176                     value: t
5177                 }))
5178             }],
5179             run: function(player, attack) {
5180                 let {
5181                     stateNode
5182                 } = Object.values((function react(r = document.querySelector("body>div")) {
5183                     return Object.values(r)[1]?.children?.[0]?._owner.stateNode ? r : react(r.querySelector(":scope>div"))
5184                 })())[1].children[0]._owner;
5185                 stateNode.props.liveGameController.setVal({
5186                     path: `c/${stateNode.props.client.name}/tat`,
5187                     val: player + ":" + attack
5188                 });
5189             }
5190         }],
5191         extras: [{
5192             name: "Toggle Invert Colors",
5193             description: "Toggle between inverting and restoring colors on the page",
5194             run: function() {
5195                 "invert()" == document.getElementsByTagName("html")[0].style.filter ? document.getElementsByTagName("html")[0].style.filter = "" : document.getElementsByTagName("html")[0].style.filter = "invert()", elems = document.querySelectorAll(" a, img, video");
5196                 for (let e = 0; e < elems.length; e++)("A" == elems[e].nodeName && ("" != elems[e].style.background || "" != elems[e].style.backgroundImage) || "A" != elems[e].nodeName) && ("invert()" == elems[e].style.filter ? elems[e].style.filter = "" : elems[e].style.filter = "invert()")
5197             }
5198         }, {
5199             name: "Toggle Dark Mode",
5200             description: "Toggles Dark Mode",
5201             run: function() {
5202                 var e = document.createElement("iframe");
5203                 document.body.append(e), window.alert = e.contentWindow.alert.bind(window), e.remove(), ! function e() {
5204                     let t = document.querySelectorAll("#nightify");
5205                     if (t.length) t[0].parentNode.removeChild(t[0]);
5206                     else {
5207                         var a = document.getElementsByTagName("head")[0],
5208                             o = document.createElement("style");
5209                         o.setAttribute("type", "text/css"), o.setAttribute("id", "nightify"), o.appendChild(document.createTextNode(`html{-webkit-filter:invert(100%) hue-rotate(180deg) contrast(70%) !important; background: #222;} .line-content {background-color: #333;} html img{-webkit-filter:invert(100%) hue-rotate(0deg) contrast(100%) !important;}`)), a.appendChild(o)
5210                     }
5211                 }()
5212             }
5213         }, {
5214             name: "3D Page",
5215             description: "Makes the page 3D",
5216             run: function() {
5217                 var e = {
5218                     menu: document.createElement("div"),
5219                     limit: document.createElement("input"),
5220                     gap: document.createElement("input"),
5221                     sag: document.createElement("input"),
5222                     fov: document.createElement("input"),
5223                     flo: document.createElement("input"),
5224                     off: document.createElement("input"),
5225                     non: document.createElement("input"),
5226                     end: document.createElement("input"),
5227                     tgl: document.createElement("input"),
5228                     cssStatic: document.createElement("style"),
5229                     cssDynamic: document.createElement("style"),
5230                     orientation: {
5231                         yaw: 0,
5232                         pitch: 0,
5233                         roll: 0
5234                     },
5235                     mouseMove: function(t) {
5236                         e.orientation.yaw = -(180 * Math.cos(Math.PI * t.clientX / innerWidth)) * e.limit.value, e.orientation.pitch = 180 * Math.cos(Math.PI * t.clientY / innerHeight) * e.limit.value, e.updateBody()
5237                     },
5238                     gyroMove: function(t) {
5239                         innerWidth > innerHeight ? (e.orientation.yaw = -(t.alpha + t.beta), e.orientation.pitch = t.gamma - 90 * Math.sign(90 - Math.abs(t.beta))) : (e.orientation.yaw = -(t.alpha + t.gamma), e.orientation.pitch = t.beta - 90), e.updateBody()
5240                     },
5241                     updateOrigin: function(e) {
5242                         document.body.style.transformOrigin = innerWidth / 2 + pageXOffset + "px " + (innerHeight / 2 + pageYOffset) + "px"
5243                     },
5244                     updateBody: function() {
5245                         document.body.style.transform = "perspective(" + Math.pow(2, e.fov.value) + "px) translateZ(-" + e.gap.value + "px) rotateX(" + e.orientation.pitch + "deg) rotateY(" + e.orientation.yaw + "deg)"
5246                     },
5247                     updateCSS: function() {
5248                         if (e.non.checked) e.cssDynamic.innerHTML = "";
5249                         else if (e.off.checked) e.cssDynamic.innerHTML = "* { transform-style: preserve-3d; }";
5250                         else {
5251                             for (var t = 0; document.querySelector("body" + " > *".repeat(t)); t++);
5252                             var a = e.gap.value / t,
5253                                 o = -Math.PI * e.sag.value / t;
5254                             e.cssDynamic.innerHTML = ` * { transform: translateZ(${a}px) rotateX(${o}rad); transform-style: preserve-3d; transition: transform 1s; outline: 1px solid rgba(0, 0, 0, 0.0625); ${e.flo.checked?"overflow: visible !important;":""} } *:hover { transform: translateZ(${2*a}px) rotateX(${2*o}rad); ${e.flo.checked?"":"overflow: visible;"} } `
5255                         }
5256                     },
5257                     toggle: function() {
5258                         "active" == e.menu.className ? e.menu.removeAttribute("class") : e.menu.className = "active"
5259                     },
5260                     quit: function() {
5261                         window.removeEventListener("deviceorientation", e.gyroMove), window.removeEventListener("mousemove", e.mouseMove), window.removeEventListener("scroll", e.updateOrigin), window.addEventListener("resize", e.updateOrigin), e.menu.remove(), e.cssStatic.remove(), e.cssDynamic.remove(), document.body.removeAttribute("style")
5262                     },
5263                     newRange: function(t, a, o, r, i, n, s) {
5264                         e.menu.appendChild(t), t.type = "range", t.min = o, t.max = i, t.step = r, t.value = n, t.addEventListener("input", s), e.menu.appendChild(document.createElement("span")).innerHTML = a, e.menu.appendChild(document.createElement("br"))
5265                     },
5266                     newCheckbox: function(t, a, o) {
5267                         e.menu.appendChild(t), t.type = "checkbox", t.addEventListener("click", o), e.menu.appendChild(document.createElement("span")).innerHTML = a, e.menu.appendChild(document.createElement("br"))
5268                     },
5269                     newButton: function(t, a, o) {
5270                         e.menu.appendChild(t), t.type = "button", t.value = a, t.addEventListener("click", o)
5271                     },
5272                     init: function() {
5273                         document.body.parentNode.appendChild(e.menu).id = "tri-menu", e.newRange(e.limit, "limit", 0, .03125, 1, .125, e.updateBody), e.newRange(e.gap, "gap / distance", 0, 32, 512, 128, function() {
5274                             e.updateCSS(), e.updateBody()
5275                         }), e.newRange(e.sag, "sag", -.25, .03125, .25, 0, e.updateCSS), e.newRange(e.fov, "field of view", 7, 1, 13, 10, e.updateBody), e.newCheckbox(e.flo, "force overflow", e.updateCSS), e.flo.setAttribute("checked", ""), e.newCheckbox(e.off, "flatten layers", e.updateCSS), e.newCheckbox(e.non, "flatten everything", e.updateCSS), e.newButton(e.end, "Quit", e.quit), e.newButton(e.tgl, "≡", e.toggle), e.tgl.id = "tri-toggle", e.menu.appendChild(e.cssStatic).innerHTML = " html, body { transition-property: none; height: 100%25; width: 100%25; } html, html:hover, #tri-menu, #tri-menu > *, #tri-menu > *:hover { transform: none; outline: none; overflow: auto !important; float: none; } #tri-menu { position: fixed; top: 0; left: 0; background: rgba(0, 0, 0, 0.5); color: white; border: 1px solid rgba(255, 255, 255, 0.5);; border-radius: 0 0 16px 0; padding: 8px; transform: translate(-100%25, -100%25) translate(32px, 32px); } #tri-menu.active { transform: none; } #tri-toggle { position: absolute; bottom: 0; right: 0; height: 32px; width: 32px; background: transparent; color: white; border: none; cursor: pointer; } #tri-menu.active > #tri-toggle { background: white; color: black; border-radius: 8px 0 0 0; }", e.menu.appendChild(e.cssDynamic), e.updateCSS(), window.addEventListener("deviceorientation", e.gyroMove), window.addEventListener("mousemove", e.mouseMove), window.addEventListener("scroll", e.updateOrigin), window.addEventListener("resize", e.updateOrigin), window.scrollBy(0, 1)
5276                     }
5277                 };
5278                 e.init()
5279             }
5280         }, {
5281             name: "History Flooder",
5282             description: "Floods browser history with specified amount of entries",
5283             inputs: [{
5284                 name: "Amount",
5285                 type: "number"
5286             }],
5287             run: function(e) {
5288                 var t = e;
5289                 done = !1, C = window.location.href;
5290                 for (var a = 1; a <= t; a++) history.pushState(0, 0, a == t ? C : a.toString()), a == t && (done = !0);
5291                 !0 === done && alert("History flood successful! " + window.location.href + " now appears in your history " + t + (1 == t ? " time." : " times. "))
5292             }
5293         }, {
5294             name: "Auto Clicker",
5295             description: "Automatically clicks for you. Press S to toggle.",
5296             inputs: [{
5297                 name: "Click Delay",
5298                 type: "number"
5299             }],
5300             run: function(inputs) {
5301                 clicker: {
5302                     "use strict";
5304                     let clickInterval = null;
5305                     let clickingEnabled = true;
5307                     const {
5308                         Number,
5309                         self
5310                     } = window;
5311                     const milliseconds = Number.parseInt(inputs, 10);
5313                     if (false === Number.isSafeInteger(milliseconds)) {
5314                         self.alert("Input was not an integer");
5315                         break clicker;
5316                     }
5318                     let clientX = 0,
5319                         clientY = 0;
5320                     const {
5321                         document
5322                     } = self;
5324                     function startClicking() {
5325                         clickInterval = self.setInterval(() => {
5326                             document.elementFromPoint(clientX, clientY)?.click?.();
5327                         }, milliseconds);
5328                     }
5330                     function stopClicking() {
5331                         self.clearInterval(clickInterval);
5332                         clickInterval = null;
5333                     }
5335                     startClicking();
5337                     document.addEventListener("mousemove", event => {
5338                         ({
5339                             clientX,
5340                             clientY
5341                         } = event);
5342                     }, {
5343                         passive: true
5344                     });
5346                     self.addEventListener("keydown", event => {
5347                         if (event.key === "s") {
5348                             if (clickingEnabled) {
5349                                 stopClicking();
5350                             } else {
5351                                 startClicking();
5352                             }
5353                             clickingEnabled = !clickingEnabled;
5354                         }
5355                     });
5356                 }
5357             }
5358         }, {
5359             name: "Tab Cloaker",
5360             description: "Changes the tab image and name",
5361             inputs: [{
5362                 name: "Icon URL",
5363                 type: "text",
5364             }, {
5365                 name: "Tab Title",
5366                 type: "text",
5367             }],
5368             run: function(e, t) {
5369                 var a = document.querySelector("link[rel*='icon']") || document.createElement("link");
5370                 a.type = "image/x-icon", a.rel = "shortcut icon", a.href = e || "https://www.blooket.com/favicon.ico", document.getElementsByTagName("head")[0].appendChild(a), document.title = t || "Blooket"
5371             }
5372         }],
5373         host: [{
5374             name: "Host Any Gamemode",
5375             description: "Change the selected gamemode on the host settings page",
5376             inputs: [{
5377                 name: "Gamemode",
5378                 type: "options",
5379                 options: ["Racing", "Classic", "Factory", "Cafe", "Defense2", "Defense", "Royale", "Gold", "Candy", "Brawl", "Hack", "Pirate", "Fish", "Dino", "Toy", "Rush"]
5380             }],
5381             run: function(e) {
5382                 let t = document.createElement("iframe");
5383                 if (document.body.append(t), window.alert = t.contentWindow.alert.bind(window), window.prompt = t.contentWindow.prompt.bind(window), t.remove(), "/host/settings" != location.pathname) return alert("Run this script on the host settings page");
5384                 let {
5385                     stateNode: a
5386                 } = Object.values(function e(t = document.querySelector("body>div")) {
5387                     return Object.values(t)[1]?.children?.[0]?._owner.stateNode ? t : e(t.querySelector(":scope>div"))
5388                 }())[1].children[0]._owner;
5389                 a.setState({
5390                     settings: {
5391                         type: e
5392                     }
5393                 })
5394             }
5395         }, {
5396             name: "Toggle Spooky Theme",
5397             description: "Toggles the spooky theme for Gold Quest",
5398             run: function() {
5399                 (() => {
5400                     const sn = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
5401                     sn.season = sn.season ? 0 : 1;
5402                     sn.render();
5403                 })();
5404             }
5405         }, {
5406             name: "Freeze Timer",
5407             description: "Makes the host timer stop ingame",
5408             run: function() {
5409                 (() => {
5410                     const {
5411                         stateNode
5412                     } = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner;
5413                     clearInterval(stateNode.timerInterval);
5414                     stateNode.timerInterval = setInterval(function() {
5415                         stateNode?.getClients?.(!1);
5416                     }, 4000);
5417                 })();
5418             }
5419         }, {
5420             name: "Render Hours on Host Timer",
5421             description: "Renders hours on host timer(use with remove host time limit). Can only render up to 24 hours.",
5422             run: function() {
5423                 (() => {
5424                     const format = "HH:mm:ss";
5425                     const reg = '/(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g';
5426                     if (!RegExp.prototype.tes) {
5427                         RegExp.prototype.tes = RegExp.prototype.test;
5428                     }
5429                     RegExp.prototype.test = function(a) {
5430                         if (a == "mm:ss" && this.toString() == reg) {
5431                             return !0;
5432                         }
5433                         return RegExp.prototype.tes.apply(this, arguments);
5434                     }
5435                     if (!String.prototype.rep) {
5436                         String.prototype.rep = String.prototype.replace;
5437                     }
5438                     String.prototype.replace = function(a, b) {
5439                         if (this == "mm:ss" && a.toString() == reg) {
5440                             return format;
5441                         }
5442                         return String.prototype.rep.apply(this, arguments);
5443                     }
5444                 })();
5445             }
5446         }, {
5447             name: "View Lobbychat Logs",
5448             description: "View messages players type in chat",
5449             run: function() {
5450                 function reactHandler() {
5451                     return Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner;
5452                 }
5454                 document.addEventListener("keydown", function(e) {
5455                     if (e.key === "Shift" && e.code === "ShiftRight") {
5456                         c.style.display = c.style.display === "none" ? "block" : "none";
5457                     }
5458                 });
5460                 const c = document.createElement("div");
5461                 c.className = "chat-box";
5462                 document.body.appendChild(c);
5463                 const h = document.createElement("div");
5464                 h.className = "chat-header";
5465                 h.textContent = "Chat Logs (RSHIFT to hide)";
5466                 c.appendChild(h);
5467                 const b = document.createElement("div");
5468                 b.className = "chat-body";
5469                 c.appendChild(b);
5471                 function a(e) {
5472                     const t = document.createElement("div");
5473                     t.textContent = e;
5474                     b.appendChild(t);
5475                     b.scrollTop = b.scrollHeight;
5476                 }
5478                 c.style.position = "fixed";
5479                 c.style.bottom = "20px";
5480                 c.style.right = "20px";
5481                 c.style.width = "300px";
5482                 c.style.height = "400px";
5483                 c.style.backgroundColor = "#fff";
5484                 c.style.border = "1px solid #ccc";
5485                 c.style.boxShadow = "0px 0px 10px rgba(0, 0, 0, 0.2)";
5486                 c.style.display = "block";
5488                 b.style.height = "360px";
5489                 b.style.overflowY = "scroll";
5490                 b.style.padding = "10px";
5492                 h.addEventListener("click", () => {
5493                     b.classList.toggle("open");
5494                 });
5496                 var da = reactHandler().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_;
5498                 function handleChat(e, t) {
5499                     if (t != null) {
5500                         if (e.includes("/msg")) {
5501                             t?.msg && (console.log(t.msg), a(e.split("/")[2] + ": " + t.msg));
5502                         }
5503                     }
5504                 }
5506                 reactHandler().stateNode.props.liveGameController._liveApp.database()._delegate._repoInternal.server_.onDataUpdate_ = function(e, t, a, n) {
5507                     console.log(e, t, a, n);
5508                     handleChat(e, t);
5509                     da(e, t, a, n);
5510                 };
5512                 window.logsv = false;
5514                 function onsv(e) {
5515                     if (window.logsv) {
5516                         a("Path: " + e.path.split("/").splice(2, 2).join("/") + " Val: " + ((typeof e.val === 'object') ? JSON.stringify(e.val) : e.val));
5517                     }
5518                 }
5520                 var orgsv = reactHandler().stateNode.props.liveGameController.setVal;
5521                 reactHandler().stateNode.props.liveGameController.setVal = function() {
5522                     onsv.apply(this, arguments);
5523                     orgsv.apply(this, arguments);
5524                 };
5526                 reactHandler().stateNode.props.liveGameController._liveApp.database().ref(`${reactHandler().stateNode.props.liveGameController._liveGameCode}`).on("value", e => {});
5527                 a("Lobbychat successfully loaded!");
5529                 function app() {
5530                     c.style.wordWrap = "break-word";
5531                 }
5533                 app();
5534             }
5535         }, {
5536             name: "Remove Host Time Limit",
5537             description: "Removes the host time limit",
5538             run: function() {
5539                 (() => {
5540                     const sn = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
5541                     sn.onAmountUpdate = function(t) {
5542                         let settings = sn.state.settings;
5543                         settings.amount = parseInt(t.target.value);
5544                         sn.setState({
5545                             settings
5546                         });
5547                     }
5548                 })();
5549             }
5550         }, {
5551             name: "Free Player Slots",
5552             description: "Allows more players to join if the game is full",
5553             run: async () => {
5554                 let i = document.createElement('iframe');
5555                 document.body.append(i);
5556                 const alert = i.contentWindow.alert.bind(window);
5557                 i.remove();
5558                 const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
5559                 const players = await stateNode.props.liveGameController.getDatabaseVal("c");
5560                 let freed = 0;
5561                 if (!stateNode.state.blockedUsers) {
5562                     stateNode.state.blockedUsers = [];
5563                 }
5564                 async function wait(time) {
5565                     return new Promise(e => {
5566                         setTimeout(e, time);
5567                     });
5568                 }
5569                 async function blockUser(name) {
5570                     if (stateNode.state.blockedUsers.includes(name)) {
5571                         return;
5572                     }
5573                     const res = await fetch("https://fb.blooket.com/c/firebase/block", {
5574                         headers: {
5575                             "Content-Type": "application/json"
5576                         },
5577                         method: "POST",
5578                         body: JSON.stringify({
5579                             g: stateNode.props.host.id,
5580                             u: name
5581                         }),
5582                         credentials: "include"
5583                     });
5584                     if (res.status !== 200) {
5585                         return;
5586                     }
5587                     stateNode.state.blockedUsers.push(name);
5588                     freed++;
5589                     if (freed % parseInt("15") == 0) {
5590                         await wait(600);
5591                     }
5592                     C.alerts?.[0].addLog("Freed user: " + name);
5593                 }
5594                 for (let i in players) {
5595                     await blockUser(i);
5596                 }
5597                 alert(`Freed slots: ${freed}`);
5598             }
5599         }, {
5600             name: "Realtime Updates",
5601             description: "Makes leaderboard updates happen in real-time.",
5602             run: async () => {
5603                 const stateNode = () => Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
5604                 (await stateNode().props.liveGameController.getDatabaseRef("")).on("value", e => stateNode()?.getClients?.(!1));
5605             }
5606         }, {
5607             name: "Anti-Flood",
5608             description: "Prevents bots from flooding the game",
5609             enabled: false,
5610             data: null,
5611             run: function() {
5612                 if (this.enabled) {
5613                     return;
5614                 }
5616                 this.enabled = true;
5617                 this.data = setInterval(async () => {
5618                     var iframe = document.createElement("iframe");
5619                     document.body.append(iframe);
5620                     window.confirm = iframe.contentWindow.confirm.bind(window);
5621                     iframe.style.display = "none";
5623                     try {
5624                         let stateNode = Object.values(document.querySelector("#app > div > div"))[1].children[0]._owner.stateNode;
5625                         var dbRef = await stateNode.props.liveGameController.getDatabaseRef("c");
5626                         let currentClients = {},
5627                             clientCounts = {};
5629                         dbRef.on("value", snapshot => {
5630                             var clients = snapshot.val() || {};
5631                             var newClients = [];
5633                             for (const key in clients) {
5634                                 if (!currentClients[key]) {
5635                                     newClients.push(key);
5636                                     clientCounts[key.replace(/[0-9]/g, "")] = (clientCounts[key.replace(/[0-9]/g, "")] || 0) + 1;
5637                                 }
5638                             }
5640                             currentClients = clients;
5642                             for (const client of newClients) {
5643                                 if (currentClients[client].g || clientCounts[client.replace(/[0-9]/g, "")] > 1) {
5644                                     stateNode.props.liveGameController.blockUser(client);
5645                                     clientCounts[client.replace(/[0-9]/g, "")]--;
5646                                 }
5647                             }
5648                         });
5649                     } catch (error) {
5650                         console.error("An error occurred", error);
5651                     }
5652                 }, 2000);
5653             }
5654         }, {
5655             name: "Enable Mobile Hosting",
5656             description: "Makes it so that you can host on mobile",
5657             run: function() {
5658                 (function() {
5659                     var metaViewport = document.querySelector('meta[name="viewport"]');
5660                     if (metaViewport) {
5661                         metaViewport.parentNode.removeChild(metaViewport);
5662                     }
5663                     var newMetaViewport = document.createElement('meta');
5664                     newMetaViewport.name = 'viewport';
5665                     newMetaViewport.content = 'width=1280, initial-scale=1';
5666                     document.head.appendChild(newMetaViewport);
5667                 })();
5668             }
5669         }, {
5670             name: "Kick All Players",
5671             description: "Kicks all players from your game.",
5672             run: async () => {
5673                 const sn = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
5674                 const db = await sn.props.liveGameController.getDatabaseVal("");
5675                 sn.props.liveGameController.setVal({
5676                     path: "bu",
5677                     val: Object.keys(db.c).reduce((a, b) => (a[b] = 1, a), db.bu ? db.bu : {})
5678                 });
5679                 sn.props.liveGameController.setVal({
5680                     path: "c",
5681                     val: {}
5682                 });
5683             }
5684         }],
5685         royale: [{
5686             name: "Auto Answer (Toggle)",
5687             description: "Toggles auto answer on",
5688             type: "toggle",
5689             enabled: !1,
5690             data: null,
5691             run: function() {
5692                 this.enabled ? (this.enabled = !1, clearInterval(this.data), this.data = null) : (this.enabled = !0, this.data = setInterval(() => {
5693                     var e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5694                     e?.onAnswer?.(!0, e.props.client.question.correctAnswers[0])
5695                 }, 50))
5696             }
5697         }, {
5698             name: "Auto Answer",
5699             description: "Chooses the correct answer for you. Will answer with the time provided.",
5700             inputs: [{
5701                 name: "Time (milliseconds)",
5702                 type: "number",
5703                 min: 0,
5704                 max: 20000,
5705             }],
5706             run: (a) => {
5707                 const stateNode = Object.values(document.querySelector('#app>div>div'))[1].children[0]._owner.stateNode;
5708                 stateNode.startTime = performance.now() - a;
5709                 stateNode?.onAnswer?.(true, stateNode.props.client.question.correctAnswers[0]);
5710             }
5711         }],
5712         rush: [{
5713             name: "Set Blooks",
5714             description: "Sets amount of blooks you or your team has",
5715             inputs: [{
5716                 name: "Blooks",
5717                 type: "number"
5718             }],
5719             run: function(e) {
5720                 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5721                 t.setState({
5722                     numBlooks: e
5723                 }), t.isTeam ? t.props.liveGameController.setVal({
5724                     path: `a/${t.props.client.name}/bs`,
5725                     val: e
5726                 }) : t.props.liveGameController.setVal({
5727                     path: `c/${t.props.client.name}/bs`,
5728                     val: numDefense
5729                 })
5730             }
5731         }, {
5732             name: "Set Defense",
5733             description: "Sets amount of defense you or your team has (Max 4)",
5734             inputs: [{
5735                 name: "Defense (max 4)",
5736                 type: "number",
5737                 max: 4
5738             }],
5739             run: function(e) {
5740                 var e = Math.min(e, 4),
5741                     t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5742                 t.setState({
5743                     numDefense: e
5744                 }), t.isTeam ? t.props.liveGameController.setVal({
5745                     path: `a/${t.props.client.name}/d`,
5746                     val: e
5747                 }) : t.props.liveGameController.setVal({
5748                     path: `c/${t.props.client.name}/d`,
5749                     val: e
5750                 })
5751             }
5752         }, {
5753             name: "Freeze Host :)",
5754             description: "They aint coming back with this one",
5755             run: function() {
5756                 var largeNumber = "99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999";
5757                 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5758                 t.setState({
5759                     numBlooks: largeNumber
5760                 });
5761                 if (t.isTeam) {
5762                     t.props.liveGameController.setVal({
5763                         path: `a/${t.props.client.name}/bs`,
5764                         val: largeNumber
5765                     });
5766                 } else {
5767                     t.props.liveGameController.setVal({
5768                         path: `c/${t.props.client.name}/bs`,
5769                         val: largeNumber
5770                     });
5771                 }
5772             }
5773         }],
5774         workshop: [{
5775             name: "Remove Distractions",
5776             description: "Removes all enemy distractions",
5777             run: function() {
5778                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
5779                     fog: !1,
5780                     dusk: !1,
5781                     wind: !1,
5782                     plow: !1,
5783                     blizzard: !1,
5784                     force: !1,
5785                     canada: !1,
5786                     trees: [!1, !1, !1, !1, !1, !1, !1, !1, !1, !1]
5787                 })
5788             }
5789         }, {
5790             name: "Send Distraction",
5791             description: "Sends a distraction to everyone else playing",
5792             inputs: [{
5793                 name: "Distraction",
5794                 type: "options",
5795                 options: Object.entries({
5796                     c: "Oh Canada",
5797                     b: "Blizzard",
5798                     f: "Fog Spell",
5799                     d: "Dark & Dusk",
5800                     w: "Howling Wind",
5801                     g: "Gift Time!",
5802                     t: "TREES",
5803                     s: "Snow Plow",
5804                     fr: "Use The Force"
5805                 }).map(([e, t]) => ({
5806                     name: t,
5807                     value: e
5808                 }))
5809             }],
5810             run: function(e) {
5811                 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5812                 t.safe = !0, t.props.liveGameController.setVal({
5813                     path: `c/${t.props.client.name}/tat`,
5814                     val: e
5815                 })
5816             }
5817         }, {
5818             name: "Set Toys",
5819             description: "Sets amount of toys",
5820             inputs: [{
5821                 name: "Toys",
5822                 type: "number"
5823             }],
5824             run: function(e) {
5825                 var t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5826                 t.setState({
5827                     toys: e
5828                 }), t.props.liveGameController.setVal({
5829                     path: "c/".concat(t.props.client.name),
5830                     val: {
5831                         b: t.props.client.blook,
5832                         t: e
5833                     }
5834                 })
5835             }
5836         }, {
5837             name: "Set Toys Per Question",
5838             description: "Sets amount of toys per question",
5839             inputs: [{
5840                 name: "Toys Per Question",
5841                 type: "number"
5842             }],
5843             run: function(e) {
5844                 Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode.setState({
5845                     toysPerQ: e
5846                 })
5847             }
5848         }, {
5849             name: "Swap Toys",
5850             description: "Swaps toys with someone",
5851             inputs: [{
5852                 name: "Player",
5853                 type: "options",
5854                 options() {
5855                     let e = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5856                     return new Promise(t => e.props.liveGameController._liveApp ? e.props.liveGameController.getDatabaseVal("c", e => e && t(Object.keys(e))) : t([]))
5857                 }
5858             }],
5859             run: function(e) {
5860                 let t = Object.values(document.querySelector("body div[id] > div > div"))[1].children[0]._owner.stateNode;
5861                 t.props.liveGameController.getDatabaseVal("c", a => {
5862                     var o;
5863                     a && Object.keys(a).map(e => e.toLowerCase()).includes(e.toLowerCase()) && ([a, {
5864                         t: o
5865                     }] = Object.entries(a).find(([t]) => t.toLowerCase() == e.toLowerCase()), t.props.liveGameController.setVal({
5866                         path: "c/".concat(t.props.client.name),
5867                         val: {
5868                             b: t.props.client.blook,
5869                             t: o,
5870                             tat: a + ":swap:" + t.state.toys
5871                         }
5872                     }), t.setState({
5873                         toys: o
5874                     }))
5875                 })
5876             }
5877         }],
5878         settings: [{
5879             name: "Import Settings",
5880             description: "Import a custom theme",
5881             inputs: [{
5882                 name: "JSON Data",
5883                 type: "string"
5884             }],
5885             run: function(e) {
5886                 try {
5887                     JSON.parse(e)
5888                 } catch (t) {
5889                     return alert("Invalid JSON provided")
5890                 }
5891                 for (let a in e = {
5892                         backgroundColor: "rgb(11, 194, 207)",
5893                         infoColor: "#9a49aa",
5894                         cheatList: "#9a49aa",
5895                         defaultButton: "#9a49aa",
5896                         disabledButton: "#A02626",
5897                         enabledButton: "#47A547",
5898                         textColor: "white",
5899                         inputColor: "#7a039d",
5900                         contentBackground: "rgb(64, 17, 95)",
5901                         ...JSON.parse(e)
5902                     }, c.setItem("theme", e), e) p.sheet.cssRules[0].style.setProperty("--" + a, e[a])
5903             }
5904         }, {
5905             name: "Export Settings",
5906             description: "Export the current theme to JSON",
5907             run: async function() {
5908                 await navigator.clipboard.writeText(JSON.stringify(c.data.theme, null, 4)), prompt("Text copied to clipboard. (Paste below to test)")
5909             }
5910         }, {
5911             name: "Defaults",
5912             description: "Changes all the settings to a preset",
5913             inputs: [{
5914                 name: "Theme",
5915                 type: "options",
5916                 options: [{
5917                     name: "Default",
5918                     value: {
5919                         backgroundColor: "rgb(11, 194, 207)",
5920                         infoColor: "#9a49aa",
5921                         cheatList: "#9a49aa",
5922                         defaultButton: "#9a49aa",
5923                         disabledButton: "#A02626",
5924                         enabledButton: "#47A547",
5925                         textColor: "white",
5926                         inputColor: "#7a039d",
5927                         contentBackground: "rgb(64, 17, 95)"
5928                     }
5929                 }, {
5930                     name: "Landscapes (Random)",
5931                     value: {
5932                         backgroundColor: "url(https://source.unsplash.com/1600x900/?landscape)",
5933                         infoColor: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))",
5934                         cheatList: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))",
5935                         defaultButton: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))",
5936                         disabledButton: "linear-gradient(rgba(225, 0, 0, 0.3), rgba(225, 0, 0, 0.3))",
5937                         enabledButton: "linear-gradient(rgba(0, 128, 0, 0.3), rgba(0, 128, 0, 0.3))",
5938                         textColor: "white",
5939                         inputColor: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))",
5940                         contentBackground: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))"
5941                     }
5942                 }, {
5943                     name: "Blacket",
5944                     value: {
5945                         backgroundColor: "#4f4f4f",
5946                         infoColor: "#2f2f2f",
5947                         cheatList: "#2f2f2f",
5948                         defaultButton: "#4f4f4f",
5949                         disabledButton: "#eb6234",
5950                         enabledButton: "#00c20c",
5951                         textColor: "white",
5952                         inputColor: "#3f3f3f",
5953                         contentBackground: "#2f2f2f"
5954                     }
5955                 }, {
5956                     name: "Ploopit",
5957                     value: {
5958                         backgroundColor: "url(https://i.ibb.co/6vvdq3f/ploopit.png)",
5959                         infoColor: "#3C75F5",
5960                         cheatList: "#204DD0",
5961                         defaultButton: "#204DD0",
5962                         disabledButton: "#A02626",
5963                         enabledButton: "#47A547",
5964                         textColor: "white",
5965                         inputColor: "#3f3f3f",
5966                         contentBackground: "#3C75F5"
5967                     }
5968                 }, {
5969                     name: "Betastar",
5970                     value: {
5971                         backgroundColor: "url(https://i.ibb.co/8bkDpCn/GIFMaker-me.gif)",
5972                         infoColor: "#282828",
5973                         cheatList: "#282828",
5974                         defaultButton: "white",
5975                         disabledButton: "#9D0000",
5976                         enabledButton: "#013220",
5977                         textColor: "black",
5978                         inputColor: "gray",
5979                         contentBackground: "linear-gradient(rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3))"
5980                     }
5981                 }, {
5982                     name: "Skool.lol",
5983                     value: {
5984                         backgroundColor: "linear-gradient(90deg, rgba(104,45,140,1) 220px, rgba(237,30,121,1) 100%)",
5985                         cheatList: "#1e2124",
5986                         infoColor: "#1e2124",
5987                         defaultButton: "#36393e",
5988                         inputColor: "#1e2124",
5989                         enabledButton: "#9c9a9a",
5990                         textColor: "white",
5991                         disabledButton: "#171717",
5992                         contentBackground: "#292929"
5993                     }
5994                 }, {
5995                     name: "Blue - Purple Background",
5996                     value: {
5997                         backgroundColor: "linear-gradient(162.5deg, rgba(0,183,255,1) 220px, rgba(128,0,255,1) 100%)"
5998                     }
5999                 }, {
6000                     name: "Saint Patricks Background",
6001                     value: {
6002                         backgroundColor: "rgb(9, 148, 65)"
6003                     }
6004                 }, {
6005                     name: "Halloween Background",
6006                     value: {
6007                         backgroundColor: "rgb(41, 41, 41)"
6008                     }
6009                 }, {
6010                     name: "Fall Background",
6011                     value: {
6012                         backgroundColor: "rgb(224, 159, 62)"
6013                     }
6014                 }, {
6015                     name: "Winter Background",
6016                     value: {
6017                         backgroundColor: "linear-gradient(rgb(49, 170, 224), rgb(187, 221, 255))"
6018                     }
6019                 }, {
6020                     name: "Crypto Hack",
6021                     value: {
6022                         backgroundColor: "radial-gradient(#11581e,#041607)",
6023                         infoColor: "#1a1a1a",
6024                         cheatList: "#1a1a1a",
6025                         defaultButton: "rgb(88 175 88)",
6026                         disabledButton: "#A02626",
6027                         enabledButton: "#0b601b",
6028                         textColor: "white",
6029                         inputColor: "rgb(0 0 0 / 25%)",
6030                         contentBackground: "#11581e"
6031                     }
6032                 }, {
6033                     name: "Fishing Frenzy",
6034                     value: {
6035                         backgroundColor: "linear-gradient(180deg,#9be2fe 0,#67d1fb)",
6036                         infoColor: "#c8591e",
6037                         cheatList: "#c8591e",
6038                         defaultButton: "#ff751a",
6039                         disabledButton: "#bf0e0e",
6040                         enabledButton: "#2fb62f",
6041                         textColor: "white",
6042                         inputColor: "rgb(0 0 0 / 25%)",
6043                         contentBackground: "radial-gradient(#02b0ea 40%, #1d86ea)"
6044                     }
6045                 }, {
6046                     name: "Deceptive Dinos",
6047                     value: {
6048                         backgroundColor: 'radial-gradient(rgba(220, 184, 86, 0), rgba(220, 184, 86, 0.4)), url("https://ac.blooket.com/play/111cb7e0ee6607ac3d1a13d534c0e0f1.png"), #ead49a',
6049                         infoColor: "#af8942",
6050                         cheatList: "#af8942",
6051                         defaultButton: "#af8942",
6052                         disabledButton: "#A02626",
6053                         enabledButton: "#47A547",
6054                         textColor: "white",
6055                         inputColor: "rgb(0 0 0 / 10%)",
6056                         contentBackground: "radial-gradient(rgba(1,104,162,.6),rgba(24,55,110,.5)),radial-gradient(#2783b4 1.5px,#18376e 0) center / 24px 24px"
6057                     }
6058                 }, {
6059                     name: "Blook Rush",
6060                     value: {
6061                         backgroundColor: "repeating-linear-gradient(45deg,white,white 8%,#e6e6e6 0,#e6e6e6 16%)",
6062                         defaultButton: "#36c",
6063                         inputColor: "rgb(0 0 0 / 25%)",
6064                         infoColor: "#36c",
6065                         cheatList: "#36c",
6066                         contentBackground: "#888",
6067                         textColor: "white",
6068                         disabledButton: "#A02626",
6069                         enabledButton: "#47A547"
6070                     }
6071                 }, {
6072                     name: "Factory",
6073                     value: {
6074                         defaultButton: "#1563bf",
6075                         infoColor: "#a5aabe",
6076                         cheatList: "#a5aabe",
6077                         contentBackground: "#2d313d",
6078                         backgroundColor: "#3a3a3a",
6079                         enabledButton: "rgb(75, 194, 46)",
6080                         disabledButton: "#9a49aa",
6081                         inputColor: "rgb(0 0 0 / 25%)",
6082                         textColor: "white"
6083                     }
6084                 }, {
6085                     name: "Cafe",
6086                     value: {
6087                         backgroundColor: "linear-gradient(90deg,rgba(200,0,0,.5) 50%,transparent 0) center / 50px 50px,linear-gradient(rgba(200,0,0,0.5) 50%,transparent 0) white center / 50px 50px",
6088                         defaultButton: "#0bc2cf",
6089                         inputColor: "rgb(0 0 0 / 25%)",
6090                         infoColor: "#ac7339",
6091                         cheatList: "#ac7339",
6092                         contentBackground: "rgb(64, 64, 64)",
6093                         textColor: "white",
6094                         disabledButton: "#A02626",
6095                         enabledButton: "#47A547"
6096                     }
6097                 }, {
6098                     name: "Tower of Doom",
6099                     value: {
6100                         backgroundColor: "rgb(41 41 41)",
6101                         disabledButton: "rgb(151, 15, 5)",
6102                         defaultButton: "#333",
6103                         inputColor: "rgb(0 0 0 / 25%)",
6104                         contentBackground: "#404040",
6105                         enabledButton: "#4bc22e",
6106                         textColor: "white",
6107                         infoColor: "#9a49aa",
6108                         cheatList: "#9a49aa"
6109                     }
6110                 }, {
6111                     name: "Monster Brawl",
6112                     value: {
6113                         defaultButton: "rgb(45, 51, 67)",
6114                         backgroundColor: "rgb(78, 95, 124)",
6115                         inputColor: "rgb(0 0 0 / 25%)",
6116                         contentBackground: "linear-gradient(0deg,#374154,#4f5b74)",
6117                         infoColor: "#374154",
6118                         cheatList: "#374154",
6119                         textColor: "white",
6120                         enabledButton: "#47A547",
6121                         disabledButton: "#A02626"
6122                     }
6123                 }, {
6124                     name: "Tower Defense 2",
6125                     value: {
6126                         backgroundColor: "url(https://media.blooket.com/image/upload/v1676164454/Media/defense/backgroundTd1-02.svg) center / cover",
6127                         cheatList: "#a33c22",
6128                         infoColor: "#a33c22",
6129                         defaultButton: "#40b1d8",
6130                         inputColor: "#3e8cbe",
6131                         contentBackground: "#293c82",
6132                         enabledButton: "#47A547",
6133                         disabledButton: "#A02626",
6134                         textColor: "white"
6135                     }
6136                 }]
6137             }],
6138             run: function(e) {
6139                 for (let t in c.setItem("theme", {
6140                         ...c.data.theme,
6141                         ...e
6142                     }), e) p.sheet.cssRules[0].style.setProperty("--" + t, e[t])
6143             }
6144         }, {
6145             name: "Scale",
6146             description: "Forces the GUI to scale from 25%-100%",
6147             inputs: [{
6148                 type: "number",
6149                 name: "Percent scale",
6150                 min: 25,
6151                 max: 100,
6152                 value: 100 * (c.data.scale || 1)
6153             }],
6154             run: function(e) {
6155                 e = Math.min(Math.max(e, 25), 100), c.setItem("scale", e / 100), _.style.transform = `scale(${e/100})`
6156             }
6157         }, {
6158             name: "Hide Keybind",
6159             description: "Change the hide keybind (Click button after input to change)",
6160             inputs: [{
6161                 type: "function",
6162                 name: "Input",
6163                 function: e => B(({
6164                     shift: t,
6165                     ctrl: a,
6166                     alt: o,
6167                     key: r
6168                 }) => e("" + [a && "Ctrl", t && "Shift", o && "Alt", r && r.toUpperCase()].filter(Boolean).join(" + ")))
6169             }],
6170             run: function(e) {
6171                 c.setItem("hide", e), m.update(c.data.hide || {
6172                     ctrl: !0,
6173                     key: "e"
6174                 }, c.data.close || {
6175                     ctrl: !0,
6176                     key: "x"
6177                 })
6178             }
6179         }, {
6180             name: "Close Keybind",
6181             description: "Change the quick close keybind (Click button after input to change)",
6182             inputs: [{
6183                 type: "function",
6184                 name: "Input",
6185                 function: e => B(({
6186                     shift: t,
6187                     ctrl: a,
6188                     alt: o,
6189                     key: r
6190                 }) => e("" + [a && "Ctrl", t && "Shift", o && "Alt", r && r.toUpperCase()].filter(Boolean).join(" + ")))
6191             }],
6192             run: function(e) {
6193                 c.setItem("close", e), m.update(c.data.hide || {
6194                     ctrl: !0,
6195                     key: "e"
6196                 }, c.data.close || {
6197                     ctrl: !0,
6198                     key: "x"
6199                 })
6200             }
6201         }, {
6202             name: "Background Color",
6203             description: "Changes the background color of the GUI",
6204             inputs: [{
6205                 type: "string",
6206                 name: "Color"
6207             }],
6208             run: function(e) {
6209                 p.sheet.cssRules[0].style.setProperty("--backgroundColor", e), c.setItem("theme.backgroundColor", e)
6210             }
6211         }, {
6212             name: "Category List Color",
6213             description: "Changes the categories list background color",
6214             inputs: [{
6215                 type: "string",
6216                 name: "Color"
6217             }],
6218             run: function(e) {
6219                 p.sheet.cssRules[0].style.setProperty("--cheatList", e), c.setItem("theme.cheatList", e)
6220             }
6221         }, {
6222             name: "Info Color",
6223             description: "Changes the color of the information at the top of the GUI",
6224             inputs: [{
6225                 type: "string",
6226                 name: "Color"
6227             }],
6228             run: function(e) {
6229                 p.sheet.cssRules[0].style.setProperty("--infoColor", e), c.setItem("theme.infoColor", e)
6230             }
6231         }, {
6232             name: "Button Color",
6233             description: "Changes the color of the cheats",
6234             inputs: [{
6235                 type: "string",
6236                 name: "Color"
6237             }],
6238             run: function(e) {
6239                 p.sheet.cssRules[0].style.setProperty("--defaultButton", e), c.setItem("theme.defaultButton", e)
6240             }
6241         }, {
6242             name: "Enabled Toggle Color",
6243             description: "Changes the color of enabled toggle cheats",
6244             inputs: [{
6245                 type: "string",
6246                 name: "Color"
6247             }],
6248             run: function(e) {
6249                 c.setItem("theme.enabledButton", e)
6250             }
6251         }, {
6252             name: "Disabled Toggle Color",
6253             description: "Changes the color of disabled toggle cheats",
6254             inputs: [{
6255                 type: "string",
6256                 name: "Color"
6257             }],
6258             run: function(e) {
6259                 p.sheet.cssRules[0].style.setProperty("--disabledButton", e), c.setItem("theme.disabledButton", e)
6260             }
6261         }, {
6262             name: "Text Color",
6263             description: "Changes the text color",
6264             inputs: [{
6265                 type: "string",
6266                 name: "Color"
6267             }],
6268             run: function(e) {
6269                 p.sheet.cssRules[0].style.setProperty("--textColor", e), c.setItem("theme.textColor", e)
6270             }
6271         }, {
6272             name: "Input Color",
6273             description: "Changes the color of inputs, like the set gold number input",
6274             inputs: [{
6275                 type: "string",
6276                 name: "Color"
6277             }],
6278             run: function(e) {
6279                 p.sheet.cssRules[0].style.setProperty("--inputColor", e), c.setItem("theme.inputColor", e)
6280             }
6281         }, {
6282             name: "Content Color",
6283             description: "Changes the background color of the cheats",
6284             inputs: [{
6285                 type: "string",
6286                 name: "Color"
6287             }],
6288             run: function(e) {
6289                 p.sheet.cssRules[0].style.setProperty("--contentBackground", e), c.setItem("theme.contentBackground", e)
6290             }
6291         }],
6292         alerts: [{
6293             element: l("div", {
6294                 className: "alertContainer",
6295                 style: {
6296                     margin: "15px 15px 5px 15px",
6297                     backgroundColor: "rgb(0 0 0 / 50%)",
6298                     width: "95%",
6299                     height: "370px",
6300                     borderRadius: "7px",
6301                     display: "block",
6302                     alignItems: "center",
6303                     justifyContent: "center"
6304                 }
6305             }, l("ul", {
6306                 className: "alertList",
6307                 style: {
6308                     margin: "10px 10px 0 10px",
6309                     padding: "0",
6310                     listStyleType: "none",
6311                     display: "flex",
6312                     flexDirection: "column-reverse",
6313                     height: "355px",
6314                     overflowY: "scroll",
6315                     wordWrap: "break-word"
6316                 }
6317             }, l("li", {
6318                 style: {
6319                     margin: "5px"
6320                 }
6321             }, l("span", {
6322                 style: {
6323                     color: "var(--textColor)"
6324                 },
6325                 innerText: "[LOG] GUI opened"
6326             })))),
6327             addLog(e, t) {
6328                 return this.element.firstChild.prepend(l("li", {
6329                     style: {
6330                         margin: "5px"
6331                     }
6332                 }, l("span", {
6333                     style: {
6334                         color: t || "var(--textColor)"
6335                     },
6336                     innerHTML: "[LOG] " + e
6337                 })))
6338             },
6339             addAlert(e, t, a) {
6340                 return this.element.firstChild.prepend(l("li", {
6341                     style: {
6342                         margin: "5px"
6343                     }
6344                 }, l("strong", {}, e), " ", a))
6345             },
6346             connection: null,
6347             data: {},
6348             updateLeaderboard(e) {
6349                 for (var {
6350                         blook: t,
6351                         name: a,
6352                         value: o
6353                     }
6354                     of(this.leaderboardEl || this.addLeaderboard(), this.leaderboard.innerHTML = "", e)) {
6355                     this.leaderboard.append(l("li", {
6356                         style: {
6357                             fontSize: "2rem",
6358                             paddingInline: "15px 15px",
6359                             paddingBlock: "1.25px",
6360                             position: "relative",
6361                             borderBottom: "2px solid orange",
6362                             color: (a === Object.values(document.querySelector("#app>div>div"))?.[1]?.children?.[0]?._owner?.stateNode?.props?.client?.name) ? "#00FF00" : "#FFFFFF"
6363                         }
6364                     }, a, l("span", {
6365                         innerText: this.parseNumber(parseInt(o)),
6366                         style: {
6367                             float: "right"
6368                         }
6369                     })))
6370                 }
6371             },
6372             parseNumber(e = 0) {
6373                 var t = e;
6374                 if (e < 1e3) return t.toString();
6375                 var a = ["", "K", "M", "B", "T"],
6376                     o = Math.floor((e.toString().length - 1) / 3);
6377                 if (o < a.length) {
6378                     let r = 0;
6379                     for (let i = 3; 1 <= i && !((r = parseFloat((0 !== o ? e / Math.pow(1e3, o) : e).toPrecision(i))).toString().replace(/[^a-zA-Z 0-9]+/g, "").length <= 3); i--);
6380                     t = (r = r % 1 != 0 ? r.toFixed(1) : r) + a[o]
6381                 } else {
6382                     let n = e,
6383                         s = 0;
6384                     for (; 100 <= n; s++) n = Math.floor(n / 10);
6385                     let l = "";
6386                     var c = ["⁰", "\xb9", "\xb2", "\xb3", "⁴", "⁵", "⁶", "⁷", "⁸", "⁹"];
6387                     for (let d of (s + 1).toString().split("")) l += c[Number(d)];
6388                     t = n / 10 + " \xd7 10" + l
6389                 }
6390                 return t
6391             },
6392             addLeaderboard() {
6393                 this.leaderboardEl = l("div", {
6394                     className: "alertContainer",
6395                     style: {
6396                         margin: "15px 15px 5px 15px",
6397                         backgroundColor: "rgb(0 0 0 / 50%)",
6398                         width: "95%",
6399                         height: "370px",
6400                         borderRadius: "7px",
6401                         display: "flex",
6402                         alignItems: "center",
6403                         justifyContent: "center"
6404                     }
6405                 }, this.leaderboard = l("nl", {
6406                     className: "alertList",
6407                     style: {
6408                         marginTop: "10px",
6409                         padding: "0",
6410                         listStyleType: "decimal",
6411                         width: "100%",
6412                         height: "355px",
6413                         overflowY: "scroll",
6414                         wordWrap: "break-word"
6415                     }
6416                 }));
6417                 insertElemBefore("Leaderboard", "https://i.ibb.co/hZQjjVP/trophy-icon.webp", [{
6418                     element: this.leaderboardEl
6419                 }], !0, h.children[3]);
6420                 this.addLog("Leaderboard Loaded!");
6421             },
6422             async connect() {
6423                 try {
6424                     var e = Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode;
6425                     if (!e?.props?.liveGameController?._liveGameCode) return !1;
6426                     this.connection = await e.props.liveGameController.getDatabaseRef("");
6427                     let t = "Cow",
6428                         a = this.getGamemode(),
6429                         o = {
6430                             lb: "Lunch Break",
6431                             as: "Ad Spam",
6432                             e37: "Error 37",
6433                             nt: "Night Time",
6434                             lo: "#LOL",
6435                             j: "Jokester",
6436                             sm: "Slow Mo",
6437                             dp: "Dance Party",
6438                             v: "Vortex",
6439                             r: "Reverse",
6440                             f: "Flip",
6441                             m: "Micro"
6442                         };
6443                     this.connection.on("value", e => {
6444                         var r = e.val()?.c || {};
6445                         if (r && this.diffObjects(this.data, r)) {
6446                             var i, n, s, l, c, d, p, u, h = this.diffObjects(this.data, r);
6447                             this.data = r;
6448                             let m = [];
6449                             switch (this.getGamemode()) {
6450                                 case "pirate":
6451                                     m = Object.entries(r).map(([e, {
6452                                         b: t,
6453                                         d: a
6454                                     }]) => ({
6455                                         name: e,
6456                                         blook: t,
6457                                         value: a || 0
6458                                     }));
6459                                     break;
6460                                 case "racing":
6461                                     m = Object.entries(r).map(([e, {
6462                                         b: t,
6463                                         pr: a
6464                                     }]) => ({
6465                                         name: e,
6466                                         blook: t,
6467                                         value: a || 0
6468                                     }));
6469                                     break;
6470                                 case "classic":
6471                                     m = Object.entries(r).map(([e, {
6472                                         b: t,
6473                                         p: a
6474                                     }]) => ({
6475                                         name: e,
6476                                         blook: t,
6477                                         value: a || 0
6478                                     }));
6479                                     break;
6480                                 case "royale":
6481                                     m = Object.entries(r).map(([e, {
6482                                         b: t,
6483                                         e: a
6484                                     }]) => ({
6485                                         name: e,
6486                                         blook: t,
6487                                         value: a || 0
6488                                     }));
6489                                     break;
6490                                 case "toy":
6491                                     m = Object.entries(r).map(([e, {
6492                                         b: t,
6493                                         t: a
6494                                     }]) => ({
6495                                         name: e,
6496                                         blook: t,
6497                                         value: a || 0
6498                                     }));
6499                                     break;
6500                                 case "brawl":
6501                                     m = Object.entries(r).map(([e, {
6502                                         b: t,
6503                                         xp: a
6504                                     }]) => ({
6505                                         name: e,
6506                                         blook: t,
6507                                         value: a || 0
6508                                     }));
6509                                     break;
6510                                 case "defense":
6511                                 case "defense2":
6512                                     m = Object.entries(r).map(([e, {
6513                                         b: t,
6514                                         d: a
6515                                     }]) => ({
6516                                         name: e,
6517                                         blook: t,
6518                                         value: a || 0
6519                                     }));
6520                                     break;
6521                                 case "gold":
6522                                     for (let $ in h) h[$].tat?.split && ([i, n] = h[$].tat.split(":"), "swap" == n ? this.addAlert($, t[r[$].b]?.url, "just swapped with " + i) : this.addAlert($, t[r[$].b]?.url, `just took ${this.parseNumber(parseInt(n))} gold from ` + i));
6523                                     m = Object.entries(r).map(([e, {
6524                                         b: t,
6525                                         g: a
6526                                     }]) => ({
6527                                         name: e,
6528                                         blook: t,
6529                                         value: a || 0
6530                                     }));
6531                                     break;
6532                                 case "hack":
6533                                     for (let g in h) h[g].tat?.split && ([s, l] = h[g].tat.split(":"), this.addAlert(g, t[r[g].b]?.url, `just took ${this.parseNumber(parseInt(l))} crypto from ` + s));
6534                                     m = Object.entries(r).map(([e, {
6535                                         b: t,
6536                                         cr: a
6537                                     }]) => ({
6538                                         name: e,
6539                                         blook: t,
6540                                         value: a || 0
6541                                     }));
6542                                     break;
6543                                 case "fishing":
6544                                     for (let y in h) "Frenzy" == h[y].f ? this.addAlert(y, t[r[y].b]?.url, "just started a frenzy") : h[y].s && this.addAlert(y, t[r[y].b]?.url, `just sent a ${h[y].f} distraction`);
6545                                     m = Object.entries(r).map(([e, {
6546                                         b: t,
6547                                         w: a
6548                                     }]) => ({
6549                                         name: e,
6550                                         blook: t,
6551                                         value: a || 0
6552                                     }));
6553                                     break;
6554                                 case "dino":
6555                                     for (let b in h) h[b].tat && ([c, d] = h[b].tat.split(":"), "true" == d ? this.addAlert(b, t[r[b].b]?.url, `just caught ${c} CHEATING!`) : this.addAlert(b, t[r[b].b]?.url, "investigated " + c));
6556                                     m = Object.entries(r).map(([e, {
6557                                         b: t,
6558                                         f: a
6559                                     }]) => ({
6560                                         name: e,
6561                                         blook: t,
6562                                         value: a || 0
6563                                     }));
6564                                     break;
6565                                 case "cafe":
6566                                     for (let v in h) h[v].up && ([p, u] = h[v].up.split(":"), u) && this.addAlert(v, t[r[v].b]?.url, `upgraded ${p} to level ` + u);
6567                                     m = Object.entries(r).map(([e, {
6568                                         b: t,
6569                                         ca: a
6570                                     }]) => ({
6571                                         name: e,
6572                                         blook: t,
6573                                         value: a || 0
6574                                     }));
6575                                     break;
6576                                 case "factory":
6577                                     for (let _ in h) {
6578                                         var f, w, k = h[_];
6579                                         k.g ? this.addAlert(_, t[r[_].b]?.url, `activated the ${o[k.g]} glitch!`) : k.s ? ([f, w] = k.s.split("-"), this.addAlert(_, t[r[_].b]?.url, `has a ${f} ${w} synergy!`)) : k.t && this.addAlert(_, t[r[_].b]?.url, "now has 10 Blooks!")
6580                                     }
6581                                     m = Object.entries(r).map(([e, {
6582                                         b: t,
6583                                         ca: a
6584                                     }]) => ({
6585                                         name: e,
6586                                         blook: t,
6587                                         value: a || 0
6588                                     }))
6589                             }
6590                             this.updateLeaderboard(m.sort((e, t) => t.value - e.value));
6591                         }
6592                     })
6593                 } catch {
6594                     return !1
6595                 }
6596             },
6597             diffObjects(e, t) {
6598                 var a, o = {};
6599                 for (let r in e) r in t && ("object" == typeof e[r] && "object" == typeof t[r] ? (a = this.diffObjects(e[r], t[r])) && 0 !== Object.keys(a).length && (o[r] = a) : JSON.stringify(e[r]) !== JSON.stringify(t[r]) && (o[r] = t[r]));
6600                 for (let i in t) i in e || (o[i] = t[i]);
6601                 return 0 == Object.keys(o).length ? null : o
6602             },
6603             getGamemode() {
6604                 if (Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode.props?.client?.type) {
6605                     return Object.values(document.querySelector("#app>div>div"))[1].children[0]._owner.stateNode.props.client.type.toLowerCase();
6606                 }
6607                 switch (window.location.pathname) {
6608                     case "/play/racing":
6609                         return "racing";
6610                     case "/play/extras":
6611                         return "extras";
6612                     case "/play/host":
6613                         return "host";
6614                     case "/play/pirate":
6615                         return "voyage";
6616                     case "/play/factory":
6617                         return "factory";
6618                     case "/play/classic/get-ready":
6619                     case "/play/classic/question":
6620                     case "/play/classic/answer/sent":
6621                     case "/play/classic/answer/result":
6622                     case "/play/classic/standings":
6623                         return "classic";
6624                     case "/play/battle-royale/match/preview":
6625                     case "/play/battle-royale/question":
6626                     case "/play/battle-royale/answer/sent":
6627                     case "/play/battle-royale/answer/result":
6628                     case "/play/battle-royale/match/result":
6629                         return "royale";
6630                     case "/play/toy":
6631                         return "toy";
6632                     case "/play/gold":
6633                         return "gold";
6634                     case "/play/brawl":
6635                         return "brawl";
6636                     case "/play/hack":
6637                         return "hack";
6638                     case "/play/fishing":
6639                         return "fishing";
6640                     case "/play/rush":
6641                         return "rush";
6642                     case "/play/dino":
6643                         return "dino";
6644                     case "/tower/map":
6645                     case "/tower/battle":
6646                     case "/tower/rest":
6647                     case "/tower/risk":
6648                     case "/tower/shop":
6649                     case "/tower/victory":
6650                         return "doom";
6651                     case "/cafe":
6652                     case "/cafe/shop":
6653                         return "cafe";
6654                     case "/defense":
6655                         return "defense";
6656                     case "/play/defense2":
6657                         return "defense2";
6658                     case "/kingdom":
6659                         return "kingdom";
6660                     default:
6661                         return !1
6662                 }
6663             }
6664         }]
6665     };
6667     function S(e, t) {
6668         var a, o, r = 0,
6669             i = 0;
6670         e.onpointerdown = function(e = window.event) {
6671             r = e.clientX, i = e.clientY, document.onpointerup = function() {
6672                 document.onpointerup = null, document.onpointermove = null
6673             }, document.onpointermove = function(e = window.event) {
6674                 a = r - e.clientX, o = i - e.clientY, r = e.clientX, i = e.clientY, t.style.top = t.offsetTop - o + "px", t.style.left = t.offsetLeft - a + "px"
6675             }
6676         }
6677     }
6678     w("Alerts", "https://i.ibb.co/hBNyCXG/559343-1.png", C.alerts, !0), w("Global", "https://i.ibb.co/gd4Qs8L/11507ef5615c554fe88fc22c86768501-simple-earth-icon-1.webp", C.global)(), w("Host", "https://i.ibb.co/QpDgysb/computer-1865273-1.png", C.host, !0), w('<span style="font-size: 18px">Pirate\'s Voyage</span>', "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAzMDAgMzAwIiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iIHN0eWxlPSJmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MjsiPjxnIGlkPSJCb2F0Ij48cGF0aCBkPSJNMTcwLjQsNTYuMDU0Yy02OC43ODgsMTAuMTc0IC0xMTUuOTcxLDU2LjkzOCAtMTQ1LjQxMSwxMzMuNzVsMTUuNDY5LDcuNzM0YzMwLjk2MiwtMjguMTc1IDc0LjcwNSwtMzcuNzg3IDEzMi4zMjIsLTI3LjI1bDAsLTE3LjYxMWMtMjUuNjI5LC0yNy45NTIgLTI2Ljk2NiwtNTYuNzcyIDAuNzE0LC04Ni42MjhsLTMuMDk0LC05Ljk5NVoiIHN0eWxlPSJmaWxsOiNmNmUwYmQ7Ii8+PHBhdGggZD0iTTE5OS42NzMsNjAuODEzYzMyLjc4NCw0Mi45ODIgNjUuODIyLDkwLjg4NyA5Ny4zMzcsMTM5LjU4MWwtNi42NjMsMGMtMTIuMDg1LC0zMS4xMTEgLTU3Ljg4MiwtMzkuNjk0IC05MS42MjYsLTI3LjI1YzIyLjUxNCwtMzQuNTc5IDE3Ljc5NiwtNzIuNjczIDAuOTUyLC0xMTIuMzMxWiIgc3R5bGU9ImZpbGw6I2Y2ZTBiZDsiLz48cGF0aCBkPSJNNjkuNDQ4LDE5Ny41MzhjMCwwIC01OS43MDcsLTE1LjI0MyAtNjguMzk4LC0xNy40NjJjLTAuMDc2LC0wLjAxOSAtMC4xNTQsMC4wMiAtMC4xODQsMC4wOTJjLTAuMDMsMC4wNzIgLTAuMDAyLDAuMTU1IDAuMDY1LDAuMTk1YzkuNjgyLDUuNzc1IDkxLjY0Nyw1NC42NTggOTEuNjQ3LDU0LjY1OGwtMjMuMTMsLTM3LjQ4M1oiIHN0eWxlPSJmaWxsOiM4ZDZlNDE7Ii8+PHBhdGggZD0iTTE2NC40NSw0Ny45MDNjMCwtNS4zNTMgNC4zNDYsLTkuNjk4IDkuNjk4LC05LjY5OGwxOS4zOTcsLTBjNS4zNTIsLTAgOS42OTgsNC4zNDUgOS42OTgsOS42OThsLTAsMTU2Ljk1M2MtMCw1LjM1MyAtNC4zNDYsOS42OTggLTkuNjk4LDkuNjk4bC0xOS4zOTcsMGMtNS4zNTIsMCAtOS42OTgsLTQuMzQ1IC05LjY5OCwtOS42OThsMCwtMTU2Ljk1M1oiIHN0eWxlPSJmaWxsOiM3ZjY4NDU7Ii8+PHBhdGggZD0iTTI2My45OTMsMjU2LjEwM2MyMi4xNzEsLTE0LjcxIDM2LjAwNywtMzUuNTE1IDM2LjAwNywtNTguNTY1bC0yMzAuNTUyLDBjMCwyMy43MTMgMTQuNjQzLDQ1LjA1IDM3Ljk0LDU5LjgxOWM5Ljg3NSwtMy43MjkgMjAuMDQxLC0xMS4zMzQgMzAuNDYzLC0yMi4zMzZjMzIuODExLDM1LjQ1NSA2NC4wNjksMzUuOTQzIDkzLjcwOCwwYzYuODM4LDkuNjc3IDE3LjczNiwxNi42NDYgMzIuNDM0LDIxLjA4MloiIHN0eWxlPSJmaWxsOiNiNjkyNWY7Ii8+PC9nPjwvc3ZnPg==", C.voyage), w("Gold quest", "https://media.blooket.com/image/upload/v1661496292/Media/uiTest/Gold.svg", C.gold), w("Cafe", "https://i.ibb.co/t8pqdYL/hot-beverage-1.png", C.cafe), w("Crypto Hack", "https://media.blooket.com/image/upload/v1661496293/Media/uiTest/CryptoIcon.svg", C.crypto), w('<span style="font-size: 17px">Deceptive Dinos</span>', "https://i.ibb.co/JFq5j88/Screenshot-2024-03-26-7-30-21-PM-removebg-preview-1.png", C.dinos), w('<span style="font-size: 18px">Tower Defense</span>', ['<img style="width: 30px; margin-right: 5px" src="https://media.blooket.com/image/upload/v1657235025/Media/survivor/Laser_Lvl1.svg">'], C.defense), w('<span style="font-size: 16px">Tower Defense 2</span>', ['<img style="width: 30px; margin-right: 5px; rotate: 45deg" src="https://media.blooket.com/image/upload/v1593095354/Media/defense/missile.svg">'], C.defense2), w("Factory", "https://i.ibb.co/VMrTd39/images-removebg-preview-1.png", C.factory), w('<span style="font-size: 19px">Fishing Frenzy</span>', "https://media.blooket.com/image/upload/v1661496295/Media/uiTest/Fish_Weight.svg", C.fishing), w("Flappy Blook", "https://media.blooket.com/image/upload/v1645222006/Blooks/yellowBird.svg", C.flappy), w('<span style="font-size: 17px">Tower of Doom</span>', ['<img style="height: 30px; margin-left: 5px; margin-right: 10px" src="https://media.blooket.com/image/upload/v1657235023/Media/survivor/cards-05.svg">'], C.doom), w('<span style="font-size: 18px">Crazy Kingdom</span>', "https://i.ibb.co/10mZ6dx/3763864-1.png", C.kingdom), w("Racing", "https://media.blooket.com/image/upload/v1661496295/Media/uiTest/Racing_Progress.svg", C.racing), w("Battle Royale", "https://media.blooket.com/image/upload/v1655936179/Media/br/VS_Lightning_Bolt_Bottom.svg", C.royale), w("Blook Rush", "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAADdgAAA3YBfdWCzAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAA7YSURBVHic7Z17tFxVfcc/e59zZib3kcfN456YQObOTB43PBIKoeIqSlwIBXwiCCytXe2qxabSWrAqLKmwXKthVRe2BFxitYpasSIPV0sI8mhV5GHVdpWaoCRIvAnZSW/uzeuG3Nec/jFzk8mYOXNm73PmeT7/zt6/s+/d399vv/cWnufRSSilZgEXAZcBl42MHF5m23KrlPJBKcU9mUx6pLElrC+iEwSglFpOscIpVH5q5rfh4YPH0wkBlmUNW5b8oZTyi9ls+ol6l7XetKUAyrz8ciBbKW2pAMqRUk62e3RoGwH4ebkffgIopV2jQ8sKoOjl6zlR6RW93I+gAiinGB22SSkfklJsatXo0FICUEqt4ESFv4WAXu6HrgBKKYkOPypGh+8bG60TTS0ApVQXJ3t5JuxvhCGAcorR4aVidLg7k0kPh/6RkGg6AUTh5X5EIYBSmj06NFwA9fByP6IWQDnNFh0aIgCl1EpO9vJk3QtRpN4CKKUYHfYXo8O92Wx6S93LUA8BFL38rZyo9IHIPxqQRgqgHCnlVEl02FSP6BCZAIpefjmFCn8zDfRyP5pJAKWURIdnin2HSKJDaAJQSnVzclveNF7uR7MKoJyy6HBPJpPeF4ZdIwEopVZxosKb1sv9aBUBlFIWHb6UzaY3a9uqRQBFLy9ty9O6H24WWlEA5RSjwy+llA8X+w6Bo0NVASilBjlR4RfSgl5+KiY9eP6g4IWhad7Xf4Qu2VzzIboUo8NISXR41De9nwCUUpcAj4ddyEaxaxyeHhU8PQLPHBSMTQP7FoHwWDBrnPPnjXFd/yHW9kw0uqihkUolbsnlBjZW+t2ukl+GXJ66MunBcwcFT48WKv7loxUSeoLhoyk2H02xefd8HHuK5b2v8/sLj3DNosOtHh0svx+rCaDlKPXyHx0UHJ2u3cbklM3W0V62jvZy58tu20YHaAMBTOTh+UMBvFwXn+hw9cLD9FgtHR1aUwBDx4pePlpoy3W8XJfy6DD/eHQ4zDk94/UrSEi0hAAm8vDcjJePCLa/3ugSFfEE+4+meOxoisd2z8dxCtHhkvmFvkMrRIemFcBvSrz8x3X2cl0mJ222jvSydaSXv9/uMr9rnHVzxri2/zDn9jZndGgaATStl+viCfaPpdgylmLLa80bHRoqgFIvf+aA4PV8I0sTLc0aHeoqgBkvf2qkUPE7Wt3LdSmPDvYUudmF6HBtnaND5ALYWdqWt7mX6zI5ZbNtpJdtI738w3aXvlnjrJtXiA7nRTyyiEwAvxiDP31J8kqnerkunmDkaIrHj6Z4vDjvsHHVHi7tC3uCo0BkU737JkRc+SEwOWXz6rgTmf2WnuuPMScWQIcTC6DDiQXQ4cQC6HBiAXQ4sQA6nFgAHU4sgA4nFkCHEwugw4kF0OHEAuhwYgF0OLEAOpxqAtDei2sL3Zwx5SQx2kY16fdjNQFob+mYazfHrtd2YFFCf0+8EOKw3+/VBKC9D2lu02w4b30WJ40ORRzw+zG6CBDdLqaO4w3JKZPsvjdgRBYBeq24HxAKAvodowhgJACjbZ1z4mbAGCHM9tELge8l1pEKIO4HmGNL44MUo34/VhPAEUD7RoR5sQCMSVjGAtjr96OvAFzX9YBdul+e68RDQVOSBgKQUk5mMmlfA0FmAod0CxA3AeZ02SYCEGNV0wSwoy2ABfFQ0Jg5tv4QUAjh2/5DxAI4o1s3Z8wMqw0OhwohVLU0kQpgTU/cBzDlonn6AzEhxM5qaYIIoKqRSmS7oMf3lroYP4TweNNsEwHwUrU0QQTwM90CSOCsHt3cMT3JSaPZVCnFg1XTVEvguu5e4BXdQsTNgD6ndx3TzlscAv5v1XQB7T2rW5A1cQTQZk2vvgAsSwaav4leAL1xBNBl/Tz9W0GklC8EShfQ3nO6BUmnYHY8IVQzQnqcP1t/CCileCRQuoD2XqSwLlAzgrgfoENvckJ7w6YQwhOCh4OkDfQN13WngUAh5VSc26ubs3PJdRu1/6OZTDrQIl4tItPuB7xzQRwBauUPFus/ZWNZ8hdB09ZFAIPdsKpLN3fnkXCmuNhsBjDw87S1COB5QNuVr1wUR4GgrOvT6m4dR0rxjcBpgyZ0XfcAsE2rRMB7FnrEWwSD8eElVRfxKmJZcjyTSQeevq+1o6ndDCxNwrrZurk7h57khNGzNJYlX60lfa0C+GGN6U/iyoVxM1CNCxf4nuOoipTyP2pKX6P9h4Gqu0wq8Y4FXrxV3A8BG5b6nuPwzy4EUopP15KnJgG4rnsEeKCmUpXQ58BF8+IoUIm+WcdIGxwCsW1reyaT9t0EWo7OZNNXNfIc5z0LTXK3N5cuNAv/ti3vqjWP1uPRSqmXgVzNGSk8GvHGn0n2NMsTOvsWNboEAFjWNM+8cYf2YxFSysnVq5cnas6n9TX4mmY+EhI+elrcDJRzqXvA6KUQx7F+oJNPVwD3gf6h9ev6PZa2xRPU4WBZ09w+sN/IhpTyFq18Oplc190FPKGTF8ARcRQo5YrFB0gZvE9s29ZwNpv+T528JlfE/JNBXq7p91iWMrHQHtjWNJ9Om3m/bVvf1M1rIoDvgf/JUz9sATeeHkeBdy0ZIWHg/UIIr9axfynaAnBddxz4lm5+gPcu9MjMMrHQ2jj2FJ9Ka/tQwYZjvZjJpA/p5je9JcyoGbAE3NTBUeDKJaPGz7ZZlnWHSX6teYBSlFI/B87RzZ8H1v9c8qtoXkWrToPmARL2FC9csMNoatyy5OuDg8uNdlqEcU/graYF+Gwu33EXFv51bq/xuojj2H9nWg7j/7vruo8CT5rYOH82/NnSzmkKzpp/iGsXmW36sG1rJJcbuM20LGE53k0YTAwBfGKZx+oOOE2cdCb58mDVQ7tVcRz7+hCKE44AXNf9Hww7hI6ATSvyOG29XOyxcdUeugyGfQCJhP3LbDb93TBKFGbT+ynAaDlrdTd8fFn7NgW/13+Atxls9oTCuN+2ratCKlJ4AigeIjUakgBsWOq15dax7tQEm1bsM7aTSNhPBjn0GZSwO993Ar8xMSApNAXd7XSvgPC4e/Vrxr1+KeWUZcn3hVOoos0wjbmuewz4pKmdZSm4baB9moK3LxnhPIOrXmZIJOwvZjJp/T1jpyCK4fe3MThGNsMHXI9r+ltfBKfPHmNjZtjYjm1bR6QUfxlCkU4idAEU7xa8MQxbn8t5XNzXuiLo6zrGw2fvDsWW49gfq3bnnw6RTMC5rvss8B1TO7aAL63yOK8FD5d2Jyf43toho5W+GRzHHspm0/eGUKzfIsoZ2I9S5ZrSIMyS8I0z8qxoobOFCXuKB9YOMdfgkscZpBR527beGUKxTm0/KsOu6+4BrsPg2ZkZ5trw7TPyvKEFtpFZ1jT3rRniNLM7/o+TTDofy2bT/x2KsVMQ6RqM67r/juFi0QyLkwURNPP1s0LkuevM3ZzZrX+0q5Rk0vl+Njvw+VCMVaAei3B3AP8WhqHlXYXmYFYzLh0Kj79ZtYc3zzGb6ZvBcay9liUvC8WYD5H/K4ujgg8Cr4Zh77xe+PKgR6qZRCA8PpLby1ULzVb4ZpBSTjmOfUEUvf7f+lbUHwBwXXcUuBoI5TjIW+d5PHJ2nv6aj0GEj5R5/nb1Lq43uNGjFCEgmXT+OJNJ/zoUg1Womx+5rvtTCiODUFjTA4+tyTf0QupUYpJ/Pmcn75gf3namRCJxfzabDnzBgynGW8JqRSn1TeD9Ydk7Og1//ivBlv2aE+2aW8IWdB/jwbN30Wf2oNNJOI796sqV2YHQDAagES3p9UDgS4yq0WXBVwY9NtRxR9FZ8w/xxO/sDLXyLUuOO471u6EZDEjdBeC67hhwFZr3Dp4KCdya9rhzuRf5hpJ3nzbMt87YE+o9B0IIL5Fwrsxk0ubrxTXSkL6067ovAR+gyru2tXJdv8e/nJmP5LEqIfN8cuVrfMbwDN+pSCadO7LZ9ObQDQeg7n2AUpRS76KwZhBqf373OHxiu+Cp0QBuGqAP0Nd1jLsG97AmpAmeUlKpxMZcbkDrYGcYNFQAAEqpy4GHgNAneh/5P8GtrwiG/eKMjwCkzHPtacPcvEz/1q5KFIZ7idtyuYHbQzdeSzkaLQAApdQlwCNA6AfFDk7B7b8W3L+3QjSoIIBls8e4d1CxJKQ5/VKEECSTzi253MDG0I3XWpZmEACAUmo98K9AJCP7Hx8UfHy74JXymdoyAdj2NH+V3csH+82ua6mEEIJUyrkx6jn+oDSNAACUUhcCm4FInpkYz8PnhwRf2CWYnPmzSwSwdsEhvrByL73mr3WeEiGEl0o5N2SzA/dE8gENmkoAAEqpC4AtQGR7g7eNwc07JC8cAvYtoic5wWdWKKP7eatRqPzE9dls+h8j+4gGTScAAKXUOuBxYF6U33lyRPDskMeGJeHM41eiWPl/lM2m74v0Qxo0pQAAlFLnULiGZn6U3xkerkvlvz+bTd8f6Yc0aaZF1ZNwXfe/gPVAXVbFokBKOZVKJa5q1sqHJhYAgOu6LwJrgab9B1bCceydqZSTzmbTDzW6LH40bRNQjlLqD4G7CXmEEHYTIITwkknnK7ncwIdCNRwRTR0BSnFd9z4KN5H8tNFlqYRlWWOpVOJtrVL50EICAHBddzvwJuCzGLxeEgWJhPOTZNJelM2mn2p0WWqhZZqAcpRSFwNfBxab2DFtAqQU+UTCuTmXGzC+rqURtKwAAJRSCyncXn6Frg0TATiOtc9x7LdkMumqr3Q3Ky0tgBmUUjdQaBZqXlHUEYAQkEg4312+PHN1zZmbjJbqA1TCdd1NwLkY3F8cFNu29qdSyXe3Q+VDm0SAUpRSVwCfA1YFSR80AliWnHAce2MYN3M1E20RAUopXlt3FnADYLx/qziufyCZdOa0W+VDG0aAUpRSc4GbgQ1UmECqFAGEEJ7j2D+xbXlNLe/wtRptLYAZlFJ9FCLCXwB9pb+VC6CwQ9f+gWXJP8lk0jvqV8rG0BECmEEp1UPhXMJNFOcPZgQgpcg7jv2oZckP1fryVivTUQKYQSmVpHBg9cOjo4dXOY79oJTiIybXrrcq/w99zo6mO4xCQAAAAABJRU5ErkJggg==", C.rush), w('<span style="font-size: 18px">Monster Brawl</span>', ['<img style="height: 28px; margin-left: 5px; margin-right: 8px" src="https://media.blooket.com/image/upload/v1655233787/Media/survivor/xp/Blue_xp_2.svg">'], C.brawl), w('<span style="font-size: 15px">Santa\'s Workshop</span>', "https://i.ibb.co/Y2SFc9Y/Santa-Workshop-Finished-icon-1.webp", C.workshop), w("Extras", "https://i.ibb.co/mb0R9HX/Star-icon-stylized-svg-1-removebg-preview.png", C.extras, !0), w("Settings", "https://i.ibb.co/jrWKgyn/Windows-Settings-icon-1.png", C.settings, !0), S(m, _), S(g, _), window.addEventListener("keydown", A);
6679     let x = setInterval(() => {
6680         C.alerts[0].connection ? clearInterval(x) : C.alerts[0].connect()
6681     }, 5e3);
6683     function D() {
6684         for (let e in _.remove(), clearInterval(x), C)
6685             for (let t of C[e]) t.enabled && t.run();
6686         Object.keys(C).forEach(e => C[e].forEach(e => e.enabled && (e.run(), k(...currentMode)))), window.removeEventListener("keydown", A)
6687     }
6689     function A(e) {
6690         var t = c.data.hide || {
6691                 ctrl: !0,
6692                 key: "e"
6693             },
6694             a = c.data.close || {
6695                 ctrl: !0,
6696                 key: "x"
6697             };
6698         (t.ctrl && e.ctrlKey || !t.ctrl && !e.ctrlKey) && (t.shift && e.shiftKey || !t.shift && !e.shiftKey) && (t.alt && e.altKey || !t.alt && !e.altKey) && e.key.toLowerCase() == t.key ? (e.preventDefault(), _.style.display = "block" === _.style.display ? "none" : "block") : (a.ctrl && e.ctrlKey || !a.ctrl && !e.ctrlKey) && (a.shift && e.shiftKey || !a.shift && !e.shiftKey) && (a.alt && e.altKey || !a.alt && !e.altKey) && e.key.toLowerCase() == a.key && (e.preventDefault(), D())
6699     }
6701     function B(e, t = window) {
6702         return new Promise(a => {
6703             let o = {},
6704                 r, i, n, s, l = t => {
6705                     t.preventDefault(), o[t.code] = !0, r ||= t.shiftKey, i ||= t.ctrlKey, n ||= t.altKey, ["shift", "control", "alt", "meta"].includes(t.key.toLowerCase()) || (s = t.key.toLowerCase()), e?.({
6706                         shift: r,
6707                         ctrl: i,
6708                         alt: n,
6709                         key: s
6710                     })
6711                 },
6712                 c = e => {
6713                     delete o[e.code], 0 < Object.keys(o).length || (t.removeEventListener("keydown", l), t.removeEventListener("keyup", c), a({
6714                         shift: r,
6715                         ctrl: i,
6716                         alt: n,
6717                         key: s
6718                     }))
6719                 };
6720             t.addEventListener("keydown", l), t.addEventListener("keyup", c)
6721         })
6722     };
6723     _.addEventListener("mousemove", e => {
6724         var t, a;
6725         "cheatName" != e.target.className && "scriptButton" != e.target.className ? "0" != y.style.opacity && (y.animate([{
6726             opacity: .9
6727         }, {
6728             opacity: 0
6729         }], {
6730             duration: 200
6731         }), y.style.opacity = "0") : (e = "scriptButton" == e.target.className ? e.target : e.target.parentElement, y.innerText == e.dataset.description && "0.9" == y.style.opacity || (t = e.getBoundingClientRect(), a = e.offsetParent.getBoundingClientRect(), y.innerText = e.dataset.description, "0" == y.style.opacity && (y.animate([{
6732             opacity: 0
6733         }, {
6734             opacity: .9
6735         }], {
6736             duration: 200
6737         }), y.style.opacity = "0.9"), y.style.left = t.x - a.x + (t.width - y.clientWidth) / 2 + "px", y.style.top = t.y - a.y + t.height + "px"))
6738     }), window.fetch.call = function() {
6739         if (!arguments[1].includes("s.blooket.com/rc")) return wfcall.apply(this, arguments);
6740         C.alerts?.[0].addLog("Blooket Cheat Report Blocked!")
6741     }
6742 })();