Repository: stateful/vscode-runme
Pull request #629 (2023-06-21 19:51:50)

Add Runme authentication


Patch:
diff --git a/package-lock.json b/package-lock.json
index 1c838faf..363b8b2e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "runme",
-  "version": "1.5.4-edge.0",
+  "version": "1.6.1",
   "lockfileVersion": 2,
   "requires": true,
   "packages": {
     "": {
       "name": "runme",
-      "version": "1.5.4-edge.0",
+      "version": "1.6.1",
       "hasInstallScript": true,
       "license": "Apache-2.0",
       "dependencies": {
@@ -26,7 +26,7 @@
         "detect-port": "^1.5.1",
         "dotenv": "^16.0.3",
         "filenamify": "^6.0.0",
-        "get-port": "^6.1.2",
+        "get-port": "^7.0.0",
         "got": "^12.6.0",
         "graphql": "^16.6.0",
         "lit": "^2.7.4",
@@ -4811,15 +4811,15 @@
       }
     },
     "node_modules/@typescript-eslint/eslint-plugin": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.7.tgz",
-      "integrity": "sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.60.0.tgz",
+      "integrity": "sha512-78B+anHLF1TI8Jn/cD0Q00TBYdMgjdOn980JfAVa9yw5sop8nyTfVOQAv6LWywkOGLclDBtv5z3oxN4w7jxyNg==",
       "dev": true,
       "dependencies": {
         "@eslint-community/regexpp": "^4.4.0",
-        "@typescript-eslint/scope-manager": "5.59.7",
-        "@typescript-eslint/type-utils": "5.59.7",
-        "@typescript-eslint/utils": "5.59.7",
+        "@typescript-eslint/scope-manager": "5.60.0",
+        "@typescript-eslint/type-utils": "5.60.0",
+        "@typescript-eslint/utils": "5.60.0",
         "debug": "^4.3.4",
         "grapheme-splitter": "^1.0.4",
         "ignore": "^5.2.0",
@@ -4845,13 +4845,13 @@
       }
     },
     "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz",
-      "integrity": "sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.0.tgz",
+      "integrity": "sha512-hakuzcxPwXi2ihf9WQu1BbRj1e/Pd8ZZwVTG9kfbxAMZstKz8/9OoexIwnmLzShtsdap5U/CoQGRCWlSuPbYxQ==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "5.59.7",
-        "@typescript-eslint/visitor-keys": "5.59.7"
+        "@typescript-eslint/types": "5.60.0",
+        "@typescript-eslint/visitor-keys": "5.60.0"
       },
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -4862,9 +4862,9 @@
       }
     },
     "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz",
-      "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.0.tgz",
+      "integrity": "sha512-ascOuoCpNZBccFVNJRSC6rPq4EmJ2NkuoKnd6LDNyAQmdDnziAtxbCGWCbefG1CNzmDvd05zO36AmB7H8RzKPA==",
       "dev": true,
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -4875,12 +4875,12 @@
       }
     },
     "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz",
-      "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.0.tgz",
+      "integrity": "sha512-wm9Uz71SbCyhUKgcaPRauBdTegUyY/ZWl8gLwD/i/ybJqscrrdVSFImpvUz16BLPChIeKBK5Fa9s6KDQjsjyWw==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "5.59.7",
+        "@typescript-eslint/types": "5.60.0",
         "eslint-visitor-keys": "^3.3.0"
       },
       "engines": {
@@ -4936,13 +4936,13 @@
       }
     },
     "node_modules/@typescript-eslint/type-utils": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.7.tgz",
-      "integrity": "sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.60.0.tgz",
+      "integrity": "sha512-X7NsRQddORMYRFH7FWo6sA9Y/zbJ8s1x1RIAtnlj6YprbToTiQnM6vxcMu7iYhdunmoC0rUWlca13D5DVHkK2g==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/typescript-estree": "5.59.7",
-        "@typescript-eslint/utils": "5.59.7",
+        "@typescript-eslint/typescript-estree": "5.60.0",
+        "@typescript-eslint/utils": "5.60.0",
         "debug": "^4.3.4",
         "tsutils": "^3.21.0"
       },
@@ -4963,9 +4963,9 @@
       }
     },
     "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz",
-      "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.0.tgz",
+      "integrity": "sha512-ascOuoCpNZBccFVNJRSC6rPq4EmJ2NkuoKnd6LDNyAQmdDnziAtxbCGWCbefG1CNzmDvd05zO36AmB7H8RzKPA==",
       "dev": true,
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -4976,13 +4976,13 @@
       }
     },
     "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz",
-      "integrity": "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.0.tgz",
+      "integrity": "sha512-R43thAuwarC99SnvrBmh26tc7F6sPa2B3evkXp/8q954kYL6Ro56AwASYWtEEi+4j09GbiNAHqYwNNZuNlARGQ==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "5.59.7",
-        "@typescript-eslint/visitor-keys": "5.59.7",
+        "@typescript-eslint/types": "5.60.0",
+        "@typescript-eslint/visitor-keys": "5.60.0",
         "debug": "^4.3.4",
         "globby": "^11.1.0",
         "is-glob": "^4.0.3",
@@ -5003,12 +5003,12 @@
       }
     },
     "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz",
-      "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.0.tgz",
+      "integrity": "sha512-wm9Uz71SbCyhUKgcaPRauBdTegUyY/ZWl8gLwD/i/ybJqscrrdVSFImpvUz16BLPChIeKBK5Fa9s6KDQjsjyWw==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "5.59.7",
+        "@typescript-eslint/types": "5.60.0",
         "eslint-visitor-keys": "^3.3.0"
       },
       "engines": {
@@ -5060,17 +5060,17 @@
       }
     },
     "node_modules/@typescript-eslint/utils": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.7.tgz",
-      "integrity": "sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.60.0.tgz",
+      "integrity": "sha512-ba51uMqDtfLQ5+xHtwlO84vkdjrqNzOnqrnwbMHMRY8Tqeme8C2Q8Fc7LajfGR+e3/4LoYiWXUM6BpIIbHJ4hQ==",
       "dev": true,
       "dependencies": {
         "@eslint-community/eslint-utils": "^4.2.0",
         "@types/json-schema": "^7.0.9",
         "@types/semver": "^7.3.12",
-        "@typescript-eslint/scope-manager": "5.59.7",
-        "@typescript-eslint/types": "5.59.7",
-        "@typescript-eslint/typescript-estree": "5.59.7",
+        "@typescript-eslint/scope-manager": "5.60.0",
+        "@typescript-eslint/types": "5.60.0",
+        "@typescript-eslint/typescript-estree": "5.60.0",
         "eslint-scope": "^5.1.1",
         "semver": "^7.3.7"
       },
@@ -5086,13 +5086,13 @@
       }
     },
     "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz",
-      "integrity": "sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.0.tgz",
+      "integrity": "sha512-hakuzcxPwXi2ihf9WQu1BbRj1e/Pd8ZZwVTG9kfbxAMZstKz8/9OoexIwnmLzShtsdap5U/CoQGRCWlSuPbYxQ==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "5.59.7",
-        "@typescript-eslint/visitor-keys": "5.59.7"
+        "@typescript-eslint/types": "5.60.0",
+        "@typescript-eslint/visitor-keys": "5.60.0"
       },
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -5103,9 +5103,9 @@
       }
     },
     "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz",
-      "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.0.tgz",
+      "integrity": "sha512-ascOuoCpNZBccFVNJRSC6rPq4EmJ2NkuoKnd6LDNyAQmdDnziAtxbCGWCbefG1CNzmDvd05zO36AmB7H8RzKPA==",
       "dev": true,
       "engines": {
         "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -5116,13 +5116,13 @@
       }
     },
     "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz",
-      "integrity": "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.0.tgz",
+      "integrity": "sha512-R43thAuwarC99SnvrBmh26tc7F6sPa2B3evkXp/8q954kYL6Ro56AwASYWtEEi+4j09GbiNAHqYwNNZuNlARGQ==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "5.59.7",
-        "@typescript-eslint/visitor-keys": "5.59.7",
+        "@typescript-eslint/types": "5.60.0",
+        "@typescript-eslint/visitor-keys": "5.60.0",
         "debug": "^4.3.4",
         "globby": "^11.1.0",
         "is-glob": "^4.0.3",
@@ -5143,12 +5143,12 @@
       }
     },
     "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz",
-      "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.0.tgz",
+      "integrity": "sha512-wm9Uz71SbCyhUKgcaPRauBdTegUyY/ZWl8gLwD/i/ybJqscrrdVSFImpvUz16BLPChIeKBK5Fa9s6KDQjsjyWw==",
       "dev": true,
       "dependencies": {
-        "@typescript-eslint/types": "5.59.7",
+        "@typescript-eslint/types": "5.60.0",
         "eslint-visitor-keys": "^3.3.0"
       },
       "engines": {
@@ -6194,18 +6194,18 @@
       }
     },
     "node_modules/@wdio/cli": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.10.7.tgz",
-      "integrity": "sha512-HYKRxtdmjKXzO/ePpMWyG40jb4kuoR66xaIPXN0NOso3x2p27hxYHEb/teEYaxPTG3d6Rpk2PldGIX6qYA4wbg==",
+      "version": "8.11.2",
+      "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.11.2.tgz",
+      "integrity": "sha512-g1vuq+v1Ko//QQFDQsdf3Qs1BkON82NNGYN/ehUVZrvAcKwiIyfOG3WkzLxi8V4tPWbD+vsLbLQs/FRG+4gTag==",
       "dev": true,
       "dependencies": {
         "@types/node": "^20.1.1",
-        "@wdio/config": "8.10.7",
-        "@wdio/globals": "8.10.7",
-        "@wdio/logger": "8.10.6",
-        "@wdio/protocols": "8.10.2",
+        "@wdio/config": "8.11.0",
+        "@wdio/globals": "8.11.2",
+        "@wdio/logger": "8.11.0",
+        "@wdio/protocols": "8.11.0",
         "@wdio/types": "8.10.4",
-        "@wdio/utils": "8.10.7",
+        "@wdio/utils": "8.11.0",
         "async-exit-hook": "^2.0.1",
         "chalk": "^5.2.0",
         "chokidar": "^3.5.3",
@@ -6213,13 +6213,13 @@
         "ejs": "^3.1.9",
         "execa": "^7.1.1",
         "import-meta-resolve": "^3.0.0",
-        "inquirer": "9.2.6",
+        "inquirer": "9.2.7",
         "lodash.flattendeep": "^4.4.0",
         "lodash.pickby": "^4.6.0",
         "lodash.union": "^4.6.0",
         "read-pkg-up": "9.1.0",
         "recursive-readdir": "^2.2.3",
-        "webdriverio": "8.10.7",
+        "webdriverio": "8.11.2",
         "yargs": "^17.7.2",
         "yarn-install": "^1.0.0"
       },
@@ -6230,147 +6230,38 @@
         "node": "^16.13 || >=18"
       }
     },
