From 400fc13cf2b2908586cfd1bdf7c15924d1d0bc66 Mon Sep 17 00:00:00 2001
From: LouisLam <louislam@users.noreply.github.com>
Date: Sun, 12 Sep 2021 12:39:22 +0800
Subject: [PATCH 01/10] add npm install script for npm7

---
 package-lock.json | 823 +++++++++++++++++++++++++++++++++++++++++++++-
 package.json      |   2 +
 2 files changed, 812 insertions(+), 13 deletions(-)

diff --git a/package-lock.json b/package-lock.json
index dcf5077d..54ef9a2e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
 {
     "name": "uptime-kuma",
-    "version": "1.5.2",
+    "version": "1.6.0",
     "lockfileVersion": 2,
     "requires": true,
     "packages": {
         "": {
             "name": "uptime-kuma",
-            "version": "1.5.2",
+            "version": "1.6.0",
             "license": "MIT",
             "dependencies": {
                 "@fortawesome/fontawesome-svg-core": "^1.2.36",
@@ -29,20 +29,24 @@
                 "http-graceful-shutdown": "^3.1.4",
                 "jsonwebtoken": "^8.5.1",
                 "nodemailer": "^6.6.3",
+                "notp": "^2.0.3",
                 "password-hash": "^1.2.2",
                 "prom-client": "^13.2.0",
                 "prometheus-api-metrics": "^3.2.0",
+                "qrcode": "^1.4.4",
                 "redbean-node": "0.1.2",
                 "socket.io": "^4.2.0",
                 "socket.io-client": "^4.2.0",
                 "sqlite3": "github:mapbox/node-sqlite3#593c9d",
                 "tcp-ping": "^0.1.1",
+                "thirty-two": "^1.0.2",
                 "v-pagination-3": "^0.1.6",
                 "vue": "^3.2.8",
                 "vue-chart-3": "^0.5.7",
                 "vue-confirm-dialog": "^1.0.2",
                 "vue-i18n": "^9.1.7",
                 "vue-multiselect": "^3.0.0-alpha.2",
+                "vue-qrcode": "^1.0.0",
                 "vue-router": "^4.0.11",
                 "vue-toastification": "^2.0.0-rc.1"
             },
@@ -1576,6 +1580,25 @@
                 "node": ">= 0.6.0"
             }
         },
+        "node_modules/base64-js": {
+            "version": "1.5.1",
+            "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+            "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ]
+        },
         "node_modules/base64id": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
@@ -1727,11 +1750,58 @@
                 "url": "https://opencollective.com/browserslist"
             }
         },
+        "node_modules/buffer": {
+            "version": "5.7.1",
+            "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+            "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ],
+            "dependencies": {
+                "base64-js": "^1.3.1",
+                "ieee754": "^1.1.13"
+            }
+        },
+        "node_modules/buffer-alloc": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+            "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+            "dependencies": {
+                "buffer-alloc-unsafe": "^1.1.0",
+                "buffer-fill": "^1.0.0"
+            }
+        },
+        "node_modules/buffer-alloc-unsafe": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+            "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
+        },
         "node_modules/buffer-equal-constant-time": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
             "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
         },
+        "node_modules/buffer-fill": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+            "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
+        },
+        "node_modules/buffer-from": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+            "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+        },
         "node_modules/bytes": {
             "version": "3.1.0",
             "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
@@ -1753,7 +1823,6 @@
             "version": "5.3.1",
             "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
             "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-            "dev": true,
             "engines": {
                 "node": ">=6"
             }
@@ -1880,6 +1949,61 @@
                 "node": ">=10"
             }
         },
+        "node_modules/cliui": {
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+            "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+            "dependencies": {
+                "string-width": "^3.1.0",
+                "strip-ansi": "^5.2.0",
+                "wrap-ansi": "^5.1.0"
+            }
+        },
+        "node_modules/cliui/node_modules/ansi-regex": {
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+            "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/cliui/node_modules/emoji-regex": {
+            "version": "7.0.3",
+            "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+            "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+        },
+        "node_modules/cliui/node_modules/is-fullwidth-code-point": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+            "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/cliui/node_modules/string-width": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+            "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+            "dependencies": {
+                "emoji-regex": "^7.0.1",
+                "is-fullwidth-code-point": "^2.0.0",
+                "strip-ansi": "^5.1.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/cliui/node_modules/strip-ansi": {
+            "version": "5.2.0",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+            "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+            "dependencies": {
+                "ansi-regex": "^4.1.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
         "node_modules/clone-regexp": {
             "version": "2.2.0",
             "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz",
@@ -2133,7 +2257,6 @@
             "version": "1.2.0",
             "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
             "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-            "dev": true,
             "engines": {
                 "node": ">=0.10.0"
             }
@@ -2203,6 +2326,11 @@
                 "node": ">=0.10"
             }
         },
+        "node_modules/dijkstrajs": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz",
+            "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg=="
+        },
         "node_modules/dir-glob": {
             "version": "3.0.1",
             "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
@@ -3109,6 +3237,14 @@
                 "node": ">=6.9.0"
             }
         },
+        "node_modules/get-caller-file": {
+            "version": "2.0.5",
+            "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+            "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+            "engines": {
+                "node": "6.* || 8.* || >= 10.*"
+            }
+        },
         "node_modules/get-stdin": {
             "version": "8.0.0",
             "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
@@ -3492,6 +3628,25 @@
                 "postcss": "^8.1.0"
             }
         },
+        "node_modules/ieee754": {
+            "version": "1.2.1",
+            "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+            "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+            "funding": [
+                {
+                    "type": "github",
+                    "url": "https://github.com/sponsors/feross"
+                },
+                {
+                    "type": "patreon",
+                    "url": "https://www.patreon.com/feross"
+                },
+                {
+                    "type": "consulting",
+                    "url": "https://feross.org/support"
+                }
+            ]
+        },
         "node_modules/ignore": {
             "version": "4.0.6",
             "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
@@ -4651,6 +4806,14 @@
             "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=",
             "dev": true
         },
+        "node_modules/notp": {
+            "version": "2.0.3",
+            "resolved": "https://registry.npmjs.org/notp/-/notp-2.0.3.tgz",
+            "integrity": "sha1-qf0R4lz+HMs5/GaJVE7kwQ75pXc=",
+            "engines": {
+                "node": "> v0.6.0"
+            }
+        },
         "node_modules/npmlog": {
             "version": "4.1.2",
             "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
@@ -4733,7 +4896,6 @@
             "version": "2.3.0",
             "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
             "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-            "dev": true,
             "dependencies": {
                 "p-try": "^2.0.0"
             },
@@ -4760,7 +4922,6 @@
             "version": "2.2.0",
             "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
             "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-            "dev": true,
             "engines": {
                 "node": ">=6"
             }
@@ -4918,6 +5079,14 @@
                 "node": ">= 0.4.0"
             }
         },
+        "node_modules/pngjs": {
+            "version": "3.4.0",
+            "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
+            "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==",
+            "engines": {
+                "node": ">=4.0.0"
+            }
+        },
         "node_modules/postcss": {
             "version": "8.3.6",
             "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.6.tgz",
@@ -5602,6 +5771,31 @@
                 "node": ">=6"
             }
         },
+        "node_modules/qrcode": {
+            "version": "1.4.4",
+            "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz",
+            "integrity": "sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==",
+            "dependencies": {
+                "buffer": "^5.4.3",
+                "buffer-alloc": "^1.2.0",
+                "buffer-from": "^1.1.1",
+                "dijkstrajs": "^1.0.1",
+                "isarray": "^2.0.1",
+                "pngjs": "^3.3.0",
+                "yargs": "^13.2.4"
+            },
+            "bin": {
+                "qrcode": "bin/qrcode"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/qrcode/node_modules/isarray": {
+            "version": "2.0.5",
+            "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+            "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
+        },
         "node_modules/qs": {
             "version": "6.7.0",
             "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
@@ -5929,6 +6123,14 @@
                 "node": ">=0.6"
             }
         },
+        "node_modules/require-directory": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+            "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
         "node_modules/require-from-string": {
             "version": "2.0.2",
             "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
@@ -5938,6 +6140,11 @@
                 "node": ">=0.10.0"
             }
         },
+        "node_modules/require-main-filename": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+            "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+        },
         "node_modules/resolve": {
             "version": "1.20.0",
             "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
@@ -6925,6 +7132,14 @@
             "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
             "dev": true
         },
+        "node_modules/thirty-two": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/thirty-two/-/thirty-two-1.0.2.tgz",
+            "integrity": "sha1-TKL//AKlEpDSdEueP1V2k8prYno=",
+            "engines": {
+                "node": ">=0.2.6"
+            }
+        },
         "node_modules/tildify": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz",
@@ -6993,6 +7208,11 @@
                 "url": "https://github.com/sponsors/wooorm"
             }
         },
+        "node_modules/tslib": {
+            "version": "2.3.1",
+            "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+            "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
+        },
         "node_modules/tunnel-agent": {
             "version": "0.6.0",
             "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -7413,6 +7633,50 @@
                 "npm": ">= 3.0.0"
             }
         },
+        "node_modules/vue-qrcode": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/vue-qrcode/-/vue-qrcode-1.0.0.tgz",
+            "integrity": "sha512-rzFR9bTMpsY9lhsABmQw7JbRrOV7NAUbz7E+mu6bMjYpFHoRbH1OVlPxALcxJ0veX3Njt5vfA7pMM5dx1KMLow==",
+            "dependencies": {
+                "tslib": "^2.2.0",
+                "vue-demi": "^0.11.3"
+            },
+            "peerDependencies": {
+                "@vue/composition-api": "^1.0.0",
+                "qrcode": "^1.0.0",
+                "vue": "^2.0.0 || ^3.0.0"
+            },
+            "peerDependenciesMeta": {
+                "@vue/composition-api": {
+                    "optional": true
+                }
+            }
+        },
+        "node_modules/vue-qrcode/node_modules/vue-demi": {
+            "version": "0.11.4",
+            "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.11.4.tgz",
+            "integrity": "sha512-/3xFwzSykLW2HiiLie43a+FFgNOcokbBJ+fzvFXd0r2T8MYohqvphUyDQ8lbAwzQ3Dlcrb1c9ykifGkhSIAk6A==",
+            "hasInstallScript": true,
+            "bin": {
+                "vue-demi-fix": "bin/vue-demi-fix.js",
+                "vue-demi-switch": "bin/vue-demi-switch.js"
+            },
+            "engines": {
+                "node": ">=12"
+            },
+            "funding": {
+                "url": "https://github.com/sponsors/antfu"
+            },
+            "peerDependencies": {
+                "@vue/composition-api": "^1.0.0-rc.1",
+                "vue": "^3.0.0-0 || ^2.6.0"
+            },
+            "peerDependenciesMeta": {
+                "@vue/composition-api": {
+                    "optional": true
+                }
+            }
+        },
         "node_modules/vue-router": {
             "version": "4.0.11",
             "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.0.11.tgz",
@@ -7447,6 +7711,11 @@
                 "node": ">= 8"
             }
         },
+        "node_modules/which-module": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+            "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
+        },
         "node_modules/wide-align": {
             "version": "1.1.3",
             "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
@@ -7464,6 +7733,88 @@
                 "node": ">=0.10.0"
             }
         },
+        "node_modules/wrap-ansi": {
+            "version": "5.1.0",
+            "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+            "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+            "dependencies": {
+                "ansi-styles": "^3.2.0",
+                "string-width": "^3.0.0",
+                "strip-ansi": "^5.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/wrap-ansi/node_modules/ansi-regex": {
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+            "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/wrap-ansi/node_modules/ansi-styles": {
+            "version": "3.2.1",
+            "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+            "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+            "dependencies": {
+                "color-convert": "^1.9.0"
+            },
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/wrap-ansi/node_modules/color-convert": {
+            "version": "1.9.3",
+            "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+            "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+            "dependencies": {
+                "color-name": "1.1.3"
+            }
+        },
+        "node_modules/wrap-ansi/node_modules/color-name": {
+            "version": "1.1.3",
+            "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+            "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+        },
+        "node_modules/wrap-ansi/node_modules/emoji-regex": {
+            "version": "7.0.3",
+            "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+            "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+        },
+        "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+            "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/wrap-ansi/node_modules/string-width": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+            "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+            "dependencies": {
+                "emoji-regex": "^7.0.1",
+                "is-fullwidth-code-point": "^2.0.0",
+                "strip-ansi": "^5.1.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/wrap-ansi/node_modules/strip-ansi": {
+            "version": "5.2.0",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+            "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+            "dependencies": {
+                "ansi-regex": "^4.1.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
         "node_modules/wrappy": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
@@ -7509,6 +7860,11 @@
                 "node": ">=0.4.0"
             }
         },
+        "node_modules/y18n": {
+            "version": "4.0.3",
+            "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+            "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+        },
         "node_modules/yallist": {
             "version": "3.1.1",
             "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
@@ -7524,6 +7880,23 @@
                 "node": ">= 6"
             }
         },
+        "node_modules/yargs": {
+            "version": "13.3.2",
+            "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+            "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+            "dependencies": {
+                "cliui": "^5.0.0",
+                "find-up": "^3.0.0",
+                "get-caller-file": "^2.0.1",
+                "require-directory": "^2.1.1",
+                "require-main-filename": "^2.0.0",
+                "set-blocking": "^2.0.0",
+                "string-width": "^3.0.0",
+                "which-module": "^2.0.0",
+                "y18n": "^4.0.0",
+                "yargs-parser": "^13.1.2"
+            }
+        },
         "node_modules/yargs-parser": {
             "version": "20.2.9",
             "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
@@ -7533,6 +7906,102 @@
                 "node": ">=10"
             }
         },
+        "node_modules/yargs/node_modules/ansi-regex": {
+            "version": "4.1.0",
+            "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+            "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/yargs/node_modules/emoji-regex": {
+            "version": "7.0.3",
+            "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+            "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+        },
+        "node_modules/yargs/node_modules/find-up": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+            "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+            "dependencies": {
+                "locate-path": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/yargs/node_modules/is-fullwidth-code-point": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+            "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/yargs/node_modules/locate-path": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+            "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+            "dependencies": {
+                "p-locate": "^3.0.0",
+                "path-exists": "^3.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/yargs/node_modules/p-locate": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+            "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+            "dependencies": {
+                "p-limit": "^2.0.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/yargs/node_modules/path-exists": {
+            "version": "3.0.0",
+            "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+            "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+            "engines": {
+                "node": ">=4"
+            }
+        },
+        "node_modules/yargs/node_modules/string-width": {
+            "version": "3.1.0",
+            "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+            "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+            "dependencies": {
+                "emoji-regex": "^7.0.1",
+                "is-fullwidth-code-point": "^2.0.0",
+                "strip-ansi": "^5.1.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/yargs/node_modules/strip-ansi": {
+            "version": "5.2.0",
+            "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+            "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+            "dependencies": {
+                "ansi-regex": "^4.1.0"
+            },
+            "engines": {
+                "node": ">=6"
+            }
+        },
+        "node_modules/yargs/node_modules/yargs-parser": {
+            "version": "13.1.2",
+            "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+            "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+            "dependencies": {
+                "camelcase": "^5.0.0",
+                "decamelize": "^1.2.0"
+            }
+        },
         "node_modules/yeast": {
             "version": "0.1.2",
             "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz",
@@ -8771,6 +9240,11 @@
             "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz",
             "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI="
         },
+        "base64-js": {
+            "version": "1.5.1",
+            "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+            "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
+        },
         "base64id": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz",
@@ -8889,11 +9363,44 @@
                 "node-releases": "^1.1.75"
             }
         },
+        "buffer": {
+            "version": "5.7.1",
+            "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+            "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+            "requires": {
+                "base64-js": "^1.3.1",
+                "ieee754": "^1.1.13"
+            }
+        },
+        "buffer-alloc": {
+            "version": "1.2.0",
+            "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+            "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+            "requires": {
+                "buffer-alloc-unsafe": "^1.1.0",
+                "buffer-fill": "^1.0.0"
+            }
+        },
+        "buffer-alloc-unsafe": {
+            "version": "1.1.0",
+            "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+            "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
+        },
         "buffer-equal-constant-time": {
             "version": "1.0.1",
             "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
             "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
         },
+        "buffer-fill": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+            "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
+        },
+        "buffer-from": {
+            "version": "1.1.2",
+            "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+            "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
+        },
         "bytes": {
             "version": "3.1.0",
             "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
@@ -8908,8 +9415,7 @@
         "camelcase": {
             "version": "5.3.1",
             "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
-            "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
-            "dev": true
+            "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
         },
         "camelcase-keys": {
             "version": "6.2.2",
@@ -8993,6 +9499,51 @@
             "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
             "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
         },
+        "cliui": {
+            "version": "5.0.0",
+            "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+            "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+            "requires": {
+                "string-width": "^3.1.0",
+                "strip-ansi": "^5.2.0",
+                "wrap-ansi": "^5.1.0"
+            },
+            "dependencies": {
+                "ansi-regex": {
+                    "version": "4.1.0",
+                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+                    "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+                },
+                "emoji-regex": {
+                    "version": "7.0.3",
+                    "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+                    "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+                },
+                "is-fullwidth-code-point": {
+                    "version": "2.0.0",
+                    "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+                    "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+                },
+                "string-width": {
+                    "version": "3.1.0",
+                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+                    "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+                    "requires": {
+                        "emoji-regex": "^7.0.1",
+                        "is-fullwidth-code-point": "^2.0.0",
+                        "strip-ansi": "^5.1.0"
+                    }
+                },
+                "strip-ansi": {
+                    "version": "5.2.0",
+                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+                    "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+                    "requires": {
+                        "ansi-regex": "^4.1.0"
+                    }
+                }
+            }
+        },
         "clone-regexp": {
             "version": "2.2.0",
             "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-2.2.0.tgz",
@@ -9187,8 +9738,7 @@
         "decamelize": {
             "version": "1.2.0",
             "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
-            "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
-            "dev": true
+            "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
         },
         "decamelize-keys": {
             "version": "1.1.0",
@@ -9239,6 +9789,11 @@
             "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
             "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
         },
+        "dijkstrajs": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz",
+            "integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg=="
+        },
         "dir-glob": {
             "version": "3.0.1",
             "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
@@ -9968,6 +10523,11 @@
             "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
             "dev": true
         },
+        "get-caller-file": {
+            "version": "2.0.5",
+            "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+            "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+        },
         "get-stdin": {
             "version": "8.0.0",
             "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz",
@@ -10264,6 +10824,11 @@
             "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
             "dev": true
         },
+        "ieee754": {
+            "version": "1.2.1",
+            "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+            "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
+        },
         "ignore": {
             "version": "4.0.6",
             "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
@@ -11131,6 +11696,11 @@
             "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=",
             "dev": true
         },
+        "notp": {
+            "version": "2.0.3",
+            "resolved": "https://registry.npmjs.org/notp/-/notp-2.0.3.tgz",
+            "integrity": "sha1-qf0R4lz+HMs5/GaJVE7kwQ75pXc="
+        },
         "npmlog": {
             "version": "4.1.2",
             "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
@@ -11198,7 +11768,6 @@
             "version": "2.3.0",
             "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
             "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
-            "dev": true,
             "requires": {
                 "p-try": "^2.0.0"
             }
@@ -11215,8 +11784,7 @@
         "p-try": {
             "version": "2.2.0",
             "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
-            "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
-            "dev": true
+            "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
         },
         "parent-module": {
             "version": "1.0.1",
@@ -11328,6 +11896,11 @@
             "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz",
             "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8="
         },
+        "pngjs": {
+            "version": "3.4.0",
+            "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
+            "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w=="
+        },
         "postcss": {
             "version": "8.3.6",
             "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.3.6.tgz",
@@ -11859,6 +12432,27 @@
             "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
             "devOptional": true
         },
+        "qrcode": {
+            "version": "1.4.4",
+            "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz",
+            "integrity": "sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==",
+            "requires": {
+                "buffer": "^5.4.3",
+                "buffer-alloc": "^1.2.0",
+                "buffer-from": "^1.1.1",
+                "dijkstrajs": "^1.0.1",
+                "isarray": "^2.0.1",
+                "pngjs": "^3.3.0",
+                "yargs": "^13.2.4"
+            },
+            "dependencies": {
+                "isarray": {
+                    "version": "2.0.5",
+                    "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+                    "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
+                }
+            }
+        },
         "qs": {
             "version": "6.7.0",
             "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
@@ -12110,12 +12704,22 @@
                 }
             }
         },
+        "require-directory": {
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+            "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
+        },
         "require-from-string": {
             "version": "2.0.2",
             "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
             "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
             "dev": true
         },
+        "require-main-filename": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+            "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+        },
         "resolve": {
             "version": "1.20.0",
             "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
@@ -12894,6 +13498,11 @@
             "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
             "dev": true
         },
+        "thirty-two": {
+            "version": "1.0.2",
+            "resolved": "https://registry.npmjs.org/thirty-two/-/thirty-two-1.0.2.tgz",
+            "integrity": "sha1-TKL//AKlEpDSdEueP1V2k8prYno="
+        },
         "tildify": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz",
@@ -12940,6 +13549,11 @@
             "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==",
             "dev": true
         },
+        "tslib": {
+            "version": "2.3.1",
+            "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz",
+            "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw=="
+        },
         "tunnel-agent": {
             "version": "0.6.0",
             "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
@@ -13238,6 +13852,22 @@
             "resolved": "https://registry.npmjs.org/vue-multiselect/-/vue-multiselect-3.0.0-alpha.2.tgz",
             "integrity": "sha512-Xp9fGJECns45v+v8jXbCIsAkCybYkEg0lNwr7Z6HDUSMyx2TEIK2giipPE+qXiShEc1Ipn+ZtttH2iq9hwXP4Q=="
         },
+        "vue-qrcode": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/vue-qrcode/-/vue-qrcode-1.0.0.tgz",
+            "integrity": "sha512-rzFR9bTMpsY9lhsABmQw7JbRrOV7NAUbz7E+mu6bMjYpFHoRbH1OVlPxALcxJ0veX3Njt5vfA7pMM5dx1KMLow==",
+            "requires": {
+                "tslib": "^2.2.0",
+                "vue-demi": "^0.11.3"
+            },
+            "dependencies": {
+                "vue-demi": {
+                    "version": "0.11.4",
+                    "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.11.4.tgz",
+                    "integrity": "sha512-/3xFwzSykLW2HiiLie43a+FFgNOcokbBJ+fzvFXd0r2T8MYohqvphUyDQ8lbAwzQ3Dlcrb1c9ykifGkhSIAk6A=="
+                }
+            }
+        },
         "vue-router": {
             "version": "4.0.11",
             "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.0.11.tgz",
@@ -13260,6 +13890,11 @@
                 "isexe": "^2.0.0"
             }
         },
+        "which-module": {
+            "version": "2.0.0",
+            "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+            "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
+        },
         "wide-align": {
             "version": "1.1.3",
             "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
@@ -13274,6 +13909,72 @@
             "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
             "dev": true
         },
+        "wrap-ansi": {
+            "version": "5.1.0",
+            "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+            "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+            "requires": {
+                "ansi-styles": "^3.2.0",
+                "string-width": "^3.0.0",
+                "strip-ansi": "^5.0.0"
+            },
+            "dependencies": {
+                "ansi-regex": {
+                    "version": "4.1.0",
+                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+                    "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+                },
+                "ansi-styles": {
+                    "version": "3.2.1",
+                    "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+                    "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+                    "requires": {
+                        "color-convert": "^1.9.0"
+                    }
+                },
+                "color-convert": {
+                    "version": "1.9.3",
+                    "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+                    "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+                    "requires": {
+                        "color-name": "1.1.3"
+                    }
+                },
+                "color-name": {
+                    "version": "1.1.3",
+                    "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+                    "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+                },
+                "emoji-regex": {
+                    "version": "7.0.3",
+                    "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+                    "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+                },
+                "is-fullwidth-code-point": {
+                    "version": "2.0.0",
+                    "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+                    "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+                },
+                "string-width": {
+                    "version": "3.1.0",
+                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+                    "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+                    "requires": {
+                        "emoji-regex": "^7.0.1",
+                        "is-fullwidth-code-point": "^2.0.0",
+                        "strip-ansi": "^5.1.0"
+                    }
+                },
+                "strip-ansi": {
+                    "version": "5.2.0",
+                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+                    "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+                    "requires": {
+                        "ansi-regex": "^4.1.0"
+                    }
+                }
+            }
+        },
         "wrappy": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
@@ -13301,6 +14002,11 @@
             "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz",
             "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A=="
         },
+        "y18n": {
+            "version": "4.0.3",
+            "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+            "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
+        },
         "yallist": {
             "version": "3.1.1",
             "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
@@ -13313,6 +14019,97 @@
             "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
             "dev": true
         },
