From d89e7ed83e5ee1b9bfc3d546131e4aae1b31209f Mon Sep 17 00:00:00 2001 From: Mustan Pathetic Date: Mon, 31 Jan 2022 02:04:24 -0500 Subject: [PATCH 01/13] night two of moving PHEx to mv3 --- PHEx/package.json | 2 +- PHEx/src/background.js | 14 ----------- PHEx/src/manifest.json | 36 ++++++++++++++--------------- PHEx/src/rulesets/no_csp_rules.json | 14 +++++++++++ 4 files changed, 33 insertions(+), 33 deletions(-) create mode 100644 PHEx/src/rulesets/no_csp_rules.json diff --git a/PHEx/package.json b/PHEx/package.json index d03c1363..9eace577 100644 --- a/PHEx/package.json +++ b/PHEx/package.json @@ -8,7 +8,7 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/UntrustableRus/PMGH-ext.git" + "url": "https://github.com/Prodigy-Hacking/ProdigyMathGameHacking" }, "keywords": [], "author": "", diff --git a/PHEx/src/background.js b/PHEx/src/background.js index bd23b3ae..8ee86412 100644 --- a/PHEx/src/background.js +++ b/PHEx/src/background.js @@ -1,19 +1,5 @@ const browser = chrome || browser; -// Ignore X-Frame Headers -const HEADERS_TO_STRIP_LOWERCASE = [ - "content-security-policy", - "x-frame-options", -]; - -browser.webRequest.onHeadersReceived.addListener( - details => ({ - responseHeaders: details.responseHeaders.filter(header => !HEADERS_TO_STRIP_LOWERCASE.includes(header.name.toLowerCase())) - }), - { urls: [""] }, - ["blocking", "responseHeaders", "extraHeaders"] -); - function get(key) { return new Promise(resolve => { browser.storage.local.get([key], result => { diff --git a/PHEx/src/manifest.json b/PHEx/src/manifest.json index 57a7d5d2..643a6fa6 100644 --- a/PHEx/src/manifest.json +++ b/PHEx/src/manifest.json @@ -2,28 +2,28 @@ "name": "Prodigy Hacking Extension (PHEx)", "version": "2.1.8", "description": "PHEx is an extension made to raise awareness of security issues for Prodigy", - "permissions": [ - "webRequest", - "webRequestBlocking", + + "permissions": ["declarativeNetRequest", "storage"], + "declarative_net_request": { + "rule_resources": [{ + "id": "core_ruleset", + "enabled": true, + "path": "rulesets/no_csp_rules.json" + }] + }, + "host_permissions": [ "*://*.prodigygame.com/*", - "https://raw.githubusercontent.com/*", - "storage" + "https://raw.githubusercontent.com/*" ], - "icons": { - "16": "assets/x16.png", - "48": "assets/x48.png", - "128": "assets/x128.png" - }, - "background": { - "scripts": ["background.js"], - "persistent": true - }, + + "background": { "service_worker": "background.js" }, "content_scripts": [{ "matches": ["https://math.prodigygame.com/*"], "js": ["disableIntegrity.js"] }], - "browser_action": { - "default_popup": "popup.html" - }, - "manifest_version": 2 + + "action": { "default_popup": "popup.html" }, + "icons": { "16": "assets/x16.png", "48": "assets/x48.png", "128": "assets/x128.png" }, + + "manifest_version": 3 } diff --git a/PHEx/src/rulesets/no_csp_rules.json b/PHEx/src/rulesets/no_csp_rules.json new file mode 100644 index 00000000..bcb654d5 --- /dev/null +++ b/PHEx/src/rulesets/no_csp_rules.json @@ -0,0 +1,14 @@ +[ + { + "id": 10, + "priority": 2, + "action": { + "type": "modifyHeaders", + "responseHeaders": [ + { "header": "content-security-policy", "operation": "remove" }, + { "header": "x-frame-options", "operation": "remove" } + ] + }, + "condition": { "urlFilter": "*://*.prodigygame.com/*", "resourceTypes": ["main_frame"] } + } +] \ No newline at end of file From ca9539e9762ce6acf3c4485acb051dfe327cc9da Mon Sep 17 00:00:00 2001 From: Mustan Pathetic Date: Mon, 31 Jan 2022 02:25:18 -0500 Subject: [PATCH 02/13] part three of updating to mv3 no errors edition --- .gitignore | 5 +- PHEx/src/background.js | 56 --------------------- PHEx/src/manifest.json | 18 ++++--- PHEx/src/rulesets/block_js_files_rules.json | 14 ++++++ PHEx/src/rulesets/no_csp_rules.json | 4 +- 5 files changed, 31 insertions(+), 66 deletions(-) delete mode 100644 PHEx/src/background.js create mode 100644 PHEx/src/rulesets/block_js_files_rules.json diff --git a/.gitignore b/.gitignore index d12fc1c8..baefd1a9 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,7 @@ node_modules/ PHEx/src/web-ext-artifacts/prodigy_hacking_extension_phex_-2.0.1.zip # macOS -**/.DS_Store \ No newline at end of file +**/.DS_Store + +# PHEx metadata folder??? +PHEx/src/_metadata \ No newline at end of file diff --git a/PHEx/src/background.js b/PHEx/src/background.js deleted file mode 100644 index 8ee86412..00000000 --- a/PHEx/src/background.js +++ /dev/null @@ -1,56 +0,0 @@ -const browser = chrome || browser; - -function get(key) { - return new Promise(resolve => { - browser.storage.local.get([key], result => { - resolve(result[key]); - }); - }); -}; - -// Redirect Requests -browser.webRequest.onBeforeRequest.addListener(async details => { - // get options from local - const url = await get("url"); - const checked = await get("checked"); - const redirectorDomain = (url && checked) ? url : "https://hacks.prodigyhacking.com"; - - if (details.url.startsWith("https://code.prodigygame.com/code/") && details.url.includes("/game.min.js")) { - fetch("https://raw.githubusercontent.com/Prodigy-Hacking/ProdigyMathGameHacking/master/PHEx/status.json").then(response => response.json()).then(async data => { - if (data.offline == true) { - eval(await (await fetch("https://unpkg.com/sweetalert2")).text()) - if (swal) { - swal.fire({ - title: "Oh no!", - html: `Our hacks are currently having some issues, and we're working on it.`, - icon: "error" - }) - } else { - const res = confirm(`Uh Oh! Hacks look to be down. Hit OK to go to our discord to get updates on when they'll go back up!`); - - if (res) location = "https://discord.gg/XQDfbfq"; - } - } - }); - - // Blocking gamemin - browser.webRequest.onBeforeRequest.addListener( - _ => ({ cancel: true }), - { urls: ["*://code.prodigygame.com/code/*"] }, - ["blocking"] - ); - - // see disableIntegrity.js, we append the new game.min to the document - return { cancel: true }; - } else if (details.url.startsWith("https://code.prodigygame.com/js/public-game")) { - return { - redirectUrl: `${redirectorDomain}/public-game.min.js?hash=${details.url.split("public-game-")[1].split(".")[0]}&updated=${Date.now()}` - }; - } -}, { - urls: [ - "https://code.prodigygame.com/code/*/game.min.js?v=*", - "https://code.prodigygame.com/js/public-game-*.min.js" - ], - types: ["script", "xmlhttprequest"], -}, ["blocking"]); \ No newline at end of file diff --git a/PHEx/src/manifest.json b/PHEx/src/manifest.json index 643a6fa6..f5fc0e37 100644 --- a/PHEx/src/manifest.json +++ b/PHEx/src/manifest.json @@ -5,18 +5,22 @@ "permissions": ["declarativeNetRequest", "storage"], "declarative_net_request": { - "rule_resources": [{ - "id": "core_ruleset", - "enabled": true, - "path": "rulesets/no_csp_rules.json" - }] + "rule_resources": [ + { + "id": "anti_csp", + "enabled": true, + "path": "rulesets/no_csp_rules.json" + }, { + "id": "block_js", + "enabled": true, + "path": "rulesets/block_js_files_rules.json" + } + ] }, "host_permissions": [ "*://*.prodigygame.com/*", "https://raw.githubusercontent.com/*" ], - - "background": { "service_worker": "background.js" }, "content_scripts": [{ "matches": ["https://math.prodigygame.com/*"], "js": ["disableIntegrity.js"] diff --git a/PHEx/src/rulesets/block_js_files_rules.json b/PHEx/src/rulesets/block_js_files_rules.json new file mode 100644 index 00000000..e310e0be --- /dev/null +++ b/PHEx/src/rulesets/block_js_files_rules.json @@ -0,0 +1,14 @@ +[ + { + "id": 1, + "priority": 1, + "action": { "type": "block" }, + "condition": { "urlFilter": "https://code.prodigygame.com/code/*/game.min.js?v=*" } + }, + { + "id": 2, + "priority": 1, + "action": { "type": "block" }, + "condition": { "urlFilter": "https://code.prodigygame.com/js/public-game-*.min.js" } + } +] \ No newline at end of file diff --git a/PHEx/src/rulesets/no_csp_rules.json b/PHEx/src/rulesets/no_csp_rules.json index bcb654d5..edd6773f 100644 --- a/PHEx/src/rulesets/no_csp_rules.json +++ b/PHEx/src/rulesets/no_csp_rules.json @@ -1,7 +1,7 @@ [ { - "id": 10, - "priority": 2, + "id": 1, + "priority": 1, "action": { "type": "modifyHeaders", "responseHeaders": [ From bf3a1cf3c0d804d496816459fb004469bf9bef0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Badeaux?= Date: Tue, 1 Feb 2022 14:00:03 -0500 Subject: [PATCH 03/13] Add status message file (see description) Later I will make it so that the status message will appear on the cheat menu. --- willsCheatMenu/statusmessage.json | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 willsCheatMenu/statusmessage.json diff --git a/willsCheatMenu/statusmessage.json b/willsCheatMenu/statusmessage.json new file mode 100644 index 00000000..d4ebd42c --- /dev/null +++ b/willsCheatMenu/statusmessage.json @@ -0,0 +1,4 @@ +{ + "enabled": true, + "message": "We are aware some hacks do not function in general, and most hacks don't work on Harmony Island." +} From 9d210806df495ab9275c4d9c014fc894daff165d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Badeaux?= Date: Tue, 1 Feb 2022 14:17:41 -0500 Subject: [PATCH 04/13] This looks janky, this is only for notices. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 96b52baf..1d87d584 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -

