diff --git a/package-lock.json b/package-lock.json
index c62dc8e..cecd98f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
 {
   "name": "uptime-kuma",
-  "version": "1.0.7",
+  "version": "1.0.10",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
@@ -97,9 +97,9 @@
       }
     },
     "@babel/eslint-parser": {
-      "version": "7.14.7",
-      "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.14.7.tgz",
-      "integrity": "sha512-6WPwZqO5priAGIwV6msJcdc9TsEPzYeYdS/Xuoap+/ihkgN6dzHp2bcAAwyWZ5bLzk0vvjDmKvRwkqNaiJ8BiQ==",
+      "version": "7.15.0",
+      "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.15.0.tgz",
+      "integrity": "sha512-+gSPtjSBxOZz4Uh8Ggqu7HbfpB8cT1LwW0DnVVLZEJvzXauiD0Di3zszcBkRmfGGrLdYeHUwcflG7i3tr9kQlw==",
       "dev": true,
       "requires": {
         "eslint-scope": "^5.1.1",
@@ -384,9 +384,9 @@
       "integrity": "sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA=="
     },
     "@babel/standalone": {
-      "version": "7.14.8",
-      "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.14.8.tgz",
-      "integrity": "sha512-5Aa1Bhis4oZD23iLJE5CDYHEs1zSC3ejppHE5aim0OWjGCWTa9Oq1PwopK4u1++ao6B6POW/PqNZjOCZNTSx0Q==",
+      "version": "7.15.1",
+      "resolved": "https://registry.npmjs.org/@babel/standalone/-/standalone-7.15.1.tgz",
+      "integrity": "sha512-OJvIUtmXWEnTFvm+/TSMFkJK9vmbOF1wNmu/vbU18/Hlj9E6JdrkWxTkwbrsM1UjLtyb4w+pwZ/A1C4XZXorXg==",
       "dev": true
     },
     "@babel/template": {
@@ -502,32 +502,32 @@
       }
     },
     "@fortawesome/fontawesome-common-types": {
-      "version": "0.2.35",
-      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.35.tgz",
-      "integrity": "sha512-IHUfxSEDS9dDGqYwIW7wTN6tn/O8E0n5PcAHz9cAaBoZw6UpG20IG/YM3NNLaGPwPqgjBAFjIURzqoQs3rrtuw=="
+      "version": "0.2.36",
+      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.36.tgz",
+      "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg=="
     },
     "@fortawesome/fontawesome-svg-core": {
-      "version": "1.2.35",
-      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.35.tgz",
-      "integrity": "sha512-uLEXifXIL7hnh2sNZQrIJWNol7cTVIzwI+4qcBIq9QWaZqUblm0IDrtSqbNg+3SQf8SMGHkiSigD++rHmCHjBg==",
+      "version": "1.2.36",
+      "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.36.tgz",
+      "integrity": "sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA==",
       "requires": {
-        "@fortawesome/fontawesome-common-types": "^0.2.35"
+        "@fortawesome/fontawesome-common-types": "^0.2.36"
       }
     },
     "@fortawesome/free-regular-svg-icons": {
-      "version": "5.15.3",
-      "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-5.15.3.tgz",
-      "integrity": "sha512-q4/p8Xehy9qiVTdDWHL4Z+o5PCLRChePGZRTXkl+/Z7erDVL8VcZUuqzJjs6gUz6czss4VIPBRdCz6wP37/zMQ==",
+      "version": "5.15.4",
+      "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-5.15.4.tgz",
+      "integrity": "sha512-9VNNnU3CXHy9XednJ3wzQp6SwNwT3XaM26oS4Rp391GsxVYA+0oDR2J194YCIWf7jNRCYKjUCOduxdceLrx+xw==",
       "requires": {
-        "@fortawesome/fontawesome-common-types": "^0.2.35"
+        "@fortawesome/fontawesome-common-types": "^0.2.36"
       }
     },
     "@fortawesome/free-solid-svg-icons": {
-      "version": "5.15.3",
-      "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.3.tgz",
-      "integrity": "sha512-XPeeu1IlGYqz4VWGRAT5ukNMd4VHUEEJ7ysZ7pSSgaEtNvSo+FLurybGJVmiqkQdK50OkSja2bfZXOeyMGRD8Q==",
+      "version": "5.15.4",
+      "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.4.tgz",
+      "integrity": "sha512-JLmQfz6tdtwxoihXLg6lT78BorrFyCf59SAwBM6qV/0zXyVeDygJVb3fk+j5Qat+Yvcxp1buLTY5iDh1ZSAQ8w==",
       "requires": {
-        "@fortawesome/fontawesome-common-types": "^0.2.35"
+        "@fortawesome/fontawesome-common-types": "^0.2.36"
       }
     },
     "@fortawesome/vue-fontawesome": {
@@ -579,9 +579,9 @@
       }
     },
     "@popperjs/core": {
-      "version": "2.9.2",
-      "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.2.tgz",
-      "integrity": "sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q=="
+      "version": "2.9.3",
+      "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.9.3.tgz",
+      "integrity": "sha512-xDu17cEfh7Kid/d95kB6tZsLOmSWKCZKtprnhVepjsSaCij+lM3mItSJDuuHDMbCWTh8Ejmebwb+KONcCJ0eXQ=="
     },
     "@stylelint/postcss-css-in-js": {
       "version": "0.37.2",
@@ -811,13 +811,13 @@
       "dev": true
     },
     "@vitejs/plugin-legacy": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-1.5.0.tgz",