-    "node_modules/@wdio/cli/node_modules/chalk": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-      "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-      "dev": true,
-      "engines": {
-        "node": "^12.17.0 || ^14.13 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/@wdio/cli/node_modules/devtools": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/devtools/-/devtools-8.10.7.tgz",
-      "integrity": "sha512-picJDxsjpaOW7gnQjcQVGDXvxuP1RZ4VNJpvJ+qiy86Gf3l4FGLKYkpJJFAMsIugL0XPs89bIVhjbtIv5NGL1w==",
+    "node_modules/@wdio/cli/node_modules/@wdio/config": {
+      "version": "8.11.0",
+      "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.11.0.tgz",
+      "integrity": "sha512-nBQXsXbPCjddtI/3rAK5yFs3eD3f0T3lZMivweTkLLR7GKBxGjiFoBjXtfqUrHJYa+2uwfXrwxo6y+dA6fVbuw==",
       "dev": true,
       "dependencies": {
-        "@types/node": "^20.1.0",
-        "@wdio/config": "8.10.7",
-        "@wdio/logger": "8.10.6",
-        "@wdio/protocols": "8.10.2",
+        "@wdio/logger": "8.11.0",
         "@wdio/types": "8.10.4",
-        "@wdio/utils": "8.10.7",
-        "chrome-launcher": "^0.15.0",
-        "edge-paths": "^3.0.5",
+        "@wdio/utils": "8.11.0",
+        "decamelize": "^6.0.0",
+        "deepmerge-ts": "^5.0.0",
+        "glob": "^10.2.2",
         "import-meta-resolve": "^3.0.0",
-        "puppeteer-core": "20.3.0",
-        "query-selector-shadow-dom": "^1.0.0",
-        "ua-parser-js": "^1.0.1",
-        "uuid": "^9.0.0",
-        "which": "^3.0.0"
+        "read-pkg-up": "^9.1.0"
       },
       "engines": {
         "node": "^16.13 || >=18"
       }
     },
-    "node_modules/@wdio/cli/node_modules/devtools-protocol": {
-      "version": "0.0.1149535",
-      "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1149535.tgz",
-      "integrity": "sha512-vpM8tGaYz2nrN9n8rvUEhQCgU05ocejO5WIJySsftEHxUahQ/fWuNyPxXuQNBEmaISYyMZkxCunhjtSEyBl/Dg==",
-      "dev": true
-    },
-    "node_modules/@wdio/cli/node_modules/is-plain-obj": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
-      "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/@wdio/cli/node_modules/minimatch": {
-      "version": "9.0.1",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
-      "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
+    "node_modules/@wdio/cli/node_modules/chalk": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
+      "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
       "dev": true,
-      "dependencies": {
-        "brace-expansion": "^2.0.1"
-      },
       "engines": {
-        "node": ">=16 || 14 >=14.17"
+        "node": "^12.17.0 || ^14.13 || >=16.0.0"
       },
       "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/@wdio/cli/node_modules/webdriverio": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.10.7.tgz",
-      "integrity": "sha512-TkkPE3zBxdLRdcsNLqHct2OARnfMYB9/A0ri4sccmc3C3dVFiW99NAstN88nzD1SYzXAbxALRuITVd5oswqqhg==",
-      "dev": true,
-      "dependencies": {
-        "@types/node": "^20.1.0",
-        "@wdio/config": "8.10.7",
-        "@wdio/logger": "8.10.6",
-        "@wdio/protocols": "8.10.2",
-        "@wdio/repl": "8.10.1",
-        "@wdio/types": "8.10.4",
-        "@wdio/utils": "8.10.7",
-        "archiver": "^5.0.0",
-        "aria-query": "^5.0.0",
-        "css-shorthand-properties": "^1.1.1",
-        "css-value": "^0.0.1",
-        "devtools": "8.10.7",
-        "devtools-protocol": "^0.0.1149535",
-        "grapheme-splitter": "^1.0.2",
-        "import-meta-resolve": "^3.0.0",
-        "is-plain-obj": "^4.1.0",
-        "lodash.clonedeep": "^4.5.0",
-        "lodash.zip": "^4.2.0",
-        "minimatch": "^9.0.0",
-        "puppeteer-core": "20.3.0",
-        "query-selector-shadow-dom": "^1.0.0",
-        "resq": "^1.9.1",
-        "rgb2hex": "0.2.5",
-        "serialize-error": "^8.0.0",
-        "webdriver": "8.10.7"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/@wdio/cli/node_modules/which": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz",
-      "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==",
-      "dev": true,
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "node-which": "bin/which.js"
-      },
-      "engines": {
-        "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
-      }
-    },
-    "node_modules/@wdio/config": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.10.7.tgz",
-      "integrity": "sha512-m7JX9X/RPM+4KZQkSUhPHXeS3PJJky0UB62ZLh28TYCzVxEKNq1gFb6Cvqfn+w6Ym/UCFBaZzDrRLLXUAgUifw==",
-      "dev": true,
-      "dependencies": {
-        "@wdio/logger": "8.10.6",
-        "@wdio/types": "8.10.4",
-        "@wdio/utils": "8.10.7",
-        "decamelize": "^6.0.0",
-        "deepmerge-ts": "^5.0.0",
-        "glob": "^10.2.2",
-        "import-meta-resolve": "^3.0.0",
-        "read-pkg-up": "^9.1.0"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
+        "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
-    "node_modules/@wdio/config/node_modules/foreground-child": {
+    "node_modules/@wdio/cli/node_modules/foreground-child": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
       "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==",
@@ -6386,10 +6277,10 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/@wdio/config/node_modules/glob": {
-      "version": "10.2.6",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.6.tgz",
-      "integrity": "sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA==",
+    "node_modules/@wdio/cli/node_modules/glob": {
+      "version": "10.3.0",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.0.tgz",
+      "integrity": "sha512-AQ1/SB9HH0yCx1jXAT4vmCbTOPe5RQ+kCurjbel5xSCGhebumUv+GJZfa1rEqor3XIViqwSEmlkZCQD43RWrBg==",
       "dev": true,
       "dependencies": {
         "foreground-child": "^3.1.0",
@@ -6408,10 +6299,10 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/@wdio/config/node_modules/minimatch": {
-      "version": "9.0.1",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
-      "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
+    "node_modules/@wdio/cli/node_modules/minimatch": {
+      "version": "9.0.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz",
+      "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==",
       "dev": true,
       "dependencies": {
         "brace-expansion": "^2.0.1"
@@ -6423,7 +6314,7 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/@wdio/config/node_modules/minipass": {
+    "node_modules/@wdio/cli/node_modules/minipass": {
       "version": "6.0.2",
       "resolved": "https://registry.npmjs.org/minipass/-/minipass-6.0.2.tgz",
       "integrity": "sha512-MzWSV5nYVT7mVyWCwn2o7JH13w2TBRmmSqSRCKzTw+lmft9X4z+3wjvs06Tzijo5z4W/kahUCDpRXTF+ZrmF/w==",
@@ -6432,7 +6323,7 @@
         "node": ">=16 || 14 >=14.17"
       }
     },
-    "node_modules/@wdio/config/node_modules/signal-exit": {
+    "node_modules/@wdio/cli/node_modules/signal-exit": {
       "version": "4.0.2",
       "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz",
       "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==",
@@ -6445,131 +6336,16 @@
       }
     },
     "node_modules/@wdio/globals": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.10.7.tgz",
-      "integrity": "sha512-f+oBuQjJAOXoWwUffjbQk26gNGqQ4d8dnB6fVW7C/WwhuButKwm4pyBEp0RpU5G3a5pYn0bQP95cziuozTU1rg==",
+      "version": "8.11.2",
+      "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.11.2.tgz",
+      "integrity": "sha512-oaPyGLmWOHQLYtT6Jn3mtZBSYyWxau6ncBDLPJDUwOxufi3tfT9DOen+65OGBK55GfjrCAZOSGAJ13mN/swIQQ==",
       "dev": true,
       "engines": {
         "node": "^16.13 || >=18"
       },
       "optionalDependencies": {
-        "expect-webdriverio": "^4.0.1",
-        "webdriverio": "8.10.7"
-      }
-    },
-    "node_modules/@wdio/globals/node_modules/devtools": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/devtools/-/devtools-8.10.7.tgz",
-      "integrity": "sha512-picJDxsjpaOW7gnQjcQVGDXvxuP1RZ4VNJpvJ+qiy86Gf3l4FGLKYkpJJFAMsIugL0XPs89bIVhjbtIv5NGL1w==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "@types/node": "^20.1.0",
-        "@wdio/config": "8.10.7",
-        "@wdio/logger": "8.10.6",
-        "@wdio/protocols": "8.10.2",
-        "@wdio/types": "8.10.4",
-        "@wdio/utils": "8.10.7",
-        "chrome-launcher": "^0.15.0",
-        "edge-paths": "^3.0.5",
-        "import-meta-resolve": "^3.0.0",
-        "puppeteer-core": "20.3.0",
-        "query-selector-shadow-dom": "^1.0.0",
-        "ua-parser-js": "^1.0.1",
-        "uuid": "^9.0.0",
-        "which": "^3.0.0"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/@wdio/globals/node_modules/devtools-protocol": {
-      "version": "0.0.1149535",
-      "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1149535.tgz",
-      "integrity": "sha512-vpM8tGaYz2nrN9n8rvUEhQCgU05ocejO5WIJySsftEHxUahQ/fWuNyPxXuQNBEmaISYyMZkxCunhjtSEyBl/Dg==",
-      "dev": true,
-      "optional": true
-    },
-    "node_modules/@wdio/globals/node_modules/is-plain-obj": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
-      "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
-      "dev": true,
-      "optional": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/@wdio/globals/node_modules/minimatch": {
-      "version": "9.0.1",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
-      "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "brace-expansion": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/@wdio/globals/node_modules/webdriverio": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.10.7.tgz",
-      "integrity": "sha512-TkkPE3zBxdLRdcsNLqHct2OARnfMYB9/A0ri4sccmc3C3dVFiW99NAstN88nzD1SYzXAbxALRuITVd5oswqqhg==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "@types/node": "^20.1.0",
-        "@wdio/config": "8.10.7",
-        "@wdio/logger": "8.10.6",
-        "@wdio/protocols": "8.10.2",
-        "@wdio/repl": "8.10.1",
-        "@wdio/types": "8.10.4",
-        "@wdio/utils": "8.10.7",
-        "archiver": "^5.0.0",
-        "aria-query": "^5.0.0",
-        "css-shorthand-properties": "^1.1.1",
-        "css-value": "^0.0.1",
-        "devtools": "8.10.7",
-        "devtools-protocol": "^0.0.1149535",
-        "grapheme-splitter": "^1.0.2",
-        "import-meta-resolve": "^3.0.0",
-        "is-plain-obj": "^4.1.0",
-        "lodash.clonedeep": "^4.5.0",
-        "lodash.zip": "^4.2.0",
-        "minimatch": "^9.0.0",
-        "puppeteer-core": "20.3.0",
-        "query-selector-shadow-dom": "^1.0.0",
-        "resq": "^1.9.1",
-        "rgb2hex": "0.2.5",
-        "serialize-error": "^8.0.0",
-        "webdriver": "8.10.7"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/@wdio/globals/node_modules/which": {
-      "version": "3.0.1",
-      "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz",
-      "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==",
-      "dev": true,
-      "optional": true,
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "node-which": "bin/which.js"
-      },
-      "engines": {
-        "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
+        "expect-webdriverio": "^4.2.5",
+        "webdriverio": "8.11.2"
       }
     },
     "node_modules/@wdio/local-runner": {
@@ -6591,7 +6367,7 @@
         "node": "^16.13 || >=18"
       }
     },
-    "node_modules/@wdio/local-runner/node_modules/@wdio/logger": {
+    "node_modules/@wdio/logger": {
       "version": "8.11.0",
       "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
       "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
@@ -6606,60 +6382,6 @@
         "node": "^16.13 || >=18"
       }
     },
-    "node_modules/@wdio/local-runner/node_modules/ansi-regex": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-      }
-    },
-    "node_modules/@wdio/local-runner/node_modules/chalk": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-      "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-      "dev": true,
-      "engines": {
-        "node": "^12.17.0 || ^14.13 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/@wdio/local-runner/node_modules/strip-ansi": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-      "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-      }
-    },
-    "node_modules/@wdio/logger": {
-      "version": "8.10.6",
-      "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.10.6.tgz",
-      "integrity": "sha512-pJYKecNYS0vu0FxDaii6MYQlYkORDLGdRWi70hrihH20sMZofzMA1tvzRMRk1VTrsUUE4TLJXKdmT2JRMN+OPw==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^5.1.2",
-        "loglevel": "^1.6.0",
-        "loglevel-plugin-prefix": "^0.8.4",
-        "strip-ansi": "^7.1.0"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
     "node_modules/@wdio/logger/node_modules/ansi-regex": {
       "version": "6.0.1",
       "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
@@ -6716,79 +6438,10 @@
         "node": "^16.13 || >=18"
       }
     },
-    "node_modules/@wdio/mocha-framework/node_modules/@wdio/logger": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-      "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^5.1.2",
-        "loglevel": "^1.6.0",
-        "loglevel-plugin-prefix": "^0.8.4",
-        "strip-ansi": "^7.1.0"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/@wdio/mocha-framework/node_modules/@wdio/utils": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz",
-      "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==",
-      "dev": true,
-      "dependencies": {
-        "@wdio/logger": "8.11.0",
-        "@wdio/types": "8.10.4",
-        "import-meta-resolve": "^3.0.0",
-        "p-iteration": "^1.1.8"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/@wdio/mocha-framework/node_modules/ansi-regex": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-      }
-    },
-    "node_modules/@wdio/mocha-framework/node_modules/chalk": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-      "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-      "dev": true,
-      "engines": {
-        "node": "^12.17.0 || ^14.13 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/@wdio/mocha-framework/node_modules/strip-ansi": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-      "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-      }
-    },
     "node_modules/@wdio/protocols": {
-      "version": "8.10.2",
-      "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.10.2.tgz",
-      "integrity": "sha512-Iv7Nqq6YsMQR9qvOM2mswUcKwx7bdx3cWVSmbMc8hwGJuNCBI+BP1fzmD9OidUftd1CQNvfugsG8Vq8vQWRyGg==",
+      "version": "8.11.0",
+      "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.11.0.tgz",
+      "integrity": "sha512-eXTMYt/XoaX53H/Q2qmsn1uWthIC5aSTGtX9YyXD/AkagG2hXeX3lLmzNWBaSIvKR+vWXRYbg3Y/7IvL2s25Wg==",
       "dev": true
     },
     "node_modules/@wdio/repl": {
@@ -6820,60 +6473,6 @@
         "node": "^16.13 || >=18"
       }
     },