ProdigyMathGameHacking

+

Date: Tue, 1 Feb 2022 14:43:23 -0500 Subject: [PATCH 05/13] Upload Simple Logo --- .github/plainlogo.png | Bin 0 -> 9202 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .github/plainlogo.png diff --git a/.github/plainlogo.png b/.github/plainlogo.png new file mode 100644 index 0000000000000000000000000000000000000000..9688f5f219029f80bc9c2baf41d8d90e4bea89ba GIT binary patch literal 9202 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

r71bH>^-lwn{E$R$=#`rR@lfhy zywT-TI(|*ix7&mR7GRV65U2?yv8bXy-7poTdAWcjVl2Oc4dXbe%sjw0`@Hez&@G%A z5+8dyzcgH716(BN7q5mu;I@Qm{hLQ*yNeS=JOBiSKtbC`*AHs)*_s-z5`o9rFRwS| z*v6%DGMDA#B{Q#oV`1Uu{CgJwK+Bh`QAu5ZRdVGn>uT?j-(5`DH3wP;ZcQzu4EO@x z;wEANT-7XBxN?i9nfRhqvFJt3@Y^b8ObFm>ZAGlbud!P*&L`OW4~BipsXPa1J~%2E`nErR?()RlVRJTdvj-PczjF^z;4!E(5cJ1ni@9<$hM<#ZXUnKwf!BHpP$^ zeg5db42CzcI=(4n3R5A)o8!z$M%$-sdJOuAyA>khIFpC3v|^GwaYymCtYcm8gHpnS z^fA1=EiaT4hDJvIxSwoMD5*)U7mzOqb5KPF$#US0gSL%ckts^>?QJyp454Oa9DGYSpPrI d{=CCgvfdnRZ~I&byu^d0s;K$AO#V&C{{YX8YyJQL literal 0 HcmV?d00001 From 4effb57b318f201ae0fb2a1d273f54c6022d5bff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Badeaux?= Date: Tue, 1 Feb 2022 14:44:31 -0500 Subject: [PATCH 06/13] Change README logo to Plain Logo if we don't like it we can change it? but I like it. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1d87d584..69a3538f 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@

Installation + src="https://github.com/Prodigy-Hacking/ProdigyMathGameHacking/blob/master/.github/plainlogo.png?raw=true">

From 6ec0b3367a52d53aad3dbe9616236df332080663 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9o=20Badeaux?= Date: Tue, 1 Feb 2022 14:49:01 -0500 Subject: [PATCH 07/13] Cleaning up Shields section, it's gotten a bit janky --- README.md | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/README.md b/README.md index 69a3538f..1f6a658f 100644 --- a/README.md +++ b/README.md @@ -35,26 +35,10 @@ Extension Downloads - - Website Status - - - - Issues - - - - - - - - - - From e667b67222da8df9487c50278d70ce45cc697b4e Mon Sep 17 00:00:00 2001 From: UntrustableRus <79180322+LeoBadeaux@users.noreply.github.com> Date: Tue, 1 Feb 2022 16:07:24 -0500 Subject: [PATCH 08/13] Fix #1309: Show/hide cheat dropdown --- willsCheatMenu/dist/bundle.js | 2 +- willsCheatMenu/src/index.ts | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/willsCheatMenu/dist/bundle.js b/willsCheatMenu/dist/bundle.js index 8eff18cc..ea812b6b 100644 --- a/willsCheatMenu/dist/bundle.js +++ b/willsCheatMenu/dist/bundle.js @@ -1 +1 @@ -(()=>{var __webpack_modules__={8844:(e,t,n)=>{var o,a;function r(e,t,n,o,a,r,s){try{var i=e[r](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(o,a)}function s(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var s=e.apply(t,n);function i(e){r(s,o,a,i,c,"next",e)}function c(e){r(s,o,a,i,c,"throw",e)}i(void 0)}))}}o=[n,t,n(4759),n(9820),n(2852)],void 0===(a=function(e,t,n,o,a){"use strict";new o.Toggler(o.category.battle,"Disable math").setEnabled(s((function*(){a._.constants.constants["GameConstants.Debug.EDUCATION_ENABLED"]=!1}))).setDisabled(s((function*(){a._.constants.constants["GameConstants.Debug.EDUCATION_ENABLED"]=!0}))),new o.Hack(o.category.battle,"Escape Battle","Escape any battle!").setClick(s((function*(){var e=a.game.state.current;"PVP"===e?Object.fromEntries(a._.instance.game.state.states).PVP.endPVP():"CoOp"===e?a.prodigy.world.$(a._.player.data.zone):["Battle","SecureBattle"].includes(e)?(Object.fromEntries(a._.instance.game.state.states)[e].runAwayCallback(),n.Toast.fire("Escaped!","You have successfully escaped from the battle.","success")):n.Toast.fire("Invalid State.","You are currently not in a battle.","error")}))),new o.Hack(o.category.battle,"Win Battle","Instantly win a monster battle.").setClick(s((function*(){var e=a.game.state.current;if("PVP"===e||"CoOp"===e)return n.Toast.fire("Invalid State.","PVP is not supported for this hack.","error");"Battle"===e?(Object.fromEntries(a._.instance.game.state.states).Battle.startVictory(),n.Toast.fire("Victory!","You have successfully won the battle.","success")):"SecureBattle"===e?(Object.fromEntries(a._.instance.game.state.states).SecureBattle.battleVictory(),n.Toast.fire("Victory!","You have successfully won the battle.","success")):n.Toast.fire("Invalid State.","You are currently not in a battle.","error")}))),new o.Hack(o.category.battle,"Set Battle Hearts","Sets your hearts in battle. Automatically raises max hearts.").setClick(s((function*(){var e=yield n.NumberInput.fire("Health Amount","How much HP do you want?","question");void 0!==e.value&&(a._.player.getMaxHearts=()=>+e.value,a._.player.pvpHP=+e.value,a._.player.data.hp=+e.value,n.Toast.fire("Success!","Your hearts have been set.","success"))}))),new o.Hack(o.category.battle,"Fill Battle Energy","Fills up your battle energy.").setClick(s((function*(){var e=a.game.state.getCurrentState();if(!("teams"in e))return n.Toast.fire("Error","You are currently not in a battle.","error");e.teams[0].setEnergy(99),n.Toast.fire("Success!","Your battle energy has been filled.","success")}))),new o.Hack(o.category.battle,"Heal Team").setClick(s((function*(){var e=a.game.state.current;["Battle","SecureBattle"].includes(e)?(a._.player.heal(),n.Toast.fire("Success!","Your team has been healed successfully!","success")):n.Toast.fire("Invalid State.","Your are currently not in a battle.","error")})))}.apply(t,o))||(e.exports=a)},8130:(e,t,n)=>{var o,a;function r(e,t,n,o,a,r,s){try{var i=e[r](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(o,a)}function s(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var s=e.apply(t,n);function i(e){r(s,o,a,i,c,"next",e)}function c(e){r(s,o,a,i,c,"throw",e)}i(void 0)}))}}o=[n,t,n(9820),n(4759),n(2852)],void 0===(a=function(e,t,n,o,a){"use strict";var r=["Boots","Buddies","Fossils","Hats","Items","Key Items","Tower Town Frames","Tower Town Interiors","Mounts","Outfits","Relics","Weapons","Currencies"],i=["boots","follow","fossil","hat","item","key","mathTownFrame","mathTownInterior","mount","outfit","spellRelic","weapon","currency"],c=(e,t)=>e.map((e=>({ID:e.ID,N:t}))).filter((e=>void 0!==e));new n.Hack(n.category.inventory,"Item stacker").setClick(s((function*(){var e=yield o.NumberInput.fire("Amount","How many of every item would you like?","question");if(e.value&&(yield o.Confirm.fire("Are you sure you want to get all items in the game?")).value){i.forEach((t=>{a._.player.backpack.data[t]=c(a._.gameData[t].filter((e=>"follow"===t?![125,126,127,128,129,134,135,136,137].includes(e.ID):e)),e.value)})),a._.gameData.dorm.forEach((t=>a._.player.house.data.items[t.ID]={A:[],N:e.value}));for(var t=()=>a._.player.backpack.data.item.findIndex((e=>84===e.ID||85===e.ID||86===e.ID));t()>-1;)a._.player.backpack.data.item.splice(t(),1);o.Toast.fire("Success!","All items added!","success")}}))),new n.Hack(n.category.inventory,"Clear inventory").setClick(s((function*(){if((yield o.Confirm.fire("Are you sure you want to clear your inventory?")).value){for(d in a._.player.backpack.data)a._.player.backpack.data[d]=[{}];o.Toast.fire("Success!","Inventory cleared.","success")}}))),new n.Hack(n.category.inventory,"Selector (Basic)").setClick(s((function*(){yield o.Swal.fire({title:"What would you like to obtain?",input:"select",inputOptions:r,inputPlaceholder:"Select...",inputValidator:e=>e?"":"Please select which you'd like to obtain.",showCancelButton:!0}).then(function(){var e=s((function*(e){var t=parseInt(e.value),n=r[t],s=i[t];if(n){var l=yield o.NumberInput.fire("Amount","How many each object would you like?","question");l.value&&(yield o.Confirm.fire("Are you sure you want to get all ".concat(n.toLowerCase(),"?"))).value&&(a._.player.backpack.data[s]=c(a._.gameData[s].filter((e=>"follow"===s?![125,126,127,128,129,134,135,136,137].includes(e.ID):e)),l.value),o.Toast.fire("".concat(n," Added!"),"All ".concat(n.toLowerCase()," have been added to your inventory!"),"success"),a.saveCharacter())}}));return function(t){return e.apply(this,arguments)}}())}))),new n.Hack(n.category.inventory,"Selector (Advanced)","Choose a specific object and quantity to obtain.").setClick(s((function*(){yield o.Swal.fire({title:"What would you like to obtain?",input:"select",inputOptions:r,inputPlaceholder:"Select...",inputValidator:e=>e?"":"Please select which you'd like to obtain.",showCancelButton:!0}).then(function(){var e=s((function*(e){if(a._.gameData[i[e.value]]){var t=[];a._.gameData[i[e.value]].forEach((e=>{t.push(e.data.name)})),yield o.Swal.fire({title:"What specific object categorized as ".concat(r[e.value].toLowerCase()," would you like to get?"),input:"select",inputOptions:t,inputPlaceholder:"Select...",inputValidator:e=>e?"":"Please select which you'd like to get.",showCancelButton:!0}).then(function(){var t=s((function*(t){var n=parseInt(t.value);if(a._.gameData[i[e.value]][n]){var s=yield o.NumberInput.fire("Amount","How many of the object would you like?","question");s.value&&(-1===a._.player.backpack.data[i[e.value]].findIndex((t=>t.ID===a._.gameData[i[e.value]][n].ID))?a._.player.backpack.data[i[e.value]].push({ID:a._.gameData[i[e.value]][n].ID,N:s.value}):a._.player.backpack.data[i[e.value]].findIndex((t=>t.ID===a._.gameData[i[e.value]][n].ID)),o.Toast.fire("".concat(r[e.value]," Added!"),"Your selected ".concat(r[e.value].toLowerCase()," have been added."),"success"),a.saveCharacter())}}));return function(e){return t.apply(this,arguments)}}())}}));return function(t){return e.apply(this,arguments)}}())}))),new n.Hack(n.category.inventory,"Get all runes").setClick(s((function*(){if((yield o.Confirm.fire({title:"Hang on!",html:"This feature is in beta. Using this could break your account in a specific way. This should be used for experimentation only.

Proceed?",icon:"warning"})).value){var e,t=parseInt((yield o.NumberInput.fire({title:"Amount",text:"How many of each would you like?",icon:"question",inputValidator:e=>e?"":"Please select which you'd like to get."})).value);if(!isNaN(t))Array.from(a._.instance.prodigy.gameContainer._inversifyContainer._bindingDictionary._map).forEach((t=>{try{a._.instance.prodigy.gameContainer.get(t[0]).battleData&&(e=t[0])}catch(e){console.log("Error for ".concat(t[0]))}})),a._.instance.prodigy.gameContainer.get(e).battleData._secureCharacterState._data.inventory.orb=((e,t)=>e.map((e=>({ID:e.ID,quantity:t}))).filter((e=>void 0!==e)))(a._.gameData.orb,t),o.Toast.fire("Runes Added!","Your runes have been added!","success")}}))),new n.Hack(n.category.inventory,"Obtain All Furniture").setClick(s((function*(){var e=yield o.NumberInput.fire("Amount","How many of each piece of furniture would you like?","question");e.value&&(yield o.Confirm.fire("Are you sure you want to get all furniture?")).value&&(a._.gameData.dorm.forEach((t=>a._.player.house.data.items[t.ID]={A:[],N:e.value})),o.Toast.fire("Furniture Added!","All furniture has been added to your inventory!","success"))}))),new n.Hack(n.category.inventory,"Obtain All Mounts","This gives you the Fluffy Cloud and the Rainbow Cloud.").setClick(s((function*(){a._.player.backpack.data.mount=c(a._.gameData.mount,1),o.Toast.fire("Mounts Added!","All mounts have been added to your inventory!")}))),new n.Hack(n.category.inventory,"Remove item").setClick(s((function*(){var e=yield o.Swal.fire({title:"What category would you like to remove an item from?",input:"select",inputOptions:r,inputPlaceholder:"Select...",inputValidator:e=>e?"":"Please select which you'd like to obtain.",showCancelButton:!0});if(a._.gameData[i[e.value]]){var t=a._.gameData[i[e.value]].map((e=>e.data.name)),n=yield o.Swal.fire({title:"What specific object categorized as ".concat(r[e.value].toLowerCase()," would you like to remove?"),input:"select",inputOptions:t,inputPlaceholder:"Select...",inputValidator:e=>e?"":"Please select which you'd like to get.",showCancelButton:!0});if(n=parseInt(n.value),a._.gameData[i[e.value]][n]){var s=yield o.NumberInput.fire("Amount","How many of the object would you like to remove?","question");if(s.value)if(-1!==a._.player.backpack.data[i[e.value]].findIndex((t=>t.ID===a._.gameData[i[e.value]][n].ID))){var c=a._.player.backpack.data[i[e.value]].findIndex((t=>t.ID===a._.gameData[i[e.value]][n].ID));a._.player.backpack.data[i[e.value]][c].N-=parseInt(s.value),a._.player.backpack.data[i[e.value]][c].N<=0&&a._.player.backpack.data[i[e.value]].splice(c,1),o.Toast.fire("Removed!","Successfully removed ".concat(s.value," ").concat(a._.gameData[i[e.value]][n].name,"!"),"success"),a.saveCharacter()}else yield o.Swal.fire("Item Does Not Exist","You do not have any ".concat(a._.gameData[i[e.value]][n].name,"."),"error")}}})))}.apply(t,o))||(e.exports=a)},8346:(e,t,n)=>{var o,a;function r(e,t,n,o,a,r,s){try{var i=e[r](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(o,a)}function s(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var s=e.apply(t,n);function i(e){r(s,o,a,i,c,"next",e)}function c(e){r(s,o,a,i,c,"throw",e)}i(void 0)}))}}o=[n,t,n(9820),n(4759),n(2852)],void 0===(a=function(e,t,n,o,a){"use strict";new n.Hack(n.category.location,"Teleport To Map (interactive)").setClick(s((function*(){var e=o.Swal.mixin({focusConfirm:!1,showCancelButton:!0,preConfirm:()=>{var e;return null===(e=document.querySelector(".radioDiv[checked]"))||void 0===e?void 0:e.getAttribute("zone")}}),t=document.createElement("div");t.classList.add("radioContainer");var n=function(e){var n=document.createElement("DIV");n.classList.add("radioDiv"),n.setAttribute("zone",e);var o=a.locations[e];o?n.style.backgroundImage="url(".concat(o,")"):n.innerText=e,n.onclick=()=>{document.querySelectorAll(".radioDiv[checked]").forEach((e=>e.removeAttribute("checked"))),n.setAttribute("checked","")},t.append(n)};for(var r of Object.keys(a.prodigy.world.zones))n(r);var s=yield e.fire({title:"Teleport Zone",html:t,customClass:{popup:"radioSwal"}});if(s.value){var i=Object.keys(a.prodigy.world.zones[s.value].maps),c=yield o.Swal.fire({input:"select",inputOptions:new Map(i.map((e=>[e,e]))),title:"Map",text:"Which map in the zone do you want to teleport to?"});if(c.value){var l=(yield o.NumberInput.fire("Please enter the x to teleport to. (Try 500?)")).value||500,u=(yield o.NumberInput.fire("Please enter the y to teleport to. (Try 500?)")).value||500;a.prodigy.world.zones[s.value].teleport(c.value,l,u,{},{}),o.Toast.fire("Teleported","You have been teleported!","success")}}}))),new n.Hack(n.category.location,"Teleport to house by userID").setClick(s((function*(){var e=(yield o.NumberInput.fire("Please enter the userID.")).value;e&&(function(e){if(a._.player.userID!==e){var t=a._.instance.prodigy.friendsListNetworkHandler.friendsList.length,n=a._.instance.prodigy.friendsListNetworkHandler.classList.length;a._.instance.prodigy.gameContainer.get("2e1-e659").create("house-visit","click","hub",t,n,null,null,e).broadcast()}var r=a._.instance.prodigy.world.getZone(a._.instance.prodigy.world.getCurrentZone());if(!r)return o.Swal.fire({title:"Error",text:"You are not in a zone!",icon:"error"});r.handleLeaving(2,(()=>function(e){a._.instance.prodigy.loading(!0);var t=t=>{var n=null!=t?t[e]:null;if(null!==n&&void 0!==n.house&&null!==n.house){a._.instance.prodigy.loading(!1);var r=a._.cloneDeep(a._.player.house);if(r.setItems(n.house),void 0===n.data.allowsHouseVisitors||null===n.data.allowsHouseVisitors||!n.data.allowsHouseVisitors)return o.Swal.fire("Teleporting to ".concat(e," is not allowed."),"Try another user.","error");a._.instance.prodigy.world._("house",null,null,{house:r,getAllowsHouseVisitors:()=>void 0!==n.data.allowsHouseVisitors&&null!==n.data.allowsHouseVisitors&&n.data.allowsHouseVisitors,setAllowsHouseVisitors:e=>{n.data.allowsHouseVisitors=e}})}};a._.network.getCharData(e.toString(),["house","data"],t,t)}(e)))}(e),o.Toast.fire("Teleported!","You have been teleported!","success"))}))),new n.Hack(n.category.player,"Get Map Location").setClick(s((function*(){o.Swal.fire({title:"Map Location",html:"You are at
".concat(a._.player.data.zone," .
You can save this to get to the same zone."),icon:"info"})})))}.apply(t,o))||(e.exports=a)},3344:(e,t,n)=>{var o,a;function r(e,t,n,o,a,r,s){try{var i=e[r](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(o,a)}function s(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var s=e.apply(t,n);function i(e){r(s,o,a,i,c,"next",e)}function c(e){r(s,o,a,i,c,"throw",e)}i(void 0)}))}}o=[n,t,n(9820),n(2852)],void 0===(a=function(e,t,n,o){"use strict";new n.Toggler(n.category.minigames,"20x Walk Speed","Walk really fast!").setEnabled(s((function*(){o._.instance.game.state.states.get("DinoDig").walkSpeed=20}))).setDisabled(s((function*(){o._.instance.game.state.states.get("DinoDig").walkSpeed=1.5})))}.apply(t,o))||(e.exports=a)},465:(e,t,n)=>{var o,a;function r(e,t,n,o,a,r,s){try{var i=e[r](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(o,a)}function s(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var s=e.apply(t,n);function i(e){r(s,o,a,i,c,"next",e)}function c(e){r(s,o,a,i,c,"throw",e)}i(void 0)}))}}o=[n,t,n(4759),n(9820),n(2852)],void 0===(a=function(e,t,n,o,a){"use strict";new o.Hack(o.category.misc,"Skip Tutorial").setClick(s((function*(){var e=(e,t,n,o)=>{a._.instance.prodigy.world.getZone(e).testQuest(t,n,o);try{Object.fromEntries(a._.instance.game.state.states).TileScreen.process()}catch(e){}};e("house",2),e("academy",2),a._.player.state.set("tutorial-0",4),a._.player.backpack.addKeyItem(13,0),a._.player.tutorial.data.menus[14]=[1],a._.instance.prodigy.open.map(!0,[]),a._.player.onTutorialComplete(),a._.player.data.level=Math.max(a._.player.data.level,5)}))),new o.Toggler(o.category.misc,"Disable Monster Encounters").setEnabled(s((function*(){a._.constants.constants["GameConstants.Debug.SCALE_ENCOUNTER_DISTANCE"]=0}))).setDisabled((()=>{a._.constants.constants["GameConstants.Debug.SCALE_ENCOUNTER_DISTANCE"]=1})),new o.Toggler(o.category.misc,"Skip enemy turn").setEnabled(s((function*(){a._.constants.constants["GameConstants.Battle.SKIP_ENEMY_TURN"]=!0}))).setDisabled((()=>{a._.constants.constants["GameConstants.Battle.SKIP_ENEMY_TURN"]=!1})),new o.Hack(o.category.misc,"Bobbify","Converts your account into Bobby Fancywoman.").setClick(s((function*(){(yield n.Confirm.fire("Are you sure you want your account to be turned into Bobby Fancywoman?","This action is not reversable.")).value&&(a._.player.name.data.nickname=null,a._.player.name.data.firstName=44,a._.player.name.data.middleName=754,a._.player.name.data.lastName=882,a._.player.data.stars=-1e22,a._.player.data.level=69,a._.player.appearance.setGender("male"),a._.player.appearance.setEyeColor(1),a._.player.appearance.setFace(4),a._.player.appearance.setHair(19,1),a._.player.appearance.setSkinColor(1),a._.player.equipment.setFollow(19),a._.player.equipment.setHat(19),a._.player.equipment.setBoots(19),a._.player.equipment.setOutfit(19),a._.player.equipment.setWeapon(19),n.Toast.fire("Bobbified!","You are now Bobby Fancywoman.","success"))}))),new o.Hack(o.category.misc,"Reset Account","Completely resets your account.").setClick(s((function*(){(yield n.Confirm.fire("Are you sure you want to reset your account?","This action is not reversable.")).value&&a._.player.resetAccount()})))}.apply(t,o))||(e.exports=a)},7736:(module,exports,__webpack_require__)=>{var __webpack_unused_export__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;function asyncGeneratorStep(e,t,n,o,a,r,s){try{var i=e[r](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(o,a)}function _asyncToGenerator(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var r=e.apply(t,n);function s(e){asyncGeneratorStep(r,o,a,s,i,"next",e)}function i(e){asyncGeneratorStep(r,o,a,s,i,"throw",e)}s(void 0)}))}}__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__,exports,__webpack_require__(4759),__webpack_require__(9820),__webpack_require__(2852)],__WEBPACK_AMD_DEFINE_RESULT__=function(require,exports,swal_1,index_1,util_1){"use strict";__webpack_unused_export__={value:!0},new index_1.Hack(index_1.category.pets,"Get All Pets").setClick(_asyncToGenerator((function*(){util_1._.gameData.pet.forEach((e=>{util_1._.player.kennel.addPet(e.ID.toString(),util_1.VERY_LARGE_NUMBER,26376,100)})),util_1._.player.kennel._encounterInfo._data.pets=[],util_1._.gameData.pet.map((e=>{util_1._.player.kennel._encounterInfo._data.pets.push({firstSeenDate:Date.now(),ID:e.ID,timesBattled:1,timesRescued:1})})),util_1._.player.kennel.petTeam.forEach((e=>{e&&e.assignRandomSpells&&e.assignRandomSpells()})),swal_1.Toast.fire("Success!","All pets have been added!","success")}))),new index_1.Hack(index_1.category.pets,"Get All Legacy Epics").setClick(_asyncToGenerator((function*(){util_1._.gameData.pet.filter((e=>[125,126,127,128,129,130,131,132,133].includes(e.ID))).forEach((e=>{util_1._.player.kennel.addPet(e.ID.toString(),util_1.VERY_LARGE_NUMBER,26376,100)})),util_1._.player.kennel.petTeam.forEach((e=>{e&&e.assignRandomSpells&&e.assignRandomSpells()})),swal_1.Toast.fire("Success!","All legacy epics have been added!","success")}))),new index_1.Hack(index_1.category.pets,"Get All Mythical Epics").setClick(_asyncToGenerator((function*(){util_1._.gameData.pet.filter((e=>[158,166,168].includes(e.ID))).forEach((e=>{util_1._.player.kennel.addPet(e.ID.toString(),util_1.VERY_LARGE_NUMBER,26376,100)})),util_1._.player.kennel.petTeam.forEach((e=>{e&&e.assignRandomSpells&&e.assignRandomSpells()})),swal_1.Toast.fire("Success!","All mythical epics have been added!","success")}))),new index_1.Hack(index_1.category.pets,"Fix Battle Crash").setClick(_asyncToGenerator((function*(){util_1._.player.kennel.petTeam.forEach((e=>{e&&e.assignRandomSpells&&e.assignRandomSpells()})),swal_1.Toast.fire("Success!","Fixed kennel attack bug!","success")}))),new index_1.Hack(index_1.category.pets,"Clear Pets").setClick(_asyncToGenerator((function*(){util_1._.player.kennel.data.length=0,swal_1.Toast.fire("Success!","Your pets have been cleared!","success")}))),new index_1.Hack(index_1.category.pets,"Add Pet","Adds a pet from a list.").setClick(_asyncToGenerator((function*(){var e=yield swal_1.Swal.fire({input:"select",inputOptions:new Map(util_1._.gameData.pet.map((e=>[e.ID.toString(),"".concat(e.ID,": ").concat(e.data.name)]))),title:"Choose Pet",text:"Which pet do you want to obtain?"});void 0!==e.value&&(util_1._.player.kennel.addPet(e.value),util_1._.player.kennel._encounterInfo._data.pets.push({firstSeenDate:Date.now(),ID:e.value,timesBattled:1,timesRescued:1}),swal_1.Toast.fire("Success!","Your chosen pet has been added to your pets!","success"))}))),new index_1.Hack(index_1.category.pets,"Uncap pet level (client side only, doesn't save on reload)","Change your pet's level to anything, even over 100.").setClick(_asyncToGenerator((function*(){var petTeam=util_1._.player.kennel.petTeam.slice(0);petTeam.shift();var names=petTeam.map((e=>e.getName())),pet=yield swal_1.Swal.fire({title:"Which pet would you like to edit?",input:"select",inputOptions:names,inputPlaceholder:"Select...",inputValidator:e=>e?"":"Please select which you'd like to obtain.",showCancelButton:!0}),amt=yield swal_1.NumberInput.fire("Level","What would you like to set your pet's level to? (Can be set over 100)","question");if(amt.value){var num=amt.value;eval("_.player.kennel.petTeam[parseInt(".concat(pet.value,")+1].getLevel = () => {return ").concat(num,"}")),swal_1.Toast.fire("Updated!","The level of your pet was successfully updated.","success")}})));var getPet=function(){var e=_asyncToGenerator((function*(e){return(yield swal_1.Swal.fire({input:"select",inputOptions:new Map(util_1._.player.kennel.data.map(((e,t)=>{var n,o,a;return[t.toString(),"Level ".concat(e.level," - ").concat(null!==(n=null!==(o=e.nickname)&&void 0!==o?o:null===(a=util_1._.gameData.pet.find((t=>+t.ID==+e.ID)))||void 0===a?void 0:a.data.name)&&void 0!==n?n:"Unknown")]}))),title:"Choose Pet",text:e})).value}));return function(t){return e.apply(this,arguments)}}();new index_1.Hack(index_1.category.pets,"Edit Pet (BETA)","Edit a pet.").setClick(_asyncToGenerator((function*(){if((yield swal_1.Confirm.fire({title:"Hang on!",html:"This feature is in beta. Using this could break your account in a specific way. This should be used for experimentation only.

Proceed?",icon:"warning"})).value){var e=yield getPet("Choose the pet to edit.");if(void 0!==e){var t=util_1._.player.kennel.data[e],n=yield swal_1.Swal.fire({input:"select",inputOptions:{level:"Level",attacks:"Attacks",name:"Name"},title:"Edit Property",text:"What do you want to edit?"});if(void 0!==n.value)if("level"===n.value){var o=yield swal_1.NumberInput.fire("Level Number","What level do you want to set your pet to?","question");if(void 0===o.value)return;t.level=+o.value,swal_1.Toast.fire("Success!","The pet's level has been set.","success")}else if("attacks"===n.value){var a=util_1._.gameData.spell,r=document.createElement("div"),s=document.createElement("select");for(var i of(s.classList.add("selectSpell"),a)){var c=document.createElement("option");c.value=i.ID.toString(),c.innerText="".concat(i.ID,": ").concat(i.name," (").concat(i.data.element,") - Damage: ").concat(i.data.damage),s.options.add(c)}r.append(s),r.append(s.cloneNode(!0));var l=yield swal_1.Swal.fire({title:"Attack List",focusConfirm:!1,showCancelButton:!0,html:r,preConfirm:()=>Array.prototype.slice.call(document.querySelectorAll(".selectSpell")).map((e=>e.options[e.selectedIndex].value))});if(void 0===l.value)return;t.foreignSpells.splice(0,2,...l.value.map((e=>+e))),swal_1.Toast.fire("Attacks updated!","The attack list of the pet you selected has been edited.","success")}else if("name"===n.value){var u=yield swal_1.Input.fire("Input Name","What do you want to name the pet?","question");if(void 0===u.value)return;t.nickname=u.value,yield swal_1.Swal.fire("Successfully renamed!","The name of the pet has been changed.","success")}}}}))),new index_1.Hack(index_1.category.pets,"Delete Pet","Delete a pet.").setClick(_asyncToGenerator((function*(){var e=yield getPet("Which pet do you wish to delete?");void 0!==e&&(util_1._.player.kennel.data.splice(e,1),yield swal_1.Swal.fire("Successfully deleted!","The selected pet was deleted successfully.","success"))})))}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),void 0===__WEBPACK_AMD_DEFINE_RESULT__||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)},7939:(module,exports,__webpack_require__)=>{var __webpack_unused_export__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;function asyncGeneratorStep(e,t,n,o,a,r,s){try{var i=e[r](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(o,a)}function _asyncToGenerator(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var r=e.apply(t,n);function s(e){asyncGeneratorStep(r,o,a,s,i,"next",e)}function i(e){asyncGeneratorStep(r,o,a,s,i,"throw",e)}s(void 0)}))}}__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__,exports,__webpack_require__(4759),__webpack_require__(9820),__webpack_require__(2852)],__WEBPACK_AMD_DEFINE_RESULT__=function(require,exports,swal_1,index_1,util_1){"use strict";__webpack_unused_export__={value:!0},new index_1.Hack(index_1.category.player,"Set Gold").setClick(_asyncToGenerator((function*(){var e=yield swal_1.NumberInput.fire("Gold Amount","What number do you want to set your gold to?","question");if(void 0!==e.value){if(e.value>1e7)return swal_1.Toast.fire("Error","Cannot have more than 10,000,000 gold.","error");util_1._.player.data.gold=+e.value,swal_1.Toast.fire("Success!","You now have ".concat(e.value," gold."),"success")}}))),new index_1.Hack(index_1.category.player,"Set Level").setClick(_asyncToGenerator((function*(){var e=yield swal_1.NumberInput.fire("Level","What number do you want to set your level to?","question");if(void 0!==e.value){if(1===e.value)return 0;var t=e.value-2;util_1._.player.data.stars=Math.round((1-Math.pow(1.042,t))/(1-1.042)*20+10),util_1._.player.data.level=+e.value,util_1._.player.getLevel=()=>util_1._.player.data.level,swal_1.Toast.fire("Success!","You are now level ".concat(e.value,"."),"success")}}))),new index_1.Hack(index_1.category.player,"Get member stars").setClick(_asyncToGenerator((function*(){var e=yield swal_1.NumberInput.fire("Stars","How many member stars do you want?","question");void 0!==e.value&&(util_1._.player.data.storedMemberStars=e.value,swal_1.Toast.fire("Success!","You have set your member stars to ".concat(e.value,"."),"success"))}))),new index_1.Hack(index_1.category.player,"Set Bounty Points").setClick(_asyncToGenerator((function*(){var e=yield swal_1.NumberInput.fire("Bounty Points","What number do you want to set your bounty points to? (Max is 100)","question");void 0!==e.value&&(util_1._.player.data.bountyScore=Math.min(+e.value,100),swal_1.Toast.fire("Success!","You now have ".concat(util_1._.player.data.bountyScore," bounty point").concat(1!=util_1._.player.data.bountyScore?"s":"","."),"success"))}))),new index_1.Hack(index_1.category.player,"Obtain Conjure Cubes").setClick(_asyncToGenerator((function*(){var e=yield swal_1.NumberInput.fire("Conjure Cubes","How many conjure cubes do you want to get? (Max 99)","question");if(void 0!==e.value){for(var t=0;t{util_1._.player.modifiers.damage=1})),new index_1.Hack(index_1.category.player,"PVP Health").setClick(_asyncToGenerator((function*(){util_1._.player.pvpHP=util_1.VERY_LARGE_NUMBER,util_1._.player.getMaxHearts=()=>util_1.VERY_LARGE_NUMBER,swal_1.Toast.fire("Success!","You now have lots of health!","success")}))),new index_1.Toggler(index_1.category.player,"Toggle membership").setEnabled(_asyncToGenerator((function*(){util_1._.instance.prodigy.gameContainer.get(util_1._.player.hasMembership.toString().split('"')[1]).data.membership.active=!0,util_1._.player.appearanceChanged=!0}))).setDisabled((()=>{util_1._.instance.prodigy.gameContainer.get(util_1._.player.hasMembership.toString().split('"')[1]).data.membership.active=!1,util_1._.player.appearanceChanged=!0})),new index_1.Hack(index_1.category.player,"Set name (Client side only)").setClick(_asyncToGenerator((function*(){var e=yield swal_1.Input.fire("What would you like to set your name to?");e.value&&(util_1._.player.getName=()=>e.value,swal_1.Toast.fire("Changed!","Your name was changed."))}))),new index_1.Hack(index_1.category.player,"Change Name","Change the name of your wizard.").setClick(_asyncToGenerator((function*(){var e=util_1._.gameData.name,t=document.createElement("div"),n=(e,t)=>{var n=document.createElement("select");for(var o of(n.classList.add("selectName"),e.entries())){var a=document.createElement("option");[a.value,a.innerText]=o,t(a.value)&&(a.selected=!0),n.options.add(a)}return n},o=(t,o)=>n(new Map(e.filter((e=>e.data.type===t)).map((e=>[e.ID.toString(),e.name]))),(e=>o(+e)));t.append(o(0,(e=>e===util_1._.player.name.data.firstName))),t.append(o(1,(e=>e===util_1._.player.name.data.middleName))),t.append(o(2,(e=>e===util_1._.player.name.data.lastName))),t.append(n(new Map([["null","[none]"]].concat(util_1._.gameData.nickname.map((e=>[e.ID.toString(),e.name])))),(e=>+e===util_1._.player.name.data.nickname||String(util_1._.player.name.data.nickname)===e)));var a=yield swal_1.Swal.fire({title:"Set Player Name",focusConfirm:!1,showCancelButton:!0,html:t,preConfirm:()=>Array.prototype.slice.call(document.querySelectorAll(".selectName")).map((e=>e.options[e.selectedIndex].value))});void 0!==a.value&&("null"===a.value[3]&&(a.value[3]=null),[util_1._.player.name.data.firstName,util_1._.player.name.data.middleName,util_1._.player.name.data.lastName,util_1._.player.name.data.nickname]=a.value.map((e=>e&&+e)),swal_1.Toast.fire("Name Changed!","Your name was successfully changed.","success"))}))),new index_1.Hack(index_1.category.player,"Uncap player level (client side only)").setClick(_asyncToGenerator((function*(){var level=yield swal_1.NumberInput.fire("Level","What would you like to set your level to? (Can be 100+)","question");level.value&&(localStorage.setItem("level",level.value),eval("_.player.getLevel = () => {return ".concat(level.value,"}")),swal_1.Toast.fire("Updated!","Your level has been successfully updated","success"))}))),new index_1.Hack(index_1.category.player,"Get all achievements").setClick(_asyncToGenerator((function*(){for(var e=0;e<100;e++)util_1._.player.achievements.data.progress[e]=10;swal_1.Toast.fire("Success!","Obtained all achievements!","success")}))),new index_1.Hack(index_1.category.player,"Morph Player (DEV)","Morph into a pet, furnishing, or follow.").setClick(_asyncToGenerator((function*(){var e=yield swal_1.Swal.fire({title:"Which morph type?",input:"select",inputOptions:{pet:"Pet",dorm:"Furniture",follow:"Follow"},inputPlaceholder:"Morph Type",inputValidator:e=>e?"":"Please select a morph type.",showCancelButton:!0});if(null!=e&&e.value){var t={};util_1._.gameData[e.value].forEach((e=>t[e.ID]="".concat(e.name," (").concat(e.ID,")")));var n=yield swal_1.Swal.fire({title:"Which morph?",input:"select",inputOptions:t,inputPlaceholder:"Morph ID",inputValidator:e=>e?"":"Please select a morph ID.",showCancelButton:!0});null!=n&&n.value&&(util_1._.player.getPlayerData().playerTransformation={transformType:e.value,transformID:n.value,maxTime:36e5,timeRemaining:36e5},util_1._.player.appearanceChanged=!0,swal_1.Toast.fire("Morphed!","You've been morphed.","success"))}}))),new index_1.Hack(index_1.category.player,"Fix Morph Crash").setClick(_asyncToGenerator((function*(){util_1._.player.getPlayerData().playerTransformation=void 0,util_1._.player.appearanceChanged=!0,swal_1.Toast.fire("Success!","Fixed morph crash bug.","success")}))),new index_1.Hack(index_1.category.player,"Permanent Morph","Makes Your Current Morph Last Forever.").setClick(_asyncToGenerator((function*(){util_1._.player.data.playerTransformation?(util_1._.player.data.playerTransformation.maxTime=1/0,util_1._.player.data.playerTransformation.timeRemaining=1/0,swal_1.Toast.fire("Success!","You're morph will last forever!","success")):yield swal_1.Swal.fire("No Morph Active","Please use a Morph Marble and try again.","error")}))),new index_1.Hack(index_1.category.player,"Complete Current Task In Quest","Completes current task in quest. (Use this button a lot to complete a quest.)").setClick(_asyncToGenerator((function*(){var e={};Object.keys(util_1._.instance.prodigy.world.zones).forEach((t=>{e[t]=util_1._.instance.prodigy.world.zones[t].name}));var t=(yield swal_1.Input.fire({title:"What Quest Do You Want To Complete?",input:"select",inputOptions:e})).value;if(t){var n=util_1._.instance.prodigy.world.zones[t].getCurrentQuestID();util_1._.instance.prodigy.world.zones[t].completeQuest(n)?(util_1._.instance.prodigy.world.goToZoneHub(t),swal_1.Toast.fire("Success!","Completed current task in the ".concat(util_1._.instance.prodigy.world.zones[t].name," quest successfully!"),"success")):swal_1.Toast.fire("Could Not Complete Current Task In Quest.","There was an error completing the quest. Did you already complete it?","error")}}))),new index_1.Hack(index_1.category.player,"Set Dark Tower Floor").setClick(_asyncToGenerator((function*(){var e=yield swal_1.NumberInput.fire({title:"What floor do you want to be on, in the dark tower.",icon:"question",inputValidator:e=>(e>100||e<1)&&"You can only be on floors from 1-100 not ".concat(e)});e.value&&(util_1._.player.data.tower=parseInt(e.value),swal_1.Toast.fire("Success!","Successfully set dark tower floor to ".concat(e,"!"),"success"))}))),new index_1.Hack(index_1.category.player,"Get UserID").setClick(_asyncToGenerator((function*(){swal_1.Swal.fire({title:"User ID",html:"Here is your User ID:
".concat(util_1._.player.userID,"
You can use this for copying your account."),icon:"info"})}))),new index_1.Hack(index_1.category.player,"Copy Account","Copy Account From userID").setClick(_asyncToGenerator((function*(){var e=(yield swal_1.NumberInput.fire("What is the userID of the account you want to copy?",void 0,"question")).value;if(e&&(yield swal_1.Confirm.fire("Are you sure you want to copy the account?","This will replace all data on your account with the account your copying."))){var t=yield(yield fetch("https://api.prodigygame.com/game-api/v2/characters/".concat(e,"?fields=inventory%2Cdata%2CisMember%2Ctutorial%2Cpets%2Cencounters%2Cquests%2Cappearance%2Cequipment%2Chouse%2Cachievements%2Cstate&userID=").concat(util_1._.player.userID),{headers:{Authorization:localStorage.JWT_TOKEN}})).json();yield fetch("https://api.prodigygame.com/game-api/v3/characters/".concat(util_1._.player.userID),{headers:{"Content-Type":"application/json",Authorization:localStorage.JWT_TOKEN},body:JSON.stringify({data:JSON.stringify(t[e]),userID:util_1._.player.userID}),method:"POST"}),swal_1.Toast.fire("Success!","Copied Account Successfully! Please reload.","success")}}))),new index_1.Hack(index_1.category.player,"Set Grade").setClick(_asyncToGenerator((function*(){var e=yield swal_1.NumberInput.fire("What number do you want to set your grade to?");e.value&&(util_1._.player.grade=parseInt(e.value),swal_1.Toast.fire("Success","Successfully changed grade to ".concat(e,"!"),"success"))})))}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),void 0===__WEBPACK_AMD_DEFINE_RESULT__||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)},4474:(module,exports,__webpack_require__)=>{var __webpack_unused_export__,__WEBPACK_AMD_DEFINE_ARRAY__,__WEBPACK_AMD_DEFINE_RESULT__;function asyncGeneratorStep(e,t,n,o,a,r,s){try{var i=e[r](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(o,a)}function _asyncToGenerator(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var r=e.apply(t,n);function s(e){asyncGeneratorStep(r,o,a,s,i,"next",e)}function i(e){asyncGeneratorStep(r,o,a,s,i,"throw",e)}s(void 0)}))}}__WEBPACK_AMD_DEFINE_ARRAY__=[__webpack_require__,exports,__webpack_require__(4759),__webpack_require__(9820),__webpack_require__(2852)],__WEBPACK_AMD_DEFINE_RESULT__=function(require,exports,swal_1,index_1,util_1){"use strict";__webpack_unused_export__={value:!0},new index_1.Hack(index_1.category.utility,"Save Character Locally","Saves your character locally.").setClick(_asyncToGenerator((function*(){localStorage.setItem("playerData",JSON.stringify(util_1._.player.getUpdatedData(!0))),swal_1.Toast.fire("Success!","Note: Load Character will only work on this device.","success")}))),new index_1.Hack(index_1.category.utility,"Stuck in Unfinished Tower Fix","Takes you out of an unfinished tower if you're stuck in one.").setClick(_asyncToGenerator((function*(){util_1._.instance.prodigy.world.zones.house.teleport("exit"),swal_1.Toast.fire("Success!","You've been teleported outside of your house.","success")}))),new index_1.Hack(index_1.category.utility,"Load local character","Loads your character locally.").setClick(_asyncToGenerator((function*(){if(localStorage.getItem("playerData")){var e=localStorage.getItem("playerData"),t=yield fetch("https://api.prodigygame.com/game-api/v3/characters/".concat(util_1._.player.userID),{headers:{accept:"*/*","accept-language":"en-US,en;q=0.9",authorization:localStorage.JWT_TOKEN,"content-type":"application/json","sec-ch-ua":'" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',"sec-ch-ua-mobile":"?0","sec-fetch-dest":"empty","sec-fetch-mode":"cors","sec-fetch-site":"same-site"},referrer:"https://play.prodigygame.com/",referrerPolicy:"strict-origin-when-cross-origin",body:JSON.stringify({data:e,userID:util_1._.player.userID}),method:"POST",mode:"cors"});if(!t.ok)return swal_1.Toast.fire("Request failed.","An error occurred while loading the character. Error code: ".concat(t.status),"error");swal_1.Toast.fire("Success!","Character has been successfully loaded. Reload for the changes to take effect.","success")}else swal_1.Toast.fire("Error","No saved character.","error")}))),new index_1.Hack(index_1.category.utility,"Save Character","Helps fix bugs where not all hacks save.").setClick(_asyncToGenerator((function*(){util_1.saveCharacter(),swal_1.Toast.fire("Success!","Your character has been saved!","success")}))),new index_1.Hack(index_1.category.utility,"Close all popups","Closes all popups in Prodigy.").setClick(_asyncToGenerator((function*(){util_1._.instance.prodigy.open.menuCloseAll(),swal_1.Toast.fire("Closed!","All open popups were closed.","success")}))),new index_1.Hack(index_1.category.utility,"Update menu","Updates menu to the latest version without needing to reload.").setClick(_asyncToGenerator((function*(){var _document$getElementB,_document$getElementB2;null===(_document$getElementB=document.getElementById("cheat-menu"))||void 0===_document$getElementB||_document$getElementB.remove(),null===(_document$getElementB2=document.getElementById("menu-toggler"))||void 0===_document$getElementB2||_document$getElementB2.remove(),_asyncToGenerator((function*(){eval(yield(yield fetch("https://raw.githubusercontent.com/Prodigy-Hacking/ProdigyMathGameHacking/HEAD/willsCheatMenu/dist/bundle.js?updated=".concat(Date.now()))).text())}))(),swal_1.Toast.fire("Updated!","Cheat menu was updated.","success")}))),new index_1.Hack(index_1.category.utility,"Disable inactivity kick","Keeps you from being logged out for inactivity.").setClick(_asyncToGenerator((function*(){util_1._.constants.constants["GameConstants.Inactivity.LOG_OUT_TIMER_SECONDS"]=0,swal_1.Toast.fire("Success!","You now will never be logged out!","success")}))),new index_1.Toggler(index_1.category.utility,"Enable menu resize drag (bottom right corner)","Allows you to resize the menu via dragging.").setEnabled(_asyncToGenerator((function*(){document.getElementById("cheat-menu").style.resize="both"}))).setDisabled((()=>{document.getElementById("cheat-menu").style.resize="none",document.getElementById("cheat-menu").style.height=index_1.dimensions.height,document.getElementById("cheat-menu").style.width=index_1.dimensions.width})),new index_1.Hack(index_1.category.utility,"Edit walkspeed").setClick(_asyncToGenerator((function*(){var e=yield swal_1.Input.fire("What do you want to set your walk speed to?");if(e.value){if(util_1._.player._playerContainer)util_1._.player._playerContainer.walkSpeed=parseFloat(e.value)||1.5;else var t=setInterval((()=>{util_1._.player._playerContainer&&(clearInterval(t),util_1._.player._playerContainer.walkSpeed=parseFloat(e.value))}),100);swal_1.Toast.fire("Success!","Successfully made walk speed ".concat(parseFloat(e.value)||1.5,"!"),"success")}})));var teleportingInterval=-1;new index_1.Toggler(index_1.category.utility,"Toggle Click Teleporting").setEnabled(_asyncToGenerator((function*(){teleportingInterval=setInterval((()=>{try{util_1._.player._playerContainer.walkSpeed=500}catch(e){}})),swal_1.Toast.fire("Success!","Successfully enabled teleport click.","success")}))).setDisabled(_asyncToGenerator((function*(){clearInterval(teleportingInterval),util_1._.player._playerContainer.walkSpeed=1.5,swal_1.Toast.fire("Success!","Successfully disabled teleport click.","success")}))),new index_1.Toggler(index_1.category.utility,"Pause Game").setEnabled(_asyncToGenerator((function*(){util_1._.network.game._paused=!0,swal_1.Toast.fire("Success!","Successfully paused Prodigy.","success")}))).setDisabled(_asyncToGenerator((function*(){util_1._.network.game._paused=!1,swal_1.Toast.fire("Success!","Successfully resumed Prodigy.","success")})))}.apply(exports,__WEBPACK_AMD_DEFINE_ARRAY__),void 0===__WEBPACK_AMD_DEFINE_RESULT__||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)},9820:function(e,t,n){var o,a;function r(e,t,n,o,a,r,s){try{var i=e[r](s),c=i.value}catch(e){return void n(e)}i.done?t(c):Promise.resolve(c).then(o,a)}function s(e){return function(){var t=this,n=arguments;return new Promise((function(o,a){var s=e.apply(t,n);function i(e){r(s,o,a,i,c,"next",e)}function c(e){r(s,o,a,i,c,"throw",e)}i(void 0)}))}}var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};o=[n,t,n(751),n(2852),n(6455),n(158)],void 0===(a=function(e,t,n,o,a){"use strict";var r,c,l,u;Object.defineProperty(t,"__esModule",{value:!0}),t.category=t.Toggler=t.Hack=t.addArea=t.toggler=t.wrapper=t.menu=void 0,a=i(a),t.menu=document.createElement("div"),t.wrapper=document.getElementById("game-wrapper"),null===(r=document.getElementById("cheat-menu"))||void 0===r||r.remove(),null===(c=document.getElementById("menu-toggler"))||void 0===c||c.remove(),t.menu.id="cheat-menu",null===(l=t.wrapper)||void 0===l||l.prepend(t.menu),t.toggler=document.createElement("button"),t.toggler.id="menu-toggler",t.toggler.style.fontSize="35px",t.toggler.style.height="35px",t.toggler.style.width="70px";var d=!1;null===(u=t.wrapper)||void 0===u||u.prepend(t.toggler),t.toggler.onclick=()=>{(d=!d)?(t.toggler.innerText="â–¼",t.menu.style.top="-100vh"):(t.toggler.innerText="â–²",t.menu.style.top="")},t.toggler.onclick({});var p=document.createElement("DIV");p.classList.add("menu-left"),t.menu.append(p),t.addArea=e=>{var t=document.createElement("div");t.classList.add("menu-area"),p.append(t);var n=document.createElement("h1");return n.innerText=e,t.append(n),t};var h=document.createElement("h1");h.classList.add("menu-title"),h.innerText="Will's Prodigy Cheat Menu",p.append(h);var f=document.createElement("h2");f.style.fontSize="30px",f.innerHTML="Join our Discord for giveaways, access to new hacks, and notices of hack outages! https://discord.gg/XQDfbfq",p.append(f);var m=document.createElement("h3");m.style.fontSize="20px",m.innerHTML='On behalf of ProdigyMathGameHacking. Learn about our mission.\n
\nThis is free and open-source software. If you paid for this or accessed this behind a paywall/AdFly link, demand a refund. If you sell this software, or otherwise make a commercial advantage from it, you are violating Github conduct by not cooperating with our license.',p.append(m);class w{constructor(e,t,n){this.parent=e,this.name="",this.description="",this.element=document.createElement("button"),this.element.classList.add("menu-hack"),this.parent.append(this.element),t&&this.setName(t),n&&this.setDesc(n)}setName(e){return this.element.innerText=e,this.name=e,this}setClick(e){var t=this;return this.element.onclick=s((function*(){yield e(),o.saveCharacter(),console.log("Triggered ".concat(t.name,"."))})),this}setDesc(e){return this.element.title=e,this.description=e,this}}t.Hack=w,t.Toggler=class extends w{constructor(e,t,n){var o;super(e,t,n),o=this,this.parent=e,this.element.setAttribute("status","false"),this.setClick(s((function*(){var e,t;o.status=!o.status,o.status?(localStorage.setItem(o.name,"true"),yield null===(e=o.enabled)||void 0===e?void 0:e.call(o)):(localStorage.setItem(o.name,"false"),yield null===(t=o.disabled)||void 0===t?void 0:t.call(o))})))}get status(){return JSON.parse(this.element.getAttribute("status"))}set status(e){this.element.setAttribute("status",e.toString())}setEnabled(e){return this.enabled=e,"true"===localStorage.getItem(this.name)&&this.element.click(),this}setDisabled(e){return this.disabled=e,this}},t.category={player:t.addArea("Player Hacks"),inventory:t.addArea("Inventory Hacks"),location:t.addArea("Location Hacks"),pets:t.addArea("Pet Hacks"),battle:t.addArea("Battle Hacks"),minigames:t.addArea("Minigames"),misc:t.addArea("Miscellaneous Hacks"),utility:t.addArea("Utility Hacks")},localStorage.hasTip||(s((function*(){a.default.fire({title:"Hey!",html:"To get started with the hacks, click this dropdown!",icon:"info",backdrop:'\n\t\t url("https://i.imgur.com/CdV9piu.png")\n\t\t left top\n\t\t no-repeat\n\t\t'})}))(),localStorage.hasTip=!0),localStorage.getItem("level")&&(o._.player.getLevel=()=>localStorage.getItem("level"))}.apply(t,o))||(e.exports=a)},2868:()=>{"use strict";window.addEventListener("keydown",(e=>{}))},4759:function(e,t,n){var o,a,r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};o=[n,t,n(6455)],void 0===(a=function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Confirm=t.Toast=t.NumberInput=t.Input=t.Swal=void 0,n=r(n),t.Swal=n.default,t.Input=t.Swal.mixin({input:"text",showCancelButton:!0,showConfirmButton:!0}),t.NumberInput=t.Input.mixin({input:"number"}),t.Toast=t.Swal.mixin({toast:!0,position:"bottom"}),t.Confirm=t.Swal.mixin({icon:"warning",showCancelButton:!0,confirmButtonText:"Confirm",cancelButtonText:"Cancel"})}.apply(t,o))||(e.exports=a)},2852:(e,t,n)=>{var o;void 0===(o=function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.pickRandom=t.locations=t.joinAsset=t.assetURL=t.saveCharacter=t.states=t.VERY_LARGE_NUMBER=t.getItem=t.gameData=t.prodigy=t.game=t._=void 0,t._=window._;var n=t._.instance;t.game=n.game,t.prodigy=n.prodigy,t.gameData=t._.instance.game.state.states.get("Boot").gameData,t.getItem=(e,n)=>{var o;return null!==(o=t._.gameData[e].find((e=>e.ID===n)))&&void 0!==o?o:null},t.VERY_LARGE_NUMBER=9e9,t.states=Object.fromEntries(t._.instance.game.state.states),t.saveCharacter=()=>{t._.network.processPlayer=!0,t._.player.forceSaveCharacter()},t.assetURL="https://raw.githubusercontent.com/Prodigy-Hacking/ProdigyMathGameHacking/HEAD/willsCheatMenu/src/assets/",t.joinAsset=e=>"".concat(t.assetURL).concat(e),t.locations={academy:t.joinAsset("academy.png"),bonfire_spire:t.joinAsset("bonfire_spire.png"),forest:t.joinAsset("forest.png"),shipwreck_shore:t.joinAsset("shipwreck_shore.png"),shiverchill:t.joinAsset("shiverchill.png"),skywatch:t.joinAsset("skywatch.png"),dyno:t.joinAsset("dyno.png"),elemental_guardian:t.joinAsset("elemental_guardian.png"),darktower:t.joinAsset("darktower.png"),earthtower:t.joinAsset("earthtower.png"),crystal_caverns:t.joinAsset("crystal_caverns.png"),archives:t.joinAsset("archives.png"),house:t.joinAsset("house.png"),toyzone:t.joinAsset("toyzone.png"),tower_town:t.joinAsset("tower_town.png"),lamplight:t.joinAsset("lamplight.png")},t.pickRandom=e=>e[Math.floor(Math.random()*e.length)]}.apply(t,[n,t]))||(e.exports=o)},3010:e=>{function t(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}e.exports=t,t.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),n=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-n:e+n}return 0|Math.min(e,this.max)},t.prototype.reset=function(){this.attempts=0},t.prototype.setMin=function(e){this.ms=e},t.prototype.setMax=function(e){this.max=e},t.prototype.setJitter=function(e){this.jitter=e}},3704:(e,t)=>{!function(e){"use strict";t.encode=function(t){var n,o=new Uint8Array(t),a=o.length,r="";for(n=0;n>2],r+=e[(3&o[n])<<4|o[n+1]>>4],r+=e[(15&o[n+1])<<2|o[n+2]>>6],r+=e[63&o[n+2]];return a%3==2?r=r.substring(0,r.length-1)+"=":a%3==1&&(r=r.substring(0,r.length-2)+"=="),r},t.decode=function(t){var n,o,a,r,s,i=.75*t.length,c=t.length,l=0;"="===t[t.length-1]&&(i--,"="===t[t.length-2]&&i--);var u=new ArrayBuffer(i),d=new Uint8Array(u);for(n=0;n>4,d[l++]=(15&a)<<4|r>>2,d[l++]=(3&r)<<6|63&s;return u}}("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")},8767:e=>{function t(e){if(e)return function(e){for(var n in t.prototype)e[n]=t.prototype[n];return e}(e)}e.exports=t,t.prototype.on=t.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},t.prototype.once=function(e,t){function n(){this.off(e,n),t.apply(this,arguments)}return n.fn=t,this.on(e,n),this},t.prototype.off=t.prototype.removeListener=t.prototype.removeAllListeners=t.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var n,o=this._callbacks["$"+e];if(!o)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var a=0;a{"use strict";n.d(t,{Z:()=>r});var o=n(3645),a=n.n(o)()((function(e){return e[1]}));a.push([e.id,"@import url(https://fonts.googleapis.com/css?family=Arvo:400,700|Sen:400,700,800&display=swap&subset=latin-ext);"]),a.push([e.id,'#game-wrapper{font-family:"Sen",sans-serif}#game-wrapper #cheat-menu{height:465px;background-color:#eeeb;padding:2px;position:absolute;top:0px;left:0px;transition:top .35s;padding:10px;border:#fffa 2px solid;overflow-y:scroll;resize:vertical;overflow:auto}#game-wrapper .menu-left{width:70%;height:100%;float:left}#game-wrapper #menu-toggler{z-index:1;position:absolute;background-color:#fffb;transition:background-color .15s}#game-wrapper #menu-toggler:hover{background-color:#dddb}#game-wrapper #menu-toggler:active{background-color:#bbbb}#game-wrapper .menu-area h1{font-family:"Sen",sans-serif;font-size:30px;font-weight:700;color:#111;margin:10px}#game-wrapper .menu-area button{background-color:#000;color:#fff;border-radius:5px;border:1px solid #eee;padding:1%;transition:all .15s;margin:5px 5px;transition-property:border-color,background-color}#game-wrapper .menu-area button:hover{border-color:#777d;background-color:#ddd}#game-wrapper .menu-area button:active{border-color:#555;background-color:#bbb}#game-wrapper .menu-area button[status=true]{border-color:#5a5d;background-color:#9bee9b}#game-wrapper .menu-area button[status=true]:hover{border-color:#b3bbb0dd;background-color:#bffebf}#game-wrapper .menu-area button[status=true]:active{border-color:#4e5c50;background-color:#24be6a}#game-wrapper .menu-area button[status=false]{border-color:#766d;background-color:#9b9b9b}#game-wrapper .menu-area button[status=false]:hover{border-color:#858585dd;background-color:#bfbfbf}#game-wrapper .menu-area button[status=false]:active{border-color:#4c3e40;background-color:#be246a}#game-wrapper .menu-title{font-family:"Arvo",sans-serif;font-size:35px;font-weight:900}.radioDiv{width:125px;height:125px;display:inline-block;margin:7px;background-color:#5a7e3f;color:#000;background-size:cover;outline:#000 5px solid;vertical-align:top;font-weight:700;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-user-drag:none;cursor:pointer}.radioDiv:hover{background-blend-mode:overlay;color:#d3d3d3}.radioDiv:active{background-blend-mode:multiply;color:#fff}.radioDiv[checked]{background-blend-mode:color-dodge;color:#ffebcd}.radioDiv[checked]:active{background-blend-mode:color-burn;color:aqua}.radioSwal{width:-webkit-fit-content !important;width:-moz-fit-content !important;width:fit-content !important;min-width:32em !important;max-width:46em !important}',""]);const r=a},3645:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=e(t);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n})).join("")},t.i=function(e,n,o){"string"==typeof e&&(e=[[null,e,""]]);var a={};if(o)for(var r=0;r{t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const n="color: "+this.color;t.splice(1,0,n,"color: inherit");let o=0,a=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(o++,"%c"===e&&(a=o))})),t.splice(a,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&"undefined"!=typeof process&&"env"in process&&(e=process.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=console.debug||console.log||(()=>{}),e.exports=n(2447)(t);const{formatters:o}=e.exports;o.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},2447:(e,t,n)=>{e.exports=function(e){function t(e){let n,a,r,s=null;function i(...e){if(!i.enabled)return;const o=i,a=Number(new Date),r=a-(n||a);o.diff=r,o.prev=n,o.curr=a,n=a,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let s=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((n,a)=>{if("%%"===n)return"%";s++;const r=t.formatters[a];if("function"==typeof r){const t=e[s];n=r.call(o,t),e.splice(s,1),s--}return n})),t.formatArgs.call(o,e),(o.log||t.log).apply(o,e)}return i.namespace=e,i.useColors=t.useColors(),i.color=t.selectColor(e),i.extend=o,i.destroy=t.destroy,Object.defineProperty(i,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==s?s:(a!==t.namespaces&&(a=t.namespaces,r=t.enabled(e)),r),set:e=>{s=e}}),"function"==typeof t.init&&t.init(i),i}function o(e,n){const o=t(this.namespace+(void 0===n?":":n)+e);return o.log=this.log,o}function a(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(a),...t.skips.map(a).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let n;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const o=("string"==typeof e?e:"").split(/[\s,]+/),a=o.length;for(n=0;n{t[n]=e[n]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let n=0;for(let t=0;t{e.exports="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")()},5983:(e,t,n)=>{const o=n(2192);e.exports=(e,t)=>new o(e,t),e.exports.Socket=o,e.exports.protocol=o.protocol,e.exports.Transport=n(6496),e.exports.transports=n(3352),e.exports.parser=n(9743)},2192:(e,t,n)=>{const o=n(3352),a=n(8767),r=n(1227)("engine.io-client:socket"),s=n(9743),i=n(4187),c=n(1830);class l extends a{constructor(e,t={}){super(),e&&"object"==typeof e&&(t=e,e=null),e?(e=i(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=i(t.host).host),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?443:80),this.transports=t.transports||["polling","websocket"],this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,jsonp:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},t),this.opts.path=this.opts.path.replace(/\/$/,"")+"/","string"==typeof this.opts.query&&(this.opts.query=c.decode(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&addEventListener("beforeunload",(()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())}),!1),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close")},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){r('creating transport "%s"',e);const t=function(e){const t={};for(let n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}(this.opts.query);t.EIO=s.protocol,t.transport=e,this.id&&(t.sid=this.id);const n=Object.assign({},this.opts.transportOptions[e],this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return r("options: %j",n),new o[e](n)}open(){let e;if(this.opts.rememberUpgrade&&l.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void setTimeout((()=>{this.emit("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return r("error while creating transport: %s",e),this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){r("setting transport %s",e.name),this.transport&&(r("clearing existing transport %s",this.transport.name),this.transport.removeAllListeners()),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(()=>{this.onClose("transport close")}))}probe(e){r('probing transport "%s"',e);let t=this.createTransport(e,{probe:1}),n=!1;l.priorWebsocketSuccess=!1;const o=()=>{n||(r('probe transport "%s" opened',e),t.send([{type:"ping",data:"probe"}]),t.once("packet",(o=>{if(!n)if("pong"===o.type&&"probe"===o.data){if(r('probe transport "%s" pong',e),this.upgrading=!0,this.emit("upgrading",t),!t)return;l.priorWebsocketSuccess="websocket"===t.name,r('pausing current transport "%s"',this.transport.name),this.transport.pause((()=>{n||"closed"!==this.readyState&&(r("changing transport and sending upgrade packet"),d(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emit("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{r('probe transport "%s" failed',e);const n=new Error("probe error");n.transport=t.name,this.emit("upgradeError",n)}})))};function a(){n||(n=!0,d(),t.close(),t=null)}const s=n=>{const o=new Error("probe error: "+n);o.transport=t.name,a(),r('probe transport "%s" failed because of error: %s',e,n),this.emit("upgradeError",o)};function i(){s("transport closed")}function c(){s("socket closed")}function u(e){t&&e.name!==t.name&&(r('"%s" works - aborting "%s"',e.name,t.name),a())}const d=()=>{t.removeListener("open",o),t.removeListener("error",s),t.removeListener("close",i),this.removeListener("close",c),this.removeListener("upgrading",u)};t.once("open",o),t.once("error",s),t.once("close",i),this.once("close",c),this.once("upgrading",u),t.open()}onOpen(){if(r("socket open"),this.readyState="open",l.priorWebsocketSuccess="websocket"===this.transport.name,this.emit("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause){r("starting upgrade probes");let e=0;const t=this.upgrades.length;for(;e{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emit("drain"):this.flush()}flush(){"closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length&&(r("flushing %d packets in socket",this.writeBuffer.length),this.transport.send(this.writeBuffer),this.prevBufferLen=this.writeBuffer.length,this.emit("flush"))}write(e,t,n){return this.sendPacket("message",e,t,n),this}send(e,t,n){return this.sendPacket("message",e,t,n),this}sendPacket(e,t,n,o){if("function"==typeof t&&(o=t,t=void 0),"function"==typeof n&&(o=n,n=null),"closing"===this.readyState||"closed"===this.readyState)return;(n=n||{}).compress=!1!==n.compress;const a={type:e,data:t,options:n};this.emit("packetCreate",a),this.writeBuffer.push(a),o&&this.once("flush",o),this.flush()}close(){const e=()=>{this.onClose("forced close"),r("socket closing - telling transport to close"),this.transport.close()},t=()=>{this.removeListener("upgrade",t),this.removeListener("upgradeError",t),e()},n=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?n():e()})):this.upgrading?n():e()),this}onError(e){r("socket error %j",e),l.priorWebsocketSuccess=!1,this.emit("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(r('socket close with reason: "%s"',e),clearTimeout(this.pingIntervalTimer),clearTimeout(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&removeEventListener("offline",this.offlineEventListener,!1),this.readyState="closed",this.id=null,this.emit("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let n=0;const o=e.length;for(;n{const o=n(9743),a=n(8767),r=n(1227)("engine.io-client:transport");e.exports=class extends a{constructor(e){super(),this.opts=e,this.query=e.query,this.readyState="",this.socket=e.socket}onError(e,t){const n=new Error(e);return n.type="TransportError",n.description=t,this.emit("error",n),this}open(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState?this.write(e):r("transport is not open, discarding packets")}onOpen(){this.readyState="open",this.writable=!0,this.emit("open")}onData(e){const t=o.decodePacket(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){this.emit("packet",e)}onClose(){this.readyState="closed",this.emit("close")}}},3352:(e,t,n)=>{const o=n(2777),a=n(3416),r=n(9785),s=n(4442);t.polling=function(e){let t,n=!1,s=!1;const i=!1!==e.jsonp;if("undefined"!=typeof location){const t="https:"===location.protocol;let o=location.port;o||(o=t?443:80),n=e.hostname!==location.hostname||o!==e.port,s=e.secure!==t}if(e.xdomain=n,e.xscheme=s,t=new o(e),"open"in t&&!e.forceJSONP)return new a(e);if(!i)throw new Error("JSONP disabled");return new r(e)},t.websocket=s},9785:(e,t,n)=>{const o=n(9015),a=n(3549),r=/\n/g,s=/\\n/g;let i;e.exports=class extends o{constructor(e){super(e),this.query=this.query||{},i||(i=a.___eio=a.___eio||[]),this.index=i.length,i.push(this.onData.bind(this)),this.query.j=this.index}get supportsBinary(){return!1}doClose(){this.script&&(this.script.onerror=()=>{},this.script.parentNode.removeChild(this.script),this.script=null),this.form&&(this.form.parentNode.removeChild(this.form),this.form=null,this.iframe=null),super.doClose()}doPoll(){const e=document.createElement("script");this.script&&(this.script.parentNode.removeChild(this.script),this.script=null),e.async=!0,e.src=this.uri(),e.onerror=e=>{this.onError("jsonp poll error",e)};const t=document.getElementsByTagName("script")[0];t?t.parentNode.insertBefore(e,t):(document.head||document.body).appendChild(e),this.script=e,"undefined"!=typeof navigator&&/gecko/i.test(navigator.userAgent)&&setTimeout((function(){const e=document.createElement("iframe");document.body.appendChild(e),document.body.removeChild(e)}),100)}doWrite(e,t){let n;if(!this.form){const e=document.createElement("form"),t=document.createElement("textarea"),n=this.iframeId="eio_iframe_"+this.index;e.className="socketio",e.style.position="absolute",e.style.top="-1000px",e.style.left="-1000px",e.target=n,e.method="POST",e.setAttribute("accept-charset","utf-8"),t.name="d",e.appendChild(t),document.body.appendChild(e),this.form=e,this.area=t}function o(){a(),t()}this.form.action=this.uri();const a=()=>{if(this.iframe)try{this.form.removeChild(this.iframe)}catch(e){this.onError("jsonp polling iframe removal error",e)}try{const e='