-      "integrity": "sha512-q3F6/AEn6LNvK0ERkn0t8gzXTwPdexW4FtsIeIsCxopj02EQLtKi3XfWukU9+kjU599QouyRihvr+C2qO+0Xeg==",
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/@vitejs/plugin-legacy/-/plugin-legacy-1.5.1.tgz",
+      "integrity": "sha512-g+0iy0X3NJRUSKZK+OCeSxNWnCuuE/6lsmr2WLWPOEt1vp6LdfHuNCYRooCm6s0ccTZ/SiumVk8vt9DWSYs+8A==",
       "dev": true,
       "requires": {
-        "@babel/standalone": "^7.14.8",
-        "core-js": "^3.15.2",
+        "@babel/standalone": "^7.14.9",
+        "core-js": "^3.16.0",
         "magic-string": "^0.25.7",
         "regenerator-runtime": "^0.13.9",
         "systemjs": "^6.10.2"
@@ -830,24 +830,24 @@
       "dev": true
     },
     "@vue/compiler-core": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.1.1.tgz",
-      "integrity": "sha512-Z1RO3T6AEtAUFf2EqqovFm3ohAeTvFzRtB0qUENW2nEerJfdlk13/LS1a0EgsqlzxmYfR/S/S/gW9PLbFZZxkA==",
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.1.5.tgz",
+      "integrity": "sha512-TXBhFinoBaXKDykJzY26UEuQU1K07FOp/0Ie+OXySqqk0bS0ZO7Xvl7UmiTUPYcLrWbxWBR7Bs/y55AI0MNc2Q==",
       "requires": {
         "@babel/parser": "^7.12.0",
         "@babel/types": "^7.12.0",
-        "@vue/shared": "3.1.1",
+        "@vue/shared": "3.1.5",
         "estree-walker": "^2.0.1",
         "source-map": "^0.6.1"
       }
     },
     "@vue/compiler-dom": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.1.1.tgz",
-      "integrity": "sha512-nobRIo0t5ibzg+q8nC31m+aJhbq8FbWUoKvk6h3Vs1EqTDJaj6lBTcVTq5or8AYht7FbSpdAJ81isbJ1rWNX7A==",
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.1.5.tgz",
+      "integrity": "sha512-ZsL3jqJ52OjGU/YiT/9XiuZAmWClKInZM2aFJh9gnsAPqOrj2JIELMbkIFpVKR/CrVO/f2VxfPiiQdQTr65jcQ==",
       "requires": {
-        "@vue/compiler-core": "3.1.1",
-        "@vue/shared": "3.1.1"
+        "@vue/compiler-core": "3.1.5",
+        "@vue/shared": "3.1.5"
       }
     },
     "@vue/compiler-sfc": {
@@ -953,36 +953,36 @@
       "integrity": "sha512-44fPrrN1cqcs6bFkT0C+yxTM6PZXLbR+ESh1U1j8UD22yO04gXvxH62HApMjLbS3WqJO/iCNC+CYT+evPQh2EQ=="
     },
     "@vue/reactivity": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.1.tgz",
-      "integrity": "sha512-DsH5woNVCcPK1M0RRYVgJEU1GJDU2ASOKpAqW3ppHk+XjoFLCbqc/26RTCgTpJYd9z8VN+79Q1u7/QqgQPbuLQ==",
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.5.tgz",
+      "integrity": "sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==",
       "requires": {
-        "@vue/shared": "3.1.1"
+        "@vue/shared": "3.1.5"
       }
     },
     "@vue/runtime-core": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.1.1.tgz",