-    "node_modules/@wdio/reporter/node_modules/@wdio/logger": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-      "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^5.1.2",
-        "loglevel": "^1.6.0",
-        "loglevel-plugin-prefix": "^0.8.4",
-        "strip-ansi": "^7.1.0"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/@wdio/reporter/node_modules/ansi-regex": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-      }
-    },
-    "node_modules/@wdio/reporter/node_modules/chalk": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-      "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-      "dev": true,
-      "engines": {
-        "node": "^12.17.0 || ^14.13 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/@wdio/reporter/node_modules/strip-ansi": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-      "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-      }
-    },
     "node_modules/@wdio/runner": {
       "version": "8.11.2",
       "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-8.11.2.tgz",
@@ -6915,79 +6514,6 @@
         "node": "^16.13 || >=18"
       }
     },
-    "node_modules/@wdio/runner/node_modules/@wdio/globals": {
-      "version": "8.11.2",
-      "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.11.2.tgz",
-      "integrity": "sha512-oaPyGLmWOHQLYtT6Jn3mtZBSYyWxau6ncBDLPJDUwOxufi3tfT9DOen+65OGBK55GfjrCAZOSGAJ13mN/swIQQ==",
-      "dev": true,
-      "engines": {
-        "node": "^16.13 || >=18"
-      },
-      "optionalDependencies": {
-        "expect-webdriverio": "^4.2.5",
-        "webdriverio": "8.11.2"
-      }
-    },
-    "node_modules/@wdio/runner/node_modules/@wdio/logger": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-      "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^5.1.2",
-        "loglevel": "^1.6.0",
-        "loglevel-plugin-prefix": "^0.8.4",
-        "strip-ansi": "^7.1.0"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/@wdio/runner/node_modules/@wdio/protocols": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.11.0.tgz",
-      "integrity": "sha512-eXTMYt/XoaX53H/Q2qmsn1uWthIC5aSTGtX9YyXD/AkagG2hXeX3lLmzNWBaSIvKR+vWXRYbg3Y/7IvL2s25Wg==",
-      "dev": true
-    },
-    "node_modules/@wdio/runner/node_modules/@wdio/utils": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz",
-      "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==",
-      "dev": true,
-      "dependencies": {
-        "@wdio/logger": "8.11.0",
-        "@wdio/types": "8.10.4",
-        "import-meta-resolve": "^3.0.0",
-        "p-iteration": "^1.1.8"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/@wdio/runner/node_modules/ansi-regex": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-      }
-    },
-    "node_modules/@wdio/runner/node_modules/chalk": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-      "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-      "dev": true,
-      "engines": {
-        "node": "^12.17.0 || ^14.13 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
     "node_modules/@wdio/runner/node_modules/foreground-child": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
@@ -7062,21 +6588,6 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/@wdio/runner/node_modules/strip-ansi": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-      "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-      }
-    },
     "node_modules/@wdio/runner/node_modules/webdriver": {
       "version": "8.11.1",
       "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.11.1.tgz",
@@ -7140,12 +6651,12 @@
       }
     },
     "node_modules/@wdio/utils": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.10.7.tgz",
-      "integrity": "sha512-G9r/bQl4J25WPKeW0e+27gqNvG+x7MyZEOICl6SwyBe0SqO7JBFOBARx4oUEp2zQYmnCRNtCrHa7yM/O4OPuKA==",
+      "version": "8.11.0",
+      "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz",
+      "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==",
       "dev": true,
       "dependencies": {
-        "@wdio/logger": "8.10.6",
+        "@wdio/logger": "8.11.0",
         "@wdio/types": "8.10.4",
         "import-meta-resolve": "^3.0.0",
         "p-iteration": "^1.1.8"
@@ -10365,66 +9876,6 @@
         "node": "^16.13 || >=18"
       }
     },
-    "node_modules/devtools/node_modules/@wdio/logger": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-      "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^5.1.2",
-        "loglevel": "^1.6.0",
-        "loglevel-plugin-prefix": "^0.8.4",
-        "strip-ansi": "^7.1.0"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/devtools/node_modules/@wdio/protocols": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.11.0.tgz",
-      "integrity": "sha512-eXTMYt/XoaX53H/Q2qmsn1uWthIC5aSTGtX9YyXD/AkagG2hXeX3lLmzNWBaSIvKR+vWXRYbg3Y/7IvL2s25Wg==",
-      "dev": true
-    },
-    "node_modules/devtools/node_modules/@wdio/utils": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz",
-      "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==",
-      "dev": true,
-      "dependencies": {
-        "@wdio/logger": "8.11.0",
-        "@wdio/types": "8.10.4",
-        "import-meta-resolve": "^3.0.0",
-        "p-iteration": "^1.1.8"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/devtools/node_modules/ansi-regex": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-      }
-    },
-    "node_modules/devtools/node_modules/chalk": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-      "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-      "dev": true,
-      "engines": {
-        "node": "^12.17.0 || ^14.13 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
     "node_modules/devtools/node_modules/foreground-child": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
@@ -10499,21 +9950,6 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/devtools/node_modules/strip-ansi": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-      "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-      }
-    },
     "node_modules/devtools/node_modules/which": {
       "version": "3.0.1",
       "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz",
@@ -10625,9 +10061,9 @@
       }
     },
     "node_modules/dotenv": {
-      "version": "16.1.4",
-      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.4.tgz",
-      "integrity": "sha512-m55RtE8AsPeJBpOIFKihEmqUcoVncQIwo7x9U8ZwLEZw9ZpXboz2c+rvog+jUaJvVrZ5kBOeYQBX5+8Aa/OZQw==",
+      "version": "16.3.1",
+      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz",
+      "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==",
       "engines": {
         "node": ">=12"
       },
@@ -13755,11 +13191,11 @@
       }
     },
     "node_modules/get-port": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/get-port/-/get-port-6.1.2.tgz",
-      "integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==",
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.0.0.tgz",
+      "integrity": "sha512-mDHFgApoQd+azgMdwylJrv2DX47ywGq1i5VFJE7fZ0dttNq3iQMfsU4IvEgBHojA3KqEudyu7Vq+oN8kNaNkWw==",
       "engines": {
-        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+        "node": ">=16"
       },
       "funding": {
         "url": "https://github.com/sponsors/sindresorhus"
@@ -14069,9 +13505,9 @@
       "dev": true
     },
     "node_modules/graphql": {
-      "version": "16.6.0",
-      "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz",
-      "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw==",
+      "version": "16.7.1",
+      "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.7.1.tgz",
+      "integrity": "sha512-DRYR9tf+UGU0KOsMcKAlXeFfX89UiiIZ0dRU3mR0yJfu6OjZqUcp68NnFLnqQU5RexygFoDy1EW+ccOYcPfmHg==",
       "engines": {
         "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0"
       }
@@ -14602,9 +14038,9 @@
       "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q=="
     },
     "node_modules/inquirer": {
-      "version": "9.2.6",
-      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.6.tgz",
-      "integrity": "sha512-y71l237eJJKS4rl7sQcEUiMhrR0pB/ZnRMMTxLpjJhWL4hdWCT03a6jJnC1w6qIPSRZWEozuieGt3v7XaEJYFw==",
+      "version": "9.2.7",
+      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.7.tgz",
+      "integrity": "sha512-Bf52lnfvNxGPJPltiNO2tLBp3zC339KNlGMqOkW+dsvNikBhcVDK5kqU2lVX2FTPzuXUFX5WJDlsw//w3ZwoTw==",
       "dev": true,
       "dependencies": {
         "ansi-escapes": "^4.3.2",
@@ -18438,9 +17874,9 @@
       "dev": true
     },
     "node_modules/octokit": {
-      "version": "2.0.22",
-      "resolved": "https://registry.npmjs.org/octokit/-/octokit-2.0.22.tgz",
-      "integrity": "sha512-QBgGSB+odZ5o3ysLy5d2Qvwwx5+GU1zLVgkgpy3o4XocmrD/YInaIVUCA6nR8jUmdf5lgyyiYPyxRt0UrNwqMQ==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/octokit/-/octokit-2.1.0.tgz",
+      "integrity": "sha512-Pxi6uKTjBRZWgAwsw1NgHdRlL+QASCN35OYS7X79o7PtBME0CLXEroZmPtEwlWZbPTP+iDbEy2wCbSOgm0uGIQ==",
       "dependencies": {
         "@octokit/app": "^13.1.5",
         "@octokit/core": "^4.2.1",
@@ -18449,6 +17885,7 @@
         "@octokit/plugin-rest-endpoint-methods": "^7.1.1",
         "@octokit/plugin-retry": "^4.1.3",
         "@octokit/plugin-throttling": "^5.2.2",
+        "@octokit/request-error": "^v3.0.3",
         "@octokit/types": "^9.2.2"
       },
       "engines": {
@@ -20795,6 +20232,18 @@
         "runme2": "bin/runme2.js"
       }
     },
+    "node_modules/runme/node_modules/get-port": {
+      "version": "6.1.2",
+      "resolved": "https://registry.npmjs.org/get-port/-/get-port-6.1.2.tgz",
+      "integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==",
+      "dev": true,
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/runme/node_modules/tar-fs": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
@@ -20946,9 +20395,9 @@
       "dev": true
     },
     "node_modules/semver": {
-      "version": "7.5.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
-      "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
+      "version": "7.5.3",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
+      "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
       "dependencies": {
         "lru-cache": "^6.0.0"
       },
@@ -23949,6 +23398,18 @@
         }
       }
     },
+    "node_modules/wdio-vscode-service/node_modules/get-port": {
+      "version": "6.1.2",
+      "resolved": "https://registry.npmjs.org/get-port/-/get-port-6.1.2.tgz",
+      "integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==",
+      "dev": true,
+      "engines": {
+        "node": "^12.20.0 || ^14.13.1 || >=16.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
     "node_modules/wdio-vscode-service/node_modules/slash": {
       "version": "5.0.1",
       "resolved": "https://registry.npmjs.org/slash/-/slash-5.0.1.tgz",
@@ -23988,28 +23449,6 @@
       "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz",
       "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA=="
     },
-    "node_modules/webdriver": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.10.7.tgz",
-      "integrity": "sha512-pBy29S9e8IYKYHfS0gp91Jp9SUvXJQckJKJdj+VNLNL9toSFo10N7xRpv8W1f7HkniXrgESi9GHYNyc1J/5lLA==",
-      "dev": true,
-      "dependencies": {
-        "@types/node": "^20.1.0",
-        "@types/ws": "^8.5.3",
-        "@wdio/config": "8.10.7",
-        "@wdio/logger": "8.10.6",
-        "@wdio/protocols": "8.10.2",
-        "@wdio/types": "8.10.4",
-        "@wdio/utils": "8.10.7",
-        "deepmerge-ts": "^5.0.0",
-        "got": "^ 12.6.1",
-        "ky": "^0.33.0",
-        "ws": "^8.8.0"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
     "node_modules/webdriverio": {
       "version": "8.11.2",
       "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.11.2.tgz",
@@ -24065,66 +23504,6 @@
         "node": "^16.13 || >=18"
       }
     },
-    "node_modules/webdriverio/node_modules/@wdio/logger": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-      "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-      "dev": true,
-      "dependencies": {
-        "chalk": "^5.1.2",
-        "loglevel": "^1.6.0",
-        "loglevel-plugin-prefix": "^0.8.4",
-        "strip-ansi": "^7.1.0"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/webdriverio/node_modules/@wdio/protocols": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.11.0.tgz",
-      "integrity": "sha512-eXTMYt/XoaX53H/Q2qmsn1uWthIC5aSTGtX9YyXD/AkagG2hXeX3lLmzNWBaSIvKR+vWXRYbg3Y/7IvL2s25Wg==",
-      "dev": true
-    },
-    "node_modules/webdriverio/node_modules/@wdio/utils": {
-      "version": "8.11.0",
-      "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz",
-      "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==",
-      "dev": true,
-      "dependencies": {
-        "@wdio/logger": "8.11.0",
-        "@wdio/types": "8.10.4",
-        "import-meta-resolve": "^3.0.0",
-        "p-iteration": "^1.1.8"
-      },
-      "engines": {
-        "node": "^16.13 || >=18"
-      }
-    },
-    "node_modules/webdriverio/node_modules/ansi-regex": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-      "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-      "dev": true,
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-regex?sponsor=1"
-      }
-    },
-    "node_modules/webdriverio/node_modules/chalk": {
-      "version": "5.2.0",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-      "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-      "dev": true,
-      "engines": {
-        "node": "^12.17.0 || ^14.13 || >=16.0.0"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
     "node_modules/webdriverio/node_modules/foreground-child": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
@@ -24211,21 +23590,6 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/webdriverio/node_modules/strip-ansi": {
-      "version": "7.1.0",
-      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-      "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-      "dev": true,
-      "dependencies": {
-        "ansi-regex": "^6.0.1"
-      },
-      "engines": {
-        "node": ">=12"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/strip-ansi?sponsor=1"
-      }
-    },
     "node_modules/webdriverio/node_modules/webdriver": {
       "version": "8.11.1",
       "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.11.1.tgz",
@@ -24254,9 +23618,9 @@
       "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
     },
     "node_modules/webpack": {
-      "version": "5.87.0",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.87.0.tgz",
-      "integrity": "sha512-GOu1tNbQ7p1bDEoFRs2YPcfyGs8xq52yyPBZ3m2VGnXGtV9MxjrkABHm4V9Ia280OefsSLzvbVoXcfLxjKY/Iw==",
+      "version": "5.88.0",
+      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.0.tgz",
+      "integrity": "sha512-O3jDhG5e44qIBSi/P6KpcCcH7HD+nYIHVBhdWFxcLOcIGN8zGo5nqF3BjyNCxIh4p1vFdNnreZv2h2KkoAw3lw==",
       "dev": true,
       "dependencies": {
         "@types/eslint-scope": "^3.7.3",
@@ -28794,15 +28158,15 @@
       }
     },
     "@typescript-eslint/eslint-plugin": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.59.7.tgz",
-      "integrity": "sha512-BL+jYxUFIbuYwy+4fF86k5vdT9lT0CNJ6HtwrIvGh0PhH8s0yy5rjaKH2fDCrz5ITHy07WCzVGNvAmjJh4IJFA==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.60.0.tgz",
+      "integrity": "sha512-78B+anHLF1TI8Jn/cD0Q00TBYdMgjdOn980JfAVa9yw5sop8nyTfVOQAv6LWywkOGLclDBtv5z3oxN4w7jxyNg==",
       "dev": true,
       "requires": {
         "@eslint-community/regexpp": "^4.4.0",
-        "@typescript-eslint/scope-manager": "5.59.7",
-        "@typescript-eslint/type-utils": "5.59.7",
-        "@typescript-eslint/utils": "5.59.7",
+        "@typescript-eslint/scope-manager": "5.60.0",
+        "@typescript-eslint/type-utils": "5.60.0",
+        "@typescript-eslint/utils": "5.60.0",
         "debug": "^4.3.4",
         "grapheme-splitter": "^1.0.4",
         "ignore": "^5.2.0",
@@ -28812,28 +28176,28 @@
       },
       "dependencies": {
         "@typescript-eslint/scope-manager": {
-          "version": "5.59.7",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz",
-          "integrity": "sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==",
+          "version": "5.60.0",
+          "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.0.tgz",
+          "integrity": "sha512-hakuzcxPwXi2ihf9WQu1BbRj1e/Pd8ZZwVTG9kfbxAMZstKz8/9OoexIwnmLzShtsdap5U/CoQGRCWlSuPbYxQ==",
           "dev": true,
           "requires": {
-            "@typescript-eslint/types": "5.59.7",
-            "@typescript-eslint/visitor-keys": "5.59.7"
+            "@typescript-eslint/types": "5.60.0",
+            "@typescript-eslint/visitor-keys": "5.60.0"
           }
         },
         "@typescript-eslint/types": {
-          "version": "5.59.7",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz",
-          "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==",
+          "version": "5.60.0",
+          "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.0.tgz",
+          "integrity": "sha512-ascOuoCpNZBccFVNJRSC6rPq4EmJ2NkuoKnd6LDNyAQmdDnziAtxbCGWCbefG1CNzmDvd05zO36AmB7H8RzKPA==",
           "dev": true
         },
         "@typescript-eslint/visitor-keys": {
-          "version": "5.59.7",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz",
-          "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==",
+          "version": "5.60.0",
+          "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.0.tgz",
+          "integrity": "sha512-wm9Uz71SbCyhUKgcaPRauBdTegUyY/ZWl8gLwD/i/ybJqscrrdVSFImpvUz16BLPChIeKBK5Fa9s6KDQjsjyWw==",
           "dev": true,
           "requires": {
-            "@typescript-eslint/types": "5.59.7",
+            "@typescript-eslint/types": "5.60.0",
             "eslint-visitor-keys": "^3.3.0"
           }
         }
@@ -28862,31 +28226,31 @@
       }
     },
     "@typescript-eslint/type-utils": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.59.7.tgz",