+        "yargs": {
+            "version": "13.3.2",
+            "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+            "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+            "requires": {
+                "cliui": "^5.0.0",
+                "find-up": "^3.0.0",
+                "get-caller-file": "^2.0.1",
+                "require-directory": "^2.1.1",
+                "require-main-filename": "^2.0.0",
+                "set-blocking": "^2.0.0",
+                "string-width": "^3.0.0",
+                "which-module": "^2.0.0",
+                "y18n": "^4.0.0",
+                "yargs-parser": "^13.1.2"
+            },
+            "dependencies": {
+                "ansi-regex": {
+                    "version": "4.1.0",
+                    "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+                    "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+                },
+                "emoji-regex": {
+                    "version": "7.0.3",
+                    "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+                    "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+                },
+                "find-up": {
+                    "version": "3.0.0",
+                    "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+                    "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+                    "requires": {
+                        "locate-path": "^3.0.0"
+                    }
+                },
+                "is-fullwidth-code-point": {
+                    "version": "2.0.0",
+                    "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+                    "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+                },
+                "locate-path": {
+                    "version": "3.0.0",
+                    "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+                    "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+                    "requires": {
+                        "p-locate": "^3.0.0",
+                        "path-exists": "^3.0.0"
+                    }
+                },
+                "p-locate": {
+                    "version": "3.0.0",
+                    "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+                    "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+                    "requires": {
+                        "p-limit": "^2.0.0"
+                    }
+                },
+                "path-exists": {
+                    "version": "3.0.0",
+                    "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+                    "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
+                },
+                "string-width": {
+                    "version": "3.1.0",
+                    "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+                    "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+                    "requires": {
+                        "emoji-regex": "^7.0.1",
+                        "is-fullwidth-code-point": "^2.0.0",
+                        "strip-ansi": "^5.1.0"
+                    }
+                },
+                "strip-ansi": {
+                    "version": "5.2.0",
+                    "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+                    "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+                    "requires": {
+                        "ansi-regex": "^4.1.0"
+                    }
+                },
+                "yargs-parser": {
+                    "version": "13.1.2",
+                    "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+                    "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+                    "requires": {
+                        "camelcase": "^5.0.0",
+                        "decamelize": "^1.2.0"
+                    }
+                }
+            }
+        },
         "yargs-parser": {
             "version": "20.2.9",
             "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
diff --git a/package.json b/package.json
index e1c405cf..afa5d08f 100644
--- a/package.json
+++ b/package.json
@@ -10,6 +10,8 @@
         "node": "14.*"
     },
     "scripts": {
+        "install-legacy-peer-deps": "npm install --legacy-peer-deps",
+        "update-legacy-peer-deps": "npm update --legacy-peer-deps",
         "lint:js": "eslint --ext \".js,.vue\" --ignore-path .gitignore .",
         "lint:style": "stylelint \"**/*.{vue,css,scss}\" --ignore-path .gitignore",
         "lint": "npm run lint:js && npm run lint:style",

From a7674755badaba8e7b145ab805e5d8a4d796a5ee Mon Sep 17 00:00:00 2001
From: Bert Verhelst <verhelstbert@gmail.com>
Date: Sun, 12 Sep 2021 13:27:41 +0200
Subject: [PATCH 02/10] Move timezones to npm package and convert
 util-frontend.js to typescript

---
 .gitignore           |   3 +-
 package-lock.json    | 173 ++++++++++++++++--
 package.json         |   1 +
 src/util-frontend.js | 404 -------------------------------------------
 src/util-frontend.ts |  54 ++++++
 5 files changed, 214 insertions(+), 421 deletions(-)
 delete mode 100644 src/util-frontend.js
 create mode 100644 src/util-frontend.ts

diff --git a/.gitignore b/.gitignore
index 9caa313c..59d21098 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,4 +7,5 @@ dist-ssr
 
 /data
 !/data/.gitkeep
-.vscode
\ No newline at end of file
+/uptime-kuma
+.vscode
diff --git a/package-lock.json b/package-lock.json
index dcf5077d..57d7b85a 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
 {
     "name": "uptime-kuma",
-    "version": "1.5.2",
+    "version": "1.6.0",
     "lockfileVersion": 2,
     "requires": true,
     "packages": {
         "": {
             "name": "uptime-kuma",
-            "version": "1.5.2",
+            "version": "1.6.0",
             "license": "MIT",
             "dependencies": {
                 "@fortawesome/fontawesome-svg-core": "^1.2.36",
@@ -37,6 +37,7 @@
                 "socket.io-client": "^4.2.0",
                 "sqlite3": "github:mapbox/node-sqlite3#593c9d",
                 "tcp-ping": "^0.1.1",
+                "timezones-list": "^3.0.1",
                 "v-pagination-3": "^0.1.6",
                 "vue": "^3.2.8",
                 "vue-chart-3": "^0.5.7",
@@ -4460,6 +4461,7 @@
             "version": "3.1.25",
             "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz",
             "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==",
+            "dev": true,
             "bin": {
                 "nanoid": "bin/nanoid.cjs"
             },
@@ -6307,6 +6309,7 @@
         "node_modules/sqlite3": {
             "version": "5.0.2",
             "resolved": "git+ssh://git@github.com/mapbox/node-sqlite3.git#593c9d498be2510d286349134537e3bf89401c4a",
+            "integrity": "sha512-jUoUHizVh+QCulAEPid3qxX+TunsNMDFDC3TdB/+33OEx8Ud3IhbfrXU+MNnhAR9p4Sk5X93LkoXure8VVGrQA==",
             "hasInstallScript": true,
             "license": "BSD-3-Clause",
             "dependencies": {
@@ -6933,6 +6936,11 @@
                 "node": ">=8"
             }
         },
+        "node_modules/timezones-list": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/timezones-list/-/timezones-list-3.0.1.tgz",
+            "integrity": "sha512-yfOzyuVwzgD0LkldD3Epkr+JUdUIxEUL147Fa6ZgG/23KU28iOv3e3M7vQOCFMPyopAhDX7dqOLWttIP7tkTKg=="
+        },
         "node_modules/to-fast-properties": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
@@ -7310,6 +7318,64 @@
                 }
             }
         },
+        "node_modules/vue-chart-3/node_modules/@vue/reactivity": {
+            "version": "3.2.11",
+            "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.11.tgz",
+            "integrity": "sha512-hEQstxPQbgGZq5qApzrvbDmRdK1KP96O/j4XrwT8fVkT1ytkFs4fH2xNEh9QKwXfybbQkLs77W7OfXCv5o6qbA==",
+            "dependencies": {
+                "@vue/shared": "3.2.11"
+            }
+        },
+        "node_modules/vue-chart-3/node_modules/@vue/runtime-core": {
+            "version": "3.2.11",
+            "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.11.tgz",
+            "integrity": "sha512-horlxjWwSvModC87WdsWswzzHE5IexmKkQA65S5vFgP5hLUBW+HRyScDeuB/RRcFmqnf+ozacNCfap0kqcpODw==",
+            "dependencies": {
+                "@vue/reactivity": "3.2.11",
+                "@vue/shared": "3.2.11"
+            }
+        },
+        "node_modules/vue-chart-3/node_modules/@vue/runtime-dom": {
+            "version": "3.2.11",
+            "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.11.tgz",
+            "integrity": "sha512-cOK1g0INdiCbds2xrrJKrrN+pDHuLz6esUs/crdEiupDuX7IeiMbdqrAQCkYHp5P1KLWcbGlkmwfVD7HQGii0Q==",
+            "dependencies": {
+                "@vue/runtime-core": "3.2.11",
+                "@vue/shared": "3.2.11",
+                "csstype": "^2.6.8"
+            }
+        },
+        "node_modules/vue-chart-3/node_modules/@vue/runtime-dom/node_modules/csstype": {
+            "version": "2.6.17",
+            "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz",
+            "integrity": "sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A=="
+        },
+        "node_modules/vue-chart-3/node_modules/@vue/shared": {
+            "version": "3.2.11",
+            "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.11.tgz",
+            "integrity": "sha512-ovfXAsSsCvV9JVceWjkqC/7OF5HbgLOtCWjCIosmPGG8lxbPuavhIxRH1dTx4Dg9xLgRTNLvI3pVxG4ItQZekg=="
+        },
+        "node_modules/vue-chart-3/node_modules/csstype": {
+            "version": "3.0.8",
+            "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz",
+            "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw=="
+        },
+        "node_modules/vue-chart-3/node_modules/lodash": {
+            "version": "4.17.21",
+            "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+            "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+        },
+        "node_modules/vue-chart-3/node_modules/nanoid": {
+            "version": "3.1.25",
+            "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz",
+            "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==",
+            "bin": {
+                "nanoid": "bin/nanoid.cjs"
+            },
+            "engines": {
+                "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
+            }
+        },
         "node_modules/vue-confirm-dialog": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/vue-confirm-dialog/-/vue-confirm-dialog-1.0.2.tgz",
@@ -7974,7 +8040,8 @@
         "@fortawesome/vue-fontawesome": {
             "version": "3.0.0-4",
             "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.0-4.tgz",
-            "integrity": "sha512-dQVhhMRcUPCb0aqk5ohm0KGk5OJ7wFZ9aYapLzJB3Z+xs7LhkRWLTb87reelUAG5PFDjutDAXuloT9hi6cz72A=="
+            "integrity": "sha512-dQVhhMRcUPCb0aqk5ohm0KGk5OJ7wFZ9aYapLzJB3Z+xs7LhkRWLTb87reelUAG5PFDjutDAXuloT9hi6cz72A==",
+            "requires": {}
         },
         "@humanwhocodes/config-array": {
             "version": "0.5.0",
@@ -8368,7 +8435,8 @@
             "version": "1.6.0",
             "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-1.6.0.tgz",
             "integrity": "sha512-n3i8htn8pTg9M+kM3cnEfsPZx/6ngInlTroth6fA1LQTJq5aTVQ8ggaE5pPoAy9vCgHPtcaXMzwpldhqRAkebQ==",
-            "dev": true
+            "dev": true,
+            "requires": {}
         },
         "@vue/compiler-core": {
             "version": "3.2.8",
@@ -8501,7 +8569,8 @@
             "version": "5.3.2",
             "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
             "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
-            "dev": true
+            "dev": true,
+            "requires": {}
         },
         "agent-base": {
             "version": "6.0.2",
@@ -8856,7 +8925,8 @@
         "bootstrap": {
             "version": "5.1.0",
             "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.0.tgz",
-            "integrity": "sha512-bs74WNI9BgBo3cEovmdMHikSKoXnDgA6VQjJ7TyTotU6L7d41ZyCEEelPwkYEzsG/Zjv3ie9IE3EMAje0W9Xew=="
+            "integrity": "sha512-bs74WNI9BgBo3cEovmdMHikSKoXnDgA6VQjJ7TyTotU6L7d41ZyCEEelPwkYEzsG/Zjv3ie9IE3EMAje0W9Xew==",
+            "requires": {}
         },
         "brace-expansion": {
             "version": "1.1.11",
@@ -8970,7 +9040,8 @@
         "chartjs-adapter-dayjs": {
             "version": "1.0.0",
             "resolved": "https://registry.npmjs.org/chartjs-adapter-dayjs/-/chartjs-adapter-dayjs-1.0.0.tgz",
-            "integrity": "sha512-EnbVqTJGFKLpg1TROLdCEufrzbmIa2oeLGx8O2Wdjw2EoMudoOo9+YFu+6CM0Z0hQ/v3yq/e/Y6efQMu22n8Jg=="
+            "integrity": "sha512-EnbVqTJGFKLpg1TROLdCEufrzbmIa2oeLGx8O2Wdjw2EoMudoOo9+YFu+6CM0Z0hQ/v3yq/e/Y6efQMu22n8Jg==",
+            "requires": {}
         },
         "chokidar": {
             "version": "3.5.2",
@@ -10262,7 +10333,8 @@
             "version": "5.1.0",
             "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz",
             "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
-            "dev": true
+            "dev": true,
+            "requires": {}
         },
         "ignore": {
             "version": "4.0.6",
@@ -10989,7 +11061,8 @@
         "nanoid": {
             "version": "3.1.25",
             "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz",
-            "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q=="
+            "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==",
+            "dev": true
         },
         "natural-compare": {
             "version": "1.4.0",
@@ -11463,7 +11536,8 @@
             "version": "3.0.0",
             "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz",
             "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
-            "dev": true
+            "dev": true,
+            "requires": {}
         },
         "postcss-modules-local-by-default": {
             "version": "4.0.0",
@@ -11782,7 +11856,8 @@
             "version": "0.36.2",
             "resolved": "https://registry.npmjs.org/postcss-syntax/-/postcss-syntax-0.36.2.tgz",
             "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==",
-            "dev": true
+            "dev": true,
+            "requires": {}
         },
         "postcss-value-parser": {
             "version": "4.1.0",
@@ -12678,7 +12753,8 @@
             "version": "5.0.0",
             "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-5.0.0.tgz",
             "integrity": "sha512-c8aubuARSu5A3vEHLBeOSJt1udOdS+1iue7BmJDTSXoCBmfEQmmWX+59vYIj3NQdJBY6a/QRv1ozVFpaB9jaqA==",
-            "dev": true
+            "dev": true,
+            "requires": {}
         },
         "stylelint-config-standard": {
             "version": "22.0.0",
@@ -12899,6 +12975,11 @@
             "resolved": "https://registry.npmjs.org/tildify/-/tildify-2.0.0.tgz",
             "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw=="
         },
+        "timezones-list": {
+            "version": "3.0.1",
+            "resolved": "https://registry.npmjs.org/timezones-list/-/timezones-list-3.0.1.tgz",
+            "integrity": "sha512-yfOzyuVwzgD0LkldD3Epkr+JUdUIxEUL147Fa6ZgG/23KU28iOv3e3M7vQOCFMPyopAhDX7dqOLWttIP7tkTKg=="
+        },
         "to-fast-properties": {
             "version": "2.0.0",
             "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
@@ -13176,17 +13257,75 @@
                 "lodash": "latest",
                 "nanoid": "latest",
                 "vue-demi": "^0.10.1"
+            },
+            "dependencies": {
+                "@vue/reactivity": {
+                    "version": "3.2.11",
+                    "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.11.tgz",
+                    "integrity": "sha512-hEQstxPQbgGZq5qApzrvbDmRdK1KP96O/j4XrwT8fVkT1ytkFs4fH2xNEh9QKwXfybbQkLs77W7OfXCv5o6qbA==",
+                    "requires": {
+                        "@vue/shared": "3.2.11"
+                    }
+                },
+                "@vue/runtime-core": {
+                    "version": "3.2.11",
+                    "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.11.tgz",
+                    "integrity": "sha512-horlxjWwSvModC87WdsWswzzHE5IexmKkQA65S5vFgP5hLUBW+HRyScDeuB/RRcFmqnf+ozacNCfap0kqcpODw==",
+                    "requires": {
+                        "@vue/reactivity": "3.2.11",
+                        "@vue/shared": "3.2.11"
+                    }
+                },
+                "@vue/runtime-dom": {
+                    "version": "3.2.11",
+                    "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.11.tgz",
+                    "integrity": "sha512-cOK1g0INdiCbds2xrrJKrrN+pDHuLz6esUs/crdEiupDuX7IeiMbdqrAQCkYHp5P1KLWcbGlkmwfVD7HQGii0Q==",
+                    "requires": {
+                        "@vue/runtime-core": "3.2.11",
+                        "@vue/shared": "3.2.11",
+                        "csstype": "^2.6.8"
+                    },
+                    "dependencies": {
+                        "csstype": {
+                            "version": "2.6.17",
+                            "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.17.tgz",
+                            "integrity": "sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A=="
+                        }
+                    }
+                },
+                "@vue/shared": {
+                    "version": "3.2.11",
+                    "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.11.tgz",
+                    "integrity": "sha512-ovfXAsSsCvV9JVceWjkqC/7OF5HbgLOtCWjCIosmPGG8lxbPuavhIxRH1dTx4Dg9xLgRTNLvI3pVxG4ItQZekg=="
+                },
+                "csstype": {
+                    "version": "3.0.8",
+                    "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.8.tgz",
+                    "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw=="
+                },
+                "lodash": {
+                    "version": "4.17.21",
+                    "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
+                    "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
+                },
+                "nanoid": {
+                    "version": "3.1.25",
+                    "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz",
+                    "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q=="
+                }
             }
         },
         "vue-confirm-dialog": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/vue-confirm-dialog/-/vue-confirm-dialog-1.0.2.tgz",
-            "integrity": "sha512-gTo1bMDWOLd/6ihmWv8VlPxhc9QaKoE5YqlsKydUOfrrQ3Q3taljF6yI+1TMtAtJLrvZ8DYrePhgBhY1VCJzbQ=="
+            "integrity": "sha512-gTo1bMDWOLd/6ihmWv8VlPxhc9QaKoE5YqlsKydUOfrrQ3Q3taljF6yI+1TMtAtJLrvZ8DYrePhgBhY1VCJzbQ==",
+            "requires": {}
         },
         "vue-demi": {
             "version": "0.10.1",
             "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.10.1.tgz",
-            "integrity": "sha512-L6Oi+BvmMv6YXvqv5rJNCFHEKSVu7llpWWJczqmAQYOdmPPw5PNYoz1KKS//Fxhi+4QP64dsPjtmvnYGo1jemA=="
+            "integrity": "sha512-L6Oi+BvmMv6YXvqv5rJNCFHEKSVu7llpWWJczqmAQYOdmPPw5PNYoz1KKS//Fxhi+4QP64dsPjtmvnYGo1jemA==",
+            "requires": {}
         },
         "vue-eslint-parser": {
             "version": "7.10.0",
@@ -13249,7 +13388,8 @@
         "vue-toastification": {
             "version": "2.0.0-rc.1",
             "resolved": "https://registry.npmjs.org/vue-toastification/-/vue-toastification-2.0.0-rc.1.tgz",
-            "integrity": "sha512-hjauv/FyesNZdwcr5m1SCyvu1JmlB+Ts5bTptDLDmsYYlj6Oqv8NYakiElpCF+Abwkn9J/AChh6FwkTL1HOb7Q=="
+            "integrity": "sha512-hjauv/FyesNZdwcr5m1SCyvu1JmlB+Ts5bTptDLDmsYYlj6Oqv8NYakiElpCF+Abwkn9J/AChh6FwkTL1HOb7Q==",
+            "requires": {}
         },
         "which": {
             "version": "2.0.2",
@@ -13294,7 +13434,8 @@
         "ws": {
             "version": "7.4.6",
             "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
-            "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A=="
+            "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
+            "requires": {}
         },
         "xmlhttprequest-ssl": {
             "version": "2.0.0",
diff --git a/package.json b/package.json
index e1c405cf..67ed43f3 100644
--- a/package.json
+++ b/package.json
@@ -64,6 +64,7 @@
         "socket.io-client": "^4.2.0",
         "sqlite3": "github:mapbox/node-sqlite3#593c9d",
         "tcp-ping": "^0.1.1",
+        "timezones-list": "^3.0.1",
         "v-pagination-3": "^0.1.6",
         "vue": "^3.2.8",
         "vue-chart-3": "^0.5.7",
diff --git a/src/util-frontend.js b/src/util-frontend.js
deleted file mode 100644
index 07b1914e..00000000
--- a/src/util-frontend.js
+++ /dev/null
@@ -1,404 +0,0 @@
-import dayjs from "dayjs";
-import timezone from "dayjs/plugin/timezone";
-import utc from "dayjs/plugin/utc";
-
-dayjs.extend(utc)
-dayjs.extend(timezone)
-
-function getTimezoneOffset(timeZone) {
-    const now = new Date();
-    const tzString = now.toLocaleString("en-US", {
-        timeZone,
-    });
-    const localString = now.toLocaleString("en-US");
-    const diff = (Date.parse(localString) - Date.parse(tzString)) / 3600000;
-    const offset = diff + now.getTimezoneOffset() / 60;
-    return -offset;
-}
-
-// From: https://stackoverflow.com/questions/38399465/how-to-get-list-of-all-timezones-in-javascript
-// TODO: Move to separate file
-const aryIannaTimeZones = [
-    "Europe/Andorra",
-    "Asia/Dubai",
-    "Asia/Kabul",
-    "Europe/Tirane",
-    "Asia/Yerevan",
-    "Antarctica/Casey",
-    "Antarctica/Davis",
-    "Antarctica/Mawson",
-    "Antarctica/Palmer",
-    "Antarctica/Rothera",
-    "Antarctica/Syowa",
-    "Antarctica/Troll",
-    "Antarctica/Vostok",
-    "America/Argentina/Buenos_Aires",
-    "America/Argentina/Cordoba",
-    "America/Argentina/Salta",
-    "America/Argentina/Jujuy",
-    "America/Argentina/Tucuman",
-    "America/Argentina/Catamarca",
-    "America/Argentina/La_Rioja",
-    "America/Argentina/San_Juan",
-    "America/Argentina/Mendoza",
-    "America/Argentina/San_Luis",
-    "America/Argentina/Rio_Gallegos",
-    "America/Argentina/Ushuaia",
-    "Pacific/Pago_Pago",
-    "Europe/Vienna",
-    "Australia/Lord_Howe",
-    "Antarctica/Macquarie",
-    "Australia/Hobart",
-    "Australia/Currie",
-    "Australia/Melbourne",
-    "Australia/Sydney",
-    "Australia/Broken_Hill",
-    "Australia/Brisbane",
-    "Australia/Lindeman",
-    "Australia/Adelaide",
-    "Australia/Darwin",
-    "Australia/Perth",
-    "Australia/Eucla",
-    "Asia/Baku",
-    "America/Barbados",
-    "Asia/Dhaka",
-    "Europe/Brussels",
-    "Europe/Sofia",
-    "Atlantic/Bermuda",
-    "Asia/Brunei",
-    "America/La_Paz",
-    "America/Noronha",
-    "America/Belem",
-    "America/Fortaleza",
-    "America/Recife",
-    "America/Araguaina",
-    "America/Maceio",
-    "America/Bahia",
-    "America/Sao_Paulo",
-    "America/Campo_Grande",
-    "America/Cuiaba",
-    "America/Santarem",
-    "America/Porto_Velho",
-    "America/Boa_Vista",
-    "America/Manaus",
-    "America/Eirunepe",
-    "America/Rio_Branco",
-    "America/Nassau",
-    "Asia/Thimphu",
-    "Europe/Minsk",
-    "America/Belize",
-    "America/St_Johns",
-    "America/Halifax",
-    "America/Glace_Bay",
-    "America/Moncton",
-    "America/Goose_Bay",
-    "America/Blanc-Sablon",
-    "America/Toronto",
-    "America/Nipigon",
-    "America/Thunder_Bay",
-    "America/Iqaluit",
-    "America/Pangnirtung",
-    "America/Atikokan",
-    "America/Winnipeg",
-    "America/Rainy_River",
-    "America/Resolute",
-    "America/Rankin_Inlet",
-    "America/Regina",
-    "America/Swift_Current",
-    "America/Edmonton",
-    "America/Cambridge_Bay",
-    "America/Yellowknife",
-    "America/Inuvik",
-    "America/Creston",
-    "America/Dawson_Creek",
-    "America/Fort_Nelson",
-    "America/Vancouver",
-    "America/Whitehorse",
-    "America/Dawson",
-    "Indian/Cocos",
-    "Europe/Zurich",
-    "Africa/Abidjan",
-    "Pacific/Rarotonga",
-    "America/Santiago",
-    "America/Punta_Arenas",
-    "Pacific/Easter",
-    "Asia/Shanghai",
-    "Asia/Urumqi",
-    "America/Bogota",
-    "America/Costa_Rica",
-    "America/Havana",
-    "Atlantic/Cape_Verde",
-    "America/Curacao",
-    "Indian/Christmas",
-    "Asia/Nicosia",
-    "Asia/Famagusta",
-    "Europe/Prague",
-    "Europe/Berlin",
-    "Europe/Copenhagen",
-    "America/Santo_Domingo",
-    "Africa/Algiers",
-    "America/Guayaquil",
-    "Pacific/Galapagos",
-    "Europe/Tallinn",
-    "Africa/Cairo",
-    "Africa/El_Aaiun",
-    "Europe/Madrid",
-    "Africa/Ceuta",
-    "Atlantic/Canary",
-    "Europe/Helsinki",
-    "Pacific/Fiji",
-    "Atlantic/Stanley",
-    "Pacific/Chuuk",
-    "Pacific/Pohnpei",
-    "Pacific/Kosrae",
-    "Atlantic/Faroe",
-    "Europe/Paris",
-    "Europe/London",
-    "Asia/Tbilisi",
-    "America/Cayenne",
-    "Africa/Accra",
-    "Europe/Gibraltar",
-    "America/Godthab",
-    "America/Danmarkshavn",
-    "America/Scoresbysund",
-    "America/Thule",
-    "Europe/Athens",
-    "Atlantic/South_Georgia",
-    "America/Guatemala",
-    "Pacific/Guam",
-    "Africa/Bissau",
-    "America/Guyana",
-    "Asia/Hong_Kong",
-    "America/Tegucigalpa",
-    "America/Port-au-Prince",
-    "Europe/Budapest",
-    "Asia/Jakarta",
-    "Asia/Pontianak",
-    "Asia/Makassar",
-    "Asia/Jayapura",
-    "Europe/Dublin",
-    "Asia/Jerusalem",
-    "Asia/Kolkata",
-    "Indian/Chagos",
-    "Asia/Baghdad",
-    "Asia/Tehran",
-    "Atlantic/Reykjavik",
-    "Europe/Rome",
-    "America/Jamaica",
-    "Asia/Amman",
-    "Asia/Tokyo",
-    "Africa/Nairobi",
-    "Asia/Bishkek",
-    "Pacific/Tarawa",
-    "Pacific/Enderbury",
-    "Pacific/Kiritimati",
-    "Asia/Pyongyang",
-    "Asia/Seoul",
-    "Asia/Almaty",
-    "Asia/Qyzylorda",
-    "Asia/Aqtobe",
-    "Asia/Aqtau",
-    "Asia/Atyrau",
-    "Asia/Oral",
-    "Asia/Beirut",
-    "Asia/Colombo",
-    "Africa/Monrovia",
-    "Europe/Vilnius",
-    "Europe/Luxembourg",
-    "Europe/Riga",
-    "Africa/Tripoli",
-    "Africa/Casablanca",
-    "Europe/Monaco",
-    "Europe/Chisinau",
-    "Pacific/Majuro",
-    "Pacific/Kwajalein",
-    "Asia/Yangon",
-    "Asia/Ulaanbaatar",
-    "Asia/Hovd",
-    "Asia/Choibalsan",
-    "Asia/Macau",
-    "America/Martinique",
-    "Europe/Malta",
-    "Indian/Mauritius",
-    "Indian/Maldives",
-    "America/Mexico_City",
-    "America/Cancun",
-    "America/Merida",
-    "America/Monterrey",
-    "America/Matamoros",
-    "America/Mazatlan",
-    "America/Chihuahua",
-    "America/Ojinaga",
-    "America/Hermosillo",
-    "America/Tijuana",
-    "America/Bahia_Banderas",
-    "Asia/Kuala_Lumpur",
-    "Asia/Kuching",
-    "Africa/Maputo",
-    "Africa/Windhoek",
-    "Pacific/Noumea",
-    "Pacific/Norfolk",
-    "Africa/Lagos",
-    "America/Managua",
-    "Europe/Amsterdam",
-    "Europe/Oslo",
-    "Asia/Kathmandu",
-    "Pacific/Nauru",
-    "Pacific/Niue",
-    "Pacific/Auckland",
-    "Pacific/Chatham",
-    "America/Panama",
-    "America/Lima",
-    "Pacific/Tahiti",
-    "Pacific/Marquesas",
-    "Pacific/Gambier",
-    "Pacific/Port_Moresby",
-    "Pacific/Bougainville",
-    "Asia/Manila",
-    "Asia/Karachi",
-    "Europe/Warsaw",
-    "America/Miquelon",
-    "Pacific/Pitcairn",
-    "America/Puerto_Rico",
-    "Asia/Gaza",
-    "Asia/Hebron",
-    "Europe/Lisbon",
-    "Atlantic/Madeira",
-    "Atlantic/Azores",
-    "Pacific/Palau",
-    "America/Asuncion",
-    "Asia/Qatar",
-    "Indian/Reunion",
-    "Europe/Bucharest",
-    "Europe/Belgrade",
-    "Europe/Kaliningrad",
-    "Europe/Moscow",
-    "Europe/Simferopol",
-    "Europe/Kirov",
-    "Europe/Astrakhan",
-    "Europe/Volgograd",
-    "Europe/Saratov",
-    "Europe/Ulyanovsk",
-    "Europe/Samara",
-    "Asia/Yekaterinburg",
-    "Asia/Omsk",
-    "Asia/Novosibirsk",
-    "Asia/Barnaul",
-    "Asia/Tomsk",
-    "Asia/Novokuznetsk",
-    "Asia/Krasnoyarsk",
-    "Asia/Irkutsk",
-    "Asia/Chita",
-    "Asia/Yakutsk",
-    "Asia/Khandyga",
-    "Asia/Vladivostok",
-    "Asia/Ust-Nera",
-    "Asia/Magadan",
-    "Asia/Sakhalin",
-    "Asia/Srednekolymsk",
-    "Asia/Kamchatka",
-    "Asia/Anadyr",
-    "Asia/Riyadh",
-    "Pacific/Guadalcanal",
-    "Indian/Mahe",
-    "Africa/Khartoum",
-    "Europe/Stockholm",
-    "Asia/Singapore",
-    "America/Paramaribo",
-    "Africa/Juba",
-    "Africa/Sao_Tome",
-    "America/El_Salvador",
-    "Asia/Damascus",
-    "America/Grand_Turk",
-    "Africa/Ndjamena",
-    "Indian/Kerguelen",
-    "Asia/Bangkok",
-    "Asia/Dushanbe",
-    "Pacific/Fakaofo",
-    "Asia/Dili",
-    "Asia/Ashgabat",
-    "Africa/Tunis",
-    "Pacific/Tongatapu",
-    "Europe/Istanbul",
-    "America/Port_of_Spain",
-    "Pacific/Funafuti",
-    "Asia/Taipei",
-    "Europe/Kiev",
-    "Europe/Uzhgorod",
-    "Europe/Zaporozhye",
-    "Pacific/Wake",
-    "America/New_York",
-    "America/Detroit",
-    "America/Kentucky/Louisville",
-    "America/Kentucky/Monticello",
-    "America/Indiana/Indianapolis",
-    "America/Indiana/Vincennes",
-    "America/Indiana/Winamac",
-    "America/Indiana/Marengo",
-    "America/Indiana/Petersburg",
-    "America/Indiana/Vevay",
-    "America/Chicago",
-    "America/Indiana/Tell_City",
-    "America/Indiana/Knox",
-    "America/Menominee",
-    "America/North_Dakota/Center",
-    "America/North_Dakota/New_Salem",
-    "America/North_Dakota/Beulah",
-    "America/Denver",
-    "America/Boise",
-    "America/Phoenix",
-    "America/Los_Angeles",
-    "America/Anchorage",
-    "America/Juneau",
-    "America/Sitka",
-    "America/Metlakatla",
-    "America/Yakutat",
-    "America/Nome",
-    "America/Adak",
-    "Pacific/Honolulu",
-    "America/Montevideo",
-    "Asia/Samarkand",
-    "Asia/Tashkent",
-    "America/Caracas",
-    "Asia/Ho_Chi_Minh",
-    "Pacific/Efate",
-    "Pacific/Wallis",
-    "Pacific/Apia",
-    "Africa/Johannesburg",
-];
-
-export function timezoneList() {
-
-    let result = [];
-
-    for (let timezone of aryIannaTimeZones) {
-
-        try {
-            let display = dayjs().tz(timezone).format("Z");
-
-            result.push({
-                name: `(UTC${display}) ${timezone}`,
-                value: timezone,
-                time: getTimezoneOffset(timezone),
-            })
-        } catch (e) {
-            console.error(e.message);
-            console.log("Skip this timezone")
-        }
-
-    }
-
-    result.sort((a, b) => {
-        if (a.time > b.time) {
-            return 1;
-        }
-
-        if (b.time > a.time) {
-            return -1;
-        }
-
-        return 0;
-    })
-
-    return result;
-}
diff --git a/src/util-frontend.ts b/src/util-frontend.ts
new file mode 100644
index 00000000..8e7b1e10
--- /dev/null
+++ b/src/util-frontend.ts
@@ -0,0 +1,54 @@
+import * as dayjs from "dayjs";
+import * as timezone from "dayjs/plugin/timezone";
+import * as utc from "dayjs/plugin/utc";
+import timezones from "timezones-list";
+
+dayjs.extend(utc)
+dayjs.extend(timezone)
+
+function getTimezoneOffset(timeZone) {
+    const now = new Date();
+    const tzString = now.toLocaleString("en-US", {
+        timeZone,
+    });
+    const localString = now.toLocaleString("en-US");
+    const diff = (Date.parse(localString) - Date.parse(tzString)) / 3600000;
+    const offset = diff + now.getTimezoneOffset() / 60;
+    return -offset;
+}
+
+export function timezoneList() {
+
+    let result = [];
+
+    for (let timezone of timezones) {
+
+        try {
+            let display = dayjs().tz(timezone.tzCode).format("Z");
+
+            result.push({
+                name: `(UTC${display}) ${timezone.tzCode}`,
+                value: timezone.tzCode,
+                time: getTimezoneOffset(timezone.tzCode),
+            })
+        } catch (e) {
+            console.error(e.message);
+            console.log("Skip this timezone")
+        }
+
+    }
+
+    result.sort((a, b) => {
+        if (a.time > b.time) {
+            return 1;
+        }
+
+        if (b.time > a.time) {
+            return -1;
+        }
+
+        return 0;
+    })
+
+    return result;
+}

From 5969e913b5fc53693683bcdf1bfb5e55bb4bcb7c Mon Sep 17 00:00:00 2001
From: Bert Verhelst <verhelstbert@gmail.com>
Date: Sun, 12 Sep 2021 15:19:27 +0200
Subject: [PATCH 03/10] fix(util-frontend): improve formatting

Co-authored-by: Adam Stachowicz <saibamenppl@gmail.com>
---
 src/util-frontend.ts | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/src/util-frontend.ts b/src/util-frontend.ts
index 8e7b1e10..d1d915da 100644
--- a/src/util-frontend.ts
+++ b/src/util-frontend.ts
@@ -22,7 +22,6 @@ export function timezoneList() {
     let result = [];
 
     for (let timezone of timezones) {
-
         try {
             let display = dayjs().tz(timezone.tzCode).format("Z");
 
@@ -33,9 +32,8 @@ export function timezoneList() {
             })
         } catch (e) {
             console.error(e.message);
-            console.log("Skip this timezone")
+            console.log("Skip this timezone");
         }
-
     }
 
     result.sort((a, b) => {

From a170694a83da071adcc5eb5b6404f8f5660e4e56 Mon Sep 17 00:00:00 2001
From: Bert Verhelst <verhelstbert@gmail.com>
Date: Sun, 12 Sep 2021 15:21:40 +0200
Subject: [PATCH 04/10] fix(util-frontend): improve formatting timezoneList

Co-authored-by: Adam Stachowicz <saibamenppl@gmail.com>
---
 src/util-frontend.ts | 1 -
 1 file changed, 1 deletion(-)

diff --git a/src/util-frontend.ts b/src/util-frontend.ts
index d1d915da..83d1a3cf 100644
--- a/src/util-frontend.ts
+++ b/src/util-frontend.ts
@@ -18,7 +18,6 @@ function getTimezoneOffset(timeZone) {
 }
 
 export function timezoneList() {
-
     let result = [];
 
     for (let timezone of timezones) {

From 8205f90f3d9fb81b76e392ee13011952122d4760 Mon Sep 17 00:00:00 2001
From: LouisLam <louislam@users.noreply.github.com>
Date: Mon, 13 Sep 2021 00:45:43 +0800
Subject: [PATCH 05/10] update language files

---
 src/languages/da-DK.js   | 18 +++++++++++++++++-
 src/languages/es-ES.js   | 18 +++++++++++++++++-
 src/languages/et-EE.js   | 18 +++++++++++++++++-
 src/languages/fr-FR.js   | 18 +++++++++++++++++-
 src/languages/it-IT.js   | 18 +++++++++++++++++-
 src/languages/ja.js      | 18 +++++++++++++++++-
 src/languages/ko-KR.js   | 18 +++++++++++++++++-
 src/languages/nl-NL.js   | 18 +++++++++++++++++-
 src/languages/pl.js      | 18 +++++++++++++++++-
 src/languages/ru-RU.js   | 18 +++++++++++++++++-
 src/languages/sr-latn.js | 18 +++++++++++++++++-
 src/languages/sr.js      | 18 +++++++++++++++++-
 src/languages/sv-SE.js   | 18 +++++++++++++++++-
 src/languages/zh-CN.js   | 19 +++++++++++++++++--
 src/languages/zh-HK.js   | 19 +++++++++++++++++--
 15 files changed, 255 insertions(+), 17 deletions(-)

diff --git a/src/languages/da-DK.js b/src/languages/da-DK.js
index 6e8069aa..c43e3181 100644
--- a/src/languages/da-DK.js
+++ b/src/languages/da-DK.js
@@ -127,5 +127,21 @@ export default {
     backupDescription2: "PS: Historik og hændelsesdata er ikke inkluderet.",
     backupDescription3: "Følsom data, f.eks. underretnings-tokener, er inkluderet i eksportfilen. Gem den sikkert.",
     alertNoFile: "Vælg en fil der skal importeres.",
-    alertWrongFileType: "Vælg venligst en JSON-fil."
+    alertWrongFileType: "Vælg venligst en JSON-fil.",
+    twoFAVerifyLabel: "Please type in your token to verify that 2FA is working",
+    tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.",
+    confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?",
+    confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?",
+    "Apply on all existing monitors": "Apply on all existing monitors",
+    "Verify Token": "Verify Token",
+    "Setup 2FA": "Setup 2FA",
+    "Enable 2FA": "Enable 2FA",
+    "Disable 2FA": "Disable 2FA",
+    "2FA Settings": "2FA Settings",
+    "Two Factor Authentication": "Two Factor Authentication",
+    Active: "Active",
+    Inactive: "Inactive",
+    Token: "Token",
+    "Show URI": "Show URI",
+    "Clear all statistics": "Clear all Statistics"
 }
diff --git a/src/languages/es-ES.js b/src/languages/es-ES.js
index b52c1654..7b24bcd0 100644
--- a/src/languages/es-ES.js
+++ b/src/languages/es-ES.js
@@ -127,5 +127,21 @@ export default {
     backupDescription2: "PS: History and event data is not included.",
     backupDescription3: "Sensitive data such as notification tokens is included in the export file, please keep it carefully.",
     alertNoFile: "Please select a file to import.",
-    alertWrongFileType: "Please select a JSON file."
+    alertWrongFileType: "Please select a JSON file.",
+    twoFAVerifyLabel: "Please type in your token to verify that 2FA is working",
+    tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.",
+    confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?",
+    confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?",
+    "Apply on all existing monitors": "Apply on all existing monitors",
+    "Verify Token": "Verify Token",
+    "Setup 2FA": "Setup 2FA",
+    "Enable 2FA": "Enable 2FA",
+    "Disable 2FA": "Disable 2FA",
+    "2FA Settings": "2FA Settings",
+    "Two Factor Authentication": "Two Factor Authentication",
+    Active: "Active",
+    Inactive: "Inactive",
+    Token: "Token",
+    "Show URI": "Show URI",
+    "Clear all statistics": "Clear all Statistics"
 }
diff --git a/src/languages/et-EE.js b/src/languages/et-EE.js
index fca24a33..c196da13 100644
--- a/src/languages/et-EE.js
+++ b/src/languages/et-EE.js
@@ -127,5 +127,21 @@ export default {
     backupDescription2: "PS: Varukoopia EI sisalda seirete ajalugu ja sündmustikku.",
     backupDescription3: "Varukoopiad sisaldavad teavitusmeetodite pääsuvõtmeid.",
     alertNoFile: "Palun lisa fail, mida importida.",
-    alertWrongFileType: "Palun lisa JSON-formaadis fail."
+    alertWrongFileType: "Palun lisa JSON-formaadis fail.",
+    twoFAVerifyLabel: "Please type in your token to verify that 2FA is working",
+    tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.",
+    confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?",
+    confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?",
+    "Apply on all existing monitors": "Apply on all existing monitors",
+    "Verify Token": "Verify Token",
+    "Setup 2FA": "Setup 2FA",
+    "Enable 2FA": "Enable 2FA",
+    "Disable 2FA": "Disable 2FA",
+    "2FA Settings": "2FA Settings",
+    "Two Factor Authentication": "Two Factor Authentication",
+    Active: "Active",
+    Inactive: "Inactive",
+    Token: "Token",
+    "Show URI": "Show URI",
+    "Clear all statistics": "Clear all Statistics"
 }
diff --git a/src/languages/fr-FR.js b/src/languages/fr-FR.js
index 4821b818..13714862 100644
--- a/src/languages/fr-FR.js
+++ b/src/languages/fr-FR.js
@@ -127,5 +127,21 @@ export default {
     backupDescription2: "PS: History and event data is not included.",
     backupDescription3: "Sensitive data such as notification tokens is included in the export file, please keep it carefully.",
     alertNoFile: "Please select a file to import.",
-    alertWrongFileType: "Please select a JSON file."
+    alertWrongFileType: "Please select a JSON file.",
+    twoFAVerifyLabel: "Please type in your token to verify that 2FA is working",
+    tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.",
+    confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?",
+    confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?",
+    "Apply on all existing monitors": "Apply on all existing monitors",
+    "Verify Token": "Verify Token",
+    "Setup 2FA": "Setup 2FA",
+    "Enable 2FA": "Enable 2FA",
+    "Disable 2FA": "Disable 2FA",
+    "2FA Settings": "2FA Settings",
+    "Two Factor Authentication": "Two Factor Authentication",
+    Active: "Active",
+    Inactive: "Inactive",
+    Token: "Token",
+    "Show URI": "Show URI",
+    "Clear all statistics": "Clear all Statistics"
 }
diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js
index 1d337810..5c171bec 100644
--- a/src/languages/it-IT.js
+++ b/src/languages/it-IT.js
@@ -127,5 +127,21 @@ export default {
     backupDescription2: "PS: History and event data is not included.",
     backupDescription3: "Sensitive data such as notification tokens is included in the export file, please keep it carefully.",
     alertNoFile: "Please select a file to import.",
-    alertWrongFileType: "Please select a JSON file."
+    alertWrongFileType: "Please select a JSON file.",
+    twoFAVerifyLabel: "Please type in your token to verify that 2FA is working",
+    tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.",
+    confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?",
+    confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?",
+    "Apply on all existing monitors": "Apply on all existing monitors",
+    "Verify Token": "Verify Token",
+    "Setup 2FA": "Setup 2FA",
+    "Enable 2FA": "Enable 2FA",
+    "Disable 2FA": "Disable 2FA",
+    "2FA Settings": "2FA Settings",
+    "Two Factor Authentication": "Two Factor Authentication",
+    Active: "Active",
+    Inactive: "Inactive",
+    Token: "Token",
+    "Show URI": "Show URI",
+    "Clear all statistics": "Clear all Statistics"
 }
diff --git a/src/languages/ja.js b/src/languages/ja.js
index 6d0693d5..2e1b5f33 100644
--- a/src/languages/ja.js
+++ b/src/languages/ja.js
@@ -127,5 +127,21 @@ export default {
     backupDescription2: "PS: History and event data is not included.",
     backupDescription3: "Sensitive data such as notification tokens is included in the export file, please keep it carefully.",
     alertNoFile: "Please select a file to import.",
-    alertWrongFileType: "Please select a JSON file."
+    alertWrongFileType: "Please select a JSON file.",
+    twoFAVerifyLabel: "Please type in your token to verify that 2FA is working",
+    tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.",
+    confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?",
+    confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?",
+    "Apply on all existing monitors": "Apply on all existing monitors",
+    "Verify Token": "Verify Token",
+    "Setup 2FA": "Setup 2FA",
+    "Enable 2FA": "Enable 2FA",
+    "Disable 2FA": "Disable 2FA",
+    "2FA Settings": "2FA Settings",
+    "Two Factor Authentication": "Two Factor Authentication",
+    Active: "Active",
+    Inactive: "Inactive",
+    Token: "Token",
+    "Show URI": "Show URI",
+    "Clear all statistics": "Clear all Statistics"
 }
diff --git a/src/languages/ko-KR.js b/src/languages/ko-KR.js
index 68479ade..2f9a002d 100644
--- a/src/languages/ko-KR.js
+++ b/src/languages/ko-KR.js
@@ -127,5 +127,21 @@ export default {
     backupDescription2: "PS: History and event data is not included.",
     backupDescription3: "Sensitive data such as notification tokens is included in the export file, please keep it carefully.",
     alertNoFile: "Please select a file to import.",
-    alertWrongFileType: "Please select a JSON file."
+    alertWrongFileType: "Please select a JSON file.",
+    twoFAVerifyLabel: "Please type in your token to verify that 2FA is working",
+    tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.",
+    confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?",
+    confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?",
+    "Apply on all existing monitors": "Apply on all existing monitors",
+    "Verify Token": "Verify Token",
+    "Setup 2FA": "Setup 2FA",
+    "Enable 2FA": "Enable 2FA",
+    "Disable 2FA": "Disable 2FA",
+    "2FA Settings": "2FA Settings",
+    "Two Factor Authentication": "Two Factor Authentication",
+    Active: "Active",
+    Inactive: "Inactive",
+    Token: "Token",
+    "Show URI": "Show URI",
+    "Clear all statistics": "Clear all Statistics"
 }
diff --git a/src/languages/nl-NL.js b/src/languages/nl-NL.js
index 48e3b3a2..80b69fd9 100644
--- a/src/languages/nl-NL.js
+++ b/src/languages/nl-NL.js
@@ -127,5 +127,21 @@ export default {
     backupDescription2: "PS: History and event data is not included.",
     backupDescription3: "Sensitive data such as notification tokens is included in the export file, please keep it carefully.",
     alertNoFile: "Please select a file to import.",
-    alertWrongFileType: "Please select a JSON file."
+    alertWrongFileType: "Please select a JSON file.",
+    twoFAVerifyLabel: "Please type in your token to verify that 2FA is working",
+    tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.",
+    confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?",
+    confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?",
+    "Apply on all existing monitors": "Apply on all existing monitors",
+    "Verify Token": "Verify Token",
+    "Setup 2FA": "Setup 2FA",
+    "Enable 2FA": "Enable 2FA",
+    "Disable 2FA": "Disable 2FA",
+    "2FA Settings": "2FA Settings",
+    "Two Factor Authentication": "Two Factor Authentication",
+    Active: "Active",
+    Inactive: "Inactive",
+    Token: "Token",
+    "Show URI": "Show URI",
+    "Clear all statistics": "Clear all Statistics"
 }
diff --git a/src/languages/pl.js b/src/languages/pl.js
index 3029b349..1b5ffd13 100644
--- a/src/languages/pl.js
+++ b/src/languages/pl.js
@@ -127,5 +127,21 @@ export default {
     backupDescription2: "PS: History and event data is not included.",
     backupDescription3: "Sensitive data such as notification tokens is included in the export file, please keep it carefully.",
     alertNoFile: "Please select a file to import.",
-    alertWrongFileType: "Please select a JSON file."
+    alertWrongFileType: "Please select a JSON file.",
+    twoFAVerifyLabel: "Please type in your token to verify that 2FA is working",
+    tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.",
+    confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?",
+    confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?",
+    "Apply on all existing monitors": "Apply on all existing monitors",
+    "Verify Token": "Verify Token",
+    "Setup 2FA": "Setup 2FA",
+    "Enable 2FA": "Enable 2FA",
+    "Disable 2FA": "Disable 2FA",
+    "2FA Settings": "2FA Settings",
+    "Two Factor Authentication": "Two Factor Authentication",
+    Active: "Active",
+    Inactive: "Inactive",
+    Token: "Token",
+    "Show URI": "Show URI",
+    "Clear all statistics": "Clear all Statistics"
 }
diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js
index 7f5eae76..11ad5687 100644
--- a/src/languages/ru-RU.js
+++ b/src/languages/ru-RU.js
@@ -127,5 +127,21 @@ export default {
     backupDescription2: "PS: History and event data is not included.",
     backupDescription3: "Sensitive data such as notification tokens is included in the export file, please keep it carefully.",
     alertNoFile: "Please select a file to import.",
-    alertWrongFileType: "Please select a JSON file."
+    alertWrongFileType: "Please select a JSON file.",
+    twoFAVerifyLabel: "Please type in your token to verify that 2FA is working",
+    tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.",
+    confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?",
+    confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?",
+    "Apply on all existing monitors": "Apply on all existing monitors",
+    "Verify Token": "Verify Token",
+    "Setup 2FA": "Setup 2FA",
+    "Enable 2FA": "Enable 2FA",
+    "Disable 2FA": "Disable 2FA",
+    "2FA Settings": "2FA Settings",
+    "Two Factor Authentication": "Two Factor Authentication",
+    Active: "Active",
+    Inactive: "Inactive",
+    Token: "Token",
+    "Show URI": "Show URI",
+    "Clear all statistics": "Clear all Statistics"
 }
diff --git a/src/languages/sr-latn.js b/src/languages/sr-latn.js
index 3dd73d2c..251be155 100644
--- a/src/languages/sr-latn.js
+++ b/src/languages/sr-latn.js
@@ -127,5 +127,21 @@ export default {
     backupDescription2: "PS: History and event data is not included.",
     backupDescription3: "Sensitive data such as notification tokens is included in the export file, please keep it carefully.",
     alertNoFile: "Please select a file to import.",
-    alertWrongFileType: "Please select a JSON file."
+    alertWrongFileType: "Please select a JSON file.",
+    twoFAVerifyLabel: "Please type in your token to verify that 2FA is working",
+    tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.",
+    confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?",
+    confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?",
+    "Apply on all existing monitors": "Apply on all existing monitors",
+    "Verify Token": "Verify Token",
+    "Setup 2FA": "Setup 2FA",
+    "Enable 2FA": "Enable 2FA",
+    "Disable 2FA": "Disable 2FA",
+    "2FA Settings": "2FA Settings",
+    "Two Factor Authentication": "Two Factor Authentication",
+    Active: "Active",
+    Inactive: "Inactive",
+    Token: "Token",
+    "Show URI": "Show URI",
+    "Clear all statistics": "Clear all Statistics"
 }
diff --git a/src/languages/sr.js b/src/languages/sr.js
index 6931d272..d213732f 100644
--- a/src/languages/sr.js
+++ b/src/languages/sr.js
@@ -127,5 +127,21 @@ export default {
     backupDescription2: "PS: History and event data is not included.",
     backupDescription3: "Sensitive data such as notification tokens is included in the export file, please keep it carefully.",
     alertNoFile: "Please select a file to import.",
-    alertWrongFileType: "Please select a JSON file."
+    alertWrongFileType: "Please select a JSON file.",
+    twoFAVerifyLabel: "Please type in your token to verify that 2FA is working",
+    tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.",
+    confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?",
+    confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?",
+    "Apply on all existing monitors": "Apply on all existing monitors",
+    "Verify Token": "Verify Token",
+    "Setup 2FA": "Setup 2FA",
+    "Enable 2FA": "Enable 2FA",
+    "Disable 2FA": "Disable 2FA",
+    "2FA Settings": "2FA Settings",
+    "Two Factor Authentication": "Two Factor Authentication",
+    Active: "Active",
+    Inactive: "Inactive",
+    Token: "Token",
+    "Show URI": "Show URI",
+    "Clear all statistics": "Clear all Statistics"
 }
diff --git a/src/languages/sv-SE.js b/src/languages/sv-SE.js
index f8749e28..4ab1a739 100644
--- a/src/languages/sv-SE.js
+++ b/src/languages/sv-SE.js
@@ -127,5 +127,21 @@ export default {
     backupDescription2: "PS: History and event data is not included.",
     backupDescription3: "Sensitive data such as notification tokens is included in the export file, please keep it carefully.",
     alertNoFile: "Please select a file to import.",
-    alertWrongFileType: "Please select a JSON file."
+    alertWrongFileType: "Please select a JSON file.",
+    twoFAVerifyLabel: "Please type in your token to verify that 2FA is working",
+    tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.",
+    confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?",
+    confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?",
+    "Apply on all existing monitors": "Apply on all existing monitors",
+    "Verify Token": "Verify Token",
+    "Setup 2FA": "Setup 2FA",
+    "Enable 2FA": "Enable 2FA",
+    "Disable 2FA": "Disable 2FA",
+    "2FA Settings": "2FA Settings",
+    "Two Factor Authentication": "Two Factor Authentication",
+    Active: "Active",
+    Inactive: "Inactive",
+    Token: "Token",
+    "Show URI": "Show URI",
+    "Clear all statistics": "Clear all Statistics"
 }
diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js
index 1d15c3d9..488beaa3 100644
--- a/src/languages/zh-CN.js
+++ b/src/languages/zh-CN.js
@@ -119,7 +119,6 @@ export default {
     "Auto Get": "自动获取",
     enableDefaultNotificationDescription: "新的监控项将默认启用,你也可以在每个监控项中分别设置",
     "Default enabled": "默认开启",
-    "Also apply to existing monitors": "应用到所有监控项",
     "Import/Export Backup": "导入/导出备份",
     Export: "导出",
     Import: "导入",
@@ -127,5 +126,21 @@ export default {
     backupDescription2: "注意: 不包括历史状态和事件数据",
     backupDescription3: "导出的文件中可能包含敏感信息,如消息通知的 Token 信息,请小心存放!",
     alertNoFile: "请选择一个文件导入",
-    alertWrongFileType: "请选择一个 JSON 格式的文件"
+    alertWrongFileType: "请选择一个 JSON 格式的文件",
+    twoFAVerifyLabel: "Please type in your token to verify that 2FA is working",
+    tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.",
+    confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?",
+    confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?",
+    "Apply on all existing monitors": "应用到所有监控项",
+    "Verify Token": "Verify Token",
+    "Setup 2FA": "Setup 2FA",
+    "Enable 2FA": "Enable 2FA",
+    "Disable 2FA": "Disable 2FA",
+    "2FA Settings": "2FA Settings",
+    "Two Factor Authentication": "Two Factor Authentication",
+    Active: "Active",
+    Inactive: "Inactive",
+    Token: "Token",
+    "Show URI": "Show URI",
+    "Clear all statistics": "Clear all Statistics"
 }
diff --git a/src/languages/zh-HK.js b/src/languages/zh-HK.js
index 314b6e69..686f5970 100644
--- a/src/languages/zh-HK.js
+++ b/src/languages/zh-HK.js
@@ -119,7 +119,6 @@ export default {
     "Auto Get": "自動獲取",
     enableDefaultNotificationDescription: "新增監測器時這個通知會預設啟用,當然每個監測器亦可分別控制開關。",
     "Default enabled": "預設通知",
-    "Also apply to existing monitors": "同時取用至目前所有監測器",
     "Import/Export Backup": "匯入/匯出 備份",
     Export: "匯出",
     Import: "匯入",
@@ -127,5 +126,21 @@ export default {
     backupDescription2: "註:此備份不包括歷史記錄。",
     backupDescription3: "此備份可能包含了一些敏感資料如通知裡的 Token,請小心保存備份。",
     alertNoFile: "請選擇一個檔案",
-    alertWrongFileType: "請選擇 JSON 檔案"
+    alertWrongFileType: "請選擇 JSON 檔案",
+    twoFAVerifyLabel: "Please type in your token to verify that 2FA is working",
+    tokenValidSettingsMsg: "Token is valid! You can now save the 2FA settings.",
+    confirmEnableTwoFAMsg: "Are you sure you want to enable 2FA?",
+    confirmDisableTwoFAMsg: "Are you sure you want to disable 2FA?",
+    "Apply on all existing monitors": "套用至目前所有監測器",
+    "Verify Token": "驗証 Token",
+    "Setup 2FA": "設定 2FA",
+    "Enable 2FA": "開啟 2FA",
+    "Disable 2FA": "關閉 2FA",
+    "2FA Settings": "2FA 設定",
+    "Two Factor Authentication": "雙重認證",
+    Active: "生效",
+    Inactive: "未生效",
+    Token: "Token",
+    "Show URI": "顯示 URI",
+    "Clear all statistics": "清除所有歷史記錄"
 }

From 471333ad030342b573df93b094f0829c02725d0b Mon Sep 17 00:00:00 2001
From: Bert Verhelst <verhelstbert@gmail.com>
Date: Sun, 12 Sep 2021 18:56:39 +0200
Subject: [PATCH 06/10] fix(util-frontend): revert typescript conversion

---
 package-lock.json                          | 1 +
 src/{util-frontend.ts => util-frontend.js} | 6 +++---
 2 files changed, 4 insertions(+), 3 deletions(-)
 rename src/{util-frontend.ts => util-frontend.js} (90%)

diff --git a/package-lock.json b/package-lock.json
index 57d7b85a..f5ca52fa 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12478,6 +12478,7 @@
         },
         "sqlite3": {
             "version": "git+ssh://git@github.com/mapbox/node-sqlite3.git#593c9d498be2510d286349134537e3bf89401c4a",
+            "integrity": "sha512-jUoUHizVh+QCulAEPid3qxX+TunsNMDFDC3TdB/+33OEx8Ud3IhbfrXU+MNnhAR9p4Sk5X93LkoXure8VVGrQA==",
             "from": "sqlite3@github:mapbox/node-sqlite3#593c9d",
             "requires": {
                 "@mapbox/node-pre-gyp": "^1.0.0",
diff --git a/src/util-frontend.ts b/src/util-frontend.js
similarity index 90%
rename from src/util-frontend.ts
rename to src/util-frontend.js
index 83d1a3cf..525a241a 100644
--- a/src/util-frontend.ts
+++ b/src/util-frontend.js
@@ -1,6 +1,6 @@
-import * as dayjs from "dayjs";
-import * as timezone from "dayjs/plugin/timezone";
-import * as utc from "dayjs/plugin/utc";
+import dayjs from "dayjs";
+import timezone from "dayjs/plugin/timezone";
+import utc from "dayjs/plugin/utc";
 import timezones from "timezones-list";
 
 dayjs.extend(utc)

From 7df9698e5d84d1458c9e2e0f3f58c48e15551d01 Mon Sep 17 00:00:00 2001
From: LouisLam <louislam@users.noreply.github.com>
Date: Mon, 13 Sep 2021 00:58:45 +0800
Subject: [PATCH 07/10] eslint: comma-dangle for language files

---
 .eslintrc.js              | 8 ++++++++
 src/languages/da-DK.js    | 2 +-
 src/languages/de-DE.js    | 6 +++---
 src/languages/en.js       | 2 +-
 src/languages/es-ES.js    | 2 +-
 src/languages/et-EE.js    | 2 +-
 src/languages/fr-FR.js    | 2 +-
 src/languages/it-IT.js    | 2 +-
 src/languages/ja.js       | 2 +-
 src/languages/ko-KR.js    | 2 +-
 src/languages/nl-NL.js    | 2 +-
 src/languages/pl.js       | 2 +-
 src/languages/ru-RU.js    | 2 +-
 src/languages/sr-latn.js  | 2 +-
 src/languages/sr.js       | 2 +-
 src/languages/sv-SE.js    | 2 +-
 src/languages/zh-CN.js    | 2 +-
 src/languages/zh-HK.js    | 2 +-
 src/pages/EditMonitor.vue | 1 +
 19 files changed, 28 insertions(+), 19 deletions(-)

diff --git a/.eslintrc.js b/.eslintrc.js
index 6704a85b..398d64c8 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -82,4 +82,12 @@ module.exports = {
         "one-var": ["error", "never"],
         "max-statements-per-line": ["error", { "max": 1 }]
     },
+    "overrides": [
+        {
+            "files": [ "src/languages/*.js" ],
+            "rules": {
+                "comma-dangle": ["error", "always-multiline"],
+            }
+        }
+    ]
 }
diff --git a/src/languages/da-DK.js b/src/languages/da-DK.js
index c43e3181..fa9ceac7 100644
--- a/src/languages/da-DK.js
+++ b/src/languages/da-DK.js
@@ -143,5 +143,5 @@ export default {
     Inactive: "Inactive",
     Token: "Token",
     "Show URI": "Show URI",
-    "Clear all statistics": "Clear all Statistics"
+    "Clear all statistics": "Clear all Statistics",
 }
diff --git a/src/languages/de-DE.js b/src/languages/de-DE.js
index cff49cb0..223d23b9 100644
--- a/src/languages/de-DE.js
+++ b/src/languages/de-DE.js
@@ -114,8 +114,8 @@ export default {
     "Repeat Password": "Wiederhole das Passwort",
     "Resource Record Type": "Resource Record Type",
     "Import/Export Backup": "Import/Export Backup",
-    "Export": "Export",
-    "Import": "Import",
+    Export: "Export",
+    Import: "Import",
     respTime: "Antw. Zeit (ms)",
     notAvailableShort: "N/A",
     "Default enabled": "Standardmäßig aktiviert",
@@ -142,5 +142,5 @@ export default {
     Inactive: "Inaktiv",
     Token: "Token",
     "Show URI": "URI Anzeigen",
-    "Clear all statistics": "Lösche alle Statistiken"
+    "Clear all statistics": "Lösche alle Statistiken",
 }
diff --git a/src/languages/en.js b/src/languages/en.js
index 9b692b51..9b3e5422 100644
--- a/src/languages/en.js
+++ b/src/languages/en.js
@@ -142,5 +142,5 @@ export default {
     Inactive: "Inactive",
     Token: "Token",
     "Show URI": "Show URI",
-    "Clear all statistics": "Clear all Statistics"
+    "Clear all statistics": "Clear all Statistics",
 }
diff --git a/src/languages/es-ES.js b/src/languages/es-ES.js
index 7b24bcd0..ca3e4d75 100644
--- a/src/languages/es-ES.js
+++ b/src/languages/es-ES.js
@@ -143,5 +143,5 @@ export default {
     Inactive: "Inactive",
     Token: "Token",
     "Show URI": "Show URI",
-    "Clear all statistics": "Clear all Statistics"
+    "Clear all statistics": "Clear all Statistics",
 }
diff --git a/src/languages/et-EE.js b/src/languages/et-EE.js
index c196da13..551e0c67 100644
--- a/src/languages/et-EE.js
+++ b/src/languages/et-EE.js
@@ -143,5 +143,5 @@ export default {
     Inactive: "Inactive",
     Token: "Token",
     "Show URI": "Show URI",
-    "Clear all statistics": "Clear all Statistics"
+    "Clear all statistics": "Clear all Statistics",
 }
diff --git a/src/languages/fr-FR.js b/src/languages/fr-FR.js
index 13714862..6d61beb0 100644
--- a/src/languages/fr-FR.js
+++ b/src/languages/fr-FR.js
@@ -143,5 +143,5 @@ export default {
     Inactive: "Inactive",
     Token: "Token",
     "Show URI": "Show URI",
-    "Clear all statistics": "Clear all Statistics"
+    "Clear all statistics": "Clear all Statistics",
 }
diff --git a/src/languages/it-IT.js b/src/languages/it-IT.js
index 5c171bec..a2e1d5b5 100644
--- a/src/languages/it-IT.js
+++ b/src/languages/it-IT.js
@@ -143,5 +143,5 @@ export default {
     Inactive: "Inactive",
     Token: "Token",
     "Show URI": "Show URI",
-    "Clear all statistics": "Clear all Statistics"
+    "Clear all statistics": "Clear all Statistics",
 }
diff --git a/src/languages/ja.js b/src/languages/ja.js
index 2e1b5f33..eff5279f 100644
--- a/src/languages/ja.js
+++ b/src/languages/ja.js
@@ -143,5 +143,5 @@ export default {
     Inactive: "Inactive",
     Token: "Token",
     "Show URI": "Show URI",
-    "Clear all statistics": "Clear all Statistics"
+    "Clear all statistics": "Clear all Statistics",
 }
diff --git a/src/languages/ko-KR.js b/src/languages/ko-KR.js
index 2f9a002d..e730d714 100644
--- a/src/languages/ko-KR.js
+++ b/src/languages/ko-KR.js
@@ -143,5 +143,5 @@ export default {
     Inactive: "Inactive",
     Token: "Token",
     "Show URI": "Show URI",
-    "Clear all statistics": "Clear all Statistics"
+    "Clear all statistics": "Clear all Statistics",
 }
diff --git a/src/languages/nl-NL.js b/src/languages/nl-NL.js
index 80b69fd9..8e61125f 100644
--- a/src/languages/nl-NL.js
+++ b/src/languages/nl-NL.js
@@ -143,5 +143,5 @@ export default {
     Inactive: "Inactive",
     Token: "Token",
     "Show URI": "Show URI",
-    "Clear all statistics": "Clear all Statistics"
+    "Clear all statistics": "Clear all Statistics",
 }
diff --git a/src/languages/pl.js b/src/languages/pl.js
index 1b5ffd13..a63005aa 100644
--- a/src/languages/pl.js
+++ b/src/languages/pl.js
@@ -143,5 +143,5 @@ export default {
     Inactive: "Inactive",
     Token: "Token",
     "Show URI": "Show URI",
-    "Clear all statistics": "Clear all Statistics"
+    "Clear all statistics": "Clear all Statistics",
 }
diff --git a/src/languages/ru-RU.js b/src/languages/ru-RU.js
index 11ad5687..b1e2b1ef 100644
--- a/src/languages/ru-RU.js
+++ b/src/languages/ru-RU.js
@@ -143,5 +143,5 @@ export default {
     Inactive: "Inactive",
     Token: "Token",
     "Show URI": "Show URI",
-    "Clear all statistics": "Clear all Statistics"
+    "Clear all statistics": "Clear all Statistics",
 }
diff --git a/src/languages/sr-latn.js b/src/languages/sr-latn.js
index 251be155..b0e5489f 100644
--- a/src/languages/sr-latn.js
+++ b/src/languages/sr-latn.js
@@ -143,5 +143,5 @@ export default {
     Inactive: "Inactive",
     Token: "Token",
     "Show URI": "Show URI",
-    "Clear all statistics": "Clear all Statistics"
+    "Clear all statistics": "Clear all Statistics",
 }
diff --git a/src/languages/sr.js b/src/languages/sr.js
index d213732f..e6e3ba4c 100644
--- a/src/languages/sr.js
+++ b/src/languages/sr.js
@@ -143,5 +143,5 @@ export default {
     Inactive: "Inactive",
     Token: "Token",
     "Show URI": "Show URI",
-    "Clear all statistics": "Clear all Statistics"
+    "Clear all statistics": "Clear all Statistics",
 }
diff --git a/src/languages/sv-SE.js b/src/languages/sv-SE.js
index 4ab1a739..38f27dac 100644
--- a/src/languages/sv-SE.js
+++ b/src/languages/sv-SE.js
@@ -143,5 +143,5 @@ export default {
     Inactive: "Inactive",
     Token: "Token",
     "Show URI": "Show URI",
-    "Clear all statistics": "Clear all Statistics"
+    "Clear all statistics": "Clear all Statistics",
 }
diff --git a/src/languages/zh-CN.js b/src/languages/zh-CN.js
index 488beaa3..a1990168 100644
--- a/src/languages/zh-CN.js
+++ b/src/languages/zh-CN.js
@@ -142,5 +142,5 @@ export default {
     Inactive: "Inactive",
     Token: "Token",
     "Show URI": "Show URI",
-    "Clear all statistics": "Clear all Statistics"
+    "Clear all statistics": "Clear all Statistics",
 }
diff --git a/src/languages/zh-HK.js b/src/languages/zh-HK.js
index 686f5970..187e1a12 100644
--- a/src/languages/zh-HK.js
+++ b/src/languages/zh-HK.js
@@ -142,5 +142,5 @@ export default {
     Inactive: "未生效",
     Token: "Token",
     "Show URI": "顯示 URI",
-    "Clear all statistics": "清除所有歷史記錄"
+    "Clear all statistics": "清除所有歷史記錄",
 }
diff --git a/src/pages/EditMonitor.vue b/src/pages/EditMonitor.vue
index 420c4900..f98bb756 100644
--- a/src/pages/EditMonitor.vue
+++ b/src/pages/EditMonitor.vue
@@ -219,6 +219,7 @@ export default {
             dnsresolvetypeOptions: [],
 
             // Source: https://digitalfortress.tech/tips/top-15-commonly-used-regex/
+            // eslint-disable-next-line
             ipRegexPattern: "((^\s*((([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))\s*$)|(^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$))",
         }
     },

From bb879725430007b85d38a3d641280fc25471984b Mon Sep 17 00:00:00 2001
From: Ponkhy <github@myon.lu>
Date: Sun, 12 Sep 2021 21:58:52 +0200
Subject: [PATCH 08/10] Hide 2FA section if disabled auth

---
 src/pages/Settings.vue | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue
index 8d5545b2..696bee43 100644
--- a/src/pages/Settings.vue
+++ b/src/pages/Settings.vue
@@ -120,11 +120,10 @@
                                 </form>
                             </template>
 
-                            <h2 class="mt-5 mb-2">
-                                {{ $t("Two Factor Authentication") }}
-                            </h2>
-
-                            <div class="mb-3">
+                            <div v-if="! settings.disableAuth" class="mt-5 mb-3">
+                                <h2 class="mb-2">
+                                    {{ $t("Two Factor Authentication") }}
+                                </h2>
                                 <button class="btn btn-primary me-2" type="button" @click="$refs.TwoFADialog.show()">{{ $t("2FA Settings") }}</button>
                             </div>
 

From 76f1f34a0af1da3e248c549f4cede1340b71c2ee Mon Sep 17 00:00:00 2001
From: LouisLam <louislam@users.noreply.github.com>
Date: Mon, 13 Sep 2021 19:25:12 +0800
Subject: [PATCH 09/10] fix #397, incorrect encode function for export file

---
 src/pages/Settings.vue | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/pages/Settings.vue b/src/pages/Settings.vue
index 696bee43..03fd89f5 100644
--- a/src/pages/Settings.vue
+++ b/src/pages/Settings.vue
@@ -395,7 +395,7 @@ export default {
             }
             exportData = JSON.stringify(exportData, null, 4);
             let downloadItem = document.createElement("a");
-            downloadItem.setAttribute("href", "data:application/json;charset=utf-8," + encodeURI(exportData));
+            downloadItem.setAttribute("href", "data:application/json;charset=utf-8," + encodeURIComponent(exportData));
             downloadItem.setAttribute("download", fileName);
             downloadItem.click();
         },

From 59ff9fa2932d6c5cb34e09e5fc0d62ee3aec44da Mon Sep 17 00:00:00 2001
From: LouisLam <louislam@users.noreply.github.com>
Date: Mon, 13 Sep 2021 19:53:29 +0800
Subject: [PATCH 10/10] update missing timezone console msg

---
 .gitignore           |    1 -
 package-lock.json    | 1057 +++++++++++++++++++++++++++++++++++-------
 src/util-frontend.js |    3 +-
 3 files changed, 882 insertions(+), 179 deletions(-)

diff --git a/.gitignore b/.gitignore
index 59d21098..56007fb0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,5 +7,4 @@ dist-ssr
 
 /data
 !/data/.gitkeep
-/uptime-kuma
 .vscode
diff --git a/package-lock.json b/package-lock.json
index bdee56d8..6a4d3f06 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -7353,6 +7353,7 @@
     "dependencies": {
         "@babel/code-frame": {
             "version": "7.12.11",
+            "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
             "dev": true,
             "requires": {
                 "@babel/highlight": "^7.10.4"
@@ -7360,10 +7361,12 @@
         },
         "@babel/compat-data": {
             "version": "7.15.0",
+            "integrity": "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==",
             "dev": true
         },
         "@babel/core": {
             "version": "7.15.4",
+            "integrity": "sha512-Lkcv9I4a8bgUI8LJOLM6IKv6hnz1KOju6KM1lceqVMKlKKqNRopYd2Pc9MgIurqvMJ6BooemrnJz8jlIiQIpsA==",
             "dev": true,
             "requires": {
                 "@babel/code-frame": "^7.14.5",
@@ -7385,6 +7388,7 @@
             "dependencies": {
                 "@babel/code-frame": {
                     "version": "7.14.5",
+                    "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
                     "dev": true,
                     "requires": {
                         "@babel/highlight": "^7.14.5"
@@ -7392,6 +7396,7 @@
                 },
                 "json5": {
                     "version": "2.2.0",
+                    "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
                     "dev": true,
                     "requires": {
                         "minimist": "^1.2.5"
@@ -7399,12 +7404,14 @@
                 },
                 "source-map": {
                     "version": "0.5.7",
+                    "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
                     "dev": true
                 }
             }
         },
         "@babel/eslint-parser": {
             "version": "7.15.4",
+            "integrity": "sha512-hPMIAmGNbmQzXJIo2P43Zj9UhRmGev5f9nqdBFOWNGDGh6XKmjby79woBvg6y0Jur6yRfQBneDbUQ8ZVc1krFw==",
             "dev": true,
             "requires": {
                 "eslint-scope": "^5.1.1",
@@ -7414,6 +7421,7 @@
         },
         "@babel/generator": {
             "version": "7.15.4",
+            "integrity": "sha512-d3itta0tu+UayjEORPNz6e1T3FtvWlP5N4V5M+lhp/CxT4oAA7/NcScnpRyspUMLK6tu9MNHmQHxRykuN2R7hw==",
             "dev": true,
             "requires": {
                 "@babel/types": "^7.15.4",
@@ -7423,12 +7431,14 @@
             "dependencies": {
                 "source-map": {
                     "version": "0.5.7",
+                    "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
                     "dev": true
                 }
             }
         },
         "@babel/helper-compilation-targets": {
             "version": "7.15.4",
+            "integrity": "sha512-rMWPCirulnPSe4d+gwdWXLfAXTTBj8M3guAf5xFQJ0nvFY7tfNAFnWdqaHegHlgDZOCT4qvhF3BYlSJag8yhqQ==",
             "dev": true,
             "requires": {
                 "@babel/compat-data": "^7.15.0",
@@ -7439,6 +7449,7 @@
         },
         "@babel/helper-function-name": {
             "version": "7.15.4",
+            "integrity": "sha512-Z91cOMM4DseLIGOnog+Z8OI6YseR9bua+HpvLAQ2XayUGU+neTtX+97caALaLdyu53I/fjhbeCnWnRH1O3jFOw==",
             "dev": true,
             "requires": {
                 "@babel/helper-get-function-arity": "^7.15.4",
@@ -7448,6 +7459,7 @@
         },
         "@babel/helper-get-function-arity": {
             "version": "7.15.4",
+            "integrity": "sha512-1/AlxSF92CmGZzHnC515hm4SirTxtpDnLEJ0UyEMgTMZN+6bxXKg04dKhiRx5Enel+SUA1G1t5Ed/yQia0efrA==",
             "dev": true,
             "requires": {
                 "@babel/types": "^7.15.4"
@@ -7455,6 +7467,7 @@
         },
         "@babel/helper-hoist-variables": {
             "version": "7.15.4",
+            "integrity": "sha512-VTy085egb3jUGVK9ycIxQiPbquesq0HUQ+tPO0uv5mPEBZipk+5FkRKiWq5apuyTE9FUrjENB0rCf8y+n+UuhA==",
             "dev": true,
             "requires": {
                 "@babel/types": "^7.15.4"
@@ -7462,6 +7475,7 @@
         },
         "@babel/helper-member-expression-to-functions": {
             "version": "7.15.4",
+            "integrity": "sha512-cokOMkxC/BTyNP1AlY25HuBWM32iCEsLPI4BHDpJCHHm1FU2E7dKWWIXJgQgSFiu4lp8q3bL1BIKwqkSUviqtA==",
             "dev": true,
             "requires": {
                 "@babel/types": "^7.15.4"
@@ -7469,6 +7483,7 @@
         },
         "@babel/helper-module-imports": {
             "version": "7.15.4",
+            "integrity": "sha512-jeAHZbzUwdW/xHgHQ3QmWR4Jg6j15q4w/gCfwZvtqOxoo5DKtLHk8Bsf4c5RZRC7NmLEs+ohkdq8jFefuvIxAA==",
             "dev": true,
             "requires": {
                 "@babel/types": "^7.15.4"
@@ -7476,6 +7491,7 @@
         },
         "@babel/helper-module-transforms": {
             "version": "7.15.4",
+            "integrity": "sha512-9fHHSGE9zTC++KuXLZcB5FKgvlV83Ox+NLUmQTawovwlJ85+QMhk1CnVk406CQVj97LaWod6KVjl2Sfgw9Aktw==",
             "dev": true,
             "requires": {
                 "@babel/helper-module-imports": "^7.15.4",
@@ -7490,6 +7506,7 @@
         },
         "@babel/helper-optimise-call-expression": {
             "version": "7.15.4",
+            "integrity": "sha512-E/z9rfbAOt1vDW1DR7k4SzhzotVV5+qMciWV6LaG1g4jeFrkDlJedjtV4h0i4Q/ITnUu+Pk08M7fczsB9GXBDw==",
             "dev": true,
             "requires": {
                 "@babel/types": "^7.15.4"
@@ -7497,6 +7514,7 @@
         },
         "@babel/helper-replace-supers": {
             "version": "7.15.4",
+            "integrity": "sha512-/ztT6khaXF37MS47fufrKvIsiQkx1LBRvSJNzRqmbyeZnTwU9qBxXYLaaT/6KaxfKhjs2Wy8kG8ZdsFUuWBjzw==",
             "dev": true,
             "requires": {
                 "@babel/helper-member-expression-to-functions": "^7.15.4",
@@ -7507,6 +7525,7 @@
         },
         "@babel/helper-simple-access": {
             "version": "7.15.4",
+            "integrity": "sha512-UzazrDoIVOZZcTeHHEPYrr1MvTR/K+wgLg6MY6e1CJyaRhbibftF6fR2KU2sFRtI/nERUZR9fBd6aKgBlIBaPg==",
             "dev": true,
             "requires": {
                 "@babel/types": "^7.15.4"
@@ -7514,20 +7533,24 @@
         },
         "@babel/helper-split-export-declaration": {
             "version": "7.15.4",
+            "integrity": "sha512-HsFqhLDZ08DxCpBdEVtKmywj6PQbwnF6HHybur0MAnkAKnlS6uHkwnmRIkElB2Owpfb4xL4NwDmDLFubueDXsw==",
             "dev": true,
             "requires": {
                 "@babel/types": "^7.15.4"
             }
         },
         "@babel/helper-validator-identifier": {
-            "version": "7.14.9"
+            "version": "7.14.9",
+            "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g=="
         },
         "@babel/helper-validator-option": {
             "version": "7.14.5",
+            "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==",
             "dev": true
         },
         "@babel/helpers": {
             "version": "7.15.4",
+            "integrity": "sha512-V45u6dqEJ3w2rlryYYXf6i9rQ5YMNu4FLS6ngs8ikblhu2VdR1AqAd6aJjBzmf2Qzh6KOLqKHxEN9+TFbAkAVQ==",
             "dev": true,
             "requires": {
                 "@babel/template": "^7.15.4",
@@ -7537,6 +7560,7 @@
         },
         "@babel/highlight": {
             "version": "7.14.5",
+            "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==",
             "dev": true,
             "requires": {
                 "@babel/helper-validator-identifier": "^7.14.5",
@@ -7546,6 +7570,7 @@
             "dependencies": {
                 "ansi-styles": {
                     "version": "3.2.1",
+                    "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
                     "dev": true,
                     "requires": {
                         "color-convert": "^1.9.0"
@@ -7553,6 +7578,7 @@
                 },
                 "chalk": {
                     "version": "2.4.2",
+                    "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
                     "dev": true,
                     "requires": {
                         "ansi-styles": "^3.2.1",
@@ -7562,6 +7588,7 @@
                 },
                 "color-convert": {
                     "version": "1.9.3",
+                    "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
                     "dev": true,
                     "requires": {
                         "color-name": "1.1.3"
@@ -7569,18 +7596,22 @@
                 },
                 "color-name": {
                     "version": "1.1.3",
+                    "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
                     "dev": true
                 },
                 "escape-string-regexp": {
                     "version": "1.0.5",
+                    "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
                     "dev": true
                 },
                 "has-flag": {
                     "version": "3.0.0",
+                    "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
                     "dev": true
                 },
                 "supports-color": {
                     "version": "5.5.0",
+                    "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
                     "dev": true,
                     "requires": {
                         "has-flag": "^3.0.0"
@@ -7589,14 +7620,17 @@
             }
         },
         "@babel/parser": {
-            "version": "7.15.4"
+            "version": "7.15.4",
+            "integrity": "sha512-xmzz+7fRpjrvDUj+GV7zfz/R3gSK2cOxGlazaXooxspCr539cbTXJKvBJzSVI2pPhcRGquoOtaIkKCsHQUiO3w=="
         },
         "@babel/standalone": {
             "version": "7.15.4",
+            "integrity": "sha512-UO0QCTFjX5NSuwX/i8+/pesmRPoRTtf46Cpn8VHcXvNinEr2lxqe8Ix10TfU/UK5qsaOrcKk24We8wH1G0nTZA==",
             "dev": true
         },
         "@babel/template": {
             "version": "7.15.4",
+            "integrity": "sha512-UgBAfEa1oGuYgDIPM2G+aHa4Nlo9Lh6mGD2bDBGMTbYnc38vulXPuC1MGjYILIEmlwl6Rd+BPR9ee3gm20CBtg==",
             "dev": true,
             "requires": {
                 "@babel/code-frame": "^7.14.5",
@@ -7606,6 +7640,7 @@
             "dependencies": {
                 "@babel/code-frame": {
                     "version": "7.14.5",
+                    "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
                     "dev": true,
                     "requires": {
                         "@babel/highlight": "^7.14.5"
@@ -7615,6 +7650,7 @@
         },
         "@babel/traverse": {
             "version": "7.15.4",
+            "integrity": "sha512-W6lQD8l4rUbQR/vYgSuCAE75ADyyQvOpFVsvPPdkhf6lATXAsQIG9YdtOcu8BB1dZ0LKu+Zo3c1wEcbKeuhdlA==",
             "dev": true,
             "requires": {
                 "@babel/code-frame": "^7.14.5",
@@ -7630,6 +7666,7 @@
             "dependencies": {
                 "@babel/code-frame": {
                     "version": "7.14.5",
+                    "integrity": "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==",
                     "dev": true,
                     "requires": {
                         "@babel/highlight": "^7.14.5"
@@ -7637,12 +7674,14 @@
                 },
                 "globals": {
                     "version": "11.12.0",
+                    "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
                     "dev": true
                 }
             }
         },
         "@babel/types": {
             "version": "7.15.4",
+            "integrity": "sha512-0f1HJFuGmmbrKTCZtbm3cU+b/AqdEYk5toj5iQur58xkVMlS0JWaKxTBSmCXd47uiN7vbcozAupm6Mvs80GNhw==",
             "requires": {
                 "@babel/helper-validator-identifier": "^7.14.9",
                 "to-fast-properties": "^2.0.0"
@@ -7650,6 +7689,7 @@
         },
         "@eslint/eslintrc": {
             "version": "0.4.3",
+            "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==",
             "dev": true,
             "requires": {
                 "ajv": "^6.12.4",
@@ -7664,32 +7704,37 @@
             }
         },
         "@fortawesome/fontawesome-common-types": {
-            "version": "0.2.36"
+            "version": "0.2.36",
+            "integrity": "sha512-a/7BiSgobHAgBWeN7N0w+lAhInrGxksn13uK7231n2m8EDPE3BMCl9NZLTGrj9ZXfCmC6LM0QLqXidIizVQ6yg=="
         },
         "@fortawesome/fontawesome-svg-core": {
             "version": "1.2.36",
+            "integrity": "sha512-YUcsLQKYb6DmaJjIHdDWpBIGCcyE/W+p/LMGvjQem55Mm2XWVAP5kWTMKWLv9lwpCVjpLxPyOMOyUocP1GxrtA==",
             "requires": {
                 "@fortawesome/fontawesome-common-types": "^0.2.36"
             }
         },
         "@fortawesome/free-regular-svg-icons": {
             "version": "5.15.4",
+            "integrity": "sha512-9VNNnU3CXHy9XednJ3wzQp6SwNwT3XaM26oS4Rp391GsxVYA+0oDR2J194YCIWf7jNRCYKjUCOduxdceLrx+xw==",
             "requires": {
                 "@fortawesome/fontawesome-common-types": "^0.2.36"
             }
         },
         "@fortawesome/free-solid-svg-icons": {
             "version": "5.15.4",
+            "integrity": "sha512-JLmQfz6tdtwxoihXLg6lT78BorrFyCf59SAwBM6qV/0zXyVeDygJVb3fk+j5Qat+Yvcxp1buLTY5iDh1ZSAQ8w==",
             "requires": {
                 "@fortawesome/fontawesome-common-types": "^0.2.36"
             }
         },
         "@fortawesome/vue-fontawesome": {
             "version": "3.0.0-4",
-            "requires": {}
+            "integrity": "sha512-dQVhhMRcUPCb0aqk5ohm0KGk5OJ7wFZ9aYapLzJB3Z+xs7LhkRWLTb87reelUAG5PFDjutDAXuloT9hi6cz72A=="
         },
         "@humanwhocodes/config-array": {
             "version": "0.5.0",
+            "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==",
             "dev": true,
             "requires": {
                 "@humanwhocodes/object-schema": "^1.2.0",
@@ -7699,10 +7744,12 @@
         },
         "@humanwhocodes/object-schema": {
             "version": "1.2.0",
+            "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==",
             "dev": true
         },
         "@intlify/core-base": {
             "version": "9.1.7",
+            "integrity": "sha512-q1W2j81xbHyfKrNcca/CeJyf0Bcx4u9UDu05l7AaiJbqOseTme2o2I3wp1hDDCtmC7k7HgX0sAygyHNJH9swuQ==",
             "requires": {
                 "@intlify/devtools-if": "9.1.7",
                 "@intlify/message-compiler": "9.1.7",
@@ -7714,12 +7761,14 @@
         },
         "@intlify/devtools-if": {
             "version": "9.1.7",
+            "integrity": "sha512-/DcN5FUySSkQhDqx5y1RvxfuCXO3Ot/dUEIOs472qbM7Hyb2qif+eXCnwHBzlI4+wEfQVT6L0PiM1a7Er/ro9g==",
             "requires": {
                 "@intlify/shared": "9.1.7"
             }
         },
         "@intlify/message-compiler": {
             "version": "9.1.7",
+            "integrity": "sha512-JZNkAhr3O7tnbdbRBcpYfqr/Ai26WTzX0K/lV8Y1KVdOIj/dGiamaffdWUdFiDXUnbJRNbPiOaKxy7Pwip3KxQ==",
             "requires": {
                 "@intlify/message-resolver": "9.1.7",
                 "@intlify/shared": "9.1.7",
@@ -7727,10 +7776,12 @@
             }
         },
         "@intlify/message-resolver": {
-            "version": "9.1.7"
+            "version": "9.1.7",
+            "integrity": "sha512-WTK+OaXJYjyquLGhuCyDvU2WHkG+kXzXeHagmVFHn+s118Jf2143zzkLLUrapP5CtZ/csuyjmYg7b3xQRQAmvw=="
         },
         "@intlify/runtime": {
             "version": "9.1.7",
+            "integrity": "sha512-QURPSlzhOVnRwS2XMGpCDsDkP42kfVBh94aAORxh/gVGzdgJip2vagrIFij/J69aEqdB476WJkMhVjP8VSHmiA==",
             "requires": {
                 "@intlify/message-compiler": "9.1.7",
                 "@intlify/message-resolver": "9.1.7",
@@ -7738,10 +7789,12 @@
             }
         },
         "@intlify/shared": {
-            "version": "9.1.7"
+            "version": "9.1.7",
+            "integrity": "sha512-zt0zlUdalumvT9AjQNxPXA36UgOndUyvBMplh8uRZU0fhWHAwhnJTcf0NaG9Qvr8I1n3HPSs96+kLb/YdwTavQ=="
         },
         "@intlify/vue-devtools": {
             "version": "9.1.7",
+            "integrity": "sha512-DI5Wc0aOiohtBUGUkKAcryCWbbuaO4/PK4Pa/LaNCsFNxbtgR5qkIDmhBv9xVPYGTUhySXxaDDAMvOpBjhPJjw==",
             "requires": {
                 "@intlify/message-resolver": "9.1.7",
                 "@intlify/runtime": "9.1.7",
@@ -7750,6 +7803,7 @@
         },
         "@mapbox/node-pre-gyp": {
             "version": "1.0.5",
+            "integrity": "sha512-4srsKPXWlIxp5Vbqz5uLfBN+du2fJChBoYn/f2h991WLdk7jUvcSk/McVLSv/X+xQIPI8eGD5GjrnygdyHnhPA==",
             "requires": {
                 "detect-libc": "^1.0.3",
                 "https-proxy-agent": "^5.0.0",
@@ -7764,23 +7818,27 @@
             "dependencies": {
                 "lru-cache": {
                     "version": "6.0.0",
+                    "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
                     "requires": {
                         "yallist": "^4.0.0"
                     }
                 },
                 "semver": {
                     "version": "7.3.5",
+                    "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
                     "requires": {
                         "lru-cache": "^6.0.0"
                     }
                 },
                 "yallist": {
-                    "version": "4.0.0"
+                    "version": "4.0.0",
+                    "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
                 }
             }
         },
         "@nodelib/fs.scandir": {
             "version": "2.1.5",
+            "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
             "dev": true,
             "requires": {
                 "@nodelib/fs.stat": "2.0.5",
@@ -7789,10 +7847,12 @@
         },
         "@nodelib/fs.stat": {
             "version": "2.0.5",
+            "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
             "dev": true
         },
         "@nodelib/fs.walk": {
             "version": "1.2.8",
+            "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
             "dev": true,
             "requires": {
                 "@nodelib/fs.scandir": "2.1.5",
@@ -7800,10 +7860,12 @@
             }
         },
         "@popperjs/core": {
-            "version": "2.10.1"
+            "version": "2.10.1",
+            "integrity": "sha512-HnUhk1Sy9IuKrxEMdIRCxpIqPw6BFsbYSEUO9p/hNw5sMld/+3OLMWQP80F8/db9qsv3qUjs7ZR5bS/R+iinXw=="
         },
         "@stylelint/postcss-css-in-js": {
             "version": "0.37.2",
+            "integrity": "sha512-nEhsFoJurt8oUmieT8qy4nk81WRHmJynmVwn/Vts08PL9fhgIsMhk1GId5yAN643OzqEEb5S/6At2TZW7pqPDA==",
             "dev": true,
             "requires": {
                 "@babel/core": ">=7.9.0"
@@ -7811,6 +7873,7 @@
         },
         "@stylelint/postcss-markdown": {
             "version": "0.36.2",
+            "integrity": "sha512-2kGbqUVJUGE8dM+bMzXG/PYUWKkjLIkRLWNh39OaADkiabDRdw8ATFCgbMz5xdIcvwspPAluSL7uY+ZiTWdWmQ==",
             "dev": true,
             "requires": {
                 "remark": "^13.0.0",
@@ -7819,12 +7882,14 @@
         },
         "@types/accepts": {
             "version": "1.3.5",
+            "integrity": "sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ==",
             "requires": {
                 "@types/node": "*"
             }
         },
         "@types/body-parser": {
             "version": "1.19.1",
+            "integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==",
             "requires": {
                 "@types/connect": "*",
                 "@types/node": "*"
@@ -7832,6 +7897,7 @@
         },
         "@types/bootstrap": {
             "version": "5.1.4",
+            "integrity": "sha512-VAY+o6sCKrJ7Xix/lugdvQz0PpOn7Go+fQzCXOZvIdp7E/TDaiJddInVhNB/84bk9NX6uuKFSfl2pqslNYH9aA==",
             "dev": true,
             "requires": {
                 "@popperjs/core": "^2.9.2",
@@ -7839,22 +7905,27 @@
             }
         },
         "@types/component-emitter": {
-            "version": "1.2.10"
+            "version": "1.2.10",
+            "integrity": "sha512-bsjleuRKWmGqajMerkzox19aGbscQX5rmmvvXl3wlIp5gMG1HgkiwPxsN5p070fBDKTNSPgojVbuY1+HWMbFhg=="
         },
         "@types/connect": {
             "version": "3.4.35",
+            "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==",
             "requires": {
                 "@types/node": "*"
             }
         },
         "@types/content-disposition": {
-            "version": "0.5.4"
+            "version": "0.5.4",
+            "integrity": "sha512-0mPF08jn9zYI0n0Q/Pnz7C4kThdSt+6LD4amsrYDDpgBfrVWa3TcCOxKX1zkGgYniGagRv8heN2cbh+CAn+uuQ=="
         },
         "@types/cookie": {
-            "version": "0.4.1"
+            "version": "0.4.1",
+            "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q=="
         },
         "@types/cookies": {
             "version": "0.7.7",
+            "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==",
             "requires": {
                 "@types/connect": "*",
                 "@types/express": "*",
@@ -7863,14 +7934,17 @@
             }
         },
         "@types/cors": {
-            "version": "2.8.12"
+            "version": "2.8.12",
+            "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw=="
         },
         "@types/estree": {
             "version": "0.0.48",
+            "integrity": "sha512-LfZwXoGUDo0C3me81HXgkBg5CTQYb6xzEl+fNmbO4JdRiSKQ8A0GD1OBBvKAIsbCUgoyAty7m99GqqMQe784ew==",
             "dev": true
         },
         "@types/express": {
             "version": "4.17.13",
+            "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==",
             "requires": {
                 "@types/body-parser": "*",
                 "@types/express-serve-static-core": "^4.17.18",
@@ -7880,6 +7954,7 @@
         },
         "@types/express-serve-static-core": {
             "version": "4.17.24",
+            "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==",
             "requires": {
                 "@types/node": "*",
                 "@types/qs": "*",
@@ -7887,23 +7962,28 @@
             }
         },
         "@types/http-assert": {
-            "version": "1.5.3"
+            "version": "1.5.3",
+            "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA=="
         },
         "@types/http-errors": {
-            "version": "1.8.1"
+            "version": "1.8.1",
+            "integrity": "sha512-e+2rjEwK6KDaNOm5Aa9wNGgyS9oSZU/4pfSMMPYNOfjvFI0WVXm29+ITRFr6aKDvvKo7uU1jV68MW4ScsfDi7Q=="
         },
         "@types/jquery": {
             "version": "3.5.6",
+            "integrity": "sha512-SmgCQRzGPId4MZQKDj9Hqc6kSXFNWZFHpELkyK8AQhf8Zr6HKfCzFv9ZC1Fv3FyQttJZOlap3qYb12h61iZAIg==",
             "dev": true,
             "requires": {
                 "@types/sizzle": "*"
             }
         },
         "@types/keygrip": {
-            "version": "1.0.2"
+            "version": "1.0.2",
+            "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw=="
         },
         "@types/koa": {
             "version": "2.13.4",
+            "integrity": "sha512-dfHYMfU+z/vKtQB7NUrthdAEiSvnLebvBjwHtfFmpZmB7em2N3WVQdHgnFq+xvyVgxW5jKDmjWfLD3lw4g4uTw==",
             "requires": {
                 "@types/accepts": "*",
                 "@types/content-disposition": "*",
@@ -7917,43 +7997,53 @@
         },
         "@types/koa-compose": {
             "version": "3.2.5",
+            "integrity": "sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ==",
             "requires": {
                 "@types/koa": "*"
             }
         },
         "@types/mdast": {
             "version": "3.0.10",
+            "integrity": "sha512-W864tg/Osz1+9f4lrGTZpCSO5/z4608eUp19tbozkq2HJK6i3z1kT0H9tlADXuYIb1YYOBByU4Jsqkk75q48qA==",
             "dev": true,
             "requires": {
                 "@types/unist": "*"
             }
         },
         "@types/mime": {
-            "version": "1.3.2"
+            "version": "1.3.2",
+            "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw=="
         },
         "@types/minimist": {
             "version": "1.2.2",
+            "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==",
             "dev": true
         },
         "@types/node": {
-            "version": "16.7.10"
+            "version": "16.7.10",
+            "integrity": "sha512-S63Dlv4zIPb8x6MMTgDq5WWRJQe56iBEY0O3SOFA9JrRienkOVDXSXBjjJw6HTNQYSE2JI6GMCR6LVbIMHJVvA=="
         },
         "@types/normalize-package-data": {
             "version": "2.4.1",
+            "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
             "dev": true
         },
         "@types/parse-json": {
             "version": "4.0.0",
+            "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
             "dev": true
         },
         "@types/qs": {
-            "version": "6.9.7"
+            "version": "6.9.7",
+            "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw=="
         },
         "@types/range-parser": {
-            "version": "1.2.4"
+            "version": "1.2.4",
+            "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw=="
         },
         "@types/serve-static": {
             "version": "1.13.10",
+            "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==",
             "requires": {
                 "@types/mime": "^1",
                 "@types/node": "*"
@@ -7961,14 +8051,17 @@
         },
         "@types/sizzle": {
             "version": "2.3.3",
+            "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==",
             "dev": true
         },
         "@types/unist": {
             "version": "2.0.6",
+            "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==",
             "dev": true
         },
         "@vitejs/plugin-legacy": {
             "version": "1.5.2",
+            "integrity": "sha512-b1CaWY/wi7gQZnZaxH+ujPTPb91bEPgnnk7l0WIwxoQtW5UC5MQywRcAbFX+Ise62exXctOMBtsnXKJw2KajXw==",
             "dev": true,
             "requires": {
                 "@babel/standalone": "^7.14.9",
@@ -7980,11 +8073,12 @@
         },
         "@vitejs/plugin-vue": {
             "version": "1.6.0",
-            "dev": true,
-            "requires": {}
+            "integrity": "sha512-n3i8htn8pTg9M+kM3cnEfsPZx/6ngInlTroth6fA1LQTJq5aTVQ8ggaE5pPoAy9vCgHPtcaXMzwpldhqRAkebQ==",
+            "dev": true
         },
         "@vue/compiler-core": {
             "version": "3.2.8",
+            "integrity": "sha512-Sx8qJ030+QM/NakUrkQuUGCeDEb+0d0AgFOl5W4qRvR6e+YgLnW2ew0jREf4T1hak9Fdk8Edl67StECHrhEuew==",
             "requires": {
                 "@babel/parser": "^7.15.0",
                 "@babel/types": "^7.15.0",
@@ -7995,6 +8089,7 @@
         },
         "@vue/compiler-dom": {
             "version": "3.2.8",
+            "integrity": "sha512-nxBW6k8FMWQ74294CRbqR+iEJRO5vIjx85I3YCOyZFD6FsDHyFL60g76TcJzucp+F2XXIDaYz+A+F4gQlDatjw==",
             "requires": {
                 "@vue/compiler-core": "3.2.8",
                 "@vue/shared": "3.2.8"
@@ -8002,6 +8097,7 @@
         },
         "@vue/compiler-sfc": {
             "version": "3.2.8",
+            "integrity": "sha512-XClueQAXoWtN2EToKgfYH9FCL70Ac4bxx6OZFZzxYSg1bei8IB9srJP1UOfnJb2IpnM1heikAz1dp1HI1wHcyQ==",
             "dev": true,
             "requires": {
                 "@babel/parser": "^7.15.0",
@@ -8026,6 +8122,7 @@
         },
         "@vue/compiler-ssr": {
             "version": "3.2.8",
+            "integrity": "sha512-QqyiFRiIl55W0abDNQ6cNG/7iIfBHmbXVtssUAjX3IlI87ELeT0xackmrCyTSnfIX12ixljg9AN0COIZwlvt5A==",
             "dev": true,
             "requires": {
                 "@vue/compiler-dom": "3.2.8",
@@ -8033,16 +8130,19 @@
             }
         },
         "@vue/devtools-api": {
-            "version": "6.0.0-beta.15"
+            "version": "6.0.0-beta.15",
+            "integrity": "sha512-quBx4Jjpexo6KDiNUGFr/zF/2A4srKM9S9v2uHgMXSU//hjgq1eGzqkIFql8T9gfX5ZaVOUzYBP3jIdIR3PKIA=="
         },
         "@vue/reactivity": {
             "version": "3.2.8",
+            "integrity": "sha512-/Hj3Uz28SG+xB5SDWPOXUs0emvHkq82EmTgk44/plTVFeswCZ3i3Hd7WmsrPT4rGajlDKd5uqMmW0ith1ED0FA==",
             "requires": {
                 "@vue/shared": "3.2.8"
             }
         },
         "@vue/ref-transform": {
             "version": "3.2.8",
+            "integrity": "sha512-9LdADd4JM3klt+b2qNT8a7b7JvBETNBy2Btv5rDzyPrAVS4Vrw+1WWay6gZBgnxfJ9TPSvG8f/9zu6gNGHmJLA==",
             "dev": true,
             "requires": {
                 "@babel/parser": "^7.15.0",
@@ -8054,6 +8154,7 @@
         },
         "@vue/runtime-core": {
             "version": "3.2.8",
+            "integrity": "sha512-hwzXLGw1njBEY5JSyRXIIdCtzMFFF6F38WcKMmoIE3p7da30jEbWt8EwwrBomjT8ZbqzElOGlewBcnXNOiiIUg==",
             "requires": {
                 "@vue/reactivity": "3.2.8",
                 "@vue/shared": "3.2.8"
@@ -8061,6 +8162,7 @@
         },
         "@vue/runtime-dom": {
             "version": "3.2.8",
+            "integrity": "sha512-A/aRrlGLJ5y4Z7eNbnO/xHwx2RiPijQo7D3OIwESroG3HNP+dpuoqamajo5TXS9ZGjbMOih82COoe7xb9P4BZw==",
             "requires": {
                 "@vue/runtime-core": "3.2.8",
                 "@vue/shared": "3.2.8",
@@ -8068,13 +8170,16 @@
             }
         },
         "@vue/shared": {
-            "version": "3.2.8"
+            "version": "3.2.8",
+            "integrity": "sha512-E2DQQnG7Qr4GwTs3GlfPPlHliGVADoufTnhpwfoViw7JlyLMmYtjfnTwM6nXAwvSJWiF7D+7AxpnWBBT3VWo6Q=="
         },
         "abbrev": {
-            "version": "1.1.1"
+            "version": "1.1.1",
+            "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
         },
         "accepts": {
             "version": "1.3.7",
+            "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
             "requires": {
                 "mime-types": "~2.1.24",
                 "negotiator": "0.6.2"
@@ -8082,21 +8187,24 @@
         },
         "acorn": {
             "version": "7.4.1",
+            "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
             "dev": true
         },
         "acorn-jsx": {
             "version": "5.3.2",
-            "dev": true,
-            "requires": {}
+            "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+            "dev": true
         },
         "agent-base": {
             "version": "6.0.2",
+            "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
             "requires": {
                 "debug": "4"
             }
         },
         "ajv": {
             "version": "6.12.6",
+            "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
             "devOptional": true,
             "requires": {
                 "fast-deep-equal": "^3.1.1",
@@ -8107,14 +8215,17 @@
         },
         "ansi-colors": {
             "version": "4.1.1",
+            "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
             "dev": true
         },
         "ansi-regex": {
             "version": "5.0.0",
+            "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
             "dev": true
         },
         "ansi-styles": {
             "version": "4.3.0",
+            "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
             "dev": true,
             "requires": {
                 "color-convert": "^2.0.1"
@@ -8122,6 +8233,7 @@
         },
         "anymatch": {
             "version": "3.1.2",
+            "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
             "dev": true,
             "requires": {
                 "normalize-path": "^3.0.0",
@@ -8129,10 +8241,12 @@
             }
         },
         "aproba": {
-            "version": "1.2.0"
+            "version": "1.2.0",
+            "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
         },
         "are-we-there-yet": {
             "version": "1.1.7",
+            "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==",
             "requires": {
                 "delegates": "^1.0.0",
                 "readable-stream": "^2.0.6"
@@ -8140,27 +8254,33 @@
         },
         "argparse": {
             "version": "1.0.10",
+            "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
             "dev": true,
             "requires": {
                 "sprintf-js": "~1.0.2"
             }
         },
         "args-parser": {
-            "version": "1.3.0"
+            "version": "1.3.0",
+            "integrity": "sha512-If3Zi4BSjlQIJ9fgAhSiKi0oJtgMzSqh0H4wvl7XSeO16FKx7QqaHld8lZeEajPX7y1C5qKKeNgyrfyvmjmjUQ=="
         },
         "array-flatten": {
-            "version": "1.1.1"
+            "version": "1.1.1",
+            "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
         },
         "array-union": {
             "version": "2.1.0",
+            "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
             "dev": true
         },
         "arrify": {
             "version": "1.0.1",
+            "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
             "dev": true
         },
         "asn1": {
             "version": "0.2.4",
+            "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
             "optional": true,
             "requires": {
                 "safer-buffer": "~2.1.0"
@@ -8168,17 +8288,21 @@
         },
         "assert-plus": {
             "version": "1.0.0",
+            "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
             "optional": true
         },
         "astral-regex": {
             "version": "2.0.0",
+            "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
             "dev": true
         },
         "asynckit": {
-            "version": "0.4.0"
+            "version": "0.4.0",
+            "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
         },
         "autoprefixer": {
             "version": "9.8.6",
+            "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==",
             "dev": true,
             "requires": {
                 "browserslist": "^4.12.0",
@@ -8192,6 +8316,7 @@
             "dependencies": {
                 "ansi-styles": {
                     "version": "3.2.1",
+                    "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
                     "dev": true,
                     "requires": {
                         "color-convert": "^1.9.0"
@@ -8199,6 +8324,7 @@
                 },
                 "chalk": {
                     "version": "2.4.2",
+                    "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
                     "dev": true,
                     "requires": {
                         "ansi-styles": "^3.2.1",
@@ -8208,6 +8334,7 @@
                     "dependencies": {
                         "supports-color": {
                             "version": "5.5.0",
+                            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
                             "dev": true,
                             "requires": {
                                 "has-flag": "^3.0.0"
@@ -8217,6 +8344,7 @@
                 },
                 "color-convert": {
                     "version": "1.9.3",
+                    "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
                     "dev": true,
                     "requires": {
                         "color-name": "1.1.3"
@@ -8224,18 +8352,22 @@
                 },
                 "color-name": {
                     "version": "1.1.3",
+                    "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
                     "dev": true
                 },
                 "escape-string-regexp": {
                     "version": "1.0.5",
+                    "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
                     "dev": true
                 },
                 "has-flag": {
                     "version": "3.0.0",
+                    "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
                     "dev": true
                 },
                 "postcss": {
                     "version": "7.0.36",
+                    "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==",
                     "dev": true,
                     "requires": {
                         "chalk": "^2.4.2",
@@ -8245,6 +8377,7 @@
                 },
                 "supports-color": {
                     "version": "6.1.0",
+                    "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
                     "dev": true,
                     "requires": {
                         "has-flag": "^3.0.0"
@@ -8253,37 +8386,46 @@
             }
         },
         "await-lock": {
-            "version": "2.1.0"
+            "version": "2.1.0",
+            "integrity": "sha512-t7Zm5YGgEEc/3eYAicF32m/TNvL+XOeYZy9CvBUeJY/szM7frLolFylhrlZNWV/ohWhcUXygrBGjYmoQdxF4CQ=="
         },
         "aws-sign2": {
             "version": "0.7.0",
+            "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
             "optional": true
         },
         "aws4": {
             "version": "1.11.0",
+            "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==",
             "optional": true
         },
         "axios": {
             "version": "0.21.1",
+            "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==",
             "requires": {
                 "follow-redirects": "^1.10.0"
             }
         },
         "babel-plugin-add-module-exports": {
-            "version": "0.2.1"
+            "version": "0.2.1",
+            "integrity": "sha1-mumh9KjcZ/DN7E9K7aHkOl/2XiU="
         },
         "backo2": {
-            "version": "1.0.2"
+            "version": "1.0.2",
+            "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
         },
         "bail": {
             "version": "1.0.5",
+            "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==",
             "dev": true
         },
         "balanced-match": {
-            "version": "1.0.2"
+            "version": "1.0.2",
+            "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
         },
         "base64-arraybuffer": {
-            "version": "0.1.4"
+            "version": "0.1.4",
+            "integrity": "sha1-mBjHngWbE1X5fgQooBfIOOkLqBI="
         },
         "base64-js": {
             "version": "1.5.1",
@@ -8291,41 +8433,50 @@
             "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
         },
         "base64id": {
-            "version": "2.0.0"
+            "version": "2.0.0",
+            "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog=="
         },
         "basic-auth": {
             "version": "2.0.1",
+            "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
             "requires": {
                 "safe-buffer": "5.1.2"
             }
         },
         "bcrypt-pbkdf": {
             "version": "1.0.2",
+            "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
             "optional": true,
             "requires": {
                 "tweetnacl": "^0.14.3"
             }
         },
         "bcryptjs": {
-            "version": "2.4.3"
+            "version": "2.4.3",
+            "integrity": "sha1-mrVie5PmBiH/fNrF2pczAn3x0Ms="
         },
         "big.js": {
             "version": "5.2.2",
+            "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
             "dev": true
         },
         "binary-extensions": {
             "version": "2.2.0",
+            "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
             "dev": true
         },
         "bintrees": {
-            "version": "1.0.1"
+            "version": "1.0.1",
+            "integrity": "sha1-DmVcm5wkNeqraL9AJyJtK1WjRSQ="
         },
         "bluebird": {
             "version": "3.7.2",
+            "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
             "dev": true
         },
         "body-parser": {
             "version": "1.19.0",
+            "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
             "requires": {
                 "bytes": "3.1.0",
                 "content-type": "~1.0.4",
@@ -8341,21 +8492,24 @@
             "dependencies": {
                 "debug": {
                     "version": "2.6.9",
+                    "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
                     "requires": {
                         "ms": "2.0.0"
                     }
                 },
                 "ms": {
-                    "version": "2.0.0"
+                    "version": "2.0.0",
+                    "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
                 }
             }
         },
         "bootstrap": {
             "version": "5.1.0",
-            "requires": {}
+            "integrity": "sha512-bs74WNI9BgBo3cEovmdMHikSKoXnDgA6VQjJ7TyTotU6L7d41ZyCEEelPwkYEzsG/Zjv3ie9IE3EMAje0W9Xew=="
         },
         "brace-expansion": {
             "version": "1.1.11",
+            "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
             "requires": {
                 "balanced-match": "^1.0.0",
                 "concat-map": "0.0.1"
@@ -8363,6 +8517,7 @@
         },
         "braces": {
             "version": "3.0.2",
+            "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
             "dev": true,
             "requires": {
                 "fill-range": "^7.0.1"
@@ -8370,6 +8525,7 @@
         },
         "browserslist": {
             "version": "4.16.8",
+            "integrity": "sha512-sc2m9ohR/49sWEbPj14ZSSZqp+kbi16aLao42Hmn3Z8FpjuMaq2xCA2l4zl9ITfyzvnvyE0hcg62YkIGKxgaNQ==",
             "dev": true,
             "requires": {
                 "caniuse-lite": "^1.0.30001251",
@@ -8403,7 +8559,8 @@
             "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
         },
         "buffer-equal-constant-time": {
-            "version": "1.0.1"
+            "version": "1.0.1",
+            "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
         },
         "buffer-fill": {
             "version": "1.0.0",
@@ -8416,17 +8573,21 @@
             "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ=="
         },
         "bytes": {
-            "version": "3.1.0"
+            "version": "3.1.0",
+            "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
         },
         "callsites": {
             "version": "3.1.0",
+            "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
             "dev": true
         },
         "camelcase": {
-            "version": "5.3.1"
+            "version": "5.3.1",
+            "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
         },
         "camelcase-keys": {
             "version": "6.2.2",
+            "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
             "dev": true,
             "requires": {
                 "camelcase": "^5.3.1",
@@ -8436,14 +8597,17 @@
         },
         "caniuse-lite": {
             "version": "1.0.30001252",
+            "integrity": "sha512-I56jhWDGMtdILQORdusxBOH+Nl/KgQSdDmpJezYddnAkVOmnoU8zwjTV9xAjMIYxr0iPreEAVylCGcmHCjfaOw==",
             "dev": true
         },
         "caseless": {
             "version": "0.12.0",
+            "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
             "optional": true
         },
         "chalk": {
             "version": "4.1.2",
+            "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
             "dev": true,
             "requires": {
                 "ansi-styles": "^4.1.0",
@@ -8452,25 +8616,30 @@
         },
         "character-entities": {
             "version": "1.2.4",
+            "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==",
             "dev": true
         },
         "character-entities-legacy": {
             "version": "1.1.4",
+            "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==",
             "dev": true
         },
         "character-reference-invalid": {
             "version": "1.1.4",
+            "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==",
             "dev": true
         },
         "chart.js": {
-            "version": "3.5.1"
+            "version": "3.5.1",
+            "integrity": "sha512-m5kzt72I1WQ9LILwQC4syla/LD/N413RYv2Dx2nnTkRS9iv/ey1xLTt0DnPc/eWV4zI+BgEgDYBIzbQhZHc/PQ=="
         },
         "chartjs-adapter-dayjs": {
             "version": "1.0.0",
-            "requires": {}
+            "integrity": "sha512-EnbVqTJGFKLpg1TROLdCEufrzbmIa2oeLGx8O2Wdjw2EoMudoOo9+YFu+6CM0Z0hQ/v3yq/e/Y6efQMu22n8Jg=="
         },
         "chokidar": {
             "version": "3.5.2",
+            "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==",
             "dev": true,
             "requires": {
                 "anymatch": "~3.1.2",
@@ -8484,7 +8653,8 @@
             }
         },
         "chownr": {
-            "version": "2.0.0"
+            "version": "2.0.0",
+            "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
         },
         "cliui": {
             "version": "5.0.0",
@@ -8533,16 +8703,19 @@
         },
         "clone-regexp": {
             "version": "2.2.0",
+            "integrity": "sha512-beMpP7BOtTipFuW8hrJvREQ2DrRu3BE7by0ZpibtfBA+qfHYvMGTc2Yb1JMYPKg/JUw0CHYvpg796aNTSW9z7Q==",
             "dev": true,
             "requires": {
                 "is-regexp": "^2.0.0"
             }
         },
         "code-point-at": {
-            "version": "1.1.0"
+            "version": "1.1.0",
+            "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
         },
         "color-convert": {
             "version": "2.0.1",
+            "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
             "dev": true,
             "requires": {
                 "color-name": "~1.1.4"
@@ -8550,38 +8723,48 @@
         },
         "color-name": {
             "version": "1.1.4",
+            "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
             "dev": true
         },
         "colorette": {
             "version": "1.3.0",
+            "integrity": "sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==",
             "dev": true
         },
         "combined-stream": {
             "version": "1.0.8",
+            "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
             "requires": {
                 "delayed-stream": "~1.0.0"
             }
         },
         "command-exists": {
-            "version": "1.2.9"
+            "version": "1.2.9",
+            "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w=="
         },
         "commander": {
-            "version": "7.2.0"
+            "version": "7.2.0",
+            "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw=="
         },
         "compare-versions": {
-            "version": "3.6.0"
+            "version": "3.6.0",
+            "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA=="
         },
         "component-emitter": {
-            "version": "1.3.0"
+            "version": "1.3.0",
+            "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg=="
         },
         "concat-map": {
-            "version": "0.0.1"
+            "version": "0.0.1",
+            "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
         },
         "console-control-strings": {
-            "version": "1.1.0"
+            "version": "1.1.0",
+            "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
         },
         "consolidate": {
             "version": "0.16.0",
+            "integrity": "sha512-Nhl1wzCslqXYTJVDyJCu3ODohy9OfBMB5uD2BiBTzd7w+QY0lBzafkR8y8755yMYHAaMD4NuzbAw03/xzfw+eQ==",
             "dev": true,
             "requires": {
                 "bluebird": "^3.7.2"
@@ -8589,35 +8772,43 @@
         },
         "content-disposition": {
             "version": "0.5.3",
+            "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
             "requires": {
                 "safe-buffer": "5.1.2"
             }
         },
         "content-type": {
-            "version": "1.0.4"
+            "version": "1.0.4",
+            "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA=="
         },
         "convert-source-map": {
             "version": "1.8.0",
+            "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==",
             "dev": true,
             "requires": {
                 "safe-buffer": "~5.1.1"
             }
         },
         "cookie": {
-            "version": "0.4.0"
+            "version": "0.4.0",
+            "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg=="
         },
         "cookie-signature": {
-            "version": "1.0.6"
+            "version": "1.0.6",
+            "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
         },
         "core-js": {
             "version": "3.17.2",
+            "integrity": "sha512-XkbXqhcXeMHPRk2ItS+zQYliAMilea2euoMsnpRRdDad6b2VY6CQQcwz1K8AnWesfw4p165RzY0bTnr3UrbYiA==",
             "dev": true
         },
         "core-util-is": {
-            "version": "1.0.3"
+            "version": "1.0.3",
+            "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
         },
         "cors": {
             "version": "2.8.5",
+            "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==",
             "requires": {
                 "object-assign": "^4",
                 "vary": "^1"
@@ -8625,6 +8816,7 @@
         },
         "cosmiconfig": {
             "version": "7.0.1",
+            "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==",
             "dev": true,
             "requires": {
                 "@types/parse-json": "^4.0.0",
@@ -8636,6 +8828,7 @@
         },
         "cross-spawn": {
             "version": "7.0.3",
+            "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
             "dev": true,
             "requires": {
                 "path-key": "^3.1.0",
@@ -8645,32 +8838,39 @@
         },
         "cssesc": {
             "version": "3.0.0",
+            "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
             "dev": true
         },
         "csstype": {
-            "version": "2.6.17"
+            "version": "2.6.17",
+            "integrity": "sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A=="
         },
         "dashdash": {
             "version": "1.14.1",
+            "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
             "optional": true,
             "requires": {
                 "assert-plus": "^1.0.0"
             }
         },
         "dayjs": {
-            "version": "1.10.6"
+            "version": "1.10.6",
+            "integrity": "sha512-AztC/IOW4L1Q41A86phW5Thhcrco3xuAA+YX/BLpLWWjRcTj5TOt/QImBLmCKlrF7u7k47arTnOyL6GnbG8Hvw=="
         },
         "debug": {
             "version": "4.3.2",
+            "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==",
             "requires": {
                 "ms": "2.1.2"
             }
         },
         "decamelize": {
-            "version": "1.2.0"
+            "version": "1.2.0",
+            "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
         },
         "decamelize-keys": {
             "version": "1.1.0",
+            "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=",
             "dev": true,
             "requires": {
                 "decamelize": "^1.1.0",
@@ -8679,28 +8879,35 @@
             "dependencies": {
                 "map-obj": {
                     "version": "1.0.1",
+                    "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
                     "dev": true
                 }
             }
         },
         "deep-is": {
             "version": "0.1.3",
+            "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
             "dev": true
         },
         "delayed-stream": {
-            "version": "1.0.0"
+            "version": "1.0.0",
+            "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
         },
         "delegates": {
-            "version": "1.0.0"
+            "version": "1.0.0",
+            "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
         },
         "depd": {
-            "version": "1.1.2"
+            "version": "1.1.2",
+            "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
         },
         "destroy": {
-            "version": "1.0.4"
+            "version": "1.0.4",
+            "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
         },
         "detect-libc": {
-            "version": "1.0.3"
+            "version": "1.0.3",
+            "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
         },
         "dijkstrajs": {
             "version": "1.0.2",
@@ -8709,6 +8916,7 @@
         },
         "dir-glob": {
             "version": "3.0.1",
+            "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
             "dev": true,
             "requires": {
                 "path-type": "^4.0.0"
@@ -8716,10 +8924,12 @@
         },
         "dns2": {
             "version": "2.0.1",
+            "integrity": "sha512-jHRTCcS2h/MEQjhcCnOWGENtz5A4RrLoK1YFqlHCejGfK5zYu99C8cxVwTsIY7JUqolhDN8zuGlyqnbEe6azqg==",
             "dev": true
         },
         "doctrine": {
             "version": "3.0.0",
+            "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
             "dev": true,
             "requires": {
                 "esutils": "^2.0.2"
@@ -8727,6 +8937,7 @@
         },
         "dom-serializer": {
             "version": "0.2.2",
+            "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==",
             "dev": true,
             "requires": {
                 "domelementtype": "^2.0.1",
@@ -8735,20 +8946,24 @@
             "dependencies": {
                 "domelementtype": {
                     "version": "2.2.0",
+                    "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==",
                     "dev": true
                 },
                 "entities": {
                     "version": "2.2.0",
+                    "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==",
                     "dev": true
                 }
             }
         },
         "domelementtype": {
             "version": "1.3.1",
+            "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
             "dev": true
         },
         "domhandler": {
             "version": "2.4.2",
+            "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
             "dev": true,
             "requires": {
                 "domelementtype": "1"
@@ -8756,6 +8971,7 @@
         },
         "domutils": {
             "version": "1.7.0",
+            "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
             "dev": true,
             "requires": {
                 "dom-serializer": "0",
@@ -8764,6 +8980,7 @@
         },
         "ecc-jsbn": {
             "version": "0.1.2",
+            "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
             "optional": true,
             "requires": {
                 "jsbn": "~0.1.0",
@@ -8772,30 +8989,37 @@
         },
         "ecdsa-sig-formatter": {
             "version": "1.0.11",
+            "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
             "requires": {
                 "safe-buffer": "^5.0.1"
             }
         },
         "ee-first": {
-            "version": "1.1.1"
+            "version": "1.1.1",
+            "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
         },
         "electron-to-chromium": {
             "version": "1.3.830",
+            "integrity": "sha512-gBN7wNAxV5vl1430dG+XRcQhD4pIeYeak6p6rjdCtlz5wWNwDad8jwvphe5oi1chL5MV6RNRikfffBBiFuj+rQ==",
             "dev": true
         },
         "emoji-regex": {
             "version": "8.0.0",
+            "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
             "dev": true
         },
         "emojis-list": {
             "version": "3.0.0",
+            "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
             "dev": true
         },
         "encodeurl": {
-            "version": "1.0.2"
+            "version": "1.0.2",
+            "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
         },
         "engine.io": {
             "version": "5.2.0",
+            "integrity": "sha512-d1DexkQx87IFr1FLuV+0f5kAm1Hk1uOVijLOb+D1sDO2QMb7YjE02VHtZtxo7xIXMgcWLb+vl3HRT0rI9tr4jQ==",
             "requires": {
                 "accepts": "~1.3.4",
                 "base64id": "2.0.0",
@@ -8807,12 +9031,14 @@
             },
             "dependencies": {
                 "cookie": {
-                    "version": "0.4.1"
+                    "version": "0.4.1",
+                    "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
                 }
             }
         },
         "engine.io-client": {
             "version": "5.2.0",
+            "integrity": "sha512-BcIBXGBkT7wKecwnfrSV79G2X5lSUSgeAGgoo60plXf8UsQEvCQww/KMwXSMhVjb98fFYNq20CC5eo8IOAPqsg==",
             "requires": {
                 "base64-arraybuffer": "0.1.4",
                 "component-emitter": "~1.3.0",
@@ -8828,12 +9054,14 @@
         },
         "engine.io-parser": {
             "version": "4.0.3",
+            "integrity": "sha512-xEAAY0msNnESNPc00e19y5heTPX4y/TJ36gr8t1voOaNmTojP9b3oK3BbJLFufW2XFPQaaijpFewm2g2Um3uqA==",
             "requires": {
                 "base64-arraybuffer": "0.1.4"
             }
         },
         "enquirer": {
             "version": "2.3.6",
+            "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==",
             "dev": true,
             "requires": {
                 "ansi-colors": "^4.1.1"
@@ -8841,14 +9069,17 @@
         },
         "entities": {
             "version": "1.1.2",
+            "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
             "dev": true
         },
         "env-paths": {
             "version": "2.2.1",
+            "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
             "optional": true
         },
         "error-ex": {
             "version": "1.3.2",
+            "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
             "dev": true,
             "requires": {
                 "is-arrayish": "^0.2.1"
@@ -8856,20 +9087,25 @@
         },
         "esbuild": {
             "version": "0.12.25",
+            "integrity": "sha512-woie0PosbRSoN8gQytrdCzUbS2ByKgO8nD1xCZkEup3D9q92miCze4PqEI9TZDYAuwn6CruEnQpJxgTRWdooAg==",
             "dev": true
         },
         "escalade": {
-            "version": "3.1.1"
+            "version": "3.1.1",
+            "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw=="
         },
         "escape-html": {
-            "version": "1.0.3"
+            "version": "1.0.3",
+            "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
         },
         "escape-string-regexp": {
             "version": "4.0.0",
+            "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
             "dev": true
         },
         "eslint": {
             "version": "7.32.0",
+            "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==",
             "dev": true,
             "requires": {
                 "@babel/code-frame": "7.12.11",
@@ -8916,6 +9152,7 @@
             "dependencies": {
                 "lru-cache": {
                     "version": "6.0.0",
+                    "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
                     "dev": true,
                     "requires": {
                         "yallist": "^4.0.0"
@@ -8923,6 +9160,7 @@
                 },
                 "semver": {
                     "version": "7.3.5",
+                    "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
                     "dev": true,
                     "requires": {
                         "lru-cache": "^6.0.0"
@@ -8930,12 +9168,14 @@
                 },
                 "yallist": {
                     "version": "4.0.0",
+                    "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
                     "dev": true
                 }
             }
         },
         "eslint-plugin-vue": {
             "version": "7.17.0",
+            "integrity": "sha512-Rq5R2QetDCgC+kBFQw1+aJ5B93tQ4xqZvoCUxuIzwTonngNArsdP8ChM8PowIzsJvRtWl4ltGh/bZcN3xhFWSw==",
             "dev": true,
             "requires": {
                 "eslint-utils": "^2.1.0",
@@ -8946,6 +9186,7 @@
         },
         "eslint-scope": {
             "version": "5.1.1",
+            "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
             "dev": true,
             "requires": {
                 "esrecurse": "^4.3.0",
@@ -8954,6 +9195,7 @@
         },
         "eslint-utils": {
             "version": "2.1.0",
+            "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
             "dev": true,
             "requires": {
                 "eslint-visitor-keys": "^1.1.0"
@@ -8961,19 +9203,23 @@
             "dependencies": {
                 "eslint-visitor-keys": {
                     "version": "1.3.0",
+                    "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
                     "dev": true
                 }
             }
         },
         "eslint-visitor-keys": {
             "version": "2.1.0",
+            "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
             "dev": true
         },
         "esm": {
-            "version": "3.2.25"
+            "version": "3.2.25",
+            "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA=="
         },
         "espree": {
             "version": "7.3.1",
+            "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
             "dev": true,
             "requires": {
                 "acorn": "^7.4.0",
@@ -8983,16 +9229,19 @@
             "dependencies": {
                 "eslint-visitor-keys": {
                     "version": "1.3.0",
+                    "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
                     "dev": true
                 }
             }
         },
         "esprima": {
             "version": "4.0.1",
+            "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
             "dev": true
         },
         "esquery": {
             "version": "1.4.0",
+            "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==",
             "dev": true,
             "requires": {
                 "estraverse": "^5.1.0"
@@ -9000,12 +9249,14 @@
             "dependencies": {
                 "estraverse": {
                     "version": "5.2.0",
+                    "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
                     "dev": true
                 }
             }
         },
         "esrecurse": {
             "version": "4.3.0",
+            "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
             "dev": true,
             "requires": {
                 "estraverse": "^5.2.0"
@@ -9013,26 +9264,32 @@
             "dependencies": {
                 "estraverse": {
                     "version": "5.2.0",
+                    "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
                     "dev": true
                 }
             }
         },
         "estraverse": {
             "version": "4.3.0",
+            "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
             "dev": true
         },
         "estree-walker": {
-            "version": "2.0.2"
+            "version": "2.0.2",
+            "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
         },
         "esutils": {
             "version": "2.0.3",
+            "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
             "dev": true
         },
         "etag": {
-            "version": "1.8.1"
+            "version": "1.8.1",
+            "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
         },
         "execall": {
             "version": "2.0.0",
+            "integrity": "sha512-0FU2hZ5Hh6iQnarpRtQurM/aAvp3RIbfvgLHrcqJYzhXyV2KFruhuChf9NC6waAhiUR7FFtlugkI4p7f2Fqlow==",
             "dev": true,
             "requires": {
                 "clone-regexp": "^2.1.0"
@@ -9040,6 +9297,7 @@
         },
         "express": {
             "version": "4.17.1",
+            "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
             "requires": {
                 "accepts": "~1.3.7",
                 "array-flatten": "1.1.1",
@@ -9075,35 +9333,42 @@
             "dependencies": {
                 "debug": {
                     "version": "2.6.9",
+                    "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
                     "requires": {
                         "ms": "2.0.0"
                     }
                 },
                 "ms": {
-                    "version": "2.0.0"
+                    "version": "2.0.0",
+                    "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
                 }
             }
         },
         "express-basic-auth": {
             "version": "1.2.0",
+            "integrity": "sha512-iJ0h1Gk6fZRrFmO7tP9nIbxwNgCUJASfNj5fb0Hy15lGtbqqsxpt7609+wq+0XlByZjXmC/rslWQtnuSTVRIcg==",
             "requires": {
                 "basic-auth": "^2.0.1"
             }
         },
         "extend": {
             "version": "3.0.2",
+            "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
             "devOptional": true
         },
         "extsprintf": {
             "version": "1.3.0",
+            "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
             "optional": true
         },
         "fast-deep-equal": {
             "version": "3.1.3",
+            "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
             "devOptional": true
         },
         "fast-glob": {
             "version": "3.2.7",
+            "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==",
             "dev": true,
             "requires": {
                 "@nodelib/fs.stat": "^2.0.2",
@@ -9115,18 +9380,22 @@
         },
         "fast-json-stable-stringify": {
             "version": "2.1.0",
+            "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
             "devOptional": true
         },
         "fast-levenshtein": {
             "version": "2.0.6",
+            "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
             "dev": true
         },
         "fastest-levenshtein": {
             "version": "1.0.12",
+            "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==",
             "dev": true
         },
         "fastq": {
             "version": "1.12.0",
+            "integrity": "sha512-VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg==",
             "dev": true,
             "requires": {
                 "reusify": "^1.0.4"
@@ -9134,6 +9403,7 @@
         },
         "file-entry-cache": {
             "version": "6.0.1",
+            "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
             "dev": true,
             "requires": {
                 "flat-cache": "^3.0.4"
@@ -9141,6 +9411,7 @@
         },
         "fill-range": {
             "version": "7.0.1",
+            "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
             "dev": true,
             "requires": {
                 "to-regex-range": "^5.0.1"
@@ -9148,6 +9419,7 @@
         },
         "finalhandler": {
             "version": "1.1.2",
+            "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
             "requires": {
                 "debug": "2.6.9",
                 "encodeurl": "~1.0.2",
@@ -9160,17 +9432,20 @@
             "dependencies": {
                 "debug": {
                     "version": "2.6.9",
+                    "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
                     "requires": {
                         "ms": "2.0.0"
                     }
                 },
                 "ms": {
-                    "version": "2.0.0"
+                    "version": "2.0.0",
+                    "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
                 }
             }
         },
         "find-up": {
             "version": "4.1.0",
+            "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
             "dev": true,
             "requires": {
                 "locate-path": "^5.0.0",
@@ -9179,6 +9454,7 @@
         },
         "flat-cache": {
             "version": "3.0.4",
+            "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
             "dev": true,
             "requires": {
                 "flatted": "^3.1.0",
@@ -9187,17 +9463,21 @@
         },
         "flatted": {
             "version": "3.2.2",
+            "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==",
             "dev": true
         },
         "follow-redirects": {
-            "version": "1.14.3"
+            "version": "1.14.3",
+            "integrity": "sha512-3MkHxknWMUtb23apkgz/83fDoe+y+qr0TdgacGIA7bew+QLBo3vdgEN2xEsuXNivpFy4CyDhBBZnNZOtalmenw=="
         },
         "forever-agent": {
             "version": "0.6.1",
+            "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
             "optional": true
         },
         "form-data": {
             "version": "4.0.0",
+            "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
             "requires": {
                 "asynckit": "^0.4.0",
                 "combined-stream": "^1.0.8",
@@ -9205,29 +9485,36 @@
             }
         },
         "forwarded": {
-            "version": "0.2.0"
+            "version": "0.2.0",
+            "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow=="
         },
         "fresh": {
-            "version": "0.5.2"
+            "version": "0.5.2",
+            "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
         },
         "fs-minipass": {
             "version": "2.1.0",
+            "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==",
             "requires": {
                 "minipass": "^3.0.0"
             }
         },
         "fs.realpath": {
-            "version": "1.0.0"
+            "version": "1.0.0",
+            "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
         },
         "function-bind": {
-            "version": "1.1.1"
+            "version": "1.1.1",
+            "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
         },
         "functional-red-black-tree": {
             "version": "1.0.1",
+            "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=",
             "dev": true
         },
         "gauge": {
             "version": "2.7.4",
+            "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
             "requires": {
                 "aproba": "^1.0.3",
                 "console-control-strings": "^1.0.0",
@@ -9240,10 +9527,12 @@
             },
             "dependencies": {
                 "ansi-regex": {
-                    "version": "2.1.1"
+                    "version": "2.1.1",
+                    "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
                 },
                 "strip-ansi": {
                     "version": "3.0.1",
+                    "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
                     "requires": {
                         "ansi-regex": "^2.0.0"
                     }
@@ -9252,6 +9541,7 @@
         },
         "generic-names": {
             "version": "2.0.1",
+            "integrity": "sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==",
             "dev": true,
             "requires": {
                 "loader-utils": "^1.1.0"
@@ -9259,6 +9549,7 @@
         },
         "gensync": {
             "version": "1.0.0-beta.2",
+            "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
             "dev": true
         },
         "get-caller-file": {
@@ -9268,13 +9559,16 @@
         },
         "get-stdin": {
             "version": "8.0.0",
+            "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==",
             "dev": true
         },
         "getopts": {
-            "version": "2.2.5"
+            "version": "2.2.5",
+            "integrity": "sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA=="
         },
         "getpass": {
             "version": "0.1.7",
+            "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
             "optional": true,
             "requires": {
                 "assert-plus": "^1.0.0"
@@ -9282,6 +9576,7 @@
         },
         "glob": {
             "version": "7.1.7",
+            "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
             "requires": {
                 "fs.realpath": "^1.0.0",
                 "inflight": "^1.0.4",
@@ -9293,6 +9588,7 @@
         },
         "glob-parent": {
             "version": "5.1.2",
+            "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
             "dev": true,
             "requires": {
                 "is-glob": "^4.0.1"
@@ -9300,6 +9596,7 @@
         },
         "global-modules": {
             "version": "2.0.0",
+            "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
             "dev": true,
             "requires": {
                 "global-prefix": "^3.0.0"
@@ -9307,6 +9604,7 @@
         },
         "global-prefix": {
             "version": "3.0.0",
+            "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
             "dev": true,
             "requires": {
                 "ini": "^1.3.5",
@@ -9316,6 +9614,7 @@
             "dependencies": {
                 "which": {
                     "version": "1.3.1",
+                    "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
                     "dev": true,
                     "requires": {
                         "isexe": "^2.0.0"
@@ -9325,6 +9624,7 @@
         },
         "globals": {
             "version": "13.11.0",
+            "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==",
             "dev": true,
             "requires": {
                 "type-fest": "^0.20.2"
@@ -9332,6 +9632,7 @@
         },
         "globby": {
             "version": "11.0.4",
+            "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==",
             "dev": true,
             "requires": {
                 "array-union": "^2.1.0",
@@ -9344,16 +9645,19 @@
             "dependencies": {
                 "ignore": {
                     "version": "5.1.8",
+                    "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
                     "dev": true
                 }
             }
         },
         "globjoin": {
             "version": "0.1.4",
+            "integrity": "sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM=",
             "dev": true
         },
         "gonzales-pe": {
             "version": "4.3.0",
+            "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==",
             "dev": true,
             "requires": {
                 "minimist": "^1.2.5"
@@ -9361,14 +9665,17 @@
         },
         "graceful-fs": {
             "version": "4.2.8",
+            "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==",
             "optional": true
         },
         "har-schema": {
             "version": "2.0.0",
+            "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
             "optional": true
         },
         "har-validator": {
             "version": "5.1.5",
+            "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
             "optional": true,
             "requires": {
                 "ajv": "^6.12.3",
@@ -9377,30 +9684,37 @@
         },
         "hard-rejection": {
             "version": "2.1.0",
+            "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
             "dev": true
         },
         "has": {
             "version": "1.0.3",
+            "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
             "requires": {
                 "function-bind": "^1.1.1"
             }
         },
         "has-cors": {
-            "version": "1.1.0"
+            "version": "1.1.0",
+            "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk="
         },
         "has-flag": {
             "version": "4.0.0",
+            "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
             "dev": true
         },
         "has-unicode": {
-            "version": "2.0.1"
+            "version": "2.0.1",
+            "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
         },
         "hash-sum": {
             "version": "2.0.0",
+            "integrity": "sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==",
             "dev": true
         },
         "hosted-git-info": {
             "version": "4.0.2",
+            "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==",
             "dev": true,
             "requires": {
                 "lru-cache": "^6.0.0"
@@ -9408,6 +9722,7 @@
             "dependencies": {
                 "lru-cache": {
                     "version": "6.0.0",
+                    "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
                     "dev": true,
                     "requires": {
                         "yallist": "^4.0.0"
@@ -9415,16 +9730,19 @@
                 },
                 "yallist": {
                     "version": "4.0.0",
+                    "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
                     "dev": true
                 }
             }
         },
         "html-tags": {
             "version": "3.1.0",
+            "integrity": "sha512-1qYz89hW3lFDEazhjW0yVAV87lw8lVkrJocr72XmBkMKsoSVJCQx3W8BXsC7hO2qAt8BoVjYjtAcZ9perqGnNg==",
             "dev": true
         },
         "htmlparser2": {
             "version": "3.10.1",
+            "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
             "dev": true,
             "requires": {
                 "domelementtype": "^1.3.1",
@@ -9437,6 +9755,7 @@
             "dependencies": {
                 "readable-stream": {
                     "version": "3.6.0",
+                    "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
                     "dev": true,
                     "requires": {
                         "inherits": "^2.0.3",
@@ -9448,6 +9767,7 @@
         },
         "http-errors": {
             "version": "1.7.2",
+            "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
             "requires": {
                 "depd": "~1.1.2",
                 "inherits": "2.0.3",
@@ -9458,12 +9778,14 @@
         },
         "http-graceful-shutdown": {
             "version": "3.1.4",
+            "integrity": "sha512-d6E0hjPhHpKtxY+UuocogYuGUyuH+kOwzTYlAU+FGSTYoIUMyaIVKAn/Tmlqp82sE+Ls5ekOaqMiBlGhBsyT7g==",
             "requires": {
                 "debug": "^4.3.1"
             }
         },
         "http-signature": {
             "version": "1.2.0",
+            "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
             "optional": true,
             "requires": {
                 "assert-plus": "^1.0.0",
@@ -9473,6 +9795,7 @@
         },
         "https-proxy-agent": {
             "version": "5.0.0",
+            "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==",
             "requires": {
                 "agent-base": "6",
                 "debug": "4"
@@ -9480,18 +9803,20 @@
         },
         "iconv-lite": {
             "version": "0.4.24",
+            "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
             "requires": {
                 "safer-buffer": ">= 2.1.2 < 3"
             }
         },
         "icss-replace-symbols": {
             "version": "1.1.0",
+            "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=",
             "dev": true
         },
         "icss-utils": {
             "version": "5.1.0",
-            "dev": true,
-            "requires": {}
+            "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==",
+            "dev": true
         },
         "ieee754": {
             "version": "1.2.1",
@@ -9500,10 +9825,12 @@
         },
         "ignore": {
             "version": "4.0.6",
+            "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
             "dev": true
         },
         "import-fresh": {
             "version": "3.3.0",
+            "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
             "dev": true,
             "requires": {
                 "parent-module": "^1.0.0",
@@ -9512,42 +9839,52 @@
         },
         "import-lazy": {
             "version": "4.0.0",
+            "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==",
             "dev": true
         },
         "imurmurhash": {
             "version": "0.1.4",
+            "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
             "dev": true
         },
         "indent-string": {
             "version": "4.0.0",
+            "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
             "dev": true
         },
         "inflight": {
             "version": "1.0.6",
+            "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
             "requires": {
                 "once": "^1.3.0",
                 "wrappy": "1"
             }
         },
         "inherits": {
-            "version": "2.0.3"
+            "version": "2.0.3",
+            "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
         },
         "ini": {
             "version": "1.3.8",
+            "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
             "dev": true
         },
         "interpret": {
-            "version": "2.2.0"
+            "version": "2.2.0",
+            "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw=="
         },
         "ipaddr.js": {
-            "version": "1.9.1"
+            "version": "1.9.1",
+            "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
         },
         "is-alphabetical": {
             "version": "1.0.4",
+            "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==",
             "dev": true
         },
         "is-alphanumerical": {
             "version": "1.0.4",
+            "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==",
             "dev": true,
             "requires": {
                 "is-alphabetical": "^1.0.0",
@@ -9556,10 +9893,12 @@
         },
         "is-arrayish": {
             "version": "0.2.1",
+            "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
             "dev": true
         },
         "is-binary-path": {
             "version": "2.1.0",
+            "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
             "dev": true,
             "requires": {
                 "binary-extensions": "^2.0.0"
@@ -9567,30 +9906,36 @@
         },
         "is-buffer": {
             "version": "2.0.5",
+            "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
             "dev": true
         },
         "is-core-module": {
             "version": "2.6.0",
+            "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==",
             "requires": {
                 "has": "^1.0.3"
             }
         },
         "is-decimal": {
             "version": "1.0.4",
+            "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==",
             "dev": true
         },
         "is-extglob": {
             "version": "2.1.1",
+            "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
             "dev": true
         },
         "is-fullwidth-code-point": {
             "version": "1.0.0",
+            "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
             "requires": {
                 "number-is-nan": "^1.0.0"
             }
         },
         "is-glob": {
             "version": "4.0.1",
+            "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
             "dev": true,
             "requires": {
                 "is-extglob": "^2.1.1"
@@ -9598,45 +9943,56 @@
         },
         "is-hexadecimal": {
             "version": "1.0.4",
+            "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==",
             "dev": true
         },
         "is-number": {
             "version": "7.0.0",
+            "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
             "dev": true
         },
         "is-plain-obj": {
             "version": "1.1.0",
+            "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
             "dev": true
         },
         "is-regexp": {
             "version": "2.1.0",
+            "integrity": "sha512-OZ4IlER3zmRIoB9AqNhEggVxqIH4ofDns5nRrPS6yQxXE1TPCUpFznBfRQmQa8uC+pXqjMnukiJBxCisIxiLGA==",
             "dev": true
         },
         "is-typedarray": {
             "version": "1.0.0",
+            "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
             "devOptional": true
         },
         "is-unicode-supported": {
             "version": "0.1.0",
+            "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==",
             "dev": true
         },
         "isarray": {
-            "version": "1.0.0"
+            "version": "1.0.0",
+            "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
         },
         "isexe": {
             "version": "2.0.0",
+            "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
             "devOptional": true
         },
         "isstream": {
             "version": "0.1.2",
+            "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
             "optional": true
         },
         "js-tokens": {
             "version": "4.0.0",
+            "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
             "dev": true
         },
         "js-yaml": {
             "version": "3.14.1",
+            "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
             "dev": true,
             "requires": {
                 "argparse": "^1.0.7",
@@ -9645,34 +10001,42 @@
         },
         "jsbn": {
             "version": "0.1.1",
+            "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
             "optional": true
         },
         "jsesc": {
             "version": "2.5.2",
+            "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
             "dev": true
         },
         "json-parse-even-better-errors": {
             "version": "2.3.1",
+            "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
             "dev": true
         },
         "json-schema": {
             "version": "0.2.3",
+            "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
             "optional": true
         },
         "json-schema-traverse": {
             "version": "0.4.1",
+            "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
             "devOptional": true
         },
         "json-stable-stringify-without-jsonify": {
             "version": "1.0.1",
+            "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=",
             "dev": true
         },
         "json-stringify-safe": {
             "version": "5.0.1",
+            "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
             "optional": true
         },
         "json5": {
             "version": "1.0.1",
+            "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
             "dev": true,
             "requires": {
                 "minimist": "^1.2.0"
@@ -9680,6 +10044,7 @@
         },
         "jsonwebtoken": {
             "version": "8.5.1",
+            "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==",
             "requires": {
                 "jws": "^3.2.2",
                 "lodash.includes": "^4.3.0",
@@ -9694,12 +10059,14 @@
             },
             "dependencies": {
                 "semver": {
-                    "version": "5.7.1"
+                    "version": "5.7.1",
+                    "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
                 }
             }
         },
         "jsprim": {
             "version": "1.4.1",
+            "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
             "optional": true,
             "requires": {
                 "assert-plus": "1.0.0",
@@ -9710,6 +10077,7 @@
         },
         "jwa": {
             "version": "1.4.1",
+            "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
             "requires": {
                 "buffer-equal-constant-time": "1.0.1",
                 "ecdsa-sig-formatter": "1.0.11",
@@ -9718,6 +10086,7 @@
         },
         "jws": {
             "version": "3.2.2",
+            "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
             "requires": {
                 "jwa": "^1.4.1",
                 "safe-buffer": "^5.0.1"
@@ -9725,10 +10094,12 @@
         },
         "kind-of": {
             "version": "6.0.3",
+            "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
             "dev": true
         },
         "knex": {
             "version": "0.95.11",
+            "integrity": "sha512-grDetD91O8VoQVCFqeWTgkzdq5406W6rggF/lK1hHuwzmjDs/0m9KxyncGdZbklTi7aUgHvw3+Cfy4x7FvpdaQ==",
             "requires": {
                 "colorette": "1.2.1",
                 "commander": "^7.1.0",
@@ -9746,19 +10117,23 @@
             },
             "dependencies": {
                 "colorette": {
-                    "version": "1.2.1"
+                    "version": "1.2.1",
+                    "integrity": "sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw=="
                 },
                 "resolve-from": {
-                    "version": "5.0.0"
+                    "version": "5.0.0",
+                    "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="
                 }
             }
         },
         "known-css-properties": {
             "version": "0.21.0",
+            "integrity": "sha512-sZLUnTqimCkvkgRS+kbPlYW5o8q5w1cu+uIisKpEWkj31I8mx8kNG162DwRav8Zirkva6N5uoFsm9kzK4mUXjw==",
             "dev": true
         },
         "levn": {
             "version": "0.4.1",
+            "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
             "dev": true,
             "requires": {
                 "prelude-ls": "^1.2.1",
@@ -9767,10 +10142,12 @@
         },
         "lines-and-columns": {
             "version": "1.1.6",
+            "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
             "dev": true
         },
         "loader-utils": {
             "version": "1.4.0",
+            "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
             "dev": true,
             "requires": {
                 "big.js": "^5.2.2",
@@ -9780,56 +10157,71 @@
         },
         "locate-path": {
             "version": "5.0.0",
+            "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
             "dev": true,
             "requires": {
                 "p-locate": "^4.1.0"
             }
         },
         "lodash": {
-            "version": "4.17.21"
+            "version": "4.17.21",
+            "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
         },
         "lodash.camelcase": {
             "version": "4.3.0",
+            "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=",
             "dev": true
         },
         "lodash.clonedeep": {
             "version": "4.5.0",
+            "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
             "dev": true
         },
         "lodash.get": {
-            "version": "4.4.2"
+            "version": "4.4.2",
+            "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk="
         },
         "lodash.includes": {
-            "version": "4.3.0"
+            "version": "4.3.0",
+            "integrity": "sha1-YLuYqHy5I8aMoeUTJUgzFISfVT8="
         },
         "lodash.isboolean": {
-            "version": "3.0.3"
+            "version": "3.0.3",
+            "integrity": "sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY="
         },
         "lodash.isinteger": {
-            "version": "4.0.4"
+            "version": "4.0.4",
+            "integrity": "sha1-YZwK89A/iwTDH1iChAt3sRzWg0M="
         },
         "lodash.isnumber": {
-            "version": "3.0.3"
+            "version": "3.0.3",
+            "integrity": "sha1-POdoEMWSjQM1IwGsKHMX8RwLH/w="
         },
         "lodash.isplainobject": {
-            "version": "4.0.6"
+            "version": "4.0.6",
+            "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs="
         },
         "lodash.isstring": {
-            "version": "4.0.1"
+            "version": "4.0.1",
+            "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
         },
         "lodash.merge": {
             "version": "4.6.2",
+            "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
             "dev": true
         },
         "lodash.once": {
-            "version": "4.1.1"
+            "version": "4.1.1",
+            "integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
         },
         "lodash.truncate": {
             "version": "4.4.2",
+            "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=",
             "dev": true
         },
         "log-symbols": {
             "version": "4.1.0",
+            "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==",
             "dev": true,
             "requires": {
                 "chalk": "^4.1.0",
@@ -9838,10 +10230,12 @@
         },
         "longest-streak": {
             "version": "2.0.4",
+            "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==",
             "dev": true
         },
         "lru-cache": {
             "version": "5.1.1",
+            "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
             "dev": true,
             "requires": {
                 "yallist": "^3.0.2"
@@ -9849,6 +10243,7 @@
         },
         "magic-string": {
             "version": "0.25.7",
+            "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==",
             "dev": true,
             "requires": {
                 "sourcemap-codec": "^1.4.4"
@@ -9856,20 +10251,24 @@
         },
         "make-dir": {
             "version": "3.1.0",
+            "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
             "requires": {
                 "semver": "^6.0.0"
             }
         },
         "map-obj": {
             "version": "4.2.1",
+            "integrity": "sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==",
             "dev": true
         },
         "mathml-tag-names": {
             "version": "2.1.3",
+            "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==",
             "dev": true
         },
         "mdast-util-from-markdown": {
             "version": "0.8.5",
+            "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==",
             "dev": true,
             "requires": {
                 "@types/mdast": "^3.0.0",
@@ -9881,6 +10280,7 @@
         },
         "mdast-util-to-markdown": {
             "version": "0.6.5",
+            "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==",
             "dev": true,
             "requires": {
                 "@types/unist": "^2.0.0",
@@ -9893,13 +10293,16 @@
         },
         "mdast-util-to-string": {
             "version": "2.0.0",
+            "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==",
             "dev": true
         },
         "media-typer": {
-            "version": "0.3.0"
+            "version": "0.3.0",
+            "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
         },
         "meow": {
             "version": "9.0.0",
+            "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==",
             "dev": true,
             "requires": {
                 "@types/minimist": "^1.2.0",
@@ -9918,18 +10321,22 @@
             "dependencies": {
                 "type-fest": {
                     "version": "0.18.1",
+                    "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
                     "dev": true
                 }
             }
         },
         "merge": {
-            "version": "2.1.1"
+            "version": "2.1.1",
+            "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w=="
         },
         "merge-descriptors": {
-            "version": "1.0.1"
+            "version": "1.0.1",
+            "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
         },
         "merge-source-map": {
             "version": "1.1.0",
+            "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==",
             "dev": true,
             "requires": {
                 "source-map": "^0.6.1"
@@ -9937,13 +10344,16 @@
         },
         "merge2": {
             "version": "1.4.1",
+            "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
             "dev": true
         },
         "methods": {
-            "version": "1.1.2"
+            "version": "1.1.2",
+            "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
         },
         "micromark": {
             "version": "2.11.4",
+            "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==",
             "dev": true,
             "requires": {
                 "debug": "^4.0.0",
@@ -9952,6 +10362,7 @@
         },
         "micromatch": {
             "version": "4.0.4",
+            "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==",
             "dev": true,
             "requires": {
                 "braces": "^3.0.1",
@@ -9959,33 +10370,40 @@
             }
         },
         "mime": {
-            "version": "1.6.0"
+            "version": "1.6.0",
+            "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg=="
         },
         "mime-db": {
-            "version": "1.49.0"
+            "version": "1.49.0",
+            "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA=="
         },
         "mime-types": {
             "version": "2.1.32",
+            "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==",
             "requires": {
                 "mime-db": "1.49.0"
             }
         },
         "min-indent": {
             "version": "1.0.1",
+            "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
             "dev": true
         },
         "minimatch": {
             "version": "3.0.4",
+            "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
             "requires": {
                 "brace-expansion": "^1.1.7"
             }
         },
         "minimist": {
             "version": "1.2.5",
+            "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
             "dev": true
         },
         "minimist-options": {
             "version": "4.1.0",
+            "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
             "dev": true,
             "requires": {
                 "arrify": "^1.0.1",
@@ -9995,52 +10413,64 @@
         },
         "minipass": {
             "version": "3.1.3",
+            "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==",
             "requires": {
                 "yallist": "^4.0.0"
             },
             "dependencies": {
                 "yallist": {
-                    "version": "4.0.0"
+                    "version": "4.0.0",
+                    "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
                 }
             }
         },
         "minizlib": {
             "version": "2.1.2",
+            "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==",
             "requires": {
                 "minipass": "^3.0.0",
                 "yallist": "^4.0.0"
             },
             "dependencies": {
                 "yallist": {
-                    "version": "4.0.0"
+                    "version": "4.0.0",
+                    "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
                 }
             }
         },
         "mkdirp": {
-            "version": "1.0.4"
+            "version": "1.0.4",
+            "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
         },
         "ms": {
-            "version": "2.1.2"
+            "version": "2.1.2",
+            "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
         },
         "nanoid": {
             "version": "3.1.25",
+            "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==",
             "dev": true
         },
         "natural-compare": {
             "version": "1.4.0",
+            "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
             "dev": true
         },
         "negotiator": {
-            "version": "0.6.2"
+            "version": "0.6.2",
+            "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
         },
         "node-addon-api": {
-            "version": "3.2.1"
+            "version": "3.2.1",
+            "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A=="
         },
         "node-fetch": {
-            "version": "2.6.1"
+            "version": "2.6.1",
+            "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw=="
         },
         "node-gyp": {
             "version": "7.1.2",
+            "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==",
             "optional": true,
             "requires": {
                 "env-paths": "^2.2.0",
@@ -10057,6 +10487,7 @@
             "dependencies": {
                 "lru-cache": {
                     "version": "6.0.0",
+                    "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
                     "optional": true,
                     "requires": {
                         "yallist": "^4.0.0"
@@ -10064,6 +10495,7 @@
                 },
                 "semver": {
                     "version": "7.3.5",
+                    "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
                     "optional": true,
                     "requires": {
                         "lru-cache": "^6.0.0"
@@ -10071,25 +10503,30 @@
                 },
                 "yallist": {
                     "version": "4.0.0",
+                    "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
                     "optional": true
                 }
             }
         },
         "node-releases": {
             "version": "1.1.75",
+            "integrity": "sha512-Qe5OUajvqrqDSy6wrWFmMwfJ0jVgwiw4T3KqmbTcZ62qW0gQkheXYhcFM1+lOVcGUoRxcEcfyvFMAnDgaF1VWw==",
             "dev": true
         },
         "nodemailer": {
-            "version": "6.6.3"
+            "version": "6.6.3",
+            "integrity": "sha512-faZFufgTMrphYoDjvyVpbpJcYzwyFnbAMmQtj1lVBYAUSm3SOy2fIdd9+Mr4UxPosBa0JRw9bJoIwQn+nswiew=="
         },
         "nopt": {
             "version": "5.0.0",
+            "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
             "requires": {
                 "abbrev": "1"
             }
         },
         "normalize-package-data": {
             "version": "3.0.3",
+            "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
             "dev": true,
             "requires": {
                 "hosted-git-info": "^4.0.1",
@@ -10100,6 +10537,7 @@
             "dependencies": {
                 "lru-cache": {
                     "version": "6.0.0",
+                    "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
                     "dev": true,
                     "requires": {
                         "yallist": "^4.0.0"
@@ -10107,6 +10545,7 @@
                 },
                 "semver": {
                     "version": "7.3.5",
+                    "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==",
                     "dev": true,
                     "requires": {
                         "lru-cache": "^6.0.0"
@@ -10114,20 +10553,24 @@
                 },
                 "yallist": {
                     "version": "4.0.0",
+                    "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
                     "dev": true
                 }
             }
         },
         "normalize-path": {
             "version": "3.0.0",
+            "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
             "dev": true
         },
         "normalize-range": {
             "version": "0.1.2",
+            "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
             "dev": true
         },
         "normalize-selector": {
             "version": "0.2.0",
+            "integrity": "sha1-0LFF62kRicY6eNIB3E/bEpPvDAM=",
             "dev": true
         },
         "notp": {
@@ -10137,6 +10580,7 @@
         },
         "npmlog": {
             "version": "4.1.2",
+            "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
             "requires": {
                 "are-we-there-yet": "~1.1.2",
                 "console-control-strings": "~1.1.0",
@@ -10146,32 +10590,39 @@
         },
         "num2fraction": {
             "version": "1.2.2",
+            "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
             "dev": true
         },
         "number-is-nan": {
-            "version": "1.0.1"
+            "version": "1.0.1",
+            "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
         },
         "oauth-sign": {
             "version": "0.9.0",
+            "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
             "optional": true
         },
         "object-assign": {
-            "version": "4.1.1"
+            "version": "4.1.1",
+            "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
         },
         "on-finished": {
             "version": "2.3.0",
+            "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
             "requires": {
                 "ee-first": "1.1.1"
             }
         },
         "once": {
             "version": "1.4.0",
+            "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
             "requires": {
                 "wrappy": "1"
             }
         },
         "optionator": {
             "version": "0.9.1",
+            "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==",
             "dev": true,
             "requires": {
                 "deep-is": "^0.1.3",
@@ -10184,22 +10635,26 @@
         },
         "p-limit": {
             "version": "2.3.0",
+            "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
             "requires": {
                 "p-try": "^2.0.0"
             }
         },
         "p-locate": {
             "version": "4.1.0",
+            "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
             "dev": true,
             "requires": {
                 "p-limit": "^2.2.0"
             }
         },
         "p-try": {
-            "version": "2.2.0"
+            "version": "2.2.0",
+            "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
         },
         "parent-module": {
             "version": "1.0.1",
+            "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
             "dev": true,
             "requires": {
                 "callsites": "^3.0.0"
@@ -10207,6 +10662,7 @@
         },
         "parse-entities": {
             "version": "2.0.0",
+            "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==",
             "dev": true,
             "requires": {
                 "character-entities": "^1.0.0",
@@ -10219,6 +10675,7 @@
         },
         "parse-json": {
             "version": "5.2.0",
+            "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
             "dev": true,
             "requires": {
                 "@babel/code-frame": "^7.0.0",
@@ -10228,51 +10685,65 @@
             }
         },
         "parseqs": {
-            "version": "0.0.6"
+            "version": "0.0.6",
+            "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w=="
         },
         "parseuri": {
-            "version": "0.0.6"
+            "version": "0.0.6",
+            "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow=="
         },
         "parseurl": {
-            "version": "1.3.3"
+            "version": "1.3.3",
+            "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ=="
         },
         "password-hash": {
-            "version": "1.2.2"
+            "version": "1.2.2",
+            "integrity": "sha1-O0UfAU3ksuHr+g5Uk7lRexBjrx0="
         },
         "path-exists": {
             "version": "4.0.0",
+            "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
             "dev": true
         },
         "path-is-absolute": {
-            "version": "1.0.1"
+            "version": "1.0.1",
+            "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
         },
         "path-key": {
             "version": "3.1.1",
+            "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
             "dev": true
         },
         "path-parse": {
-            "version": "1.0.7"
+            "version": "1.0.7",
+            "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
         },
         "path-to-regexp": {
-            "version": "0.1.7"
+            "version": "0.1.7",
+            "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
         },
         "path-type": {
             "version": "4.0.0",
+            "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
             "dev": true
         },
         "performance-now": {
             "version": "2.1.0",
+            "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
             "optional": true
         },
         "pg-connection-string": {
-            "version": "2.5.0"
+            "version": "2.5.0",
+            "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ=="
         },
         "picomatch": {
             "version": "2.3.0",
+            "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
             "dev": true
         },
         "pkginfo": {
-            "version": "0.4.1"
+            "version": "0.4.1",
+            "integrity": "sha1-tUGO8EOd5UJfxJlQQtztFPsqhP8="
         },
         "pngjs": {
             "version": "3.4.0",
@@ -10281,6 +10752,7 @@
         },
         "postcss": {
             "version": "8.3.6",
+            "integrity": "sha512-wG1cc/JhRgdqB6WHEuyLTedf3KIRuD0hG6ldkFEZNCjRxiC+3i6kkWUUbiJQayP28iwG35cEmAbe98585BYV0A==",
             "dev": true,
             "requires": {
                 "colorette": "^1.2.2",
@@ -10290,6 +10762,7 @@
         },
         "postcss-html": {
             "version": "0.36.0",
+            "integrity": "sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw==",
             "dev": true,
             "requires": {
                 "htmlparser2": "^3.10.0"
@@ -10297,6 +10770,7 @@
         },
         "postcss-less": {
             "version": "3.1.4",
+            "integrity": "sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA==",
             "dev": true,
             "requires": {
                 "postcss": "^7.0.14"
@@ -10304,6 +10778,7 @@
             "dependencies": {
                 "ansi-styles": {
                     "version": "3.2.1",
+                    "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
                     "dev": true,
                     "requires": {
                         "color-convert": "^1.9.0"
@@ -10311,6 +10786,7 @@
                 },
                 "chalk": {
                     "version": "2.4.2",
+                    "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
                     "dev": true,
                     "requires": {
                         "ansi-styles": "^3.2.1",
@@ -10320,6 +10796,7 @@
                     "dependencies": {
                         "supports-color": {
                             "version": "5.5.0",
+                            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
                             "dev": true,
                             "requires": {
                                 "has-flag": "^3.0.0"
@@ -10329,6 +10806,7 @@
                 },
                 "color-convert": {
                     "version": "1.9.3",
+                    "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
                     "dev": true,
                     "requires": {
                         "color-name": "1.1.3"
@@ -10336,18 +10814,22 @@
                 },
                 "color-name": {
                     "version": "1.1.3",
+                    "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
                     "dev": true
                 },
                 "escape-string-regexp": {
                     "version": "1.0.5",
+                    "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
                     "dev": true
                 },
                 "has-flag": {
                     "version": "3.0.0",
+                    "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
                     "dev": true
                 },
                 "postcss": {
                     "version": "7.0.36",
+                    "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==",
                     "dev": true,
                     "requires": {
                         "chalk": "^2.4.2",
@@ -10357,6 +10839,7 @@
                 },
                 "supports-color": {
                     "version": "6.1.0",
+                    "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
                     "dev": true,
                     "requires": {
                         "has-flag": "^3.0.0"
@@ -10366,10 +10849,12 @@
         },
         "postcss-media-query-parser": {
             "version": "0.2.3",
+            "integrity": "sha1-J7Ocb02U+Bsac7j3Y1HGCeXO8kQ=",
             "dev": true
         },
         "postcss-modules": {
             "version": "4.2.2",
+            "integrity": "sha512-/H08MGEmaalv/OU8j6bUKi/kZr2kqGF6huAW8m9UAgOLWtpFdhA14+gPBoymtqyv+D4MLsmqaF2zvIegdCxJXg==",
             "dev": true,
             "requires": {
                 "generic-names": "^2.0.1",
@@ -10384,11 +10869,12 @@
         },
         "postcss-modules-extract-imports": {
             "version": "3.0.0",
-            "dev": true,
-            "requires": {}
+            "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==",
+            "dev": true
         },
         "postcss-modules-local-by-default": {
             "version": "4.0.0",
+            "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==",
             "dev": true,
             "requires": {
                 "icss-utils": "^5.0.0",
@@ -10398,6 +10884,7 @@
         },
         "postcss-modules-scope": {
             "version": "3.0.0",
+            "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==",
             "dev": true,
             "requires": {
                 "postcss-selector-parser": "^6.0.4"
@@ -10405,6 +10892,7 @@
         },
         "postcss-modules-values": {
             "version": "4.0.0",
+            "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==",
             "dev": true,
             "requires": {
                 "icss-utils": "^5.0.0"
@@ -10412,10 +10900,12 @@
         },
         "postcss-resolve-nested-selector": {
             "version": "0.1.1",
+            "integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=",
             "dev": true
         },
         "postcss-safe-parser": {
             "version": "4.0.2",
+            "integrity": "sha512-Uw6ekxSWNLCPesSv/cmqf2bY/77z11O7jZGPax3ycZMFU/oi2DMH9i89AdHc1tRwFg/arFoEwX0IS3LCUxJh1g==",
             "dev": true,
             "requires": {
                 "postcss": "^7.0.26"
@@ -10423,6 +10913,7 @@
             "dependencies": {
                 "ansi-styles": {
                     "version": "3.2.1",
+                    "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
                     "dev": true,
                     "requires": {
                         "color-convert": "^1.9.0"
@@ -10430,6 +10921,7 @@
                 },
                 "chalk": {
                     "version": "2.4.2",
+                    "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
                     "dev": true,
                     "requires": {
                         "ansi-styles": "^3.2.1",
@@ -10439,6 +10931,7 @@
                     "dependencies": {
                         "supports-color": {
                             "version": "5.5.0",
+                            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
                             "dev": true,
                             "requires": {
                                 "has-flag": "^3.0.0"
@@ -10448,6 +10941,7 @@
                 },
                 "color-convert": {
                     "version": "1.9.3",
+                    "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
                     "dev": true,
                     "requires": {
                         "color-name": "1.1.3"
@@ -10455,18 +10949,22 @@
                 },
                 "color-name": {
                     "version": "1.1.3",
+                    "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
                     "dev": true
                 },
                 "escape-string-regexp": {
                     "version": "1.0.5",
+                    "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
                     "dev": true
                 },
                 "has-flag": {
                     "version": "3.0.0",
+                    "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
                     "dev": true
                 },
                 "postcss": {
                     "version": "7.0.36",
+                    "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==",
                     "dev": true,
                     "requires": {
                         "chalk": "^2.4.2",
@@ -10476,6 +10974,7 @@
                 },
                 "supports-color": {
                     "version": "6.1.0",
+                    "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
                     "dev": true,
                     "requires": {
                         "has-flag": "^3.0.0"
@@ -10485,6 +10984,7 @@
         },
         "postcss-sass": {
             "version": "0.4.4",
+            "integrity": "sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg==",
             "dev": true,
             "requires": {
                 "gonzales-pe": "^4.3.0",
@@ -10493,6 +10993,7 @@
             "dependencies": {
                 "ansi-styles": {
                     "version": "3.2.1",
+                    "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
                     "dev": true,
                     "requires": {
                         "color-convert": "^1.9.0"
@@ -10500,6 +11001,7 @@
                 },
                 "chalk": {
                     "version": "2.4.2",
+                    "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
                     "dev": true,
                     "requires": {
                         "ansi-styles": "^3.2.1",
@@ -10509,6 +11011,7 @@
                     "dependencies": {
                         "supports-color": {
                             "version": "5.5.0",
+                            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
                             "dev": true,
                             "requires": {
                                 "has-flag": "^3.0.0"
@@ -10518,6 +11021,7 @@
                 },
                 "color-convert": {
                     "version": "1.9.3",
+                    "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
                     "dev": true,
                     "requires": {
                         "color-name": "1.1.3"
@@ -10525,18 +11029,22 @@
                 },
                 "color-name": {
                     "version": "1.1.3",
+                    "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
                     "dev": true
                 },
                 "escape-string-regexp": {
                     "version": "1.0.5",
+                    "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
                     "dev": true
                 },
                 "has-flag": {
                     "version": "3.0.0",
+                    "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
                     "dev": true
                 },
                 "postcss": {
                     "version": "7.0.36",
+                    "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==",
                     "dev": true,
                     "requires": {
                         "chalk": "^2.4.2",
@@ -10546,6 +11054,7 @@
                 },
                 "supports-color": {
                     "version": "6.1.0",
+                    "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
                     "dev": true,
                     "requires": {
                         "has-flag": "^3.0.0"
@@ -10555,6 +11064,7 @@
         },
         "postcss-scss": {
             "version": "2.1.1",
+            "integrity": "sha512-jQmGnj0hSGLd9RscFw9LyuSVAa5Bl1/KBPqG1NQw9w8ND55nY4ZEsdlVuYJvLPpV+y0nwTV5v/4rHPzZRihQbA==",
             "dev": true,
             "requires": {
                 "postcss": "^7.0.6"
@@ -10562,6 +11072,7 @@
             "dependencies": {
                 "ansi-styles": {
                     "version": "3.2.1",
+                    "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
                     "dev": true,
                     "requires": {
                         "color-convert": "^1.9.0"
@@ -10569,6 +11080,7 @@
                 },
                 "chalk": {
                     "version": "2.4.2",
+                    "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
                     "dev": true,
                     "requires": {
                         "ansi-styles": "^3.2.1",
@@ -10578,6 +11090,7 @@
                     "dependencies": {
                         "supports-color": {
                             "version": "5.5.0",
+                            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
                             "dev": true,
                             "requires": {
                                 "has-flag": "^3.0.0"
@@ -10587,6 +11100,7 @@
                 },
                 "color-convert": {
                     "version": "1.9.3",
+                    "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
                     "dev": true,
                     "requires": {
                         "color-name": "1.1.3"
@@ -10594,18 +11108,22 @@
                 },
                 "color-name": {
                     "version": "1.1.3",
+                    "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
                     "dev": true
                 },
                 "escape-string-regexp": {
                     "version": "1.0.5",
+                    "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
                     "dev": true
                 },
                 "has-flag": {
                     "version": "3.0.0",
+                    "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
                     "dev": true
                 },
                 "postcss": {
                     "version": "7.0.36",
+                    "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==",
                     "dev": true,
                     "requires": {
                         "chalk": "^2.4.2",
@@ -10615,6 +11133,7 @@
                 },
                 "supports-color": {
                     "version": "6.1.0",
+                    "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
                     "dev": true,
                     "requires": {
                         "has-flag": "^3.0.0"
@@ -10624,6 +11143,7 @@
         },
         "postcss-selector-parser": {
             "version": "6.0.6",
+            "integrity": "sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg==",
             "dev": true,
             "requires": {
                 "cssesc": "^3.0.0",
@@ -10632,32 +11152,38 @@
         },
         "postcss-syntax": {
             "version": "0.36.2",
-            "dev": true,
-            "requires": {}
+            "integrity": "sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w==",
+            "dev": true
         },
         "postcss-value-parser": {
             "version": "4.1.0",
+            "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==",
             "dev": true
         },
         "prelude-ls": {
             "version": "1.2.1",
+            "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
             "dev": true
         },
         "process-nextick-args": {
-            "version": "2.0.1"
+            "version": "2.0.1",
+            "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
         },
         "progress": {
             "version": "2.0.3",
+            "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
             "dev": true
         },
         "prom-client": {
             "version": "13.2.0",
+            "integrity": "sha512-wGr5mlNNdRNzEhRYXgboUU2LxHWIojxscJKmtG3R8f4/KiWqyYgXTLHs0+Ted7tG3zFT7pgHJbtomzZ1L0ARaQ==",
             "requires": {
                 "tdigest": "^0.1.1"
             }
         },
         "prometheus-api-metrics": {
             "version": "3.2.0",
+            "integrity": "sha512-JekPhtIBLGX8HxD2EndvBsLU6ZQ1JVVqyHWVfm5CposUOqgBHXnUVFW6x5Ux2gykpdej/5LLM3dU9V8Ma7GfkA==",
             "requires": {
                 "@types/express": "^4.17.8",
                 "@types/express-serve-static-core": "^4.17.12",
@@ -10669,6 +11195,7 @@
             "dependencies": {
                 "debug": {
                     "version": "3.2.7",
+                    "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
                     "requires": {
                         "ms": "^2.1.1"
                     }
@@ -10677,6 +11204,7 @@
         },
         "proxy-addr": {
             "version": "2.0.7",
+            "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==",
             "requires": {
                 "forwarded": "0.2.0",
                 "ipaddr.js": "1.9.1"
@@ -10684,10 +11212,12 @@
         },
         "psl": {
             "version": "1.8.0",
+            "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
             "optional": true
         },
         "punycode": {
             "version": "2.1.1",
+            "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
             "devOptional": true
         },
         "qrcode": {
@@ -10712,21 +11242,26 @@
             }
         },
         "qs": {
-            "version": "6.7.0"
+            "version": "6.7.0",
+            "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ=="
         },
         "queue-microtask": {
             "version": "1.2.3",
+            "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
             "dev": true
         },
         "quick-lru": {
             "version": "4.0.1",
+            "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
             "dev": true
         },
         "range-parser": {
-            "version": "1.2.1"
+            "version": "1.2.1",
+            "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
         },
         "raw-body": {
             "version": "2.4.0",
+            "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
             "requires": {
                 "bytes": "3.1.0",
                 "http-errors": "1.7.2",
@@ -10736,6 +11271,7 @@
         },
         "read-pkg": {
             "version": "5.2.0",
+            "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
             "dev": true,
             "requires": {
                 "@types/normalize-package-data": "^2.4.0",
@@ -10746,10 +11282,12 @@
             "dependencies": {
                 "hosted-git-info": {
                     "version": "2.8.9",
+                    "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
                     "dev": true
                 },
                 "normalize-package-data": {
                     "version": "2.5.0",
+                    "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
                     "dev": true,
                     "requires": {
                         "hosted-git-info": "^2.1.4",
@@ -10760,16 +11298,19 @@
                 },
                 "semver": {
                     "version": "5.7.1",
+                    "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
                     "dev": true
                 },
                 "type-fest": {
                     "version": "0.6.0",
+                    "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
                     "dev": true
                 }
             }
         },
         "read-pkg-up": {
             "version": "7.0.1",
+            "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
             "dev": true,
             "requires": {
                 "find-up": "^4.1.0",
@@ -10779,12 +11320,14 @@
             "dependencies": {
                 "type-fest": {
                     "version": "0.8.1",
+                    "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
                     "dev": true
                 }
             }
         },
         "readable-stream": {
             "version": "2.3.7",
+            "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
             "requires": {
                 "core-util-is": "~1.0.0",
                 "inherits": "~2.0.3",
@@ -10797,6 +11340,7 @@
         },
         "readdirp": {
             "version": "3.6.0",
+            "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
             "dev": true,
             "requires": {
                 "picomatch": "^2.2.1"
@@ -10804,12 +11348,14 @@
         },
         "rechoir": {
             "version": "0.7.0",
+            "integrity": "sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q==",
             "requires": {
                 "resolve": "^1.9.0"
             }
         },
         "redbean-node": {
             "version": "0.1.2",
+            "integrity": "sha512-DcAeu0hXSkpp942pVidU4heMvWeZU970j+lbC/SF7H0fLLeLRfN9SRMzo9VnCJyhe5rcC4kaR7xP4KoJm7KBdQ==",
             "requires": {
                 "@types/node": "^14.17.7",
                 "await-lock": "^2.1.0",
@@ -10820,12 +11366,14 @@
             },
             "dependencies": {
                 "@types/node": {
-                    "version": "14.17.14"
+                    "version": "14.17.14",
+                    "integrity": "sha512-rsAj2u8Xkqfc332iXV12SqIsjVi07H479bOP4q94NAcjzmAvapumEhuVIt53koEf7JFrpjgNKjBga5Pnn/GL8A=="
                 }
             }
         },
         "redent": {
             "version": "3.0.0",
+            "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
             "dev": true,
             "requires": {
                 "indent-string": "^4.0.0",
@@ -10834,14 +11382,17 @@
         },
         "regenerator-runtime": {
             "version": "0.13.9",
+            "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==",
             "dev": true
         },
         "regexpp": {
             "version": "3.2.0",
+            "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
             "dev": true
         },
         "remark": {
             "version": "13.0.0",
+            "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==",
             "dev": true,
             "requires": {
                 "remark-parse": "^9.0.0",
@@ -10851,6 +11402,7 @@
         },
         "remark-parse": {
             "version": "9.0.0",
+            "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==",
             "dev": true,
             "requires": {
                 "mdast-util-from-markdown": "^0.8.0"
@@ -10858,6 +11410,7 @@
         },
         "remark-stringify": {
             "version": "9.0.1",
+            "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==",
             "dev": true,
             "requires": {
                 "mdast-util-to-markdown": "^0.6.0"
@@ -10865,10 +11418,12 @@
         },
         "repeat-string": {
             "version": "1.6.1",
+            "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
             "dev": true
         },
         "request": {
             "version": "2.88.2",
+            "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
             "optional": true,
             "requires": {
                 "aws-sign2": "~0.7.0",
@@ -10895,6 +11450,7 @@
             "dependencies": {
                 "form-data": {
                     "version": "2.3.3",
+                    "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
                     "optional": true,
                     "requires": {
                         "asynckit": "^0.4.0",
@@ -10904,6 +11460,7 @@
                 },
                 "qs": {
                     "version": "6.5.2",
+                    "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
                     "optional": true
                 }
             }
@@ -10915,6 +11472,7 @@
         },
         "require-from-string": {
             "version": "2.0.2",
+            "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
             "dev": true
         },
         "require-main-filename": {
@@ -10924,6 +11482,7 @@
         },
         "resolve": {
             "version": "1.20.0",
+            "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==",
             "requires": {
                 "is-core-module": "^2.2.0",
                 "path-parse": "^1.0.6"
@@ -10931,20 +11490,24 @@
         },
         "resolve-from": {
             "version": "4.0.0",
+            "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
             "dev": true
         },
         "reusify": {
             "version": "1.0.4",
+            "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
             "dev": true
         },
         "rimraf": {
             "version": "3.0.2",
+            "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
             "requires": {
                 "glob": "^7.1.3"
             }
         },
         "rollup": {
             "version": "2.56.3",
+            "integrity": "sha512-Au92NuznFklgQCUcV96iXlxUbHuB1vQMaH76DHl5M11TotjOHwqk9CwcrT78+Tnv4FN9uTBxq6p4EJoYkpyekg==",
             "dev": true,
             "requires": {
                 "fsevents": "~2.3.2"
@@ -10952,29 +11515,35 @@
         },
         "run-parallel": {
             "version": "1.2.0",
+            "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
             "dev": true,
             "requires": {
                 "queue-microtask": "^1.2.2"
             }
         },
         "safe-buffer": {
-            "version": "5.1.2"
+            "version": "5.1.2",
+            "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
         },
         "safer-buffer": {
-            "version": "2.1.2"
+            "version": "2.1.2",
+            "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
         },
         "sass": {
             "version": "1.39.0",
+            "integrity": "sha512-F4o+RhJkNOIG0b6QudYU8c78ZADKZjKDk5cyrf8XTKWfrgbtyVVXImFstJrc+1pkQDCggyidIOytq6gS4gCCZg==",
             "dev": true,
             "requires": {
                 "chokidar": ">=3.0.0 <4.0.0"
             }
         },
         "semver": {
-            "version": "6.3.0"
+            "version": "6.3.0",
+            "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
         },
         "send": {
             "version": "0.17.1",
+            "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
             "requires": {
                 "debug": "2.6.9",
                 "depd": "~1.1.2",
@@ -10993,22 +11562,26 @@
             "dependencies": {
                 "debug": {
                     "version": "2.6.9",
+                    "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
                     "requires": {
                         "ms": "2.0.0"
                     },
                     "dependencies": {
                         "ms": {
-                            "version": "2.0.0"
+                            "version": "2.0.0",
+                            "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
                         }
                     }
                 },
                 "ms": {
-                    "version": "2.1.1"
+                    "version": "2.1.1",
+                    "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg=="
                 }
             }
         },
         "serve-static": {
             "version": "1.14.1",
+            "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
             "requires": {
                 "encodeurl": "~1.0.2",
                 "escape-html": "~1.0.3",
@@ -11017,13 +11590,16 @@
             }
         },
         "set-blocking": {
-            "version": "2.0.0"
+            "version": "2.0.0",
+            "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
         },
         "setprototypeof": {
-            "version": "1.1.1"
+            "version": "1.1.1",
+            "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw=="
         },
         "shebang-command": {
             "version": "2.0.0",
+            "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
             "dev": true,
             "requires": {
                 "shebang-regex": "^3.0.0"
@@ -11031,17 +11607,21 @@
         },
         "shebang-regex": {
             "version": "3.0.0",
+            "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
             "dev": true
         },
         "signal-exit": {
-            "version": "3.0.3"
+            "version": "3.0.3",
+            "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
         },
         "slash": {
             "version": "3.0.0",
+            "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
             "dev": true
         },
         "slice-ansi": {
             "version": "4.0.0",
+            "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
             "dev": true,
             "requires": {
                 "ansi-styles": "^4.0.0",
@@ -11051,12 +11631,14 @@
             "dependencies": {
                 "is-fullwidth-code-point": {
                     "version": "3.0.0",
+                    "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
                     "dev": true
                 }
             }
         },
         "socket.io": {
             "version": "4.2.0",
+            "integrity": "sha512-sjlGfMmnaWvTRVxGRGWyhd9ctpg4APxWAxu85O/SxekkxHhfxmePWZbaYCkeX5QQX0z1YEnKOlNt6w82E4Nzug==",
             "requires": {
                 "@types/cookie": "^0.4.1",
                 "@types/cors": "^2.8.12",
@@ -11070,10 +11652,12 @@
             }
         },
         "socket.io-adapter": {
-            "version": "2.3.2"
+            "version": "2.3.2",
+            "integrity": "sha512-PBZpxUPYjmoogY0aoaTmo1643JelsaS1CiAwNjRVdrI0X9Seuc19Y2Wife8k88avW6haG8cznvwbubAZwH4Mtg=="
         },
         "socket.io-client": {
             "version": "4.2.0",
+            "integrity": "sha512-3GJ2KMh7inJUNAOjgf8NaKJZJa9uRyfryh2LrVJyKyxmzoXlfW9DeDNqylJn0ovOFt4e/kRLNWzMt/YqqEWYSA==",
             "requires": {
                 "@types/component-emitter": "^1.2.10",
                 "backo2": "~1.0.2",
@@ -11086,6 +11670,7 @@
         },
         "socket.io-parser": {
             "version": "4.0.4",
+            "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==",
             "requires": {
                 "@types/component-emitter": "^1.2.10",
                 "component-emitter": "~1.3.0",
@@ -11093,18 +11678,22 @@
             }
         },
         "source-map": {
-            "version": "0.6.1"
+            "version": "0.6.1",
+            "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
         },
         "source-map-js": {
             "version": "0.6.2",
+            "integrity": "sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug==",
             "dev": true
         },
         "sourcemap-codec": {
             "version": "1.4.8",
+            "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
             "dev": true
         },
         "spdx-correct": {
             "version": "3.1.1",
+            "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
             "dev": true,
             "requires": {
                 "spdx-expression-parse": "^3.0.0",
@@ -11113,10 +11702,12 @@
         },
         "spdx-exceptions": {
             "version": "2.3.0",
+            "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
             "dev": true
         },
         "spdx-expression-parse": {
             "version": "3.0.1",
+            "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
             "dev": true,
             "requires": {
                 "spdx-exceptions": "^2.1.0",
@@ -11125,14 +11716,17 @@
         },
         "spdx-license-ids": {
             "version": "3.0.10",
+            "integrity": "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==",
             "dev": true
         },
         "specificity": {
             "version": "0.4.1",
+            "integrity": "sha512-1klA3Gi5PD1Wv9Q0wUoOQN1IWAuPu0D1U03ThXTr0cJ20+/iq2tHSDnK7Kk/0LXJ1ztUB2/1Os0wKmfyNgUQfg==",
             "dev": true
         },
         "sprintf-js": {
             "version": "1.0.3",
+            "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
             "dev": true
         },
         "sqlite3": {
@@ -11146,6 +11740,7 @@
         },
         "sshpk": {
             "version": "1.16.1",
+            "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
             "optional": true,
             "requires": {
                 "asn1": "~0.2.3",
@@ -11160,20 +11755,24 @@
             }
         },
         "statuses": {
-            "version": "1.5.0"
+            "version": "1.5.0",
+            "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
         },
         "string_decoder": {
             "version": "1.1.1",
+            "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
             "requires": {
                 "safe-buffer": "~5.1.0"
             }
         },
         "string-hash": {
             "version": "1.1.3",
+            "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=",
             "dev": true
         },
         "string-width": {
             "version": "1.0.2",
+            "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
             "requires": {
                 "code-point-at": "^1.0.0",
                 "is-fullwidth-code-point": "^1.0.0",
@@ -11181,10 +11780,12 @@
             },
             "dependencies": {
                 "ansi-regex": {
-                    "version": "2.1.1"
+                    "version": "2.1.1",
+                    "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
                 },
                 "strip-ansi": {
                     "version": "3.0.1",
+                    "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
                     "requires": {
                         "ansi-regex": "^2.0.0"
                     }
@@ -11193,6 +11794,7 @@
         },
         "strip-ansi": {
             "version": "6.0.0",
+            "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
             "dev": true,
             "requires": {
                 "ansi-regex": "^5.0.0"
@@ -11200,6 +11802,7 @@
         },
         "strip-indent": {
             "version": "3.0.0",
+            "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
             "dev": true,
             "requires": {
                 "min-indent": "^1.0.0"
@@ -11207,14 +11810,17 @@
         },
         "strip-json-comments": {
             "version": "3.1.1",
+            "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
             "dev": true
         },
         "style-search": {
             "version": "0.1.0",
+            "integrity": "sha1-eVjHk+R+MuB9K1yv5cC/jhLneQI=",
             "dev": true
         },
         "stylelint": {
             "version": "13.13.1",
+            "integrity": "sha512-Mv+BQr5XTUrKqAXmpqm6Ddli6Ief+AiPZkRsIrAoUKFuq/ElkUh9ZMYxXD0iQNZ5ADghZKLOWz1h7hTClB7zgQ==",
             "dev": true,
             "requires": {
                 "@stylelint/postcss-css-in-js": "^0.37.2",
@@ -11269,6 +11875,7 @@
             "dependencies": {
                 "ansi-styles": {
                     "version": "3.2.1",
+                    "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
                     "dev": true,
                     "requires": {
                         "color-convert": "^1.9.0"
@@ -11276,10 +11883,12 @@
                 },
                 "balanced-match": {
                     "version": "2.0.0",
+                    "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==",
                     "dev": true
                 },
                 "color-convert": {
                     "version": "1.9.3",
+                    "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
                     "dev": true,
                     "requires": {
                         "color-name": "1.1.3"
@@ -11287,26 +11896,32 @@
                 },
                 "color-name": {
                     "version": "1.1.3",
+                    "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
                     "dev": true
                 },
                 "escape-string-regexp": {
                     "version": "1.0.5",
+                    "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
                     "dev": true
                 },
                 "has-flag": {
                     "version": "3.0.0",
+                    "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
                     "dev": true
                 },
                 "ignore": {
                     "version": "5.1.8",
+                    "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
                     "dev": true
                 },
                 "is-fullwidth-code-point": {
                     "version": "3.0.0",
+                    "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
                     "dev": true
                 },
                 "postcss": {
                     "version": "7.0.36",
+                    "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==",
                     "dev": true,
                     "requires": {
                         "chalk": "^2.4.2",
@@ -11316,6 +11931,7 @@
                     "dependencies": {
                         "chalk": {
                             "version": "2.4.2",
+                            "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
                             "dev": true,
                             "requires": {
                                 "ansi-styles": "^3.2.1",
@@ -11325,6 +11941,7 @@
                             "dependencies": {
                                 "supports-color": {
                                     "version": "5.5.0",
+                                    "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
                                     "dev": true,
                                     "requires": {
                                         "has-flag": "^3.0.0"
@@ -11336,10 +11953,12 @@
                 },
                 "resolve-from": {
                     "version": "5.0.0",
+                    "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
                     "dev": true
                 },
                 "string-width": {
                     "version": "4.2.2",
+                    "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
                     "dev": true,
                     "requires": {
                         "emoji-regex": "^8.0.0",
@@ -11349,6 +11968,7 @@
                 },
                 "supports-color": {
                     "version": "6.1.0",
+                    "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
                     "dev": true,
                     "requires": {
                         "has-flag": "^3.0.0"
@@ -11358,11 +11978,12 @@
         },
         "stylelint-config-recommended": {
             "version": "5.0.0",
-            "dev": true,
-            "requires": {}
+            "integrity": "sha512-c8aubuARSu5A3vEHLBeOSJt1udOdS+1iue7BmJDTSXoCBmfEQmmWX+59vYIj3NQdJBY6a/QRv1ozVFpaB9jaqA==",
+            "dev": true
         },
         "stylelint-config-standard": {
             "version": "22.0.0",
+            "integrity": "sha512-uQVNi87SHjqTm8+4NIP5NMAyY/arXrBgimaaT7skvRfE9u3JKXRK9KBkbr4pVmeciuCcs64kAdjlxfq6Rur7Hw==",
             "dev": true,
             "requires": {
                 "stylelint-config-recommended": "^5.0.0"
@@ -11370,6 +11991,7 @@
         },
         "sugarss": {
             "version": "2.0.0",
+            "integrity": "sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ==",
             "dev": true,
             "requires": {
                 "postcss": "^7.0.2"
@@ -11377,6 +11999,7 @@
             "dependencies": {
                 "ansi-styles": {
                     "version": "3.2.1",
+                    "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
                     "dev": true,
                     "requires": {
                         "color-convert": "^1.9.0"
@@ -11384,6 +12007,7 @@
                 },
                 "chalk": {
                     "version": "2.4.2",
+                    "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
                     "dev": true,
                     "requires": {
                         "ansi-styles": "^3.2.1",
@@ -11393,6 +12017,7 @@
                     "dependencies": {
                         "supports-color": {
                             "version": "5.5.0",
+                            "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
                             "dev": true,
                             "requires": {
                                 "has-flag": "^3.0.0"
@@ -11402,6 +12027,7 @@
                 },
                 "color-convert": {
                     "version": "1.9.3",
+                    "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
                     "dev": true,
                     "requires": {
                         "color-name": "1.1.3"
@@ -11409,18 +12035,22 @@
                 },
                 "color-name": {
                     "version": "1.1.3",
+                    "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
                     "dev": true
                 },
                 "escape-string-regexp": {
                     "version": "1.0.5",
+                    "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
                     "dev": true
                 },
                 "has-flag": {
                     "version": "3.0.0",
+                    "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
                     "dev": true
                 },
                 "postcss": {
                     "version": "7.0.36",
+                    "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==",
                     "dev": true,
                     "requires": {
                         "chalk": "^2.4.2",
@@ -11430,6 +12060,7 @@
                 },
                 "supports-color": {
                     "version": "6.1.0",
+                    "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
                     "dev": true,
                     "requires": {
                         "has-flag": "^3.0.0"
@@ -11439,6 +12070,7 @@
         },
         "supports-color": {
             "version": "7.2.0",
+            "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
             "dev": true,
             "requires": {
                 "has-flag": "^4.0.0"
@@ -11446,14 +12078,17 @@
         },
         "svg-tags": {
             "version": "1.0.0",
+            "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=",
             "dev": true
         },
         "systemjs": {
             "version": "6.10.3",
+            "integrity": "sha512-mXwfLJdaADqWg1J5+Z0bGQEdcXSe+ePPTfzffMB29aVls5cXveRl0vneSV/19t3SfuUBsAraLP8W/g5u9cmYXA==",
             "dev": true
         },
         "table": {
             "version": "6.7.1",
+            "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==",
             "dev": true,
             "requires": {
                 "ajv": "^8.0.1",
@@ -11466,6 +12101,7 @@
             "dependencies": {
                 "ajv": {
                     "version": "8.6.2",
+                    "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==",
                     "dev": true,
                     "requires": {
                         "fast-deep-equal": "^3.1.1",
@@ -11476,14 +12112,17 @@
                 },
                 "is-fullwidth-code-point": {
                     "version": "3.0.0",
+                    "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
                     "dev": true
                 },
                 "json-schema-traverse": {
                     "version": "1.0.0",
+                    "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
                     "dev": true
                 },
                 "string-width": {
                     "version": "4.2.2",
+                    "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==",
                     "dev": true,
                     "requires": {
                         "emoji-regex": "^8.0.0",
@@ -11495,6 +12134,7 @@
         },
         "tar": {
             "version": "6.1.11",
+            "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==",
             "requires": {
                 "chownr": "^2.0.0",
                 "fs-minipass": "^2.0.0",
@@ -11505,24 +12145,29 @@
             },
             "dependencies": {
                 "yallist": {
-                    "version": "4.0.0"
+                    "version": "4.0.0",
+                    "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
                 }
             }
         },
         "tarn": {
-            "version": "3.0.1"
+            "version": "3.0.1",
+            "integrity": "sha512-6usSlV9KyHsspvwu2duKH+FMUhqJnAh6J5J/4MITl8s94iSUQTLkJggdiewKv4RyARQccnigV48Z+khiuVZDJw=="
         },
         "tcp-ping": {
-            "version": "0.1.1"
+            "version": "0.1.1",
+            "integrity": "sha1-At1/QrW/fXy3jVt6rO+hVf2PfAw="
         },
         "tdigest": {
             "version": "0.1.1",
+            "integrity": "sha1-Ljyyw56kSeVdHmzZEReszKRYgCE=",
             "requires": {
                 "bintrees": "1.0.1"
             }
         },
         "text-table": {
             "version": "0.2.0",
+            "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=",
             "dev": true
         },
         "thirty-two": {
@@ -11531,26 +12176,32 @@
             "integrity": "sha1-TKL//AKlEpDSdEueP1V2k8prYno="
         },
         "tildify": {
-            "version": "2.0.0"
+            "version": "2.0.0",
+            "integrity": "sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw=="
         },
         "timezones-list": {
-            "version": "3.0.1"
+            "version": "3.0.1",
+            "integrity": "sha512-yfOzyuVwzgD0LkldD3Epkr+JUdUIxEUL147Fa6ZgG/23KU28iOv3e3M7vQOCFMPyopAhDX7dqOLWttIP7tkTKg=="
         },
         "to-fast-properties": {
-            "version": "2.0.0"
+            "version": "2.0.0",
+            "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4="
         },
         "to-regex-range": {
             "version": "5.0.1",
+            "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
             "dev": true,
             "requires": {
                 "is-number": "^7.0.0"
             }
         },
         "toidentifier": {
-            "version": "1.0.0"
+            "version": "1.0.0",
+            "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw=="
         },
         "tough-cookie": {
             "version": "2.5.0",
+            "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
             "optional": true,
             "requires": {
                 "psl": "^1.1.28",
@@ -11559,10 +12210,12 @@
         },
         "trim-newlines": {
             "version": "3.0.1",
+            "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
             "dev": true
         },
         "trough": {
             "version": "1.0.5",
+            "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==",
             "dev": true
         },
         "tslib": {
@@ -11572,6 +12225,7 @@
         },
         "tunnel-agent": {
             "version": "0.6.0",
+            "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
             "optional": true,
             "requires": {
                 "safe-buffer": "^5.0.1"
@@ -11579,10 +12233,12 @@
         },
         "tweetnacl": {
             "version": "0.14.5",
+            "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
             "optional": true
         },
         "type-check": {
             "version": "0.4.0",
+            "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
             "dev": true,
             "requires": {
                 "prelude-ls": "^1.2.1"
@@ -11590,10 +12246,12 @@
         },
         "type-fest": {
             "version": "0.20.2",
+            "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
             "dev": true
         },
         "type-is": {
             "version": "1.6.18",
+            "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
             "requires": {
                 "media-typer": "0.3.0",
                 "mime-types": "~2.1.24"
@@ -11601,6 +12259,7 @@
         },
         "typedarray-to-buffer": {
             "version": "3.1.5",
+            "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==",
             "dev": true,
             "requires": {
                 "is-typedarray": "^1.0.0"
@@ -11608,10 +12267,12 @@
         },
         "typescript": {
             "version": "4.4.2",
+            "integrity": "sha512-gzP+t5W4hdy4c+68bfcv0t400HVJMMd2+H9B7gae1nQlBzCqvrXX+6GL/b3GAgyTH966pzrZ70/fRjwAtZksSQ==",
             "dev": true
         },
         "unified": {
             "version": "9.2.2",
+            "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==",
             "dev": true,
             "requires": {
                 "bail": "^1.0.0",
@@ -11624,12 +12285,14 @@
             "dependencies": {
                 "is-plain-obj": {
                     "version": "2.1.0",
+                    "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
                     "dev": true
                 }
             }
         },
         "unist-util-find-all-after": {
             "version": "3.0.2",
+            "integrity": "sha512-xaTC/AGZ0rIM2gM28YVRAFPIZpzbpDtU3dRmp7EXlNVA8ziQc4hY3H7BHXM1J49nEmiqc3svnqMReW+PGqbZKQ==",
             "dev": true,
             "requires": {
                 "unist-util-is": "^4.0.0"
@@ -11637,37 +12300,45 @@
         },
         "unist-util-is": {
             "version": "4.1.0",
+            "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==",
             "dev": true
         },
         "unist-util-stringify-position": {
             "version": "2.0.3",
+            "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
             "dev": true,
             "requires": {
                 "@types/unist": "^2.0.2"
             }
         },
         "unpipe": {
-            "version": "1.0.0"
+            "version": "1.0.0",
+            "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
         },
         "uri-js": {
             "version": "4.4.1",
+            "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
             "devOptional": true,
             "requires": {
                 "punycode": "^2.1.0"
             }
         },
         "util-deprecate": {
-            "version": "1.0.2"
+            "version": "1.0.2",
+            "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
         },
         "utils-merge": {
-            "version": "1.0.1"
+            "version": "1.0.1",
+            "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
         },
         "uuid": {
             "version": "3.4.0",
+            "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
             "optional": true
         },
         "v-pagination-3": {
             "version": "0.1.6",
+            "integrity": "sha512-82J8HnEIYtZijn6F3xhyP/ildI5K7Rv4Yu74VNfQWQsiPWTKntgVvZgBH8UPh/lFEjgWxty/M4N+YHvS+YbGzg==",
             "requires": {
                 "babel-plugin-add-module-exports": "^0.2.1",
                 "merge": "^2.1.1",
@@ -11676,10 +12347,12 @@
         },
         "v8-compile-cache": {
             "version": "2.3.0",
+            "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
             "dev": true
         },
         "validate-npm-package-license": {
             "version": "3.0.4",
+            "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
             "dev": true,
             "requires": {
                 "spdx-correct": "^3.0.0",
@@ -11687,10 +12360,12 @@
             }
         },
         "vary": {
-            "version": "1.1.2"
+            "version": "1.1.2",
+            "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
         },
         "verror": {
             "version": "1.10.0",
+            "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
             "optional": true,
             "requires": {
                 "assert-plus": "^1.0.0",
@@ -11700,12 +12375,14 @@
             "dependencies": {
                 "core-util-is": {
                     "version": "1.0.2",
+                    "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
                     "optional": true
                 }
             }
         },
         "vfile": {
             "version": "4.2.1",
+            "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==",
             "dev": true,
             "requires": {
                 "@types/unist": "^2.0.0",
@@ -11716,6 +12393,7 @@
         },
         "vfile-message": {
             "version": "2.0.4",
+            "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
             "dev": true,
             "requires": {
                 "@types/unist": "^2.0.0",
@@ -11724,6 +12402,7 @@
         },
         "vite": {
             "version": "2.5.3",
+            "integrity": "sha512-1wMDnjflvtTTkMov8O/Xb5+w1/VW/Gw8oCf8f6dqgHn8lMOEqq0SaPtFEQeikFcOKCfSbiU0nEi0LDIx6DNsaQ==",
             "dev": true,
             "requires": {
                 "esbuild": "^0.12.17",
@@ -11735,6 +12414,7 @@
         },
         "vue": {
             "version": "3.2.8",
+            "integrity": "sha512-x7lwdnOSkceHQUXRVVHBaZzcp6v7M2CYtSZH75zZaT1mTjB4plC4KZHKP/5jAvdqOLBHZGwDSMkWXm3YbAufrA==",
             "requires": {
                 "@vue/compiler-dom": "3.2.8",
                 "@vue/runtime-dom": "3.2.8",
@@ -11743,6 +12423,7 @@
         },
         "vue-chart-3": {
             "version": "0.5.8",
+            "integrity": "sha512-VJEBTdMgWOaYqekXtz4LVBIeYyIx3qDlQnFyY4Ao1GwizokYZBycCeRN3oKDcYbbZi5yxYqTy6+Tm+m+SOPUPA==",
             "requires": {
                 "@vue/runtime-core": "latest",
                 "@vue/runtime-dom": "latest",
@@ -11754,12 +12435,14 @@
             "dependencies": {
                 "@vue/reactivity": {
                     "version": "3.2.11",
+                    "integrity": "sha512-hEQstxPQbgGZq5qApzrvbDmRdK1KP96O/j4XrwT8fVkT1ytkFs4fH2xNEh9QKwXfybbQkLs77W7OfXCv5o6qbA==",
                     "requires": {
                         "@vue/shared": "3.2.11"
                     }
                 },
                 "@vue/runtime-core": {
                     "version": "3.2.11",
+                    "integrity": "sha512-horlxjWwSvModC87WdsWswzzHE5IexmKkQA65S5vFgP5hLUBW+HRyScDeuB/RRcFmqnf+ozacNCfap0kqcpODw==",
                     "requires": {
                         "@vue/reactivity": "3.2.11",
                         "@vue/shared": "3.2.11"
@@ -11767,6 +12450,7 @@
                 },
                 "@vue/runtime-dom": {
                     "version": "3.2.11",
+                    "integrity": "sha512-cOK1g0INdiCbds2xrrJKrrN+pDHuLz6esUs/crdEiupDuX7IeiMbdqrAQCkYHp5P1KLWcbGlkmwfVD7HQGii0Q==",
                     "requires": {
                         "@vue/runtime-core": "3.2.11",
                         "@vue/shared": "3.2.11",
@@ -11774,34 +12458,40 @@
                     },
                     "dependencies": {
                         "csstype": {
-                            "version": "2.6.17"
+                            "version": "2.6.17",
+                            "integrity": "sha512-u1wmTI1jJGzCJzWndZo8mk4wnPTZd1eOIYTYvuEyOQGfmDl3TrabCCfKnOC86FZwW/9djqTl933UF/cS425i9A=="
                         }
                     }
                 },
                 "@vue/shared": {
-                    "version": "3.2.11"
+                    "version": "3.2.11",
+                    "integrity": "sha512-ovfXAsSsCvV9JVceWjkqC/7OF5HbgLOtCWjCIosmPGG8lxbPuavhIxRH1dTx4Dg9xLgRTNLvI3pVxG4ItQZekg=="
                 },
                 "csstype": {
-                    "version": "3.0.8"
+                    "version": "3.0.8",
+                    "integrity": "sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw=="
                 },
                 "lodash": {
-                    "version": "4.17.21"
+                    "version": "4.17.21",
+                    "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
                 },
                 "nanoid": {
-                    "version": "3.1.25"
+                    "version": "3.1.25",
+                    "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q=="
                 }
             }
         },
         "vue-confirm-dialog": {
             "version": "1.0.2",
-            "requires": {}
+            "integrity": "sha512-gTo1bMDWOLd/6ihmWv8VlPxhc9QaKoE5YqlsKydUOfrrQ3Q3taljF6yI+1TMtAtJLrvZ8DYrePhgBhY1VCJzbQ=="
         },
         "vue-demi": {
             "version": "0.10.1",
-            "requires": {}
+            "integrity": "sha512-L6Oi+BvmMv6YXvqv5rJNCFHEKSVu7llpWWJczqmAQYOdmPPw5PNYoz1KKS//Fxhi+4QP64dsPjtmvnYGo1jemA=="
         },
         "vue-eslint-parser": {
             "version": "7.10.0",
+            "integrity": "sha512-7tc/ewS9Vq9Bn741pvpg8op2fWJPH3k32aL+jcIcWGCTzh/zXSdh7pZ5FV3W2aJancP9+ftPAv292zY5T5IPCg==",
             "dev": true,
             "requires": {
                 "debug": "^4.1.1",
@@ -11815,10 +12505,12 @@
             "dependencies": {
                 "eslint-visitor-keys": {
                     "version": "1.3.0",
+                    "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
                     "dev": true
                 },
                 "espree": {
                     "version": "6.2.1",
+                    "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==",
                     "dev": true,
                     "requires": {
                         "acorn": "^7.1.1",
@@ -11830,6 +12522,7 @@
         },
         "vue-i18n": {
             "version": "9.1.7",
+            "integrity": "sha512-ujuuDanoHqtEd4GejWrbG/fXE9nrP51ElsEGxp0WBHfv+/ki0/wyUqkO+4fLikki2obGtXdviTPH0VNpas5K6g==",
             "requires": {
                 "@intlify/core-base": "9.1.7",
                 "@intlify/shared": "9.1.7",
@@ -11838,7 +12531,8 @@
             }
         },
         "vue-multiselect": {
-            "version": "3.0.0-alpha.2"
+            "version": "3.0.0-alpha.2",
+            "integrity": "sha512-Xp9fGJECns45v+v8jXbCIsAkCybYkEg0lNwr7Z6HDUSMyx2TEIK2giipPE+qXiShEc1Ipn+ZtttH2iq9hwXP4Q=="
         },
         "vue-qrcode": {
             "version": "1.0.0",
@@ -11852,23 +12546,24 @@
                 "vue-demi": {
                     "version": "0.11.4",
                     "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.11.4.tgz",
-                    "integrity": "sha512-/3xFwzSykLW2HiiLie43a+FFgNOcokbBJ+fzvFXd0r2T8MYohqvphUyDQ8lbAwzQ3Dlcrb1c9ykifGkhSIAk6A==",
-                    "requires": {}
+                    "integrity": "sha512-/3xFwzSykLW2HiiLie43a+FFgNOcokbBJ+fzvFXd0r2T8MYohqvphUyDQ8lbAwzQ3Dlcrb1c9ykifGkhSIAk6A=="
                 }
             }
         },
         "vue-router": {
             "version": "4.0.11",
+            "integrity": "sha512-sha6I8fx9HWtvTrFZfxZkiQQBpqSeT+UCwauYjkdOQYRvwsGwimlQQE2ayqUwuuXGzquFpCPoXzYKWlzL4OuXg==",
             "requires": {
                 "@vue/devtools-api": "^6.0.0-beta.14"
             }
         },
         "vue-toastification": {
             "version": "2.0.0-rc.1",
-            "requires": {}
+            "integrity": "sha512-hjauv/FyesNZdwcr5m1SCyvu1JmlB+Ts5bTptDLDmsYYlj6Oqv8NYakiElpCF+Abwkn9J/AChh6FwkTL1HOb7Q=="
         },
         "which": {
             "version": "2.0.2",
+            "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
             "devOptional": true,
             "requires": {
                 "isexe": "^2.0.0"
@@ -11881,12 +12576,14 @@
         },
         "wide-align": {
             "version": "1.1.3",
+            "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
             "requires": {
                 "string-width": "^1.0.2 || 2"
             }
         },
         "word-wrap": {
             "version": "1.2.3",
+            "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
             "dev": true
         },
         "wrap-ansi": {
@@ -11956,10 +12653,12 @@
             }
         },
         "wrappy": {
-            "version": "1.0.2"
+            "version": "1.0.2",
+            "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
         },
         "write-file-atomic": {
             "version": "3.0.3",
+            "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
             "dev": true,
             "requires": {
                 "imurmurhash": "^0.1.4",
@@ -11970,10 +12669,11 @@
         },
         "ws": {
             "version": "7.4.6",
-            "requires": {}
+            "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A=="
         },
         "xmlhttprequest-ssl": {
-            "version": "2.0.0"
+            "version": "2.0.0",
+            "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A=="
         },
         "y18n": {
             "version": "4.0.3",
@@ -11982,10 +12682,12 @@
         },
         "yallist": {
             "version": "3.1.1",
+            "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
             "dev": true
         },
         "yaml": {
             "version": "1.10.2",
+            "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
             "dev": true
         },
         "yargs": {
@@ -12081,13 +12783,16 @@
         },
         "yargs-parser": {
             "version": "20.2.9",
+            "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
             "dev": true
         },
         "yeast": {
-            "version": "0.1.2"
+            "version": "0.1.2",
+            "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk="
         },
         "zwitch": {
             "version": "1.0.5",
+            "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==",
             "dev": true
         }
     }
diff --git a/src/util-frontend.js b/src/util-frontend.js
index 525a241a..333a12fb 100644
--- a/src/util-frontend.js
+++ b/src/util-frontend.js
@@ -30,8 +30,7 @@ export function timezoneList() {
                 time: getTimezoneOffset(timezone.tzCode),
             })
         } catch (e) {
-            console.error(e.message);
-            console.log("Skip this timezone");
+            console.log("Skip Timezone: " + timezone.tzCode);
         }
     }