-      "integrity": "sha512-GboqR02txOtkd9F3Ysd8ltPL68vTCqIx2p/J52/gFtpgb5FG9hvOAPEwFUqxeEJRu7ResvQnmdOHiEycGPCLhQ==",
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.1.5.tgz",
+      "integrity": "sha512-YQbG5cBktN1RowQDKA22itmvQ+b40f0WgQ6CXK4VYoYICAiAfu6Cc14777ve8zp1rJRGtk5oIeS149TOculrTg==",
       "requires": {
-        "@vue/reactivity": "3.1.1",
-        "@vue/shared": "3.1.1"
+        "@vue/reactivity": "3.1.5",
+        "@vue/shared": "3.1.5"
       }
     },
     "@vue/runtime-dom": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.1.1.tgz",
-      "integrity": "sha512-o57n/199e/BBAmLRMSXmD2r12Old/h/gf6BgL0RON1NT2pwm6MWaMY4Ul55eyq+FsDILz4jR/UgoPQ9vYB8xcw==",
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.1.5.tgz",
+      "integrity": "sha512-tNcf3JhVR0RfW0kw1p8xZgv30nvX8Y9rsz7eiQ0dHe273sfoCngAG0y4GvMaY4Xd8FsjUwFedd4suQ8Lu8meXg==",
       "requires": {
-        "@vue/runtime-core": "3.1.1",
-        "@vue/shared": "3.1.1",
+        "@vue/runtime-core": "3.1.5",
+        "@vue/shared": "3.1.5",
         "csstype": "^2.6.8"
       }
     },
     "@vue/shared": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.1.tgz",
-      "integrity": "sha512-g+4pzAw7PYSjARtLBoDq6DmcblX8i9KJHSCnyM5VDDFFifUaUT9iHbFpOF/KOizQ9f7QAqU2JH3Y6aXjzUMhVA=="
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz",
+      "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA=="
     },
     "abbrev": {
       "version": "1.1.1",
@@ -1428,11 +1428,6 @@
       "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
       "dev": true
     },
-    "bignumber.js": {
-      "version": "9.0.0",
-      "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz",
-      "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A=="
-    },
     "binary-extensions": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
@@ -1492,9 +1487,9 @@
       }
     },
     "bootstrap": {
-      "version": "5.0.2",
-      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.0.2.tgz",
-      "integrity": "sha512-1Ge963tyEQWJJ+8qtXFU6wgmAVj9gweEjibUdbmcCEYsn38tVwRk8107rk2vzt6cfQcRr3SlZ8aQBqaD8aqf+Q=="
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.0.tgz",
+      "integrity": "sha512-bs74WNI9BgBo3cEovmdMHikSKoXnDgA6VQjJ7TyTotU6L7d41ZyCEEelPwkYEzsG/Zjv3ie9IE3EMAje0W9Xew=="
     },
     "brace-expansion": {
       "version": "1.1.11",
@@ -1823,9 +1818,9 @@
       "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
     },
     "core-js": {
-      "version": "3.15.2",
-      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.15.2.tgz",
-      "integrity": "sha512-tKs41J7NJVuaya8DxIOCnl8QuPHx5/ZVbFo1oKgVl1qHFBBrDctzQGtuLjPpRdNTWmKPH6oEvgN/MUID+l485Q==",
+      "version": "3.16.0",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.16.0.tgz",
+      "integrity": "sha512-5+5VxRFmSf97nM8Jr2wzOwLqRo6zphH2aX+7KsAUONObyzakDNq2G/bgbhinxB4PoV9L3aXQYhiDKyIKWd2c8g==",
       "dev": true
     },
     "core-util-is": {
@@ -2223,9 +2218,9 @@
       "dev": true
     },
     "eslint": {
-      "version": "7.31.0",
-      "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.31.0.tgz",
-      "integrity": "sha512-vafgJpSh2ia8tnTkNUkwxGmnumgckLh5aAbLa1xRmIn9+owi8qBNGKL+B881kNKNTy7FFqTEkpNkUvmw0n6PkA==",
+      "version": "7.32.0",
+      "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz",
+      "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==",
       "dev": true,
       "requires": {
         "@babel/code-frame": "7.12.11",
@@ -2318,15 +2313,15 @@
       }
     },
     "eslint-plugin-vue": {
-      "version": "7.14.0",
-      "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.14.0.tgz",
-      "integrity": "sha512-IW5A2Td0wEWjFGaGVEO24JNXa8cVFzAQTXrYv/Vu3zyDVS9sjwOpZY0iqub7FOkT2AK3Imtw4U4wg48pP9oWww==",
+      "version": "7.15.1",
+      "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.15.1.tgz",
+      "integrity": "sha512-4/r+n/i+ovyeW2gVRRH92kpy4lkpFbyPR4BMxGBTLtGnwqOKKzjSo6EMSaT0RhWPvEjK9uifcY8e7z5n8BIEgw==",
       "dev": true,
       "requires": {
         "eslint-utils": "^2.1.0",
         "natural-compare": "^1.4.0",
         "semver": "^6.3.0",
-        "vue-eslint-parser": "^7.9.0"
+        "vue-eslint-parser": "^7.10.0"
       },
       "dependencies": {
         "semver": {
@@ -3271,9 +3266,9 @@
       }
     },
     "http-graceful-shutdown": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/http-graceful-shutdown/-/http-graceful-shutdown-3.1.2.tgz",
-      "integrity": "sha512-2vmU3kWOsZqZy4Kn4EZp00CF+6glpNNN/NAYJPkO9bnMX/D8sRl29TsxIu9Vgyo8ygtCWazWJp720zHfqhSdXg==",
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/http-graceful-shutdown/-/http-graceful-shutdown-3.1.3.tgz",
+      "integrity": "sha512-o8NmJM4fS3KO8y+pCY4nY88NSNxjob+TyhzW22U155tNIxPPkTD9N2LDIhib+LbYQtuNdtXbCVxuYaoNy78ENw==",
       "requires": {
         "debug": "^4.3.1"
       }
@@ -4284,17 +4279,6 @@
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
     },