-      "integrity": "sha512-ozuz/GILuYG7osdY5O5yg0QxXUAEoI4Go3Do5xeu+ERH9PorHBPSdvD3Tjp2NN2bNLh1NJQSsQu2TPu/Ly+HaQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.60.0.tgz",
+      "integrity": "sha512-X7NsRQddORMYRFH7FWo6sA9Y/zbJ8s1x1RIAtnlj6YprbToTiQnM6vxcMu7iYhdunmoC0rUWlca13D5DVHkK2g==",
       "dev": true,
       "requires": {
-        "@typescript-eslint/typescript-estree": "5.59.7",
-        "@typescript-eslint/utils": "5.59.7",
+        "@typescript-eslint/typescript-estree": "5.60.0",
+        "@typescript-eslint/utils": "5.60.0",
         "debug": "^4.3.4",
         "tsutils": "^3.21.0"
       },
       "dependencies": {
         "@typescript-eslint/types": {
-          "version": "5.59.7",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz",
-          "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==",
+          "version": "5.60.0",
+          "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.0.tgz",
+          "integrity": "sha512-ascOuoCpNZBccFVNJRSC6rPq4EmJ2NkuoKnd6LDNyAQmdDnziAtxbCGWCbefG1CNzmDvd05zO36AmB7H8RzKPA==",
           "dev": true
         },
         "@typescript-eslint/typescript-estree": {
-          "version": "5.59.7",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz",
-          "integrity": "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==",
+          "version": "5.60.0",
+          "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.0.tgz",
+          "integrity": "sha512-R43thAuwarC99SnvrBmh26tc7F6sPa2B3evkXp/8q954kYL6Ro56AwASYWtEEi+4j09GbiNAHqYwNNZuNlARGQ==",
           "dev": true,
           "requires": {
-            "@typescript-eslint/types": "5.59.7",
-            "@typescript-eslint/visitor-keys": "5.59.7",
+            "@typescript-eslint/types": "5.60.0",
+            "@typescript-eslint/visitor-keys": "5.60.0",
             "debug": "^4.3.4",
             "globby": "^11.1.0",
             "is-glob": "^4.0.3",
@@ -28895,12 +28259,12 @@
           }
         },
         "@typescript-eslint/visitor-keys": {
-          "version": "5.59.7",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz",
-          "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==",
+          "version": "5.60.0",
+          "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.0.tgz",
+          "integrity": "sha512-wm9Uz71SbCyhUKgcaPRauBdTegUyY/ZWl8gLwD/i/ybJqscrrdVSFImpvUz16BLPChIeKBK5Fa9s6KDQjsjyWw==",
           "dev": true,
           "requires": {
-            "@typescript-eslint/types": "5.59.7",
+            "@typescript-eslint/types": "5.60.0",
             "eslint-visitor-keys": "^3.3.0"
           }
         }
@@ -28928,45 +28292,45 @@
       }
     },
     "@typescript-eslint/utils": {
-      "version": "5.59.7",
-      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.59.7.tgz",
-      "integrity": "sha512-yCX9WpdQKaLufz5luG4aJbOpdXf/fjwGMcLFXZVPUz3QqLirG5QcwwnIHNf8cjLjxK4qtzTO8udUtMQSAToQnQ==",
+      "version": "5.60.0",
+      "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.60.0.tgz",
+      "integrity": "sha512-ba51uMqDtfLQ5+xHtwlO84vkdjrqNzOnqrnwbMHMRY8Tqeme8C2Q8Fc7LajfGR+e3/4LoYiWXUM6BpIIbHJ4hQ==",
       "dev": true,
       "requires": {
         "@eslint-community/eslint-utils": "^4.2.0",
         "@types/json-schema": "^7.0.9",
         "@types/semver": "^7.3.12",
-        "@typescript-eslint/scope-manager": "5.59.7",
-        "@typescript-eslint/types": "5.59.7",
-        "@typescript-eslint/typescript-estree": "5.59.7",
+        "@typescript-eslint/scope-manager": "5.60.0",
+        "@typescript-eslint/types": "5.60.0",
+        "@typescript-eslint/typescript-estree": "5.60.0",
         "eslint-scope": "^5.1.1",
         "semver": "^7.3.7"
       },
       "dependencies": {
         "@typescript-eslint/scope-manager": {
-          "version": "5.59.7",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.7.tgz",
-          "integrity": "sha512-FL6hkYWK9zBGdxT2wWEd2W8ocXMu3K94i3gvMrjXpx+koFYdYV7KprKfirpgY34vTGzEPPuKoERpP8kD5h7vZQ==",
+          "version": "5.60.0",
+          "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.60.0.tgz",
+          "integrity": "sha512-hakuzcxPwXi2ihf9WQu1BbRj1e/Pd8ZZwVTG9kfbxAMZstKz8/9OoexIwnmLzShtsdap5U/CoQGRCWlSuPbYxQ==",
           "dev": true,
           "requires": {
-            "@typescript-eslint/types": "5.59.7",
-            "@typescript-eslint/visitor-keys": "5.59.7"
+            "@typescript-eslint/types": "5.60.0",
+            "@typescript-eslint/visitor-keys": "5.60.0"
           }
         },
         "@typescript-eslint/types": {
-          "version": "5.59.7",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.7.tgz",
-          "integrity": "sha512-UnVS2MRRg6p7xOSATscWkKjlf/NDKuqo5TdbWck6rIRZbmKpVNTLALzNvcjIfHBE7736kZOFc/4Z3VcZwuOM/A==",
+          "version": "5.60.0",
+          "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.60.0.tgz",
+          "integrity": "sha512-ascOuoCpNZBccFVNJRSC6rPq4EmJ2NkuoKnd6LDNyAQmdDnziAtxbCGWCbefG1CNzmDvd05zO36AmB7H8RzKPA==",
           "dev": true
         },
         "@typescript-eslint/typescript-estree": {
-          "version": "5.59.7",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.7.tgz",
-          "integrity": "sha512-4A1NtZ1I3wMN2UGDkU9HMBL+TIQfbrh4uS0WDMMpf3xMRursDbqEf1ahh6vAAe3mObt8k3ZATnezwG4pdtWuUQ==",
+          "version": "5.60.0",
+          "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.60.0.tgz",
+          "integrity": "sha512-R43thAuwarC99SnvrBmh26tc7F6sPa2B3evkXp/8q954kYL6Ro56AwASYWtEEi+4j09GbiNAHqYwNNZuNlARGQ==",
           "dev": true,
           "requires": {
-            "@typescript-eslint/types": "5.59.7",
-            "@typescript-eslint/visitor-keys": "5.59.7",
+            "@typescript-eslint/types": "5.60.0",
+            "@typescript-eslint/visitor-keys": "5.60.0",
             "debug": "^4.3.4",
             "globby": "^11.1.0",
             "is-glob": "^4.0.3",
@@ -28975,12 +28339,12 @@
           }
         },
         "@typescript-eslint/visitor-keys": {
-          "version": "5.59.7",
-          "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.7.tgz",
-          "integrity": "sha512-tyN+X2jvMslUszIiYbF0ZleP+RqQsFVpGrKI6e0Eet1w8WmhsAtmzaqm8oM8WJQ1ysLwhnsK/4hYHJjOgJVfQQ==",
+          "version": "5.60.0",
+          "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.60.0.tgz",
+          "integrity": "sha512-wm9Uz71SbCyhUKgcaPRauBdTegUyY/ZWl8gLwD/i/ybJqscrrdVSFImpvUz16BLPChIeKBK5Fa9s6KDQjsjyWw==",
           "dev": true,
           "requires": {
-            "@typescript-eslint/types": "5.59.7",
+            "@typescript-eslint/types": "5.60.0",
             "eslint-visitor-keys": "^3.3.0"
           }
         }
@@ -29841,18 +29205,18 @@
       }
     },
     "@wdio/cli": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.10.7.tgz",
