diff --git a/.env.example b/.env.example
index 7f873ca..d25e432 100644
--- a/.env.example
+++ b/.env.example
@@ -7,7 +7,7 @@
 # any secret values.
 
 BOT_TOKEN=
-BOT_VER=0.8.3
+BOT_VER=0.8.4
 BOT_AUTHOR=Vylpes
 BOT_OWNERID=147392775707426816
 BOT_CLIENTID=682942374040961060
diff --git a/package.json b/package.json
index 32242a8..137ca15 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "card-drop",
-  "version": "0.8.3",
+  "version": "0.8.4",
   "main": "./dist/bot.js",
   "typings": "./dist",
   "scripts": {
@@ -30,6 +30,7 @@
     "@types/express": "^5.0.0",
     "@types/jest": "^29.5.14",
     "@types/uuid": "^10.0.0",
+    "axios": "^1.8.4",
     "body-parser": "^1.20.2",
     "canvas": "^2.11.2",
     "clone-deep": "^4.0.1",
@@ -42,6 +43,7 @@
     "jest": "^29.0.0",
     "jest-mock-extended": "^3.0.0",
     "jimp": "^1.6.0",
+    "minimatch": "9.0.5",
     "mysql": "^2.18.1",
     "ts-jest": "^29.0.0",
     "typeorm": "0.3.20",
diff --git a/src/client/appLogger.ts b/src/client/appLogger.ts
index f1ba1dc..6c33609 100644
--- a/src/client/appLogger.ts
+++ b/src/client/appLogger.ts
@@ -86,4 +86,12 @@ export default class AppLogger {
     public static LogSilly(label: string, message: string) {
         AppLogger.Logger.silly({ label, message });
     }
+
+    public static CatchError(label: string, error: unknown) {
+        if (error instanceof Error) {
+            AppLogger.Logger.error({ label, message: error.message });
+        } else {
+            AppLogger.Logger.error({ label, message: error });
+        }
+    }
 }
diff --git a/src/commands/series.ts b/src/commands/series.ts
index e268db9..16ae0db 100644
--- a/src/commands/series.ts
+++ b/src/commands/series.ts
@@ -60,13 +60,18 @@ export default class Series extends Command {
             return;
         }
 
-        const embed = await SeriesHelper.GenerateSeriesViewPage(series.id, 0, interaction.user.id);
+        try {
+            const embed = await SeriesHelper.GenerateSeriesViewPage(series.id, 0, interaction.user.id);
 
-        await interaction.followUp({
-            embeds: [ embed!.embed ],
-            components: [ embed!.row ],
-            files: [ embed!.image ],
-        });
+            await interaction.followUp({
+                embeds: [ embed!.embed ],
+                components: [ embed!.row ],
+                files: [ embed!.image ],
+            });
+        } catch (e) {
+            await interaction.followUp("An error has occured generating the series grid.");
+            AppLogger.CatchError("Series", e);
+        }
     }
 
     private async ListSeries(interaction: CommandInteraction) {
diff --git a/src/commands/stage/dropnumber.ts b/src/commands/stage/dropnumber.ts
index d04f8d3..c61ed43 100644
--- a/src/commands/stage/dropnumber.ts
+++ b/src/commands/stage/dropnumber.ts
@@ -1,4 +1,4 @@
-import { AttachmentBuilder, CacheType, CommandInteraction, DiscordAPIError, SlashCommandBuilder } from "discord.js";
+import { AttachmentBuilder, CacheType, CommandInteraction, SlashCommandBuilder } from "discord.js";
 import { Command } from "../../type/command";
 import { readFileSync } from "fs";
 import Inventory from "../../database/entities/app/Inventory";
@@ -6,6 +6,7 @@ import { v4 } from "uuid";
 import { CoreClient } from "../../client/client";
 import path from "path";
 import DropEmbedHelper from "../../helpers/DropHelpers/DropEmbedHelper";
+import AppLogger from "../../client/appLogger";
 
 export default class Dropnumber extends Command {
     constructor() {
@@ -40,9 +41,10 @@ export default class Dropnumber extends Command {
             return;
         }
 
-        const series = CoreClient.Cards
-            .find(x => x.cards.includes(card))!;
+        const claimId = v4();
+        await interaction.deferReply();
 
+    try {
         const files = [];
         let imageFileName = "";
 
@@ -55,31 +57,24 @@ export default class Dropnumber extends Command {
             files.push(attachment);
         }
 
-        await interaction.deferReply();
+        const series = CoreClient.Cards
+            .find(x => x.cards.includes(card))!;
 
         const inventory = await Inventory.FetchOneByCardNumberAndUserId(interaction.user.id, card.id);
         const quantityClaimed = inventory ? inventory.Quantity : 0;
 
         const embed = DropEmbedHelper.GenerateDropEmbed({ card, series }, quantityClaimed, imageFileName);
 
-        const claimId = v4();
-
         const row = DropEmbedHelper.GenerateDropButtons({ card, series }, claimId, interaction.user.id);
 
-        try {
-            await interaction.editReply({
-                embeds: [ embed ],
-                files: files,
-                components: [ row ],
-            });
+        await interaction.editReply({
+            embeds: [ embed ],
+            files: files,
+            components: [ row ],
+        });
         } catch (e) {
-            console.error(e);
-
-            if (e instanceof DiscordAPIError) {
-                await interaction.editReply(`Unable to send next drop. Please try again, and report this if it keeps happening. Code: ${e.code}`);
-            } else {
-                await interaction.editReply("Unable to send next drop. Please try again, and report this if it keeps happening. Code: UNKNOWN");
-            }
+            AppLogger.CatchError("Dropnumber", e);
+            await interaction.editReply("Unable to send next drop. Please try again, and report this if it keeps happening");
         }
     }
 }
\ No newline at end of file
diff --git a/src/commands/stage/droprarity.ts b/src/commands/stage/droprarity.ts
index 270b454..38e7973 100644
--- a/src/commands/stage/droprarity.ts
+++ b/src/commands/stage/droprarity.ts
@@ -1,6 +1,6 @@
-import { AttachmentBuilder, CacheType, CommandInteraction, DiscordAPIError, SlashCommandBuilder } from "discord.js";
+import { AttachmentBuilder, CacheType, CommandInteraction, SlashCommandBuilder } from "discord.js";
 import { Command } from "../../type/command";
-import { CardRarity, CardRarityParse } from "../../constants/CardRarity";
+import { CardRarity, CardRarityChoices, CardRarityParse } from "../../constants/CardRarity";
 import { readFileSync } from "fs";
 import Inventory from "../../database/entities/app/Inventory";
 import { v4 } from "uuid";
@@ -8,6 +8,7 @@ import { CoreClient } from "../../client/client";
 import path from "path";
 import GetCardsHelper from "../../helpers/DropHelpers/GetCardsHelper";
 import DropEmbedHelper from "../../helpers/DropHelpers/DropEmbedHelper";
+import AppLogger from "../../client/appLogger";
 
 export default class Droprarity extends Command {
     constructor() {
@@ -20,7 +21,8 @@ export default class Droprarity extends Command {
                 x
                     .setName("rarity")
                     .setDescription("The rarity you want to summon")
-                    .setRequired(true));
+                    .setRequired(true)
+                    .setChoices(CardRarityChoices));
     }
 
     public override async execute(interaction: CommandInteraction<CacheType>) {
@@ -47,41 +49,37 @@ export default class Droprarity extends Command {
             return;
         }
 
-        const files = [];
-        let imageFileName = "";
-
-        if (!(card.card.path.startsWith("http://") || card.card.path.startsWith("https://"))) {
-            const image = readFileSync(path.join(process.env.DATA_DIR!, "cards", card.card.path));
-            imageFileName = card.card.path.split("/").pop()!;
-
-            const attachment = new AttachmentBuilder(image, { name: imageFileName });
-
-            files.push(attachment);
-        }
-
-        const inventory = await Inventory.FetchOneByCardNumberAndUserId(interaction.user.id, card.card.id);
-        const quantityClaimed = inventory ? inventory.Quantity : 0;
-
-        const embed = DropEmbedHelper.GenerateDropEmbed(card, quantityClaimed, imageFileName);
-
         const claimId = v4();
-
-        const row = DropEmbedHelper.GenerateDropButtons(card, claimId, interaction.user.id);
+        await interaction.deferReply();
 
         try {
+            const files = [];
+            let imageFileName = "";
+
+            if (!(card.card.path.startsWith("http://") || card.card.path.startsWith("https://"))) {
+                const image = readFileSync(path.join(process.env.DATA_DIR!, "cards", card.card.path));
+                imageFileName = card.card.path.split("/").pop()!;
+
+                const attachment = new AttachmentBuilder(image, { name: imageFileName });
+
+                files.push(attachment);
+            }
+
+            const inventory = await Inventory.FetchOneByCardNumberAndUserId(interaction.user.id, card.card.id);
+            const quantityClaimed = inventory ? inventory.Quantity : 0;
+
+            const embed = DropEmbedHelper.GenerateDropEmbed(card, quantityClaimed, imageFileName);
+
+            const row = DropEmbedHelper.GenerateDropButtons(card, claimId, interaction.user.id);
+
             await interaction.editReply({
                 embeds: [ embed ],
                 files: files,
                 components: [ row ],
             });
         } catch (e) {
-            console.error(e);
-
-            if (e instanceof DiscordAPIError) {
-                await interaction.editReply(`Unable to send next drop. Please try again, and report this if it keeps happening. Code: ${e.code}`);
-            } else {
-                await interaction.editReply("Unable to send next drop. Please try again, and report this if it keeps happening. Code: UNKNOWN");
-            }
+            AppLogger.CatchError("Droprarity", e);
+            await interaction.editReply("Unable to send next drop. Please try again, and report this if it keeps happening");
         }
     }
 }
\ No newline at end of file
diff --git a/src/constants/CardRarity.ts b/src/constants/CardRarity.ts
index 8817172..0fcdec7 100644
--- a/src/constants/CardRarity.ts
+++ b/src/constants/CardRarity.ts
@@ -9,6 +9,29 @@ export enum CardRarity {
     Legendary,
 }
 
+export const CardRarityChoices = [
+    {
+        name: "Bronze",
+        value: "bronze",
+    },
+    {
+        name: "Silver",
+        value: "silver",
+    },
+    {
+        name: "Gold",
+        value: "gold",
+    },
+    {
+        name: "Manga",
+        value: "manga",
+    },
+    {
+        name: "Legendary",
+        value: "legendary",
+    },
+];
+
 export function CardRarityToString(rarity: CardRarity): string {
     switch (rarity) {
     case CardRarity.Unknown:
diff --git a/src/helpers/ImageHelper.ts b/src/helpers/ImageHelper.ts
index 4e43977..6bda409 100644
--- a/src/helpers/ImageHelper.ts
+++ b/src/helpers/ImageHelper.ts
@@ -3,7 +3,8 @@ import path from "path";
 import AppLogger from "../client/appLogger";
 import {existsSync} from "fs";
 import Inventory from "../database/entities/app/Inventory";
-import {Jimp} from "jimp";
+import { Bitmap, Jimp } from "jimp";
+import axios from "axios";
 
 interface CardInput {
     id: string;
@@ -25,36 +26,51 @@ export default class ImageHelper {
         const ctx = canvas.getContext("2d");
 
         for (let i = 0; i < cards.length; i++) {
-            const card = cards[i];
+            try {
+                const card = cards[i];
 
-            const filePath = path.join(process.env.DATA_DIR!, "cards", card.path);
+                const filePath = path.join(process.env.DATA_DIR!, "cards", card.path);
 
-            const exists = existsSync(filePath);
+                let bitmap: Bitmap;
 
-            if (!exists) {
-                AppLogger.LogError("ImageHelper/GenerateCardImageGrid", `Failed to load image from path ${card.path}`);
-                continue;
-            }
+                if (existsSync(filePath)) {
+                    const data = await Jimp.read(filePath);
 
-            const imageData = await Jimp.read(filePath);
+                    bitmap = data.bitmap;
+                } else if (card.path.startsWith("http://") || card.path.startsWith("https://")) {
+                    const response = await axios.get(card.path, { responseType: "arraybuffer" });
+                    const buffer = Buffer.from(response.data);
+                    const data = await Jimp.fromBuffer(buffer);
 
-            if (userId != null) {
-                const claimed = await Inventory.FetchOneByCardNumberAndUserId(userId, card.id);
-
-                if (!claimed || claimed.Quantity == 0) {
-                    imageData.greyscale();
+                    bitmap = data.bitmap;
+                } else {
+                    AppLogger.LogError("ImageHelper/GenerateCardImageGrid", `Failed to load image from path ${card.path}`);
+                    continue;
                 }
+
+                const imageData = Jimp.fromBitmap(bitmap);
+
+                if (userId != null) {
+                    const claimed = await Inventory.FetchOneByCardNumberAndUserId(userId, card.id);
+
+                    if (!claimed || claimed.Quantity == 0) {
+                        imageData.greyscale();
+                    }
+                }
+
+                const image = await loadImage(await imageData.getBuffer("image/png"));
+
+                const x = i % gridWidth;
+                const y = Math.floor(i / gridWidth);
+
+                const imageX = imageWidth * x;
+                const imageY = imageHeight * y;
+
+                ctx.drawImage(image, imageX, imageY);
+            }
+            catch (e) {
+                AppLogger.CatchError("ImageHelper", e);
             }
-
-            const image = await loadImage(await imageData.getBuffer("image/png"));
-
-            const x = i % gridWidth;
-            const y = Math.floor(i / gridWidth);
-
-            const imageX = imageWidth * x;
-            const imageY = imageHeight * y;
-
-            ctx.drawImage(image, imageX, imageY);
         }
 
         return canvas.toBuffer();
diff --git a/yarn.lock b/yarn.lock
index 0313723..0171528 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1591,6 +1591,15 @@ await-to-js@^3.0.0:
   resolved "https://registry.yarnpkg.com/await-to-js/-/await-to-js-3.0.0.tgz#70929994185616f4675a91af6167eb61cc92868f"
   integrity sha512-zJAaP9zxTcvTHRlejau3ZOY4V7SRpiByf3/dxx2uyKxxor19tpmpV2QRsTKikckwhaPmr2dVpxxMr7jOCYVp5g==
 
+axios@^1.8.4:
+  version "1.8.4"
+  resolved "https://registry.yarnpkg.com/axios/-/axios-1.8.4.tgz#78990bb4bc63d2cae072952d374835950a82f447"
+  integrity sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==
+  dependencies:
+    follow-redirects "^1.15.6"
+    form-data "^4.0.0"
+    proxy-from-env "^1.1.0"
+
 babel-jest@^29.7.0:
   version "29.7.0"
   resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5"
@@ -1794,6 +1803,14 @@ bytes@3.1.2:
   resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
   integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
 
+call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6"
+  integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==
+  dependencies:
+    es-errors "^1.3.0"
+    function-bind "^1.1.2"
+
 call-bind@^1.0.7:
   version "1.0.7"
   resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
@@ -2378,6 +2395,15 @@ dotenv@^16.0.0, dotenv@^16.0.3:
   resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f"
   integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==
 
+dunder-proto@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a"
+  integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==
+  dependencies:
+    call-bind-apply-helpers "^1.0.1"
+    es-errors "^1.3.0"
+    gopd "^1.2.0"
+
 eastasianwidth@^0.2.0:
   version "0.2.0"
   resolved "https://registry.yarnpkg.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
@@ -2454,12 +2480,39 @@ es-define-property@^1.0.0:
   dependencies:
     get-intrinsic "^1.2.4"
 
+es-define-property@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa"
+  integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==
+
 es-errors@^1.3.0:
   version "1.3.0"
   resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
   integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
 
-escalade@^3.1.1, escalade@^3.2.0:
+es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
+  version "1.1.1"
+  resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1"
+  integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==
+  dependencies:
+    es-errors "^1.3.0"
+
+es-set-tostringtag@^2.1.0:
+  version "2.1.0"
+  resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d"
+  integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==
+  dependencies:
+    es-errors "^1.3.0"
+    get-intrinsic "^1.2.6"
+    has-tostringtag "^1.0.2"
+    hasown "^2.0.2"
+
+escalade@^3.1.1:
+  version "3.1.2"
+  resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27"
+  integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==
+
+escalade@^3.2.0:
   version "3.2.0"
   resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5"
   integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
@@ -2874,6 +2927,11 @@ fn.name@1.x.x:
   resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc"
   integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==
 
+follow-redirects@^1.15.6:
+  version "1.15.9"
+  resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1"
+  integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==
+
 foreground-child@^3.1.0:
   version "3.3.0"
   resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-3.3.0.tgz#0ac8644c06e431439f8561db8ecf29a7b5519c77"
@@ -2891,6 +2949,16 @@ form-data@^3.0.0:
     combined-stream "^1.0.8"
     mime-types "^2.1.12"
 
+form-data@^4.0.0:
+  version "4.0.2"
+  resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.2.tgz#35cabbdd30c3ce73deb2c42d3c8d3ed9ca51794c"
+  integrity sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==
+  dependencies:
+    asynckit "^0.4.0"
+    combined-stream "^1.0.8"
+    es-set-tostringtag "^2.1.0"
+    mime-types "^2.1.12"
+
 formidable@^1.2.1:
   version "1.2.6"
   resolved "https://registry.yarnpkg.com/formidable/-/formidable-1.2.6.tgz#d2a51d60162bbc9b4a055d8457a7c75315d1a168"
@@ -2974,11 +3042,35 @@ get-intrinsic@^1.1.3, get-intrinsic@^1.2.4:
     has-symbols "^1.0.3"
     hasown "^2.0.0"
 
+get-intrinsic@^1.2.6:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01"
+  integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==
+  dependencies:
+    call-bind-apply-helpers "^1.0.2"
+    es-define-property "^1.0.1"
+    es-errors "^1.3.0"
+    es-object-atoms "^1.1.1"
+    function-bind "^1.1.2"
+    get-proto "^1.0.1"
+    gopd "^1.2.0"
+    has-symbols "^1.1.0"
+    hasown "^2.0.2"
+    math-intrinsics "^1.1.0"
+
 get-package-type@^0.1.0:
   version "0.1.0"
   resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a"
   integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
 
+get-proto@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1"
+  integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==
+  dependencies:
+    dunder-proto "^1.0.1"
+    es-object-atoms "^1.0.0"
+
 get-stream@^6.0.0:
   version "6.0.1"
   resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
@@ -3087,6 +3179,11 @@ gopd@^1.0.1:
   dependencies:
     get-intrinsic "^1.1.3"
 
+gopd@^1.2.0:
+  version "1.2.0"
+  resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1"
+  integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
+
 graceful-fs@4.2.10:
   version "4.2.10"
   resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
@@ -3136,6 +3233,18 @@ has-symbols@^1.0.3:
   resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
   integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
 
+has-symbols@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338"
+  integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==
+
+has-tostringtag@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc"
+  integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==
+  dependencies:
+    has-symbols "^1.0.3"
+
 has-unicode@^2.0.1:
   version "2.0.1"
   resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
@@ -4328,6 +4437,11 @@ makeerror@1.0.12:
   dependencies:
     tmpl "1.0.5"
 
+math-intrinsics@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9"
+  integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==
+
 media-typer@0.3.0:
   version "0.3.0"
   resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
@@ -4418,6 +4532,13 @@ mimic-response@^2.0.0:
   resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-2.1.0.tgz#d13763d35f613d09ec37ebb30bac0469c0ee8f43"
   integrity sha512-wXqjST+SLt7R009ySCglWBCFpjUygmCIfD790/kVbiGmUgfYGuB14PiTd5DwVxSV4NcYHjzMkoj5LjQZwTQLEA==
 
+minimatch@9.0.5, minimatch@^9.0.0, minimatch@^9.0.4:
+  version "9.0.5"
+  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
+  integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
+  dependencies:
+    brace-expansion "^2.0.1"
+
 minimatch@^10.0.0:
   version "10.0.1"
   resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-10.0.1.tgz#ce0521856b453c86e25f2c4c0d03e6ff7ddc440b"
@@ -4439,13 +4560,6 @@ minimatch@^5.0.1:
   dependencies:
     brace-expansion "^2.0.1"
 
-minimatch@^9.0.0, minimatch@^9.0.4:
-  version "9.0.5"
-  resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
-  integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
-  dependencies:
-    brace-expansion "^2.0.1"
-
 minimist@^1.2.0:
   version "1.2.8"
   resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
@@ -5007,7 +5121,12 @@ peek-readable@^4.1.0:
   resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72"
   integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==
 
-picocolors@^1.0.0, picocolors@^1.1.0:
+picocolors@^1.0.0:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1"
+  integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==
+
+picocolors@^1.1.0:
   version "1.1.1"
   resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
   integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
@@ -5098,6 +5217,11 @@ proxy-addr@~2.0.7:
     forwarded "0.2.0"
     ipaddr.js "1.9.1"
 
+proxy-from-env@^1.1.0:
+  version "1.1.0"
+  resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
+  integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
+
 punycode@^2.1.0:
   version "2.3.1"
   resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
@@ -5997,7 +6121,7 @@ type-fest@^3.0.0:
   resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-3.13.1.tgz#bb744c1f0678bea7543a2d1ec24e83e68e8c8706"
   integrity sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==
 
-type-fest@^4.18.2, type-fest@^4.21.0, type-fest@^4.6.0, type-fest@^4.7.1:
+type-fest@^4.21.0, type-fest@^4.6.0, type-fest@^4.7.1:
   version "4.26.1"
   resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.26.1.tgz#a4a17fa314f976dd3e6d6675ef6c775c16d7955e"
   integrity sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==
@@ -6412,6 +6536,6 @@ yoctocolors-cjs@^2.1.2:
   integrity sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==
 
 zod@^3.23.8:
-  version "3.23.8"
-  resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d"
-  integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==
+  version "3.24.3"
+  resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.3.tgz#1f40f750a05e477396da64438e0e1c0995dafd87"
+  integrity sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==