-    "mysql": {
-      "version": "2.18.1",
-      "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz",
-      "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==",
-      "requires": {
-        "bignumber.js": "9.0.0",
-        "readable-stream": "2.3.7",
-        "safe-buffer": "5.1.2",
-        "sqlstring": "2.3.1"
-      }
-    },
     "nanoid": {
       "version": "3.1.23",
       "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz",
@@ -5443,23 +5427,22 @@
       }
     },
     "redbean-node": {
-      "version": "0.0.20",
-      "resolved": "https://registry.npmjs.org/redbean-node/-/redbean-node-0.0.20.tgz",
-      "integrity": "sha512-CcELyir3SETk3bznAcZqZgWUpxE0jWUxY6v4oHCh+MQgG/gpJQbyCC7LGA3XHHNidXGPoKbz2L2MQBqFhrUGqw==",
+      "version": "0.0.21",
+      "resolved": "https://registry.npmjs.org/redbean-node/-/redbean-node-0.0.21.tgz",
+      "integrity": "sha512-Zi3REEOL02WvqQtVapOLqbUCQ1wGIiMjDDGwDmJfeqqRNlj/4uLpHyB3hZLt+hd5S2RaM/4J8kLY+J5uTyrHBw==",
       "requires": {
-        "@types/node": "^14.11.2",
+        "@types/node": "^14.17.7",
         "await-lock": "^2.1.0",
-        "dayjs": "^1.9.3",
-        "glob": "^7.1.6",
-        "knex": "^0.21.6",
-        "mysql": "^2.18.1",
-        "sqlite3": "^5.0.0"
+        "dayjs": "^1.10.6",
+        "glob": "^7.1.7",
+        "knex": "^0.21.17",
+        "lodash": "^4.17.21"
       },
       "dependencies": {
         "@types/node": {
-          "version": "14.17.3",
-          "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.3.tgz",
-          "integrity": "sha512-e6ZowgGJmTuXa3GyaPbTGxX17tnThl2aSSizrFthQ7m9uLGZBXiGhgE55cjRZTF5kjZvYn9EOPOMljdjwbflxw=="
+          "version": "14.17.9",
+          "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.9.tgz",
+          "integrity": "sha512-CMjgRNsks27IDwI785YMY0KLt3co/c0cQ5foxHYv/shC2w8oOnVwz5Ubq1QG5KzrcW+AXk6gzdnxIkDnTvzu3g=="
         }
       }
     },
@@ -5671,9 +5654,9 @@
       "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
     },
     "sass": {
-      "version": "1.36.0",
-      "resolved": "https://registry.npmjs.org/sass/-/sass-1.36.0.tgz",
-      "integrity": "sha512-fQzEjipfOv5kh930nu3Imzq3ie/sGDc/4KtQMJlt7RRdrkQSfe37Bwi/Rf/gfuYHsIuE1fIlDMvpyMcEwjnPvg==",
+      "version": "1.37.5",
+      "resolved": "https://registry.npmjs.org/sass/-/sass-1.37.5.tgz",
+      "integrity": "sha512-Cx3ewxz9QB/ErnVIiWg2cH0kiYZ0FPvheDTVC6BsiEGBTZKKZJ1Gq5Kq6jy3PKtL6+EJ8NIoaBW/RSd2R6cZOA==",
       "dev": true,
       "requires": {
         "chokidar": ">=3.0.0 <4.0.0"
@@ -6098,11 +6081,6 @@
         "node-pre-gyp": "^0.11.0"
       }
     },