-      "integrity": "sha512-HYKRxtdmjKXzO/ePpMWyG40jb4kuoR66xaIPXN0NOso3x2p27hxYHEb/teEYaxPTG3d6Rpk2PldGIX6qYA4wbg==",
+      "version": "8.11.2",
+      "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-8.11.2.tgz",
+      "integrity": "sha512-g1vuq+v1Ko//QQFDQsdf3Qs1BkON82NNGYN/ehUVZrvAcKwiIyfOG3WkzLxi8V4tPWbD+vsLbLQs/FRG+4gTag==",
       "dev": true,
       "requires": {
         "@types/node": "^20.1.1",
-        "@wdio/config": "8.10.7",
-        "@wdio/globals": "8.10.7",
-        "@wdio/logger": "8.10.6",
-        "@wdio/protocols": "8.10.2",
+        "@wdio/config": "8.11.0",
+        "@wdio/globals": "8.11.2",
+        "@wdio/logger": "8.11.0",
+        "@wdio/protocols": "8.11.0",
         "@wdio/types": "8.10.4",
-        "@wdio/utils": "8.10.7",
+        "@wdio/utils": "8.11.0",
         "async-exit-hook": "^2.0.1",
         "chalk": "^5.2.0",
         "chokidar": "^3.5.3",
@@ -29860,126 +29224,39 @@
         "ejs": "^3.1.9",
         "execa": "^7.1.1",
         "import-meta-resolve": "^3.0.0",
-        "inquirer": "9.2.6",
+        "inquirer": "9.2.7",
         "lodash.flattendeep": "^4.4.0",
         "lodash.pickby": "^4.6.0",
         "lodash.union": "^4.6.0",
         "read-pkg-up": "9.1.0",
         "recursive-readdir": "^2.2.3",
-        "webdriverio": "8.10.7",
+        "webdriverio": "8.11.2",
         "yargs": "^17.7.2",
         "yarn-install": "^1.0.0"
       },
       "dependencies": {
-        "chalk": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-          "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-          "dev": true
-        },
-        "devtools": {
-          "version": "8.10.7",
-          "resolved": "https://registry.npmjs.org/devtools/-/devtools-8.10.7.tgz",
-          "integrity": "sha512-picJDxsjpaOW7gnQjcQVGDXvxuP1RZ4VNJpvJ+qiy86Gf3l4FGLKYkpJJFAMsIugL0XPs89bIVhjbtIv5NGL1w==",
+        "@wdio/config": {
+          "version": "8.11.0",
+          "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.11.0.tgz",
+          "integrity": "sha512-nBQXsXbPCjddtI/3rAK5yFs3eD3f0T3lZMivweTkLLR7GKBxGjiFoBjXtfqUrHJYa+2uwfXrwxo6y+dA6fVbuw==",
           "dev": true,
           "requires": {
-            "@types/node": "^20.1.0",
-            "@wdio/config": "8.10.7",
-            "@wdio/logger": "8.10.6",
-            "@wdio/protocols": "8.10.2",
+            "@wdio/logger": "8.11.0",
             "@wdio/types": "8.10.4",
-            "@wdio/utils": "8.10.7",
-            "chrome-launcher": "^0.15.0",
-            "edge-paths": "^3.0.5",
+            "@wdio/utils": "8.11.0",
+            "decamelize": "^6.0.0",
+            "deepmerge-ts": "^5.0.0",
+            "glob": "^10.2.2",
             "import-meta-resolve": "^3.0.0",
-            "puppeteer-core": "20.3.0",
-            "query-selector-shadow-dom": "^1.0.0",
-            "ua-parser-js": "^1.0.1",
-            "uuid": "^9.0.0",
-            "which": "^3.0.0"
+            "read-pkg-up": "^9.1.0"
           }
         },
-        "devtools-protocol": {
-          "version": "0.0.1149535",
-          "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1149535.tgz",
-          "integrity": "sha512-vpM8tGaYz2nrN9n8rvUEhQCgU05ocejO5WIJySsftEHxUahQ/fWuNyPxXuQNBEmaISYyMZkxCunhjtSEyBl/Dg==",
-          "dev": true
-        },
-        "is-plain-obj": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
-          "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+        "chalk": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
+          "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
           "dev": true
         },
-        "minimatch": {
-          "version": "9.0.1",
-          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
-          "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
-          "dev": true,
-          "requires": {
-            "brace-expansion": "^2.0.1"
-          }
-        },
-        "webdriverio": {
-          "version": "8.10.7",
-          "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.10.7.tgz",
-          "integrity": "sha512-TkkPE3zBxdLRdcsNLqHct2OARnfMYB9/A0ri4sccmc3C3dVFiW99NAstN88nzD1SYzXAbxALRuITVd5oswqqhg==",
-          "dev": true,
-          "requires": {
-            "@types/node": "^20.1.0",
-            "@wdio/config": "8.10.7",
-            "@wdio/logger": "8.10.6",
-            "@wdio/protocols": "8.10.2",
-            "@wdio/repl": "8.10.1",
-            "@wdio/types": "8.10.4",
-            "@wdio/utils": "8.10.7",
-            "archiver": "^5.0.0",
-            "aria-query": "^5.0.0",
-            "css-shorthand-properties": "^1.1.1",
-            "css-value": "^0.0.1",
-            "devtools": "8.10.7",
-            "devtools-protocol": "^0.0.1149535",
-            "grapheme-splitter": "^1.0.2",
-            "import-meta-resolve": "^3.0.0",
-            "is-plain-obj": "^4.1.0",
-            "lodash.clonedeep": "^4.5.0",
-            "lodash.zip": "^4.2.0",
-            "minimatch": "^9.0.0",
-            "puppeteer-core": "20.3.0",
-            "query-selector-shadow-dom": "^1.0.0",
-            "resq": "^1.9.1",
-            "rgb2hex": "0.2.5",
-            "serialize-error": "^8.0.0",
-            "webdriver": "8.10.7"
-          }
-        },
-        "which": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz",
-          "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==",
-          "dev": true,
-          "requires": {
-            "isexe": "^2.0.0"
-          }
-        }
-      }
-    },
-    "@wdio/config": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/@wdio/config/-/config-8.10.7.tgz",
-      "integrity": "sha512-m7JX9X/RPM+4KZQkSUhPHXeS3PJJky0UB62ZLh28TYCzVxEKNq1gFb6Cvqfn+w6Ym/UCFBaZzDrRLLXUAgUifw==",
-      "dev": true,
-      "requires": {
-        "@wdio/logger": "8.10.6",
-        "@wdio/types": "8.10.4",
-        "@wdio/utils": "8.10.7",
-        "decamelize": "^6.0.0",
-        "deepmerge-ts": "^5.0.0",
-        "glob": "^10.2.2",
-        "import-meta-resolve": "^3.0.0",
-        "read-pkg-up": "^9.1.0"
-      },
-      "dependencies": {
         "foreground-child": {
           "version": "3.1.1",
           "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
@@ -29991,9 +29268,9 @@
           }
         },
         "glob": {
-          "version": "10.2.6",
-          "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.6.tgz",
-          "integrity": "sha512-U/rnDpXJGF414QQQZv5uVsabTVxMSwzS5CH0p3DRCIV6ownl4f7PzGnkGmvlum2wB+9RlJWJZ6ACU1INnBqiPA==",
+          "version": "10.3.0",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.0.tgz",
+          "integrity": "sha512-AQ1/SB9HH0yCx1jXAT4vmCbTOPe5RQ+kCurjbel5xSCGhebumUv+GJZfa1rEqor3XIViqwSEmlkZCQD43RWrBg==",
           "dev": true,
           "requires": {
             "foreground-child": "^3.1.0",
@@ -30004,9 +29281,9 @@
           }
         },
         "minimatch": {
-          "version": "9.0.1",
-          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
-          "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
+          "version": "9.0.2",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.2.tgz",
+          "integrity": "sha512-PZOT9g5v2ojiTL7r1xF6plNHLtOeTpSlDI007As2NlA2aYBMfVom17yqa6QzhmDP8QOhn7LjHTg7DFCVSSa6yg==",
           "dev": true,
           "requires": {
             "brace-expansion": "^2.0.1"
@@ -30027,106 +29304,13 @@
       }
     },
     "@wdio/globals": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.10.7.tgz",
-      "integrity": "sha512-f+oBuQjJAOXoWwUffjbQk26gNGqQ4d8dnB6fVW7C/WwhuButKwm4pyBEp0RpU5G3a5pYn0bQP95cziuozTU1rg==",
+      "version": "8.11.2",
+      "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.11.2.tgz",
+      "integrity": "sha512-oaPyGLmWOHQLYtT6Jn3mtZBSYyWxau6ncBDLPJDUwOxufi3tfT9DOen+65OGBK55GfjrCAZOSGAJ13mN/swIQQ==",
       "dev": true,
       "requires": {
-        "expect-webdriverio": "^4.0.1",
-        "webdriverio": "8.10.7"
-      },
-      "dependencies": {
-        "devtools": {
-          "version": "8.10.7",
-          "resolved": "https://registry.npmjs.org/devtools/-/devtools-8.10.7.tgz",
-          "integrity": "sha512-picJDxsjpaOW7gnQjcQVGDXvxuP1RZ4VNJpvJ+qiy86Gf3l4FGLKYkpJJFAMsIugL0XPs89bIVhjbtIv5NGL1w==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "@types/node": "^20.1.0",
-            "@wdio/config": "8.10.7",
-            "@wdio/logger": "8.10.6",
-            "@wdio/protocols": "8.10.2",
-            "@wdio/types": "8.10.4",
-            "@wdio/utils": "8.10.7",
-            "chrome-launcher": "^0.15.0",
-            "edge-paths": "^3.0.5",
-            "import-meta-resolve": "^3.0.0",
-            "puppeteer-core": "20.3.0",
-            "query-selector-shadow-dom": "^1.0.0",
-            "ua-parser-js": "^1.0.1",
-            "uuid": "^9.0.0",
-            "which": "^3.0.0"
-          }
-        },
-        "devtools-protocol": {
-          "version": "0.0.1149535",
-          "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1149535.tgz",
-          "integrity": "sha512-vpM8tGaYz2nrN9n8rvUEhQCgU05ocejO5WIJySsftEHxUahQ/fWuNyPxXuQNBEmaISYyMZkxCunhjtSEyBl/Dg==",
-          "dev": true,
-          "optional": true
-        },
-        "is-plain-obj": {
-          "version": "4.1.0",
-          "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
-          "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
-          "dev": true,
-          "optional": true
-        },
-        "minimatch": {
-          "version": "9.0.1",
-          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz",
-          "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "brace-expansion": "^2.0.1"
-          }
-        },
-        "webdriverio": {
-          "version": "8.10.7",
-          "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.10.7.tgz",
-          "integrity": "sha512-TkkPE3zBxdLRdcsNLqHct2OARnfMYB9/A0ri4sccmc3C3dVFiW99NAstN88nzD1SYzXAbxALRuITVd5oswqqhg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "@types/node": "^20.1.0",
-            "@wdio/config": "8.10.7",
-            "@wdio/logger": "8.10.6",
-            "@wdio/protocols": "8.10.2",
-            "@wdio/repl": "8.10.1",
-            "@wdio/types": "8.10.4",
-            "@wdio/utils": "8.10.7",
-            "archiver": "^5.0.0",
-            "aria-query": "^5.0.0",
-            "css-shorthand-properties": "^1.1.1",
-            "css-value": "^0.0.1",
-            "devtools": "8.10.7",
-            "devtools-protocol": "^0.0.1149535",
-            "grapheme-splitter": "^1.0.2",
-            "import-meta-resolve": "^3.0.0",
-            "is-plain-obj": "^4.1.0",
-            "lodash.clonedeep": "^4.5.0",
-            "lodash.zip": "^4.2.0",
-            "minimatch": "^9.0.0",
-            "puppeteer-core": "20.3.0",
-            "query-selector-shadow-dom": "^1.0.0",
-            "resq": "^1.9.1",
-            "rgb2hex": "0.2.5",
-            "serialize-error": "^8.0.0",
-            "webdriver": "8.10.7"
-          }
-        },
-        "which": {
-          "version": "3.0.1",
-          "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz",
-          "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==",
-          "dev": true,
-          "optional": true,
-          "requires": {
-            "isexe": "^2.0.0"
-          }
-        }
+        "expect-webdriverio": "^4.2.5",
+        "webdriverio": "8.11.2"
       }
     },
     "@wdio/local-runner": {
@@ -30143,47 +29327,12 @@
         "async-exit-hook": "^2.0.1",
         "split2": "^4.1.0",
         "stream-buffers": "^3.0.2"
-      },
-      "dependencies": {
-        "@wdio/logger": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-          "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-          "dev": true,
-          "requires": {
-            "chalk": "^5.1.2",
-            "loglevel": "^1.6.0",
-            "loglevel-plugin-prefix": "^0.8.4",
-            "strip-ansi": "^7.1.0"
-          }
-        },
-        "ansi-regex": {
-          "version": "6.0.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-          "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-          "dev": true
-        },
-        "chalk": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-          "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-          "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^6.0.1"
-          }
-        }
       }
     },
     "@wdio/logger": {
-      "version": "8.10.6",
-      "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.10.6.tgz",
-      "integrity": "sha512-pJYKecNYS0vu0FxDaii6MYQlYkORDLGdRWi70hrihH20sMZofzMA1tvzRMRk1VTrsUUE4TLJXKdmT2JRMN+OPw==",
+      "version": "8.11.0",
+      "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
+      "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
       "dev": true,
       "requires": {
         "chalk": "^5.1.2",
@@ -30227,59 +29376,12 @@
         "@wdio/types": "8.10.4",
         "@wdio/utils": "8.11.0",
         "mocha": "^10.0.0"
-      },
-      "dependencies": {
-        "@wdio/logger": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-          "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-          "dev": true,
-          "requires": {
-            "chalk": "^5.1.2",
-            "loglevel": "^1.6.0",
-            "loglevel-plugin-prefix": "^0.8.4",
-            "strip-ansi": "^7.1.0"
-          }
-        },
-        "@wdio/utils": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz",
-          "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==",
-          "dev": true,
-          "requires": {
-            "@wdio/logger": "8.11.0",
-            "@wdio/types": "8.10.4",
-            "import-meta-resolve": "^3.0.0",
-            "p-iteration": "^1.1.8"
-          }
-        },
-        "ansi-regex": {
-          "version": "6.0.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-          "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-          "dev": true
-        },
-        "chalk": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-          "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-          "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^6.0.1"
-          }
-        }
       }
     },
     "@wdio/protocols": {
-      "version": "8.10.2",
-      "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.10.2.tgz",
-      "integrity": "sha512-Iv7Nqq6YsMQR9qvOM2mswUcKwx7bdx3cWVSmbMc8hwGJuNCBI+BP1fzmD9OidUftd1CQNvfugsG8Vq8vQWRyGg==",
+      "version": "8.11.0",
+      "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.11.0.tgz",
+      "integrity": "sha512-eXTMYt/XoaX53H/Q2qmsn1uWthIC5aSTGtX9YyXD/AkagG2hXeX3lLmzNWBaSIvKR+vWXRYbg3Y/7IvL2s25Wg==",
       "dev": true
     },
     "@wdio/repl": {
@@ -30303,41 +29405,6 @@
         "diff": "^5.0.0",
         "object-inspect": "^1.12.0",
         "supports-color": "9.3.1"
-      },
-      "dependencies": {
-        "@wdio/logger": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-          "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-          "dev": true,
-          "requires": {
-            "chalk": "^5.1.2",
-            "loglevel": "^1.6.0",
-            "loglevel-plugin-prefix": "^0.8.4",
-            "strip-ansi": "^7.1.0"
-          }
-        },
-        "ansi-regex": {
-          "version": "6.0.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-          "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-          "dev": true
-        },
-        "chalk": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-          "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-          "dev": true
-        },
-        "strip-ansi": {
-          "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-          "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^6.0.1"
-          }
-        }
       }
     },
     "@wdio/runner": {
@@ -30375,58 +29442,6 @@
             "read-pkg-up": "^9.1.0"
           }
         },
-        "@wdio/globals": {
-          "version": "8.11.2",
-          "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-8.11.2.tgz",
-          "integrity": "sha512-oaPyGLmWOHQLYtT6Jn3mtZBSYyWxau6ncBDLPJDUwOxufi3tfT9DOen+65OGBK55GfjrCAZOSGAJ13mN/swIQQ==",
-          "dev": true,
-          "requires": {
-            "expect-webdriverio": "^4.2.5",
-            "webdriverio": "8.11.2"
-          }
-        },
-        "@wdio/logger": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-          "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-          "dev": true,
-          "requires": {
-            "chalk": "^5.1.2",
-            "loglevel": "^1.6.0",
-            "loglevel-plugin-prefix": "^0.8.4",
-            "strip-ansi": "^7.1.0"
-          }
-        },
-        "@wdio/protocols": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.11.0.tgz",
-          "integrity": "sha512-eXTMYt/XoaX53H/Q2qmsn1uWthIC5aSTGtX9YyXD/AkagG2hXeX3lLmzNWBaSIvKR+vWXRYbg3Y/7IvL2s25Wg==",
-          "dev": true
-        },
-        "@wdio/utils": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz",
-          "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==",
-          "dev": true,
-          "requires": {
-            "@wdio/logger": "8.11.0",
-            "@wdio/types": "8.10.4",
-            "import-meta-resolve": "^3.0.0",
-            "p-iteration": "^1.1.8"
-          }
-        },
-        "ansi-regex": {
-          "version": "6.0.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-          "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-          "dev": true
-        },
-        "chalk": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-          "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-          "dev": true
-        },
         "foreground-child": {
           "version": "3.1.1",
           "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
@@ -30471,15 +29486,6 @@
           "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==",
           "dev": true
         },
-        "strip-ansi": {
-          "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-          "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^6.0.1"
-          }
-        },
         "webdriver": {
           "version": "8.11.1",
           "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.11.1.tgz",
@@ -30532,12 +29538,12 @@
       }
     },
     "@wdio/utils": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.10.7.tgz",
-      "integrity": "sha512-G9r/bQl4J25WPKeW0e+27gqNvG+x7MyZEOICl6SwyBe0SqO7JBFOBARx4oUEp2zQYmnCRNtCrHa7yM/O4OPuKA==",
+      "version": "8.11.0",
+      "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz",
+      "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==",
       "dev": true,
       "requires": {
-        "@wdio/logger": "8.10.6",
+        "@wdio/logger": "8.11.0",
         "@wdio/types": "8.10.4",
         "import-meta-resolve": "^3.0.0",
         "p-iteration": "^1.1.8"
@@ -32980,48 +31986,6 @@
             "read-pkg-up": "^9.1.0"
           }
         },
-        "@wdio/logger": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-          "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-          "dev": true,
-          "requires": {
-            "chalk": "^5.1.2",
-            "loglevel": "^1.6.0",
-            "loglevel-plugin-prefix": "^0.8.4",
-            "strip-ansi": "^7.1.0"
-          }
-        },
-        "@wdio/protocols": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.11.0.tgz",
-          "integrity": "sha512-eXTMYt/XoaX53H/Q2qmsn1uWthIC5aSTGtX9YyXD/AkagG2hXeX3lLmzNWBaSIvKR+vWXRYbg3Y/7IvL2s25Wg==",
-          "dev": true
-        },
-        "@wdio/utils": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz",
-          "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==",
-          "dev": true,
-          "requires": {
-            "@wdio/logger": "8.11.0",
-            "@wdio/types": "8.10.4",
-            "import-meta-resolve": "^3.0.0",
-            "p-iteration": "^1.1.8"
-          }
-        },
-        "ansi-regex": {
-          "version": "6.0.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-          "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-          "dev": true
-        },
-        "chalk": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-          "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-          "dev": true
-        },
         "foreground-child": {
           "version": "3.1.1",
           "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
@@ -33066,15 +32030,6 @@
           "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==",
           "dev": true
         },
-        "strip-ansi": {
-          "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-          "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^6.0.1"
-          }
-        },
         "which": {
           "version": "3.0.1",
           "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz",
@@ -33158,9 +32113,9 @@
       }
     },
     "dotenv": {
-      "version": "16.1.4",
-      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.4.tgz",
-      "integrity": "sha512-m55RtE8AsPeJBpOIFKihEmqUcoVncQIwo7x9U8ZwLEZw9ZpXboz2c+rvog+jUaJvVrZ5kBOeYQBX5+8Aa/OZQw=="
+      "version": "16.3.1",
+      "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz",
+      "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ=="
     },
     "download": {
       "version": "8.0.0",
@@ -35481,9 +34436,9 @@
       }
     },
     "get-port": {
-      "version": "6.1.2",
-      "resolved": "https://registry.npmjs.org/get-port/-/get-port-6.1.2.tgz",
-      "integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw=="
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.0.0.tgz",
+      "integrity": "sha512-mDHFgApoQd+azgMdwylJrv2DX47ywGq1i5VFJE7fZ0dttNq3iQMfsU4IvEgBHojA3KqEudyu7Vq+oN8kNaNkWw=="
     },
     "get-stream": {
       "version": "6.0.1",
@@ -35717,9 +34672,9 @@
       "dev": true
     },
     "graphql": {
-      "version": "16.6.0",
-      "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.6.0.tgz",
-      "integrity": "sha512-KPIBPDlW7NxrbT/eh4qPXz5FiFdL5UbaA0XUNz2Rp3Z3hqBSkbj0GVjwFDztsWVauZUWsbKHgMg++sk8UX0bkw=="
+      "version": "16.7.1",
+      "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.7.1.tgz",
+      "integrity": "sha512-DRYR9tf+UGU0KOsMcKAlXeFfX89UiiIZ0dRU3mR0yJfu6OjZqUcp68NnFLnqQU5RexygFoDy1EW+ccOYcPfmHg=="
     },
     "graphql-tag": {
       "version": "2.12.6",
@@ -36104,9 +35059,9 @@
       "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q=="
     },
     "inquirer": {
-      "version": "9.2.6",
-      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.6.tgz",
-      "integrity": "sha512-y71l237eJJKS4rl7sQcEUiMhrR0pB/ZnRMMTxLpjJhWL4hdWCT03a6jJnC1w6qIPSRZWEozuieGt3v7XaEJYFw==",
+      "version": "9.2.7",
+      "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.7.tgz",
+      "integrity": "sha512-Bf52lnfvNxGPJPltiNO2tLBp3zC339KNlGMqOkW+dsvNikBhcVDK5kqU2lVX2FTPzuXUFX5WJDlsw//w3ZwoTw==",
       "dev": true,
       "requires": {
         "ansi-escapes": "^4.3.2",
@@ -38887,9 +37842,9 @@
       "dev": true
     },
     "octokit": {
-      "version": "2.0.22",
-      "resolved": "https://registry.npmjs.org/octokit/-/octokit-2.0.22.tgz",
-      "integrity": "sha512-QBgGSB+odZ5o3ysLy5d2Qvwwx5+GU1zLVgkgpy3o4XocmrD/YInaIVUCA6nR8jUmdf5lgyyiYPyxRt0UrNwqMQ==",
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/octokit/-/octokit-2.1.0.tgz",
+      "integrity": "sha512-Pxi6uKTjBRZWgAwsw1NgHdRlL+QASCN35OYS7X79o7PtBME0CLXEroZmPtEwlWZbPTP+iDbEy2wCbSOgm0uGIQ==",
       "requires": {
         "@octokit/app": "^13.1.5",
         "@octokit/core": "^4.2.1",
@@ -38898,6 +37853,7 @@
         "@octokit/plugin-rest-endpoint-methods": "^7.1.1",
         "@octokit/plugin-retry": "^4.1.3",
         "@octokit/plugin-throttling": "^5.2.2",
+        "@octokit/request-error": "^v3.0.3",
         "@octokit/types": "^9.2.2"
       }
     },
@@ -40615,6 +39571,12 @@
         "wait-on": "^7.0.1"
       },
       "dependencies": {
+        "get-port": {
+          "version": "6.1.2",
+          "resolved": "https://registry.npmjs.org/get-port/-/get-port-6.1.2.tgz",
+          "integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==",
+          "dev": true
+        },
         "tar-fs": {
           "version": "2.1.1",
           "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
@@ -40738,9 +39700,9 @@
       }
     },
     "semver": {
-      "version": "7.5.1",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
-      "integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
+      "version": "7.5.3",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
+      "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
       "requires": {
         "lru-cache": "^6.0.0"
       },
@@ -42842,6 +41804,12 @@
         "yargs-parser": "^21.1.1"
       },
       "dependencies": {
+        "get-port": {
+          "version": "6.1.2",
+          "resolved": "https://registry.npmjs.org/get-port/-/get-port-6.1.2.tgz",
+          "integrity": "sha512-BrGGraKm2uPqurfGVj/z97/zv8dPleC6x9JBNRTrDNtCkkRF4rPwrQXFgL7+I+q8QSdU4ntLQX2D7KIxSy8nGw==",
+          "dev": true
+        },
         "slash": {
           "version": "5.0.1",
           "resolved": "https://registry.npmjs.org/slash/-/slash-5.0.1.tgz",
@@ -42871,25 +41839,6 @@
       "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.2.0.tgz",
       "integrity": "sha512-PgF341avzqyx60neE9DD+XS26MMNMoUQRz9NOZwW32nPQrF6p77f1htcnjBSEV8BGMKZ16choqUG4hyI0Hx7mA=="
     },
-    "webdriver": {
-      "version": "8.10.7",
-      "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.10.7.tgz",
-      "integrity": "sha512-pBy29S9e8IYKYHfS0gp91Jp9SUvXJQckJKJdj+VNLNL9toSFo10N7xRpv8W1f7HkniXrgESi9GHYNyc1J/5lLA==",
-      "dev": true,
-      "requires": {
-        "@types/node": "^20.1.0",
-        "@types/ws": "^8.5.3",
-        "@wdio/config": "8.10.7",
-        "@wdio/logger": "8.10.6",
-        "@wdio/protocols": "8.10.2",
-        "@wdio/types": "8.10.4",
-        "@wdio/utils": "8.10.7",
-        "deepmerge-ts": "^5.0.0",
-        "got": "^ 12.6.1",
-        "ky": "^0.33.0",
-        "ws": "^8.8.0"
-      }
-    },
     "webdriverio": {
       "version": "8.11.2",
       "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-8.11.2.tgz",
@@ -42939,48 +41888,6 @@
             "read-pkg-up": "^9.1.0"
           }
         },