-    "sqlstring": {
-      "version": "2.3.1",
-      "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz",
-      "integrity": "sha1-R1OT/56RR5rqYtyvDKPRSYOn+0A="
-    },
     "sshpk": {
       "version": "1.16.1",
       "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
@@ -6967,13 +6945,13 @@
       }
     },
     "vue": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/vue/-/vue-3.1.1.tgz",
-      "integrity": "sha512-j9fj3PNPMxo2eqOKYjMuss9XBS8ZtmczLY3kPvjcp9d3DbhyNqLYbaMQH18+1pDIzzVvQCQBvIf774LsjjqSKA==",
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/vue/-/vue-3.1.5.tgz",
+      "integrity": "sha512-Ho7HNb1nfDoO+HVb6qYZgeaobt1XbY6KXFe4HGs1b9X6RhkWG/113n4/SrtM1LUclM6OrP/Se5aPHHvAPG1iVQ==",
       "requires": {
-        "@vue/compiler-dom": "3.1.1",
-        "@vue/runtime-dom": "3.1.1",
-        "@vue/shared": "3.1.1"
+        "@vue/compiler-dom": "3.1.5",
+        "@vue/runtime-dom": "3.1.5",
+        "@vue/shared": "3.1.5"
       }
     },
     "vue-confirm-dialog": {
diff --git a/package.json b/package.json
index def27f7..78ccf88 100644
--- a/package.json
+++ b/package.json
@@ -24,47 +24,47 @@
         "mark-as-nightly": "node extra/mark-as-nightly.js"
     },
     "dependencies": {
-        "@fortawesome/fontawesome-svg-core": "^1.2.35",
-        "@fortawesome/free-regular-svg-icons": "^5.15.3",
-        "@fortawesome/free-solid-svg-icons": "^5.15.3",
+        "@fortawesome/fontawesome-svg-core": "^1.2.36",
+        "@fortawesome/free-regular-svg-icons": "^5.15.4",
+        "@fortawesome/free-solid-svg-icons": "^5.15.4",
         "@fortawesome/vue-fontawesome": "^3.0.0-4",
-        "@popperjs/core": "^2.9.2",
+        "@popperjs/core": "^2.9.3",
         "args-parser": "^1.3.0",
         "axios": "^0.21.1",
         "bcrypt": "^5.0.1",
-        "bootstrap": "^5.0.2",
+        "bootstrap": "^5.1.0",
         "command-exists": "^1.2.9",
         "dayjs": "^1.10.6",
         "express": "^4.17.1",
         "express-basic-auth": "^1.2.0",
         "form-data": "^4.0.0",
-        "http-graceful-shutdown": "^3.1.2",
+        "http-graceful-shutdown": "^3.1.3",
         "jsonwebtoken": "^8.5.1",
         "nodemailer": "^6.6.3",
         "password-hash": "^1.2.2",
         "prom-client": "^13.1.0",
         "prometheus-api-metrics": "^3.2.0",
-        "redbean-node": "0.0.20",
+        "redbean-node": "0.0.21",
         "socket.io": "^4.1.3",
         "socket.io-client": "^4.1.3",
         "sqlite3": "^5.0.2",
         "tcp-ping": "^0.1.1",
         "v-pagination-3": "^0.1.6",
-        "vue": "^3.0.5",
+        "vue": "^3.1.5",
         "vue-confirm-dialog": "^1.0.2",
         "vue-router": "^4.0.10",
         "vue-toastification": "^2.0.0-rc.1"
     },
     "devDependencies": {
-        "@babel/eslint-parser": "^7.13.10",
+        "@babel/eslint-parser": "^7.15.0",
         "@types/bootstrap": "^5.0.17",
-        "@vitejs/plugin-legacy": "^1.5.0",
+        "@vitejs/plugin-legacy": "^1.5.1",
         "@vitejs/plugin-vue": "^1.3.0",
         "@vue/compiler-sfc": "^3.1.5",
-        "core-js": "^3.15.2",
-        "eslint": "^7.31.0",
-        "eslint-plugin-vue": "^7.14.0",
-        "sass": "^1.36.0",
+        "core-js": "^3.16.0",
+        "eslint": "^7.32.0",
+        "eslint-plugin-vue": "^7.15.1",
+        "sass": "^1.37.5",
         "stylelint": "^13.13.1",
         "stylelint-config-recommended": "^5.0.0",
         "stylelint-config-standard": "^22.0.0",