-        "@wdio/logger": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-8.11.0.tgz",
-          "integrity": "sha512-IsuKSaYi7NKEdgA57h8muzlN/MVp1dQG+V4C//7g4m03YJUnNQLvDhJzLjdeNTfvZy61U7foQSyt+3ktNzZkXA==",
-          "dev": true,
-          "requires": {
-            "chalk": "^5.1.2",
-            "loglevel": "^1.6.0",
-            "loglevel-plugin-prefix": "^0.8.4",
-            "strip-ansi": "^7.1.0"
-          }
-        },
-        "@wdio/protocols": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-8.11.0.tgz",
-          "integrity": "sha512-eXTMYt/XoaX53H/Q2qmsn1uWthIC5aSTGtX9YyXD/AkagG2hXeX3lLmzNWBaSIvKR+vWXRYbg3Y/7IvL2s25Wg==",
-          "dev": true
-        },
-        "@wdio/utils": {
-          "version": "8.11.0",
-          "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-8.11.0.tgz",
-          "integrity": "sha512-XBl1zalk5UPu8QKZ7LZIA82Ad363fpNHZHP5uI5OxUFnk4ZPWgY9eCWpeD+4f9a0DS0w2Dro15E4PORNX84pIw==",
-          "dev": true,
-          "requires": {
-            "@wdio/logger": "8.11.0",
-            "@wdio/types": "8.10.4",
-            "import-meta-resolve": "^3.0.0",
-            "p-iteration": "^1.1.8"
-          }
-        },
-        "ansi-regex": {
-          "version": "6.0.1",
-          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",
-          "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",
-          "dev": true
-        },
-        "chalk": {
-          "version": "5.2.0",
-          "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz",
-          "integrity": "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==",
-          "dev": true
-        },
         "foreground-child": {
           "version": "3.1.1",
           "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz",
@@ -43031,15 +41938,6 @@
           "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==",
           "dev": true
         },
-        "strip-ansi": {
-          "version": "7.1.0",
-          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",
-          "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",
-          "dev": true,
-          "requires": {
-            "ansi-regex": "^6.0.1"
-          }
-        },
         "webdriver": {
           "version": "8.11.1",
           "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-8.11.1.tgz",
@@ -43067,9 +41965,9 @@
       "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ=="
     },
     "webpack": {
-      "version": "5.87.0",
-      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.87.0.tgz",
-      "integrity": "sha512-GOu1tNbQ7p1bDEoFRs2YPcfyGs8xq52yyPBZ3m2VGnXGtV9MxjrkABHm4V9Ia280OefsSLzvbVoXcfLxjKY/Iw==",
+      "version": "5.88.0",
+      "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.0.tgz",
+      "integrity": "sha512-O3jDhG5e44qIBSi/P6KpcCcH7HD+nYIHVBhdWFxcLOcIGN8zGo5nqF3BjyNCxIh4p1vFdNnreZv2h2KkoAw3lw==",
       "dev": true,
       "requires": {
         "@types/eslint-scope": "^3.7.3",
diff --git a/package.json b/package.json
index 30f5a88f..af64d31f 100644
--- a/package.json
+++ b/package.json
@@ -1,8 +1,8 @@
 {
   "name": "runme",
-  "version": "1.5.4-edge.0",
+  "version": "1.6.1",
   "publisher": "stateful",
-  "displayName": "Runme",
+  "displayName": "Runme runs Markdown",
   "description": "Execute commands inside your runbooks, docs, and READMEs.",
   "author": "Sebastian Tiedtke <sebastian@stateful.com>",
   "contributors": [
@@ -97,6 +97,11 @@
         "category": "Runme",
         "title": "Prompt to participate in Feedback survey"
       },
+      {
+        "command": "runme.surveyShebangComingSoon",
+        "category": "Runme",
+        "title": "Prompt when a cell language is unsupported"
+      },
       {
         "command": "runme.openAsRunmeNotebook",
         "category": "Runme",
@@ -639,7 +644,7 @@
     "detect-port": "^1.5.1",
     "dotenv": "^16.0.3",
     "filenamify": "^6.0.0",
-    "get-port": "^6.1.2",
+    "get-port": "^7.0.0",
     "got": "^12.6.0",
     "graphql": "^16.6.0",
     "lit": "^2.7.4",
diff --git a/src/extension/api/client.ts b/src/extension/api/client.ts
index 8145ccdc..331f6930 100644
--- a/src/extension/api/client.ts
+++ b/src/extension/api/client.ts
@@ -1,13 +1,29 @@
 import { ApolloClient, InMemoryCache, HttpLink } from '@apollo/client'
 import fetch from 'cross-fetch'
+import { setContext } from '@apollo/client/link/context'
 
 import { getRunmeApiUrl } from '../../utils/configuration'
 
-export function InitializeClient({ uri }: { uri: string } = { uri: '' }) {
-  const graphQlApiUrl = getRunmeApiUrl()
+export function InitializeClient({
+  uri,
+  runmeToken,
+}: {
+  uri?: string | undefined
+  runmeToken: string
+}) {
+  const authLink = setContext((_, { headers }) => {
+    return {
+      headers: {
+        ...headers,
+        authorization: runmeToken ? `Bearer ${runmeToken}` : '',
+      },
+    }
+  })
+  const link = new HttpLink({ fetch, uri: uri || `${getRunmeApiUrl()}/graphql` })
   const client = new ApolloClient({
     cache: new InMemoryCache(),
-    link: new HttpLink({ fetch, uri: uri || graphQlApiUrl }),
+    credentials: 'include',
+    link: authLink.concat(link),
   })
 
   return client
diff --git a/src/extension/kernel.ts b/src/extension/kernel.ts
index b4ea20c7..594220be 100644
--- a/src/extension/kernel.ts
+++ b/src/extension/kernel.ts
@@ -27,6 +27,7 @@ import {
 import { API } from '../utils/deno/api'
 import { postClientMessage } from '../utils/messaging'
 
+import * as survey from './survey'
 import getLogger from './logger'
 import executor, { type IEnvironmentManager, ENV_STORE_MANAGER } from './executors'
 import { DENO_ACCESS_TOKEN_KEY } from './constants'
@@ -54,6 +55,7 @@ import { handleCellOutputMessage } from './messages/cellOutput'
 import handleGitHubMessage from './messages/github'
 import { getNotebookCategories } from './utils'
 import { handleCloudApiMessage } from './messages/cloudApiRequest'
+import { SurveyShebangComingSoon } from './survey'
 
 enum ConfirmationItems {
   Yes = 'Yes',
@@ -68,6 +70,7 @@ export class Kernel implements Disposable {
   static readonly type = 'runme' as const
 
   readonly #experiments = new Map<string, boolean>()
+  readonly #shebangComingSoon: SurveyShebangComingSoon
 
   #disposables: Disposable[] = []
   #controller = notebooks.createNotebookController(
@@ -90,6 +93,8 @@ export class Kernel implements Disposable {
     this.#experiments.set('grpcRunner', config.get<boolean>('grpcRunner', true))
     this.#experiments.set('grpcServer', config.get<boolean>('grpcServer', true))
 
+    this.#shebangComingSoon = new survey.SurveyShebangComingSoon(context)
+
     this.#controller.supportsExecutionOrder = false
     this.#controller.description = 'Run your Markdown'
     this.#controller.executeHandler = this._executeAll.bind(this)
@@ -110,6 +115,7 @@ export class Kernel implements Disposable {
 
     this.messaging.postMessage({ from: 'kernel' })
     this.#disposables.push(
+      this.#shebangComingSoon,
       this.messaging.onDidReceiveMessage(this.#handleRendererMessage.bind(this)),
       workspace.onDidOpenNotebookDocument(this.#handleOpenNotebook.bind(this)),
       workspace.onDidSaveNotebookDocument(this.#handleSaveNotebook.bind(this)),
@@ -511,7 +517,7 @@ export class Kernel implements Disposable {
           environmentManager
         )
       } else {
-        window.showErrorMessage('Cell language is not executable')
+        this.#shebangComingSoon.open()
 
         successfulCellExecution = false
       }
diff --git a/src/extension/languages.ts b/src/extension/languages.ts
index 1717ff36..955050d1 100644
--- a/src/extension/languages.ts
+++ b/src/extension/languages.ts
@@ -69,8 +69,8 @@ export default class Languages {
         true
       )
     )
-    // if it's tight at the top (< 1% variance) look for execs
-    while (pstdev < 0.01 && !LANGUAGES.get(top[0]?.languageId) && top.shift()) {
+    // if it's narrow at the top (< 5% variance) look for execs
+    while (pstdev < 0.05 && !LANGUAGES.get(top[0]?.languageId) && top.shift()) {
       if (top.length <= 0) {
         top = results
         break
diff --git a/src/extension/messages/cloudApiRequest/saveCellExecution.ts b/src/extension/messages/cloudApiRequest/saveCellExecution.ts
index 35795f70..022b85c1 100644
--- a/src/extension/messages/cloudApiRequest/saveCellExecution.ts
+++ b/src/extension/messages/cloudApiRequest/saveCellExecution.ts
@@ -1,10 +1,14 @@
-import { ClientMessages } from '../../../constants'
+import { authentication } from 'vscode'
+import { TelemetryReporter } from 'vscode-telemetry'
+
+import { AuthenticationProviders, ClientMessages } from '../../../constants'
 import { ClientMessage, IApiMessage } from '../../../types'
 import { InitializeClient } from '../../api/client'
 import { getCellByUuId } from '../../cell'
 import { getAnnotations, getTerminalByCell } from '../../utils'
 import { createCellExecutionQuery } from '../../api/grapql'
 import { postClientMessage } from '../../../utils/messaging'
+import { RunmeService } from '../../services/runme'
 type APIRequestMessage = IApiMessage<ClientMessage<ClientMessages.cloudApiRequest>>
 
 export default async function saveCellExecution(
@@ -13,6 +17,17 @@ export default async function saveCellExecution(
   const { messaging, message, editor } = requestMessage
 
   try {
+    const session = await authentication.getSession(
+      AuthenticationProviders.GitHub,
+      ['user:email'],
+      {
+        createIfNone: true,
+      }
+    )
+
+    if (!session) {
+      throw new Error('You must authenticate with your GitHub account')
+    }
     const cell = await getCellByUuId({ editor, uuid: message.output.uuid })
     if (!cell) {
       throw new Error('Cell not found')
@@ -30,8 +45,12 @@ export default async function saveCellExecution(
       : 0
     const annotations = getAnnotations(cell)
     delete annotations['runme.dev/uuid']
-
-    const graphClient = InitializeClient()
+    const runmeService = new RunmeService({ githubAccessToken: session.accessToken })
+    const runmeTokenResponse = await runmeService.getAccessToken()
+    if (!runmeTokenResponse) {
+      throw new Error('Unable to retrieve an access token')
+    }
+    const graphClient = InitializeClient({ runmeToken: runmeTokenResponse.token })
     const result = await graphClient.mutate({
       mutation: createCellExecutionQuery({
         ...message.output.data,
@@ -45,12 +64,13 @@ export default async function saveCellExecution(
         },
       }),
     })
-
+    TelemetryReporter.sendTelemetryEvent('runme-app-share')
     return postClientMessage(messaging, ClientMessages.cloudApiResponse, {
       data: result,
       uuid: message.output.uuid,
     })
   } catch (error) {
+    TelemetryReporter.sendTelemetryEvent('runme-app-error')
     return postClientMessage(messaging, ClientMessages.cloudApiResponse, {
       data: (error as any).message,
       uuid: message.output.uuid,
diff --git a/src/extension/serializer.ts b/src/extension/serializer.ts
index 3479ffee..06f40398 100644
--- a/src/extension/serializer.ts
+++ b/src/extension/serializer.ts
@@ -1,6 +1,4 @@
 import {
-  window,
-  commands,
   NotebookSerializer,
   ExtensionContext,
   Uri,
@@ -26,7 +24,7 @@ import { DeserializeRequest, SerializeRequest, Notebook } from './grpc/serialize
 import { initParserClient, ParserServiceClient } from './grpc/client'
 import Languages from './languages'
 import { PLATFORM_OS } from './constants'
-import { canEditFile, initWasm } from './utils'
+import { initWasm } from './utils'
 import RunmeServer from './server/runmeServer'
 import { Kernel } from './kernel'
 
@@ -128,8 +126,6 @@ export abstract class SerializerBase implements NotebookSerializer, Disposable {
     // eslint-disable-next-line @typescript-eslint/no-unused-vars
     token: CancellationToken
   ): Promise<Uint8Array> {
-    await this.preSaveCheck()
-
     const transformedCells = data.cells.map((cell) => {
       return {
         ...cell,
@@ -213,34 +209,6 @@ export abstract class SerializerBase implements NotebookSerializer, Disposable {
     return notebookData
   }
 
-  protected async preSaveCheck() {
-    if (!window.activeNotebookEditor) {
-      throw new Error("Could't save notebook as it is not active!")
-    }
-
-    if (!(await canEditFile(window.activeNotebookEditor.notebook))) {
-      const errorMessage =
-        'You are writing to a file that is not version controlled! ' +
-        "Runme's authoring features are in early stages and require hardening. " +
-        "We wouldn't want you to loose important data. Please version track your file first " +
-        'or disable this restriction in the VS Code settings.'
-      window.showErrorMessage(errorMessage, 'Open Runme Settings').then((openSettings) => {
-        if (openSettings) {
-          return commands.executeCommand(
-            'workbench.action.openSettings',
-            'runme.flags.disableSaveRestriction'
-          )
-        }
-      })
-      throw new Error('saving non version controlled notebooks is disabled by default.')
-    }
-
-    const err = await this.ready
-    if (err) {
-      throw err
-    }
-  }
-
   protected static revive(notebook: Serializer.Notebook) {
     return notebook.cells.reduce((accu, elem) => {
       let cell: NotebookCellData
diff --git a/src/extension/services/runme.ts b/src/extension/services/runme.ts
new file mode 100644
index 00000000..8a37ab23
--- /dev/null
+++ b/src/extension/services/runme.ts
@@ -0,0 +1,35 @@
+import fetch from 'cross-fetch'
+
+import { getRunmeApiUrl } from '../../utils/configuration'
+
+export interface IRunmeToken {
+  token: string
+}
+
+export class RunmeService {
+  protected githubAccessToken: string
+  constructor({ githubAccessToken }: { githubAccessToken: string }) {
+    this.githubAccessToken = githubAccessToken
+  }
+  async getAccessToken(): Promise<IRunmeToken | undefined> {
+    try {
+      const response = await fetch(`${getRunmeApiUrl()}/auth/vscode`, {
+        method: 'POST',
+        headers: {
+          'Content-Type': 'application/json',
+        },
+        body: JSON.stringify({
+          access_token: this.githubAccessToken,
+        }),
+      })
+      if (response.status >= 400) {
+        throw new Error('Failed to get an authorization token')
+      }
+      if (response.ok) {
+        return response.json()
+      }
+    } catch (error) {
+      throw new Error((error as any).message)
+    }
+  }
+}
diff --git a/src/extension/survey.ts b/src/extension/survey.ts
index 46e28211..85699053 100644
--- a/src/extension/survey.ts
+++ b/src/extension/survey.ts
@@ -49,6 +49,8 @@ abstract class Survey implements Disposable {
   protected async done() {
     await this.context.globalState.update(this.id, true)
   }
+
+  abstract prompt(runDirect: boolean): Promise<void>
 }
 
 export class WinDefaultShell extends Survey {
@@ -283,3 +285,34 @@ export class SurveyActiveUserFeedback extends Survey {
     await this.done()
   }
 }
+
+export class SurveyShebangComingSoon extends Survey {
+  static readonly #id: string = 'runme.surveyShebangComingSoon'
+
+  constructor(protected context: ExtensionContext) {
+    super(context, SurveyShebangComingSoon.#id)
+
+    commands.registerCommand(SurveyShebangComingSoon.#id, this.prompt.bind(this))
+  }
+
+  open() {
+    commands.executeCommand(SurveyShebangComingSoon.#id)
+  }
+
+  async prompt(): Promise<void> {
+    const option = await window.showWarningMessage(
+      'Not every language is executable... yet! Coming soon: Mix and match languages in Runme.',
+      'Learn more',
+      'Dismiss'
+    )
+    if (option === 'Dismiss' || option === undefined) {
+      return
+    }
+
+    TelemetryReporter.sendTelemetryEvent('survey.ShebangComingSoon', { never: 'false' })
+    await commands.executeCommand(
+      'vscode.open',
+      Uri.parse('https://runme.dev/spotlight/shebang-support')
+    )
+  }
+}
diff --git a/src/extension/utils.ts b/src/extension/utils.ts
index fc0695e2..45b2cbc4 100644
--- a/src/extension/utils.ts
+++ b/src/extension/utils.ts
@@ -8,7 +8,6 @@ import vscode, {
   Uri,
   workspace,
   env,
-  NotebookDocument,
   NotebookCell,
   NotebookCellExecution,
   NotebookCellOutput,
@@ -292,40 +291,6 @@ export async function verifyCheckedInFile(filePath: string) {
   return isCheckedIn
 }
 
-export async function canEditFile(
-  notebook: NotebookDocument,
-  // for testing purposes only
-  verifyCheckedInFileFn = verifyCheckedInFile
-): Promise<boolean> {
-  const config = vscode.workspace.getConfiguration('runme.flags')
-  const disableSaveRestriction = config.get<boolean>('disableSaveRestriction')
-  const currentDocumentPath = notebook.uri.fsPath
-  const isNewFile = notebook.isUntitled && notebook.notebookType === Kernel.type
-
-  /**
-   * allow serializing files if:
-   */
-  if (
-    /**
-     * the user has disabled this restriction
-     */
-    disableSaveRestriction ||
-    /**
-     * the user just created a new file
-     */
-    isNewFile ||
-    /**
-     * the user works on a checked in file
-     */
-    !currentDocumentPath ||
-    (await verifyCheckedInFileFn(currentDocumentPath))
-  ) {
-    return true
-  }
-
-  return false
-}
-
 export async function initWasm(wasmUri: Uri) {
   const go = new globalThis.Go()
   const wasmFile = await workspace.fs.readFile(wasmUri)


Test patch:
diff --git a/tests/extension/extension.test.ts b/tests/extension/extension.test.ts
index 596e5183..14086e83 100644
--- a/tests/extension/extension.test.ts
+++ b/tests/extension/extension.test.ts
@@ -73,7 +73,7 @@ test('initializes all providers', async () => {
   await ext.initialize(context)
   expect(notebooks.registerNotebookCellStatusBarItemProvider).toBeCalledTimes(6)
   expect(workspace.registerNotebookSerializer).toBeCalledTimes(1)
-  expect(commands.registerCommand).toBeCalledTimes(24)
+  expect(commands.registerCommand).toBeCalledTimes(25)
   expect(window.registerTreeDataProvider).toBeCalledTimes(1)
   expect(window.registerUriHandler).toBeCalledTimes(1)
   expect(bootFile).toBeCalledTimes(1)
diff --git a/tests/extension/kernel.test.ts b/tests/extension/kernel.test.ts
index 5d1dd403..e0449fa6 100644
--- a/tests/extension/kernel.test.ts
+++ b/tests/extension/kernel.test.ts
@@ -233,8 +233,6 @@ suite('_doExecuteCell', () => {
       'cell.endExecute',
       { 'cell.success': 'false' }
     )
-
-    expect(window.showErrorMessage).toHaveBeenCalledWith('Cell language is not executable')
   })
 })
 
diff --git a/tests/extension/languages.test.ts b/tests/extension/languages.test.ts
index 1841a7d4..7d27b640 100644
--- a/tests/extension/languages.test.ts
+++ b/tests/extension/languages.test.ts
@@ -3,18 +3,18 @@ import path from 'node:path'
 import { test, expect } from 'vitest'
 
 import Languages from '../../src/extension/languages'
-import { WasmLib } from '../../src/types'
+import { Serializer } from '../../src/types'
 
 import fixture from './fixtures/document.json'
 
 test('cells', () => {
   // todo(sebastian): tests legacy deserializer
-  expect((fixture as WasmLib.Notebook).cells).toBeTypeOf('object')
+  expect((fixture as Serializer.Notebook).cells).toBeTypeOf('object')
 })
 
 test('languages#run', async () => {
   const langs = new Languages(path.resolve(__dirname, '../..'))
-  const f = fixture as WasmLib.Notebook
+  const f = fixture as Serializer.Notebook
 
   const results = await Promise.all(
     f.cells!
@@ -48,7 +48,7 @@ test('languages#run', async () => {
 
 test('languages#biased', async () => {
   const langs = new Languages(path.resolve(__dirname, '../..'))
-  const f = fixture as WasmLib.Notebook
+  const f = fixture as Serializer.Notebook
 
   const biased = await Promise.all(
     f.cells!
@@ -62,7 +62,7 @@ test('languages#biased', async () => {
 
   expect(biased).toStrictEqual([
     ['bat', 'sh'],
-    ['ini', 'ini'],
+    ['ini', 'sh'],
     ['bat', 'sh'],
     ['bat', 'sh'],
     ['bat', 'sh'],
@@ -76,6 +76,6 @@ test('languages#biased', async () => {
     ['dart', 'sh'],
     ['sh', 'sh'],
     ['bat', 'sh'],
-    ['csv', 'sh'],
+    ['csv', 'sh']
   ])
 })
diff --git a/tests/extension/provider/annotations.test.ts b/tests/extension/provider/annotations.test.ts
index a6b44e85..bf6bd763 100644
--- a/tests/extension/provider/annotations.test.ts
+++ b/tests/extension/provider/annotations.test.ts
@@ -37,7 +37,7 @@ describe('Runme Annotations', () => {
   const kernel = new Kernel({} as any)
   it('should register a command when initializing', () => {
     new AnnotationsProvider(kernel)
-    expect(commands.registerCommand).toBeCalledTimes(1)
+    expect(commands.registerCommand).toBeCalledTimes(2)
     expect(commands.registerCommand).toBeCalledWith('runme.toggleCellAnnotations', expect.anything(), undefined)
   })
 
diff --git a/tests/extension/serializer.test.ts b/tests/extension/serializer.test.ts
index 1e99114d..e7ce4227 100644
--- a/tests/extension/serializer.test.ts
+++ b/tests/extension/serializer.test.ts
@@ -2,7 +2,6 @@ import { NotebookData, NotebookDocument, NotebookEdit, window, workspace } from
 import { expect, vi, it, describe, beforeEach } from 'vitest'
 
 import { SerializerBase, WasmSerializer } from '../../src/extension/serializer'
-import { canEditFile } from '../../src/extension/utils'
 import type { Kernel } from '../../src/extension/kernel'
 import { EventEmitter, Uri } from '../../__mocks__/vscode'
 import { Serializer } from '../../src/types'
@@ -44,7 +43,6 @@ vi.mock('../../src/extension/languages', () => ({
 }))
 
 vi.mock('../../src/extension/utils', () => ({
-    canEditFile: vi.fn().mockResolvedValue(false),
     initWasm: vi.fn()
 }))
 
@@ -163,34 +161,9 @@ describe('WasmSerializer', () => {
     }
 
     describe('serializeNotebook', () => {
-        it('fails when notebook is not active', async () => {
-            const s = new WasmSerializer(context, newKernel())
-            await expect(() => s.serializeNotebook({} as any, {} as any))
-                .rejects.toThrow(/not active/)
-        })
-
-        it('prevents saving if canEditFile returns false', async () => {
-            // @ts-ignore readonly
-            window.activeNotebookEditor = {} as any
-            const s = new WasmSerializer(context, newKernel())
-            await expect(() => s.serializeNotebook({} as any, {} as any))
-                .rejects.toThrow(/saving non version controlled notebooks is disabled/)
-        })
-
-        it('throws if wasm fails to laod', async () => {
-            // @ts-ignore readonly
-            window.activeNotebookEditor = {} as any
-            vi.mocked(canEditFile).mockResolvedValue(true)
-            const s = new WasmSerializer(context, newKernel())
-            // @ts-ignore readonly
-            s['ready'] = Promise.reject('ups')
-            await expect(() => s.serializeNotebook({} as any, {} as any)).rejects.toThrow(/ups/)
-        })
-
         it('uses Runme wasm to save the file', async () => {
             // @ts-ignore readonly
             window.activeNotebookEditor = {} as any
-            vi.mocked(canEditFile).mockResolvedValue(true)
             const s = new WasmSerializer(context, newKernel())
             // @ts-ignore readonly
             s['ready'] = Promise.resolve()
diff --git a/tests/extension/utils.test.ts b/tests/extension/utils.test.ts
index c606913f..f7114de5 100644
--- a/tests/extension/utils.test.ts
+++ b/tests/extension/utils.test.ts
@@ -8,7 +8,6 @@ import {
   getKey,
   getCmdShellSeq,
   normalizeLanguage,
-  canEditFile,
   getAnnotations,
   mapGitIgnoreToGlobFolders,
   hashDocumentUri,
@@ -212,45 +211,6 @@ suite('normalizeLanguage', () => {
   })
 })
 
-suite('canEditFile', () => {
-  const verifyCheckedInFile = vi.fn().mockResolvedValue(false)
-  const notebook: any = {
-    isUntitled: false,
-    notebookType: 'runme',
-    uri: { fsPath: '/foo/bar' }
-  }
-
-  beforeEach(() => {
-    vi.mocked(vscode.workspace.getConfiguration).mockReturnValue({
-      get: vi.fn().mockReturnValue(false)
-    } as any)
-  })
-
-  test('can not edit by default', async () => {
-    expect(await canEditFile(notebook, verifyCheckedInFile)).toBe(false)
-  })
-
-  test('can edit if ignore flag is enabled', async () => {
-    const notebookMock: any = JSON.parse(JSON.stringify(notebook))
-    vi.mocked(vscode.workspace.getConfiguration).mockReturnValue({
-      get: vi.fn().mockReturnValue(true)
-    } as any)
-    expect(await canEditFile(notebookMock, verifyCheckedInFile)).toBe(true)
-  })
-
-  test('can edit file if new', async () => {
-    const notebookMock: any = JSON.parse(JSON.stringify(notebook))
-    notebookMock.isUntitled = true
-    expect(await canEditFile(notebookMock, verifyCheckedInFile)).toBe(true)
-  })
-
-  test('can edit file if checked in', async () => {
-    const notebookMock: any = JSON.parse(JSON.stringify(notebook))
-    verifyCheckedInFile.mockResolvedValue(true)
-    expect(await canEditFile(notebookMock, verifyCheckedInFile)).toBe(true)
-  })
-})
-
 suite('mapGitIgnoreToGlobFolders', () => {
   test('map properly to glob patterns folders', () => {
     const gitIgnoreContents = `