From 5f5bb4055a82034b6e700812f0d1ef14ab556b17 Mon Sep 17 00:00:00 2001 From: Simone Mariotti Date: Thu, 27 Aug 2026 00:31:11 +0200 Subject: [PATCH] v0.8.0 * Sync detection logic with WhichBrowser/Parser-PHP up to 581d614 * Hide the macOS version when reported as the frozen fingerprinting-mitigation value (10.15.7/10.15) * Fix OS X version detection to also match macOS 20-29 (e.g. Tahoe 26), previously capped at 10-19 * Recover the real iOS version from Safari's Version/ token when iOS 26+ freezes the UA at 18.x/19.x * Add macOS nicknames Ventura, Sonoma, Sequoia and Tahoe, and Darwin mapping up to macOS/iOS 26 * Routine refresh of the applications, models, indices, profiles and regexes databases --- .eslintrc.json | 19 - .github/workflows/main.yml | 10 +- .husky/pre-commit | 3 - CHANGELOG.md | 25 + bin/update-applications.js | 24 +- bin/update-browser-ids.js | 36 +- bin/update-chrome.js | 123 +- bin/update-indices.js | 24 +- bin/update-models.js | 24 +- bin/update-profiles.js | 60 +- data/applications-bots.js | 6 +- data/applications-browsers.js | 24 +- data/applications-others.js | 38 +- data/browsers-chrome.js | 71 + data/indices/models-android.js | 522 ++- data/indices/models-asha.js | 23 +- data/indices/models-bada.js | 36 +- data/indices/models-brew.js | 10 +- data/indices/models-feature.js | 8 +- data/indices/models-firefoxos.js | 6 +- data/indices/models-kddi.js | 714 ++- data/indices/models-palmos.js | 175 +- data/indices/models-s30plus.js | 20 +- data/indices/models-s40.js | 301 +- data/indices/models-symbian.js | 452 +- data/indices/models-tizen.js | 6 +- data/indices/models-touchwiz.js | 89 +- data/indices/models-wm.js | 20 +- data/indices/models-wp.js | 14 +- data/models-android.js | 1400 +++--- data/models-asha.js | 26 +- data/models-bada.js | 26 +- data/models-blackberry.js | 94 +- data/models-brew.js | 4 +- data/models-feature.js | 4 +- data/models-firefoxos.js | 18 +- data/models-ios.js | 4 +- data/models-kddi.js | 2 +- data/models-palmos.js | 154 +- data/models-s30plus.js | 12 +- data/models-s40.js | 260 +- data/models-symbian.js | 348 +- data/models-tizen.js | 4 +- data/models-touchwiz.js | 82 +- data/models-wm.js | 4 +- data/models-wp.js | 16 +- data/os-darwin.js | 20 + data/profiles.js | 4 - data/regexes/applications-bots.js | 5 +- data/regexes/applications-browsers.js | 5 +- data/regexes/applications-others.js | 5 +- eslint.config.js | 54 + package-lock.json | 4062 ++++++----------- package.json | 29 +- src/Analyser/Camouflage.js | 2 - src/Analyser/Corrections.js | 21 +- src/Analyser/Derive.js | 14 +- src/Analyser/Header.js | 2 - src/Analyser/Header/Baidu.js | 1 - src/Analyser/Header/BrowserId.js | 2 - src/Analyser/Header/OperaMini.js | 2 - src/Analyser/Header/Puffin.js | 2 - src/Analyser/Header/UCBrowserNew.js | 2 - src/Analyser/Header/UCBrowserOld.js | 2 - src/Analyser/Header/Useragent.js | 2 - src/Analyser/Header/Useragent/Application.js | 2 - src/Analyser/Header/Useragent/Bot.js | 2 - src/Analyser/Header/Useragent/Browser.js | 4 - src/Analyser/Header/Useragent/Device.js | 2 - .../Header/Useragent/Device/Appliance.js | 2 - src/Analyser/Header/Useragent/Device/Cars.js | 2 - .../Header/Useragent/Device/Ereader.js | 2 - .../Header/Useragent/Device/Gaming.js | 2 - src/Analyser/Header/Useragent/Device/Gps.js | 2 - src/Analyser/Header/Useragent/Device/Media.js | 2 - .../Header/Useragent/Device/Mobile.js | 1 - src/Analyser/Header/Useragent/Device/Pda.js | 2 - src/Analyser/Header/Useragent/Device/Phone.js | 2 - .../Header/Useragent/Device/Printer.js | 2 - .../Header/Useragent/Device/Signage.js | 2 - .../Header/Useragent/Device/Tablet.js | 2 - .../Header/Useragent/Device/Television.js | 2 - src/Analyser/Header/Useragent/Engine.js | 2 - src/Analyser/Header/Useragent/Os.js | 13 +- src/Analyser/Header/Useragent/Using.js | 2 - src/Analyser/Header/Wap.js | 2 - src/model/Main.js | 3 - test/data/desktop/browser-chrome.yaml | 8 +- test/data/desktop/browser-edge.yaml | 6 +- test/data/desktop/browser-firefox.yaml | 6 +- test/data/desktop/browser-safari.yaml | 6 +- test/data/desktop/platform-electron.yaml | 10 +- test/data/mobile/manufacturer-lg.yaml | 24 +- test/data/mobile/manufacturer-motorola.yaml | 16 +- .../mobile/manufacturer-samsung-android.yaml | 56 +- test/data/mobile/manufacturer-sony.yaml | 32 +- test/data/mobile/os-ios.yaml | 14 +- test/data/tablet/manufacturer-samsung.yaml | 4 +- test/unit/MassiveTest.js | 4 +- 99 files changed, 4161 insertions(+), 5659 deletions(-) delete mode 100644 .eslintrc.json create mode 100644 eslint.config.js diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index 3539e30..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "parserOptions": { - "ecmaVersion": 6 - }, - "env": { - "node": true, - "es6": true - }, - "extends": [ - "eslint:recommended", - "google", - "plugin:prettier/recommended" - ], - "rules": { - "no-control-regex": 0, - "no-console":"warn", - "require-jsdoc": 0 - } -} \ No newline at end of file diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index dbc78dc..3707292 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -12,17 +12,15 @@ jobs: strategy: matrix: node-version: - - "16.x" - - "17.x" - - "18.x" - - "19.x" - "20.x" + - "22.x" + - "24.x" steps: + - uses: actions/checkout@v4 - name: "Set up Node.js ${{ matrix.node-version }}" - uses: actions/setup-node@v1 + uses: actions/setup-node@v4 with: node-version: "${{ matrix.node-version }}" - - uses: actions/checkout@v2 - run: npm install - run: npm run lint - run: npm run test-and-coverage diff --git a/.husky/pre-commit b/.husky/pre-commit index cf0c46b..041c660 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,4 +1 @@ -#!/usr/bin/env sh -. "$(dirname -- "$0")/_/husky.sh" - npx --no-install lint-staged diff --git a/CHANGELOG.md b/CHANGELOG.md index ffb5473..c88ae9c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,28 @@ +#### 0.8.0 (2026-08-27) + +- Sync WhichBrowser/Parser-JavaScript to [WhichBrowser/Parser-PHP@581d614](https://github.com/WhichBrowser/Parser-PHP/commit/581d614d686bfbec3529ad60562a5213ac5d8d72) [[diff](https://github.com/WhichBrowser/Parser-PHP/compare/1044880bc792dbce5948fbff22ae731c43c280d9...581d614d686bfbec3529ad60562a5213ac5d8d72)] + +- **Fixes:** + * Hide the macOS version when it is reported as the fingerprinting-mitigation frozen value (`10.15.7` for Chrome/Safari, `10.15` for Firefox) + * Recognize macOS versions starting with `2x` (e.g. macOS 26 Tahoe) — the OS X version regex previously only matched `1x` (10 to 19) + * Recover the real iOS version from Safari's `Version/` token when iOS 26+ freezes the reported OS version at `18.x`/`19.x` + * `update-chrome` pulled its data from `omahaproxy.appspot.com`, which has been shut down for years and returned 404, so it silently updated nothing. Chrome versions released after 118 (Nov 2023) had no matching entry in the stable-channel database and were consequently misidentified as `Chrome Dev`. Switched to the Chromium Dash release API + +- **Database:** + * Adds macOS nicknames `Ventura` (13), `Sonoma` (14), `Sequoia` (15) and `Tahoe` (26) + * Adds Darwin-to-macOS/iOS version mapping up to Darwin 25 (macOS 26 Tahoe / iOS 26) + * Added Chrome stable versions 119 to 153 (desktop) and 119 to 152 (mobile). Firefox and Edge were checked too — both parse the browser version directly from the UA string with no version lookup table, so current releases (Firefox 141, Edge 140) were already detected correctly + * Routine refresh of the applications, models, indices, profiles and regexes databases + +- **Operations:** + * Removed the deprecated `request` package (unmaintained, several vulnerabilities with no fix available) from the `bin/update-*` scripts in favor of the native `fetch`. This also resolved every other outstanding Dependabot alert (`js-yaml`, `handlebars`, `minimatch`, `picomatch`, `path-to-regexp`, `uuid`) by bumping `nyc`, and picking up newer transitive dependencies for `eslint`, `lint-staged` and `sinon` — none of this affects the published package, which has zero runtime dependencies + * The `bin/update-*` scripts used to swallow fetch failures silently (this is exactly how the dead `omahaproxy` endpoint above went unnoticed for years); they now log the error and exit with a non-zero status code + * Every devDependency bumped to latest: `eslint` 8→10, `husky` 8→9, `lint-staged` 15→17, `sinon` 17→22, `@hapi/lab` 25→26, `prettier`, `eslint-plugin-prettier`, `eslint-config-prettier` + * Migrated `.eslintrc.json` to flat config (`eslint.config.js`), required by ESLint 9+. Replaced `eslint-config-google` — archived by Google in 2025, last released in 2019, and no longer loadable at all under ESLint 10 since it still references core rules (`valid-jsdoc`, `require-jsdoc`) that were removed — with the ~20 rules it contributed that weren't already superseded by Prettier, declared directly so the project no longer depends on an abandoned package + * `husky` 9 dropped the `.husky/_/husky.sh` boilerplate hooks used to source; updated `.husky/pre-commit` accordingly + * `nyc` 18 and `lint-staged` 17 require Node 20+/22+ to run; updated the CI matrix from Node 16-20 (all EOL except the tail of 20.x) to the currently maintained LTS lines (20.x, 22.x, 24.x), and bumped `actions/checkout`/`actions/setup-node` to v4 + * `update-all` now runs `prettier`/`eslint --fix` on `data/` right after regenerating it (new `format-data` script), so the generated files are committed in their final formatted form instead of relying on the pre-commit hook to reformat them after the fact + #### 0.7.1 (2023-11-01) - **Database:** Added Chrome 101 to 118. diff --git a/bin/update-applications.js b/bin/update-applications.js index 4dd5bcc..2b4f40b 100644 --- a/bin/update-applications.js +++ b/bin/update-applications.js @@ -16,7 +16,6 @@ const types = [ needsBrowserConstants: true, }, ]; -const request = require('request'); const fs = require('fs'); const path = require('path'); @@ -24,14 +23,16 @@ types.forEach((type) => { console.log(`Updating application-${type.name.toLowerCase()}...`); const filepath = path.join(__dirname, `../data/applications-${type.name.toLowerCase()}.js`); const fileStream = fs.createWriteStream(filepath); - request( - `https://raw.githubusercontent.com/WhichBrowser/Parser/master/data/applications-${type.name.toLowerCase()}.php`, - (err, response = {}) => { - if (err) { - return; + const url = `https://raw.githubusercontent.com/WhichBrowser/Parser/master/data/applications-${type.name.toLowerCase()}.php`; + fetch(url) + .then((response) => { + if (!response.ok) { + throw new Error(`${url} responded with HTTP ${response.status}`); } - - let result = response.body.match(/\[[\s\S]*\]/)[0]; + return response.text(); + }) + .then((body) => { + let result = body.match(/\[[\s\S]*\]/)[0]; // Remove => and add : result = result @@ -65,6 +66,9 @@ types.forEach((type) => { fileStream.write('/* This file is automatically generated, do not edit manually! */\n'); fileStream.end(); console.log(`Downloaded new application-${type.name.toLowerCase()}...`); - } - ); + }) + .catch((err) => { + console.error(`Failed to update application-${type.name.toLowerCase()}: ${err.message}`); + process.exitCode = 1; + }); }); diff --git a/bin/update-browser-ids.js b/bin/update-browser-ids.js index 7e7b11e..d473a70 100644 --- a/bin/update-browser-ids.js +++ b/bin/update-browser-ids.js @@ -1,24 +1,32 @@ /* eslint-disable no-console */ -const request = require('request'); const fs = require('fs'); const path = require('path'); console.log('Updating browser ids...'); const filepath = path.join(__dirname, '../data/id-android.js'); const fileStream = fs.createWriteStream(filepath); -request('https://api.whichbrowser.net/resources/browser-ids.json', (err, response = {}) => { - if (err) { - return; - } - const result = JSON.parse(response.body); - fileStream.write('/* This file is automatically generated, do not edit manually! */\n\n'); - fileStream.write('exports.ANDROID_BROWSERS = {\n'); - result.forEach((val) => fileStream.write(` '${val.browserId}': ${deviceString(val.browserName)},\n`), null); - fileStream.write('};\n\n'); - fileStream.write('/* This file is automatically generated, do not edit manually! */\n'); - fileStream.end(); - console.log(`Browser ids update complete with ${result.length} entries...`); -}); +const URL = 'https://api.whichbrowser.net/resources/browser-ids.json'; + +fetch(URL) + .then((response) => { + if (!response.ok) { + throw new Error(`${URL} responded with HTTP ${response.status}`); + } + return response.json(); + }) + .then((result) => { + fileStream.write('/* This file is automatically generated, do not edit manually! */\n\n'); + fileStream.write('exports.ANDROID_BROWSERS = {\n'); + result.forEach((val) => fileStream.write(` '${val.browserId}': ${deviceString(val.browserName)},\n`), null); + fileStream.write('};\n\n'); + fileStream.write('/* This file is automatically generated, do not edit manually! */\n'); + fileStream.end(); + console.log(`Browser ids update complete with ${result.length} entries...`); + }) + .catch((err) => { + console.error(`Failed to update browser ids: ${err.message}`); + process.exitCode = 1; + }); /** * Escapes \ and ' inside string diff --git a/bin/update-chrome.js b/bin/update-chrome.js index 78d6db2..5a242a9 100644 --- a/bin/update-chrome.js +++ b/bin/update-chrome.js @@ -1,68 +1,83 @@ /* eslint-disable no-console */ -const request = require('request'); const fs = require('fs'); const path = require('path'); const Chrome = require('../src/data/Chrome'); console.log('Updating chrome versions...'); const filepath = path.join(__dirname, '../data/browsers-chrome.js'); -const fileStream = fs.createWriteStream(filepath); -const stable = { - desktop: [], - mobile: [], -}; -function comparator(a, b) { - return parseInt(a, 10) - parseInt(b, 10); -} -request('http://omahaproxy.appspot.com/history', (err, response = {}) => { - if (err) { - return; - } - const omaha = response.body.split('\n'); - omaha.forEach((line) => { - const [os, stability, version] = line.split(','); - if (os === 'mac' && stability === 'stable') { - stable.desktop.push(version.split('.').slice(0, 3).join('.')); - } - if (os === 'android' && stability === 'stable') { - stable.mobile.push(version.split('.').slice(0, 3).join('.')); - } - }); - - stable.desktop.sort(comparator); - stable.mobile.sort(comparator); +/* OmahaProxy (the previous source for this data) has been shut down; the Chromium Dash + * release API is the maintained replacement. `num` is capped server-side at 1000, which + * is enough to cover the full Stable release history for both platforms. */ +const ENDPOINT = 'https://chromiumdash.appspot.com/fetch_releases?channel=Stable&num=1000&platform='; - let countNewDesktop = 0; - stable.desktop.forEach((version) => { - if (!Chrome.DESKTOP[version]) { - Chrome.DESKTOP[version] = 'stable'; - countNewDesktop++; +function compareVersions(a, b) { + const partsA = a.split('.').map(Number); + const partsB = b.split('.').map(Number); + for (let i = 0; i < Math.max(partsA.length, partsB.length); i++) { + const diff = (partsA[i] || 0) - (partsB[i] || 0); + if (diff !== 0) { + return diff; } - }); + } + return 0; +} - let countNewMobile = 0; - stable.mobile.forEach((version) => { - if (!Chrome.MOBILE[version]) { - Chrome.MOBILE[version] = 'stable'; - countNewMobile++; - } - }); +function fetchPlatform(platform, callback) { + const url = ENDPOINT + platform; + fetch(url) + .then((response) => { + if (!response.ok) { + throw new Error(`${url} responded with HTTP ${response.status}`); + } + return response.json(); + }) + .then((body) => { + if (!Array.isArray(body)) { + throw new Error(`${url} returned an unexpected payload`); + } + callback(body.map((release) => release.version.split('.').slice(0, 3).join('.'))); + }) + .catch((err) => { + console.error(`Failed to fetch ${platform} releases: ${err.message}`); + process.exitCode = 1; + callback([]); + }); +} + +fetchPlatform('Mac', (desktopVersions) => { + fetchPlatform('Android', (mobileVersions) => { + let countNewDesktop = 0; + desktopVersions.forEach((version) => { + if (!Chrome.DESKTOP[version]) { + Chrome.DESKTOP[version] = 'stable'; + countNewDesktop++; + } + }); - fileStream.write('module.exports = {\n'); - fileStream.write(' DESKTOP: {\n'); - Object.keys(Chrome.DESKTOP).forEach((version) => - fileStream.write(` '${version}': '${Chrome.DESKTOP[version]}',\n`) - ); - fileStream.write(' },\n'); - fileStream.write(' MOBILE: {\n'); - Object.keys(Chrome.MOBILE).forEach((version) => - fileStream.write(` '${version}': '${Chrome.MOBILE[version]}',\n`) - ); - fileStream.write(' },\n'); - fileStream.write('};\n'); + let countNewMobile = 0; + mobileVersions.forEach((version) => { + if (!Chrome.MOBILE[version]) { + Chrome.MOBILE[version] = 'stable'; + countNewMobile++; + } + }); - fileStream.end(); + const fileStream = fs.createWriteStream(filepath); + fileStream.write('module.exports = {\n'); + fileStream.write(' DESKTOP: {\n'); + Object.keys(Chrome.DESKTOP) + .sort(compareVersions) + .forEach((version) => fileStream.write(` '${version}': '${Chrome.DESKTOP[version]}',\n`)); + fileStream.write(' },\n'); + fileStream.write(' MOBILE: {\n'); + Object.keys(Chrome.MOBILE) + .sort(compareVersions) + .forEach((version) => fileStream.write(` '${version}': '${Chrome.MOBILE[version]}',\n`)); + fileStream.write(' },\n'); + fileStream.write('};\n'); + fileStream.end(); - console.log(`Updated chrome with ${countNewDesktop} new stable version for DEKSTOP`); - console.log(`Updated chrome with ${countNewMobile} new stable version for MOBILE`); + console.log(`Updated chrome with ${countNewDesktop} new stable version for DEKSTOP`); + console.log(`Updated chrome with ${countNewMobile} new stable version for MOBILE`); + }); }); diff --git a/bin/update-indices.js b/bin/update-indices.js index 0f8566a..49438ac 100644 --- a/bin/update-indices.js +++ b/bin/update-indices.js @@ -66,21 +66,22 @@ function updateIndeces(type) { * @param {string} type */ function updateIndecesFromWeb(type) { - const request = require('request'); const fs = require('fs'); const path = require('path'); console.log(`Updating indices models-${type}...`); const filepath = path.join(__dirname, `../data/indices/models-${type}.js`); const fileStream = fs.createWriteStream(filepath); - request( - `https://raw.githubusercontent.com/WhichBrowser/Parser/master/data/indices/models-${type}.php`, - (err, response = {}) => { - if (err) { - return; + const url = `https://raw.githubusercontent.com/WhichBrowser/Parser/master/data/indices/models-${type}.php`; + fetch(url) + .then((response) => { + if (!response.ok) { + throw new Error(`${url} responded with HTTP ${response.status}`); } - - let result = response.body.match(/array \(([\s\S]*)\);/)[1]; + return response.text(); + }) + .then((body) => { + let result = body.match(/array \(([\s\S]*)\);/)[1]; // Replace '@50' => with '@50': result = result.replace(/('@.*') =>/g, '$1:'); @@ -97,8 +98,11 @@ function updateIndecesFromWeb(type) { fileStream.write('/* This file is automatically generated, do not edit manually! */\n'); fileStream.end(); console.log(`Downloaded new application-${type}...`); - } - ); + }) + .catch((err) => { + console.error(`Failed to update indices/models-${type}: ${err.message}`); + process.exitCode = 1; + }); } /** * Sort object by keys diff --git a/bin/update-models.js b/bin/update-models.js index 20d0865..76cf8ec 100644 --- a/bin/update-models.js +++ b/bin/update-models.js @@ -50,7 +50,6 @@ const models = [ }, ]; -const request = require('request'); const fs = require('fs'); const path = require('path'); @@ -58,14 +57,16 @@ models.forEach((type) => { console.log(`Updating application-${type.name.toLowerCase()}...`); const filepath = path.join(__dirname, `../data/models-${type.name.toLowerCase()}.js`); const fileStream = fs.createWriteStream(filepath); - request( - `https://raw.githubusercontent.com/WhichBrowser/Parser/master/data/models-${type.name.toLowerCase()}.php`, - (err, response = {}) => { - if (err) { - return; + const url = `https://raw.githubusercontent.com/WhichBrowser/Parser/master/data/models-${type.name.toLowerCase()}.php`; + fetch(url) + .then((response) => { + if (!response.ok) { + throw new Error(`${url} responded with HTTP ${response.status}`); } - - let result = response.body.match(/\[[\s\S]*\]/)[0]; + return response.text(); + }) + .then((body) => { + let result = body.match(/\[[\s\S]*\]/)[0]; // Remove => and add : result = result.replace(/=>/g, ':'); @@ -116,6 +117,9 @@ models.forEach((type) => { fileStream.write('/* This file is automatically generated, do not edit manually! */\n'); fileStream.end(); console.log(`Downloaded new application-${type.name.toLowerCase()}...`); - } - ); + }) + .catch((err) => { + console.error(`Failed to update models-${type.name.toLowerCase()}: ${err.message}`); + process.exitCode = 1; + }); }); diff --git a/bin/update-profiles.js b/bin/update-profiles.js index 1d200be..58fc9bb 100644 --- a/bin/update-profiles.js +++ b/bin/update-profiles.js @@ -1,36 +1,44 @@ /* eslint-disable no-console */ -const request = require('request'); const fs = require('fs'); const path = require('path'); console.log('Updating profiles...'); const filepath = path.join(__dirname, '../data/profiles.js'); const fileStream = fs.createWriteStream(filepath); -request('https://api.whichbrowser.net/resources/profiles.json', (err, response = {}) => { - if (err) { - return; - } - const result = JSON.parse(response.body); - fileStream.write('/* This file is automatically generated, do not edit manually! */\n\n'); - fileStream.write('/* eslint-disable max-len */\n\n'); - fileStream.write("const DeviceType = require('../src/constants').deviceType;\n\n"); - fileStream.write('exports.PROFILES = {\n'); - result.forEach( - (profile) => - fileStream.write( - ` ${escapeString(profile.url)}: ` + - `[${escapeString(profile.deviceManufacturer)}, ${escapeString(profile.deviceModel)}, ` + - `${escapeString(profile.osName)}` + - `${deviceType(profile.deviceType) ? `, ${deviceType(profile.deviceType)}` : ''}],\n` - ), - null - ); - fileStream.write('};\n\n'); - fileStream.write('/* eslint-enable max-len */\n\n'); - fileStream.write('/* This file is automatically generated, do not edit manually! */\n'); - fileStream.end(); - console.log(`Downloaded ${result.length} profiles...`); -}); +const URL = 'https://api.whichbrowser.net/resources/profiles.json'; + +fetch(URL) + .then((response) => { + if (!response.ok) { + throw new Error(`${URL} responded with HTTP ${response.status}`); + } + return response.json(); + }) + .then((result) => { + fileStream.write('/* This file is automatically generated, do not edit manually! */\n\n'); + fileStream.write('/* eslint-disable max-len */\n\n'); + fileStream.write("const DeviceType = require('../src/constants').deviceType;\n\n"); + fileStream.write('exports.PROFILES = {\n'); + result.forEach( + (profile) => + fileStream.write( + ` ${escapeString(profile.url)}: ` + + `[${escapeString(profile.deviceManufacturer)}, ${escapeString(profile.deviceModel)}, ` + + `${escapeString(profile.osName)}` + + `${deviceType(profile.deviceType) ? `, ${deviceType(profile.deviceType)}` : ''}],\n` + ), + null + ); + fileStream.write('};\n\n'); + fileStream.write('/* eslint-enable max-len */\n\n'); + fileStream.write('/* This file is automatically generated, do not edit manually! */\n'); + fileStream.end(); + console.log(`Downloaded ${result.length} profiles...`); + }) + .catch((err) => { + console.error(`Failed to update profiles: ${err.message}`); + process.exitCode = 1; + }); /** * Escapes \ and ' inside string diff --git a/data/applications-bots.js b/data/applications-bots.js index 06d3510..4f348b4 100644 --- a/data/applications-bots.js +++ b/data/applications-bots.js @@ -199,8 +199,8 @@ exports.BOTS = [ { name: 'Majestic MJ12 Bot', id: 'mj12bot', regexp: /MJ12bot\/v([0-9.]*)/u }, { name: 'Majestic MJ12 Bot', id: 'mj12bot', regexp: /mj12bot/u }, { name: 'Mapian News Bot', id: 'mapion', regexp: /mapion-news-bot\/([0-9.]*)/u }, - { name: 'Mail.ru Bot', id: 'mail.ru', regexp: /Mail\.RU_Bot\/Img\/([0-9.]*)/i }, - { name: 'Mail.ru Bot', id: 'mail.ru', regexp: /Mail\.RU_Bot\/([0-9.]*)/i }, + { name: 'Mail.ru Bot', id: 'mail\.ru', regexp: /Mail\.RU_Bot\/Img\/([0-9.]*)/i }, + { name: 'Mail.ru Bot', id: 'mail\.ru', regexp: /Mail\.RU_Bot\/([0-9.]*)/i }, { name: 'Medium Bot', id: 'medium', regexp: /Mediumbot-MetaTagFetcher\/([0-9.]*)/u }, { name: 'Medium Bot', id: 'medium', regexp: /Mediumbot-ProxyFetcher\/([0-9.]*)/u }, { name: 'Mega Index Bot', id: 'megaindex', regexp: /MegaIndex\.ru\/([0-9.]*)/u }, @@ -397,7 +397,7 @@ exports.BOTS = [ { name: 'PHP', id: 'pear', regexp: /PEAR HTTP_Request class/u }, { name: 'PHP', id: 'php', regexp: /CakePHP/u }, { name: 'PHP', id: 'zend', regexp: /Zend_Http_Client/u }, - { name: 'Ruby', id: 'ruby', regexp: /^Ruby/u } + { name: 'Ruby', id: 'ruby', regexp: /^Ruby/u }, ]; /* This file is automatically generated, do not edit manually! */ diff --git a/data/applications-browsers.js b/data/applications-browsers.js index 16eee80..86cf1b3 100644 --- a/data/applications-browsers.js +++ b/data/applications-browsers.js @@ -69,7 +69,7 @@ exports.BROWSERS = { id: 'chromeplus', regexp: /ChromePlus(?:\/([0-9.]*))?$/u, details: 3, - type: DeviceType.DESKTOP + type: DeviceType.DESKTOP, }, { name: 'Colibri', id: 'colibri', regexp: /Colibri\/([0-9.]*)/u, type: DeviceType.DESKTOP }, // see: https://colibri.opqr.co/ { name: 'Columbus', id: 'columbus', regexp: /Columbus\/([0-9.]*)/u, type: DeviceType.DESKTOP }, @@ -81,7 +81,7 @@ exports.BROWSERS = { id: 'dragon', regexp: /IceDragon\/([0-9.]*)/u, details: 2, - type: DeviceType.DESKTOP + type: DeviceType.DESKTOP, }, { name: 'Conkeror', id: 'conkeror', regexp: /[Cc]onkeror\/([0-9.]*)/u }, { name: 'Coc Coc', id: 'coc', regexp: /coc_coc_browser\/([0-9.]*)/u, type: DeviceType.DESKTOP }, // see: https://coccoc.com/en/ @@ -90,7 +90,7 @@ exports.BROWSERS = { id: 'coolnovo', regexp: /(?:CoolNovo|CoolNovoChromePlus)\/([0-9.]*)/u, details: 3, - type: DeviceType.DESKTOP + type: DeviceType.DESKTOP, }, { name: 'Corom Browser', id: 'corom', regexp: / CoRom\/([0-9.]*)/u, type: DeviceType.MOBILE }, // see: https://apkpure.com/corom-browser-for-android/com.coccoc.corom { name: 'Crazy Browser', id: 'crazy', regexp: /Crazy Browser ([0-9.]*)/u, type: DeviceType.DESKTOP }, @@ -213,7 +213,7 @@ exports.BROWSERS = { name: 'VMware Workspace ONE', id: 'airwatch', regexp: /Air[Ww]atch Browser v([0-9.]*)/u, - type: DeviceType.DESKTOP + type: DeviceType.DESKTOP, }, { name: 'Vonkeror', id: 'vonkeror', regexp: /Vonkeror\/([0-9.]*)/u, type: DeviceType.DESKTOP }, { name: 'Voyager', id: 'voyager', regexp: /AmigaVoyager\/([0-9.]*)/u }, @@ -255,7 +255,7 @@ exports.BROWSERS = { { name: 'EMOBILE Browser', id: 'www browser', regexp: /WWW Browser\/ver([0-9.]*)/u }, { name: 'Epic Browser', id: 'epic', regexp: / Epic\/([0-9.]*)/u, type: DeviceType.MOBILE }, // see: https://en.wikipedia.org/wiki/Epic_(web_browser) { name: 'EUI Browser', id: 'eui', regexp: /EUI Browser\/[^0-9\s]*([0-9.]*)/u, details: 2 }, - { name: 'Go.Web', id: 'go.web', regexp: /Go\.Web\/([0-9.]*)/u }, // used on early Blackberry, by GoAmerica + { name: 'Go.Web', id: 'go\.web', regexp: /Go\.Web\/([0-9.]*)/u }, // used on early Blackberry, by GoAmerica { name: 'Helium', id: 'helium', regexp: /HeliumMobileBrowser\/([0-9.]*)/u }, { name: 'HeyTap Browser', id: 'heytap', regexp: /HeyTapBrowser\/([0-9.]*)/u, type: DeviceType.MOBILE }, { name: 'Huohou Browser', id: 'huohoubrowser', regexp: /HuohouBrowser\/([0-9.]*)/u }, @@ -267,7 +267,7 @@ exports.BROWSERS = { name: 'Jig Browser', id: 'jig browser', regexp: /jig browser(?: web| core|9i?)?;? ?([0-9.]+)?/u, - type: DeviceType.MOBILE + type: DeviceType.MOBILE, }, { name: 'Jumanji', id: 'jumanji', regexp: /jumanji/u }, // see: jumanji browser ubuntu { name: 'K.Browser', id: 'tnsbrowser', regexp: /TNSBrowser\/([0-9.]*)/u, type: DeviceType.MOBILE }, // see: https://play.google.com/store/apps/details?id=com.tnsua.browser @@ -298,7 +298,7 @@ exports.BROWSERS = { id: 'openwave', regexp: /Openwave Mobile Browser ([0-9.]*)/u, details: 2, - type: DeviceType.MOBILE + type: DeviceType.MOBILE, }, { name: 'Openwave', id: 'openwave', regexp: /Browser\/OpenWave([0-9.]*)/u, details: 2, type: DeviceType.MOBILE }, { @@ -306,7 +306,7 @@ exports.BROWSERS = { id: 'up', regexp: /UP\. ?Browser(?:\/([a-z0-9.]*))?/iu, details: 2, - type: DeviceType.MOBILE + type: DeviceType.MOBILE, }, { name: 'Openwave', id: 'km', regexp: /KM\.Browser\/([0-9.]+)/iu, details: 2, type: DeviceType.MOBILE }, { name: 'Openwave', id: 'up', regexp: /UP\/([0-9.]+)/u, details: 2, type: DeviceType.MOBILE }, @@ -387,7 +387,7 @@ exports.BROWSERS = { { name: 'Wyzo', id: 'wyzo', regexp: /Wyzo\/([0-9.]*)/u, details: 3 }, { name: 'Yelang', id: 'yelang', regexp: /Yelang\/([0-9.]*)/u, details: 3 }, // see: wellgo.org { name: 'YRC Weblink', id: 'yrcweb', regexp: /YRCWeblink\/([0-9.]*)/u }, - { name: '冲浪浏览器', id: 'surf', regexp: /CMSurfClient-Android/u } + { name: '冲浪浏览器', id: 'surf', regexp: /CMSurfClient-Android/u }, ], [BrowserType.BROWSER_TEXT]: [ @@ -396,7 +396,7 @@ exports.BROWSERS = { { name: 'Lynx', id: 'lynx', regexp: /Lynx \(textmode\)/u }, { name: 'ELinks', id: 'links', regexp: /E[Ll]inks(?:\/| \()([0-9.]*[0-9])/u, type: DeviceType.DESKTOP }, { name: 'Links', id: 'links', regexp: /Links \(([0-9.]*)/u }, - { name: 'w3m', id: 'w3m', regexp: /w3m\/([0-9.]*)/u } + { name: 'w3m', id: 'w3m', regexp: /w3m\/([0-9.]*)/u }, ], [BrowserType.UNKNOWN]: [ @@ -406,8 +406,8 @@ exports.BROWSERS = { { name: 'Open Sankoré', id: 'sankore', regexp: /Open-Sankore\/([0-9.]*)/u, type: DeviceType.WHITEBOARD }, { name: 'Adapi', id: 'adapi', regexp: / ADAPI\/([0-9.]*)/u, hidden: true, type: DeviceType.SIGNAGE }, { name: 'BrightSign', id: 'brightsign', regexp: /BrightSign\/([0-9.]*)/u, type: DeviceType.SIGNAGE }, - { name: 'Coship MMCP', id: 'coship', regexp: /Coship_MMCP_([0-9.]*)/u, type: DeviceType.SIGNAGE } - ] + { name: 'Coship MMCP', id: 'coship', regexp: /Coship_MMCP_([0-9.]*)/u, type: DeviceType.SIGNAGE }, + ], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/applications-others.js b/data/applications-others.js index 72c0bac..a659925 100644 --- a/data/applications-others.js +++ b/data/applications-others.js @@ -23,7 +23,7 @@ exports.OTHERS = { { name: 'FlyCast', id: 'flycast', regexp: /FlyCast\/([0-9.]*)/u }, { name: 'Boxee', id: 'boxee', regexp: /Boxee(?:\/([0-9.]*))?/u, type: DeviceType.TELEVISION }, { name: 'Kodi', id: 'kodi', regexp: /^Kodi\/([0-9.]+)/u, details: 2 }, - { name: 'XBMC', id: 'xbmc', regexp: /^XBMC\/(?:PRE-)?([0-9.]+)/u, details: 2 } + { name: 'XBMC', id: 'xbmc', regexp: /^XBMC\/(?:PRE-)?([0-9.]+)/u, details: 2 }, ], [BrowserType.APP_EMAIL]: [ @@ -34,32 +34,32 @@ exports.OTHERS = { id: 'outlook', regexp: /Microsoft Outlook IMO, Build ([0-9.]*)/u, details: 2, - type: DeviceType.DESKTOP + type: DeviceType.DESKTOP, }, { name: 'Microsoft Outlook', id: 'outlook', regexp: /Microsoft Outlook ([0-9.]*)/u, details: 2, - type: DeviceType.DESKTOP + type: DeviceType.DESKTOP, }, { name: 'Microsoft Outlook Express', id: 'outlook', regexp: /Outlook-Express\/([0-9.]*)/u, details: 2, - type: DeviceType.DESKTOP + type: DeviceType.DESKTOP, }, { name: 'Lotus Notes', id: 'lotus', regexp: /Lotus-Notes\/([0-9.]*)/u, details: 2, type: DeviceType.DESKTOP }, { name: 'Postbox', id: 'postbox', regexp: /Postbox[\/ ]([0-9.]*)/u, details: 2 }, { name: 'The Bat!', id: 'bat', regexp: /The Bat! ([0-9.]*)/u, details: 3 }, - { name: 'Yahoo Mail', id: 'yahoo', regexp: /YahooMobile\/1.0 \(mail; ([0-9.]+)\)/u, details: 3 } + { name: 'Yahoo Mail', id: 'yahoo', regexp: /YahooMobile\/1.0 \(mail; ([0-9.]+)\)/u, details: 3 }, ], [BrowserType.APP_NEWS]: [ { name: 'Daum', id: 'daum', regexp: /DaumApps\/([0-9.]*)/u }, { name: 'Daum', id: 'daum', regexp: /daumcafe\/([0-9.]*)/u }, - { name: 'Flipboard', id: 'flipboard', regexp: /Flipboard\/([0-9.]+)/u } + { name: 'Flipboard', id: 'flipboard', regexp: /Flipboard\/([0-9.]+)/u }, ], [BrowserType.APP_FEEDREADER]: [ @@ -80,7 +80,7 @@ exports.OTHERS = { { name: 'ReedKit', id: 'reedkit', regexp: /ReedKit\/([0-9.]*)/u, type: DeviceType.DESKTOP }, { name: 'Rome', id: 'rome', regexp: /Rome Client/u }, { name: 'jsRSS++', id: 'rss', regexp: /jsRSS\+\+\/([0-9.]*)/u }, - { name: 'Windows RSS Platorm', id: 'rss', regexp: /Windows-RSS-Platform\/([0-9.]*)/u } + { name: 'Windows RSS Platorm', id: 'rss', regexp: /Windows-RSS-Platform\/([0-9.]*)/u }, ], [BrowserType.APP_PODCAST]: [{ name: 'Ziepod', id: 'ziepod', regexp: /Ziepod\+? ([0-9.]*)/u }], @@ -101,7 +101,7 @@ exports.OTHERS = { { name: 'Yahoo Messenger', id: 'yahoo', regexp: /YahooMobile\/1.0 \(im; ([0-9.]+)\)/u, details: 3 }, { name: 'Yammer', id: 'yammer', regexp: /Yammer\/([0-9.]*)/u, details: 2 }, { name: 'Zalo', id: 'zalo', regexp: /Zalo-win32-([0-9.]*)/u }, - { name: 'Zalo', id: 'zalo', regexp: / Zalo\/([0-9.]*)/u } + { name: 'Zalo', id: 'zalo', regexp: / Zalo\/([0-9.]*)/u }, ], [BrowserType.APP_SOCIAL]: [ @@ -117,7 +117,7 @@ exports.OTHERS = { { name: 'Twitter', id: 'twitter', regexp: /TwitterAndroid/u }, { name: 'Twitter', id: 'twitter', regexp: /Twitter for iPhone/u }, { name: 'WordPress', id: 'wp-android', regexp: /wp-android\/([0-9.]*)/u }, - { name: 'Yelp', id: 'yelp', regexp: /YelpApp\/([0-9.]*)/u } + { name: 'Yelp', id: 'yelp', regexp: /YelpApp\/([0-9.]*)/u }, ], [BrowserType.APP_OFFICE]: [ @@ -128,7 +128,7 @@ exports.OTHERS = { { name: 'Microsoft OneNote', id: 'office', regexp: /Microsoft Office OneNote ([0-9.]*)/u }, { name: 'Microsoft PowerPoint', id: 'office', regexp: /Microsoft Office PowerPoint ([0-9.]*)/u }, { name: 'Microsoft Word', id: 'office', regexp: /Microsoft Office Word ([0-9.]*)/u }, - { name: 'OpenOffice', id: 'office', regexp: /OpenOffice\/([0-9.]*)/u } + { name: 'OpenOffice', id: 'office', regexp: /OpenOffice\/([0-9.]*)/u }, ], [BrowserType.APP_SEARCH]: [ @@ -137,7 +137,7 @@ exports.OTHERS = { { name: 'Google Search', id: 'gsa', regexp: /GSA\/([0-9.]*)/u, details: 3 }, { name: 'NAVER', id: 'naver', regexp: /NAVER\(inapp; search; [0-9]+; ([0-9.]*)\)/u }, { name: 'Sogou Search', id: 'sogousearch', regexp: /SogouSearch Android(?:[0-9.]*) version([0-9.]*)/u }, - { name: 'Yandex Search', id: 'yandex', regexp: /YandexSearch\/([0-9.]*)/u } + { name: 'Yandex Search', id: 'yandex', regexp: /YandexSearch\/([0-9.]*)/u }, ], [BrowserType.APP_EDITOR]: [ @@ -150,22 +150,26 @@ exports.OTHERS = { id: 'frontpage', regexp: /MS ?FrontPage[ \/]([0-9.]*)/u, details: 2, - type: DeviceType.DESKTOP + type: DeviceType.DESKTOP, }, { name: 'W3C Amaya', id: 'amaya', regexp: /amaya\/([0-9.]*)/u }, - { name: 'IBM WebSphere Homepage Builder', id: 'websphere', regexp: /IBM WebSphere Homepage Builder V([0-9.]*)/u } + { + name: 'IBM WebSphere Homepage Builder', + id: 'websphere', + regexp: /IBM WebSphere Homepage Builder V([0-9.]*)/u, + }, ], [BrowserType.APP_DOWNLOAD]: [ { name: 'Download Manager', id: 'download', regexp: /AndroidDownloadManager\//u }, - { name: 'Tanso Download Manager', id: 'tansodl', regexp: /TansoDL/u } + { name: 'Tanso Download Manager', id: 'tansodl', regexp: /TansoDL/u }, ], [BrowserType.APP_GAME]: [ { name: 'EA Origin', id: 'origin', regexp: /Origin\/([0-9.]*)/u }, { name: 'SecondLife', id: 'secondlife', regexp: /SecondLife\/([0-9.]*)/u }, { name: 'Valve Steam', id: 'valve', regexp: /Valve Steam/u }, - { name: 'Raptr', id: 'raptr', regexp: /Raptr/u } + { name: 'Raptr', id: 'raptr', regexp: /Raptr/u }, ], [BrowserType.APP]: [ @@ -174,8 +178,8 @@ exports.OTHERS = { { name: 'Google Earth', id: 'google', regexp: /Google Earth\/([0-9.]*)/u, details: 2 }, { name: 'Google Desktop', id: 'google', regexp: /Google Desktop\/([0-9.]*)/u, details: 2 }, { name: 'Leechcraft', id: 'leechcraft', regexp: /Leechcraft(?:\/([0-9.]*))?/u, details: 2 }, - { name: 'Lotus Expeditor', id: 'expeditor', regexp: /Gecko Expeditor ([0-9.]*)/u, details: 3 } - ] + { name: 'Lotus Expeditor', id: 'expeditor', regexp: /Gecko Expeditor ([0-9.]*)/u, details: 3 }, + ], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/browsers-chrome.js b/data/browsers-chrome.js index 49cb07f..f68ba02 100644 --- a/data/browsers-chrome.js +++ b/data/browsers-chrome.js @@ -121,12 +121,49 @@ module.exports = { '116.0.5845': 'stable', '117.0.5938': 'stable', '118.0.5993': 'stable', + '119.0.6045': 'stable', + '120.0.6099': 'stable', + '121.0.6167': 'stable', + '122.0.6261': 'stable', + '123.0.6312': 'stable', + '124.0.6367': 'stable', + '125.0.6422': 'stable', + '126.0.6478': 'stable', + '127.0.6533': 'stable', + '128.0.6613': 'stable', + '129.0.6668': 'stable', + '130.0.6723': 'stable', + '131.0.6778': 'stable', + '132.0.6834': 'stable', + '133.0.6943': 'stable', + '134.0.6998': 'stable', + '135.0.7049': 'stable', + '136.0.7103': 'stable', + '137.0.7151': 'stable', + '138.0.7204': 'stable', + '139.0.7258': 'stable', + '140.0.7339': 'stable', + '141.0.7390': 'stable', + '142.0.7444': 'stable', + '143.0.7499': 'stable', + '144.0.7559': 'stable', + '145.0.7632': 'stable', + '146.0.7680': 'stable', + '147.0.7727': 'stable', + '148.0.7778': 'stable', + '149.0.7827': 'stable', + '150.0.7871': 'stable', + '151.0.7922': 'stable', + '152.0.7977': 'stable', + '153.0.8010': 'stable', }, MOBILE: { '16.0.912': 'beta', '18.0.1025': 'stable', '25.0.1364': 'stable', + '26.0.1410': 'stable', '27.0.1453': 'stable', + '28.0.1500': 'stable', '29.0.1547': 'stable', '30.0.1599': 'stable', '31.0.1650': 'stable', @@ -216,5 +253,39 @@ module.exports = { '116.0.5845': 'stable', '117.0.5938': 'stable', '118.0.5993': 'stable', + '119.0.6045': 'stable', + '120.0.6099': 'stable', + '121.0.6167': 'stable', + '122.0.6261': 'stable', + '123.0.6312': 'stable', + '124.0.6367': 'stable', + '125.0.6422': 'stable', + '126.0.6478': 'stable', + '127.0.6533': 'stable', + '128.0.6613': 'stable', + '129.0.6668': 'stable', + '130.0.6723': 'stable', + '131.0.6778': 'stable', + '132.0.6834': 'stable', + '133.0.6943': 'stable', + '134.0.6998': 'stable', + '135.0.7049': 'stable', + '136.0.7103': 'stable', + '137.0.7151': 'stable', + '138.0.7204': 'stable', + '139.0.7258': 'stable', + '140.0.7339': 'stable', + '141.0.7390': 'stable', + '142.0.7444': 'stable', + '143.0.7499': 'stable', + '144.0.7559': 'stable', + '145.0.7632': 'stable', + '146.0.7680': 'stable', + '147.0.7727': 'stable', + '148.0.7778': 'stable', + '149.0.7827': 'stable', + '150.0.7871': 'stable', + '151.0.7922': 'stable', + '152.0.7977': 'stable', }, }; diff --git a/data/indices/models-android.js b/data/indices/models-android.js index 273ad85..0d368d5 100644 --- a/data/indices/models-android.js +++ b/data/indices/models-android.js @@ -1,7 +1,5 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.ANDROID_INDEX = { '@': [ 'A[0-9]{3,3}!!', @@ -56,7 +54,7 @@ exports.ANDROID_INDEX = { '(ZTE ?)?V ?[0-9]{3,3}!!', '(ZTE ?)?X[0-9]{3,3}!!', '(ZTE )?Z[0-9]!!', - '[a-z][a-z](?:-[a-z][a-z])?, SmartTabII7!' + '[a-z][a-z](?:-[a-z][a-z])?, SmartTabII7!', ], '@00': ['001DL', '003P', '003Z', '008Z', '009Z'], '@0P': ['0PCV1', '0PM92', '0PJA1!', '0PJA2!', '0PKV1', '0PAJ5'], @@ -108,7 +106,7 @@ exports.ANDROID_INDEX = { '4060[SW]!', '40[0-9]SC!!', '40[0-9]SO!!', - '402ZT' + '402ZT', ], '@48': ['(48|50|55)AX600C!'], '@5': ['(3|5|6|7)0[0-9]SH!!'], @@ -176,7 +174,7 @@ exports.ANDROID_INDEX = { '(48|50|55)AX600C!', '5080C Pro', '50[0-9]SO!!', - '502ZT' + '502ZT', ], '@55': ['5560S', '(48|50|55)AX600C!'], '@58': [5832, 5855, 5860, '5860A', '5860E', '5860S', 5870], @@ -203,7 +201,7 @@ exports.ANDROID_INDEX = { '602LV', '60[0-9]SO!!', '602ZT', - '6034R ORANGE Niva' + '6034R ORANGE Niva', ], '@66': [6607], '@70': [ @@ -220,7 +218,7 @@ exports.ANDROID_INDEX = { '7053[D]!', '7055[AW]!', '704DC', - '70[0-9]SO!!' + '70[0-9]SO!!', ], '@71': ['710C'], '@72': [7260, 7266], @@ -239,7 +237,7 @@ exports.ANDROID_INDEX = { '801a', '801s', '802w', - '800P31C' + '800P31C', ], '@81': ['8190Q'], '@82': ['825 T-Mobile'], @@ -266,7 +264,7 @@ exports.ANDROID_INDEX = { '9021[AM]!', '909d', 9088, - '9020[A]!' + '9020[A]!', ], '@93': [9300, '9300+', '932i'], '@97': ['97FC'], @@ -305,7 +303,7 @@ exports.ANDROID_INDEX = { 'A11(M5A7)', 'A11s(M5A7)', 'A15(E6C2)', - 'A11 Pro Max' + 'A11 Pro Max', ], '@A2': ['A206G', 'A2', 'A21'], '@A3': [ @@ -324,7 +322,7 @@ exports.ANDROID_INDEX = { 'A33w', 'A37f', 'A37fw', - 'A3' + 'A3', ], '@A4': [ 'A450TL', @@ -340,7 +338,7 @@ exports.ANDROID_INDEX = { 'A400CG', 'A45', 'A47', - 'A4' + 'A4', ], '@A5': [ 'A520L', @@ -367,7 +365,7 @@ exports.ANDROID_INDEX = { 'A51f', 'A51w', 'A5000', - 'a5' + 'a5', ], '@A6': ['A621BL', 'A621R', 'A622GL', 'A622VL', 'A6 Duo', 'A6 Lite', 'A6277', 'A6020', 'A6S'], '@A7': [ @@ -393,7 +391,7 @@ exports.ANDROID_INDEX = { 'A73', 'A7272+', 'A70(CY6T)', - 'A78h四核(C1V3)' + 'A78h四核(C1V3)', ], '@A8': [ 'A845L', @@ -417,7 +415,7 @@ exports.ANDROID_INDEX = { 'A80 se四核(M5MC)', 'A80HD四核(C4H6)', 'A88 mini四核(M1C5)', - 'A81E' + 'A81E', ], '@A9': ['A995L', 'A95', 'A97i', '(GIO-)?(GiONEE[- ])?A9$!', 'A90S', 'A953', 'A955', 'A9 Pro'], '@AA': ['AA3-600'], @@ -437,7 +435,7 @@ exports.ANDROID_INDEX = { 'AC2003', 'ACT2000', 'ACU Volvo', - 'Acqua' + 'Acqua', ], '@AD': [ 'ADT-1', @@ -493,7 +491,7 @@ exports.ANDROID_INDEX = { 'AD6893G', 'AD682H', 'Admire Alpha', - 'Admire Curve' + 'Admire Curve', ], '@AE': ['Aero A2-110', 'Aegis2'], '@AF': ['AFTB', 'AFTS', 'AFTN', 'AFTRS', 'AFTM', 'AFTT'], @@ -505,7 +503,7 @@ exports.ANDROID_INDEX = { 'AG Chrome Go Tab 7.0', 'AGS-(L09|W09)!', 'AGS2-(L09|W09)!', - '(KATBL|Kogan|Agora)!!' + '(KATBL|Kogan|Agora)!!', ], '@AI': [ 'aigoPad', @@ -526,7 +524,7 @@ exports.ANDROID_INDEX = { '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!', 'Air!!', 'Aiki-4S', - 'Aiki-5' + 'Aiki-5', ], '@AK': ['AK330', 'AK330s', 'AKAI NEO', 'AKAI N8800', 'AKAI PHA-4800', 'AKAIPHA 5800', 'AKAI MIDMA-7002S'], '@AL': [ @@ -572,7 +570,7 @@ exports.ANDROID_INDEX = { 'Alfa L', 'Ally', 'Altus 18', - 'Altus 24' + 'Altus 24', ], '@AM': [ 'amd brazos', @@ -604,7 +602,7 @@ exports.ANDROID_INDEX = { '(Amaze|Hitech)!!', 'Amaze 4G', '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!', - '(Amazing|Fantastic)!!' + '(Amazing|Fantastic)!!', ], '@AN': [ 'Android', @@ -663,7 +661,7 @@ exports.ANDROID_INDEX = { '(Smartfren|Andromax)!!', 'Androtab 7', '(Starway )?Andromeda!!', - '(Andy|Yezz)!!' + '(Andy|Yezz)!!', ], '@AO': [ 'AOLE 828', @@ -681,7 +679,7 @@ exports.ANDROID_INDEX = { 'aoson M787T', 'AOSON M1016', '(cm|aokp) tenderloin!', - 'AO5510' + 'AO5510', ], '@AP': [ 'App Runtime for Chrome', @@ -692,7 +690,7 @@ exports.ANDROID_INDEX = { 'apanda-A80T', 'apanda-A100', 'apanda-A101', - 'Aprix D97+' + 'Aprix D97+', ], '@AQ': [ '(bq|Aquaris|Edison|Maxwell)!!', @@ -713,7 +711,7 @@ exports.ANDROID_INDEX = { '(Intex )?Aqua!!', 'AQUOS!!', 'aqua', - 'AQT80' + 'AQT80', ], '@AR': [ 'ARCHM901', @@ -765,7 +763,7 @@ exports.ANDROID_INDEX = { 'Armor X5', 'Armor X7', 'Armor X7 Pro', - 'Armor X8' + 'Armor X8', ], '@AS': [ 'ASUS Chromebook Flip!', @@ -790,7 +788,7 @@ exports.ANDROID_INDEX = { 'AS985', 'AS650C', 'Aster', - 'Aster T' + 'Aster T', ], '@AT': [ 'AT390', @@ -846,14 +844,14 @@ exports.ANDROID_INDEX = { 'AT703', 'AT830', 'AT-A[QS][0-9]{2,2}!!', - 'ATLAS W' + 'ATLAS W', ], '@AU': [ 'Aurora-II', 'AUX!!', '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', '(Aura|iberry|AUXUS)!!', - 'AURUS III' + 'AURUS III', ], '@AV': ['Avea!!', '(Ilium )?Avvio!!'], '@AX': [ @@ -863,7 +861,7 @@ exports.ANDROID_INDEX = { '(AXPAD|Axxion)!!', '(Bmobile )?AX[0-9]{3,4}!!', 'AX7OO', - 'AX600C' + 'AX600C', ], '@AZ': ['Azumi!!', '(AZ|BT)[0-9]{3,3}!!'], '@B1': ['B1-[A0-9][A0-9]{2,2}!!', 'B15', 'B15Q'], @@ -887,7 +885,7 @@ exports.ANDROID_INDEX = { 'Backflip Me600', 'Bambook S1', 'BARRY', - 'BASE!!' + 'BASE!!', ], '@BB': [ 'BB EH7', @@ -903,7 +901,7 @@ exports.ANDROID_INDEX = { 'BBE100-[0-9]!', 'BBF100-[0-9]!', '(BBG-|VIV-)?vivo!!', - 'Bbox Miami' + 'Bbox Miami', ], '@BC': [ 'bcm platform', @@ -920,7 +918,7 @@ exports.ANDROID_INDEX = { 'BCM28145!', 'BCM28155!', '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', - 'BC1003' + 'BC1003', ], '@BD': ['(BDS|BHX|BKO)\\-!!'], '@BE': [ @@ -944,7 +942,7 @@ exports.ANDROID_INDEX = { 'BE2013', 'beetle', 'Be Touch 2', - 'Beeline!!' + 'Beeline!!', ], '@BF': ['BF[ \\-]!!', 'BFB!!', 'BF[0-9]{2,2}00!!'], '@BG': ['bg2 !', 'bg2ct !', 'bg2q4k !', 'bg2qa0v4 !', 'bg2qv4 !', 'BGO-(DL09|L03)!', 'BG2-(U01|W09)!'], @@ -952,7 +950,7 @@ exports.ANDROID_INDEX = { '@BI': ['bird75v2', 'BioniQ!!', 'Bird!!', 'BizSmartPhone', 'BIP-6000', 'BISON', 'BISON Pro', 'BISON GT', 'BIRDY'], '@BK': [ '(BDS|BHX|BKO)\\-!!', - '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', ], '@BL': [ 'Blaze', @@ -972,7 +970,7 @@ exports.ANDROID_INDEX = { 'Blackphone 2', 'BLOOM', 'BLACK', - '(ZTE )?Blade!!' + '(ZTE )?Blade!!', ], '@BM': ['BMOBILE DASH 3.5', '(Bmobile )?AX[0-9]{3,4}!!', 'Bmobile T35AC', 'BM999'], '@BN': [ @@ -985,7 +983,7 @@ exports.ANDROID_INDEX = { '(NOOK )?BNTV(800)!', 'BN Nook HD', 'BN NookHD+', - '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', ], '@BO': [ 'Boost', @@ -999,7 +997,7 @@ exports.ANDROID_INDEX = { 'Bouygues Telecom Bs 403', 'Bouygues Telecom Bs 451', 'Boston 4G', - 'Boston' + 'Boston', ], '@BP': ['BP710A'], '@BQ': [ @@ -1048,7 +1046,7 @@ exports.ANDROID_INDEX = { 'BQS-5500', 'BQS-5502', 'BQS-5505', - 'BQS 5505' + 'BQS 5505', ], '@BR': [ 'Bravo', @@ -1058,7 +1056,7 @@ exports.ANDROID_INDEX = { 'BroadSign Xpress!', 'Broncho M7', '(BRS-)?BROR!!', - 'BRAVIA' + 'BRAVIA', ], '@BS': ['Bs 451', 'Bs 501', 'Bs541', 'BSTB-200C'], '@BT': ['BTV-(DL09|W09)!', '(AZ|BT)[0-9]{3,3}!!'], @@ -1078,7 +1076,7 @@ exports.ANDROID_INDEX = { 'BV9600Pro', 'BV9800Pro', 'BV9900E', - 'BV9900Pro' + 'BV9900Pro', ], '@C1': ['C15 Pro'], '@C2': ['C21 Pro', 'C2'], @@ -1088,7 +1086,7 @@ exports.ANDROID_INDEX = { 'C6Quad 4G', '(GIO-)?(GiONEE[- ])?C600!', '(GIO-)?(GiONEE[- ])?C610!', - '(GIO-)?(GiONEE[- ])?C620!' + '(GIO-)?(GiONEE[- ])?C620!', ], '@C7': ['C771', '(GIO-)?(GiONEE[- ])?C700!'], '@C8': ['C811 4G', 'C8297W', 'C8660', '(GIO-)?(GiONEE[- ])?C800!', 'C8817D', 'C8817E', 'C8[0-9]{3,3}!!', 'C868'], @@ -1113,11 +1111,11 @@ exports.ANDROID_INDEX = { '(HW-|HUAWEI )?CAN-(L01|L11|L12)!', 'calgary', 'Captivate-I897', - 'capricorn' + 'capricorn', ], '@CC': ['CCE SK352'], '@CD': [ - '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!' + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', ], '@CE': ['cedartrail', 'CENTURION', 'CENTURION 3', 'Celkon!!'], '@CH': [ @@ -1138,7 +1136,7 @@ exports.ANDROID_INDEX = { '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', '(HW-|HUAWEI )?(BLL|CHC|TAG|KII)!!', 'chagall', - 'chiron' + 'chiron', ], '@CI': [ 'cius', @@ -1154,7 +1152,7 @@ exports.ANDROID_INDEX = { 'CINK SLIM', 'Cink Slim A', 'Cink Slim B', - 'CINK SLIM 2' + 'CINK SLIM 2', ], '@CJ': ['(CJ-)?ThL!!'], '@CL': [ @@ -1169,7 +1167,7 @@ exports.ANDROID_INDEX = { '(Intex )?Cloud!!', 'CLIQ', 'CLIQ XT', - 'CLIQ2' + 'CLIQ2', ], '@CM': ['CMP!!', '(cm|aokp) tenderloin!', 'CMR-(AL09|AL19|W09|W19)!', 'CM980', 'CM990'], '@CN': ['CnM!!', 'CN51 [NQ]!'], @@ -1198,7 +1196,7 @@ exports.ANDROID_INDEX = { 'Corvair', 'COOLPIX S800c', 'COOLPIX S810c', - 'Constellation V' + 'Constellation V', ], '@CP': [ 'CP-DX!!', @@ -1283,7 +1281,7 @@ exports.ANDROID_INDEX = { 'CPH1611', 'CPH1879', 'CPH1861', - 'CPH1979' + 'CPH1979', ], '@CR': [ 'Crespo!', @@ -1293,7 +1291,7 @@ exports.ANDROID_INDEX = { '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!', 'CRONO 22', - 'Crescent' + 'Crescent', ], '@CS': ['CS45XA', 'CS-1A13', '(CSL[- ])?(Spice[- ]?)?Mi(-| )?[0-9]{3,3}!!'], '@CT': [ @@ -1312,13 +1310,13 @@ exports.ANDROID_INDEX = { 'CT720HD', 'CT920', 'CT1006', - 'CT9973W43M' + 'CT9973W43M', ], '@CU': [ 'CUBOT!!', '(CUBE ?)?(K8|U1|U2|U3|U5|U6|U8|U9)[0-9]?GT!!', 'CUBE!!', - '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!' + '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!', ], '@CW': ['CW[- ]!!'], '@CX': ['CX-919', 'CX-921', 'CX-921B', 'CX-929', 'CX-950', 'CX-958'], @@ -1329,11 +1327,11 @@ exports.ANDROID_INDEX = { 'D000-0000(01|07)-[A-Z][0-9]{2,2}!', 'D000-000002-[W0][0-9]{2,2}!', 'D000-0000(10|11)-N!', - 'D000 000043' + 'D000 000043', ], '@D2': [ 'D2-[0-9]{3,3}!!', - '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!' + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', ], '@D5': ['D530', 'D539'], '@D7': ['D709', 'D7800AD', 'D75E', 'D70W'], @@ -1351,7 +1349,7 @@ exports.ANDROID_INDEX = { 'DARKFULL', 'DARKMOON', 'DARKNIGHT', - 'DARKSIDE' + 'DARKSIDE', ], '@DE': [ 'Dell!!', @@ -1384,7 +1382,7 @@ exports.ANDROID_INDEX = { 'DEDY+', 'Dext', 'Devour', - 'DEM752NC' + 'DEM752NC', ], '@DG': ['DG310', 'DG750 Iron Bone'], '@DI': [ @@ -1403,7 +1401,7 @@ exports.ANDROID_INDEX = { 'DIAMOND S3', 'Discovery', 'Discovery Elite', - 'Discovery II Mini' + 'Discovery II Mini', ], '@DJ': ['DJC Touchtab3', 'DJC Touchtab4'], '@DK': ['DKL01', 'Dk1031'], @@ -1414,7 +1412,7 @@ exports.ANDROID_INDEX = { 'DLXU', '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', 'dL1', - 'DLT-H0' + 'DLT-H0', ], '@DM': [ 'DM0[0-9]{2,2}(K|SH)!!', @@ -1426,7 +1424,7 @@ exports.ANDROID_INDEX = { 'DM-02H', 'DMC-CM1', 'DM-01H', - 'DM-01J' + 'DM-01J', ], '@DN': [ 'DNS Airbook TYT701', @@ -1435,7 +1433,7 @@ exports.ANDROID_INDEX = { 'DNSS4003', 'DNS4502M', 'DN2101', - 'DN2103' + 'DN2103', ], '@DO': [ 'Dooderbutt!', @@ -1449,7 +1447,7 @@ exports.ANDROID_INDEX = { 'Doro 824', 'Doro PhoneEasy 745', 'Dolphin 70e Black', - 'Docomo HT-03A' + 'Docomo HT-03A', ], '@DP': ['DPS Dream 7', 'DPS Dream 9', 'DP-X1', 'DPH-D710'], '@DR': [ @@ -1487,13 +1485,13 @@ exports.ANDROID_INDEX = { 'DROIDZ Race', 'DROIDZ Race X', 'DROIDZ Sport', - 'DROIDZ Ultimate' + 'DROIDZ Ultimate', ], '@DS': ['Dslide!!', 'DSB-0220', 'DSB-0230'], '@DT': ['Dtac phone Joey Jet 2', 'dtab01'], '@DU': [ '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', - '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!' + '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!', ], '@DV': ['(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!'], '@DW': ['DW-PS3G5', 'DW-UBT7W', 'DW-UBT7SC*', 'DW-UBT27Cz', 'DW-UBT23G7'], @@ -1509,7 +1507,7 @@ exports.ANDROID_INDEX = { 'Dynamic Shake', 'Dynamic Wide', 'Dynamic Wing', - 'Dynamic Racing 3' + 'Dynamic Racing 3', ], '@E': ['(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!'], '@E-': ['(E-Boda|Eruption|Essential|Supreme|Storm|Revo)!!'], @@ -1524,7 +1522,7 @@ exports.ANDROID_INDEX = { '(GIO-)?(GiONEE[- ])?E6T$!', 'E6782', 'E650', - 'E60w' + 'E60w', ], '@E7': ['E70[0-9]{2,2}H[DG]!!', '(GIO-)?(GiONEE[- ])?E7$!', 'E780', 'E731'], '@E8': ['E80[0-9]{2,2}H[DG]!!', 'E860', 'E800', 'E815', 'E812', 'E810'], @@ -1536,7 +1534,7 @@ exports.ANDROID_INDEX = { '(bq|Aquaris|Edison|Maxwell)!!', 'edgejr', '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', - 'edenTAB ET-701' + 'edenTAB ET-701', ], '@EE': ['eeepc', 'eee 701', '(Eee Pad )?Transformer Prime TF201!'], '@EF': ['EFM710A'], @@ -1575,7 +1573,7 @@ exports.ANDROID_INDEX = { 'Elite 11', '(SENCOR )?ELEMENT!!', 'Elite 5.5L+', - 'Elite 6.0L' + 'Elite 6.0L', ], '@EM': [ 'EMBT3C', @@ -1583,7 +1581,7 @@ exports.ANDROID_INDEX = { 'EM01F', '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'eMAX mini', - 'EMR1879' + 'EMR1879', ], '@EN': ['Endeavour!!', 'ENR U', 'EndeavorU', 'Enjoy 71', 'Enjoy 7 Plus'], '@EP': ['EPAD', 'epade!!'], @@ -1598,12 +1596,12 @@ exports.ANDROID_INDEX = { 'Era 2X', 'era HD', 'era 4G', - 'era 4K' + 'era 4K', ], '@ES': [ '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!', '(E-Boda|Eruption|Essential|Supreme|Storm|Revo)!!', - 'eSTAR!!' + 'eSTAR!!', ], '@ET': ['ETBW11AA', 'Etel!!', 'ETOOSPAD5', 'ETOOSPAD6', 'ET1', 'Etisalat Smartphone', 'etab5'], '@EV': [ @@ -1624,14 +1622,14 @@ exports.ANDROID_INDEX = { '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', '(EV|KM)-[ES][0-9]{3,3}!!', 'Event', - 'EVERY35' + 'EVERY35', ], '@EX': [ 'Exynos5410', '(Cloudfone|CloudPad|Excite|Thrill)!!', '(Explay|X-tremer|ActiveD|Informer|Surfer)!!', '(Highscreen|Alpha|Bay|Boost|Cosmo|Explosion|Power|Prime|Zera)!!', - 'Explorer A310e' + 'Explorer A310e', ], '@EZ': ['Ezcast', 'eZee!!'], '@F&': ['F&U ETB!!'], @@ -1651,7 +1649,7 @@ exports.ANDROID_INDEX = { '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'Find 5', 'FIND7', - 'FINNEY U1' + 'FINNEY U1', ], '@FJ': ['FJ[LT][0-9]{2,2}!!', 'FJJB091'], '@FL': [ @@ -1691,7 +1689,7 @@ exports.ANDROID_INDEX = { 'Flair P1i', 'Flair P8', 'Flair S1', - 'Flair Z1' + 'Flair Z1', ], '@FN': ['(tablet )?fnac!!'], '@FO': [ @@ -1714,13 +1712,13 @@ exports.ANDROID_INDEX = { 'Forward 5 5', 'Forward 5.5', 'Folio 100', - 'folio100' + 'folio100', ], '@FP': ['FP1', 'FP1U', 'FP2', 'FP3', 'FP4'], '@FR': [ 'Freelander I20', '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', - '(MODECOM )?FreeTAB!!' + '(MODECOM )?FreeTAB!!', ], '@FS': ['FS403', 'FS407', 'FS451', 'FS514', 'FS8032'], '@FT': ['FTJ152A', 'FTJ161B', 'FTJ162E'], @@ -1747,15 +1745,15 @@ exports.ANDROID_INDEX = { 'G18 3G四核(C6B9)', 'G18mini(C5B9)', 'G18d 3G四核(D3A2)', - 'G18d mini(FV2C)' + 'G18d mini(FV2C)', ], '@G2': ['G2S', 'G2SMNT'], '@G3': ['(Moto)?G3$!', '(Moto)?G3-TE$!', 'G3SMNTS22', 'G3SMNTS23'], '@G6': [ - '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!' + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', ], '@G7': [ - '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!' + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', ], '@G9': ['G9'], '@GA': ['(Google )?Galaxy Nexus!', 'Galaxy S4 Google Editon', 'Garmin!!', 'Galaxy!!'], @@ -1772,7 +1770,7 @@ exports.ANDROID_INDEX = { 'GETAWAY', 'gemini', 'General Mobile 4G', - 'General Mobile 4G Dual' + 'General Mobile 4G Dual', ], '@GF': ['GFIVE!!'], '@GH': ['Ghost', 'GHIA!!'], @@ -1880,7 +1878,7 @@ exports.ANDROID_INDEX = { '(GIO-)?(GiONEE[- ])?Gpad G1!', '(GIO-)?(GiONEE[- ])?Gpad G2!', '(GIO-)?(GiONEE[- ])?Gpad G3!', - 'GinDream/GinMagic' + 'GinDream/GinMagic', ], '@GK': ['GK802'], '@GL': [ @@ -1896,7 +1894,7 @@ exports.ANDROID_INDEX = { 'GloryG1000', 'GL-900', 'GLX!!', - 'GL07S' + 'GL07S', ], '@GM': [ 'GM190[0135]!', @@ -1914,7 +1912,7 @@ exports.ANDROID_INDEX = { 'GM 6 d', 'GM 8 d', 'GM8 go', - 'GM Discovery tab 8' + 'GM Discovery tab 8', ], '@GN': [ '(GIO-)?(GiONEE[- ])?GN5001!', @@ -1972,7 +1970,7 @@ exports.ANDROID_INDEX = { '(GIO-)?(GiONEE[- ])?GN858!', '(GIO-)?(GiONEE[- ])?GN868!', '(GIO-)?(GiONEE[- ])?GN878!', - 'Gnappo Ideos' + 'Gnappo Ideos', ], '@GO': [ 'google sdk', @@ -2003,7 +2001,7 @@ exports.ANDROID_INDEX = { 'GO963', 'GO980', 'GO984', - 'Gomobile GO1001' + 'Gomobile GO1001', ], '@GP': [ '(GP-|Geeksphone)!!', @@ -2014,7 +2012,7 @@ exports.ANDROID_INDEX = { '(GIO-)?(GiONEE[- ])?Gpad G1!', '(GIO-)?(GiONEE[- ])?Gpad G2!', '(GIO-)?(GiONEE[- ])?Gpad G3!', - 'Gpad G5' + 'Gpad G5', ], '@GR': [ 'Grouper', @@ -2022,7 +2020,7 @@ exports.ANDROID_INDEX = { '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'greenridge', 'Graphos A10', - '(ZTE )?(Grand|Mimosa)!!' + '(ZTE )?(Grand|Mimosa)!!', ], '@GS': [ 'GS01', @@ -2037,7 +2035,7 @@ exports.ANDROID_INDEX = { 'GS290', 'GS370 Plus', 'GS02', - 'GS03' + 'GS03', ], '@GT': [ 'GT-I9505G', @@ -2060,7 +2058,7 @@ exports.ANDROID_INDEX = { 'GT-T959!', 'GT9100', 'GTablet', - 'GtabComb' + 'GtabComb', ], '@GU': ['gucci'], '@GV': ['GVON 898'], @@ -2069,10 +2067,10 @@ exports.ANDROID_INDEX = { '@H1': ['H120'], '@H2': ['H2000+'], '@H3': [ - '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', ], '@H6': [ - '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', ], '@H7': ['H701', 'H7100', 'H7500+', 'H710VL', 'H715BL'], '@H8': ['H8 Life', 'H866C', 'H882L'], @@ -2096,7 +2094,7 @@ exports.ANDROID_INDEX = { 'HannsComb', 'Hannspadd', 'Hayabusa', - 'HARRY' + 'HARRY', ], '@HB': ['HB-100 DASAN', 'HB-100 DASAN Networks, Inc.', 'HB-1000'], '@HD': [ @@ -2105,7 +2103,7 @@ exports.ANDROID_INDEX = { 'HD7 Pro', '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', 'HD190[0135]!', - 'HD191[0137]!' + 'HD191[0137]!', ], '@HE': ['HEDY!!', 'HERO H7500+', 'Hero', 'HERO CDMA', 'HERO200'], '@HI': [ @@ -2124,12 +2122,12 @@ exports.ANDROID_INDEX = { 'Hikari-iFrame!', 'HIGHWAY', 'HIGHWAY PURE', - 'HIGHWAY SIGNS' + 'HIGHWAY SIGNS', ], '@HK': ['HKPHONE H8-3G'], '@HL': [ 'HLV-T!!', - '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', ], '@HM': [ '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', @@ -2138,21 +2136,21 @@ exports.ANDROID_INDEX = { '(Xiaomi )?(Redmi|RedRice|HM)!!', '(Xiaomi )?(Redmi|HM)[ \\-]?Note!!', '(Xiaomi |HM)?20!!', - '(Xiaomi |HM)?21!!' + '(Xiaomi |HM)?21!!', ], '@HN': [ - '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', ], '@HO': [ 'HOSIN!!', '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', 'Honor3c2G-T', 'Honor Bee', - 'HOMESYNCT2WIFI' + 'HOMESYNCT2WIFI', ], '@HP': ['HP Chromebook x360 11 G1 EE', '(HP|Slate)!!', 'HP!!', 'HP-TouchPad', '(HP )?Touchpad!'], '@HR': [ - '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', ], '@HS': [ 'HS-[0-9]{1,2}DTB!!', @@ -2160,7 +2158,7 @@ exports.ANDROID_INDEX = { 'HS-E[GT][0-9]{3,3}!!', '(HS-)?Hisense!!', 'HS-EG98', - 'HS U978' + 'HS U978', ], '@HT': [ '(HTC )?Nexus ?One!', @@ -2183,7 +2181,7 @@ exports.ANDROID_INDEX = { 'HTC My ?Touch ?4G$!', 'HTC S910m', 'HTC myTouch 4G Slide', - 'HTC Doubleshot' + 'HTC Doubleshot', ], '@HU': [ 'HUAWEI WATCH', @@ -2222,7 +2220,7 @@ exports.ANDROID_INDEX = { 'Hudl HT7S3', 'Hudl 2', 'HUAWEI U8686', - 'Huawei 858' + 'Huawei 858', ], '@HW': [ '(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', @@ -2248,7 +2246,7 @@ exports.ANDROID_INDEX = { 'HW-01K', 'HW-03E', 'HWT31', - 'HWV32' + 'HWV32', ], '@HY': ['HY5001', 'HYUNDAI!!', 'Hydro', 'Hydro PLUS', 'HYPER X BLADE'], '@I ': ['I 7520'], @@ -2272,7 +2270,7 @@ exports.ANDROID_INDEX = { 'Ideapad S10-3T', '(Lenovo ?)?(IdeaTab ?)?[AB][0-9]{4,4}!!', '(Lenovo ?)?(IdeaTab ?)?[KSV][0-9]{4,4}!!', - 'idea ?tv!!' + 'idea ?tv!!', ], '@IF': ['ifive!!'], '@IG': ['IGGY'], @@ -2286,7 +2284,7 @@ exports.ANDROID_INDEX = { 'Im(Smart|PAD)!!', '(SKY )?IM[- ][A-Z][0-9]{3,3}!!', 'IM-100K', - 'IM-100S' + 'IM-100S', ], '@IN': [ '(Explay|X-tremer|ActiveD|Informer|Surfer)!!', @@ -2317,7 +2315,7 @@ exports.ANDROID_INDEX = { 'IN201[01357]!', 'IN202[0135]!', 'Internet TV', - 'Internet TV Box' + 'Internet TV Box', ], '@IO': ['iOCEAN!!'], '@IP': ['iP977', 'IPRO i5S'], @@ -2342,7 +2340,7 @@ exports.ANDROID_INDEX = { 'ISW?1[0-9]SH!!', 'IS[0-9]{2,2}S!!', 'IS04', - 'IS11T' + 'IS11T', ], '@IT': ['(iNote|itel)!!', 'ITP-XD10W', 'ITP-XD80L', 'ITP-XD97W'], '@IU': ['IUNI U810'], @@ -2352,7 +2350,7 @@ exports.ANDROID_INDEX = { '@JA': [ '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', 'Jaguar3', - 'Jaguar7' + 'Jaguar7', ], '@JC': ['JC-S9220', 'JC-A[0-9]{3,3}!!', 'JC-KSP8000'], '@JD': ['JDN-W09', 'JDN2-AL00HN', 'JDN2-W09HN'], @@ -2361,14 +2359,14 @@ exports.ANDROID_INDEX = { '@JJ': ['JJ5S+'], '@JK': ['(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!'], '@JM': [ - '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', ], '@JN': [ - '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!' + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', ], '@JO': ['Jolla', 'Joy', 'JOIN'], '@JS': [ - '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', ], '@JT': ['JT SmartPC02', 'JT-Smart PC01', 'JT-H580VT', 'JT-H581VT', 'JT-B1'], '@JX': ['JXD!!'], @@ -2407,7 +2405,7 @@ exports.ANDROID_INDEX = { 'K01H', 'K00L', 'K00F', - 'K080' + 'K080', ], '@K1': ['K11', 'K1', 'K10000 Pro'], '@K3': ['K3', 'K30-T', 'K30-W', 'K3 Note'], @@ -2420,7 +2418,7 @@ exports.ANDROID_INDEX = { 'Karbonn Aura 9', '(KAZAM|Thunder|Tornado|Trooper)!!', '(KATBL|Kogan|Agora)!!', - 'Kavak Y625-U03' + 'Kavak Y625-U03', ], '@KB': ['KB901', 'KB200[01357]!'], '@KC': ['KC-01', 'KC-S301AE', 'KC-S701', 'KCP01K'], @@ -2445,7 +2443,7 @@ exports.ANDROID_INDEX = { 'KFSUWI', 'KFMAWI', 'KFKAWI', - 'KFMUWI' + 'KFMUWI', ], '@KI': [ 'Kindle Fire', @@ -2455,11 +2453,11 @@ exports.ANDROID_INDEX = { '(HW-|HUAWEI )?(BLL|CHC|TAG|KII)!!', 'KIOTO 793', 'KITE', - '(ZTE )?Kis!!' + '(ZTE )?Kis!!', ], '@KM': ['(EV|KM)-[ES][0-9]{3,3}!!'], '@KN': [ - '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', ], '@KO': [ 'Konka Amber3', @@ -2471,12 +2469,12 @@ exports.ANDROID_INDEX = { 'koobee-T550', 'Koobe!!', 'KORIDY H15', - 'KORIDY H16' + 'KORIDY H16', ], '@KP': ['KPT!!', 'KPN!!'], '@KS': [ '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', - 'KSP8000' + 'KSP8000', ], '@KT': ['KT-101-A'], '@KU': ['Kurio!!', 'KU9500', 'KUNO4', 'KUNO 4+'], @@ -2487,7 +2485,7 @@ exports.ANDROID_INDEX = { '(USCC-|KYOCERA-)?E[0-9]{4,4}!!', '(USCC-|KYOCERA-)?C[0-9]{4,4}!!', 'KY[FLTYV][0-9]{2,2}!!', - 'Kyivstar!!' + 'Kyivstar!!', ], '@L': ['(Hisense )?(LED[0-9]{2,2}(G|K|L|EC|XT)[0-9]{2,3})!'], '@L-': ['L-0[0-9][A-Z]!!'], @@ -2525,14 +2523,14 @@ exports.ANDROID_INDEX = { 'LA2-W1', 'LA3-W', 'LA3S', - 'LA5-W' + 'LA5-W', ], '@LC': [ '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', 'LC-Ux30US', 'LC-[0-9]{2,2}((LE|UE)[0-9]{1,3}[A-Z])!', 'LC-((A|S|LX)[0-9]{1,3}[A-Z])!', - 'LCD-((S|V|LX|UF)[0-9]{1,3}[A-Z])!' + 'LCD-((S|V|LX|UF)[0-9]{1,3}[A-Z])!', ], '@LD': ['(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!', 'LDK-ICK v1.4'], '@LE': [ @@ -2684,7 +2682,7 @@ exports.ANDROID_INDEX = { 'LENNY', 'LENNY2', 'LENNY3', - 'Lenny4' + 'Lenny4', ], '@LG': [ 'LGE-lap crespo', @@ -2754,7 +2752,7 @@ exports.ANDROID_INDEX = { 'LG-ANDROID MINI BOX', 'LG-P999', 'LG-E739', - 'LG-C800' + 'LG-C800', ], '@LI': [ 'Liquid!!', @@ -2769,11 +2767,11 @@ exports.ANDROID_INDEX = { 'lithium', 'Light Tab', 'Light Tab 2', - 'Light Tab 2W' + 'Light Tab 2W', ], '@LL': [ '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', - '(Lanix )?(Ilium|llium)!!' + '(Lanix )?(Ilium|llium)!!', ], '@LM': [ 'LM-F100!', @@ -2819,15 +2817,15 @@ exports.ANDROID_INDEX = { 'LM-X525!', 'LM-X540!', 'LM-X625!', - 'LM-Y110!' + 'LM-Y110!', ], '@LO': [ 'LogicPD Zoom2', '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', - 'Loox' + 'Loox', ], '@LR': [ - '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', ], '@LS': [ 'LS670', @@ -2865,7 +2863,7 @@ exports.ANDROID_INDEX = { 'LS-5505', 'LS-5506', 'LS-5507', - 'LS-6001' + 'LS-6001', ], '@LT': ['LT[0-9]{4,4}!!', 'LTB-HS', 'LT-TLA', 'LT-NA7', 'LT-NA7F', '(SNM\\-)?LT[0-9]{2,2}[a-z]?!!'], '@LU': [ @@ -2885,13 +2883,13 @@ exports.ANDROID_INDEX = { 'Luna TAB374', 'Luna TAB474', 'Luna TAB10-150', - 'Luno' + 'Luno', ], '@LY': [ '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', '(HW-|HUAWEI )?(AMN|ART|AQM|CRO|LUA|CUN|DUB|SCC|SCU|CAM|LDN|LYO|MED|MYA)!!', 'LYF LS-4006', - 'LYF LS-5009' + 'LYF LS-5009', ], '@M': ['(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!'], '@M ': ['M POP 5020A', 'M POP'], @@ -2906,7 +2904,7 @@ exports.ANDROID_INDEX = { 'm1 note', 'M1001', 'M12', - 'M1908C3JGG' + 'M1908C3JGG', ], '@M2': [ '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', @@ -2952,7 +2950,7 @@ exports.ANDROID_INDEX = { 'M2102K1C', 'M2102K1G', 'M2103K19G', - 'M2103K19PG' + 'M2103K19PG', ], '@M3': [ 'M3 Enjoy TV Box', @@ -2968,7 +2966,7 @@ exports.ANDROID_INDEX = { 'M351', 'M353', 'M355', - 'M356' + 'M356', ], '@M4': ['M4301', 'M470BSA', 'M470BSE', 'M4', 'M4(TEL)? SS[0-9]{3,4}!!', 'M40 EEA', 'M40(N9H3)'], '@M5': ['M555', 'M532', 'M5 lite', 'M571C', 'M5 Note', 'M578C', 'M5'], @@ -2996,7 +2994,7 @@ exports.ANDROID_INDEX = { '(Xiaomi )?(MI )?MAX 2$!', '(Xiaomi )?(MI )?MAX 3$!', 'markf', - 'markw' + 'markw', ], '@MB': [ 'MBX DVBT reference board (c03ref)', @@ -3004,7 +3002,7 @@ exports.ANDROID_INDEX = { 'MBX reference board!', '(NMP|MBR|XDK|XDS|XMP)\\-!!', 'MBS BEAN 454', - 'MB[0-9]{3,3}!!' + 'MB[0-9]{3,3}!!', ], '@MC': [ 'MC002', @@ -3012,7 +3010,7 @@ exports.ANDROID_INDEX = { 'MC401 GWL', 'MC32N0', 'MC40N0', - 'MC67NA' + 'MC67NA', ], '@MD': ['(MEDION|(MD )?LIFETAB)!!', 'MD-[0-9]{4,4}!!'], '@ME': [ @@ -3053,13 +3051,13 @@ exports.ANDROID_INDEX = { 'MegaFon V9', 'MegaFon V9+', 'MegaFon SIM+', - 'MegaFon Login 3' + 'MegaFon Login 3', ], '@MF': [ 'mfld (dv10|dv20|gi|lw00|pr2|pr3)!', '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!', 'MFC[0-9]!!', - 'MF97B' + 'MF97B', ], '@MH': ['MH350', '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!'], '@MI': [ @@ -3134,14 +3132,14 @@ exports.ANDROID_INDEX = { '(Xiaomi|Xiaomi Mi|MI) Pad!!', '(Xiaomi|Xiaomi Mi|MI)Box!!', '(Xiaomi|Xiaomi Mi|MI)TV!!', - '(ZTE )?(Grand|Mimosa)!!' + '(ZTE )?(Grand|Mimosa)!!', ], '@MK': ['MK808', 'MK808B', 'MK809', 'MK809B', 'MK809IV', 'MK818B', 'MK908', 'MK908II', 'MK16(a|i|$)!'], '@ML': [ '(HW-|HUAWEI )?MLA-(L01|L03|L11|L12|L13)!', '(HW-|HUAWEI )?MLA-(AL00|AL10)!', '(HW-|HUAWEI )?MLA-(TL00|TL10|UL00)!', - 'MLLED!!' + 'MLLED!!', ], '@MM': ['MM-3201'], '@MO': [ @@ -3281,7 +3279,7 @@ exports.ANDROID_INDEX = { 'Movistar Link', 'Movistar Motion', 'Movistar Prime', - 'MOVE' + 'MOVE', ], '@MP': [ 'MP[0-9]{3,3}C!!', @@ -3302,7 +3300,7 @@ exports.ANDROID_INDEX = { 'MPQC704 HD', 'MPQC784 IPS', 'MPQC804HD', - 'MPQC1010' + 'MPQC1010', ], '@MR': ['(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!'], '@MS': [ @@ -3325,7 +3323,7 @@ exports.ANDROID_INDEX = { 'MS840 4G', 'MS3B', 'MS4A', - 'MS3A' + 'MS3A', ], '@MT': [ 'mt5396!', @@ -3369,7 +3367,7 @@ exports.ANDROID_INDEX = { 'MTS-SP101', 'MT[0-9]{2,2}[a-z]!!', 'MT7A', - 'MTC!!' + 'MTC!!', ], '@MU': ['muPAD 7M', 'Multilaser Diamond', 'Multilaser Orion', 'Multilaser Oxy', 'Multilaser Titanium'], '@MW': [ @@ -3392,7 +3390,7 @@ exports.ANDROID_INDEX = { 'MW0922', 'MW0931', '(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!', - 'MW1031' + 'MW1031', ], '@MX': ['MX Enjoy TV BOX', 'MX2', 'MX4', 'MX4 Pro', 'MX5', 'MX6'], '@MY': [ @@ -3454,7 +3452,7 @@ exports.ANDROID_INDEX = { 'MY ?SAGA!!', 'My ?Touch ?4G$!', 'myTouch 4G Slide', - 'myTouch Slide 4G' + 'myTouch Slide 4G', ], '@MZ': [ 'MZ-m2 note', @@ -3465,7 +3463,7 @@ exports.ANDROID_INDEX = { 'MZ-MX4', 'MZ-MX4 Pro', 'MZ-MX5', - 'MZ[0-9]{3,3}!!' + 'MZ[0-9]{3,3}!!', ], '@N-': ['N-0[0-9][A-Z]!!'], '@N1': ['N1', 'N12', 'N12R', 'N101 DUAL CORE!'], @@ -3484,7 +3482,7 @@ exports.ANDROID_INDEX = { 'N70HD', 'N70 DUAL CORE', 'N70DC-S', - 'N70DC-T' + 'N70DC-T', ], '@N8': ['N8730-411', 'N8730-41101', 'N8730-41102', 'N80($| from moage.com)!', 'N80DC', 'N80IPS', 'N861'], '@N9': ['N930', 'N9600', 'N90', 'N90 DUAL CORE!', 'N90FHDRK', 'N918St'], @@ -3494,7 +3492,7 @@ exports.ANDROID_INDEX = { 'NaviPad TM-7855 3G', 'NaviPad TM-7858 3G (revision 1)', 'natrium', - 'NATCOM N8302' + 'NATCOM N8302', ], '@NB': ['NB036', 'NBX-T7013N', 'NBX-T7023N'], '@NC': ['(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!'], @@ -3585,7 +3583,7 @@ exports.ANDROID_INDEX = { 'NE2213', 'New Andromax-i', 'Neo V', - 'NEBULA6.9' + 'NEBULA6.9', ], '@NG': [ 'NGM Black Hole', @@ -3609,12 +3607,12 @@ exports.ANDROID_INDEX = { 'NGM Miracle', 'NGM P0laris', 'NGM Wilco', - 'NGM WINN' + 'NGM WINN', ], '@NI': ['NITROGEN6X', 'NID 7010', 'Nibiru H1', 'Nibiru H1c', 'nine i7400', 'nikeh', 'nikel'], '@NM': [ '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', - '(NMP|MBR|XDK|XDS|XMP)\\-!!' + '(NMP|MBR|XDK|XDS|XMP)\\-!!', ], '@NO': [ 'Novo7', @@ -3712,13 +3710,13 @@ exports.ANDROID_INDEX = { 'Note 9P', 'Note 11P', 'Noble TAB07-485', - '(QMobile|QTab|Q-Smart|Noir)!!' + '(QMobile|QTab|Q-Smart|Noir)!!', ], '@NP': ['npm702-NOVO7PALADIN'], '@NS': ['NS115', 'NS2816', 'NS-14T002', 'NS-13T001', 'NSZ-G[A-Z][0-9]!!'], '@NT': [ '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', - '(NetTab|NT-)!!' + '(NetTab|NT-)!!', ], '@NU': ['Numy!!', 'nuvi!!', 'NUU A3', 'NuclearSX-SP5', 'nubia Z5', 'Nubia Z9 Max', 'Nura 2'], '@NW': ['NWZ?-Z1000Series!'], @@ -3744,7 +3742,7 @@ exports.ANDROID_INDEX = { 'NX700QC', 'NX785QC8G', 'NXM900MC', - '(ZXY-)?NX[0-9]{2,3}!!' + '(ZXY-)?NX[0-9]{2,3}!!', ], '@NY': ['NYX!!'], '@O2': ['O2 Joggler'], @@ -3755,7 +3753,7 @@ exports.ANDROID_INDEX = { 'OB-OPPO R7c', 'OB-OPPO 1105', 'OB-OPPO 3005', - 'Obreey SURFpad' + 'Obreey SURFpad', ], '@OC': ['(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!'], '@OD': [ @@ -3781,7 +3779,7 @@ exports.ANDROID_INDEX = { 'ODYS Space TKI BRR233v9', 'ODYS-Xpress', 'ODYS Xtreme', - 'OD103' + 'OD103', ], '@OL': ['Olivetti Olipad 100'], '@OM': [ @@ -3795,7 +3793,7 @@ exports.ANDROID_INDEX = { 'OMS1 6', 'omega', 'Omega 5.0', - 'Omega 5.5' + 'Omega 5.5', ], '@ON': [ 'One 7 M77GHG', @@ -3955,7 +3953,7 @@ exports.ANDROID_INDEX = { 'Onda V812', 'ONDA v975m', 'ONDA V989', - 'ONDA V989 Core8' + 'ONDA V989 Core8', ], '@OP': [ 'OPPOLenovo A60', @@ -4065,7 +4063,7 @@ exports.ANDROID_INDEX = { 'Optimus Monte Carlo', 'Optimus San Francisco', 'Optimus San Remo', - 'Optimus Zali' + 'Optimus Zali', ], '@OR': [ 'Orange HUAWEI GRA-L09', @@ -4097,13 +4095,13 @@ exports.ANDROID_INDEX = { 'Orange Tado', 'Orange Yomi', 'Orange Yumo', - 'Orange Zali' + 'Orange Zali', ], '@OT': ['OT 918', 'OT 919', 'OT 919 HelloKitty', 'OT-990C', 'OT 990M', 'OT-995'], '@OU': ['OUYA( Console)?!'], '@OV': ['(OV-|Overmax|Vertis)!!', 'OV10274G'], '@OX': [ - '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', ], '@OY': [ 'Oysters Pacific 800', @@ -4114,7 +4112,7 @@ exports.ANDROID_INDEX = { 'Oysters T37', 'Oysters T72H 3G', 'Oysters T72HRi 3G', - 'OYSTERS T80 3G' + 'OYSTERS T80 3G', ], '@OZ': ['OZZY'], '@P': ['(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!'], @@ -4139,7 +4137,7 @@ exports.ANDROID_INDEX = { 'P023', 'P024', 'P027', - 'P028' + 'P028', ], '@P1': [ 'P10AN', @@ -4156,13 +4154,13 @@ exports.ANDROID_INDEX = { 'P11HD??(G9X6)', 'P11HD四核(G9X7)', 'P19HD(E1K3)', - 'P19HD(E1K5)' + 'P19HD(E1K5)', ], '@P2': [ 'P2A700', 'P2Lite', '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', - 'P20HD EEA' + 'P20HD EEA', ], '@P3': ['P330X', 'P350X', 'P360X', 'P300(Funbook)'], '@P4': ['P4i', 'P4', 'P4D Sirius'], @@ -4173,7 +4171,7 @@ exports.ANDROID_INDEX = { 'P6 Pro', 'P6 Qmax', 'P6 Quad', - '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!' + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', ], '@P7': [ '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', @@ -4202,7 +4200,7 @@ exports.ANDROID_INDEX = { 'P78HD??(C4A5)', 'P79HD(A3V9)', 'P79HD 3G(C4K5)', - 'p7901a' + 'p7901a', ], '@P8': [ 'P8 Energy', @@ -4237,7 +4235,7 @@ exports.ANDROID_INDEX = { 'P89mini(E2W6)', 'P89 mini(E2W6)', 'P89s(F8A5)', - 'P89s mini(F8A2)' + 'P89s mini(F8A2)', ], '@P9': [ 'P9 Energy', @@ -4257,7 +4255,7 @@ exports.ANDROID_INDEX = { 'P98Air(C6V8)', 'P98HD(A2Q6)', 'P98HD+M6', - 'P98T(K3C4)' + 'P98T(K3C4)', ], '@PA': [ 'Panda(Board)?!', @@ -4297,7 +4295,7 @@ exports.ANDROID_INDEX = { 'PAT712W', 'PATG7506HD', 'PAP[0-9]{4,4}!!', - 'PAD1001' + 'PAD1001', ], '@PB': ['PB99400', 'PBAM00', 'PBAT00', 'PBFT00', 'PBBM00', 'PBCM30', 'PBEM00', 'PBET00', 'PBDM00'], '@PC': [ @@ -4314,7 +4312,7 @@ exports.ANDROID_INDEX = { 'PCGM00', 'PCAM00', 'PCAM10', - 'PCCM00' + 'PCCM00', ], '@PD': ['PD10-DYD', 'PD6D1J'], '@PE': [ @@ -4322,7 +4320,7 @@ exports.ANDROID_INDEX = { 'PEDI', 'Penta!!', 'Pentagram!!', - 'pepper' + 'pepper', ], '@PF': ['(DNS )?(Airtab )?(E|ES|M|MA|MC|MF|MW|P|PC|PF)[0-9]{2,4}!!'], '@PG': ['PG06100', 'PG41200', 'PG86100!', 'PGM 398', 'PGPS7795'], @@ -4390,7 +4388,7 @@ exports.ANDROID_INDEX = { 'Philips PI5000', 'PHABLET 4S', 'Phablet 4.5Q', - 'Phablet 5,3 Q' + 'Phablet 5,3 Q', ], '@PI': [ 'Pixel C', @@ -4439,7 +4437,7 @@ exports.ANDROID_INDEX = { 'PI7000', 'PI7100 93', '(PNR-)?Pioneer!!', - 'PIRANHA!!' + 'PIRANHA!!', ], '@PJ': ['PJ83100', 'PJ35100'], '@PL': [ @@ -4455,7 +4453,7 @@ exports.ANDROID_INDEX = { 'PlayBook', 'Plus E', 'Play 6X-1000', - 'Play8X-1100' + 'Play8X-1100', ], '@PM': ['PM36100', 'PM63100', 'PMID!!', 'PMP[0-9]{4,4}!!', 'PMT[0-9]{4,4}!!'], '@PN': [ @@ -4465,7 +4463,7 @@ exports.ANDROID_INDEX = { 'PNDPP48GP', 'PNDPP4MT9G3', 'PNDPP410GP', - '(PNR-)?Pioneer!!' + '(PNR-)?Pioneer!!', ], '@PO': [ '(Highscreen|Alpha|Bay|Boost|Cosmo|Explosion|Power|Prime|Zera)!!', @@ -4558,12 +4556,12 @@ exports.ANDROID_INDEX = { 'POCO F2 Pro', 'POCO X2', 'POCO X3 NFC', - 'POCO X3 Pro' + 'POCO X3 Pro', ], '@PP': [ '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'PP4MT-7', - 'PP4MT-9' + 'PP4MT-9', ], '@PR': [ 'Project Tango Tablet Development Kit', @@ -4721,7 +4719,7 @@ exports.ANDROID_INDEX = { 'Proton Lite', 'prada', 'Prism', - 'Prism II' + 'Prism II', ], '@PS': ['PSPT350', 'PSP[0-9]{4,4}!!', 'PS47'], '@PT': ['PTL21'], @@ -4735,7 +4733,7 @@ exports.ANDROID_INDEX = { 'PULP', 'PULP 4G', 'Pulse', - 'Pulse Mini' + 'Pulse Mini', ], '@PY': ['Pyramid'], '@Q-': ['Q-Wave!!', '(QMobile|QTab|Q-Smart|Noir)!!'], @@ -4762,7 +4760,7 @@ exports.ANDROID_INDEX = { 'QUMO Vega ([0-9]+i?)!', 'QuickFone Mini', 'QuickFone-Mini', - 'QuickFone ([NXZ][0-9]\\+?)!' + 'QuickFone ([NXZ][0-9]\\+?)!', ], '@QV': ['QV151E'], '@QW': ['QW ?TB-[0-9]{4,4}!!'], @@ -4819,7 +4817,7 @@ exports.ANDROID_INDEX = { 'R8205', 'R8206', 'R8207', - 'R800(a|at|i|iv|x)!' + 'R800(a|at|i|iv|x)!', ], '@RA': [ 'Rage', @@ -4861,7 +4859,7 @@ exports.ANDROID_INDEX = { 'RAINBOW', 'RAINBOW 4G', 'RAINBOW JAM', - '(ZTE )?Racer!!' + '(ZTE )?Racer!!', ], '@RB': ['RBK-490'], '@RC': [ @@ -4884,7 +4882,7 @@ exports.ANDROID_INDEX = { 'RCT6213W87DK', 'RCT6673W23M', 'RCT6673W43M', - 'RCT6S03W12' + 'RCT6S03W12', ], '@RE': [ 'redhookbay', @@ -4896,7 +4894,7 @@ exports.ANDROID_INDEX = { 'reeder A8i Quad 2', '(Xiaomi )?(Redmi|RedRice|HM)!!', '(Xiaomi )?(Redmi|HM)[ \\-]?Note!!', - 'REVVLPLUS C3701A' + 'REVVLPLUS C3701A', ], '@RG': ['RG650', 'RG655', 'RG725', 'RG850'], '@RH': ['(?:RIVO )?RHYTHM RX ?([0-9]+)!'], @@ -4911,7 +4909,7 @@ exports.ANDROID_INDEX = { '(Ritmix )?RM[DP]-?[0-9]{3,3}!!', 'RIDGE', 'RIDGE 4G', - 'RIDGE FAB 4G' + 'RIDGE FAB 4G', ], '@RK': [ 'rksdk', @@ -4943,7 +4941,7 @@ exports.ANDROID_INDEX = { 'RKM MK802IIIS', 'RKM MK802IV', 'RKM MK902', - 'RKM MK902II' + 'RKM MK902II', ], '@RM': [ 'RM02', @@ -4977,10 +4975,10 @@ exports.ANDROID_INDEX = { 'RMX3301', 'RMX3311', 'RMX3363', - 'RMX3370' + 'RMX3370', ], '@RN': [ - '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', ], '@RO': ['Rock-(AL00|CL00|L01|L03)!', 'roiX', 'RoverPad 3W T71D', 'ROAR', 'Roar A50', 'Roar V25', 'rolex'], '@RP': ['RP-UDM01A'], @@ -5020,7 +5018,7 @@ exports.ANDROID_INDEX = { 'San Remo Mini', 'San Francisco', 'San Francisco for', - 'San Francisco II' + 'San Francisco II', ], '@SB': ['SBM[0-9]0[0-9]SH!!'], '@SC': [ @@ -5041,7 +5039,7 @@ exports.ANDROID_INDEX = { 'SC[LTV][23][0-9]!!', 'Scroll!!', 'SC-!!', - 'scorpio' + 'scorpio', ], '@SD': ['sdk', 'SD4930UR'], '@SE': [ @@ -5054,7 +5052,7 @@ exports.ANDROID_INDEX = { 'Sensation!', '(SENCOR )?ELEMENT!!', 'SENSEIT R390', - 'SENWA S970' + 'SENWA S970', ], '@SF': ['SFR-G8800', 'SFR-G8800 TV', 'SFR StarTab'], '@SG': ['SGH-[EILNMS][0-9]{3,4}!!', 'SGH-T[0-9]{3,3}!!', 'SGH-U468!', 'SGH-W2013!', 'SGP[ST0-9][0-9]{2,2}!!'], @@ -5095,7 +5093,7 @@ exports.ANDROID_INDEX = { 'SH[FLTV][0-9]{2,2}!!', 'SHARP-ADS1', 'SHIFT6m', - 'SHARK PRS-H0' + 'SHARK PRS-H0', ], '@SI': ['SiRF Dream', 'simvalley SP-142', 'Signature Touch', 'Signature Touch L'], '@SK': [ @@ -5106,7 +5104,7 @@ exports.ANDROID_INDEX = { 'SK17(a|i|iv|i-o)!', 'SK-Mtek GT7305', 'SKR-H0', - '(ZTE )?Skate!!' + '(ZTE )?Skate!!', ], '@SL': [ 'Slider SL101', @@ -5114,7 +5112,7 @@ exports.ANDROID_INDEX = { '(HP|Slate)!!', '(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!', 'Slidepad!!', - 'SLIDE' + 'SLIDE', ], '@SM': [ 'smdk6410', @@ -5168,14 +5166,14 @@ exports.ANDROID_INDEX = { 'SMART Sprint', 'SMART Start', 'SMART Surf2 4G', - 'SmartTab!!' + 'SmartTab!!', ], '@SN': [ 'SN[0-9]!!', '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', 'Snexian!!', '(SNM\\-)?LT[0-9]{2,2}[a-z]?!!', - '(SNM\\-)?M[0-9]{2,2}[a-z]!!' + '(SNM\\-)?M[0-9]{2,2}[a-z]!!', ], '@SO': [ 'SoftwinerEvb', @@ -5197,7 +5195,7 @@ exports.ANDROID_INDEX = { 'SonyEricssonMT15', 'SonyEricssonST15', 'Soshphone 4G', - 'soft stone' + 'soft stone', ], '@SP': [ 'Sprint!!', @@ -5230,7 +5228,7 @@ exports.ANDROID_INDEX = { 'SPICE IV', 'Spro2', 'SP-A20i', - 'SpringBoard' + 'SpringBoard', ], '@SR': ['SRT!!'], '@ST': [ @@ -5306,7 +5304,7 @@ exports.ANDROID_INDEX = { 'ST-PAD', 'ST-PAD2', 'STAIRWAY', - 'StarTrail TT' + 'StarTrail TT', ], '@SU': [ 'Surfing TAB B 9.7 3G', @@ -5320,7 +5318,7 @@ exports.ANDROID_INDEX = { 'SUPRA (M[0-9]{2,3}[A-Z]{0,2})!', 'SUBLIM', 'SUNSET', - 'SUNSET2' + 'SUNSET2', ], '@SV': ['sv8860', 'SVP-DTV15'], '@SW': ['Swift', 'Swift Plus', 'Swift 2', 'Swift 2 Plus', 'Swift 2 X'], @@ -5348,7 +5346,7 @@ exports.ANDROID_INDEX = { 'T-Mobile myTouch Q', 'T-Mobile Opal', 'T-Mobile Vivacity', - 'T-Hub2' + 'T-Hub2', ], '@T0': [ 'T01', @@ -5372,7 +5370,7 @@ exports.ANDROID_INDEX = { 'T00K', 'T00P', 'T00G', - 'T00Q' + 'T00Q', ], '@T1': ['T1-B', 'T1-D', 'T1-E', 'T1K Plus', 'T1 7.0', 'T11AD!'], '@T2': ['T20-Plus', 'T20'], @@ -5464,7 +5462,7 @@ exports.ANDROID_INDEX = { 'TAB469', 'TAB466EUK', 'TAB467', - 'TAB462' + 'TAB462', ], '@TB': [ 'TB-X103F', @@ -5478,7 +5476,7 @@ exports.ANDROID_INDEX = { 'TBDG734', 'TBDG874', 'TBDG1073', - 'TBQC1063' + 'TBQC1063', ], '@TC': [ 'TCC8920 STB!', @@ -5499,7 +5497,7 @@ exports.ANDROID_INDEX = { 'TC70', 'TC75', 'TCL!!', - 'TC26' + 'TC26', ], '@TD': ['TD070VA1', 'TD600', 'TD-1010', 'TD506'], '@TE': [ @@ -5536,7 +5534,7 @@ exports.ANDROID_INDEX = { 'TeamDRH ICS for GTablet', 'TERRA PAD 1004', 'TERRA PAD 1005', - 'Telenor!!' + 'Telenor!!', ], '@TF': [ 'TF101', @@ -5545,7 +5543,7 @@ exports.ANDROID_INDEX = { 'tf201t', '(Transformer )?(Pad )?TF300(T|TG|TL)!', '(Transformer )?(Pad )?TF502(T)!', - '(Transformer )?(Pad )?TF700(T|K)!' + '(Transformer )?(Pad )?TF700(T|K)!', ], '@TG': ['TG-L800S', 'TG-L900S'], '@TH': [ @@ -5555,7 +5553,7 @@ exports.ANDROID_INDEX = { '(KAZAM|Thunder|Tornado|Trooper)!!', 'ThinkPad( Tablet)?!', '(CJ-)?ThL!!', - 'THRiVE' + 'THRiVE', ], '@TI': [ 'Tilapia', @@ -5567,7 +5565,7 @@ exports.ANDROID_INDEX = { 'TI320-DU TV', 'TizzBird!!', 'Titan pocket', - 'tiffany' + 'tiffany', ], '@TL': ['TLINK[0-9]{3,3}!!'], '@TM': [ @@ -5621,10 +5619,10 @@ exports.ANDROID_INDEX = { 'TM-9757 3G rev1', 'TM-9767', 'TM-1058', - 'tmn!!' + 'tmn!!', ], '@TN': [ - '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', ], '@TO': [ 'Toro', @@ -5648,7 +5646,7 @@ exports.ANDROID_INDEX = { 'TOSHIBA FOLIO AND A', 'Tostab03', 'TOSHIBA WT7-C', - 'TOSHIBA WT8-A' + 'TOSHIBA WT8-A', ], '@TP': ['TPA60W', 'TPC-7151'], '@TQ': ['TQ150'], @@ -5682,7 +5680,7 @@ exports.ANDROID_INDEX = { 'TREQ!!', 'Trevi REVERSE 5.5Q', 'Trevi PHABLET 6 S', - 'TRUE BEYOND 3G' + 'TRUE BEYOND 3G', ], '@TS': ['(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', 'TSP21', 'TSB CLOUD COMPANION;TOSHIBA AC AND AZ'], '@TT': ['TT101'], @@ -5693,7 +5691,7 @@ exports.ANDROID_INDEX = { 'Turbo-X Ice', 'Turbo-X Tablet Spice III', 'Turkcell!!', - 'Turk Telekom TT175' + 'Turk Telekom TT175', ], '@TV': ['TVE9603I', 'TVPAD Slim K3409'], '@TX': ['TX201LA', 'TX201LAF', 'TX85', 'TX18'], @@ -5727,7 +5725,7 @@ exports.ANDROID_INDEX = { 'ultrafone!!', 'Ultym 5', 'Ultym 5L', - 'Ultym 5.2' + 'Ultym 5.2', ], '@UM': ['UM840', 'UMI!!'], '@UN': ['unknown M200-L09', 'UNO X8', 'UNO X10', 'Unusual!!'], @@ -5741,7 +5739,7 @@ exports.ANDROID_INDEX = { '(USCC-|KYOCERA-)?E[0-9]{4,4}!!', '(USCC-|KYOCERA-)?C[0-9]{4,4}!!', 'USCC-(LG)?US!!', - 'Usmart!!' + 'Usmart!!', ], '@UT': ['UTime!!'], '@V ': ['(ZTE ?)?V ?[0-9]{3,3}!!'], @@ -5766,7 +5764,7 @@ exports.ANDROID_INDEX = { '(GIO-)?(GiONEE[- ])?V188!', 'V1', 'V1277', - 'V1916A' + 'V1916A', ], '@V2': [ 'V2 Viper', @@ -5781,7 +5779,7 @@ exports.ANDROID_INDEX = { 'V2041', 'V2056A', 'V2109', - 'V2141A' + 'V2141A', ], '@V3': ['v360 E1'], '@V5': ['V5U-simvalley SP-142', 'V55'], @@ -5815,7 +5813,7 @@ exports.ANDROID_INDEX = { 'V8510', 'V8511', 'V8602', - 'V8603' + 'V8603', ], '@V9': [ 'V99', @@ -5836,7 +5834,7 @@ exports.ANDROID_INDEX = { 'V9e', 'V9e+', 'V9A', - 'V9C' + 'V9C', ], '@VA': ['Vandroid S5E', 'Vandroid T1J', 'Vandroid T3-A', 'Vandroid T3i', 'Vandroid T', 'VAP430'], '@VE': [ @@ -5859,7 +5857,7 @@ exports.ANDROID_INDEX = { 'Venus_V3 5040', 'Venus V3 5570', 'Venus V3 5580', - 'Venus Z20' + 'Venus Z20', ], '@VF': [ 'VF685', @@ -5889,7 +5887,7 @@ exports.ANDROID_INDEX = { 'VFD 1100', 'VFD 1300', 'VFD 1400', - 'VFD1400' + 'VFD1400', ], '@VI': [ 'VirtualBox!', @@ -5967,19 +5965,19 @@ exports.ANDROID_INDEX = { 'VIETTEL V8411', 'Viettel V8502', 'VIETTEL V8506', - 'VIETTEL V8509' + 'VIETTEL V8509', ], '@VK': [ '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', 'VK410', 'VK700', 'VK810 4G', - 'VK815' + 'VK815', ], '@VL': ['VL-[0-9]{3,3}!!'], '@VM': ['VMware Virtual Platform', '(AC|BC|LC|MT|RC|QS|VM|TS|OC)[0-9]{4,4}[A-Z]!!', 'VM670'], '@VN': [ - '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!' + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', ], '@VO': [ 'Vogue', @@ -6005,7 +6003,7 @@ exports.ANDROID_INDEX = { 'VOTO X2', 'VOYO A15', 'voyo X6', - 'Vodafone!!' + 'Vodafone!!', ], '@VS': [ 'VS[0-9]{3,3}!!', @@ -6028,7 +6026,7 @@ exports.ANDROID_INDEX = { 'Vsun i1', 'Vsun i5', 'Vsun i9', - 'Vsun V9' + 'Vsun V9', ], '@VT': [ '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!', @@ -6038,7 +6036,7 @@ exports.ANDROID_INDEX = { 'VT79C', 'VT87C+', 'VTAB1008', - 'VTAB3010' + 'VTAB3010', ], '@VW': ['VW RCBKK1'], '@VX': ['VX-100', 'VX580A', 'VX580W', 'VX610A'], @@ -6086,7 +6084,7 @@ exports.ANDROID_INDEX = { 'Walpad G2', 'Walpad G2i', 'Walpad M', - 'WAX' + 'WAX', ], '@WE': [ 'WellcoM-A86', @@ -6099,7 +6097,7 @@ exports.ANDROID_INDEX = { 'WEXLER TAB7ID', 'WEXLER-TAB-7iS', 'WEXLER-TAB-7T', - 'WEXLER.BOOK T7008' + 'WEXLER.BOOK T7008', ], '@WF': ['WF7C'], '@WH': [ @@ -6114,7 +6112,7 @@ exports.ANDROID_INDEX = { 'WHAM WS36', 'WHAM WS43', 'WHAMWHAM WS43 Maui', - 'WHAM WT72' + 'WHAM WT72', ], '@WI': [ 'Wingray', @@ -6133,7 +6131,7 @@ exports.ANDROID_INDEX = { 'Wileyfox Spark X', 'Wileyfox Storm', 'Wileyfox Swift', - 'Wink City S' + 'Wink City S', ], '@WL': ['WL-101GQC'], '@WM': ['WM8650', 'WM8650-mid', 'wm8710-tvbox', 'WM8850-mid'], @@ -6150,7 +6148,7 @@ exports.ANDROID_INDEX = { 'X-basic', 'X-basic2', 'X-maxi', - 'X-medium' + 'X-medium', ], '@X0': [ 'X007D', @@ -6191,7 +6189,7 @@ exports.ANDROID_INDEX = { 'X002', 'X003', 'X005', - 'X008' + 'X008', ], '@X1': [ 'X1 Soul', @@ -6224,7 +6222,7 @@ exports.ANDROID_INDEX = { 'X16HD 3G(M5J4)', 'X16HD 3G(M5J5)', 'X16HD 3G(M5J5', - 'X16HD 3G(M5J6)' + 'X16HD 3G(M5J6)', ], '@X2': [ 'X2 Soul', @@ -6237,7 +6235,7 @@ exports.ANDROID_INDEX = { 'X2 Soul Style TM', 'X2 Soul Style Plus', 'X2 Soul Xtreme', - 'X2 Twin' + 'X2 Twin', ], '@X3': [ 'X3 Soul', @@ -6248,7 +6246,7 @@ exports.ANDROID_INDEX = { 'X3 Soul PRO', 'X3 Soul Style', 'X325a', - 'X3-Ice MIUI XT720 Memorila Classics' + 'X3-Ice MIUI XT720 Memorila Classics', ], '@X4': ['X403'], '@X5': ['X5 Soul Pro', 'X550', 'X515d', 'X515e', 'X525a', 'X527', 'X505', 'X506', 'X506S', 'X507Q'], @@ -6263,7 +6261,7 @@ exports.ANDROID_INDEX = { 'X70 3G (C5D9)', 'X70 R(C7F9)', 'X70 R(C8F9)', - 'X708S' + 'X708S', ], '@X8': [ '(GIO-)?(GiONEE[- ])?X817!', @@ -6296,7 +6294,7 @@ exports.ANDROID_INDEX = { 'X81-8G3D', 'X89 (E7ED)', 'X89 (KR89)', - 'X89HD (H21C)' + 'X89HD (H21C)', ], '@X9': [ 'X920e', @@ -6364,7 +6362,7 @@ exports.ANDROID_INDEX = { 'X98 Pro', 'X98 Pro (K9C6)', 'X98 Pro (K9C6', - 'X9180' + 'X9180', ], '@XA': ['Xamarin Android Player!'], '@XC': ['XCD 28', 'XCD35'], @@ -6392,7 +6390,7 @@ exports.ANDROID_INDEX = { 'Xenta TAB09-211', 'Xenta TAB10-211', 'Xenta TAB10-201', - 'Xenta TAB13-201' + 'Xenta TAB13-201', ], '@XI': [ 'Xiaomi', @@ -6417,7 +6415,7 @@ exports.ANDROID_INDEX = { 'Xiaomi 11T Pro', '(Xiaomi|Xiaomi Mi|MI) Pad!!', '(Xiaomi|Xiaomi Mi|MI)Box!!', - '(Xiaomi|Xiaomi Mi|MI)TV!!' + '(Xiaomi|Xiaomi Mi|MI)TV!!', ], '@XL': [ 'XL39h', @@ -6438,7 +6436,7 @@ exports.ANDROID_INDEX = { 'Xlife-M44Q', 'Xlife-Electro55HD', 'Xlife-Ezy', - 'Xlife-Victor4' + 'Xlife-Victor4', ], '@XM': ['(NMP|MBR|XDK|XDS|XMP)\\-!!', 'XM50h', 'XM50t'], '@XO': [ @@ -6457,7 +6455,7 @@ exports.ANDROID_INDEX = { 'XOLO Play', 'XOLO PLAY T1000', 'XOLO T1000', - 'Xolo QC800' + 'Xolo QC800', ], '@XP': ['Xperia Z Ultra', 'XPRESS PRO', 'XP8800', 'Xperia!!', '(Symphony|Xplorer)!!', 'xPAD-70'], '@XQ': [ @@ -6471,7 +6469,7 @@ exports.ANDROID_INDEX = { 'XQ-BT52', 'XQ-AD51', 'XQ-AD52', - 'XQ-BE52' + 'XQ-BE52', ], '@XT': [ 'Xtreme X2', @@ -6503,14 +6501,14 @@ exports.ANDROID_INDEX = { 'Xtreamer Mobile AiKi a7*', 'Xtreamer Mobile Aiki5s', 'Xtreamer Joyz', - 'Xtreamer Wonder' + 'Xtreamer Wonder', ], '@XW': ['XW-I8'], '@Y2': ['Y2'], '@Y5': ['Y538'], '@Y6': ['Y6 Max', 'Y6 Piano'], '@YA': [ - '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!' + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!', ], '@YD': ['YD201', 'YD202', 'YD203', 'YD206'], '@YE': ['Yellowstone', '(Andy|Yezz)!!'], @@ -6548,7 +6546,7 @@ exports.ANDROID_INDEX = { 'YPY S500', 'YPY TQ7', 'YP-G!!', - 'YP712' + 'YP712', ], '@YQ': ['YQ601'], '@YU': [ @@ -6600,7 +6598,7 @@ exports.ANDROID_INDEX = { 'YUSUN - W 800', 'YUSUN--W 800', 'YUSUN W808', - 'YUSUN -- W 900' + 'YUSUN -- W 900', ], '@YX': ['YX-YUSUN E80', 'YX-YUSUN E89', 'YX-YUSUN E96'], '@Z0': [ @@ -6667,13 +6665,13 @@ exports.ANDROID_INDEX = { 'Z01MDA', 'Z01RD', 'Z01QD', - 'Z00YD' + 'Z00YD', ], '@Z1': [ '(BB )?Z10$!', 'Z1-H39LW', '(HUAWEI )?(ALP|BLA|CRR|EVR|HMA|LIO|LON|LYA|MATE|MHA|MT1|MT2|MT7|M200|NOH|NXT|SNE|TAS|Z100)!!', - 'Z1i' + 'Z1i', ], '@Z2': ['Z2 Plus', 'Z2 Rio', 'Z282 C91'], '@Z3': ['(BB )?Z30$!', 'Z30Aire', 'Z30Dart', 'Z30Lite', 'Z30PACE'], @@ -6696,7 +6694,7 @@ exports.ANDROID_INDEX = { 'Z45 Quad', 'Z45Q Star', 'Z45Q Star+', - 'Z4 mini' + 'Z4 mini', ], '@Z5': [ 'Z520e', @@ -6714,7 +6712,7 @@ exports.ANDROID_INDEX = { 'Z51Q Star', 'Z52 Inspire', 'Z52 Thunder', - 'Z52 Thunder+' + 'Z52 Thunder+', ], '@Z7': ['Z71', 'Z710', 'Z710e', 'Z715e'], '@ZA': [ @@ -6738,7 +6736,7 @@ exports.ANDROID_INDEX = { 'ZA966', 'ZA977', 'ZA985', - 'ZA987' + 'ZA987', ], '@ZB': ['ZB551KL', 'ZB500KG', 'ZB500KL', 'ZB501KL', 'ZBOX-ID18', 'ZBOX-ID81'], '@ZC': ['ZC551KL', 'ZC553KL', 'ZC554KL'], @@ -6764,7 +6762,7 @@ exports.ANDROID_INDEX = { 'ZEN U1', 'ZEN U4', 'ZEN U5', - 'ZEN 303 3G' + 'ZEN 303 3G', ], '@ZI': [ 'Zii!!', @@ -6780,7 +6778,7 @@ exports.ANDROID_INDEX = { 'Zigo Nebula Tab 7.1', 'Zigo N81', 'Ziss Ranger HD', - 'Zilo' + 'Zilo', ], '@ZO': ['Zoom', '(Zopo )?ZP ?[0-9]{3,3}!!'], '@ZP': ['(Zopo )?ZP ?[0-9]{3,3}!!'], @@ -6905,7 +6903,7 @@ exports.ANDROID_INDEX = { 'ZTE V8110', 'ZTE B860A', 'ZTE B860AV1', - 'ZTE W1010' + 'ZTE W1010', ], '@ZU': [ 'ZUK Z1', @@ -6917,10 +6915,10 @@ exports.ANDROID_INDEX = { 'ZUK Z2 Pro', 'ZUK Z2121', 'ZUK Z2122', - 'ZUK Edge' + 'ZUK Edge', ], '@ZV': ['ZVII'], - '@ZX': ['(ZXY-)?(ZTE )?N[0-9]{4,4}!!', '(ZXY-)?NX[0-9]{2,3}!!', 'ZXY-ZTE-C X920', 'ZXY-ZTE V6700'] + '@ZX': ['(ZXY-)?(ZTE )?N[0-9]{4,4}!!', '(ZXY-)?NX[0-9]{2,3}!!', 'ZXY-ZTE-C X920', 'ZXY-ZTE V6700'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/indices/models-asha.js b/data/indices/models-asha.js index 0d0b7f5..5c5107e 100644 --- a/data/indices/models-asha.js +++ b/data/indices/models-asha.js @@ -1,27 +1,8 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.ASHA_INDEX = { - - '@50': - [ - 500, - 501, - '501s', - '501.1', - '501.2', - 502, - 503, - '503s', - ], - '@AS': - [ - 'Asha230SingleSIM', - 'Asha230DualSIM', - 'Asha500SingleSIM', - 'Asha500DualSIM', - ], + '@50': [500, 501, '501s', '501.1', '501.2', 502, 503, '503s'], + '@AS': ['Asha230SingleSIM', 'Asha230DualSIM', 'Asha500SingleSIM', 'Asha500DualSIM'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/indices/models-bada.js b/data/indices/models-bada.js index dcd88ee..6934173 100644 --- a/data/indices/models-bada.js +++ b/data/indices/models-bada.js @@ -1,30 +1,20 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.BADA_INDEX = { - - '@GT': - [ - 'GT- ?S52(50|53)!', - 'GT-S53(30|33)!', - 'GT-S5380!', - 'GT-S57(50|53)!', - 'GT-S57(80)!', - 'GT-S72(30|33)!', - 'GT-S7250!', - 'GT-S8500!', - 'GT- ?S8530!', - 'GT- ?S8600!', - ], - '@SC': - [ - 'SCH-F859!', - ], - '@SH': - [ - 'SHW-M410', + '@GT': [ + 'GT- ?S52(50|53)!', + 'GT-S53(30|33)!', + 'GT-S5380!', + 'GT-S57(50|53)!', + 'GT-S57(80)!', + 'GT-S72(30|33)!', + 'GT-S7250!', + 'GT-S8500!', + 'GT- ?S8530!', + 'GT- ?S8600!', ], + '@SC': ['SCH-F859!'], + '@SH': ['SHW-M410'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/indices/models-brew.js b/data/indices/models-brew.js index d8c7e88..e841a11 100644 --- a/data/indices/models-brew.js +++ b/data/indices/models-brew.js @@ -1,7 +1,5 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.BREW_INDEX = { '@AX': ['AX8575'], '@CD': ['CDM8992', 'CDM8999'], @@ -16,7 +14,7 @@ exports.BREW_INDEX = { 'HUAWEI U5200!', 'HUAWEI U5300!', 'HUAWEI U5310!', - 'HUAWEI U6150!' + 'HUAWEI U6150!', ], '@LG': [ 'LG272', @@ -28,7 +26,7 @@ exports.BREW_INDEX = { 'LGE UX840', 'LGE VX11K', 'LGE VX8575', - 'LGE VX9700' + 'LGE VX9700', ], '@LN': ['LN240', 'LN510'], '@LX': ['LX610'], @@ -63,7 +61,7 @@ exports.BREW_INDEX = { 'SCP-6750', 'SCP6760', 'SCP-6760', - 'SCP6780' + 'SCP6780', ], '@SG': ['SGH-A937!', 'SGH-A947!'], '@SM': ['SM-B690V'], @@ -71,7 +69,7 @@ exports.BREW_INDEX = { '@TX': ['TXT8045'], '@VN': ['VN170!', 'VN250!', 'VN271!', 'VN280!', 'VN360!', 'VN370!', 'VN530'], '@VX': ['VX5600!', 'VX9200!', 'VX9600!', 'VX11000!'], - '@ZT': ['ZTE F-450!', 'ZTE R516!', 'ZTE R518!'] + '@ZT': ['ZTE F-450!', 'ZTE R516!', 'ZTE R518!'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/indices/models-feature.js b/data/indices/models-feature.js index 936898c..0c97f0f 100644 --- a/data/indices/models-feature.js +++ b/data/indices/models-feature.js @@ -1,7 +1,5 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.FEATURE_INDEX = { '@AM': ['Amstrad Gamma'], '@BE': ['Benefon Q'], @@ -42,7 +40,7 @@ exports.FEATURE_INDEX = { 'GT-S5610!', 'GT-I6410!', 'GT-I8320!', - 'GT-I8330!' + 'GT-I8330!', ], '@J1': ['J105[ai]?$!', 'J108[ai]?$!', 'J10(i2?)?$!'], '@J2': ['J20[ai]?$!'], @@ -81,7 +79,7 @@ exports.FEATURE_INDEX = { 'SGHX660V', 'SGH-Z107!', 'SGH-Z130!', - 'SGH-Z500!' + 'SGH-Z500!', ], '@SM': ['SM-B313E', 'SM-B350E', 'SM-B360E', 'SM-B780(A|W)!'], '@TE': ['tecnot36'], @@ -91,7 +89,7 @@ exports.FEATURE_INDEX = { '@W2': ['W20i?$!'], '@WI': ['WIDETEL WCX150'], '@WT': ['WT13i$!'], - '@X5': ['X5i$!'] + '@X5': ['X5i$!'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/indices/models-firefoxos.js b/data/indices/models-firefoxos.js index 8b0dc9b..de487ae 100644 --- a/data/indices/models-firefoxos.js +++ b/data/indices/models-firefoxos.js @@ -1,7 +1,5 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.FIREFOXOS_INDEX = { '@': ['.LYF\\/.F30C!', '.LYF\\/.F101K!'], '@AL': [ @@ -17,7 +15,7 @@ exports.FIREFOXOS_INDEX = { 'ALCATELOneTouch4023!', 'ALCATELOneTouch6015X!', 'ALCATEL4044[MNOTVW]!', - 'ALCATEL4044C!' + 'ALCATEL4044C!', ], '@HU': ['HUAWEI Ascend Y300-F1', 'HUAWEIY300-F1'], '@LG': ['LG-D3(00|01)!', 'LGL25'], @@ -26,7 +24,7 @@ exports.FIREFOXOS_INDEX = { '@ON': ['OneTouch4019A'], '@OP': ['OPEN', 'OpenC', 'Open C', 'OPENC2', 'OPEN2'], '@OR': ['Orange KLIF', 'Orange KLIFD'], - '@ZT': ['ZTEOPEN'] + '@ZT': ['ZTEOPEN'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/indices/models-kddi.js b/data/indices/models-kddi.js index 5d681c7..e33aee2 100644 --- a/data/indices/models-kddi.js +++ b/data/indices/models-kddi.js @@ -1,395 +1,347 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.KDDI_INDEX = { - - '@CA': - [ - 'CA11', - 'CA12', - 'CA13', - 'CA14', - 'CA21', - 'CA22', - 'CA23', - 'CA24', - 'CA25', - 'CA26', - 'CA27', - 'CA28', - 'CA31', - 'CA32', - 'CA33', - 'CA34', - 'CA35', - 'CA36', - 'CA37', - 'CA38', - 'CA39', - 'CA3A', - 'CA3B', - 'CA3C', - 'CA3D', - 'CA3E', - 'CA3F', - 'CA3G', - 'CA3H', - 'CA3I', - 'CA3J', - 'CA3K', - ], - '@DN': - [ - 'DN01', - 'DN11', - ], - '@ER': - [ - 'ERK0', - ], - '@FJ': - [ - 'FJ31', - ], - '@HI': - [ - 'HI01', - 'HI02', - 'HI11', - 'HI12', - 'HI13', - 'HI14', - 'HI21', - 'HI23', - 'HI24', - 'HI31', - 'HI32', - 'HI33', - 'HI34', - 'HI35', - 'HI36', - 'HI37', - 'HI38', - 'HI39', - 'HI3A', - 'HI3B', - 'HI3C', - 'HI3D', - 'HI3E', - 'HI3F', - 'HI3G', - 'HI3H', - ], - '@KC': - [ - 'KC3Q', - 'KC3S', - 'KC3V', - 'KC11', - 'KC12', - 'KC13', - 'KC14', - 'KC15', - 'KC21', - 'KC22', - 'KC23', - 'KC24', - 'KC25', - 'KC26', - 'KC27', - 'KC28', - 'KC29', - 'KC2A', - 'KC31', - 'KC32', - 'KC33', - 'KC34', - 'KC35', - 'KC36', - 'KC37', - 'KC38', - 'KC39', - 'KC3A', - 'KC3B', - 'KC3D', - 'KC3E', - 'KC3G', - 'KC3H', - 'KC3I', - 'KC3K', - 'KC3M', - 'KC3N', - 'KC3O', - 'KC3P', - 'KC3R', - 'KC3T', - 'KC3U', - 'KC3W', - 'KC3X', - 'KC3Y', - 'KC3Z', - 'KC41', - 'KC42', - 'KC43', - 'KC44', - 'KC45', - 'KC46', - 'KC47', - 'KC48', - 'KC4A', - 'KCC1', - 'KCC2', - 'KCI1', - 'KCI2', - 'KCT1', - 'KCT2', - 'KCT3', - 'KCT4', - 'KCT5', - 'KCT6', - 'KCT7', - 'KCT8', - 'KCT9', - 'KCTA', - 'KCTB', - 'KCTC', - ], - '@MA': - [ - 'MA11', - 'MA12', - 'MA13', - 'MA21', - 'MA31', - 'MA32', - 'MA33', - 'MA34', - 'MA35', - 'MAC1', - 'MAC2', - 'MAI1', - 'MAI2', - 'MAT1', - 'MAT2', - 'MAT3', + '@CA': [ + 'CA11', + 'CA12', + 'CA13', + 'CA14', + 'CA21', + 'CA22', + 'CA23', + 'CA24', + 'CA25', + 'CA26', + 'CA27', + 'CA28', + 'CA31', + 'CA32', + 'CA33', + 'CA34', + 'CA35', + 'CA36', + 'CA37', + 'CA38', + 'CA39', + 'CA3A', + 'CA3B', + 'CA3C', + 'CA3D', + 'CA3E', + 'CA3F', + 'CA3G', + 'CA3H', + 'CA3I', + 'CA3J', + 'CA3K', ], - '@MI': - [ - 'MIT1', + '@DN': ['DN01', 'DN11'], + '@ER': ['ERK0'], + '@FJ': ['FJ31'], + '@HI': [ + 'HI01', + 'HI02', + 'HI11', + 'HI12', + 'HI13', + 'HI14', + 'HI21', + 'HI23', + 'HI24', + 'HI31', + 'HI32', + 'HI33', + 'HI34', + 'HI35', + 'HI36', + 'HI37', + 'HI38', + 'HI39', + 'HI3A', + 'HI3B', + 'HI3C', + 'HI3D', + 'HI3E', + 'HI3F', + 'HI3G', + 'HI3H', ], - '@PT': - [ - 'PT21', - 'PT23', - 'PT33', - 'PT34', - 'PT35', - 'PT36', + '@KC': [ + 'KC3Q', + 'KC3S', + 'KC3V', + 'KC11', + 'KC12', + 'KC13', + 'KC14', + 'KC15', + 'KC21', + 'KC22', + 'KC23', + 'KC24', + 'KC25', + 'KC26', + 'KC27', + 'KC28', + 'KC29', + 'KC2A', + 'KC31', + 'KC32', + 'KC33', + 'KC34', + 'KC35', + 'KC36', + 'KC37', + 'KC38', + 'KC39', + 'KC3A', + 'KC3B', + 'KC3D', + 'KC3E', + 'KC3G', + 'KC3H', + 'KC3I', + 'KC3K', + 'KC3M', + 'KC3N', + 'KC3O', + 'KC3P', + 'KC3R', + 'KC3T', + 'KC3U', + 'KC3W', + 'KC3X', + 'KC3Y', + 'KC3Z', + 'KC41', + 'KC42', + 'KC43', + 'KC44', + 'KC45', + 'KC46', + 'KC47', + 'KC48', + 'KC4A', + 'KCC1', + 'KCC2', + 'KCI1', + 'KCI2', + 'KCT1', + 'KCT2', + 'KCT3', + 'KCT4', + 'KCT5', + 'KCT6', + 'KCT7', + 'KCT8', + 'KCT9', + 'KCTA', + 'KCTB', + 'KCTC', ], - '@SA': - [ - 'SA21', - 'SA22', - 'SA24', - 'SA25', - 'SA26', - 'SA27', - 'SA28', - 'SA29', - 'SA2A', - 'SA31', - 'SA32', - 'SA33', - 'SA34', - 'SA35', - 'SA36', - 'SA37', - 'SA38', - 'SA39', - 'SA3A', - 'SA3B', - 'SA3C', - 'SA3D', - 'SA3E', + '@MA': [ + 'MA11', + 'MA12', + 'MA13', + 'MA21', + 'MA31', + 'MA32', + 'MA33', + 'MA34', + 'MA35', + 'MAC1', + 'MAC2', + 'MAI1', + 'MAI2', + 'MAT1', + 'MAT2', + 'MAT3', ], - '@SH': - [ - 'SH31', - 'SH32', - 'SH33', - 'SH34', - 'SH35', - 'SH36', - 'SH37', - 'SH38', - 'SH39', - 'SH3A', - 'SH3B', - 'SH3C', - 'SH3D', - 'SH3E', - 'SH3F', - 'SH3G', - 'SH3H', - 'SH3I', - 'SH3J', - 'SH3K', - 'SH3L', + '@MI': ['MIT1'], + '@PT': ['PT21', 'PT23', 'PT33', 'PT34', 'PT35', 'PT36'], + '@SA': [ + 'SA21', + 'SA22', + 'SA24', + 'SA25', + 'SA26', + 'SA27', + 'SA28', + 'SA29', + 'SA2A', + 'SA31', + 'SA32', + 'SA33', + 'SA34', + 'SA35', + 'SA36', + 'SA37', + 'SA38', + 'SA39', + 'SA3A', + 'SA3B', + 'SA3C', + 'SA3D', + 'SA3E', ], - '@SN': - [ - 'SN3K', - 'SN3T', - 'SN11', - 'SN13', - 'SN14', - 'SN15', - 'SN16', - 'SN17', - 'SN21', - 'SN22', - 'SN23', - 'SN24', - 'SN25', - 'SN26', - 'SN27', - 'SN28', - 'SN29', - 'SN31', - 'SN32', - 'SN33', - 'SN34', - 'SN35', - 'SN36', - 'SN37', - 'SN38', - 'SN39', - 'SN3A', - 'SN3B', - 'SN3C', - 'SN3D', - 'SN3E', - 'SN3F', - 'SN3G', - 'SN3H', - 'SN3I', - 'SN3J', - 'SN3L', - 'SN3M', - 'SN3N', - 'SN3O', - 'SN3P', - 'SN3Q', - 'SN3R', - 'SN3S', - 'SN3U', - 'SN3V', + '@SH': [ + 'SH31', + 'SH32', + 'SH33', + 'SH34', + 'SH35', + 'SH36', + 'SH37', + 'SH38', + 'SH39', + 'SH3A', + 'SH3B', + 'SH3C', + 'SH3D', + 'SH3E', + 'SH3F', + 'SH3G', + 'SH3H', + 'SH3I', + 'SH3J', + 'SH3K', + 'SH3L', ], - '@ST': - [ - 'ST22', - 'ST33', - 'ST11', - 'ST12', - 'ST13', - 'ST14', - 'ST21', - 'ST23', - 'ST24', - 'ST25', - 'ST26', - 'ST27', - 'ST28', - 'ST29', - 'ST2A', - 'ST2C', - 'ST2D', - 'ST31', - 'ST32', - 'ST34', + '@SN': [ + 'SN3K', + 'SN3T', + 'SN11', + 'SN13', + 'SN14', + 'SN15', + 'SN16', + 'SN17', + 'SN21', + 'SN22', + 'SN23', + 'SN24', + 'SN25', + 'SN26', + 'SN27', + 'SN28', + 'SN29', + 'SN31', + 'SN32', + 'SN33', + 'SN34', + 'SN35', + 'SN36', + 'SN37', + 'SN38', + 'SN39', + 'SN3A', + 'SN3B', + 'SN3C', + 'SN3D', + 'SN3E', + 'SN3F', + 'SN3G', + 'SN3H', + 'SN3I', + 'SN3J', + 'SN3L', + 'SN3M', + 'SN3N', + 'SN3O', + 'SN3P', + 'SN3Q', + 'SN3R', + 'SN3S', + 'SN3U', + 'SN3V', ], - '@SY': - [ - 'SY12', - 'SY13', - 'SY14', - 'SY15', - 'SYC1', - 'SYT1', - 'SYT2', - 'SYT3', - 'SYT4', - 'SY01', - 'SY02', - 'SY03', - 'SY11', + '@ST': [ + 'ST22', + 'ST33', + 'ST11', + 'ST12', + 'ST13', + 'ST14', + 'ST21', + 'ST23', + 'ST24', + 'ST25', + 'ST26', + 'ST27', + 'ST28', + 'ST29', + 'ST2A', + 'ST2C', + 'ST2D', + 'ST31', + 'ST32', + 'ST34', ], - '@TS': - [ - 'TS3Q', - 'TS3U', - 'TS3W', - 'TS01', - 'TS11', - 'TS12', - 'TS13', - 'TS14', - 'TS21', - 'TS22', - 'TS23', - 'TS24', - 'TS25', - 'TS26', - 'TS27', - 'TS28', - 'TS29', - 'TS2A', - 'TS2B', - 'TS2C', - 'TS2D', - 'TS2E', - 'TS31', - 'TS32', - 'TS33', - 'TS34', - 'TS35', - 'TS36', - 'TS37', - 'TS38', - 'TS39', - 'TS3A', - 'TS3B', - 'TS3C', - 'TS3D', - 'TS3E', - 'TS3G', - 'TS3H', - 'TS3I', - 'TS3J', - 'TS3K', - 'TS3L', - 'TS3M', - 'TS3N', - 'TS3O', - 'TS3P', - 'TS3R', - 'TS3S', - 'TS3T', - 'TS3V', - 'TS3X', - 'TS3Y', - 'TS3Z', - 'TS41', - 'TSC1', - 'TSI1', - 'TST1', - 'TST2', - 'TST3', - 'TST4', - 'TST5', - 'TST6', - 'TST7', + '@SY': ['SY12', 'SY13', 'SY14', 'SY15', 'SYC1', 'SYT1', 'SYT2', 'SYT3', 'SYT4', 'SY01', 'SY02', 'SY03', 'SY11'], + '@TS': [ + 'TS3Q', + 'TS3U', + 'TS3W', + 'TS01', + 'TS11', + 'TS12', + 'TS13', + 'TS14', + 'TS21', + 'TS22', + 'TS23', + 'TS24', + 'TS25', + 'TS26', + 'TS27', + 'TS28', + 'TS29', + 'TS2A', + 'TS2B', + 'TS2C', + 'TS2D', + 'TS2E', + 'TS31', + 'TS32', + 'TS33', + 'TS34', + 'TS35', + 'TS36', + 'TS37', + 'TS38', + 'TS39', + 'TS3A', + 'TS3B', + 'TS3C', + 'TS3D', + 'TS3E', + 'TS3G', + 'TS3H', + 'TS3I', + 'TS3J', + 'TS3K', + 'TS3L', + 'TS3M', + 'TS3N', + 'TS3O', + 'TS3P', + 'TS3R', + 'TS3S', + 'TS3T', + 'TS3V', + 'TS3X', + 'TS3Y', + 'TS3Z', + 'TS41', + 'TSC1', + 'TSI1', + 'TST1', + 'TST2', + 'TST3', + 'TST4', + 'TST5', + 'TST6', + 'TST7', ], }; diff --git a/data/indices/models-palmos.js b/data/indices/models-palmos.js index 394d0ef..b04de29 100644 --- a/data/indices/models-palmos.js +++ b/data/indices/models-palmos.js @@ -1,118 +1,73 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.PALMOS_INDEX = { - - '@AC': - [ - 'acer-momo', - 'acer-coco', - 'Acea-MZ01', - 'Acea-PD01', - ], - '@GR': - [ - 'grmn-3200', - 'grmn-3600', - 'grmn-3700', - ], - '@GS': - [ - 'gsRl-zicn', - 'gsRl-zcn2', - 'gsRl-zcn5', - ], - '@HS': - [ - 'hspr-H101', - 'hspr-H102', - ], - '@KW': - [ - 'kwc.-7135', - ], - '@PA': - [ - 'Palm-D061', - 'Palm-D062', - 'Palm-TunX', - 'Palm-stuj', - 'Palm-hbbs', - 'Palm-trnd', - 'Palm-ecty', - 'Palm-lith', - 'Palm-sky1', - 'Palm-D053', - 'Palm-D052', - 'Palm-D060', - 'Palm-MT64', - 'Palm-Cct1', - 'Palm-Zir4', - 'Palm-Frg1', - 'Palm-Frg2', - 'Palm-Arz1', - 'Palm-TnT5', - 'Palm-atc1', - 'Palm-D050', - 'Palm-Cubs', - 'Palm-Zi21', - 'Palm-D051', - 'Palm-Zi22', - 'Palm-Zpth', - 'Palm-Zi72', - ], - '@QC': - [ - 'qcom-qc20', - ], - '@SM': - [ - 'smsn-phix', - 'smsn-Phx2', - 'smsn-blch', - 'smsn-BLFM', - 'smsn-glxy', - ], - '@SO': - [ - 'sony-ystn', - 'sony-ysmt', - 'sony-ysm2', - 'sony-nsca', - 'sony-nsc2', - 'sony-vnce', - 'sony-mdna', - 'sony-npls', - 'sony-rdwd', - 'sony-crdb', - 'sony-tldo', - 'sony-mdrd', - 'sony-grnd', - 'sony-frta', - 'sony-cocs', - 'sony-glps', - 'sony-mcnd', - 'sony-vrna', - 'sony-atom', - 'sony-goha', - 'sony-leia', - 'sony-hwai', - 'sony-goku', - 'sony-luke', - 'sony-amno', - 'sony-prmr', - 'sony-ancy', - ], - '@TP': - [ - 'Tpwv-Rdog', + '@AC': ['acer-momo', 'acer-coco', 'Acea-MZ01', 'Acea-PD01'], + '@GR': ['grmn-3200', 'grmn-3600', 'grmn-3700'], + '@GS': ['gsRl-zicn', 'gsRl-zcn2', 'gsRl-zcn5'], + '@HS': ['hspr-H101', 'hspr-H102'], + '@KW': ['kwc.-7135'], + '@PA': [ + 'Palm-D061', + 'Palm-D062', + 'Palm-TunX', + 'Palm-stuj', + 'Palm-hbbs', + 'Palm-trnd', + 'Palm-ecty', + 'Palm-lith', + 'Palm-sky1', + 'Palm-D053', + 'Palm-D052', + 'Palm-D060', + 'Palm-MT64', + 'Palm-Cct1', + 'Palm-Zir4', + 'Palm-Frg1', + 'Palm-Frg2', + 'Palm-Arz1', + 'Palm-TnT5', + 'Palm-atc1', + 'Palm-D050', + 'Palm-Cubs', + 'Palm-Zi21', + 'Palm-D051', + 'Palm-Zi22', + 'Palm-Zpth', + 'Palm-Zi72', ], - '@TR': - [ - 'trgp-trg1', - 'trgp-trg2', + '@QC': ['qcom-qc20'], + '@SM': ['smsn-phix', 'smsn-Phx2', 'smsn-blch', 'smsn-BLFM', 'smsn-glxy'], + '@SO': [ + 'sony-ystn', + 'sony-ysmt', + 'sony-ysm2', + 'sony-nsca', + 'sony-nsc2', + 'sony-vnce', + 'sony-mdna', + 'sony-npls', + 'sony-rdwd', + 'sony-crdb', + 'sony-tldo', + 'sony-mdrd', + 'sony-grnd', + 'sony-frta', + 'sony-cocs', + 'sony-glps', + 'sony-mcnd', + 'sony-vrna', + 'sony-atom', + 'sony-goha', + 'sony-leia', + 'sony-hwai', + 'sony-goku', + 'sony-luke', + 'sony-amno', + 'sony-prmr', + 'sony-ancy', ], + '@TP': ['Tpwv-Rdog'], + '@TR': ['trgp-trg1', 'trgp-trg2'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/indices/models-s30plus.js b/data/indices/models-s30plus.js index 487a026..9d6c3e0 100644 --- a/data/indices/models-s30plus.js +++ b/data/indices/models-s30plus.js @@ -1,23 +1,9 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.S30PLUS_INDEX = { - - '@21': - [ - 215, - ], - '@22': - [ - 220, - 222, - 225, - ], - '@23': - [ - 230, - ], + '@21': [215], + '@22': [220, 222, 225], + '@23': [230], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/indices/models-s40.js b/data/indices/models-s40.js index 2e04d5e..cd75b29 100644 --- a/data/indices/models-s40.js +++ b/data/indices/models-s40.js @@ -1,252 +1,61 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.S40_INDEX = { - - '@10': - [ - 109, - ], - '@11': - [ - 110, - 111, - '111.1', - 112, - 114, - ], - '@16': - [ - '1682c', - ], - '@20': - [ - 200, - 201, - 202, - 203, - 205, - '205.1', - '205.3', - 206, - '206.1', - 208, - '208.1', - '208.2', - '208.3', - '208.4', - 2055, - 2060, - ], - '@21': - [ - 210, - '210.2', - '210.3', - '210.4', - '210.5', - ], - '@22': - [ - '2220s!', - ], - '@23': - [ - '2320c!', - '2322c!', - '2323c!', - '2330c!', - ], - '@26': - [ - '2600c!', - '2680s!', - 2690, - 2692, - ], - '@27': - [ - '2700c!', - '2710c', - '2710c-2', - '2720a!', - '2730c!', - ], - '@30': - [ - 300, - 301, - '301.1', - 302, - 303, - 305, - 306, - 308, - 309, - 3020, - ], - '@31': - [ - 310, - 311, - '3109c', - '3110c', - '3120c', - '3120classic', - ], - '@32': - [ - '3208c', - ], - '@35': - [ - '3500c', - '3555b', - ], - '@36': - [ - '3600s', - '3610a', - ], - '@37': - [ - '3710fold', - '3720c', - ], - '@50': - [ - '5000!', - ], - '@51': - [ - 515, - '515.2', - '5130!', - '5130c!', - 5132, - ], - '@52': - [ - '5200!', - '5220!', - ], - '@53': - [ - '5300!', - '5310!', - 5330, - '5330-1d', - ], - '@56': - [ - '5610d!', - ], - '@60': - [ - '6070!', - ], - '@62': - [ - '6208c', - '6212c', - '6260s!', - '6230i!', - 6233, - 6234, - '6263!', - 6280, - ], - '@63': - [ - 6300, - '6300i', - 6301, - '6303c', - '6303classic', - '6303iclassic', - '6303ci', - 6350, - ], - '@65': - [ - '6500s!', - ], - '@66': - [ - '6600f!', - '6600s!', - '6600i!', - ], - '@67': - [ - '6700c!', - '6750c', - ], - '@70': - [ - '7070!', - ], - '@71': - [ - '7100s!', - ], - '@72': - [ - '7210s!', - '7210Supernova!', - '7230!', - ], - '@73': - [ - '7310c!', - ], - '@75': - [ - 7500, - '7510Supernova!', - ], - '@76': - [ - '7610Supernova!', - ], - '@88': - [ - '8800!', - ], - '@C1': - [ - 'C1-01!', - 'C1-02!', - 'C1-03!', - ], - '@C2': - [ - 'C2-00!', - 'C2-01!', - 'C2-02!', - 'C2-03!', - 'C2-05!', - 'C2-06!', - ], - '@C3': - [ - 'C3-00!', - 'C3-01!', - ], - '@X2': - [ - 'X2-00!', - 'X2-01!', - 'X2-02!', - 'X2-03!', - 'X2-05!', - ], - '@X3': - [ - 'X3-00!', - 'X3-02!', - ], + '@10': [109], + '@11': [110, 111, '111.1', 112, 114], + '@16': ['1682c'], + '@20': [ + 200, + 201, + 202, + 203, + 205, + '205.1', + '205.3', + 206, + '206.1', + 208, + '208.1', + '208.2', + '208.3', + '208.4', + 2055, + 2060, + ], + '@21': [210, '210.2', '210.3', '210.4', '210.5'], + '@22': ['2220s!'], + '@23': ['2320c!', '2322c!', '2323c!', '2330c!'], + '@26': ['2600c!', '2680s!', 2690, 2692], + '@27': ['2700c!', '2710c', '2710c-2', '2720a!', '2730c!'], + '@30': [300, 301, '301.1', 302, 303, 305, 306, 308, 309, 3020], + '@31': [310, 311, '3109c', '3110c', '3120c', '3120classic'], + '@32': ['3208c'], + '@35': ['3500c', '3555b'], + '@36': ['3600s', '3610a'], + '@37': ['3710fold', '3720c'], + '@50': ['5000!'], + '@51': [515, '515.2', '5130!', '5130c!', 5132], + '@52': ['5200!', '5220!'], + '@53': ['5300!', '5310!', 5330, '5330-1d'], + '@56': ['5610d!'], + '@60': ['6070!'], + '@62': ['6208c', '6212c', '6260s!', '6230i!', 6233, 6234, '6263!', 6280], + '@63': [6300, '6300i', 6301, '6303c', '6303classic', '6303iclassic', '6303ci', 6350], + '@65': ['6500s!'], + '@66': ['6600f!', '6600s!', '6600i!'], + '@67': ['6700c!', '6750c'], + '@70': ['7070!'], + '@71': ['7100s!'], + '@72': ['7210s!', '7210Supernova!', '7230!'], + '@73': ['7310c!'], + '@75': [7500, '7510Supernova!'], + '@76': ['7610Supernova!'], + '@88': ['8800!'], + '@C1': ['C1-01!', 'C1-02!', 'C1-03!'], + '@C2': ['C2-00!', 'C2-01!', 'C2-02!', 'C2-03!', 'C2-05!', 'C2-06!'], + '@C3': ['C3-00!', 'C3-01!'], + '@X2': ['X2-00!', 'X2-01!', 'X2-02!', 'X2-03!', 'X2-05!'], + '@X3': ['X3-00!', 'X3-02!'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/indices/models-symbian.js b/data/indices/models-symbian.js index a464e24..19dd603 100644 --- a/data/indices/models-symbian.js +++ b/data/indices/models-symbian.js @@ -1,347 +1,117 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.SYMBIAN_INDEX = { - - '@': - [ - '(?i)U1(a|i|iv)?$!', - '(?i)U5(a|i|iv)?$!', - '(?i)U8(a|i)?$!', - ], - '@32': - [ - 3230, - 3250, - ], - '@36': - [ - 3650, - 3660, - ], - '@50': - [ - 500, - ], - '@52': - [ - 5228, - '5233!', - '5230!', - 5232, - '5235!', - 5236, - 5238, - 5250, - ], - '@53': - [ - '5320!', - ], - '@55': - [ - '5500d!', - '5530!', - ], - '@56': - [ - '5630!', - ], - '@57': - [ - '5700!', - '5730!', - ], - '@58': - [ - '5800!', - ], - '@60': - [ - 600, - 603, - ], - '@61': - [ - '6110Navigator', - '6120c!', - '6121c!', - '6122c!', - '6124c', - ], - '@62': - [ - '6210 ?Navigator!', - '6220c!', - 6260, - '6290!', - ], - '@66': - [ - 6600, - 6630, - '6650d!', - 6670, - 6680, - 6681, - ], - '@67': - [ - '6700s', - '6700s-1c', - 6708, - '6710s', - '6720c!', - '6730c!', - '6760s!', - 6788, - '6788i', - '6790s-1b!', - '6790s-1c!', - ], - '@70': - [ - 700, - 701, - '702T', - ], - '@76': - [ - 7610, - 7650, - 7660, - ], - '@80': - [ - '801T', - 808, - '808PureView', - '808 PureView', - ], - '@A1': - [ - 'A1000', - ], - '@A9': - [ - 'A920', - 'A925', - ], - '@BE': - [ - 'BenQ P30', - 'BenQ P31', - ], - '@C5': - [ - 'C5-00!', - 'C5-01', - 'C5-03!', - 'C5-04', - 'C5-05', - 'C5-06', - ], - '@C6': - [ - 'C6-00!', - 'C6-01!', - ], - '@C7': - [ - 'C7-00!', - ], - '@CO': - [ - 'ConstellationT', - 'ConstellationQuest', - ], - '@E-': - [ - 'E-90-1', - ], - '@E5': - [ - 'E5-00!', - 'E50(-[1-9])?$!', - 'E51(-[1-9])?$!', - 'E52(-[1-9])?$!', - 'E55(-[1-9])?$!', - ], - '@E6': - [ - 'E6', - 'E6-00', - 'E60(-[1-9])?$!', - 'E61i!', - 'E61(-[1-9])?$!', - 'E62(-[1-9])?$!', - 'E63(-[1-9])?$!', - 'E65(-[1-9])?$!', - 'E66(-[1-9])?$!', - ], - '@E7': - [ - 'E7-00', - 'E70(-[1-9])?$!', - 'E71x', - 'E71(-[1-9])?$!', - 'E72(-[1-9])?$!', - 'E73(-[1-9])?$!', - 'E75(-[1-9])?$!', - ], - '@E9': - [ - 'E90(-[1-9])?$!', - ], - '@G7': - [ - 'G700', - ], - '@G9': - [ - 'G900', - ], - '@I7': - [ - 'I7710', - ], - '@I8': - [ - 'I8510', - 'I8910', - ], - '@LG': - [ - 'LG KS10', - 'LGKT610', - 'LGKT615', - ], - '@M1': - [ - 'M1000', - ], - '@M6': - [ - 'M600i', - ], - '@N-': - [ - 'N-Gage', - 'N-GageQD', - ], - '@N5': - [ - 'N5233!', - ], - '@N7': - [ - 'N70(-[1-9])?$!', - 'N71(-[1-9])?$!', - 'N72(-[1-9])?$!', - 'N73(-[1-9])?$!', - 'N75(-[1-9])?$!', - 'N76(-[1-9])?$!', - 'N77(-[1-9])?$!', - 'N78(-[1-9])?$!', - 'N79(-[1-9])?$!', - ], - '@N8': - [ - 'N8-00', - 'N80(-[1-9])?$!', - 'N81(-[1-9])?$!', - 'N82(-[1-9])?$!', - 'N85(-[1-9])?$!', - 'N86(-[1-9])?$!', - 'N86 ?8MP$!', - ], - '@N9': - [ - 'N90(-[1-9])?$!', - 'N91(-[1-9])?$!', - 'N92(-[1-9])?$!', - 'N93(-[1-9])?$!', - 'N93i', - 'N95(-[1-9])?$!', - 'N95[ -]8GB(-[1-9])?!', - 'N96(-[1-9])?$!', - 'N97(-[1-3])?$!', - 'N97i', - 'N97(-[4-5])?$!', - 'N97 ?mini!', - ], - '@NO': - [ - 'Nokia N81', - 'Nokia N81 8GB', - ], - '@OR': - [ - 'Oro', - ], - '@P1': - [ - 'P1i', - ], - '@P9': - [ - 'P910i', - 'P990i', - ], - '@PA': - [ - 'Panasonic-X700', - 'Panasonic-X800', - ], - '@RI': - [ - 'RIZR-Z8', - 'RIZR-Z10', - ], - '@SG': - [ - 'SGH-D720', - 'SGH-D728', - 'SGH-D730', - 'SGH-i400!', - 'SGH-i408!', - 'SGH-i450!', - 'SGH-i455!', - 'SGH-i458!', - 'SGH-i520!', - 'SGH-i550!', - 'SGH-i560!', - 'SGH-i568!', - 'SGH-i570!', - 'SGH-G810', - ], - '@T7': - [ - 'T7-00', - ], - '@U': - [ - 'U', - ], - '@W9': - [ - 'W950i', - 'W960i', - ], - '@X5': - [ - 'X5-00', - 'X5-01', - ], - '@X6': - [ - 'X6-00!', - ], - '@X7': - [ - 'X7-00!', - ], + '@': ['(?i)U1(a|i|iv)?$!', '(?i)U5(a|i|iv)?$!', '(?i)U8(a|i)?$!'], + '@32': [3230, 3250], + '@36': [3650, 3660], + '@50': [500], + '@52': [5228, '5233!', '5230!', 5232, '5235!', 5236, 5238, 5250], + '@53': ['5320!'], + '@55': ['5500d!', '5530!'], + '@56': ['5630!'], + '@57': ['5700!', '5730!'], + '@58': ['5800!'], + '@60': [600, 603], + '@61': ['6110Navigator', '6120c!', '6121c!', '6122c!', '6124c'], + '@62': ['6210 ?Navigator!', '6220c!', 6260, '6290!'], + '@66': [6600, 6630, '6650d!', 6670, 6680, 6681], + '@67': ['6700s', '6700s-1c', 6708, '6710s', '6720c!', '6730c!', '6760s!', 6788, '6788i', '6790s-1b!', '6790s-1c!'], + '@70': [700, 701, '702T'], + '@76': [7610, 7650, 7660], + '@80': ['801T', 808, '808PureView', '808 PureView'], + '@A1': ['A1000'], + '@A9': ['A920', 'A925'], + '@BE': ['BenQ P30', 'BenQ P31'], + '@C5': ['C5-00!', 'C5-01', 'C5-03!', 'C5-04', 'C5-05', 'C5-06'], + '@C6': ['C6-00!', 'C6-01!'], + '@C7': ['C7-00!'], + '@CO': ['ConstellationT', 'ConstellationQuest'], + '@E-': ['E-90-1'], + '@E5': ['E5-00!', 'E50(-[1-9])?$!', 'E51(-[1-9])?$!', 'E52(-[1-9])?$!', 'E55(-[1-9])?$!'], + '@E6': [ + 'E6', + 'E6-00', + 'E60(-[1-9])?$!', + 'E61i!', + 'E61(-[1-9])?$!', + 'E62(-[1-9])?$!', + 'E63(-[1-9])?$!', + 'E65(-[1-9])?$!', + 'E66(-[1-9])?$!', + ], + '@E7': ['E7-00', 'E70(-[1-9])?$!', 'E71x', 'E71(-[1-9])?$!', 'E72(-[1-9])?$!', 'E73(-[1-9])?$!', 'E75(-[1-9])?$!'], + '@E9': ['E90(-[1-9])?$!'], + '@G7': ['G700'], + '@G9': ['G900'], + '@I7': ['I7710'], + '@I8': ['I8510', 'I8910'], + '@LG': ['LG KS10', 'LGKT610', 'LGKT615'], + '@M1': ['M1000'], + '@M6': ['M600i'], + '@N-': ['N-Gage', 'N-GageQD'], + '@N5': ['N5233!'], + '@N7': [ + 'N70(-[1-9])?$!', + 'N71(-[1-9])?$!', + 'N72(-[1-9])?$!', + 'N73(-[1-9])?$!', + 'N75(-[1-9])?$!', + 'N76(-[1-9])?$!', + 'N77(-[1-9])?$!', + 'N78(-[1-9])?$!', + 'N79(-[1-9])?$!', + ], + '@N8': [ + 'N8-00', + 'N80(-[1-9])?$!', + 'N81(-[1-9])?$!', + 'N82(-[1-9])?$!', + 'N85(-[1-9])?$!', + 'N86(-[1-9])?$!', + 'N86 ?8MP$!', + ], + '@N9': [ + 'N90(-[1-9])?$!', + 'N91(-[1-9])?$!', + 'N92(-[1-9])?$!', + 'N93(-[1-9])?$!', + 'N93i', + 'N95(-[1-9])?$!', + 'N95[ -]8GB(-[1-9])?!', + 'N96(-[1-9])?$!', + 'N97(-[1-3])?$!', + 'N97i', + 'N97(-[4-5])?$!', + 'N97 ?mini!', + ], + '@NO': ['Nokia N81', 'Nokia N81 8GB'], + '@OR': ['Oro'], + '@P1': ['P1i'], + '@P9': ['P910i', 'P990i'], + '@PA': ['Panasonic-X700', 'Panasonic-X800'], + '@RI': ['RIZR-Z8', 'RIZR-Z10'], + '@SG': [ + 'SGH-D720', + 'SGH-D728', + 'SGH-D730', + 'SGH-i400!', + 'SGH-i408!', + 'SGH-i450!', + 'SGH-i455!', + 'SGH-i458!', + 'SGH-i520!', + 'SGH-i550!', + 'SGH-i560!', + 'SGH-i568!', + 'SGH-i570!', + 'SGH-G810', + ], + '@T7': ['T7-00'], + '@U': ['U'], + '@W9': ['W950i', 'W960i'], + '@X5': ['X5-00', 'X5-01'], + '@X6': ['X6-00!'], + '@X7': ['X7-00!'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/indices/models-tizen.js b/data/indices/models-tizen.js index 1c3d6cc..19bca84 100644 --- a/data/indices/models-tizen.js +++ b/data/indices/models-tizen.js @@ -1,7 +1,5 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.TIZEN_INDEX = { '@AR': ['(ARMV7 )?SM-Z9005!'], '@BA': ['Baltic'], @@ -41,12 +39,12 @@ exports.TIZEN_INDEX = { 'SM-R760!', 'SM-R765!', 'SM-R770!', - 'SM-R805!' + 'SM-R805!', ], '@TI': ['TIZEN SM-Z130!', 'TIZEN SM-Z300!', 'TIZEN Emulator'], '@TM': ['TM1'], '@XU': ['xu3'], - '@Z3': ['Z3 Z910F'] + '@Z3': ['Z3 Z910F'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/indices/models-touchwiz.js b/data/indices/models-touchwiz.js index 6f36070..b985922 100644 --- a/data/indices/models-touchwiz.js +++ b/data/indices/models-touchwiz.js @@ -1,58 +1,45 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.TOUCHWIZ_INDEX = { - - '@GT': - [ - 'GT-B5310!', - 'GT-B3410', - 'GT-B7722', - 'GT-C3262', - 'GT-C33(00|03)!', - 'GT-C3312R', - 'GT-C3312!', - 'GT-C3330', - 'GT-C6712', - 'GT-E2652!', - 'GT-I6230!', - 'GT-I6712!', - 'GT-M3710', - 'GT-M5650', - 'GT-S3370!', - 'GT-S36(50|53)!', - 'GT-S3770!', - 'GT-S38(00|02)!', - 'GT-S3850', - 'GT-S5220', - 'GT-S5222R', - 'GT-S5222', - 'GT-S52(30|33)!', - 'GT-S5260P', - 'GT-S52(60|63)!', - 'GT-S5292R', - 'GT-S5292', - 'GT-S5560!', - 'GT-S5600', - 'GT-S5603', - 'GT-S5620!', - 'GT-S5680', - 'GT-S7550', - 'GT-S8000c', - 'GT-S8003', - ], - '@S8': - [ - 'S80(00|03)!', - ], - '@SG': - [ - 'SGH-A597', - 'SGH-F480', - 'SGH-F480I', - 'SGH-T528g', + '@GT': [ + 'GT-B5310!', + 'GT-B3410', + 'GT-B7722', + 'GT-C3262', + 'GT-C33(00|03)!', + 'GT-C3312R', + 'GT-C3312!', + 'GT-C3330', + 'GT-C6712', + 'GT-E2652!', + 'GT-I6230!', + 'GT-I6712!', + 'GT-M3710', + 'GT-M5650', + 'GT-S3370!', + 'GT-S36(50|53)!', + 'GT-S3770!', + 'GT-S38(00|02)!', + 'GT-S3850', + 'GT-S5220', + 'GT-S5222R', + 'GT-S5222', + 'GT-S52(30|33)!', + 'GT-S5260P', + 'GT-S52(60|63)!', + 'GT-S5292R', + 'GT-S5292', + 'GT-S5560!', + 'GT-S5600', + 'GT-S5603', + 'GT-S5620!', + 'GT-S5680', + 'GT-S7550', + 'GT-S8000c', + 'GT-S8003', ], + '@S8': ['S80(00|03)!'], + '@SG': ['SGH-A597', 'SGH-F480', 'SGH-F480I', 'SGH-T528g'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/indices/models-wm.js b/data/indices/models-wm.js index 7863506..ded4c5b 100644 --- a/data/indices/models-wm.js +++ b/data/indices/models-wm.js @@ -1,7 +1,5 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.WM_INDEX = { '@': [ '.*T5555!', @@ -13,7 +11,7 @@ exports.WM_INDEX = { '.*T82(82|83)!', '.*T73(73|80)!', '.*T7272!', - '.*T2223!' + '.*T2223!', ], '@-G': ['-GalaxyII', '-GalaxyMini'], '@-P': ['-P525!', '-P526!', '-P527!', '-P552w!', '-P552!', '-P565!', '-P735!'], @@ -44,7 +42,7 @@ exports.WM_INDEX = { 'GT-B7350', 'GT-B7610', 'GT-C6625', - 'GT-I8000!' + 'GT-I8000!', ], '@GW': ['GW550', 'GW825'], '@H-': ['H-21'], @@ -62,7 +60,7 @@ exports.WM_INDEX = { 'HPiPAQDataMessenger!', 'HPiPAQVoiceMessenger!', 'HPiPAQGlisten', - 'HP KB1' + 'HP KB1', ], '@HT': [ 'HTC8500', @@ -130,7 +128,7 @@ exports.WM_INDEX = { 'HTC VDA V', 'HTC v1510', 'HTC VPACompactIV', - 'HT01A' + 'HT01A', ], '@I-': [ 'i-mate JAMA', @@ -144,7 +142,7 @@ exports.WM_INDEX = { 'i-mate 6150', 'i-mate 8150!', 'i-mate 8502', - 'i-mate 9502!' + 'i-mate 9502!', ], '@K-': ['K-Touch W366!'], '@KD': ['KDDI-HT01'], @@ -180,7 +178,7 @@ exports.WM_INDEX = { 'SCH-i770!', 'SCHI910!', 'SCH-i920', - 'SC-01B' + 'SC-01B', ], '@SF': ['SFR v3650!'], '@SG': [ @@ -196,7 +194,7 @@ exports.WM_INDEX = { 'SGH-i728', 'SGH-i780!', 'SGH-i900!', - 'SGH-i908E' + 'SGH-i908E', ], '@SI': ['SIE-SX66', 'sigmarion3'], '@SP': [ @@ -220,7 +218,7 @@ exports.WM_INDEX = { 'Sprint PPC6850SP', 'Sprint MP6850SP', 'Sprint MP6900SP', - 'Sprint MP6950SP' + 'Sprint MP6950SP', ], '@T-': ['T-Mobile Atlas', 'T-Mobile Dash', 'T-Mobile LEO', 'T-Mobile Cleopatra', 'T-01A!', 'T-01B!'], '@T5': ['T5388'], @@ -239,7 +237,7 @@ exports.WM_INDEX = { '@X2': ['X2', 'X2[ia]!'], '@XD': ['Xda diamond', 'Xda neo', 'Xda nova', 'Xda orbit', 'Xda terra', 'Xda trion'], '@XV': ['XV6175!', 'XV6850!', 'XV6875!', 'XV6900', 'XV6975'], - '@ZT': ['ZTE E N72', 'ZTE E X70'] + '@ZT': ['ZTE E N72', 'ZTE E X70'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/indices/models-wp.js b/data/indices/models-wp.js index 5919d53..75a4233 100644 --- a/data/indices/models-wp.js +++ b/data/indices/models-wp.js @@ -1,7 +1,5 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.WP_INDEX = { '@': [ '(HD7|.*T92(92|95|96))!', @@ -11,7 +9,7 @@ exports.WP_INDEX = { '((7 )?Trophy|.*T8686)!', '(Radar|.*C110e)!', '.*X310e!', - '(Lumia ?|Nokia ?)?[0-9]{3,4}!!' + '(Lumia ?|Nokia ?)?[0-9]{3,4}!!', ], '@- ': ['- BUSH Windows Phone', '- Lazer SMART WIND'], '@0P': ['0P6B140', '0P6B180'], @@ -24,7 +22,7 @@ exports.WP_INDEX = { '7 HTC MOZART', '(7 Pro|.*T75(75|76))!', '7 Surround', - '((7 )?Trophy|.*T8686)!' + '((7 )?Trophy|.*T8686)!', ], '@75': ['75eL0N'], '@8S': ['8S', '8S by HTC'], @@ -70,7 +68,7 @@ exports.WP_INDEX = { 'HTC6990LVW 4G', 'htc 8x', 'HTCPO881', - 'HTC6995LVW' + 'HTC6995LVW', ], '@HU': ['HUAWEI Ascend W1!', 'HUAWEI ?W1-(C00|U00|U34)!', 'HUAWEI ?W2-(T00|T01|U00|U051)!'], '@I9': ['I917'], @@ -98,7 +96,7 @@ exports.WP_INDEX = { 'MOBILE Alpha View', 'Mondrian', '((7 )?Mozart|.*T86(97|98))!', - 'MouseComputer MADOSMA Q501' + 'MouseComputer MADOSMA Q501', ], '@MW': ['MWP6885', 'mwp6985', 'MWP-47!'], '@N8': ['N880e!'], @@ -165,10 +163,10 @@ exports.WP_INDEX = { 'Win-Q900S', 'Win Q1000', 'WinQ1000', - 'Windows!' + 'Windows!', ], '@WP': ['WP 4.7'], - '@XX': ['XXX!'] + '@XX': ['XXX!'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/models-android.js b/data/models-android.js index b35c1fd..e5da242 100644 --- a/data/models-android.js +++ b/data/models-android.js @@ -489,7 +489,7 @@ exports.ANDROID_MODELS = { QS9715F: ['3Q', 'Qoo! Surf Tablet QS9715F', DeviceType.TABLET], QS9719D: ['3Q', 'Qoo! Surf Tablet QS9719D', DeviceType.TABLET], QS1023H: ['3Q', 'Qoo! Surf Tablet QS1023H', DeviceType.TABLET], - VM0711A: ['3Q', 'Qoo! Surf Tablet VM0711A', DeviceType.TABLET] + VM0711A: ['3Q', 'Qoo! Surf Tablet VM0711A', DeviceType.TABLET], }, 'BioniQ!!': { @@ -497,7 +497,7 @@ exports.ANDROID_MODELS = { BioniQ700HX: ['a-rival', 'BioniQ 700 HX', DeviceType.TABLET], 'BioniQ 800': ['a-rival', 'BioniQ 800', DeviceType.TABLET], 'BioniQ 1001': ['a-rival', 'BioniQ 1001', DeviceType.TABLET], - 'BioniQ 8008': ['a-rival', 'BioniQ 8008', DeviceType.TABLET] + 'BioniQ 8008': ['a-rival', 'BioniQ 8008', DeviceType.TABLET], }, 'RTC-700A': ['Aaeon', 'RTC-700A', DeviceType.TABLET], @@ -517,7 +517,7 @@ exports.ANDROID_MODELS = { A511: ['Acer', 'Iconia Tab A511', DeviceType.TABLET], A700: ['Acer', 'Iconia Tab A700', DeviceType.TABLET], A701: ['Acer', 'Iconia Tab A701', DeviceType.TABLET], - A800: ['Acer', 'Iconia Tab A800', DeviceType.TABLET] + A800: ['Acer', 'Iconia Tab A800', DeviceType.TABLET], }, P2A700: ['Acer', 'Iconia Tab A700', DeviceType.TABLET], @@ -536,7 +536,7 @@ exports.ANDROID_MODELS = { 'A1-840FHD': ['Acer', 'Iconia Tab 8 A1-840 FHD', DeviceType.TABLET], 'A1-841': ['Acer', 'Iconia Tab 8 A1-841', DeviceType.TABLET], 'A1-850': ['Acer', 'Iconia One 8 A1-850', DeviceType.TABLET], - 'A1-860': ['Acer', 'Iconia Tab 8 A1-860', DeviceType.TABLET] + 'A1-860': ['Acer', 'Iconia Tab 8 A1-860', DeviceType.TABLET], }, 'A3-A[0-9]{2,2}!!': { @@ -545,7 +545,7 @@ exports.ANDROID_MODELS = { 'A3-A20': ['Acer', 'Iconia Tab 10 A3-A20', DeviceType.TABLET], 'A3-A20FHD': ['Acer', 'Iconia Tab 10 A3-A20 FHD', DeviceType.TABLET], 'A3-A30': ['Acer', 'Iconia Tab 10 A3-A30', DeviceType.TABLET], - 'A3-A40': ['Acer', 'Iconia Tab 10 A3-A40', DeviceType.TABLET] + 'A3-A40': ['Acer', 'Iconia Tab 10 A3-A40', DeviceType.TABLET], }, 'B1-[A0-9][A0-9]{2,2}!!': { @@ -569,7 +569,7 @@ exports.ANDROID_MODELS = { 'B1-820': ['Acer', 'Iconia One 8 B1-820', DeviceType.TABLET], 'B1-830': ['Acer', 'Iconia One 8 B1-830', DeviceType.TABLET], 'B1-850': ['Acer', 'Iconia One 8 B1-850', DeviceType.TABLET], - 'B1-860A': ['Acer', 'Iconia One 8 B1-860A', DeviceType.TABLET] + 'B1-860A': ['Acer', 'Iconia One 8 B1-860A', DeviceType.TABLET], }, 'B3-A10': ['Acer', 'Iconia One 10 B3-A10', DeviceType.TABLET], @@ -588,7 +588,7 @@ exports.ANDROID_MODELS = { 'ICONIA Tab W500': ['Acer', 'Iconia W500', DeviceType.TABLET], 'ICONIA Tab W500P': ['Acer', 'Iconia W500P', DeviceType.TABLET], 'ICONIA Tab W501': ['Acer', 'Iconia W501', DeviceType.TABLET], - 'ICONIA W700': ['Acer', 'Iconia W700', DeviceType.TABLET] + 'ICONIA W700': ['Acer', 'Iconia W700', DeviceType.TABLET], }, 'GT-810': ['Acer', 'Predator 8', DeviceType.TABLET], @@ -606,7 +606,7 @@ exports.ANDROID_MODELS = { E380: ['Acer', 'Liquid E3'], E400: ['Acer', 'beTouch E400'], E600: ['Acer', 'Liquid E600'], - E39: ['Acer', 'Liquid E700'] + E39: ['Acer', 'Liquid E700'], }, I110: ['Acer', 'Liquid C1'], @@ -623,13 +623,13 @@ exports.ANDROID_MODELS = { S55: ['Acer', 'Liquid Jade'], S56: ['Acer', 'Liquid Jade S'], S57: ['Acer', 'Liquid Jade Z'], - S59: ['Acer', 'Liquid X2'] + S59: ['Acer', 'Liquid X2'], }, 'V[0-9]{2,2}0!!': { V360: ['Acer', 'Liquid E1'], V370: ['Acer', 'Liquid E2'], - V380: ['Acer', 'Liquid E3'] + V380: ['Acer', 'Liquid E3'], }, 'Z[0-9]{3,3}!!': { @@ -646,7 +646,7 @@ exports.ANDROID_MODELS = { Z410: ['Acer', 'Liquid Z410'], Z500: ['Acer', 'Liquid Z500'], Z520: ['Acer', 'Liquid Z520'], - Z530: ['Acer', 'Liquid Z530'] + Z530: ['Acer', 'Liquid Z530'], }, Z4: ['Acer', 'Liquid Z4'], @@ -671,7 +671,7 @@ exports.ANDROID_MODELS = { 'LIQUID E3': ['Acer', 'Liquid E3 '], 'Liquid MT': ['Acer', 'Liquid mt'], 'Liquid Metal': ['Acer', 'Liquid mt'], - 'Liquid Z205': ['Acer', 'Liquid Z205'] + 'Liquid Z205': ['Acer', 'Liquid Z205'], }, Stream: ['Acer', 'Stream'], @@ -686,7 +686,7 @@ exports.ANDROID_MODELS = { DA223HQL: ['Acer', 'All-in-One DA223HQL', DeviceType.MONITOR], DA226HQ: ['Acer', 'All-in-One DA226HQ', DeviceType.MONITOR], DA241HL: ['Acer', 'All-in-One DA241HL', DeviceType.MONITOR], - DA245HQL: ['Acer', 'Touch and 3D Monitor DA245HQL', DeviceType.MONITOR] + DA245HQL: ['Acer', 'Touch and 3D Monitor DA245HQL', DeviceType.MONITOR], }, TA272HUL: ['Acer', 'All-in-One TA272HUL', DeviceType.MONITOR], @@ -700,7 +700,7 @@ exports.ANDROID_MODELS = { 'Aspire ([A-Z][0-9]{4,4}[A-Z]?)!': ['Acer', 'Aspire $1', DeviceType.DESKTOP], 'Aspire ([A-Z]{2,2}[0-9]-[0-9]{3,3})!': ['Acer', 'Aspire $1', DeviceType.DESKTOP], 'Aspire one': ['Acer', 'Aspire One', DeviceType.DESKTOP], - 'Aspire one Pro': ['Acer', 'Aspire One Pro', DeviceType.DESKTOP] + 'Aspire one Pro': ['Acer', 'Aspire One Pro', DeviceType.DESKTOP], }, C908: ['Acho', 'C908', DeviceType.TABLET], @@ -786,7 +786,7 @@ exports.ANDROID_MODELS = { 'Numy 3G AX3': ['Ainol', 'Numy 3G AX3', DeviceType.TABLET], 'Numy 3G BW1': ['Ainol', 'Numy 3G BW1', DeviceType.TABLET], 'Numy 3G Vegas': ['Ainol', 'Numy 3G Vegas', DeviceType.TABLET], - 'Numy Note 9': ['Ainol', 'Numy Note 9', DeviceType.TABLET] + 'Numy Note 9': ['Ainol', 'Numy Note 9', DeviceType.TABLET], }, Novo7: ['Ainovo', 'Novo7', DeviceType.TABLET], @@ -1120,8 +1120,8 @@ exports.ANDROID_MODELS = { '8020[D]!': ['Alcatel', 'One Touch Hero'], 'one ?touch 8030!': ['Alcatel', 'One Touch Hero 2'], '8030[BY]!': ['Alcatel', 'One Touch Hero 2'], - '8063': ['Alcatel', 'Pixi 4'], - '8082': ['Alcatel', '1T', DeviceType.TABLET], + 8063: ['Alcatel', 'Pixi 4'], + 8082: ['Alcatel', '1T', DeviceType.TABLET], '8082 EEA': ['Alcatel', '1T', DeviceType.TABLET], '8094[X]!': ['Alcatel', '3T 10', DeviceType.TABLET], '9001[DIX]!': ['Alcatel', 'One Touch Pixi 4 (6)'], @@ -1295,7 +1295,7 @@ exports.ANDROID_MODELS = { AllviewCityLife: ['Allview', 'Alldro City Life', DeviceType.TABLET], 'ALLVIEW VIPER I': ['Allview', 'Viper I', DeviceType.TABLET], 'Allview Viva H8': ['Allview', 'Viva H8', DeviceType.TABLET], - ALLVIEW3CONECT: ['Allview', '3 Conect', DeviceType.TABLET] + ALLVIEW3CONECT: ['Allview', '3 Conect', DeviceType.TABLET], }, A10: ['AllWinner', 'A10', DeviceType.TABLET], @@ -1394,7 +1394,7 @@ exports.ANDROID_MODELS = { 'AMOI M8448': ['Amoi', 'M8448'], 'AMOI M8458': ['Amoi', 'M8458'], 'AMOI-X4': ['Amoi', 'X4'], - 'Amoi Q50H': ['Amoi', 'Q50H', DeviceType.TABLET] + 'Amoi Q50H': ['Amoi', 'Q50H', DeviceType.TABLET], }, A726T: ['Amoi', 'A726T'], @@ -1714,7 +1714,7 @@ exports.ANDROID_MODELS = { 'Archos Oxygen 63': ['Archos', 'Oxygen 63'], 'Archos Saphir 50X': ['Archos', 'Saphir 50X'], 'Archos Sense 55 DC': ['Archos', 'Sense 55'], - 'Archos Sense 55 S': ['Archos', 'Sense 55'] + 'Archos Sense 55 S': ['Archos', 'Sense 55'], }, 'X67 5G': ['Archos', 'X67 5G'], @@ -1745,7 +1745,7 @@ exports.ANDROID_MODELS = { 'ASK SP583 HD': ['ASK', 'SP583 HD'], 'ASK SP584 FHD': ['ASK', 'SP584 FHD'], 'ASK SP591': ['ASK', 'SP591'], - 'ASK SP628 HD': ['ASK', 'SP628 HD'] + 'ASK SP628 HD': ['ASK', 'SP628 HD'], }, ASTRI: ['ASTRI', 'e-reader', DeviceType.EREADER], @@ -2035,7 +2035,7 @@ exports.ANDROID_MODELS = { 'QiLive 8QC': ['Auchan', 'QiLive 8” Quad core tablet', DeviceType.TABLET], 'QiLive 97': ['Auchan', 'QiLive 9.7” Dual core tablet', DeviceType.TABLET], 'QiLive 97R': ['Auchan', 'QiLive 9.7R Quad core tablet', DeviceType.TABLET], - 'QILIVE 101': ['Auchan', 'QiLive 10.1” Dual core tablet', DeviceType.TABLET] + 'QILIVE 101': ['Auchan', 'QiLive 10.1” Dual core tablet', DeviceType.TABLET], }, 'T-07B': ['AudioSonic', 'T07B', DeviceType.TABLET], @@ -2055,14 +2055,14 @@ exports.ANDROID_MODELS = { 'AUX V950': ['AUX', 'V950'], 'AUX V950P': ['AUX', 'V950P'], 'AUX V965T': ['AUX', 'V965T'], - 'AUX W6': ['AUX', 'W6'] + 'AUX W6': ['AUX', 'W6'], }, 'Avea!!': { 'Avea inTouch 2': ['Avea', 'inTouch 2', DeviceType.TABLET], 'Avea inTouch 3': ['Avea', 'inTouch 3', DeviceType.TABLET], 'Avea inTouch 3 Large': ['Avea', 'inTouch 3', DeviceType.TABLET], - 'Avea inTouch 4': ['Avea', 'inTouch 4', DeviceType.TABLET] + 'Avea inTouch 4': ['Avea', 'inTouch 4', DeviceType.TABLET], }, '(Ilium )?Avvio!!': { @@ -2091,10 +2091,10 @@ exports.ANDROID_MODELS = { 'Avvio L500 Claro': ['Avvio', 'L500'], 'Avvio Q797': ['Avvio', 'Q797'], 'Avvio PAD': ['Avvio', 'Pad', DeviceType.TABLET], - 'Avvio PAD10.1': ['Avvio', 'Pad', DeviceType.TABLET] + 'Avvio PAD10.1': ['Avvio', 'Pad', DeviceType.TABLET], }, - '(Axioo[- ])?PICO!!': { + '(Axioo[\- ])?PICO!!': { 'PICOphone 2': ['Axioo', 'PICOphone 2'], 'PICOphone 4': ['Axioo', 'PICOphone 4'], Picophone4: ['Axioo', 'PICOphone 4'], @@ -2125,7 +2125,7 @@ exports.ANDROID_MODELS = { 'PICOpad GJT': ['Axioo', 'PICOpad GJT', DeviceType.TABLET], 'PICOpad-QGN': ['Axioo', 'PICOpad QGN', DeviceType.TABLET], 'Axioo-VIGO350': ['Axioo', 'Vigo 350'], - 'Axioo-VIGO410': ['Axioo', 'Vigo 410'] + 'Axioo-VIGO410': ['Axioo', 'Vigo 410'], }, '(AXPAD|Axxion)!!': { @@ -2134,7 +2134,7 @@ exports.ANDROID_MODELS = { 'AXPAD 7I04': ['Axtrom', 'Axpad 7" Series-7I04', DeviceType.TABLET], 'AXPAD 9P01': ['Axtrom', 'Axpad 9" Series-9P01', DeviceType.TABLET], 'Axxion ATAB-701': ['Axxion', 'ATAB-701', DeviceType.TABLET], - 'Axxion ATAB-902': ['Axxion', 'ATAB-902', DeviceType.TABLET] + 'Axxion ATAB-902': ['Axxion', 'ATAB-902', DeviceType.TABLET], }, 'A10 MID': ['Azhuo', 'A10 MID', DeviceType.TABLET], @@ -2156,10 +2156,10 @@ exports.ANDROID_MODELS = { 'Azumi KL32': ['Azumi', 'KL32'], 'Azumi IRO A5 Q': ['Azumi', 'Iro A5Q'], 'Azumi IRO A5 QL': ['Azumi', 'Iro A5QL'], - 'Azumi AT7': ['Azumi', 'AT7', DeviceType.TABLET] + 'Azumi AT7': ['Azumi', 'AT7', DeviceType.TABLET], }, - '(BDS|BHX|BKO)-!!': { + '(BDS|BHX|BKO)\-!!': { 'BDS-S100': ['B box', 'B tv BDS-S100', DeviceType.TELEVISION], 'BDS-S200': ['B box', 'B tv BDS-S200', DeviceType.TELEVISION], 'BHX-S100': ['B box', 'B tv BHX-S100', DeviceType.TELEVISION], @@ -2171,7 +2171,7 @@ exports.ANDROID_MODELS = { 'BKO-UH400': ['B box', 'B tv UHD BHO-UH400', DeviceType.TELEVISION], 'BKO-UH600': ['B box', 'B tv UHD BHO-UH600', DeviceType.TELEVISION], 'BKO-S200': ['B box', 'B tv BKO-S200', DeviceType.TELEVISION], - 'BKO-S200 TV': ['B box', 'B tv BKO-S200', DeviceType.TELEVISION] + 'BKO-S200 TV': ['B box', 'B tv BKO-S200', DeviceType.TELEVISION], }, 'Aero A2-110': ['Banghó', 'Aero A2 110', DeviceType.TABLET], @@ -2203,7 +2203,7 @@ exports.ANDROID_MODELS = { 'WL-101GQC': ['Bauhn', 'WL-101GQC', DeviceType.TABLET], 'BEE 9500': ['Bee Mobile', 'Bee 9500'], - 'BF[ -]!!': { + 'BF[ \-]!!': { 'BF A8': ['Bellefonte', 'A8'], 'BF-A10': ['Bellefonte', 'A10'], 'BF A11': ['Bellefonte', 'A11'], @@ -2211,21 +2211,21 @@ exports.ANDROID_MODELS = { 'BF A16': ['Bellefonte', 'A16'], 'BF C7': ['Bellefonte', 'C7'], 'BF G11': ['Bellefonte', 'G11'], - 'BF V5T!': ['Bellefonte', 'V5T'] + 'BF V5T!': ['Bellefonte', 'V5T'], }, 'BenQ!!': { 'BenQ A3s': ['BenQ', 'A3s'], 'BenQ F5': ['BenQ', 'F5'], 'BenQ T3': ['BenQ', 'T3'], - 'BenQ R71': ['BenQ', 'R71', DeviceType.TABLET] + 'BenQ R71': ['BenQ', 'R71', DeviceType.TABLET], }, 'BenWee!!': { 'BenWee 550S': ['BenWee', '550S'], 'BenWee 5100S': ['BenWee', '5100S'], 'BenWee N7': ['BenWee', 'N7'], - 'BenWee N9': ['BenWee', 'N9'] + 'BenWee N9': ['BenWee', 'N9'], }, 'BePhone UN030': ['BePhone', 'UN030'], @@ -2236,7 +2236,7 @@ exports.ANDROID_MODELS = { 'Bestsonny LT988': ['Best Sonny', 'LT988'], 'Best sonny T898': ['Best Sonny', 'T898'], BestsonnyT961: ['Best Sonny', 'T961'], - BestsonnyT962: ['Best Sonny', 'T962'] + BestsonnyT962: ['Best Sonny', 'T962'], }, CA907AAC0G: ['Besta', 'CA907AAC0G'], @@ -2244,13 +2244,13 @@ exports.ANDROID_MODELS = { 'BFB!!': { 'BFB S7': ['BFB', 'S7'], 'BFB W9000': ['BFB', 'W9000'], - 'BFB W9900': ['BFB', 'W9900'] + 'BFB W9900': ['BFB', 'W9900'], }, 'BF[0-9]{2,2}00!!': { BF5200: ['Bifer', 'BF5200'], BF9100: ['Bifer', 'BF9100'], - BF9200: ['Bifer', 'BF9200'] + BF9200: ['Bifer', 'BF9200'], }, 'Bird!!': { @@ -2280,7 +2280,7 @@ exports.ANDROID_MODELS = { 'BIRD-W3': ['Bird', 'W3'], 'BIRD W5': ['Bird', 'W5'], 'Bird W188': ['Bird', 'W188'], - 'Bird XL100': ['Bird', 'XL100'] + 'Bird XL100': ['Bird', 'XL100'], }, T9108: ['Bird', 'T9108'], @@ -2333,7 +2333,7 @@ exports.ANDROID_MODELS = { 'Endeavour 1001 DVB-T': ['Blaupunkt', 'Endeavour 1001 DVB-T', DeviceType.TABLET], 'Endeavour 1010': ['Blaupunkt', 'Endeavour 1010', DeviceType.TABLET], 'Endeavour 1013': ['Blaupunkt', 'Endeavour 1013', DeviceType.TABLET], - 'Endeavour 1100': ['Blaupunkt', 'Endeavour 1100', DeviceType.TABLET] + 'Endeavour 1100': ['Blaupunkt', 'Endeavour 1100', DeviceType.TABLET], }, '(BLU|DASH|LIFE|NEO|STUDIO|VIVO)!!': { @@ -2491,7 +2491,7 @@ exports.ANDROID_MODELS = { 'BLU VIVO SELFIE': ['BLU', 'Vivo Selfie'], 'VIVO XL': ['BLU', 'Vivo XL'], 'Vivo XL2': ['BLU', 'Vivo XL2'], - 'Vivo XI PLUS': ['BLU', 'Vivo XI+'] + 'Vivo XI PLUS': ['BLU', 'Vivo XI+'], }, 'R1 HD': ['BLU', 'R1 HD'], @@ -2547,7 +2547,7 @@ exports.ANDROID_MODELS = { AX1055: ['Bmobile', 'AX1055'], 'BMOBILE AX1060': ['Bmobile', 'AX1060'], AX1060: ['Bmobile', 'AX1060'], - 'Bmobile AX1065': ['Bmobile', 'AX1065'] + 'Bmobile AX1065': ['Bmobile', 'AX1065'], }, AX7OO: ['Bmobile', 'AX700'], @@ -2586,7 +2586,7 @@ exports.ANDROID_MODELS = { 'BOWAY V70': ['Boway', 'V70'], 'BOWAY V80': ['Boway', 'V80'], 'BOWAY V95Pro': ['Boway', 'V95 Pro'], - 'BOWAY X6': ['Boway', 'X6'] + 'BOWAY X6': ['Boway', 'X6'], }, 'BroadSign Xpress!': ['BroadSign', 'Xpress', DeviceType.SIGNAGE], @@ -2631,7 +2631,7 @@ exports.ANDROID_MODELS = { 'BROR W68': ['BROR', 'W68'], 'BRS-BROR W70': ['BROR', 'W70'], 'BROR W80': ['BROR', 'W80'], - 'BRS-BROR W80': ['BROR', 'W80'] + 'BRS-BROR W80': ['BROR', 'W80'], }, '(bq|Aquaris|Edison|Maxwell)!!': { @@ -2695,7 +2695,7 @@ exports.ANDROID_MODELS = { 'bq Pascal 2!': ['bq', 'Pascal 2', DeviceType.TABLET], 'bq Verne Plus': ['bq', 'Verne Plus', DeviceType.TABLET], 'bq Verne Plus 3G': ['bq', 'Verne Plus', DeviceType.TABLET], - 'bq Voltaire': ['bq', 'Voltaire', DeviceType.TABLET] + 'bq Voltaire': ['bq', 'Voltaire', DeviceType.TABLET], }, 'BUSH!!': { @@ -2712,7 +2712,7 @@ exports.ANDROID_MODELS = { 'BUSH 10.1 TABLET': ['Bush', '10.1 Tablet', DeviceType.TABLET], 'Bush 7.0 MyTablet': ['Bush', '7.0 MyTablet', DeviceType.TABLET], 'Bush 10.0 MyTablet': ['Bush', '10.0 MyTablet', DeviceType.TABLET], - 'Bush Mytablet 2': ['Bush', 'MyTablet 2', DeviceType.TABLET] + 'Bush Mytablet 2': ['Bush', 'MyTablet 2', DeviceType.TABLET], }, 'Carbon 1 Mark II': ['Carbon', '1 MK II'], @@ -2733,7 +2733,7 @@ exports.ANDROID_MODELS = { CT1002: ['Carrefour', 'Touch Tablet CT1002', DeviceType.TABLET], CT1002PLUS: ['Carrefour', 'Touch Tablet CT1002 plus', DeviceType.TABLET], CT1010: ['Carrefour', 'Touch Tablet CT1010', DeviceType.TABLET], - CT1020W: ['Carrefour', 'Touch Tablet CT1020W', DeviceType.TABLET] + CT1020W: ['Carrefour', 'Touch Tablet CT1020W', DeviceType.TABLET], }, EM63: ['Carrefour', 'Touch Tablet CT720', DeviceType.TABLET], @@ -2752,7 +2752,7 @@ exports.ANDROID_MODELS = { 'CAPTIVA PAD 10.1': ['Captiva', 'Pad 10.1', DeviceType.TABLET], 'CAPTIVA 10.1 HD': ['Captiva', 'Pad 10.1 HD', DeviceType.TABLET], 'CAPTIVA PAD 10.1 Quad FHD': ['Captiva', 'Pad 10.1 Quad FHD', DeviceType.TABLET], - 'CAPTIVA PAD 10.1 Quad FHD 3G': ['Captiva', 'Pad 10.1 Quad FHD', DeviceType.TABLET] + 'CAPTIVA PAD 10.1 Quad FHD 3G': ['Captiva', 'Pad 10.1 Quad FHD', DeviceType.TABLET], }, 'Carpad T5': ['Carpad', 'T5'], @@ -2770,7 +2770,7 @@ exports.ANDROID_MODELS = { 'Casper VIA A6108': ['Casper', 'VIA A6108'], 'Casper VIA V4': ['Casper', 'VIA V4'], 'Casper VIA V5': ['Casper', 'VIA V5'], - 'Casper VIA V8': ['Casper', 'VIA V8'] + 'Casper VIA V8': ['Casper', 'VIA V8'], }, 'VIA F1': ['Casper', 'VIA F1'], @@ -2802,7 +2802,7 @@ exports.ANDROID_MODELS = { 'Cat StarGate': ['CAT', 'STARGATE', DeviceType.TABLET], 'Cat Tablet CSG 7J0': ['CAT', 'STARGATE', DeviceType.TABLET], 'Cat Tablet StarGate 2': ['CAT', 'STARGATE 2', DeviceType.TABLET], - 'Cat Tablet CSG2 7.1J0': ['CAT', 'STARGATE 2', DeviceType.TABLET] + 'Cat Tablet CSG2 7.1J0': ['CAT', 'STARGATE 2', DeviceType.TABLET], }, SK351: ['CCE', 'Motion.Plus SK351'], @@ -2886,7 +2886,7 @@ exports.ANDROID_MODELS = { 'Celkon Q550': ['Celkon', 'Millennia Epic Q550'], 'Celkon Q567': ['Celkon', 'Millennia Q567'], 'Celkon Q3000': ['Celkon', 'Millennia Power Q3000'], - 'Celkon 4G TAB-8': ['Celkon', '4G Tab-8', DeviceType.TABLET] + 'Celkon 4G TAB-8': ['Celkon', '4G Tab-8', DeviceType.TABLET], }, A89: ['Celkon', 'A89'], @@ -2919,14 +2919,14 @@ exports.ANDROID_MODELS = { 'ChangHong ?Z1!': ['ChangHong', 'Z1'], ChanghongZ3t: ['ChangHong', 'Z3t'], ChangHongZ9: ['ChangHong', 'Z9'], - 'changhong TV': ['ChangHong', null] + 'changhong TV': ['ChangHong', null], }, 'CHER!!': { 'CHER A50': ['Cher', 'A50'], 'CHER A55w': ['Cher', 'A55w'], 'CHER A90': ['Cher', 'A90'], - 'CHER A91': ['Cher', 'A91'] + 'CHER A91': ['Cher', 'A91'], }, PC1038: ['Cherry', 'Pro-Line 2', DeviceType.TABLET], @@ -2977,7 +2977,7 @@ exports.ANDROID_MODELS = { 'LA-M1': ['Chili', 'M1'], 'LA-M1Y': ['Chili', 'M1Y'], 'LA-M2': ['Chili', 'M2'], - 'LA-Q1': ['Chili', 'Q1'] + 'LA-Q1': ['Chili', 'Q1'], }, M623C: ['China Mobile', 'M623C', DeviceType.TABLET], @@ -2993,7 +2993,7 @@ exports.ANDROID_MODELS = { 'CHUWI!!': { 'CHUWI V3': ['Chuwi', 'V3', DeviceType.TABLET], 'CHUWI-V8-HD': ['Chuwi', 'V8 HD', DeviceType.TABLET], - 'CHUWI V9': ['Chuwi', 'V9', DeviceType.TABLET] + 'CHUWI V9': ['Chuwi', 'V9', DeviceType.TABLET], }, cius: ['Cisco', 'Cius', DeviceType.TABLET], @@ -3002,13 +3002,13 @@ exports.ANDROID_MODELS = { 'CP-DX!!': { 'CP-DX70': ['Cisco', 'DX70', DeviceType.TABLET], 'CP-DX80': ['Cisco', 'DX80', DeviceType.TABLET], - 'CP-DX650': ['Cisco', 'DX650', DeviceType.TABLET] + 'CP-DX650': ['Cisco', 'DX650', DeviceType.TABLET], }, 'Citycall!!': { 'Citycall A1': ['Citycall', 'A1'], 'Citycall i310+': ['Citycall', 'i310+'], - 'Citycall i930+': ['Citycall', 'i930+'] + 'Citycall i930+': ['Citycall', 'i930+'], }, 'Clarion Mirage 2': ['Clarion', 'Mirage 2', DeviceType.CAR], @@ -3051,7 +3051,7 @@ exports.ANDROID_MODELS = { 'CloudPad 701tv': ['Cloudfone', 'CloudPad 701tv'], 'Cloudpad 705w': ['Cloudfone', 'CloudPad 705w'], 'CloudPad 707qw': ['Cloudfone', 'CloudPad 707qw'], - 'Cloudpad 800d': ['Cloudfone', 'CloudPad 800d'] + 'Cloudpad 800d': ['Cloudfone', 'CloudPad 800d'], }, 'CW[- ]!!': { @@ -3068,7 +3068,7 @@ exports.ANDROID_MODELS = { 'CW-V99': ['Chuwi', 'V99'], 'CW-V99-QUAD': ['Chuwi', 'V99'], 'CW-VX8-3G': ['Chuwi', 'VX8 3G'], - 'CW-Hi8Pro': ['Chuwi', 'Hi8 Pro', DeviceType.TABLET] + 'CW-Hi8Pro': ['Chuwi', 'Hi8 Pro', DeviceType.TABLET], }, V17HD: ['Chuwi', 'V17HD'], @@ -3101,7 +3101,7 @@ exports.ANDROID_MODELS = { 'CnM-TOUCHPAD9': ['CnM', 'TouchPad 9', DeviceType.TABLET], 'Cnm TOUCHPAD 9.7': ['CnM', 'TouchPad 9.7', DeviceType.TABLET], 'CnM-TP-10DC-16-B': ['CnM', 'TouchPad 10 DC', DeviceType.TABLET], - 'CnM TouchPad 10.1DC': ['CnM', 'TouchPad 10.1 DC', DeviceType.TABLET] + 'CnM TouchPad 10.1DC': ['CnM', 'TouchPad 10.1 DC', DeviceType.TABLET], }, 'MID[0-9]{4,4}!!': { @@ -3155,7 +3155,7 @@ exports.ANDROID_MODELS = { MID9724: ['Coby', 'Kyros MID9724', DeviceType.TABLET], MID9740: ['Coby', 'Kyros MID9740', DeviceType.TABLET], MID9742: ['Coby', 'Kyros MID9742', DeviceType.TABLET], - MID9760: ['Coby', 'Kyros MID9760', DeviceType.TABLET] + MID9760: ['Coby', 'Kyros MID9760', DeviceType.TABLET], }, 'Ultimix!!': { @@ -3163,14 +3163,14 @@ exports.ANDROID_MODELS = { 'Ultimix 88': ['Codegen', 'Ultimix 88', DeviceType.TABLET], Ultimix94: ['Codegen', 'Ultimix 94', DeviceType.TABLET], Ultimix95: ['Codegen', 'Ultimix 95', DeviceType.TABLET], - Ultimix99: ['Codegen', 'Ultimix 99', DeviceType.TABLET] + Ultimix99: ['Codegen', 'Ultimix 99', DeviceType.TABLET], }, 'BLADE LE 70': ['COMMAX', 'BLADE LE 70', DeviceType.TABLET], 'Commodore!!': { 'Commodore IS-7107C': ['Commodore', 'IS-7107C', DeviceType.TABLET], - 'Commodore IS-7107C': ['Commodore', 'IS-7107C', DeviceType.TABLET] + 'Commodore IS-7107C': ['Commodore', 'IS-7107C', DeviceType.TABLET], }, Z71: ['Commtiva', 'Z71'], @@ -3196,7 +3196,7 @@ exports.ANDROID_MODELS = { 'Colorfly E708 Q2': ['Colorfly', 'E708 Q2', DeviceType.TABLET], 'Colorfly G708': ['Colorfly', 'G708', DeviceType.TABLET], 'Colorfly S782 Q1': ['Colorfly', 'S782 Q1', DeviceType.TABLET], - 'Colorfly U781 Q1': ['Colorfly', 'U781 Q1', DeviceType.TABLET] + 'Colorfly U781 Q1': ['Colorfly', 'U781 Q1', DeviceType.TABLET], }, K11: ['Colors', 'K11'], @@ -3206,7 +3206,7 @@ exports.ANDROID_MODELS = { 'Colors K22': ['Colors', 'K22'], 'Colors X27': ['Colors', 'Xfactor Wave X27'], 'Colors X45': ['Colors', 'X45'], - 'Colors X115': ['Colors', 'Xfactor Quad II X115'] + 'Colors X115': ['Colors', 'Xfactor Quad II X115'], }, 'ConCorde!!': { @@ -3220,7 +3220,7 @@ exports.ANDROID_MODELS = { 'Concorde Tab Omega 3G': ['ConCorde', 'tab OMEGA', DeviceType.TABLET], 'ConCorde tab PLAY': ['ConCorde', 'tab PLAY', DeviceType.TABLET], 'ConCorde tab Speed': ['ConCorde', 'tab SPEED', DeviceType.TABLET], - 'ConCorde Tab T10': ['ConCorde', 'tab T10', DeviceType.TABLET] + 'ConCorde Tab T10': ['ConCorde', 'tab T10', DeviceType.TABLET], }, 'Coolgen!!': { @@ -3230,7 +3230,7 @@ exports.ANDROID_MODELS = { 'Coolgen E70 G': ['Coolgen', 'E70 G'], 'Coolgen E71': ['Coolgen', 'E71'], 'Coolgen E72 Note 3G': ['Coolgen', 'E72'], - 'Coolgen E72 Note8': ['Coolgen', 'E72'] + 'Coolgen E72 Note8': ['Coolgen', 'E72'], }, 'Coolpad!!': { @@ -3423,7 +3423,7 @@ exports.ANDROID_MODELS = { 'Coolpad 9960': ['Coolpad', 'Grand HD 9960'], 'Coolpad 9970': ['Coolpad', 'Grand 4 9970'], 'Coolpad 9976!': ['Coolpad', '9976'], - 'Coolpad Flo': ['Coolpad', 'Flo'] + 'Coolpad Flo': ['Coolpad', 'Flo'], }, D530: ['Coolpad', 'D530'], @@ -3433,20 +3433,20 @@ exports.ANDROID_MODELS = { W711: ['Coolpad', 'W711'], CP3700A: ['Coolpad', '3700A'], '5560S': ['Coolpad', '5560S'], - '5832': ['Coolpad', '5832'], - '5855': ['Coolpad', '5855'], - '5860': ['Coolpad', '5860'], + 5832: ['Coolpad', '5832'], + 5855: ['Coolpad', '5855'], + 5860: ['Coolpad', '5860'], '5860A': ['Coolpad', '5860A'], '5860E': ['Coolpad', 'Quattro 4G 5860E'], '5860S': ['Coolpad', '5860S'], - '5870': ['Coolpad', '5870'], - '7260': ['Coolpad', '7260'], - '7266': ['Coolpad', '7266'], - '8022': ['Coolpad', '8022'], + 5870: ['Coolpad', '5870'], + 7260: ['Coolpad', '7260'], + 7266: ['Coolpad', '7266'], + 8022: ['Coolpad', '8022'], '8190Q': ['Coolpad', '8190'], - '8720': ['Coolpad', '8720'], + 8720: ['Coolpad', '8720'], '8720L': ['Coolpad', '8720'], - '8810': ['Coolpad', '8810'], + 8810: ['Coolpad', '8810'], '801ES': ['Coolpad', 'Quattro II 4G'], C8297W: ['Coolpad', 'Dashen F1'], 'CP8676!': ['Coolpad', 'Note 3 8676'], @@ -3458,7 +3458,7 @@ exports.ANDROID_MODELS = { 'COWON!!': { 'COWON D3': ['Cowon', 'D3 Plenue', DeviceType.MEDIA], - 'COWON Z2': ['Cowon', 'Z2 Plenue', DeviceType.MEDIA] + 'COWON Z2': ['Cowon', 'Z2 Plenue', DeviceType.MEDIA], }, 'COZCO C1 Plus': ['Cozco', 'C1 Plus'], @@ -3471,7 +3471,7 @@ exports.ANDROID_MODELS = { CMP748: ['Craig', 'CMP748', DeviceType.TABLET], CMP749: ['Craig', 'CMP749', DeviceType.TABLET], CMP756: ['Craig', 'CMP756', DeviceType.TABLET], - 'CMP 765': ['Craig', 'CMP765', DeviceType.TABLET] + 'CMP 765': ['Craig', 'CMP765', DeviceType.TABLET], }, 'ZEN Touch 2': ['Creative', 'ZEN Touch 2', DeviceType.MEDIA], @@ -3483,7 +3483,7 @@ exports.ANDROID_MODELS = { 'ZiiLABS ZiiO10 ': ['Creative', 'ZiiO 10', DeviceType.TABLET], 'ZiiLABS ZiiO10+': ['Creative', 'ZiiO 10', DeviceType.TABLET], 'ZiiLABS ZiiO Shenbi': ['Creative', 'ZiiO ShenBi', DeviceType.TABLET], - 'Zii EGG': ['Creative', 'Zii Egg', DeviceType.MEDIA] + 'Zii EGG': ['Creative', 'Zii Egg', DeviceType.MEDIA], }, CTP828BT: ['Cresta', 'CTP828BT', DeviceType.TABLET], @@ -3512,12 +3512,12 @@ exports.ANDROID_MODELS = { 'CROSS A88': ['Cross', 'A88'], 'CROSS AT1': ['Cross', 'AT1', DeviceType.TABLET], 'CROSS AT1G': ['Cross', 'AT1G', DeviceType.TABLET], - 'CROSS AT1G*': ['Cross', 'AT1G', DeviceType.TABLET] + 'CROSS AT1G*': ['Cross', 'AT1G', DeviceType.TABLET], }, 'Crosscall!!': { 'Crosscall ELEMENT': ['Crosscall', 'ELEMENT'], - 'CROSSCALL WILD': ['Crosscall', 'WILD'] + 'CROSSCALL WILD': ['Crosscall', 'WILD'], }, 'Core-M5': ['Crosscall', 'Core-M5'], @@ -3532,7 +3532,7 @@ exports.ANDROID_MODELS = { 'NovaPad 80 C124': ['Crypto', 'NovaPad 80 C124', DeviceType.TABLET], 'Novapad D7000': ['Crypto', 'NovaPad D7000', DeviceType.TABLET], 'Novapad D7001': ['Crypto', 'NovaPad D7001', DeviceType.TABLET], - 'Novapad D7002': ['Crypto', 'NovaPad D7002', DeviceType.TABLET] + 'Novapad D7002': ['Crypto', 'NovaPad D7002', DeviceType.TABLET], }, 'CUBOT!!': { @@ -3552,7 +3552,7 @@ exports.ANDROID_MODELS = { 'CUBOT S222': ['Cubot', 'S222'], 'CUBOT X6': ['Cubot', 'X6'], 'CUBOT X18 Plus': ['Cubot', 'X18 Plus'], - 'CUBOT POWER': ['Cubot', 'Power'] + 'CUBOT POWER': ['Cubot', 'Power'], }, S222: ['Cubot', 'S222'], @@ -3663,14 +3663,14 @@ exports.ANDROID_MODELS = { 'U55GT C8': ['Cube', 'U55GT C8', DeviceType.TABLET], 'U55GT S': ['Cube', 'U55GT S', DeviceType.TABLET], 'U59GT-C4': ['Cube', 'U59GT C4', DeviceType.TABLET], - U65GT: ['Cube', 'U65GT', DeviceType.TABLET] + U65GT: ['Cube', 'U65GT', DeviceType.TABLET], }, 'CUBE!!': { 'CUBE Q7PRO': ['Cube', 'Q7 Pro', DeviceType.TABLET], 'CUBE Q7PRO J': ['Cube', 'Q7 Pro', DeviceType.TABLET], 'CUBE TALK7X': ['Cube', 'Talk 7X', DeviceType.TABLET], - 'CUBE TALK7X C4': ['Cube', 'Talk 7X C4', DeviceType.TABLET] + 'CUBE TALK7X C4': ['Cube', 'Talk 7X C4', DeviceType.TABLET], }, 'LT[0-9]{4,4}!!': { @@ -3679,7 +3679,7 @@ exports.ANDROID_MODELS = { 'LT7035-J': ['Curtis', 'Klu LT7035-J', DeviceType.TABLET], 'LT7035-L': ['Curtis', 'Klu LT7035-L', DeviceType.TABLET], LT7052: ['Curtis', 'Klu LT7052', DeviceType.TABLET], - LT8088: ['Curtis', 'Klu LT8088', DeviceType.TABLET] + LT8088: ['Curtis', 'Klu LT8088', DeviceType.TABLET], }, 'Cydle M7!': ['Cydle', 'M7 MultiPAD', DeviceType.TABLET], @@ -3698,7 +3698,7 @@ exports.ANDROID_MODELS = { 'D2-911': ['D2pad', 'D2-911', DeviceType.TABLET], 'D2-912': ['D2pad', 'D2-912', DeviceType.TABLET], 'D2-927G': ['D2pad', 'D2-927G', DeviceType.TABLET], - 'D2-961G': ['D2pad', 'D2-961G', DeviceType.TABLET] + 'D2-961G': ['D2pad', 'D2-961G', DeviceType.TABLET], }, 'Dakele A380': ['Dakele', 'A380'], @@ -3721,14 +3721,14 @@ exports.ANDROID_MODELS = { DSlide972: ['Danew', 'DSlide 972', DeviceType.TABLET], DSlide973: ['Danew', 'DSlide 973', DeviceType.TABLET], Dslide973QC: ['Danew', 'DSlide 973', DeviceType.TABLET], - 'DSlide 1013': ['Danew', 'DSlide 1013', DeviceType.TABLET] + 'DSlide 1013': ['Danew', 'DSlide 1013', DeviceType.TABLET], }, 'Genius!!': { 'Genius TAB GIII': ['Dany', 'Genius Tab G3', DeviceType.TABLET], 'GENIUS-G4': ['Dany', 'Genius Tab G4', DeviceType.TABLET], 'Genius TAB G4': ['Dany', 'Genius Tab G4', DeviceType.TABLET], - 'Genius Tab Q4': ['Dany', 'Genius Tab Q4', DeviceType.TABLET] + 'Genius Tab Q4': ['Dany', 'Genius Tab Q4', DeviceType.TABLET], }, 'EvoPAD!!': { @@ -3739,7 +3739,7 @@ exports.ANDROID_MODELS = { 'EVOPad R9720': ['Dark', 'EvoPad R9720', DeviceType.TABLET], 'EvoPAD R9740': ['Dark', 'EvoPad R9740', DeviceType.TABLET], 'EvoPAD-R9722': ['Dark', 'EvoPad R9722', DeviceType.TABLET], - 'Evopad R9730': ['Dark', 'EvoPad R9730', DeviceType.TABLET] + 'Evopad R9730': ['Dark', 'EvoPad R9730', DeviceType.TABLET], }, 'HB-100 DASAN': ['Dasan', 'HB-100', DeviceType.TELEVISION], @@ -3774,7 +3774,7 @@ exports.ANDROID_MODELS = { 'Dell Streak 7': ['Dell', 'Streak 7', DeviceType.TABLET], 'Dell Streak 10 Pro': ['Dell', 'Streak 10 Pro', DeviceType.TABLET], 'Dell streak 10 Pro 940': ['Dell', 'Streak 10 Pro', DeviceType.TABLET], - 'Dell Venue': ['Dell', 'Venue'] + 'Dell Venue': ['Dell', 'Venue'], }, 'Venue!!': { @@ -3800,7 +3800,7 @@ exports.ANDROID_MODELS = { 'Venue 8 7840 LTE': ['Dell', 'Venue 8', DeviceType.TABLET], 'Venue 10 5050': ['Dell', 'Venue 10', DeviceType.TABLET], 'Venue 10 7040': ['Dell', 'Venue 10', DeviceType.TABLET], - 'Venue 11 Pro 7130 MS': ['Dell', 'Venue 11', DeviceType.TABLET] + 'Venue 11 Pro 7130 MS': ['Dell', 'Venue 11', DeviceType.TABLET], }, 'XCD 28': ['Dell', 'XCD28'], @@ -3854,7 +3854,7 @@ exports.ANDROID_MODELS = { 'TAD-97052': ['Denver', 'TAD-97052', DeviceType.TABLET], 'TAD-97052mk2': ['Denver', 'TAD-97052', DeviceType.TABLET], 'TAD-97072G': ['Denver', 'TAD-97072', DeviceType.TABLET], - 'TAD-97082!': ['Denver', 'TAD-97082', DeviceType.TABLET] + 'TAD-97082!': ['Denver', 'TAD-97082', DeviceType.TABLET], }, 'deovo V5': ['deovo', 'V5'], @@ -3865,7 +3865,7 @@ exports.ANDROID_MODELS = { 'DESAY TS928': ['Desay', 'TS928'], 'DESAY TS1008': ['Desay', 'TS1008'], 'DESAY TS1018': ['Desay', 'TS1018'], - 'DESAY TS1218': ['Desay', 'TS1218'] + 'DESAY TS1218': ['Desay', 'TS1218'], }, iP977: ['Dex', 'iP977', DeviceType.TABLET], @@ -3882,7 +3882,7 @@ exports.ANDROID_MODELS = { 'Dialog K235': ['Dialog', 'K235'], 'Dialog Q143L': ['Dialog', 'Q143L'], 'Dialog Q178': ['Dialog', 'Q178'], - 'Dialog Q243': ['Dialog', 'Q243'] + 'Dialog Q243': ['Dialog', 'Q243'], }, 'DIT[0-9]{4,6}!!': { @@ -3898,7 +3898,7 @@ exports.ANDROID_MODELS = { DIT702101: ['Difrnce', 'DIT702101', DeviceType.TABLET], DIT902101: ['Difrnce', 'DIT902101', DeviceType.TABLET], DIT902102: ['Difrnce', 'DIT902102', DeviceType.TABLET], - DIT902103: ['Difrnce', 'DIT902103', DeviceType.TABLET] + DIT902103: ['Difrnce', 'DIT902103', DeviceType.TABLET], }, 'NID 7010': ['Difrnce', 'DIT702201', DeviceType.TABLET], @@ -3931,7 +3931,7 @@ exports.ANDROID_MODELS = { 'iDxD7 3G': ['Digma', 'iDxD7', DeviceType.TABLET], IDXD10: ['Digma', 'iDxD10', DeviceType.TABLET], 'iDxD10 3G': ['Digma', 'iDxD10', DeviceType.TABLET], - iDxQ5: ['Digma', 'iDxQ5'] + iDxQ5: ['Digma', 'iDxQ5'], }, DISTAB9000R: ['Disgo', 'Distab 9000R', DeviceType.TABLET], @@ -3945,7 +3945,7 @@ exports.ANDROID_MODELS = { DM013SH: ['Sharp', 'DM013SH', { carrier: 'Disney Mobile' }], DM014SH: ['Sharp', 'DM014SH', { carrier: 'Disney Mobile' }], DM015K: ['Kyocera', 'DM015K', { carrier: 'Disney Mobile' }], - DM016SH: ['Sharp', 'DM016SH', { carrier: 'Disney Mobile' }] + DM016SH: ['Sharp', 'DM016SH', { carrier: 'Disney Mobile' }], }, 'DM001c Frozen': ['Disney Mobile', 'DM001C Frozen', { carrier: 'Disney Mobile' }], @@ -3987,7 +3987,7 @@ exports.ANDROID_MODELS = { 'AirTab P970g': ['DNS', 'AirTab P970g', DeviceType.TABLET], 'AirTab P970w': ['DNS', 'AirTab P970w', DeviceType.TABLET], 'AirTab PC9701': ['DNS', 'AirTab PC9701', DeviceType.TABLET], - 'DNS AirTab PF7001': ['DNS', 'AirTab PF7001', DeviceType.TABLET] + 'DNS AirTab PF7001': ['DNS', 'AirTab PF7001', DeviceType.TABLET], }, 'DNS S!!': { @@ -4004,7 +4004,7 @@ exports.ANDROID_MODELS = { 'DNS S5005': ['DNS', 'S5005'], 'DNS S5008': ['DNS', 'S5008'], 'DNS s5301': ['DNS', 'S5301'], - 'DNS S5701': ['DNS', 'S5701'] + 'DNS S5701': ['DNS', 'S5701'], }, DNSS4003: ['DNS', 'S4003'], @@ -4072,7 +4072,7 @@ exports.ANDROID_MODELS = { 'DOOV T20L': ['DOOV', 'T20L'], 'DOOV T35': ['DOOV', 'T35'], 'DOOV T60': ['DOOV', 'T60'], - 'DOOV T90': ['DOOV', 'T90'] + 'DOOV T90': ['DOOV', 'T90'], }, 'Doro Liberto!!': { @@ -4080,7 +4080,7 @@ exports.ANDROID_MODELS = { 'Doro Liberto 820': ['Doro', 'Liberto 820'], 'Doro Liberto 820 Mini': ['Doro', 'Liberto 820 Mini'], 'Doro Liberto 822': ['Doro', 'Liberto 822'], - 'Doro Liberto 825': ['Doro', 'Liberto 825'] + 'Doro Liberto 825': ['Doro', 'Liberto 825'], }, 'Doro 8030': ['Doro', 'Liberto 822'], @@ -4115,14 +4115,14 @@ exports.ANDROID_MODELS = { 'Revo R80': ['E-Boda', 'Revo R80'], 'E-Boda Storm V50': ['E-Boda', 'Storm V50'], 'Storm V100': ['E-Boda', 'Storm V100'], - 'Storm X450': ['E-Boda', 'Storm X450'] + 'Storm X450': ['E-Boda', 'Storm X450'], }, 'Etel!!': { 'Etel i3': ['E-tel', 'Curiosity i3'], 'Etel i4': ['E-tel', 'Curiosity i4'], 'Etel i6': ['E-tel', 'Curiosity i6'], - 'Etel i8': ['E-tel', 'Curiosity i8'] + 'Etel i8': ['E-tel', 'Curiosity i8'], }, 'EasyPhone EP5': ['Easypix', 'EasyPhone EP5'], @@ -4133,7 +4133,7 @@ exports.ANDROID_MODELS = { 'EBEN S1': ['EBEN', 'S1', DeviceType.TABLET], 'EBEN T6': ['EBEN', 'T6', DeviceType.TABLET], 'EBEN T7': ['EBEN', 'T7', DeviceType.TABLET], - 'EBEN T8': ['EBEN', 'T8', DeviceType.TABLET] + 'EBEN T8': ['EBEN', 'T8', DeviceType.TABLET], }, 'EBEST!!': { @@ -4153,7 +4153,7 @@ exports.ANDROID_MODELS = { 'EBEST W66A': ['EBEST', 'W66A'], 'EBEST W70': ['EBEST', 'W70'], 'EBEST Z5': ['EBEST', 'Z5'], - 'EBEST Z7': ['EBEST', 'Z7'] + 'EBEST Z7': ['EBEST', 'Z7'], }, TA10CA3: ['ECS', 'TA10CA3', DeviceType.TABLET], @@ -4185,7 +4185,7 @@ exports.ANDROID_MODELS = { 'Elephone P7000': ['Elephone', 'P7000'], 'Elephone P8000!': ['Elephone', 'P8000'], 'Elephone S2': ['Elephone', 'S2'], - 'Elephone S2 Plus': ['Elephone', 'S2 Plus'] + 'Elephone S2 Plus': ['Elephone', 'S2 Plus'], }, D709: ['Empire Electronix', 'Tablet D709', DeviceType.TABLET], @@ -4209,7 +4209,7 @@ exports.ANDROID_MODELS = { 'EPADE S3': ['epade', 'S3'], 'epade S5': ['epade', 'S5'], 'epade S7': ['epade', 'S7'], - 'epade V05': ['epade', 'V05'] + 'epade V05': ['epade', 'V05'], }, 'equiso.smart.tv.pro': ['Equiso', 'SmartTV', DeviceType.TELEVISION], @@ -4234,7 +4234,7 @@ exports.ANDROID_MODELS = { 'eSTAR MINI 3G': ['eSTAR', 'Mini 3G', DeviceType.TABLET], 'eSTAR Zoom Quad': ['eSTAR', 'Zoom', DeviceType.TABLET], 'eSTAR ZOOM HD Duo': ['eSTAR', 'Zoom HD', DeviceType.TABLET], - 'eSTAR Zoom HD Quad': ['eSTAR', 'Zoom HD', DeviceType.TABLET] + 'eSTAR Zoom HD Quad': ['eSTAR', 'Zoom HD', DeviceType.TABLET], }, MID1018: ['eSTAR', 'MID1018', DeviceType.TABLET], @@ -4286,7 +4286,7 @@ exports.ANDROID_MODELS = { 'EVERCOSS AT1A': ['EVERCOSS', 'AT1A', DeviceType.TABLET], 'EVERCOSS AT1A*': ['EVERCOSS', 'AT1A', DeviceType.TABLET], 'EVERCOSS AT1G': ['EVERCOSS', 'AT1G', DeviceType.TABLET], - 'EVERCOSS AT8D': ['EVERCOSS', 'AT8D', DeviceType.TABLET] + 'EVERCOSS AT8D': ['EVERCOSS', 'AT8D', DeviceType.TABLET], }, 'AT1A*': ['EVERCOSS', 'AT1A', DeviceType.TABLET], @@ -4309,17 +4309,17 @@ exports.ANDROID_MODELS = { 'EverMiracle mini': ['Evertek', 'EverMiracle Mini'], 'EverMiracle Nano': ['Evertek', 'EverMiracle Nano'], EverShine: ['Evertek', 'EverShine'], - EverTrendy: ['Evertek', 'EverTrendy'] + EverTrendy: ['Evertek', 'EverTrendy'], }, 'E70[0-9]{2,2}H[DG]!!': { E7020HD: ['Evertek', 'Everpad E7020HD', DeviceType.TABLET], - E7050HD: ['Evertek', 'Everpad E7050HD', DeviceType.TABLET] + E7050HD: ['Evertek', 'Everpad E7050HD', DeviceType.TABLET], }, 'E80[0-9]{2,2}H[DG]!!': { E8050HG: ['Evertek', 'Everpad E8050HG', DeviceType.TABLET], - E8051HD: ['Evertek', 'Everpad E8051HD', DeviceType.TABLET] + E8051HD: ['Evertek', 'Everpad E8051HD', DeviceType.TABLET], }, 'EVOLVEO StrongPhone G7': ['EVOLVEO', 'StrongPhone G7'], @@ -4365,7 +4365,7 @@ exports.ANDROID_MODELS = { 'Surfer 8 02': ['Explay', 'Surfer 8.02', DeviceType.TABLET], 'Surfer 8.02': ['Explay', 'Surfer 8.02', DeviceType.TABLET], 'Surfer 8.31 3G': ['Explay', 'Surfer 8.31 3G', DeviceType.TABLET], - 'Surfer 10.11': ['Explay', 'Surfer 10.11', DeviceType.TABLET] + 'Surfer 10.11': ['Explay', 'Surfer 10.11', DeviceType.TABLET], }, 'Smart!!': { @@ -4375,7 +4375,7 @@ exports.ANDROID_MODELS = { 'Smart 502': ['Fareastone', 'Smart 502'], Smart503: ['Fareastone', 'Smart 503'], 'Smart 505': ['Fareastone', 'Smart 505'], - 'Smart 701': ['Fareastone', 'Smart 701', DeviceType.TABLET] + 'Smart 701': ['Fareastone', 'Smart 701', DeviceType.TABLET], }, FP1: ['Fairphone', '1'], @@ -4391,31 +4391,31 @@ exports.ANDROID_MODELS = { 'FDT E829': ['FDT', 'E829'], 'FDT E969': ['FDT', 'E969'], 'FDT G18': ['FDT', 'G18'], - 'FDT G505': ['FDT', 'G505'] + 'FDT G505': ['FDT', 'G505'], }, 'GT-[HN][0-9]{4,4}!!': { 'GT-H9001': ['Feiteng', 'GT-H9001'], 'GT-H9500': ['Feiteng', 'GT-H9500'], - 'GT-N9300': ['Feiteng', 'GT-N9300'] + 'GT-N9300': ['Feiteng', 'GT-N9300'], }, 'GT-9000': ['Feiteng', 'H5W'], - '9300': ['Feiteng', 'GT-N9300'], + 9300: ['Feiteng', 'GT-N9300'], 'iOCEAN!!': { 'iOCEAN X7': ['FHD', 'iOCEAN X7'], 'iOCEAN X7 HD': ['FHD', 'iOCEAN X7 HD'], 'iOCEAN X7S': ['FHD', 'iOCEAN X7S'], 'iOCEAN X7T': ['FHD', 'iOCEAN X7T'], - 'iOCEAN X8': ['FHD', 'iOCEAN X8'] + 'iOCEAN X8': ['FHD', 'iOCEAN X8'], }, 'FIH-!!': { 'FIH-F0X': ['FIH', 'F0X'], 'FIH-FBO': ['FIH', 'FBO'], 'FIH-FD1': ['FIH', 'FD1'], - 'FIH-VKY': ['FIH', 'VKY'] + 'FIH-VKY': ['FIH', 'VKY'], }, 'Vibo-A688': ['FIH', 'Vibo A688'], @@ -4423,14 +4423,14 @@ exports.ANDROID_MODELS = { 'XT[0-9]{3,3}!!': { XT712: ['Flipkart', 'Digiflip Pro XT712', DeviceType.TABLET], XT801: ['Flipkart', 'Digiflip Pro XT801', DeviceType.TABLET], - XT811: ['Flipkart', 'Digiflip Pro XT811', DeviceType.TABLET] + XT811: ['Flipkart', 'Digiflip Pro XT811', DeviceType.TABLET], }, 'Fly F[0-9]{2,3}!!': { 'Fly F40': ['Fly', 'F40'], 'FLY F45s': ['Fly', 'F45s'], 'FLY F50s': ['Fly', 'F50s'], - 'Fly F350': ['Fly', 'F350'] + 'Fly F350': ['Fly', 'F350'], }, F50Q: ['Fly', 'F50Q'], @@ -4494,7 +4494,7 @@ exports.ANDROID_MODELS = { '(Fly )?IQ459!': ['Fly', 'IQ459 Evo Chic 2'], IQ588: ['Fly', 'IQ588 Nimbuzz'], IQ4601: ['Fly', 'IQ4601 Era Style 2'], - 'IQ4602 Quad': ['Fly', 'IQ4602 Thunder'] + 'IQ4602 Quad': ['Fly', 'IQ4602 Thunder'], }, 'Flylife!!': { @@ -4504,7 +4504,7 @@ exports.ANDROID_MODELS = { 'Flylife Connect 7.85 3G Slim': ['Fly', 'Flylife Connect 7.85 3G Slim', DeviceType.TABLET], 'Flylife Connect 10.1 3G': ['Fly', 'Flylife Connect 10.1 3G', DeviceType.TABLET], 'Flylife Web 7': ['Fly', 'Flylife Web 7', DeviceType.TABLET], - 'Flylife Web 7.85 Slim': ['Fly', 'Flylife Web 7.85 Slim', DeviceType.TABLET] + 'Flylife Web 7.85 Slim': ['Fly', 'Flylife Web 7.85 Slim', DeviceType.TABLET], }, 'Fly Flylife Web 7.85 Slim': ['Fly', 'Flylife Web 7.85 Slim', DeviceType.TABLET], @@ -4525,7 +4525,7 @@ exports.ANDROID_MODELS = { 'tablet Fnac 10 3G': ['Fnac', 'Tablet 10 3G', DeviceType.TABLET], 'fnac 10 v2': ['Fnac', 'Tablet 10 v2', DeviceType.TABLET], 'fnac 3.0 8': ['Fnac', 'Tablet 3.0 8', DeviceType.TABLET], - 'fnac 3.0 10 Plus': ['Fnac', 'Tablet 3.0 10', DeviceType.TABLET] + 'fnac 3.0 10 Plus': ['Fnac', 'Tablet 3.0 10', DeviceType.TABLET], }, 'ifive!!': { @@ -4541,7 +4541,7 @@ exports.ANDROID_MODELS = { 'ifive MINI 2': ['FNF', 'iFive Mini 2', DeviceType.TABLET], IfiveMini3: ['FNF', 'iFive Mini 3', DeviceType.TABLET], 'ifive mini 3GS': ['FNF', 'iFive Mini 3GS', DeviceType.TABLET], - IfiveMini4: ['FNF', 'iFive Mini 4', DeviceType.TABLET] + IfiveMini4: ['FNF', 'iFive Mini 4', DeviceType.TABLET], }, 'Freelander I20': ['Freelander', 'i20'], @@ -4551,7 +4551,7 @@ exports.ANDROID_MODELS = { 'SXZ-PD10': ['Freelander', 'PD10', DeviceType.TABLET], 'SXZ-PDX0-01': ['Freelander', 'PD20', DeviceType.TABLET], 'SXZ-PDX0-03': ['Freelander', 'PD90', DeviceType.TABLET], - 'SXZ-PDX-03': ['Freelander', 'PD90', DeviceType.TABLET] + 'SXZ-PDX-03': ['Freelander', 'PD90', DeviceType.TABLET], }, FTJ152A: ['Freetel', 'Priori 3'], @@ -4570,20 +4570,20 @@ exports.ANDROID_MODELS = { 'NABI2-NV7A-3D': ['Fuhu', 'nabi 2', DeviceType.TABLET], 'NABIXD-NV10A': ['Fuhu', 'nabi XD', DeviceType.TABLET], 'NABIXD-NV10B': ['Fuhu', 'nabi XD', DeviceType.TABLET], - 'NABIXD-NV10C': ['Fuhu', 'nabi XD', DeviceType.TABLET] + 'NABIXD-NV10C': ['Fuhu', 'nabi XD', DeviceType.TABLET], }, '[0-9]0[0-9]F!!': { '101F': ['Fujitsu', 'ARROWS A 101F', { carrier: 'Softbank' }], '201F': ['Fujitsu', 'ARROWS A 201F', { carrier: 'Softbank' }], '202F': ['Fujitsu', 'ARROWS A 202F', { carrier: 'Softbank' }], - '301F': ['Fujitsu', 'ARROWS A 301F', { carrier: 'Softbank' }] + '301F': ['Fujitsu', 'ARROWS A 301F', { carrier: 'Softbank' }], }, 'ISW?[0-9]{2,2}F!!': { ISW11F: ['Fujitsu', 'ARROWS Z ISW11F', { carrier: 'au' }], ISW13F: ['Fujitsu', 'ARROWS Z ISW13F', { carrier: 'au' }], - IS12F: ['Fujitsu', 'ARROWS ES IS12F', { carrier: 'au' }] + IS12F: ['Fujitsu', 'ARROWS ES IS12F', { carrier: 'au' }], }, 'F-[0-9]{2,2}[A-Z]!!': { @@ -4627,18 +4627,18 @@ exports.ANDROID_MODELS = { 'F-10D': ['Fujitsu', 'ARROWS X F-10D', { carrier: 'DoCoMo' }], 'F-11D': ['Fujitsu', 'ARROWS Me F-11D', { carrier: 'DoCoMo' }], 'F-12C': ['Fujitsu', 'GLOBE-TROTTER F-12C', { carrier: 'DoCoMo' }], - 'F-12D': ['Fujitsu', 'Easy Smartphone F-12D', { carrier: 'DoCoMo' }] + 'F-12D': ['Fujitsu', 'Easy Smartphone F-12D', { carrier: 'DoCoMo' }], }, 'f12[a-z]{3,3}!!': { f12arc: ['Fujitsu', 'F12arc'], - f12bob: ['Fujitsu', 'F12bob'] + f12bob: ['Fujitsu', 'F12bob'], }, 'FJ[LT][0-9]{2,2}!!': { FJL21: ['Fujitsu', 'ARROWS ef FJL21', { carrier: 'au' }], FJL22: ['Fujitsu', 'ARROWS Z FJL22', { carrier: 'au' }], - FJT21: ['Fujitsu', 'ARROWS Tab FJT21', DeviceType.TABLET, { carrier: 'au' }] + FJT21: ['Fujitsu', 'ARROWS Tab FJT21', DeviceType.TABLET, { carrier: 'au' }], }, 'SZJ-JS101': ['Fujitsu', 'SZJ-JS101'], @@ -4675,7 +4675,7 @@ exports.ANDROID_MODELS = { 'F&U ETB9543': ['F&U', 'ETB9543', DeviceType.TABLET], 'F&U ETB9544': ['F&U', 'ETB9544', DeviceType.TABLET], 'F&U ETB1063': ['F&U', 'ETB1063', DeviceType.TABLET], - 'F&U ETB1065': ['F&U', 'ETB1065', DeviceType.TABLET] + 'F&U ETB1065': ['F&U', 'ETB1065', DeviceType.TABLET], }, 'Asus A10': ['Garmin-Asus', 'Nuvifone A10'], @@ -4684,14 +4684,14 @@ exports.ANDROID_MODELS = { 'Garmin!!': { Garminfone: ['Garmin-Asus', 'Garminfone'], 'Garmin-Asus A10': ['Garmin-Asus', 'Nuvifone A10'], - 'Garmin-Asus A50': ['Garmin-Asus', 'Nuvifone A50'] + 'Garmin-Asus A50': ['Garmin-Asus', 'Nuvifone A50'], }, 'nuvi!!': { 'nuvi 3590': ['Garmin', 'Nuvi 3590', DeviceType.GPS], 'nuvi 3592': ['Garmin', 'Nuvi 3592', DeviceType.GPS], 'nuvi 3595': ['Garmin', 'Nuvi 3595', DeviceType.GPS], - 'nuvifone A50': ['Garmin-Asus', 'Nuvifone A50'] + 'nuvifone A50': ['Garmin-Asus', 'Nuvifone A50'], }, 'G1-715': ['Gateway', 'G1-715', DeviceType.TABLET], @@ -4703,7 +4703,7 @@ exports.ANDROID_MODELS = { 'GP-KEON': ['Geeksphone', 'Keon'], 'GP-PEAK': ['Geeksphone', 'Peak'], 'Geeksphone ZERO': ['Geeksphone', 'ZERO'], - 'Geeksphone ONE': ['Geeksphone', 'ONE'] + 'Geeksphone ONE': ['Geeksphone', 'ONE'], }, 'Gemei!!': { @@ -4711,7 +4711,7 @@ exports.ANDROID_MODELS = { 'Gemei G3': ['Gemei', 'G3', DeviceType.TABLET], 'gemei G6': ['Gemei', 'G6', DeviceType.TABLET], 'Gemei G9': ['Gemei', 'G9', DeviceType.TABLET], - 'gemei G9T': ['Gemei', 'G9T', DeviceType.TABLET] + 'gemei G9T': ['Gemei', 'G9T', DeviceType.TABLET], }, 'GEM[0-9]{4,4}!!': { @@ -4719,7 +4719,7 @@ exports.ANDROID_MODELS = { GEM7020: ['Gemini', 'JoyTab GEM7020', DeviceType.TABLET], 'GEM7032G-rev2': ['Gemini', 'JoyTab GEM7032', DeviceType.TABLET], GEM10313BK: ['Gemini', 'JoyTab GEM10313', DeviceType.TABLET], - GEM10313S: ['Gemini', 'JoyTab GEM10313', DeviceType.TABLET] + GEM10313S: ['Gemini', 'JoyTab GEM10313', DeviceType.TABLET], }, 'GP-431': ['Genesis', 'GP-431'], @@ -4731,7 +4731,7 @@ exports.ANDROID_MODELS = { 'GT-7240': ['Genesis', 'Tab GT-7240', DeviceType.TABLET], 'GT-7240R': ['Genesis', 'Tab GT-7240R', DeviceType.TABLET], 'GT-7245': ['Genesis', 'Tab GT-7245', DeviceType.TABLET], - 'GT-7326': ['Genesis', 'Tab GT-7326', DeviceType.TABLET] + 'GT-7326': ['Genesis', 'Tab GT-7326', DeviceType.TABLET], }, 'GP-720': ['Genius', 'GP-720', DeviceType.TABLET], @@ -4771,7 +4771,7 @@ exports.ANDROID_MODELS = { 'GFIVE President Smart 6': ['GFive', 'President Smart 6'], 'GFIVE President Shark 3': ['GFive', 'President Shark 3'], 'GFIVE Spark(A1)': ['GFive', 'Spark'], - 'GFIVE GPad701': ['GFive', 'GPad 701', DeviceType.TABLET] + 'GFIVE GPad701': ['GFive', 'GPad 701', DeviceType.TABLET], }, 'GHIA!!': { @@ -4782,7 +4782,7 @@ exports.ANDROID_MODELS = { 'GHIA 27258B': ['Ghia', 'Any 27258B', DeviceType.TABLET], 'GHIA 27258N': ['Ghia', 'Any 27258N', DeviceType.TABLET], 'GHIA V2.0 27258N': ['Ghia', 'Any 27258N', DeviceType.TABLET], - 'GHIA 29214P': ['Ghia', 'Any 29214P', DeviceType.TABLET] + 'GHIA 29214P': ['Ghia', 'Any 29214P', DeviceType.TABLET], }, '(Gsmart|Gigabyte|Rio)!!': { @@ -4816,7 +4816,7 @@ exports.ANDROID_MODELS = { 'GSmart Sierra S1': ['Gigabyte', 'GSmart Sierra S1'], 'GSmart Tuku T2': ['Gigabyte', 'GSmart Tuku T2'], 'GSmart T4': ['Gigabyte', 'GSmart T4'], - 'Gigabyte TB100': ['Gigabyte', 'TB100', DeviceType.TABLET] + 'Gigabyte TB100': ['Gigabyte', 'TB100', DeviceType.TABLET], }, 'Gigaset!!': { @@ -4824,7 +4824,7 @@ exports.ANDROID_MODELS = { 'Gigaset GS170': ['Gigaset', 'GS170'], 'Gigaset QV830': ['Gigaset', 'QV830', DeviceType.TABLET], 'Gigaset QV831': ['Gigaset', 'QV831', DeviceType.TABLET], - 'Gigaset QV1030': ['Gigaset', 'QV1030', DeviceType.TABLET] + 'Gigaset QV1030': ['Gigaset', 'QV1030', DeviceType.TABLET], }, GS110: ['Gigaset', 'GS110'], @@ -4958,7 +4958,7 @@ exports.ANDROID_MODELS = { 'GLX!!': { 'GLX Jet': ['GLX', 'Jet', DeviceType.TABLET], 'GLX Luster a': ['GLX', 'Luster', DeviceType.TABLET], - 'GLX SpiderI': ['GLX', 'Spider', DeviceType.TABLET] + 'GLX SpiderI': ['GLX', 'Spider', DeviceType.TABLET], }, 'GOCL!!': { @@ -4988,7 +4988,7 @@ exports.ANDROID_MODELS = { GOCLM7000KD: ['Goclever', 'Terra 70', DeviceType.TABLET], 'GOCLEVER HYBRID': ['Goclever', 'Hybrid', DeviceType.TABLET], 'GOCLEVER NETBOOK I102': ['Goclever', 'Netbook I102'], - 'GOCLEVER NETBOOK R103': ['Goclever', 'Netbook R103'] + 'GOCLEVER NETBOOK R103': ['Goclever', 'Netbook R103'], }, 'ARIES 101': ['Goclever', 'ARIES 101', DeviceType.TABLET], @@ -5001,7 +5001,7 @@ exports.ANDROID_MODELS = { 'GO Live!!': { 'GO Live S1': ['GoLive', 'S1'], - 'GO Live Dual Core': ['GoLive', 'Dual Core'] + 'GO Live Dual Core': ['GoLive', 'Dual Core'], }, 'GOOPHONE!!': { @@ -5011,14 +5011,14 @@ exports.ANDROID_MODELS = { 'GOOPHONE M3+': ['Goophone', 'M3+'], 'GooPhone S5 Pro': ['Goophone', 'S5 Pro'], 'GOOPHONE X1': ['Goophone', 'X1'], - 'GOOPHONE X7': ['Goophone', 'X7'] + 'GOOPHONE X7': ['Goophone', 'X7'], }, 'CHONG!!': { 'GHONG T618': ['Guohong', 'T618'], GHONGV10: ['Guohong', 'V10'], GHONGV12: ['Guohong', 'V12'], - 'GHONG W100': ['Guohong', 'W100'] + 'GHONG W100': ['Guohong', 'W100'], }, M758A: ['Gpad', 'M758A', DeviceType.TABLET], @@ -5037,12 +5037,12 @@ exports.ANDROID_MODELS = { 'GO N2': ['GreenOrange', 'N2'], 'GO N3S': ['GreenOrange', 'N3S'], 'GO NX': ['GreenOrange', 'NX'], - 'GO S2': ['GreenOrange', 'S2'] + 'GO S2': ['GreenOrange', 'S2'], }, 'GR-TB!!': { 'GR-TB7': ['Grundig', 'Style Tab GR-TB7', DeviceType.TABLET], - 'GR-TB10S': ['Grundig', 'Style Tab GR-TB10S', DeviceType.TABLET] + 'GR-TB10S': ['Grundig', 'Style Tab GR-TB10S', DeviceType.TABLET], }, 'GVON 898': ['Gvon', 'Aero 898'], @@ -5072,7 +5072,7 @@ exports.ANDROID_MODELS = { '(Haier[- ])?HW-W820!': ['Haier', 'W820'], '(Haier[- ])?HW-W850!': ['Haier', 'W850'], '(Haier[- ])?HW-W860!': ['Haier', 'W860'], - '(Haier[- ])?HW-W910!': ['Haier', 'W910'] + '(Haier[- ])?HW-W910!': ['Haier', 'W910'], }, 'Haier-W700': ['Haier', 'W700'], @@ -5087,7 +5087,7 @@ exports.ANDROID_MODELS = { PAD711: ['Haier', 'Pad 711', DeviceType.TABLET], PAD722: ['Haier', 'Pad 722', DeviceType.TABLET], PAD821: ['Haier', 'Pad 821', DeviceType.TABLET], - PAD822: ['Haier', 'Pad 822', DeviceType.TABLET] + PAD822: ['Haier', 'Pad 822', DeviceType.TABLET], }, I9220: ['Haipai', 'I9220'], @@ -5108,7 +5108,7 @@ exports.ANDROID_MODELS = { SN10T2: ['HANNspree', 'HANNSpad SN10T2', DeviceType.TABLET], SN14T71: ['HANNspree', 'HANNSpad SN14T71', DeviceType.TABLET], SN97T41W: ['HANNspree', 'HANNSpad SN97T41W', DeviceType.TABLET], - 'SN1AT71W(B)': ['HANNspree', 'HANNSpad SN1AT71WB', DeviceType.TABLET] + 'SN1AT71W(B)': ['HANNspree', 'HANNSpad SN1AT71WB', DeviceType.TABLET], }, 'Hasee E50 S1': ['Hasee', 'E50 S1'], @@ -5130,7 +5130,7 @@ exports.ANDROID_MODELS = { 'HEDY H770': ['Hedy', 'H770'], 'HEDY S801': ['Hedy', 'S801'], 'HEDY S803': ['Hedy', 'S803'], - 'HEDY T700': ['Hedy', 'T700'] + 'HEDY T700': ['Hedy', 'T700'], }, '9300+': ['Hero', '9300+'], @@ -5173,7 +5173,7 @@ exports.ANDROID_MODELS = { 'Zera S': ['Highscreen', 'Zera S'], 'Zera S Rev.S': ['Highscreen', 'Zera S'], 'Zera-S-Power': ['Highscreen', 'Zera S Power'], - 'Zera U': ['Highscreen', 'Zera U'] + 'Zera U': ['Highscreen', 'Zera U'], }, 'HLV-T!!': { @@ -5184,7 +5184,7 @@ exports.ANDROID_MODELS = { 'HLV-T1001W': ['Hi-Level', 'HLV-T1001W', DeviceType.TABLET], 'HLV-T1002W': ['Hi-Level', 'HLV-T1002W', DeviceType.TABLET], 'HLV-T9701': ['Hi-Level', 'HLV-T9701', DeviceType.TABLET], - 'HLV-TN75': ['Hi-Level', 'HLV-TN75', DeviceType.TABLET] + 'HLV-TN75': ['Hi-Level', 'HLV-TN75', DeviceType.TABLET], }, 'Himax Pure': ['Himax', 'Pure'], @@ -5196,7 +5196,7 @@ exports.ANDROID_MODELS = { 'HIKe 828': ['HIKe', 'X1'], 'HIKe 828A': ['HIKe', 'X1'], 'HIKe 848': ['HIKe', 'X2'], - 'HIKe 868': ['HIKe', 'Z1'] + 'HIKe 868': ['HIKe', 'Z1'], }, 'HILIVE H7': ['Hilive', 'H7'], @@ -5220,7 +5220,7 @@ exports.ANDROID_MODELS = { 'HS-10DTB4!': ['Hipstreet', 'Equinox 4 10"', DeviceType.TABLET], 'HS-10DTB5!': ['Hipstreet', 'Spectrum 10"', DeviceType.TABLET], 'HS-10DTB8!': ['Hipstreet', 'Equinox 3 10"', DeviceType.TABLET], - 'HS-10DTB12!': ['Hipstreet', 'Phoenix 10"', DeviceType.TABLET] + 'HS-10DTB12!': ['Hipstreet', 'Phoenix 10"', DeviceType.TABLET], }, 'HS-[EFHITUX][0-9]!!': { @@ -5295,7 +5295,7 @@ exports.ANDROID_MODELS = { 'HS-E936': ['Hisense', 'E936'], 'HS-E956': ['Hisense', 'E956'], 'HS-E956Q': ['Hisense', 'E956'], - 'HS-E968': ['Hisense', 'E968'] + 'HS-E968': ['Hisense', 'E968'], }, 'HS-E[GT][0-9]{3,3}!!': { @@ -5317,7 +5317,7 @@ exports.ANDROID_MODELS = { 'HS-EG978': ['Hisense', 'EG978'], 'HS-EG980': ['Hisense', 'EG980'], 'HS-EG981': ['Hisense', 'EG981'], - 'HS-ET919': ['Hisense', 'ET919'] + 'HS-ET919': ['Hisense', 'ET919'], }, '(HS-)?Hisense!!': { @@ -5342,7 +5342,7 @@ exports.ANDROID_MODELS = { 'HS-Hisense E621T': ['Hisense', 'E621T'], 'HS-Hisense E625T': ['Hisense', 'E625T'], 'HS-Hisense F21T': ['Hisense', 'F21T'], - 'Hisense M30T': ['Hisense', 'M30T'] + 'Hisense M30T': ['Hisense', 'M30T'], }, T92: ['Hisense', 'T92'], @@ -5394,7 +5394,7 @@ exports.ANDROID_MODELS = { 'Amaze S500': ['Hi-Tech', 'Amaze S500'], 'AMAZE TAB': ['Hi-Tech', 'Amaze Tab', DeviceType.TABLET], 'AMAZE TAB 2': ['Hi-Tech', 'Amaze Tab 2', DeviceType.TABLET], - 'AMAZE TAB 3': ['Hi-Tech', 'Amaze Tab 3', DeviceType.TABLET] + 'AMAZE TAB 3': ['Hi-Tech', 'Amaze Tab 3', DeviceType.TABLET], }, 'HITO HT-3': ['Hito', 'HT-3'], @@ -5418,7 +5418,7 @@ exports.ANDROID_MODELS = { 'Hosin U7': ['Hosin', 'U7'], 'HOSIN V60': ['Hosin', 'V60'], 'HOSIN V70': ['Hosin', 'V70'], - 'HOSIN V708T': ['Hosin', 'V708T'] + 'HOSIN V708T': ['Hosin', 'V708T'], }, '(HP|Slate)!!': { @@ -5459,7 +5459,7 @@ exports.ANDROID_MODELS = { 'HP SlateBook 14 PC': ['HP', 'SlateBook 14 HD', DeviceType.TABLET], 'HP Pro Slate 8': ['HP', 'Pro Slate 8', DeviceType.TABLET], 'HP Pro Slate 10 EE G1': ['HP', 'Pro Slate 10', DeviceType.TABLET], - 'HP Pro Slate 12': ['HP', 'Pro Slate 12', DeviceType.TABLET] + 'HP Pro Slate 12': ['HP', 'Pro Slate 12', DeviceType.TABLET], }, 'HP!!': { @@ -5480,7 +5480,7 @@ exports.ANDROID_MODELS = { 'HP ProBook ([0-9]{4,4}[a-z])!': ['HP', 'ProBook $1', DeviceType.DESKTOP], 'HP ProBook ([0-9]{3,3} G[0-9])!': ['HP', 'ProBook $1', DeviceType.DESKTOP], 'HP Spectre ((?:[0-9]+ )?x2)!': ['HP', 'Spectre $1', DeviceType.DESKTOP], - 'HP Split ((?:[0-9]+ )?x2)!': ['HP', 'Split $1', DeviceType.DESKTOP] + 'HP Split ((?:[0-9]+ )?x2)!': ['HP', 'Split $1', DeviceType.DESKTOP], }, 'HP-TouchPad': ['HP', 'TouchPad', DeviceType.TABLET], @@ -5747,7 +5747,7 @@ exports.ANDROID_MODELS = { 'HTC Shooter': ['HTC', 'EVO 3D'], 'htc shooteru': ['HTC', 'EVO 3D'], 'HTC ?EVO ?V ?4G!': ['HTC', 'EVO 3D'], - 'HTC EVO 4G+!': ['HTC', 'EVO 4G+'], + 'HTC EVO 4G\+!': ['HTC', 'EVO 4G+'], 'HTC X515e!': ['HTC', 'EVO 4G+'], 'HTC ?EVO ?4G!': ['HTC', 'EVO 4G'], 'HTC jewel': ['HTC', 'EVO 4G'], @@ -6062,7 +6062,7 @@ exports.ANDROID_MODELS = { 'HTC EVARE UL': ['HTC', 'One X+'], 'HTC ENRC2B': ['HTC', 'One X+'], 'HTC 9089': ['HTC', '9089'], // COS - 'HTC ?909d!': ['HTC', '909d'] // COS + 'HTC ?909d!': ['HTC', '909d'], // COS }, DLX: ['HTC', 'Droid DNA'], @@ -6150,7 +6150,7 @@ exports.ANDROID_MODELS = { 'Sprint APA9292KT': ['HTC', 'EVO 4G'], 'Sprint APA7373KT': ['HTC', 'EVO Shift 4G'], 'Sprint APC715CKT': ['HTC', 'EVO Design 4G'], - 'Sprint ATP515CKIT': ['HTC', 'EVO View 4G', DeviceType.TABLET] + 'Sprint ATP515CKIT': ['HTC', 'EVO View 4G', DeviceType.TABLET], }, '710C': ['HTC', 'Desire 816'], @@ -6159,7 +6159,7 @@ exports.ANDROID_MODELS = { '802w': ['HTC', 'One'], '831C': ['HTC', 'One (M8)'], '909d': ['HTC', '909d'], // COS - '9088': ['HTC', '9088'], // COS + 9088: ['HTC', '9088'], // COS A320a: ['HTC', 'Desire C'], A3380: ['HTC', 'Wildfire'], @@ -6203,7 +6203,7 @@ exports.ANDROID_MODELS = { 'USCCADR6275US!': ['HTC', 'Desire'], 'USCCADR6285US!': ['HTC', 'Hero S'], 'USCCADR6325US!': ['HTC', 'Merge'], - 'USCCADR6230US!': ['HTC', 'Wildfire S'] + 'USCCADR6230US!': ['HTC', 'Wildfire S'], }, 'ERIS ADR6200': ['HTC', 'Droid Eris'], @@ -6232,13 +6232,13 @@ exports.ANDROID_MODELS = { S31HT: ['HTC', 'Aria S31HT', { carrier: 'EMOBILE' }], X06HT: ['HTC', 'Desire X06HT', { carrier: 'Softbank' }], '001HT': ['HTC', 'Desire HD 001HT', { carrier: 'Softbank' }], - '601HT': ['HTC', 'U11 601HT', { carrier: 'Softbank' }] + '601HT': ['HTC', 'U11 601HT', { carrier: 'Softbank' }], }, 'ISW[0-9]{2,2}HT!!': { 'ISW11HT!': ['HTC', 'EVO WiMAX ISW11HT', { carrier: 'au' }], 'ISW12HT!': ['HTC', 'EVO 3D ISW12HT', { carrier: 'au' }], - 'ISW13HT!': ['HTC', 'J ISW13HT', { carrier: 'au' }] + 'ISW13HT!': ['HTC', 'J ISW13HT', { carrier: 'au' }], }, '(HTC )?HT[LV][0-9]{2,2}!!': { @@ -6247,7 +6247,7 @@ exports.ANDROID_MODELS = { 'HTC HTL22': ['HTC', 'J One HTL22', { carrier: 'au' }], 'HTL23!': ['HTC', 'J Butterfly HTL23', { carrier: 'au' }], 'HTV31!': ['HTC', 'J Butterfly HTV31', { carrier: 'au' }], - 'HTV32!': ['HTC', '10 HTV32', { carrier: 'au' }] + 'HTV32!': ['HTC', '10 HTV32', { carrier: 'au' }], }, 'GT-T9500': ['HTM', 'GT-T9500'], @@ -6287,10 +6287,10 @@ exports.ANDROID_MODELS = { 'MediaPad X1 7.0': ['Huawei', 'MediaPad X1', DeviceType.TABLET], 'MediaPad X1': ['Huawei', 'MediaPad X1', DeviceType.TABLET], 'MediaPad 7D': ['Huawei', 'MediaPad X1', DeviceType.TABLET], - 'MediaPad X1 S 7.0': ['Huawei', 'MediaPad X1 S', DeviceType.TABLET] + 'MediaPad X1 S 7.0': ['Huawei', 'MediaPad X1 S', DeviceType.TABLET], }, - '(Huawei )?[MSTX](1|2|7|8|10)-[A-Z0-9][0-9]{2,2}!!': { + '(Huawei )?[MSTX](1|2|7|8|10)\-[A-Z0-9][0-9]{2,2}!!': { 'Huawei S7-312u': ['Huawei', 'MediaPad', DeviceType.TABLET], 'S7-721u': ['Huawei', 'MediaPad 7 Youth 2', DeviceType.TABLET], 'S10-232L': ['Huawei', 'MediaPad 10 Link', DeviceType.TABLET], @@ -6315,7 +6315,7 @@ exports.ANDROID_MODELS = { 'T1-821L': ['Huawei', 'MediaPad T1', DeviceType.TABLET], 'T1-823L': ['Huawei', 'MediaPad T1', DeviceType.TABLET], 'S8-701w': ['Huawei', 'MediaPad T1', DeviceType.TABLET], - 'S8-821w': ['Huawei', 'MediaPad T1', DeviceType.TABLET] + 'S8-821w': ['Huawei', 'MediaPad T1', DeviceType.TABLET], }, 'T1 7.0': ['Huawei', 'MediaPad T1', DeviceType.TABLET], @@ -6366,7 +6366,7 @@ exports.ANDROID_MODELS = { '(HW-|HUAWEI )?TAS-(AL00)!': ['Huawei', 'Mate 30'], '(HW-|HUAWEI )?LIO-(AL00|AN00|L29)!': ['Huawei', 'Mate 30 Pro'], '(HW-|HUAWEI )?NOH-(NX9)!': ['Huawei', 'Mate 40'], - '(HW-|HUAWEI )?CRR-(L09|CL00|CL20|TL00|UL00|UL20)!': ['Huawei', 'Mate S'] + '(HW-|HUAWEI )?CRR-(L09|CL00|CL20|TL00|UL00|UL20)!': ['Huawei', 'Mate S'], }, '(HW-|HUAWEI )?(ATU|DRA|DVC|FLA|JKM|TIT|TAG||MRD|NCE|POT|TRT|SLA)!!': { @@ -6381,108 +6381,110 @@ exports.ANDROID_MODELS = { '(HW-|HUAWEI )?POT-(AL00a|LX1|LX1AF|LX1T|LX2J|LX3)!': ['Huawei', 'Enjoy 9S'], '(HW-|HUAWEI )?MRD-(AL00|LX1|LX1F|LX1N|LX2|LX3)!': ['Huawei', 'Enjoy 9e'], '(HW-|HUAWEI )?JKM-(AL00|AL00a|AL00b|LX1|LX2|LX3|TL00)!': ['Huawei', 'Enjoy 9 Plus'], - '(HW-|HUAWEI )?DVC-(AN20)!': ['Huawei', 'Enjoy 20 Pro'] - }, - - '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!': { - 'H30 U10': ['Huawei', 'Honor 3C'], - '(HW-|HUAWEI )?HN3-(U00|U01)!': ['Huawei', 'Honor 3'], - '(HW-|HUAWEI |HONOR )?H30[- ](C00|L01|L02|T00|T10|U10)!': ['Huawei', 'Honor 3C'], - '(HW-|HUAWEI )?HOL-(T00|U10|U19|U40)!': ['Huawei', 'Honor 3C'], - '(HW-|HUAWEI )?CHM-(CL00|TL00H|TL00|U01|UL00)!': ['Huawei', 'Honor Play 4C'], - '(HW-|HUAWEI )?SCL-(L01|L02|L03|L04|L21|L32|L001|L004|AL00|CL00|TL00|TL00H|TL10|U23|U31)!': [ - 'Huawei', - 'Honor 4A' - ], - '(HW-|HUAWEI )?CHE-(TL00|TL00H)!': ['Huawei', 'Honor 4X'], - '(HW-|HUAWEI )?Che1-(L04|CL10|CL20)!': ['Huawei', 'Honor 4X'], - '(HW-|HUAWEI )?Che2-(L11|L12|L23|TL00|UL00)!': ['Huawei', 'Honor 4X'], - '(HW-|HUAWEI )?NEM-(AL10|CL00|L21|L22|L51|TL00|TL00H|UL10)!': ['Huawei', 'Honor 5C'], - '(HW-|HUAWEI )?NMO-(L22|L23|L31)!': ['Huawei', 'Honor 5C'], - '(HW-|HUAWEI )?KIW-(AL10|CL00|L21|L22|L24|UL00|TL00|TL00H)!': ['Huawei', 'Honor 5X'], - '(HW-|HUAWEI )?H60-(J1|L01|L02|L03|L04|L11|L12|L21)!': ['Huawei', 'Honor 6'], - '(HW-|HUAWEI )?DLI-(AL10|L22|L42|TL20)!': ['Huawei', 'Honor 6A'], - '(HW-|HUAWEI )?BLN-(AL10|AL20|AL30|AL40|L21|L22|L24|TL00|TL10)!': ['Huawei', 'Honor 6X'], - '(HW-|HUAWEI )?PE-(CL00|TL00|TL00M|TL10|TL20|UL00)!': ['Huawei', 'Honor 6 Plus'], - '(HW-|HUAWEI |HONOR )?PLK-(L01|AL10|CL00|UL00|TL00|TL01H)!': ['Huawei', 'Honor 7'], - '(HW-|HUAWEI )?ATH-(AL00|CL00|TL00|TL00H|UL00)!': ['Huawei', 'Honor 7i'], - '(HW-|HUAWEI )?AUM-(L29)!': ['Huawei', 'Honor 7A'], - '(HW-|HUAWEI )?DUA-(L22)!': ['Huawei', 'Honor 7S'], - '(HW-|HUAWEI )?BND-(AL00|AL10|L21|L24|L31|L34|TL10)!': ['Huawei', 'Honor 7X'], - '(HW-|HUAWEI )?DUA-(AL00|TL00)!': ['Huawei', 'Honor 7 Play'], - '(HW-|HUAWEI )?FRD-(AL00|AL10|DL00|L02|L04|L09|L14|L19)!': ['Huawei', 'Honor 8'], - '(HW-|HUAWEI )?JAT-(L29|L41|LX1|LX3)!': ['Huawei', 'Honor 8A Pro'], - '(HW-|HUAWEI )?BKK-(AL00|AL10|L21|LX2)!': ['Huawei', 'Honor 8C'], - '(HW-|HUAWEI )?KSA-(LX9)!': ['Huawei', 'Honor 8S'], - '(HW-|HUAWEI )?JSN-(AL00|AL00a|L21|L22|L23|L42|TL00)!': ['Huawei', 'Honor 8X'], - '(HW-|HUAWEI )?ATH-(UL01|UL06)!': ['Huawei', 'Honor ShotX'], - '(HW-|HUAWEI )?KNT-(AL10|AL20|TL10|UL10)!': ['Huawei', 'Honor V8'], - '(HW-|HUAWEI )?EDI-(AL10)!': ['Huawei', 'Honor Note 8'], - '(HW-|HUAWEI )?STF-(AL00|AL10|L09|TL10)!': ['Huawei', 'Honor 9'], - '(HW-|HUAWEI )?LLD-(AL00|AL10|AL20|L21|L31)!': ['Huawei', 'Honor 9 Lite'], - '(HW-|HUAWEI )?RNE-(AL00|L01|L02|L03|L21|L22|L23|L31)!': ['Huawei', 'Honor 9i'], - '(HW-|HUAWEI )?HLK-(AL00|AL10)!': ['Huawei', 'Honor 9X'], - '(HW-|HUAWEI )?COL-(AL00|AL10|L29|TL00|TL10)!': ['Huawei', 'Honor 10'], - '(HW-|HUAWEI )?HRY-(LX1)!': ['Huawei', 'Honor 10 Lite'], - '(HW-|HUAWEI )?YAL-(AL00|AL10|L21|L41)!': ['Huawei', 'Honor 20'], - '(HW-|HUAWEI )?LRA-(AL00)!': ['Huawei', 'Honor 20 Lite'], - '(HW-|HUAWEI )?NTH-(NX9)!': ['Huawei', 'Honor 50'], - '(HW-|HUAWEI )?NTN-(LX1)!': ['Huawei', 'Honor 50 Lite'], - '(HW-|HUAWEI )?DUK-(AL20|L09|TL30)!': ['Huawei', 'Honor V9'], - '(HW-|HUAWEI )?JMM-(AL00|AL10|L22|L22HN|TL00)!': ['Huawei', 'Honor V9 Play'], - '(HW-|HUAWEI )?BKL-(AL00|AL20|L04|L09)!': ['Huawei', 'Honor V10'], - '(HW-|HUAWEI )?PCT-(AL10|L29|TL10)!': ['Huawei', 'Honor V20'], - '(HW-|HUAWEI )?OXF-(AN10)!': ['Huawei', 'Honor V30 Pro'], - '(HW-|HUAWEI )?TNY-(AL00)!': ['Huawei', 'Honor Magic 2'], - '(HW-|HUAWEI )?COR-(AL10|L29)!': ['Huawei', 'Honor Play'], - '(HW-|HUAWEI )?HDN-(L09|W09)!': ['Huawei', 'Honor WaterPlay', DeviceType.TABLET] - }, + '(HW-|HUAWEI )?DVC-(AN20)!': ['Huawei', 'Enjoy 20 Pro'], + }, + + '(HW-|HUAWEI |HONOR )?(ATH|AUM|BLN|BKL|BKK|BND|CHE|CHM|COL|COR|DUA|DUK|DLI|EDI|FRD|HLK|HN3|H30|H60|HOL|HRY|JAT|JMM|JSN|LRA|KIW|KSA|LLD|NEM|NMO|NTH|NTN|OXF|PE|PCT|PLK|RNE|SCL|TNY|KNT|CAM|STF|HDN|YAL)!!': + { + 'H30 U10': ['Huawei', 'Honor 3C'], + '(HW-|HUAWEI )?HN3-(U00|U01)!': ['Huawei', 'Honor 3'], + '(HW-|HUAWEI |HONOR )?H30[- ](C00|L01|L02|T00|T10|U10)!': ['Huawei', 'Honor 3C'], + '(HW-|HUAWEI )?HOL-(T00|U10|U19|U40)!': ['Huawei', 'Honor 3C'], + '(HW-|HUAWEI )?CHM-(CL00|TL00H|TL00|U01|UL00)!': ['Huawei', 'Honor Play 4C'], + '(HW-|HUAWEI )?SCL-(L01|L02|L03|L04|L21|L32|L001|L004|AL00|CL00|TL00|TL00H|TL10|U23|U31)!': [ + 'Huawei', + 'Honor 4A', + ], + '(HW-|HUAWEI )?CHE-(TL00|TL00H)!': ['Huawei', 'Honor 4X'], + '(HW-|HUAWEI )?Che1-(L04|CL10|CL20)!': ['Huawei', 'Honor 4X'], + '(HW-|HUAWEI )?Che2-(L11|L12|L23|TL00|UL00)!': ['Huawei', 'Honor 4X'], + '(HW-|HUAWEI )?NEM-(AL10|CL00|L21|L22|L51|TL00|TL00H|UL10)!': ['Huawei', 'Honor 5C'], + '(HW-|HUAWEI )?NMO-(L22|L23|L31)!': ['Huawei', 'Honor 5C'], + '(HW-|HUAWEI )?KIW-(AL10|CL00|L21|L22|L24|UL00|TL00|TL00H)!': ['Huawei', 'Honor 5X'], + '(HW-|HUAWEI )?H60-(J1|L01|L02|L03|L04|L11|L12|L21)!': ['Huawei', 'Honor 6'], + '(HW-|HUAWEI )?DLI-(AL10|L22|L42|TL20)!': ['Huawei', 'Honor 6A'], + '(HW-|HUAWEI )?BLN-(AL10|AL20|AL30|AL40|L21|L22|L24|TL00|TL10)!': ['Huawei', 'Honor 6X'], + '(HW-|HUAWEI )?PE-(CL00|TL00|TL00M|TL10|TL20|UL00)!': ['Huawei', 'Honor 6 Plus'], + '(HW-|HUAWEI |HONOR )?PLK-(L01|AL10|CL00|UL00|TL00|TL01H)!': ['Huawei', 'Honor 7'], + '(HW-|HUAWEI )?ATH-(AL00|CL00|TL00|TL00H|UL00)!': ['Huawei', 'Honor 7i'], + '(HW-|HUAWEI )?AUM-(L29)!': ['Huawei', 'Honor 7A'], + '(HW-|HUAWEI )?DUA-(L22)!': ['Huawei', 'Honor 7S'], + '(HW-|HUAWEI )?BND-(AL00|AL10|L21|L24|L31|L34|TL10)!': ['Huawei', 'Honor 7X'], + '(HW-|HUAWEI )?DUA-(AL00|TL00)!': ['Huawei', 'Honor 7 Play'], + '(HW-|HUAWEI )?FRD-(AL00|AL10|DL00|L02|L04|L09|L14|L19)!': ['Huawei', 'Honor 8'], + '(HW-|HUAWEI )?JAT-(L29|L41|LX1|LX3)!': ['Huawei', 'Honor 8A Pro'], + '(HW-|HUAWEI )?BKK-(AL00|AL10|L21|LX2)!': ['Huawei', 'Honor 8C'], + '(HW-|HUAWEI )?KSA-(LX9)!': ['Huawei', 'Honor 8S'], + '(HW-|HUAWEI )?JSN-(AL00|AL00a|L21|L22|L23|L42|TL00)!': ['Huawei', 'Honor 8X'], + '(HW-|HUAWEI )?ATH-(UL01|UL06)!': ['Huawei', 'Honor ShotX'], + '(HW-|HUAWEI )?KNT-(AL10|AL20|TL10|UL10)!': ['Huawei', 'Honor V8'], + '(HW-|HUAWEI )?EDI-(AL10)!': ['Huawei', 'Honor Note 8'], + '(HW-|HUAWEI )?STF-(AL00|AL10|L09|TL10)!': ['Huawei', 'Honor 9'], + '(HW-|HUAWEI )?LLD-(AL00|AL10|AL20|L21|L31)!': ['Huawei', 'Honor 9 Lite'], + '(HW-|HUAWEI )?RNE-(AL00|L01|L02|L03|L21|L22|L23|L31)!': ['Huawei', 'Honor 9i'], + '(HW-|HUAWEI )?HLK-(AL00|AL10)!': ['Huawei', 'Honor 9X'], + '(HW-|HUAWEI )?COL-(AL00|AL10|L29|TL00|TL10)!': ['Huawei', 'Honor 10'], + '(HW-|HUAWEI )?HRY-(LX1)!': ['Huawei', 'Honor 10 Lite'], + '(HW-|HUAWEI )?YAL-(AL00|AL10|L21|L41)!': ['Huawei', 'Honor 20'], + '(HW-|HUAWEI )?LRA-(AL00)!': ['Huawei', 'Honor 20 Lite'], + '(HW-|HUAWEI )?NTH-(NX9)!': ['Huawei', 'Honor 50'], + '(HW-|HUAWEI )?NTN-(LX1)!': ['Huawei', 'Honor 50 Lite'], + '(HW-|HUAWEI )?DUK-(AL20|L09|TL30)!': ['Huawei', 'Honor V9'], + '(HW-|HUAWEI )?JMM-(AL00|AL10|L22|L22HN|TL00)!': ['Huawei', 'Honor V9 Play'], + '(HW-|HUAWEI )?BKL-(AL00|AL20|L04|L09)!': ['Huawei', 'Honor V10'], + '(HW-|HUAWEI )?PCT-(AL10|L29|TL10)!': ['Huawei', 'Honor V20'], + '(HW-|HUAWEI )?OXF-(AN10)!': ['Huawei', 'Honor V30 Pro'], + '(HW-|HUAWEI )?TNY-(AL00)!': ['Huawei', 'Honor Magic 2'], + '(HW-|HUAWEI )?COR-(AL10|L29)!': ['Huawei', 'Honor Play'], + '(HW-|HUAWEI )?HDN-(L09|W09)!': ['Huawei', 'Honor WaterPlay', DeviceType.TABLET], + }, '(HW-|HUAWEI )?(BLL|CHC|TAG|KII)!!': { '(HW-|HUAWEI )?CHC-(U01|U03|U23)!': ['Huawei', 'G Play Mini'], '(HW-|HUAWEI )?TAG-(L01|L03|L21|L22|L23|L32)!': ['Huawei', 'GR3'], '(HW-|HUAWEI )?KII-(L03|L05|L21|L22|L23|L33)!': ['Huawei', 'GR5'], - '(HW-|HUAWEI )?BLL-(L21|L22|L23)!': ['Huawei', 'GR5 (2017)'] - }, - - '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!': { - 'HUAWEI D2': ['Huawei', 'Ascend D2'], - '(HW-|HUAWEI )?D2-(0082|2010|5000|6070|6114)!': ['Huawei', 'Ascend D2'], - '(HW-|HUAWEI )?G6-(C00|L11|L22|L33|T00|U00|U10|U34|U251)!': ['Huawei', 'Ascend G6'], - '(HW-|HUAWEI )?G7-(L01|L02|L03|L11|TL00|UL20)!': ['Huawei', 'Ascend G7'], - 'HUAWEI G7': ['Huawei', 'Ascend G7'], - '(HW-|HUAWEI )?RIO-(L01|L02|L03|AL00|UL00|CL00|TL00)!': ['Huawei', 'Ascend G8'], - '(HW-|HUAWEI )?SC-(CL00|UL10)!': ['Huawei', 'Ascend GX1'], - '(HW-|HUAWEI )?P2-(0000|6011|6070)!': ['Huawei', 'Ascend P2'], - '(HW-|HUAWEI )?P6-(C00|U00|U06|T00|T00V|VIP)!': ['Huawei', 'Ascend P6'], - '(HW-|HUAWEI )?P6 ?S-U06!': ['Huawei', 'Ascend P6'], - '(HW-|HUAWEI )?Sophia-(L07|L10)!': ['Huawei', 'Ascend P7'], - '(HW-|HUAWEI )?P7-(L00|L01|L05|L07|L09|L10|L11|L12)!': ['Huawei', 'Ascend P7'], - '(HW-|HUAWEI )?M100-(CL00|L09|TL00|UL00)!': ['Huawei', 'P8'], - '(HW-|HUAWEI )?GRA-(CL00|CL10|L09|TL00|UL00|UL10)!': ['Huawei', 'P8'], - '(HW-|HUAWEI )?ALE-?(L02|L04|L21|L23|CL00|TL00|UL00)!': ['Huawei', 'P8 Lite'], - '(HW-|HUAWEI )?PRA-?(AL00|LA1|LX1|LX2|LX3|TL10)!': ['Huawei', 'P8 Lite (2017)'], - '(HW-|HUAWEI )?DAV-?(703L)!': ['Huawei', 'P8 Max'], - '(HW-|HUAWEI )?EVA-?(AL00|AL10|CL00|DL00|L09|L19|L29|TL00)!': ['Huawei', 'P9'], - '(HW-|HUAWEI )?VNS-?(AL00|DL00|L21|L22|L23|L31|L52|L53|L62|TL00)!': ['Huawei', 'P9 Lite'], - '(HW-|HUAWEI )?VIE-?(AL00|AL10|L09|L29)!': ['Huawei', 'P9 Plus'], - '(HW-|HUAWEI )?VTR-?(AL00|L09|L29|TL00)!': ['Huawei', 'P10'], - '(HW-|HUAWEI )?WAS-?(AL00|L03T|LX1|LX1A|LX2|LX2J|LX3|TL10)!': ['Huawei', 'P10 Lite'], - '(HW-|HUAWEI )?VKY-?(AL00|L09|L29|TL00)!': ['Huawei', 'P10 Plus'], - '(HW-|HUAWEI )?FIG-?(AL00|AL10|LA1|LX1|LX3|TL00)!': ['Huawei', 'P Smart'], - '(HW-|HUAWEI )?STK-?(L21|L22|LX1|LX3)!': ['Huawei', 'P Smart Z'], - '(HW-|HUAWEI )?PPA-?(LX1|LX2)!': ['Huawei', 'P Smart (2021)'], - '(HW-|HUAWEI )?EML-?(AL00|L09|L29|TL00)!': ['Huawei', 'P20'], - '(HW-|HUAWEI )?ANE-?(AL00|L21|LX1|LX2|LX2J|LX3)!': ['Huawei', 'P20 Lite'], - '(HW-|HUAWEI )?CLT-?(AL00|AL01|L04|L09|L29|L39|TL00|TL01)!': ['Huawei', 'P20 Pro'], - '(HW-|HUAWEI )?ELE-?(AL00|L04|L09|L29|TL00)!': ['Huawei', 'P30'], - '(HW-|HUAWEI )?VOG-?(AL00|AL10|L04|L09|L29|TL00)!': ['Huawei', 'P30 Pro'], - '(HW-|HUAWEI )?MAR-?(LX1B)!': ['Huawei', 'P30 Lite'], - '(HW-|HUAWEI )?ANA-?(NX9)!': ['Huawei', 'P40'], - '(HW-|HUAWEI )?JNY-?(LX1)!': ['Huawei', 'P40 Lite'], - '(HW-|HUAWEI )?CDY-?(NX9A)!': ['Huawei', 'P40 Lite'], - '(HW-|HUAWEI )?ELS-?(N39|NX9)!': ['Huawei', 'P40 Pro'] - }, + '(HW-|HUAWEI )?BLL-(L21|L22|L23)!': ['Huawei', 'GR5 (2017)'], + }, + + '(HW-|HUAWEI )?(ALE|ANA|ANE|CDY|CLT|D2|DAV|ELE|ELS|EML|EVA|FIG|G6|G7|GRA|JNY|MAR|M100|P2|P6|P7|PPA|PRA|RIO|SC|Sophia|STK|VIE|VKY|VNS|VOG|VTR|WAS)!!': + { + 'HUAWEI D2': ['Huawei', 'Ascend D2'], + '(HW-|HUAWEI )?D2-(0082|2010|5000|6070|6114)!': ['Huawei', 'Ascend D2'], + '(HW-|HUAWEI )?G6-(C00|L11|L22|L33|T00|U00|U10|U34|U251)!': ['Huawei', 'Ascend G6'], + '(HW-|HUAWEI )?G7-(L01|L02|L03|L11|TL00|UL20)!': ['Huawei', 'Ascend G7'], + 'HUAWEI G7': ['Huawei', 'Ascend G7'], + '(HW-|HUAWEI )?RIO-(L01|L02|L03|AL00|UL00|CL00|TL00)!': ['Huawei', 'Ascend G8'], + '(HW-|HUAWEI )?SC-(CL00|UL10)!': ['Huawei', 'Ascend GX1'], + '(HW-|HUAWEI )?P2-(0000|6011|6070)!': ['Huawei', 'Ascend P2'], + '(HW-|HUAWEI )?P6-(C00|U00|U06|T00|T00V|VIP)!': ['Huawei', 'Ascend P6'], + '(HW-|HUAWEI )?P6 ?S-U06!': ['Huawei', 'Ascend P6'], + '(HW-|HUAWEI )?Sophia-(L07|L10)!': ['Huawei', 'Ascend P7'], + '(HW-|HUAWEI )?P7-(L00|L01|L05|L07|L09|L10|L11|L12)!': ['Huawei', 'Ascend P7'], + '(HW-|HUAWEI )?M100-(CL00|L09|TL00|UL00)!': ['Huawei', 'P8'], + '(HW-|HUAWEI )?GRA-(CL00|CL10|L09|TL00|UL00|UL10)!': ['Huawei', 'P8'], + '(HW-|HUAWEI )?ALE-?(L02|L04|L21|L23|CL00|TL00|UL00)!': ['Huawei', 'P8 Lite'], + '(HW-|HUAWEI )?PRA-?(AL00|LA1|LX1|LX2|LX3|TL10)!': ['Huawei', 'P8 Lite (2017)'], + '(HW-|HUAWEI )?DAV-?(703L)!': ['Huawei', 'P8 Max'], + '(HW-|HUAWEI )?EVA-?(AL00|AL10|CL00|DL00|L09|L19|L29|TL00)!': ['Huawei', 'P9'], + '(HW-|HUAWEI )?VNS-?(AL00|DL00|L21|L22|L23|L31|L52|L53|L62|TL00)!': ['Huawei', 'P9 Lite'], + '(HW-|HUAWEI )?VIE-?(AL00|AL10|L09|L29)!': ['Huawei', 'P9 Plus'], + '(HW-|HUAWEI )?VTR-?(AL00|L09|L29|TL00)!': ['Huawei', 'P10'], + '(HW-|HUAWEI )?WAS-?(AL00|L03T|LX1|LX1A|LX2|LX2J|LX3|TL10)!': ['Huawei', 'P10 Lite'], + '(HW-|HUAWEI )?VKY-?(AL00|L09|L29|TL00)!': ['Huawei', 'P10 Plus'], + '(HW-|HUAWEI )?FIG-?(AL00|AL10|LA1|LX1|LX3|TL00)!': ['Huawei', 'P Smart'], + '(HW-|HUAWEI )?STK-?(L21|L22|LX1|LX3)!': ['Huawei', 'P Smart Z'], + '(HW-|HUAWEI )?PPA-?(LX1|LX2)!': ['Huawei', 'P Smart (2021)'], + '(HW-|HUAWEI )?EML-?(AL00|L09|L29|TL00)!': ['Huawei', 'P20'], + '(HW-|HUAWEI )?ANE-?(AL00|L21|LX1|LX2|LX2J|LX3)!': ['Huawei', 'P20 Lite'], + '(HW-|HUAWEI )?CLT-?(AL00|AL01|L04|L09|L29|L39|TL00|TL01)!': ['Huawei', 'P20 Pro'], + '(HW-|HUAWEI )?ELE-?(AL00|L04|L09|L29|TL00)!': ['Huawei', 'P30'], + '(HW-|HUAWEI )?VOG-?(AL00|AL10|L04|L09|L29|TL00)!': ['Huawei', 'P30 Pro'], + '(HW-|HUAWEI )?MAR-?(LX1B)!': ['Huawei', 'P30 Lite'], + '(HW-|HUAWEI )?ANA-?(NX9)!': ['Huawei', 'P40'], + '(HW-|HUAWEI )?JNY-?(LX1)!': ['Huawei', 'P40 Lite'], + '(HW-|HUAWEI )?CDY-?(NX9A)!': ['Huawei', 'P40 Lite'], + '(HW-|HUAWEI )?ELS-?(N39|NX9)!': ['Huawei', 'P40 Pro'], + }, 'Rock-(AL00|CL00|L01|L03)!': ['Huawei', 'Ascend G7'], 'HUAWEI A168-(AL10|DL09|L09|L29)!': ['Huawei', 'P9'], @@ -6501,7 +6503,7 @@ exports.ANDROID_MODELS = { '(HW-|HUAWEI )?LDN-(AL00|L01|L21|LX2|LX3|TL00)!': ['Huawei', 'Y7 Prime (2018)'], '(HW-|HUAWEI )?DUB-(AL20|LX1|LX3)!': ['Huawei', 'Y7 Prime (2019)'], '(HW-|HUAWEI )?ART-(L29)!': ['Huawei', 'Y7p'], - '(HW-|HUAWEI )?AQM-(LX1)!': ['Huawei', 'Y8p'] + '(HW-|HUAWEI )?AQM-(LX1)!': ['Huawei', 'Y8p'], }, '(HW-|HUAWEI )?CAZ-(AL10|TL10|TL20)!': ['Huawei', 'Nova'], @@ -6540,7 +6542,7 @@ exports.ANDROID_MODELS = { 'G735-(L03|L12|L23)!': ['Huawei', 'Ascend G735'], 'G740-L00': ['Huawei', 'Ascend G740'], 'G750-(T00|T01|T20)!': ['Huawei', 'Ascend G750'], - 'G760-(L01|TL00)!': ['Huawei', 'Ascend G760'] + 'G760-(L01|TL00)!': ['Huawei', 'Ascend G760'], }, 'Y[0-9]{3,3}!!': { @@ -6561,7 +6563,7 @@ exports.ANDROID_MODELS = { 'Y560-L01': ['Huawei', 'Ascend Y560'], 'Y600-U00': ['Huawei', 'Ascend Y600'], 'Y618-T00': ['Huawei', 'Ascend Y618'], - 'Y635-(L01|L02|L03|L21|L22)!': ['Huawei', 'Ascend Y635'] + 'Y635-(L01|L02|L03|L21|L22)!': ['Huawei', 'Ascend Y635'], }, '(Huawei|Ascend|HW-)!!': { @@ -6754,7 +6756,7 @@ exports.ANDROID_MODELS = { 'HUAWEI Y625-(U13|U21|U32|U43|U51)!': ['Huawei', 'Ascend Y625'], 'HUAWEI Y635!': ['Huawei', 'Ascend Y635'], 'Huawei Ascend': ['Huawei', 'Ascend'], - 'Huawei Ascend X': ['Huawei', 'Ascend X'] + 'Huawei Ascend X': ['Huawei', 'Ascend X'], }, C8817D: ['Huawei', 'Honor 4X'], @@ -6776,7 +6778,7 @@ exports.ANDROID_MODELS = { 'IDEOS X1': ['Huawei', 'IDEOS X1'], 'IDEOS X5': ['Huawei', 'IDEOS X5'], 'IDEOS X5 PRO': ['Huawei', 'IDEOS X5 Pro'], - 'IDEOS S7!': ['Huawei', 'IDEOS S7', DeviceType.TABLET] + 'IDEOS S7!': ['Huawei', 'IDEOS S7', DeviceType.TABLET], }, 'Huawei S7': ['Huawei', 'IDEOS S7', DeviceType.TABLET], @@ -6800,7 +6802,7 @@ exports.ANDROID_MODELS = { '605HW': ['Huawei', 'MediaPad T2 Pro 605HW', DeviceType.TABLET, { carrier: 'Softbank' }], '606HW': ['Huawei', 'MediaPad T2 Pro 606HW', DeviceType.TABLET, { carrier: 'Y! Mobile' }], '608HW': ['Huawei', 'nova lite 608HW', { carrier: 'Y! Mobile' }], - '704HW': ['Huawei', 'nova lite 2 704HW', { carrier: 'Softbank' }] + '704HW': ['Huawei', 'nova lite 2 704HW', { carrier: 'Softbank' }], }, CM980: ['Huawei', 'Evolution II'], @@ -6821,18 +6823,18 @@ exports.ANDROID_MODELS = { C8810: ['Huawei', 'Ascend G300C'], 'C8812!': ['Huawei', 'Ascend C8812'], 'C8815!': ['Huawei', 'Ascend C8815'], - 'C8860!': ['Huawei', 'Honor'] + 'C8860!': ['Huawei', 'Honor'], }, 'T8[0-9]{3,3}!!': { T8620: ['Huawei', 'Ascend Y200T'], 'T8808!': ['Huawei', 'Ascend G306T'], - 'T8830!': ['Huawei', 'Ascend G309T'] + 'T8830!': ['Huawei', 'Ascend G309T'], }, 'T9[0-9]{3,3}!!': { T9200: ['Huawei', 'Ascend P1'], - T9510E: ['Huawei', 'Ascend D1 Quad XL'] + T9510E: ['Huawei', 'Ascend D1 Quad XL'], }, 'U8[0-9]{3,3}!!': { @@ -6874,7 +6876,7 @@ exports.ANDROID_MODELS = { U8832D: ['Huawei', 'Ascend G500'], U8836D: ['Huawei', 'Ascend G500'], U8850: ['Huawei', 'Vision'], - 'U8860!': ['Huawei', 'Honor'] + 'U8860!': ['Huawei', 'Honor'], }, 'U9[0-9]{3,3}!!': { @@ -6885,7 +6887,7 @@ exports.ANDROID_MODELS = { U9500E: ['Huawei', 'Ascend D1 XL'], U9501L: ['Huawei', 'Ascend D LTE'], U9508: ['Huawei', 'Honor 2'], - 'U9510!': ['Huawei', 'Ascend D quad'] + 'U9510!': ['Huawei', 'Ascend D quad'], }, Comet: ['Huawei', 'Comet'], @@ -6908,7 +6910,7 @@ exports.ANDROID_MODELS = { 'USCCADR[0-9]{4,4}!!': { USCCADR3305: ['Huawei', 'Ascend II'], - USCCADR3310: ['Huawei', 'Ascend II'] + USCCADR3310: ['Huawei', 'Ascend II'], }, 'HYUNDAI!!': { @@ -6927,7 +6929,7 @@ exports.ANDROID_MODELS = { 'HYUNDAI T10': ['Hyundai', 'T10', DeviceType.TABLET], 'HYUNDAI T31': ['Hyundai', 'T31', DeviceType.TABLET], 'HYUNDAI X7': ['Hyundai', 'X7'], - 'HYUNDAI X900': ['Hyundai', 'X900', DeviceType.TABLET] + 'HYUNDAI X900': ['Hyundai', 'X900', DeviceType.TABLET], }, 'Ultra Air': ['Hyundai', 'Ultra Air'], @@ -6953,7 +6955,7 @@ exports.ANDROID_MODELS = { 'Planet II v2': ['i-Joy', 'Planet II', DeviceType.TABLET], Sygnus: ['i-Joy', 'Sygnus', DeviceType.TABLET], - '(NMP|MBR|XDK|XDS|XMP)-!!': { + '(NMP|MBR|XDK|XDS|XMP)\-!!': { 'NMP-302w': ['IAdea', 'MBR-1100', DeviceType.SIGNAGE], 'MBR-1100': ['IAdea', 'MBR-1100', DeviceType.SIGNAGE], 'XDK-1160': ['IAdea', 'XDK-1160', DeviceType.SIGNAGE], @@ -6965,7 +6967,7 @@ exports.ANDROID_MODELS = { 'XMP-6200': ['IAdea', 'XMP-6200', DeviceType.SIGNAGE], 'XMP-6250': ['IAdea', 'XMP-6250', DeviceType.SIGNAGE], 'XMP-6400': ['IAdea', 'XMP-6400', DeviceType.SIGNAGE], - 'XMP-7300': ['IAdea', 'XMP-7300', DeviceType.SIGNAGE] + 'XMP-7300': ['IAdea', 'XMP-7300', DeviceType.SIGNAGE], }, '(iBall )?Andi!!': { @@ -7064,7 +7066,7 @@ exports.ANDROID_MODELS = { 'Andi Uddaan': ['iBall', 'Andi Uddaan'], 'Andi Uddaan (1GB )': ['iBall', 'Andi Uddaan'], 'Andi Uddaan Quad core': ['iBall', 'Andi Uddaan'], - 'Andi Mini Uddaan': ['iBall', 'Andi Uddaan Mini'] + 'Andi Mini Uddaan': ['iBall', 'Andi Uddaan Mini'], }, 'iBall!!': { @@ -7084,7 +7086,7 @@ exports.ANDROID_MODELS = { 'iBall Slide 3G 7316': ['iBall', 'Slide 3G 7316', DeviceType.TABLET], 'iBall Slide 3G 7334': ['iBall', 'Slide 3G 7334', DeviceType.TABLET], 'iBall Slide 3G Q45i': ['iBall', 'Slide 3G Q45i', DeviceType.TABLET], - 'iBall Slide 3G Q1035': ['iBall', 'Slide 3G Q1035', DeviceType.TABLET] + 'iBall Slide 3G Q1035': ['iBall', 'Slide 3G Q1035', DeviceType.TABLET], }, '3G7334i': ['iBall', 'Slide 3G 7334', DeviceType.TABLET], @@ -7096,7 +7098,7 @@ exports.ANDROID_MODELS = { 'AUXUS CoreX2 3G': ['iBerry', 'Auxus CoreX2', DeviceType.TABLET], 'AUXUS CoreX4 3G': ['iBerry', 'Auxus CoreX4', DeviceType.TABLET], 'AUXUS Nuclea N1': ['iBerry', 'Auxus Nuclea N1'], - 'AUXUS Nuclea N2': ['iBerry', 'Auxus Nuclea N2'] + 'AUXUS Nuclea N2': ['iBerry', 'Auxus Nuclea N2'], }, '(NetTab|NT-)!!': { @@ -7154,7 +7156,7 @@ exports.ANDROID_MODELS = { 'NT-3801P': ['IconBit', 'NetTab Parus 3G Duo', DeviceType.TABLET], 'NT-3803C': ['IconBit', 'NetTab Skat 3G', DeviceType.TABLET], 'NT-3805C': ['IconBit', 'NetTab Skat 3G Quad', DeviceType.TABLET], - 'NT-3902S': ['IconBit', 'NetTab Space 3G Duo', DeviceType.TABLET] + 'NT-3902S': ['IconBit', 'NetTab Space 3G Duo', DeviceType.TABLET], }, 'IconBit NetTab Thor Mini': ['IconBit', 'NetTab Thor Mini', DeviceType.TABLET], @@ -7170,7 +7172,7 @@ exports.ANDROID_MODELS = { 'INFOBAR!!': { 'INFOBAR A01': ['iida', 'INFOBAR A01', { carrier: 'au' }], // by Sharp 'INFOBAR A01-2': ['iida', 'INFOBAR A01', { carrier: 'au' }], // by Sharp - 'INFOBAR C01': ['iida', 'INFOBAR C01', { carrier: 'au' }] // by Sharp + 'INFOBAR C01': ['iida', 'INFOBAR C01', { carrier: 'au' }], // by Sharp }, HTX21: ['iida', 'INFOBAR A02', { carrier: 'au' }], // by HTC @@ -7210,7 +7212,7 @@ exports.ANDROID_MODELS = { 'IMO Z7': ['IMO', 'Tab Z7 Orion', DeviceType.TABLET], 'IMO Z8': ['IMO', 'Tab Z8 Spin', DeviceType.TABLET], 'IMO Z9': ['IMO', 'Tab Z9 Ice', DeviceType.TABLET], - 'IMO Z10': ['IMO', 'Tab Z10 Fortune', DeviceType.TABLET] + 'IMO Z10': ['IMO', 'Tab Z10 Fortune', DeviceType.TABLET], }, 'S88 DISCOVERY': ['IMO', 'Discovery S88'], @@ -7236,7 +7238,7 @@ exports.ANDROID_MODELS = { 'ImPAD 8901': ['Impression', 'ImPAD 8901', DeviceType.TABLET], 'ImPAD 9702': ['Impression', 'ImPAD 9702', DeviceType.TABLET], ImPAD9704: ['Impression', 'ImPAD 9704', DeviceType.TABLET], - 'ImPAD 9707': ['Impression', 'ImPAD 9707', DeviceType.TABLET] + 'ImPAD 9707': ['Impression', 'ImPAD 9707', DeviceType.TABLET], }, TX85: ['iMuz', 'TX85', DeviceType.TABLET], @@ -7300,7 +7302,7 @@ exports.ANDROID_MODELS = { 'Infinix X603': ['Infinix', 'Zero 5 X603'], 'Infinix X800': ['Infinix', 'Joypad 8 X800', DeviceType.TABLET], 'Infinix X801': ['Infinix', 'Joypad 8S X801', DeviceType.TABLET], - 'Infinix X1000': ['Infinix', 'Joypad 10 X1000', DeviceType.TABLET] + 'Infinix X1000': ['Infinix', 'Joypad 10 X1000', DeviceType.TABLET], }, 'S5 Pro': ['Infinix', 'S5 Pro'], @@ -7311,7 +7313,7 @@ exports.ANDROID_MODELS = { IN335: ['InFocus', 'IN335'], IN610: ['InFocus', 'IN610'], IN810: ['InFocus', 'IN810'], - IN815: ['InFocus', 'IN815'] + IN815: ['InFocus', 'IN815'], }, M210: ['InFocus', 'M210'], @@ -7339,7 +7341,7 @@ exports.ANDROID_MODELS = { 'InFocus M680': ['InFocus', 'M680'], 'InFocus M808!': ['InFocus', 'M808'], 'InFocus M810!': ['InFocus', 'M810'], - 'InFocus M812!': ['InFocus', 'M812'] + 'InFocus M812!': ['InFocus', 'M812'], }, M009F: ['Infotmic', 'M009F'], @@ -7355,7 +7357,7 @@ exports.ANDROID_MODELS = { 'innos i6': ['Innos', 'i6'], 'INNOS I6 (DNS S4503)': ['Innos', 'i6'], 'innos i6C': ['Innos', 'i6C'], - 'Innos i6cp': ['Innos', 'i6CP'] + 'Innos i6cp': ['Innos', 'i6CP'], }, 'NS-14T002': ['Insignia', 'Flex 8', DeviceType.TABLET], @@ -7366,7 +7368,7 @@ exports.ANDROID_MODELS = { AZ510: ['Intel', 'AZ510'], BT210: ['Intel', 'BT210'], BT230: ['Intel', 'BT230'], - BT510: ['Intel', 'BT510'] + BT510: ['Intel', 'BT510'], }, greenridge: ['Intel', 'Green Ridge', DeviceType.TABLET], @@ -7572,7 +7574,7 @@ exports.ANDROID_MODELS = { 'Aqua Y2 Remote': ['Intex', 'Aqua Y2 Remote'], 'Aqua Y2 Ultra': ['Intex', 'Aqua Y2 Ultra'], 'Aqua Y3': ['Intex', 'Aqua Y3'], - 'Aqua Y4': ['Intex', 'Aqua Y3'] + 'Aqua Y4': ['Intex', 'Aqua Y3'], }, '(Intex )?Cloud!!': { @@ -7615,7 +7617,7 @@ exports.ANDROID_MODELS = { 'Intex Cloud Style 4G': ['Intex', 'Cloud Style 4G'], 'Cloud Swift': ['Intex', 'Cloud Swift'], 'Intex Cloud Swing': ['Intex', 'Cloud Swing'], - 'Cloud Zest': ['Intex', 'Cloud Zest'] + 'Cloud Zest': ['Intex', 'Cloud Zest'], }, 'INTEX IRIS-II': ['Intex', 'Iris 2', DeviceType.TABLET], @@ -7660,14 +7662,14 @@ exports.ANDROID_MODELS = { 'itel P51': ['iTel', 'P51'], 'itel S11': ['iTel', 'S11'], 'itel S11Plus': ['iTel', 'S11 Plus'], - 'itel S31': ['iTel', 'S31'] + 'itel S31': ['iTel', 'S31'], }, 'IUNI U810': ['IUni', 'U810 U2'], 'IVIO!!': { 'IVIO-DG20': ['Ivio', 'DG20'], - 'IVIO DE38': ['Ivio', 'DE38'] + 'IVIO DE38': ['Ivio', 'DE38'], }, 'MC401 GWL': ['iWaylink', 'MC401'], @@ -7701,7 +7703,7 @@ exports.ANDROID_MODELS = { 'JIAYU G3S': ['Jiayu', 'G3S'], 'JIAYU.G3S': ['Jiayu', 'G3S'], 'JY-G4': ['Jiayu', 'G4'], - 'JY-G4G5': ['Jiayu', 'G4'], + 'JY-G4\G5': ['Jiayu', 'G4'], 'JY-G4 G5': ['Jiayu', 'G4'], 'JY-G4C': ['Jiayu', 'G4C'], 'JY G4C': ['Jiayu', 'G4C'], @@ -7718,7 +7720,7 @@ exports.ANDROID_MODELS = { 'JY-S2': ['Jiayu', 'S2'], 'JY-S3': ['Jiayu', 'S3'], 'JIAYU S3': ['Jiayu', 'S3'], - 'JY-S3S': ['Jiayu', 'S3S'] + 'JY-S3S': ['Jiayu', 'S3S'], }, G2S: ['Jiayu', 'G2 Plus'], @@ -7727,7 +7729,7 @@ exports.ANDROID_MODELS = { 'JC-A[0-9]{3,3}!!': { 'JC-A107': ['JuiCell', 'JC-A107'], - 'JC-A109': ['JuiCell', 'JC-A109'] + 'JC-A109': ['JuiCell', 'JC-A109'], }, 'JXD!!': { @@ -7741,7 +7743,7 @@ exports.ANDROID_MODELS = { 'JXD S7600': ['JXD', 'S7600', DeviceType.TABLET], 'JXD-S8000': ['JXD', 'S8000', DeviceType.TABLET], 'JXD-S9000': ['JXD', 'S9000', DeviceType.TABLET], - 'JXD-S9100': ['JXD', 'S9100', DeviceType.TABLET] + 'JXD-S9100': ['JXD', 'S9100', DeviceType.TABLET], }, A2: ['KakaTech', 'A2'], @@ -7808,7 +7810,7 @@ exports.ANDROID_MODELS = { 'Karbonn A240': ['Karbonn', 'A240'], 'Karbonn E8222': ['Karbonn', 'E8222'], 'Karbonn ST52': ['Karbonn', 'ST52', DeviceType.TABLET], - 'Karbonn ST72': ['Karbonn', 'ST72', DeviceType.TABLET] + 'Karbonn ST72': ['Karbonn', 'ST72', DeviceType.TABLET], }, 'TA-FONE!!': { @@ -7816,7 +7818,7 @@ exports.ANDROID_MODELS = { 'TA-FONE A34 HD': ['Karbonn', 'Ta-Fone A34 HD'], 'TA-FONE A37': ['Karbonn', 'Ta-Fone A37'], 'TA-FONE A37 HD': ['Karbonn', 'Ta-Fone A37 HD'], - 'TA-FONE A39 HD': ['Karbonn', 'Ta-Fone A39 HD'] + 'TA-FONE A39 HD': ['Karbonn', 'Ta-Fone A39 HD'], }, '(Karbonn|Titanium)!!': { @@ -7875,7 +7877,7 @@ exports.ANDROID_MODELS = { 'Karbonn Titanium S320+': ['Karbonn', 'Titanium S320 Plus'], 'Titanium S360': ['Karbonn', 'Titanium Mach Two S360'], 'Karbonn Titanium S360': ['Karbonn', 'Titanium Mach Two S360'], - 'Karbonn Titanium X': ['Karbonn', 'Titanium X'] + 'Karbonn Titanium X': ['Karbonn', 'Titanium X'], }, 'A7*': ['Karbonn', 'A7'], @@ -7928,7 +7930,7 @@ exports.ANDROID_MODELS = { 'KAZAM Trooper2 40': ['KAZAM', 'Trooper 2 4.0'], 'Trooper2 45': ['KAZAM', 'Trooper 2 4.5'], 'KAZAM Trooper2 50': ['KAZAM', 'Trooper 2 5.0'], - 'Kazam Trooper2 60': ['KAZAM', 'Trooper 2 6.0'] + 'Kazam Trooper2 60': ['KAZAM', 'Trooper 2 6.0'], }, MT791: ['Keen High', 'MT791'], @@ -7938,7 +7940,7 @@ exports.ANDROID_MODELS = { 'KENEKSI-Fire': ['KENEKSI', 'Fire'], 'KENEKSI-Norma': ['KENEKSI', 'Norma'], 'KENEKSI-SIGMA': ['KENEKSI', 'Sigma'], - 'KENEKSI-ZETA': ['KENEKSI', 'Zeta'] + 'KENEKSI-ZETA': ['KENEKSI', 'Zeta'], }, 'Pro 10 dual core': ['Kiano', 'Pro 10 Dual', DeviceType.TABLET], @@ -7957,13 +7959,13 @@ exports.ANDROID_MODELS = { 'Agora 4G': ['Kogan', 'Agora 4G'], 'Agora HD+': ['Kogan', 'Agora HD+'], 'Agora Quad Core': ['Kogan', 'Agora Quad Core'], - 'Kogan Agora 6Plus': ['Kogan', 'Agora 6 Plus'] + 'Kogan Agora 6Plus': ['Kogan', 'Agora 6 Plus'], }, 'KOMU!!': { 'Komu Color': ['Komu', 'Color'], 'KOMU ENERGY': ['Komu', 'Energy'], - 'KOMU-MINI': ['Komu', 'Mini'] + 'KOMU-MINI': ['Komu', 'Mini'], }, V1: ['Konka', 'KOMI V1'], @@ -7978,7 +7980,7 @@ exports.ANDROID_MODELS = { 'KONKA V980': ['Konka', 'V980'], 'KONKA V983': ['Konka', 'V983'], 'konka W970': ['Konka', 'W970'], - 'konka W976': ['Konka', 'W976'] + 'konka W976': ['Konka', 'W976'], }, K3: ['Konka', 'K3'], @@ -7989,7 +7991,7 @@ exports.ANDROID_MODELS = { 'Koobe!!': { 'Koobe S7 Easy tablet': ['Koobe', 'S7 Easy tablet', DeviceType.TABLET], - 'Koobe X8 Slim Quadrum tablet': ['Koobe', 'X8 Slim Quadrum tablet', DeviceType.TABLET] + 'Koobe X8 Slim Quadrum tablet': ['Koobe', 'X8 Slim Quadrum tablet', DeviceType.TABLET], }, 'KORIDY H15': ['Koridy', 'H15'], @@ -8003,7 +8005,7 @@ exports.ANDROID_MODELS = { 'KPT A11PLUS': ['KPT', 'A11+'], 'KPT A58T': ['KPT', 'A58T'], 'KPT A81PLUS': ['KPT', 'A81+'], - 'KPT A88': ['KPT', 'A88'] + 'KPT A88': ['KPT', 'A88'], }, '(EV|KM)-[ES][0-9]{3,3}!!': { @@ -8014,7 +8016,7 @@ exports.ANDROID_MODELS = { 'KM-S220': ['Kttech', 'Take Tachy KM-S220'], 'KM-S220H': ['Kttech', 'Take Tachy KM-S220'], 'KM-S300': ['Kttech', 'Take HD KM-S300'], - 'KM-S330': ['Kttech', 'Take Fit KM-S330'] + 'KM-S330': ['Kttech', 'Take Fit KM-S330'], }, 'Kurio!!': { @@ -8024,7 +8026,7 @@ exports.ANDROID_MODELS = { Kurio7S: ['Kurio', '7S', DeviceType.TABLET], 'Kurio-LTE': ['Kurio', '7X', DeviceType.TABLET], Kurio10S: ['Kurio', '10S', DeviceType.TABLET], - 'Kurio-Lite': ['Kurio', 'Lite', DeviceType.TABLET] + 'Kurio-Lite': ['Kurio', 'Lite', DeviceType.TABLET], }, 'Kyobo mirasol eReader': ['Kyobo', 'eReader', DeviceType.EREADER], @@ -8032,7 +8034,7 @@ exports.ANDROID_MODELS = { 'KYL[0-9]{2,2}!!': { KYL21: ['Kyocera', 'DIGNO S KYL21', { carrier: 'au' }], - KYL22: ['Kyocera', 'DIGNO M KYL22', { carrier: 'au' }] + KYL22: ['Kyocera', 'DIGNO M KYL22', { carrier: 'au' }], }, 'KC-01': ['Kyocera', 'KC-01'], @@ -8064,7 +8066,7 @@ exports.ANDROID_MODELS = { 'USCC-E6762': ['Kyocera', 'DuraForce'], 'KYOCERA-E6762': ['Kyocera', 'DuraForce'], E6782L: ['Kyocera', 'DuraScout'], - 'KYOCERA-E6790': ['Kyocera', 'DuraForce XD'] + 'KYOCERA-E6790': ['Kyocera', 'DuraForce XD'], }, '(USCC-|KYOCERA-)?C[0-9]{4,4}!!': { @@ -8087,7 +8089,7 @@ exports.ANDROID_MODELS = { C6743: ['Kyocera', 'Hydro REACH'], C6745: ['Kyocera', 'Hydro AIR'], 'KYOCERA-C6745': ['Kyocera', 'Hydro AIR'], - C6750: ['Kyocera', 'Hydro Elite'] + C6750: ['Kyocera', 'Hydro Elite'], }, M9300: ['Kyocera', 'Echo'], @@ -8118,7 +8120,7 @@ exports.ANDROID_MODELS = { 'KYV44 u': ['Kyocera', 'DIGNO A KYV44', { carrier: 'UQ mobile' }], KYT31: ['Kyocera', 'Qua tab', DeviceType.TABLET, { carrier: 'au' }], KYT32: ['Kyocera', 'Qua tab QZ8', DeviceType.TABLET, { carrier: 'au' }], - KYT33: ['Kyocera', 'Qua tab QZ10', DeviceType.TABLET, { carrier: 'au' }] + KYT33: ['Kyocera', 'Qua tab QZ10', DeviceType.TABLET, { carrier: 'au' }], }, 'URBANO PROGRESSO': ['Kyocera', 'URBANO PROGRESSO', { carrier: 'au' }], @@ -8131,10 +8133,10 @@ exports.ANDROID_MODELS = { '404KC': ['Kyocera', 'DIGNO C 404KC', { carrier: 'Y! Mobile' }], '503KC': ['Kyocera', 'DIGNO E 503KC', { carrier: 'Y! Mobile' }], '602KC': ['Kyocera', 'DIGNO G 602KC', { carrier: 'Softbank' }], - '704KC': ['Kyocera', 'DIGNO J 704KC', { carrier: 'Softbank' }] + '704KC': ['Kyocera', 'DIGNO J 704KC', { carrier: 'Softbank' }], }, - 'K-?Touch!!': { + 'K\-?Touch!!': { 'K-touch A9': ['K-Touch', 'A9'], 'K-touch A10 Pro': ['K-Touch', 'A10 Pro'], 'Ktouch A11': ['K-Touch', 'A11'], @@ -8237,7 +8239,7 @@ exports.ANDROID_MODELS = { 'K-Touch Tou ch3': ['K-Touch', 'Tou ch 3'], 'K-Touch Tou ch3c': ['K-Touch', 'Tou ch 3 c'], 'K-Touch Tou ch3es': ['K-Touch', 'Tou ch 3 es'], - 'K-Touch Tou ch 5': ['K-Touch', 'Tou ch 5'] + 'K-Touch Tou ch 5': ['K-Touch', 'Tou ch 5'], }, 'Nibiru H1': ['K-Touch', 'Niburu H1'], @@ -8302,14 +8304,14 @@ exports.ANDROID_MODELS = { 'ilium Pad E8': ['Lanix', 'Ilium Pad E8', DeviceType.TABLET], 'ilium Pad E10': ['Lanix', 'Ilium Pad E10', DeviceType.TABLET], 'ILIUM PAD E10Si': ['Lanix', 'Ilium Pad E10 Si', DeviceType.TABLET], - 'llium Pad L8': ['Lanix', 'Ilium Pad L8', DeviceType.TABLET] + 'llium Pad L8': ['Lanix', 'Ilium Pad L8', DeviceType.TABLET], }, 'Lark!!': { 'Lark Evolution X2 7': ['Lark', 'Evolution X2 7', DeviceType.TABLET], 'Lark Evolution X2 7 3G-GPS': ['Lark', 'Evolution X2 7', DeviceType.TABLET], 'Lark FreeMe X2 7': ['Lark', 'FreeMe X2 7', DeviceType.TABLET], - 'Lark FreeMe X2 7 ver.2': ['Lark', 'FreeMe X2 7', DeviceType.TABLET] + 'Lark FreeMe X2 7 ver.2': ['Lark', 'FreeMe X2 7', DeviceType.TABLET], }, 'Flair E1': ['Lava', 'Flair E1'], @@ -8413,7 +8415,7 @@ exports.ANDROID_MODELS = { 'iris X9': ['Lava', 'Iris X9'], irisalfa: ['Lava', 'Iris Alpha'], 'iris Atom2': ['Lava', 'Iris Atom 2'], - 'iris ATOM X': ['Lava', 'Iris Atom X'] + 'iris ATOM X': ['Lava', 'Iris Atom X'], }, '504Q': ['Lava', 'Iris 504Q'], @@ -8511,7 +8513,7 @@ exports.ANDROID_MODELS = { 'leepoo i500': ['Leepoo', 'i500'], 'leepoo i580': ['Leepoo', 'i580'], 'leepoo i600': ['Leepoo', 'i600'], - 'leepoo i800': ['Leepoo', 'i800'] + 'leepoo i800': ['Leepoo', 'i800'], }, P5: ['Lemon', 'P5'], @@ -8538,7 +8540,7 @@ exports.ANDROID_MODELS = { 'Lenco TAB-1020': ['Lenco', 'TAB 1020', DeviceType.TABLET], 'Lenco TAB-1022': ['Lenco', 'TAB 1022', DeviceType.TABLET], 'Lenco TAB-1030': ['Lenco', 'TAB 1030', DeviceType.TABLET], - 'Lenco TAB-9720': ['Lenco', 'TAB 9720', DeviceType.TABLET] + 'Lenco TAB-9720': ['Lenco', 'TAB 9720', DeviceType.TABLET], }, LENCM900HZ: ['Lenco', 'TAB 811', DeviceType.TABLET], @@ -8582,7 +8584,7 @@ exports.ANDROID_MODELS = { 'Lenovo A7600(-F|-HV|-H|H)!': ['Lenovo', 'IdeaTab A7600', DeviceType.TABLET], 'Lenovo B6000(-F|-H)!': ['Lenovo', 'B6000 Yoga Tablet 8', DeviceType.TABLET], 'Lenovo B8000(-F|-H)!': ['Lenovo', 'B8000 Yoga Tablet 10', DeviceType.TABLET], - 'Lenovo B8080(-F|-H|-HV)!': ['Lenovo', 'B8080 Yoga Tablet 10', DeviceType.TABLET] + 'Lenovo B8080(-F|-H|-HV)!': ['Lenovo', 'B8080 Yoga Tablet 10', DeviceType.TABLET], }, 'YOGA Tablet!!': { @@ -8595,7 +8597,7 @@ exports.ANDROID_MODELS = { 'YOGA Tablet 2 Pro-1380F': ['Lenovo', 'Yoga Tablet 2 Pro 1380F', DeviceType.TABLET], 'YOGA Tablet 2 Pro-1380L': ['Lenovo', 'Yoga Tablet 2 Pro 1380L', DeviceType.TABLET], 'YOGA Tablet 3 Pro-1381L': ['Lenovo', 'Yoga Tablet 3 Pro 1381L', DeviceType.TABLET], - 'YOGA Tablet 8 Pro-1386L': ['Lenovo', 'Yoga Tablet 8 Pro 1386L', DeviceType.TABLET] + 'YOGA Tablet 8 Pro-1386L': ['Lenovo', 'Yoga Tablet 8 Pro 1386L', DeviceType.TABLET], }, 'Lenovo YB1-X90L': ['Lenovo', 'Yoga Book', DeviceType.TABLET], @@ -8621,7 +8623,7 @@ exports.ANDROID_MODELS = { 'Lenovo TAB 2 A8-50(F|L|LC)!': ['Lenovo', 'Tab 2 A8', DeviceType.TABLET], 'Lenovo TAB 2 A10-70(F|L)!': ['Lenovo', 'Tab 2 A10', DeviceType.TABLET], 'Lenovo TAB S8-50(F|L|LC)!': ['Lenovo', 'Tab S8', DeviceType.TABLET], - 'Lenovo S8-50LC': ['Lenovo', 'Tab S8', DeviceType.TABLET] + 'Lenovo S8-50LC': ['Lenovo', 'Tab S8', DeviceType.TABLET], }, 'Lenovo TB-7304F': ['Lenovo', 'Tab 7 Essential', DeviceType.TABLET], @@ -8686,7 +8688,7 @@ exports.ANDROID_MODELS = { 'Lenovo S6000L-(F|H)!': ['Lenovo', 'IdeaTab S6000', DeviceType.TABLET], 'LENOVO IdeaTab S6000-H': ['Lenovo', 'IdeaTab S6000', DeviceType.TABLET], 'IdeaTab ?V2007(A|A-D-I)!': ['Lenovo', 'IdeaTab V2007', DeviceType.TABLET], - 'IdeaTab ?V2010(A)!': ['Lenovo', 'IdeaTab V2010', DeviceType.TABLET] + 'IdeaTab ?V2010(A)!': ['Lenovo', 'IdeaTab V2010', DeviceType.TABLET], }, 'Lenovo Pad A4': ['Lenovo', 'Pad A4', DeviceType.TABLET], @@ -8931,7 +8933,7 @@ exports.ANDROID_MODELS = { 'Lenovo PB1-750M': ['Lenovo', 'Phab'], 'Lenovo PB1-770(M|N|P)!': ['Lenovo', 'Phab Plus'], 'Lenovo PB2-670M': ['Lenovo', 'Phab 2 Plus'], - 'Lenovo X910': ['Lenovo', 'X910'] + 'Lenovo X910': ['Lenovo', 'X910'], }, A30t: ['Lenovo', 'A30'], @@ -8970,7 +8972,7 @@ exports.ANDROID_MODELS = { 'ideatv S31': ['Lenovo', 'IDEA TV', DeviceType.TELEVISION], 'ideatv S51': ['Lenovo', 'IDEA TV', DeviceType.TELEVISION], 'ideatv S52': ['Lenovo', 'IDEA TV', DeviceType.TELEVISION], - 'ideatv S61': ['Lenovo', 'IDEA TV', DeviceType.TELEVISION] + 'ideatv S61': ['Lenovo', 'IDEA TV', DeviceType.TELEVISION], }, 'LenovoTV 40S9': ['Lenovo', 'TV 40S9', DeviceType.TELEVISION], @@ -8999,7 +9001,7 @@ exports.ANDROID_MODELS = { 'lephone 2900': ['Lephone', '2900'], 'lephone T708': ['Lephone', 'T708'], 'Lephone TD506': ['Lephone', 'TD506'], - 'Lephone TD8208': ['Lephone', 'TD8208'] + 'Lephone TD8208': ['Lephone', 'TD8208'], }, TD506: ['Lephone', 'TD506'], @@ -9035,7 +9037,7 @@ exports.ANDROID_MODELS = { MFC175FR: ['Lexibook', 'Tablet Ultra', DeviceType.TABLET], MFC375FR: ['Lexibook', 'Tablet Ultra 2', DeviceType.TABLET], mfc500fr: ['Lexibook', 'Tablet XL', DeviceType.TABLET], - MFC045FR: ['Lexibook', 'TabTab', DeviceType.TABLET] + MFC045FR: ['Lexibook', 'TabTab', DeviceType.TABLET], }, 'Le Pan Mini': ['Le Pan', 'Mini', DeviceType.TABLET], @@ -9071,7 +9073,7 @@ exports.ANDROID_MODELS = { LGAS992: ['LG', 'G5'], 'LG-AS993': ['LG', 'G6'], LGAS995: ['LG', 'G Flex 2'], - 'LG-AS998': ['LG', 'V30'] + 'LG-AS998': ['LG', 'V30'], }, 'LG-?C[0-9]{3,3}!!': { @@ -9081,7 +9083,7 @@ exports.ANDROID_MODELS = { 'LG-C660!': ['LG', 'Optimus Pro'], 'LG-C710!': ['LG', 'Aloha'], 'LG-C729': ['LG', 'DoublePlay'], - 'LG-C800G': ['LG', 'Eclypse'] + 'LG-C800G': ['LG', 'Eclypse'], }, 'LG-CX670': ['LG', 'Optimus One'], @@ -9128,7 +9130,7 @@ exports.ANDROID_MODELS = { LGD850: ['LG', 'G3'], LGD855: ['LG', 'G3'], 'LG-D8(57)!': ['LG', 'Titan'], - 'LG-D9(50|51|55|56|58|59)!': ['LG', 'G Flex'] + 'LG-D9(50|51|55|56|58|59)!': ['LG', 'G Flex'], }, 'LG-DS1203': ['LG', 'G2'], @@ -9159,7 +9161,7 @@ exports.ANDROID_MODELS = { 'LG-E940!': ['LG', 'Optimus G Pro'], 'LG-E960!': ['LG', 'Nexus 4'], 'LG-E9(70|71|73|75|76|77|78|87)!': ['LG', 'Optimus G'], - 'LG-E9(80|81|85|86|88|89)!': ['LG', 'Optimus G Pro'] + 'LG-E9(80|81|85|86|88|89)!': ['LG', 'Optimus G Pro'], }, 'LG-F[0-9]{3,3}!!': { @@ -9207,7 +9209,7 @@ exports.ANDROID_MODELS = { 'LG-F750!': ['LG', 'X Power'], 'LG-F770!': ['LG', 'X5'], 'LG-F800!': ['LG', 'V20'], - 'LG-F820!': ['LG', 'U'] + 'LG-F820!': ['LG', 'U'], }, 'LG-FL40L!': ['LG', '070 Touch'], @@ -9243,7 +9245,7 @@ exports.ANDROID_MODELS = { 'LG-H9(50|55|59)!': ['LG', 'G Flex 2'], 'LG-H9(00|01|60|61|62|68)!': ['LG', 'V10'], 'LG-H9(30|31|32)!': ['LG', 'V30'], - 'LG-H9(90)!': ['LG', 'V20'] + 'LG-H9(90)!': ['LG', 'V20'], }, 'LG-K[0-9]{3,3}!!': { @@ -9261,7 +9263,7 @@ exports.ANDROID_MODELS = { 'LG-K5(40)!': ['LG', 'Stylo 2'], 'LG-K5(50|57)!': ['LG', 'Stylo 2 Plus'], 'LG-K5(80)!': ['LG', 'X Cam'], - 'LG-K6(00)!': ['LG', 'X Mach'] + 'LG-K6(00)!': ['LG', 'X Mach'], }, 'LG-KH5200': ['LG', 'Andro-1'], @@ -9272,7 +9274,7 @@ exports.ANDROID_MODELS = { 'LG-KU5400!': ['LG', 'PRADA 3.0'], 'LG-KU5900': ['LG', 'Optimus Black'], 'LG-KU6900': ['LG', 'Optimus Pad', DeviceType.TABLET], - 'LG-KU8800': ['LG', 'Optimus EX'] + 'LG-KU8800': ['LG', 'Optimus EX'], }, 'LG-?L[0-9]{2,3}[A-Z]!!': { @@ -9330,13 +9332,13 @@ exports.ANDROID_MODELS = { 'LG-L160L': ['LG', 'Optimus LTE2'], LGL163BL: ['LG', 'Fiesta 2'], LGL164VL: ['LG', 'Fiesta'], - 'LGL996L!': ['LG', 'G2'] + 'LGL996L!': ['LG', 'G2'], }, 'LG-LG[0-9]{3,3}!!': { 'LG-LG730': ['LG', 'Venice'], 'LG-LG855': ['LG', 'Marquee'], - 'LG-LG870': ['LG', 'Optimus F7'] + 'LG-LG870': ['LG', 'Optimus F7'], }, LGLK430: ['LG', 'G Pad F 7.0', DeviceType.TABLET], @@ -9380,7 +9382,7 @@ exports.ANDROID_MODELS = { LGLS996: ['LG', 'G Flex 2'], 'LG-LS996': ['LG', 'G Flex 2'], 'LG-LS997': ['LG', 'V20'], - 'LG-LS998': ['LG', 'V30+'] + 'LG-LS998': ['LG', 'V30+'], }, 'LG-LU[0-9]{4,4}!!': { @@ -9392,7 +9394,7 @@ exports.ANDROID_MODELS = { 'LG-LU6500': ['LG', 'Optimus Q2'], 'LG-LU6800': ['LG', 'Optimus Big'], 'LG-LU6900': ['LG', 'Optimus Pad', DeviceType.TABLET], - 'LG-LU8300': ['LG', 'Optimus Pad LTE', DeviceType.TABLET] + 'LG-LU8300': ['LG', 'Optimus Pad LTE', DeviceType.TABLET], }, 'LG-LW690': ['LG', 'Optimus C'], @@ -9414,7 +9416,7 @@ exports.ANDROID_MODELS = { 'LG-M4(30)!': ['LG', 'Stylo 3'], 'LG-M4(70)!': ['LG', 'Stylo 3 Plus'], 'LG-M7(00|03)!': ['LG', 'Q6'], - 'LG-M7(10)!': ['LG', 'X Venture'] + 'LG-M7(10)!': ['LG', 'X Venture'], }, 'LG-?MS[0-9]{3,3}!!': { @@ -9440,7 +9442,7 @@ exports.ANDROID_MODELS = { 'LG-MS840': ['LG', 'Connect 4G'], 'LG-MS870': ['LG', 'Spirit 4G'], 'LG-MS910': ['LG', 'Esteem'], - 'LG-MS695': ['LG', 'Optimus M+'] + 'LG-MS695': ['LG', 'Optimus M+'], }, LGMP260: ['LG', 'K20 Plus'], @@ -9480,7 +9482,7 @@ exports.ANDROID_MODELS = { 'LG-P451!': ['LG', 'G Pad IV 8.0', DeviceType.TABLET], 'LG-P530!': ['LG', 'G Pad IV 8.0', DeviceType.TABLET], 'LG-P755!': ['LG', 'G Pad III 10.1', DeviceType.TABLET], - 'LG-P815!': ['LG', 'G Pad II 8.3', DeviceType.TABLET] + 'LG-P815!': ['LG', 'G Pad II 8.3', DeviceType.TABLET], }, 'LG-Q710!': ['LG', 'Stylo 4'], @@ -9490,7 +9492,7 @@ exports.ANDROID_MODELS = { 'LG-SP[0-9]{3,3}!!': { 'LG-SP200': ['LG', 'Tribute Dynasty'], - 'LG-SP320': ['LG', 'X Charge'] + 'LG-SP320': ['LG', 'X Charge'], }, 'LG-SU[0-9]{3,3}!!': { @@ -9500,7 +9502,7 @@ exports.ANDROID_MODELS = { 'LG-SU660': ['LG', 'Optimus 2X'], 'LG-SU760': ['LG', 'Optimus 3D'], 'LG-SU870': ['LG', 'Optimus 3D Cube'], - 'LG-SU880': ['LG', 'Optimus EX'] + 'LG-SU880': ['LG', 'Optimus EX'], }, 'LG-T480!': ['LG', 'Wine Smart'], @@ -9535,7 +9537,7 @@ exports.ANDROID_MODELS = { 'LGUS995!': ['LG', 'G Flex 2'], 'LG-US996!': ['LG', 'V20'], 'LG-US997': ['LG', 'G6'], - 'LG-US998': ['LG', 'V30'] + 'LG-US998': ['LG', 'V30'], }, 'LG-V[0-9]{3,3}!!': { @@ -9555,27 +9557,27 @@ exports.ANDROID_MODELS = { 'LG-V9(00|01)!': ['LG', 'Optimus Pad', DeviceType.TABLET], 'LG-V9(05|09)!': ['LG', 'Optimus G-Slate', DeviceType.TABLET], 'LG-V930': ['LG', 'G Pad X 10.1', DeviceType.TABLET], - 'LG-V9(35|40)!': ['LG', 'G Pad II 10.1', DeviceType.TABLET] + 'LG-V9(35|40)!': ['LG', 'G Pad II 10.1', DeviceType.TABLET], }, 'LG-VK[0-9]{3,3}!!': { 'LG-VK410': ['LG', 'G Pad 7.0', DeviceType.TABLET], 'LG-VK700': ['LG', 'G Pad 10.1', DeviceType.TABLET], 'LG-VK810': ['LG', 'G Pad 8.3', DeviceType.TABLET], - 'LG-VK815': ['LG', 'G Pad X 8.3', DeviceType.TABLET] + 'LG-VK815': ['LG', 'G Pad X 8.3', DeviceType.TABLET], }, 'LG-VN[0-9]{3,3}!!': { 'LG-VN170': ['LG', 'VN-170'], // Unknown 'LG-VN280': ['LG', 'Extravert 2'], - 'LG-VN360': ['LG', 'Exalt'] + 'LG-VN360': ['LG', 'Exalt'], }, 'LG-VM[0-9]{3,3}!!': { 'LG-VM670': ['LG', 'Optimus V'], 'LG-VM696': ['LG', 'Optimus Elite'], 'LG-VM701': ['LG', 'Optimus Slider'], - 'LG-VM720': ['LG', 'Optimus F5'] + 'LG-VM720': ['LG', 'Optimus F5'], }, 'LG-VS[0-9]{3,3}!!': { @@ -9597,7 +9599,7 @@ exports.ANDROID_MODELS = { 'LG-VS980!': ['LG', 'G2'], 'LG-VS985': ['LG', 'G3'], 'LG-VS995': ['LG', 'V20'], - 'LG-VS999': ['LG', 'G4'] + 'LG-VS999': ['LG', 'G4'], }, 'LG-X[0-9]{3,3}!!': { @@ -9614,7 +9616,7 @@ exports.ANDROID_MODELS = { 'LG-X220!': ['LG', 'K5'], 'LG-X230!': ['LG', 'K7 2017'], 'LG-X240!': ['LG', 'K8 2017'], - 'LG-X760!': ['LG', 'G Pad III 10.1', DeviceType.TABLET] + 'LG-X760!': ['LG', 'G Pad III 10.1', DeviceType.TABLET], }, 'LGM-[GKVX][0-9]{3,3}!!': { @@ -9626,7 +9628,7 @@ exports.ANDROID_MODELS = { 'LGM-X320[KLS]!': ['LG', 'X500'], 'LGM-X401[S]!': ['LG', 'X401'], 'LGM-X600[KLS]!': ['LG', 'Q6'], - 'LGM-X800[KLS]!': ['LG', 'Q8'] + 'LGM-X800[KLS]!': ['LG', 'Q8'], }, 'LM-F100!': ['LG', 'Wing'], @@ -9704,7 +9706,7 @@ exports.ANDROID_MODELS = { LGT01: ['LG', 'G Pad 8.0 L LGT01', { carrier: 'J:COM' }, DeviceType.TABLET], LGT02: ['LG', 'G Pad 8.0 III LGT02', { carrier: 'J:COM' }, DeviceType.TABLET], LGT31: ['LG', 'Qua tab PX LGT31', { carrier: 'au' }, DeviceType.TABLET], - LGT32: ['LG', 'Qua tab PZ LGT32', { carrier: 'au' }, DeviceType.TABLET] + LGT32: ['LG', 'Qua tab PZ LGT32', { carrier: 'au' }, DeviceType.TABLET], }, LU2300: ['LG', 'Optimus Q'], @@ -9719,7 +9721,7 @@ exports.ANDROID_MODELS = { 'USCC-US760': ['LG', 'Genesis'], 'USCC-US780': ['LG', 'Optimus F7'], 'USCC-US855': ['LG', 'Optimus Black'], - 'USCC-LGUS990': ['LG', 'G3'] + 'USCC-LGUS990': ['LG', 'G3'], }, VK410: ['LG', 'G Pad 7.0', DeviceType.TABLET], @@ -9752,7 +9754,7 @@ exports.ANDROID_MODELS = { VS986: ['LG', 'G4'], VS987: ['LG', 'G5'], VS990: ['LG', 'V10'], - VS995: ['LG', 'V20'] + VS995: ['LG', 'V20'], }, 'L-0[0-9][A-Z]!!': { @@ -9773,12 +9775,12 @@ exports.ANDROID_MODELS = { 'L-06C': ['LG', 'Optimus Pad L-06C', DeviceType.TABLET, { carrier: 'DoCoMo' }], 'L-06D': ['LG', 'Optimus Vu L-06D', { carrier: 'DoCoMo' }], 'L-06DJOJO': ['LG', 'JOJO L-06D', { carrier: 'DoCoMo' }], - 'L-07C': ['LG', 'Optimus bright L-07C', { carrier: 'DoCoMo' }] + 'L-07C': ['LG', 'Optimus bright L-07C', { carrier: 'DoCoMo' }], }, '[0-9]0[0-9]LG!!': { '401LG': ['LG', '401LG', { carrier: 'Softbank' }], // Unknown - '402LG': ['LG', 'Spray 402LG', { carrier: 'Y! Mobile' }] + '402LG': ['LG', 'Spray 402LG', { carrier: 'Y! Mobile' }], }, 'DM-01G': ['LG', 'DM-01G', { carrier: 'Disney Mobile' }], @@ -9812,7 +9814,7 @@ exports.ANDROID_MODELS = { 'LG-OPTIMUS HD LTE': ['LG', 'Optimus HD'], 'LG-OPTIMUS LTE HD': ['LG', 'Optimus HD'], 'LG-Optimus Pad L-06C': ['LG', 'Optimus Pad', DeviceType.TABLET], - 'LG-vortex': ['LG', 'Vortex'] + 'LG-vortex': ['LG', 'Vortex'], }, Ally: ['LG', 'Ally'], @@ -9832,7 +9834,7 @@ exports.ANDROID_MODELS = { 'Optimus 4X HD': ['LG', 'Optimus 4X HD'], OptimusX4HD: ['LG', 'Optimus 4X HD'], Optimus4XHD: ['LG', 'Optimus 4X HD'], - Optimusx4: ['LG', 'Optimus X4'] + Optimusx4: ['LG', 'Optimus X4'], }, IS11LG: ['LG', 'Optimus X IS11LG', { carrier: 'au' }], @@ -9846,7 +9848,7 @@ exports.ANDROID_MODELS = { 'LG-Google TV G3': ['LG', 'Android TV', DeviceType.TELEVISION, Flag.GOOGLETV], 'LG-Google TV G3 KR': ['LG', 'Android TV', DeviceType.TELEVISION, Flag.GOOGLETV], 'LG-Google TV G3 TV': ['LG', 'Android TV', DeviceType.TELEVISION, Flag.GOOGLETV], - 'LG-Google TV G3 KR TV': ['LG', 'Android TV', DeviceType.TELEVISION, Flag.GOOGLETV] + 'LG-Google TV G3 KR TV': ['LG', 'Android TV', DeviceType.TELEVISION, Flag.GOOGLETV], }, 'LG-ANDROID MINI BOX': ['LG', 'Android Mini-Box', DeviceType.TELEVISION], @@ -9917,7 +9919,7 @@ exports.ANDROID_MODELS = { 'MALATA TD95': ['Malata', 'TD95'], 'MALATA S501': ['Malata', 'S501'], 'Malata SMBA1002': ['Malata', 'Tablet SMB-A1002', DeviceType.TABLET], - 'Malata SMBA9701': ['Malata', 'Tablet SMB-A9701', DeviceType.TABLET] + 'Malata SMBA9701': ['Malata', 'Tablet SMB-A9701', DeviceType.TABLET], }, T6: ['Malata', 'Zpad T6', DeviceType.TABLET], @@ -9933,7 +9935,7 @@ exports.ANDROID_MODELS = { MID802: ['Manta', 'Duo Power 8 HD', DeviceType.TABLET], MID9701: ['Manta', 'Duo Power 9.7', DeviceType.TABLET], MID9702: ['Manta', 'Duo Power 9.7 HD', DeviceType.TABLET], - MID1001: ['Manta', 'Power Tab 10.1 HD', DeviceType.TABLET] + MID1001: ['Manta', 'Power Tab 10.1 HD', DeviceType.TABLET], }, 'Masstel!!': { @@ -9951,7 +9953,7 @@ exports.ANDROID_MODELS = { 'Masstel Tab 740': ['Masstel', 'Tab 740', DeviceType.TABLET], 'Masstel Tab 750': ['Masstel', 'Tab 750', DeviceType.TABLET], 'Masstel Tab 840': ['Masstel', 'Tab 840', DeviceType.TABLET], - 'Masstel Tab 850': ['Masstel', 'Tab 850', DeviceType.TABLET] + 'Masstel Tab 850': ['Masstel', 'Tab 850', DeviceType.TABLET], }, 'MASTONE!!': { @@ -9960,7 +9962,7 @@ exports.ANDROID_MODELS = { 'MASTONE G9': ['Mastone', 'G9'], 'MASTONE G13': ['Mastone', 'G13'], 'MASTONE G15': ['Mastone', 'G15'], - 'MASTONE W16': ['Mastone', 'W16'] + 'MASTONE W16': ['Mastone', 'W16'], }, 'M-270': ['Maylong', 'M-270', DeviceType.TABLET], @@ -9971,14 +9973,14 @@ exports.ANDROID_MODELS = { 'Maxtron AMOR Ⅱ': ['Maxtron', 'Amor 2'], 'Maxtron Diamond': ['Maxtron', 'Diamond'], 'Maxtron Venus': ['Maxtron', 'Venus'], - 'Maxtron T1': ['Maxtron', 'T1', DeviceType.TABLET] + 'Maxtron T1': ['Maxtron', 'T1', DeviceType.TABLET], }, M785: ['Mecer', 'Xpress Smartlife M785', DeviceType.TABLET], '800P31C': ['Mecer', 'Xpress Smartlife 800P31C', DeviceType.TABLET], X1010: ['Mecer', 'X1010', DeviceType.TABLET], - 'M-PP!!': { + 'M\-PP!!': { 'M-PPxG400': ['Mediacom', 'PhonePad Duo G400'], 'M-PPAG500': ['Mediacom', 'PhonePad Duo G500'], 'M-PPBG500': ['Mediacom', 'PhonePad Duo G500'], @@ -10000,10 +10002,10 @@ exports.ANDROID_MODELS = { 'M-PP2S650C': ['Mediacom', 'PhonePad Duo S650'], 'M-PPAX470U': ['Mediacom', 'PhonePad Duo X470'], 'M PPAX510U': ['Mediacom', 'PhonePad Duo X510'], - 'M-PPxX520U': ['Mediacom', 'PhonePad Duo X520'] + 'M-PPxX520U': ['Mediacom', 'PhonePad Duo X520'], }, - 'M-MP!!': { + 'M\-MP!!': { 'M-MP5303G': ['Mediacom', 'SmartPad Mini Mobile', DeviceType.TABLET], 'M-MP705I': ['Mediacom', 'SmartPad 705i', DeviceType.TABLET], 'M-MP706I': ['Mediacom', 'SmartPad 706i', DeviceType.TABLET], @@ -10063,27 +10065,27 @@ exports.ANDROID_MODELS = { 'M-MP1S4B3G': ['Mediacom', 'SmartPad 10.1 S4', DeviceType.TABLET], 'M-MP10PA': ['Mediacom', 'SmartPad 10.1 HD Pro', DeviceType.TABLET], 'M-MP10PA3G': ['Mediacom', 'SmartPad 10.1 HD Pro', DeviceType.TABLET], - 'M-MPI7A3G': ['Mediacom', 'SmartPad i7', DeviceType.TABLET] + 'M-MPI7A3G': ['Mediacom', 'SmartPad i7', DeviceType.TABLET], }, - 'M-IPRO!!': { + 'M\-IPRO!!': { 'M-IPRO110B': ['Mediacom', 'SmartPad 8.0 HD iPro110', DeviceType.TABLET], 'M-IPRO800B': ['Mediacom', 'SmartPad 8.0 HD iPro800', DeviceType.TABLET], 'M-IPRO810B': ['Mediacom', 'SmartPad 8.0 HD iPro810', DeviceType.TABLET], - 'M-IPRO810W': ['Mediacom', 'SmartPad 8.0 HD iPro810', DeviceType.TABLET] + 'M-IPRO810W': ['Mediacom', 'SmartPad 8.0 HD iPro810', DeviceType.TABLET], }, 'MP[0-9]{3,3}C!!': { MP705C: ['Mediacom', 'SmartPad 705c', DeviceType.TABLET], MP810C: ['Mediacom', 'SmartPad 810c', DeviceType.TABLET], - MP907C: ['Mediacom', 'SmartPad 907c', DeviceType.TABLET] + MP907C: ['Mediacom', 'SmartPad 907c', DeviceType.TABLET], }, 'STM[0-9]{3,3}H!!': { STM712HCZ: ['Mediacom', 'SmartPad 712c', DeviceType.TABLET], STM722HC: ['Mediacom', 'SmartPad 722c', DeviceType.TABLET], STM722HCZ: ['Mediacom', 'SmartPad 722c', DeviceType.TABLET], - STM803HC: ['Mediacom', 'SmartPad 810c', DeviceType.TABLET] + STM803HC: ['Mediacom', 'SmartPad 810c', DeviceType.TABLET], }, 'SmartPad!!': { @@ -10096,7 +10098,7 @@ exports.ANDROID_MODELS = { SmartPad970s2: ['Mediacom', 'SmartPad 970 S2', DeviceType.TABLET], SmartPad970s23G: ['Mediacom', 'SmartPad 970 S2', DeviceType.TABLET], SmartPad1010i: ['Mediacom', 'SmartPad 1010i', DeviceType.TABLET], - 'SmartPad 85S23G': ['Mediacom', 'SmartPad 8.0 S2', DeviceType.TABLET] + 'SmartPad 85S23G': ['Mediacom', 'SmartPad 8.0 S2', DeviceType.TABLET], }, 'Mediacom 810C': ['Mediacom', 'SmartPad 810c', DeviceType.TABLET], @@ -10121,7 +10123,7 @@ exports.ANDROID_MODELS = { MT7013: ['Mediadroid', 'IMPERIUS EN3RGY'], MT7014: ['Mediadroid', 'IMPERIUS AERO SLIM'], MT7015: ['Mediadroid', 'IMPERIUS MINI'], - MT7017: ['Mediadroid', 'IMPERIUS ALPHA'] + MT7017: ['Mediadroid', 'IMPERIUS ALPHA'], }, MTK6516: ['Mediatek', 'MTK6516'], @@ -10178,7 +10180,7 @@ exports.ANDROID_MODELS = { 'MEDION X5004': ['Medion', 'X5004'], 'MEDION X5020': ['Medion', 'X5020'], 'LIFETAB P9514': ['Medion', 'Lifetab P9514', DeviceType.TABLET], - 'MD LIFETAB P9516': ['Medion', 'Lifetab P9516', DeviceType.TABLET] + 'MD LIFETAB P9516': ['Medion', 'Lifetab P9516', DeviceType.TABLET], }, B5532: ['Medion', 'B5532'], @@ -10200,7 +10202,7 @@ exports.ANDROID_MODELS = { 'MEEG 105S': ['MEEG', '105S'], 'MEEG 106': ['MEEG', '106'], 'MEEG 201': ['MEEG', '201'], - 'MEEG 210R': ['MEEG', '210R'] + 'MEEG 210R': ['MEEG', '210R'], }, 'MEIZU E3': ['Meizu', 'E3'], @@ -10264,12 +10266,12 @@ exports.ANDROID_MODELS = { 'meo smart a70': ['MEO', 'Smart A70'], 'MEO Smart A75': ['MEO', 'Smart A75'], 'MEO A75': ['MEO', 'Smart A75'], - 'MEO Smart A80': ['MEO', 'Smart A80'] + 'MEO Smart A80': ['MEO', 'Smart A80'], }, 'MEU AN!!': { 'MEU AN400': ['MEU', 'AN400'], - 'MEU AN500': ['MEU', 'AN500'] + 'MEU AN500': ['MEU', 'AN500'], }, 'Slidepad!!': { @@ -10281,7 +10283,7 @@ exports.ANDROID_MODELS = { 'SlidePad Elite 9708': ['Memup', 'Slidepad Elite 9708', DeviceType.TABLET], 'SlidePad Kids': ['Memup', 'Slidepad Kids', DeviceType.TABLET], 'SlidePad NG 116DC': ['Memup', 'Slidepad NG 116DC', DeviceType.TABLET], - 'SlidePad NG 704DC': ['Memup', 'Slidepad NG 704DC', DeviceType.TABLET] + 'SlidePad NG 704DC': ['Memup', 'Slidepad NG 704DC', DeviceType.TABLET], }, '704DC': ['Memup', 'Slidepad 704DC', DeviceType.TABLET], @@ -10511,7 +10513,7 @@ exports.ANDROID_MODELS = { 'Micromax Q4260': ['Micromax', 'Q4260 Canvas Evok Power'], 'Micromax S300': ['Micromax', 'S300 Bolt'], 'Micromax S301': ['Micromax', 'S301 Bolt'], - 'Micromax S302': ['Micromax', 'S302 Bolt'] + 'Micromax S302': ['Micromax', 'S302 Bolt'], }, A13: ['Micromax', 'A13'], @@ -10536,13 +10538,13 @@ exports.ANDROID_MODELS = { 'MLLED M7S': ['MLLED', 'M7S'], 'MLLED M8': ['MLLED', 'M8'], 'MLLED M8S': ['MLLED', 'M8S'], - 'MLLED X3S': ['MLLED', 'X3S'] + 'MLLED X3S': ['MLLED', 'X3S'], }, 'Mio!!': { 'MioCARE A105': ['Mitac', 'MioCARE A105'], 'MioCare 6119': ['Mitac', 'MioCARE 6119'], - 'MioPad 6': ['Mitac', 'MioPad 6', DeviceType.TABLET] + 'MioPad 6': ['Mitac', 'MioPad 6', DeviceType.TABLET], }, 'MITO!!': { @@ -10610,7 +10612,7 @@ exports.ANDROID_MODELS = { 'MITO T660': ['MITO', 'T660', DeviceType.TABLET], 'MITO T777': ['MITO', 'T777', DeviceType.TABLET], 'MITO T888': ['MITO', 'T888', DeviceType.TABLET], - 'MITO T979': ['MITO', 'T979', DeviceType.TABLET] + 'MITO T979': ['MITO', 'T979', DeviceType.TABLET], }, 'MIZ Z2': ['Miz', 'Z2'], @@ -10621,13 +10623,13 @@ exports.ANDROID_MODELS = { 'iQTalk King': ['MLS', 'iQTalk King'], iQTab: ['MLS', 'iQTab', DeviceType.TABLET], 'iQTab 3G': ['MLS', 'iQTab 3G', DeviceType.TABLET], - 'iQTab Astro 3G': ['MLS', 'iQTab Astro 3G', DeviceType.TABLET] + 'iQTab Astro 3G': ['MLS', 'iQTab Astro 3G', DeviceType.TABLET], }, 'Nova!!': { 'Nova A': ['Mobell', 'Nova A'], 'Nova E': ['Mobell', 'Nova E'], - 'Nova F': ['Mobell', 'Nova F'] + 'Nova F': ['Mobell', 'Nova F'], }, 'Mobiistar!!': { @@ -10663,7 +10665,7 @@ exports.ANDROID_MODELS = { 'mobiistar touch LAI 504': ['Mobiistar', 'Touch Lai 504'], 'mobiistar LAI 504m': ['Mobiistar', 'Touch Lai 504M'], 'mobiistar touch LAI 504Q': ['Mobiistar', 'Touch Lai 504Q'], - 'mobiistar touch LAI 512': ['Mobiistar', 'Touch Lai 512'] + 'mobiistar touch LAI 512': ['Mobiistar', 'Touch Lai 512'], }, 'BEAN 454': ['Mobiistar', 'Touch Bean 454'], @@ -10682,7 +10684,7 @@ exports.ANDROID_MODELS = { 'Cynus T5': ['Mobistel', 'Cynus T5'], 'Cynus T6': ['Mobistel', 'Cynus T6'], 'Cynus T7': ['Mobistel', 'Cynus T7'], - 'Cynus T8': ['Mobistel', 'Cynus T8'] + 'Cynus T8': ['Mobistel', 'Cynus T8'], }, 'MOCHE SMART A16': ['Moche', 'Smart A16'], @@ -10712,14 +10714,14 @@ exports.ANDROID_MODELS = { 'FreeTAB 9702 HD X2': ['Modecom', 'FreeTAB 9702 HD X2', DeviceType.TABLET], 'FreeTAB 9702 HD X4': ['Modecom', 'FreeTAB 9702 HD X4', DeviceType.TABLET], 'MODECOM FreeTAB 9702 IPS X2': ['Modecom', 'FreeTAB 9702 IPS X2', DeviceType.TABLET], - 'FreeTAB 9704 IPS2 X4': ['Modecom', 'FreeTAB 9704 IPS2 X4', DeviceType.TABLET] + 'FreeTAB 9704 IPS2 X4': ['Modecom', 'FreeTAB 9704 IPS2 X4', DeviceType.TABLET], }, 'MOGU!!': { 'MOGU-M0': ['Mogu', 'M0'], 'MOGU M2': ['Mogu', 'M2'], 'MOGU M2 ROM': ['Mogu', 'M2'], - 'MOGU-M2': ['Mogu', 'M2'] + 'MOGU-M2': ['Mogu', 'M2'], }, 'moii!!': { @@ -10729,7 +10731,7 @@ exports.ANDROID_MODELS = { 'Moii E801': ['moii', 'E801'], 'moii E893': ['moii', 'E893'], 'Moii E990': ['moii', 'E990'], - 'moii E996': ['moii', 'E996'] + 'moii E996': ['moii', 'E996'], }, AT735: ['Moinstone', 'AT735', DeviceType.TABLET], @@ -10762,7 +10764,7 @@ exports.ANDROID_MODELS = { 'MB8(60|61)!': ['Motorola', 'ATRIX'], MB865: ['Motorola', 'ATRIX 2'], MB870: ['Motorola', 'Droid X2'], - MB886: ['Motorola', 'DINARA'] + MB886: ['Motorola', 'DINARA'], }, 'ME[0-9]{3,3}!!': { @@ -10778,7 +10780,7 @@ exports.ANDROID_MODELS = { ME811: ['Motorola', 'Droid X'], ME860: ['Motorola', 'ATRIX'], ME863: ['Motorola', 'Milestone 3'], - ME865: ['Motorola', 'ATRIX 2'] + ME865: ['Motorola', 'ATRIX 2'], }, 'MT[0-9]{3,3}!!': { @@ -10789,7 +10791,7 @@ exports.ANDROID_MODELS = { MT810: ['Motorola', 'MOTO MT810'], MT870: ['Motorola', 'MOTO MT870'], MT887: ['Motorola', 'RAZR V'], - MT917: ['Motorola', 'MT917'] + MT917: ['Motorola', 'MT917'], }, 'MZ[0-9]{3,3}!!': { @@ -10806,13 +10808,13 @@ exports.ANDROID_MODELS = { 'MZ609!': ['Motorola', 'Droid XYBOARD 8.2', DeviceType.TABLET], MZ615: ['Motorola', 'XOOM 2 WiFi', DeviceType.TABLET], MZ616: ['Motorola', 'XOOM 2 3G', DeviceType.TABLET], - 'MZ617!': ['Motorola', 'Droid XYBOARD 10.1', DeviceType.TABLET] + 'MZ617!': ['Motorola', 'Droid XYBOARD 10.1', DeviceType.TABLET], }, 'WX[0-9]{3,3}!!': { WX435: ['Motorola', 'TRIUMPH WX435'], WX442: ['Motorola', 'CITRUS WX442'], - WX445: ['Motorola', 'CITRUS WX445'] + WX445: ['Motorola', 'CITRUS WX445'], }, 'XT[0-9]{3,4}!!': { @@ -10921,7 +10923,7 @@ exports.ANDROID_MODELS = { 'XT17(90)!': ['Motorola', 'Moto G5S'], 'XT18(02)!': ['Motorola', 'Moto G5S Plus TV'], 'XT18(05|06)!': ['Motorola', 'Moto G5S Plus'], - 'XT19(02)!': ['Lenovo', 'K8 Note'] + 'XT19(02)!': ['Lenovo', 'K8 Note'], }, 'motorola one': ['Motorola', 'One'], @@ -10992,7 +10994,7 @@ exports.ANDROID_MODELS = { 'Moto C': ['Motorola', 'Moto C'], 'Moto C Plus': ['Motorola', 'Moto C Plus'], '(Moto)?E2$!': ['Motorola', 'Moto E (2015)'], - '(Moto)?E2(4G-LTE)$!': ['Motorola', 'Moto E (2015)'], + '(Moto)?E2\(4G-LTE\)$!': ['Motorola', 'Moto E (2015)'], surnia: ['Motorola', 'Moto E (2015)'], 'Motorola MotoE2!': ['Motorola', 'Moto E2'], 'Moto E4': ['Motorola', 'Moto E4'], @@ -11166,7 +11168,7 @@ exports.ANDROID_MODELS = { 'M4 SS4450': ['M4Tel', 'SS4450'], 'M4 SS4451': ['M4Tel', 'SS4451'], 'M4 SS4452': ['M4Tel', 'SS4452'], - 'M4 SS4456': ['M4Tel', 'SS4456'] + 'M4 SS4456': ['M4Tel', 'SS4456'], }, 'MyPhone A818g Duo': ['MyPhone', 'A818g Duo'], @@ -11230,14 +11232,14 @@ exports.ANDROID_MODELS = { 'MySAGA C1': ['Mysaga', 'C1'], 'MY SAGA C2': ['Mysaga', 'C2'], 'MY SAGA C3': ['Mysaga', 'C3'], - 'MYSAGA M1': ['Mysaga', 'M1'] + 'MYSAGA M1': ['Mysaga', 'M1'], }, - 'M.T.T.!!': { + 'M\.T\.T\.!!': { 'M.T.T. SmartFun': ['M.T.T.', 'Smart Fun'], 'M.T.T.SmartMax': ['M.T.T.', 'Smart Max'], 'M.T.T. Smart Multimedia': ['M.T.T.', 'Smart Multimedia'], - 'M.T.T. Tablet': ['M.T.T.', 'Tablet', DeviceType.TABLET] + 'M.T.T. Tablet': ['M.T.T.', 'Tablet', DeviceType.TABLET], }, 'iQ7 8GB': ['Navon', 'IQ7', DeviceType.TABLET], @@ -11286,7 +11288,7 @@ exports.ANDROID_MODELS = { 'N-06D': ['NEC', 'MEDIAS Tab N-06D', DeviceType.TABLET, { carrier: 'DoCoMo' }], 'N-06E': ['NEC', 'MEDIAS X N-06E', { carrier: 'DoCoMo' }], 'N-07D': ['NEC', 'MEDIAS X N-07D', { carrier: 'DoCoMo' }], - 'N-08D': ['NEC', 'MEDIAS Tab UL N-08D', DeviceType.TABLET, { carrier: 'DoCoMo' }] + 'N-08D': ['NEC', 'MEDIAS Tab UL N-08D', DeviceType.TABLET, { carrier: 'DoCoMo' }], }, 'NEC-0912': ['NEC', 'MEDIAS U N-02E', { carrier: 'DoCoMo' }], @@ -11310,7 +11312,7 @@ exports.ANDROID_MODELS = { 'LaVieTab PC-TE510N1B': ['NEC', 'LaVie Tab E TE510', DeviceType.TABLET], 'LaVieTab PC-TE510S1': ['NEC', 'LaVie Tab E TE510', DeviceType.TABLET], 'LaVieTab TE510S1': ['NEC', 'LaVie Tab E TE510', DeviceType.TABLET], - 'LaVieTab PC-TS507N1S': ['NEC', 'LaVie Tab S TS507', DeviceType.TABLET] + 'LaVieTab PC-TS507N1S': ['NEC', 'LaVie Tab S TS507', DeviceType.TABLET], }, 'PC-TE307N1W': ['NEC', 'LaVie Tab E TE307', DeviceType.TABLET], @@ -11329,7 +11331,7 @@ exports.ANDROID_MODELS = { 'neken!!': { 'neken N5': ['Neken', 'N5'], 'neken N6': ['Neken', 'N6'], - 'neken NX': ['Neken', 'NX'] + 'neken NX': ['Neken', 'NX'], }, GTV100: ['NETGEAR', 'NeoTV Prime', DeviceType.TELEVISION, Flag.GOOGLETV], @@ -11337,7 +11339,7 @@ exports.ANDROID_MODELS = { 'NEO!!': { 'NEO N01': ['NEO', 'N01'], 'NEO N002': ['NEO', 'N002'], - 'NEO N002i': ['NEO', 'N002i'] + 'NEO N002i': ['NEO', 'N002i'], }, 'ARA YS608': ['NESO', 'ARA YS608'], @@ -11348,7 +11350,7 @@ exports.ANDROID_MODELS = { 'NX-A890': ['Nexian', 'Journey'], 'NX-A891': ['Nexian', 'Ultra Journey'], 'NX-A895': ['Nexian', 'Cosmo Journey'], - 'NX-A899': ['Nexian', 'Xtreme'] + 'NX-A899': ['Nexian', 'Xtreme'], }, NXA8QC116: ['Nextbook', 'Ares 8', DeviceType.TABLET], @@ -11463,7 +11465,7 @@ exports.ANDROID_MODELS = { 'NOAIN A900': ['Noain', 'A900'], 'NOAIN A900S': ['Noain', 'A900S'], 'NOAIN A903': ['Noain', 'A903'], - 'NOAIN A918': ['Noain', 'A918'] + 'NOAIN A918': ['Noain', 'A918'], }, 'NBX-T7013N': ['Noblex', 'T7013N', DeviceType.TABLET], @@ -11529,20 +11531,20 @@ exports.ANDROID_MODELS = { 'Tegra Note 7': ['Nvidia', 'Tegra Note 7', DeviceType.TABLET], 'Tegra Note 8': ['Nvidia', 'Tegra Note 8', DeviceType.TABLET], 'TegraNote-Premium': ['Nvidia', 'Tegra Note Premium', DeviceType.TABLET], - 'TegraNote-P1640': ['Nvidia', 'Tegra Note P1640', DeviceType.TABLET] + 'TegraNote-P1640': ['Nvidia', 'Tegra Note P1640', DeviceType.TABLET], }, 'NYX!!': { 'NYX FLY': ['NYX Mobile', 'Fly'], 'NYX FLY II': ['NYX Mobile', 'Fly II'], 'NYX NOBA II': ['NYX Mobile', 'Noba II'], - 'NYX ZEUZ HD': ['NYX Mobile', 'Zeuz HD'] + 'NYX ZEUZ HD': ['NYX Mobile', 'Zeuz HD'], }, JOIN: ['NYX Mobile', 'Join'], Orbis: ['NYX Mobile', 'Orbis'], - 'O+!!': { + 'O\+!!': { 'O+8.1Android': ['O+', '8.1'], 'O+ 8.12 Android': ['O+', '8.12'], 'O+ 8.15 Android': ['O+', '8.15'], @@ -11574,7 +11576,7 @@ exports.ANDROID_MODELS = { 'O+ FAB ELITE': ['O+', 'Fab Elite'], 'O+ Grande': ['O+', 'Grande'], 'O+ Ultra': ['O+', 'Ultra'], - 'O+ TABLET': ['O+', 'Tablet', DeviceType.TABLET] + 'O+ TABLET': ['O+', 'Tablet', DeviceType.TABLET], }, EFM710A: ['Oblio', 'Mint 7x', DeviceType.TABLET], @@ -11890,7 +11892,7 @@ exports.ANDROID_MODELS = { 'Oppo R831 Limited Edition': ['Oppo', 'Neo R831'], R831K: ['Oppo', 'Real 20 R831K'], R831L: ['Oppo', 'Neo 5 R831L'], - '1201': ['Oppo', 'Neo 5 R831L'], + 1201: ['Oppo', 'Neo 5 R831L'], R831T: ['Oppo', 'Neo R831T'], R831S: ['Oppo', 'R831S'], R831: ['Oppo', 'Neo R831'], @@ -12007,11 +12009,11 @@ exports.ANDROID_MODELS = { CPH1861: ['Oppo', 'Realme 1'], W8: ['Oppo', 'W8'], 'OB-OPPO 1105': ['Oppo', '1105'], - '1105': ['Oppo', '1105'], - '1107': ['Oppo', '1107'], + 1105: ['Oppo', '1105'], + 1107: ['Oppo', '1107'], 'OB-OPPO 3005': ['Oppo', '3005'], - '3007': ['Oppo', '3007'], - '6607': ['Oppo', 'U3'], + 3007: ['Oppo', '3007'], + 6607: ['Oppo', 'U3'], PAFM00: ['Oppo', 'Find X'], 'OPPO PAFM00': ['Oppo', 'Find X'], PAHM00: ['Oppo', 'Find X'], @@ -12039,7 +12041,7 @@ exports.ANDROID_MODELS = { 'OPSSON IVO6655': ['Opsson', 'IVO 6655'], 'OPSSON IVO6666': ['Opsson', 'IVO 6666'], 'OPSSON IVO 6677': ['Opsson', 'IVO 6677'], - 'OPSSON IVO 8800': ['Opsson', 'IVO 8800'] + 'OPSSON IVO 8800': ['Opsson', 'IVO 8800'], }, 'OP0118-12': ['Oregon Scientific', 'Meep!', DeviceType.TABLET], @@ -12075,7 +12077,7 @@ exports.ANDROID_MODELS = { 'OV-Vertis-01': ['Overmax', 'Vertis 01'], 'OV-Vertis-02': ['Overmax', 'Vertis 02'], 'Vertis Expi': ['Overmax', 'Vertis Expi'], - 'Vertis Famy': ['Overmax', 'Vertis Famy'] + 'Vertis Famy': ['Overmax', 'Vertis Famy'], }, OV10274G: ['Overmax', '1027'], @@ -12102,7 +12104,7 @@ exports.ANDROID_MODELS = { 'P-06D': ['Panasonic', 'ELUGA V P-06D', { carrier: 'DoCoMo' }], 'P-07C': ['Panasonic', 'P-07C', { carrier: 'DoCoMo' }], 'P-07D': ['Panasonic', 'ELUGA power P-07D', { carrier: 'DoCoMo' }], - 'P-08D': ['Panasonic', 'ELUGA Live P-08D', DeviceType.TABLET, { carrier: 'DoCoMo' }] + 'P-08D': ['Panasonic', 'ELUGA Live P-08D', DeviceType.TABLET, { carrier: 'DoCoMo' }], }, '003P': ['Panasonic', 'Sweety 003P', { carrier: 'Softbank' }], @@ -12167,7 +12169,7 @@ exports.ANDROID_MODELS = { 'Panasonic SV-MV100': ['Panasonic', 'SV-MV100', DeviceType.MEDIA], 'Panasonic UN-MT300': ['Panasonic', 'UN-MT300', DeviceType.MEDIA], 'Panasonic UN-W700': ['Panasonic', 'Multimedia System UN-W700', DeviceType.MEDIA], - 'Panasonic UT-PB1': ['Panasonic', 'Raboo UT-PB1', DeviceType.EREADER] + 'Panasonic UT-PB1': ['Panasonic', 'Raboo UT-PB1', DeviceType.EREADER], }, 'Eluga A2': ['Panasonic', 'Eluga A2'], @@ -12246,7 +12248,7 @@ exports.ANDROID_MODELS = { 'IM-A910!': ['Pantech', 'Vega Iron 2'], 'IM-A920!': ['Pantech', 'IM-A920'], 'IM-A930!': ['Pantech', 'IM-A930'], - 'IM-T100K': ['Pantech', 'Vega N˚ 5', DeviceType.TABLET] + 'IM-T100K': ['Pantech', 'Vega N˚ 5', DeviceType.TABLET], }, 'IM-100K': ['Pantech', 'I`m back'], @@ -12266,7 +12268,7 @@ exports.ANDROID_MODELS = { 'PantechP8010!': ['Pantech', 'Flex'], 'PantechP9060!': ['Pantech', 'Pocket'], 'PantechP9070!': ['Pantech', 'Burst'], - 'PantechP9090!': ['Pantech', 'Magnus'] + 'PantechP9090!': ['Pantech', 'Magnus'], }, IS06: ['Pantech', 'SIRIUS α IS06', { carrier: 'au' }], @@ -12300,7 +12302,7 @@ exports.ANDROID_MODELS = { 'Penta WS707C': ['Penta', 'T-Pad WS707C', DeviceType.TABLET], 'Penta WS802C': ['Penta', 'T-Pad WS802C', DeviceType.TABLET], 'Penta WS907Q': ['Penta', 'T-Pad WS907Q', DeviceType.TABLET], - 'Penta PS650': ['Penta', 'PS650', DeviceType.TABLET] + 'Penta PS650': ['Penta', 'PS650', DeviceType.TABLET], }, IS703C: ['Penta', 'T-Pad IS703C', DeviceType.TABLET], @@ -12313,7 +12315,7 @@ exports.ANDROID_MODELS = { 'PENTAGRAM TAB 7.3': ['Pentagram', 'Tab 7.3', DeviceType.TABLET], 'PENTAGRAM TAB 7.5': ['Pentagram', 'Tab 7.5', DeviceType.TABLET], 'PentagramTAB7.6': ['Pentagram', 'Tab 7.6', DeviceType.TABLET], - 'PENTAGRAM TAB Quadra 9.7': ['Pentagram', 'Quadra 9.7', DeviceType.TABLET] + 'PENTAGRAM TAB Quadra 9.7': ['Pentagram', 'Quadra 9.7', DeviceType.TABLET], }, 'PHICOMM!!': { @@ -12340,7 +12342,7 @@ exports.ANDROID_MODELS = { 'PHICOMM X100wEU': ['Phicomm', 'X100w'], 'PHICOMM X130v': ['Phicomm', 'X130v'], 'PHICOMM X130va': ['Phicomm', 'X130va'], - 'PHICOMM X130wEU': ['Phicomm', 'X130W'] + 'PHICOMM X130wEU': ['Phicomm', 'X130W'], }, 'FWS[0-9]{3,3}!!': { @@ -12349,7 +12351,7 @@ exports.ANDROID_MODELS = { FWS710: ['Phicomm', 'FWS710'], FWS710EU: ['Phicomm', 'FWS710'], FWS710a: ['Phicomm', 'FWS710'], - FWS810: ['Phicomm', 'FWS810'] + FWS810: ['Phicomm', 'FWS810'], }, i803w: ['Phicomm', 'i803w'], @@ -12451,7 +12453,7 @@ exports.ANDROID_MODELS = { 'PNR-Pioneer E81c': ['Pioneer', 'E81c'], 'Pioneer E90w': ['Pioneer', 'E90w'], 'Pioneer P81': ['Pioneer', 'P81'], - 'Pioneer S90w': ['Pioneer', 'S90w'] + 'Pioneer S90w': ['Pioneer', 'S90w'], }, E60w: ['Pioneer', 'E60w'], @@ -12473,7 +12475,7 @@ exports.ANDROID_MODELS = { 'PIRANHA Ultra Tab Zeus White 10.1': ['Piranha', 'Ultra Tab 10.1', DeviceType.TABLET], 'PIRANHA ULTRA TAB 10.1"': ['Piranha', 'Ultra Tab 10.1', DeviceType.TABLET], 'PIRANHA ULTRA II TAB 7': ['Piranha', 'Ultra II Tab 7.0', DeviceType.TABLET], - 'PIRANHA Ultra II TAB 9.0': ['Piranha', 'Ultra II Tab 9.0', DeviceType.TABLET] + 'PIRANHA Ultra II TAB 9.0': ['Piranha', 'Ultra II Tab 9.0', DeviceType.TABLET], }, 'PGM 398': ['Pixcom', 'PGM 398'], @@ -12517,7 +12519,7 @@ exports.ANDROID_MODELS = { MOMO19HD: ['Ployer', 'MOMO19 HD', DeviceType.TABLET], MOMO20: ['Ployer', 'MOMO20', DeviceType.TABLET], 'MOMO20-AU': ['Ployer', 'MOMO20', DeviceType.TABLET], - MOMO20S: ['Ployer', 'MOMO20', DeviceType.TABLET] + MOMO20S: ['Ployer', 'MOMO20', DeviceType.TABLET], }, 'PocketBook A7': ['PocketBook', 'A7', DeviceType.TABLET], @@ -12603,7 +12605,7 @@ exports.ANDROID_MODELS = { MIDC901: ['Polaroid', 'MIDC901', DeviceType.TABLET], MIDC970: ['Polaroid', 'MIDC970', DeviceType.TABLET], MIDCD10: ['Polaroid', 'MIDCD10', DeviceType.TABLET], - MIDCD97: ['Polaroid', 'MIDCD97', DeviceType.TABLET] + MIDCD97: ['Polaroid', 'MIDCD97', DeviceType.TABLET], }, 'PMID!!': { @@ -12634,7 +12636,7 @@ exports.ANDROID_MODELS = { 'PMID-1000DC': ['Polaroid', 'PMID 1000dc', DeviceType.TABLET], 'PMID1000!': ['Polaroid', 'PMID 1000', DeviceType.TABLET], PMID4311: ['Polaroid', 'PMID 4311', DeviceType.TABLET], - PMID4312: ['Polaroid', 'PMID 4312', DeviceType.TABLET] + PMID4312: ['Polaroid', 'PMID 4312', DeviceType.TABLET], }, PSPT350: ['Polaroid', 'PSPT350'], @@ -12650,7 +12652,7 @@ exports.ANDROID_MODELS = { 'PROV!!': { PROV350: ['Polaroid', 'PROV350'], - PROV400: ['Polaroid', 'PROV400'] + PROV400: ['Polaroid', 'PROV400'], }, 'PRO!!': { @@ -12659,7 +12661,7 @@ exports.ANDROID_MODELS = { PRO4006: ['Polaroid', 'PRO4006'], PRO4611PR201: ['Polaroid', 'PRO4611'], PRO5701: ['Polaroid', 'PRO5701'], - PRO7111: ['Polaroid', 'PRO7111'] + PRO7111: ['Polaroid', 'PRO7111'], }, 'POLY ?PAD!!': { @@ -12667,7 +12669,7 @@ exports.ANDROID_MODELS = { 'POLY PAD 8216HD': ['Polypad', '8216 HD', DeviceType.TABLET], 'POLY PAD 9708HD': ['Polypad', '9708 HD', DeviceType.TABLET], 'POLY PAD 9716HD': ['Polypad', '9716 HD', DeviceType.TABLET], - 'Polypad C508': ['Polypad', 'C508', DeviceType.TABLET] + 'Polypad C508': ['Polypad', 'C508', DeviceType.TABLET], }, 'POLYTRON!!': { @@ -12703,7 +12705,7 @@ exports.ANDROID_MODELS = { 'POLYTRON W8470': ['Polytron', 'W8470 Wizard Quadra HD'], 'POLYTRON 4G450': ['Polytron', '4G450 Zap 5'], 'POLYTRON 4G501': ['Polytron', '4G501 Zap 6 Posh'], - 'POLYTRON 4G551': ['Polytron', '4G551 Zap 6 Posh Note'] + 'POLYTRON 4G551': ['Polytron', '4G551 Zap 6 Posh Note'], }, 'POMP!!': { @@ -12715,7 +12717,7 @@ exports.ANDROID_MODELS = { 'POMP W89': ['POMP', 'W89'], 'POMP-W89': ['POMP', 'W89'], 'POMP W99': ['POMP', 'W99'], - 'POMP W99A': ['POMP', 'W99A'] + 'POMP W99A': ['POMP', 'W99A'], }, ACT2000: ['Poptronix', 'ACT2000', DeviceType.TABLET], @@ -12723,7 +12725,7 @@ exports.ANDROID_MODELS = { 'Air!!': { 'Air 7.85 3G': ['Roverpad', 'Air 7.85 3G', DeviceType.TABLET], 'Air 10.1 3G': ['Roverpad', 'Air 10.1 3G', DeviceType.TABLET], - 'Air S70': ['Roverpad', 'Air S70', DeviceType.TABLET] + 'Air S70': ['Roverpad', 'Air S70', DeviceType.TABLET], }, 'PMP[0-9]{4,4}!!': { @@ -12790,7 +12792,7 @@ exports.ANDROID_MODELS = { 'PMP7280C3G DUO': ['Prestigio', 'Multipad 2 Ultra Duo 8.0 3G', DeviceType.TABLET], 'PMP7280C3G QUAD': ['Prestigio', 'Multipad 4 Ultra Quad 8.0 3G', DeviceType.TABLET], PMP7380D3G: ['Prestigio', 'Multipad 2 Pro Duo 8.0 3G', DeviceType.TABLET], - 'PMP7380D3G QUAD': ['Prestigio', 'Multipad 2 Pro Quad 8.0 3G', DeviceType.TABLET] + 'PMP7380D3G QUAD': ['Prestigio', 'Multipad 2 Pro Quad 8.0 3G', DeviceType.TABLET], }, 'PMT[0-9]{4,4}!!': { @@ -12832,7 +12834,7 @@ exports.ANDROID_MODELS = { 'PMT7077 3G': ['Prestigio', 'Multipad 4 Diamond 7.85 3G', DeviceType.TABLET], 'PMT7177 3G': ['Prestigio', 'Multipad 4 Diamond 10.1 3G', DeviceType.TABLET], 'PMT7287 3G': ['Prestigio', 'Multipad 4 Ultra Quad 8.0 3G', DeviceType.TABLET], - 'PMT7787 3G': ['Prestigio', 'Multipad Thunder 8.0i', DeviceType.TABLET] + 'PMT7787 3G': ['Prestigio', 'Multipad Thunder 8.0i', DeviceType.TABLET], }, 'PAP[0-9]{4,4}!!': { @@ -12865,7 +12867,7 @@ exports.ANDROID_MODELS = { PAP5503: ['Prestigio', 'Multiphone 5503'], PAP5503DUO: ['Prestigio', 'Multiphone 5503 Duo'], PAP7500: ['Prestigio', 'Multiphone 7500'], - PAP7600DUO: ['Prestigio', 'Multiphone 7600 Duo'] + PAP7600DUO: ['Prestigio', 'Multiphone 7600 Duo'], }, 'PSP[0-9]{4,4}!!': { @@ -12898,7 +12900,7 @@ exports.ANDROID_MODELS = { PSP5517DUO: ['Prestigio', 'Multiphone 5517 Duo'], PSP5550DUO: ['Prestigio', 'Multiphone 5550 Duo'], PSP7505DUO: ['Prestigio', 'Multiphone Grace X7'], - PSP7557: ['Prestigio', 'Multiphone 7557 Grace'] + PSP7557: ['Prestigio', 'Multiphone 7557 Grace'], }, 'Prestigio PAP5000TDUO': ['Prestigio', 'Multiphone 5000 Duo'], @@ -12909,7 +12911,7 @@ exports.ANDROID_MODELS = { 'MD-[0-9]{4,4}!!': { 'MD-0651': ['Prolink', 'MD-0651', DeviceType.TABLET], 'MD-0696B': ['Prolink', 'MD-0696B', DeviceType.TABLET], - 'MD-0697': ['Prolink', 'MD-0697', DeviceType.TABLET] + 'MD-0697': ['Prolink', 'MD-0697', DeviceType.TABLET], }, 'PLT!!': { @@ -12940,7 +12942,7 @@ exports.ANDROID_MODELS = { PLT9045K: ['Proscan', 'PLT9045K', DeviceType.TABLET], 'PLT9045K-BLACK': ['Proscan', 'PLT9045K', DeviceType.TABLET], PLT9602G: ['Proscan', 'PLT9602G', DeviceType.TABLET], - PLT9606G: ['Proscan', 'PLT9606G', DeviceType.TABLET] + PLT9606G: ['Proscan', 'PLT9606G', DeviceType.TABLET], }, 'Positivo Mini': ['Positivo', 'Mini', DeviceType.TABLET], @@ -13036,12 +13038,12 @@ exports.ANDROID_MODELS = { 'Q-Wave71N': ['Quantum', 'Q-Wave 71N', DeviceType.TABLET], 'Q-Wave781N': ['Quantum', 'Q-Wave 781N', DeviceType.TABLET], 'Q-WaveA101': ['Quantum', 'Q-Wave A101', DeviceType.TABLET], - 'Q-Wave L70N': ['Quantum', 'Q-Wave L70N', DeviceType.TABLET] + 'Q-Wave L70N': ['Quantum', 'Q-Wave L70N', DeviceType.TABLET], }, 'Quechua Phone 5': ['Quechua', 'Phone 5'], - 'QUBE[ -](B[0-9]S?+?)!': ['Qube', '$1'], + 'QUBE[ -](B[0-9]S?\+?)!': ['Qube', '$1'], 'QUBE[ -](T[0-9])!': ['Qube', '$1', DeviceType.TABLET], 'QUMO[ -]QUEST[ -]?([0-9]+i?)!': ['QUMO', 'Quest $1'], 'QUMO Altair ([0-9]+i?)!': ['QUMO', 'Altair $1', DeviceType.TABLET], @@ -13058,7 +13060,7 @@ exports.ANDROID_MODELS = { 'QW TB-1380QHD': ['Qware', 'Pro5 QHD 8.0', DeviceType.TABLET], 'QW TB-9718QHD': ['Qware', 'Pro5 QHD 9.7', DeviceType.TABLET], 'QW TB-1517': ['Qware', 'Tabby', DeviceType.TABLET], - 'QW TB-1517D': ['Qware', 'Tabby2', DeviceType.TABLET] + 'QW TB-1517D': ['Qware', 'Tabby2', DeviceType.TABLET], }, 'ramos i7s ': ['Ramos', 'I7s', DeviceType.TABLET], @@ -13112,14 +13114,14 @@ exports.ANDROID_MODELS = { 'Rayhov!!': { 'Rayhov X3': ['Rayhov', 'X3'], 'Rayhov X6': ['Rayhov', 'X6'], - 'Rayhov X9': ['Rayhov', 'X9'] + 'Rayhov X9': ['Rayhov', 'X9'], }, 'Readboy!!': { 'Readboy G12': ['Readboy', 'G12', DeviceType.TABLET], 'Readboy G18': ['Readboy', 'G18', DeviceType.TABLET], 'Readboy G50': ['Readboy', 'G50', DeviceType.TABLET], - 'Readboy G100': ['Readboy', 'G100', DeviceType.TABLET] + 'Readboy G100': ['Readboy', 'G100', DeviceType.TABLET], }, ReederA8R: ['Reeder', 'A8R', DeviceType.TABLET], @@ -13175,7 +13177,7 @@ exports.ANDROID_MODELS = { RMP400: ['Ritmix', 'RMP-400', DeviceType.TABLET], 'RMP-450': ['Ritmix', 'RMP-450', DeviceType.TABLET], 'RMP-530': ['Ritmix', 'RMP-530', DeviceType.TABLET], - 'RMP-600': ['Ritmix', 'RMP-600', DeviceType.TABLET] + 'RMP-600': ['Ritmix', 'RMP-600', DeviceType.TABLET], }, '(?:RIVO )?RHYTHM RX ?([0-9]+)!': ['Rivo', 'Rhythm RX$1'], @@ -13183,7 +13185,7 @@ exports.ANDROID_MODELS = { 'RMD-[0-9]{2,3}G!!': { 'RMD-73G': ['Ross&Moor', 'RMD-73G', DeviceType.TABLET], 'RMD-917G': ['Ross&Moor', 'RMD-917G', DeviceType.TABLET], - 'RMD-973G': ['Ross&Moor', 'RMD-973G', DeviceType.TABLET] + 'RMD-973G': ['Ross&Moor', 'RMD-973G', DeviceType.TABLET], }, 'RoverPad 3W T71D': ['RoverPad', '3W T71D', DeviceType.TABLET], @@ -13194,7 +13196,7 @@ exports.ANDROID_MODELS = { 'Snexian!!': { 'Snexian Mi320': ['S Nexian', 'Chronos Mi320'], - 'Snexian Mi430': ['S Nexian', 'Xtreme2 Mi430'] + 'Snexian Mi430': ['S Nexian', 'Xtreme2 Mi430'], }, Mi438S: ['S Nexian', 'Journey One Mi438'], @@ -13207,7 +13209,7 @@ exports.ANDROID_MODELS = { 'SALORA-E7': ['Salora', 'Njoy Slim X E7'], 'SALORA E8': ['Salora', 'Njoy Power X E8'], - 'Sansui[ -]([A-Z]{1,2}[0-9]+[A-Z]?+?)!': ['Sansui', '$1'], + 'Sansui[ -]([A-Z]{1,2}[0-9]+[A-Z]?\+?)!': ['Sansui', '$1'], 'Sansui Cosmic SP ([0-9]+)!': ['Sansui', 'Cosmic SP$1'], 'SANSUI ETAB ([0-9]+) ?VP!': ['Sansui', 'Etab $1VP', DeviceType.TABLET], @@ -13221,7 +13223,7 @@ exports.ANDROID_MODELS = { 'EK-GN100!': ['Samsung', 'Galaxy NX', DeviceType.CAMERA], 'EK-GN120!': ['Samsung', 'Galaxy NX', DeviceType.CAMERA], 'EK-KC100!': ['Samsung', 'Galaxy Camera', DeviceType.CAMERA], - 'EK-KC120!': ['Samsung', 'Galaxy Camera LTE', DeviceType.CAMERA] + 'EK-KC120!': ['Samsung', 'Galaxy Camera LTE', DeviceType.CAMERA], }, 'GT-B[0-9]{4,4}!!': { @@ -13233,7 +13235,7 @@ exports.ANDROID_MODELS = { 'GT-B9062!': ['Samsung', 'GT-B9062'], 'GT-B9120!': ['Samsung', 'GT-B9120'], 'GT-B9150!': ['Samsung', 'Galaxy HomeSync', DeviceType.TELEVISION], - 'GT-B9388!': ['Samsung', 'GT-B9388'] + 'GT-B9388!': ['Samsung', 'GT-B9388'], }, 'GT-I[0-9]{3,4}!!': { @@ -13296,7 +13298,7 @@ exports.ANDROID_MODELS = { 'GT-I95(06)!': ['Samsung', 'Galaxy S4 Advance'], 'GT-I9515!': ['Samsung', 'Galaxy S4 Neo'], // Maybe 'GT-I9600!': ['Samsung', 'GT-I9600'], // Unknown - 'GT-I9800!': ['Samsung', 'GT-I9800'] // Unknown + 'GT-I9800!': ['Samsung', 'GT-I9800'], // Unknown }, 'GT-N[0-9]{4,4}!!': { @@ -13305,7 +13307,7 @@ exports.ANDROID_MODELS = { 'GT-N71(00|02|05|08)!': ['Samsung', 'Galaxy Note II'], 'GT-N7200!': ['Samsung', 'Galaxy Note 3'], // Fake? 'GT-N80(00|05|10|13|20)!': ['Samsung', 'Galaxy Note 10.1', DeviceType.TABLET], - 'GT-N90(00|02||05|06|08)!': ['Samsung', 'Galaxy Note 3'] + 'GT-N90(00|02||05|06|08)!': ['Samsung', 'Galaxy Note 3'], }, 'GT-P[0-9]{4,4}!!': { @@ -13323,7 +13325,7 @@ exports.ANDROID_MODELS = { 'GT-P75(01|11)!': ['Samsung', 'Galaxy Tab 10.1N', DeviceType.TABLET], 'GT-P7580!': ['Samsung', 'Galaxy Tab 10.1', DeviceType.TABLET], 'GT-P8110!': ['Samsung', 'Nexus 10', DeviceType.TABLET], - 'GT-P8200!': ['Samsung', 'Galaxy Tab 3 Plus (10.1)', DeviceType.TABLET] + 'GT-P8200!': ['Samsung', 'Galaxy Tab 3 Plus (10.1)', DeviceType.TABLET], }, 'GT-S[0-9]{4,4}!!': { @@ -13376,7 +13378,7 @@ exports.ANDROID_MODELS = { 'GT-S7898!': ['Samsung', 'Galaxy Trend 2'], 'GT-S8500': ['Samsung', 'Wave'], 'GT-S8530': ['Samsung', 'Wave II'], - 'GT-S9081': ['Samsung', 'GT-S9081'] // Unknown + 'GT-S9081': ['Samsung', 'GT-S9081'], // Unknown }, 'GT-T959!': ['Samsung', 'Galaxy S Vibrant'], @@ -13435,7 +13437,7 @@ exports.ANDROID_MODELS = { 'SCH-I919!': ['Samsung', 'Galaxy S Duos'], 'SCH-I925!': ['Samsung', 'Galaxy Note 10.1', DeviceType.TABLET], 'SCH-I939!': ['Samsung', 'Galaxy S III'], - 'SCH-I959': ['Samsung', 'Galaxy S4'] + 'SCH-I959': ['Samsung', 'Galaxy S4'], }, 'SCH-L710!': ['Samsung', 'Galaxy S III'], @@ -13445,7 +13447,7 @@ exports.ANDROID_MODELS = { 'SCH-P[0-9]{3,3}!!': { 'SCH-P709!': ['Samsung', 'Galaxy Mega 5.8'], 'SCH-P729': ['Samsung', 'Galaxy Mega 6.3'], - 'SCH-P739': ['Samsung', 'Galaxy Tab 8.9', DeviceType.TABLET] + 'SCH-P739': ['Samsung', 'Galaxy Tab 8.9', DeviceType.TABLET], }, 'SCH-R[0-9]{3,3}!!': { @@ -13467,7 +13469,7 @@ exports.ANDROID_MODELS = { 'SCH-R940!': ['Samsung', 'Galaxy S Lightray'], 'SCH-R950!': ['Samsung', 'Galaxy Note II'], 'SCH-R960!': ['Samsung', 'Galaxy Mega 6.3'], - 'SCH-R970!': ['Samsung', 'Galaxy S4'] + 'SCH-R970!': ['Samsung', 'Galaxy S4'], }, 'SCH-S[0-9]{3,3}!!': { @@ -13475,7 +13477,7 @@ exports.ANDROID_MODELS = { 'SCH-S735!': ['Samsung', 'Galaxy Discover'], 'SCH-S738!': ['Samsung', 'Galaxy Centura'], 'SCH-S950!': ['Samsung', 'Galaxy S Showcase'], - 'SCH-S9(60|68)!': ['Samsung', 'Galaxy S III'] + 'SCH-S9(60|68)!': ['Samsung', 'Galaxy S III'], }, 'SCH-V727': ['Samsung', 'Galaxy S4'], @@ -13486,7 +13488,7 @@ exports.ANDROID_MODELS = { 'SCH-W899': ['Samsung', 'SCH-W899'], 'SCH-W999': ['Samsung', 'SCH-W999'], 'SCH-W2013': ['Samsung', 'SCH-W2013'], - 'SCH-W9913': ['Samsung', 'SCH-W9913'] + 'SCH-W9913': ['Samsung', 'SCH-W9913'], }, 'SGH-[EILNMS][0-9]{3,4}!!': { @@ -13531,7 +13533,7 @@ exports.ANDROID_MODELS = { 'SGH-M919!': ['Samsung', 'Galaxy S4'], 'SGH-S730!': ['Samsung', 'Galaxy Discover'], 'SGH-S959!': ['Samsung', 'Galaxy S II'], - 'SGH-S970G': ['Samsung', 'Galaxy S4'] + 'SGH-S970G': ['Samsung', 'Galaxy S4'], }, 'SGH-T[0-9]{3,3}!!': { @@ -13560,7 +13562,7 @@ exports.ANDROID_MODELS = { 'SGH-T959W': ['Samsung', 'Galaxy S 4G'], 'SGH-T989': ['Samsung', 'Galaxy S II'], 'SGH-T989D': ['Samsung', 'Galaxy S II X'], - 'SGH-T999!': ['Samsung', 'Galaxy S III'] + 'SGH-T999!': ['Samsung', 'Galaxy S III'], }, 'SGH-U468!': ['Samsung', 'Galaxy S4'], @@ -13585,7 +13587,7 @@ exports.ANDROID_MODELS = { 'SHV-E400!': ['Samsung', 'Galaxy Folder'], 'SHV-E470!': ['Samsung', 'Galaxy S4 Active'], 'SHV-E500!': ['Samsung', 'Galaxy Win'], - 'SHV-E510!': ['Samsung', 'SHV-E510'] + 'SHV-E510!': ['Samsung', 'SHV-E510'], }, 'SHW-M[0-9]{3,3}!!': { @@ -13614,7 +13616,7 @@ exports.ANDROID_MODELS = { 'SHW-M500!': ['Samsung', 'Galaxy Note 8.0', DeviceType.TABLET], 'SHW-M550!': ['Samsung', 'SHW-M550'], // Unknown 'SHW-M570!': ['Samsung', 'Galaxy Core Advance'], - 'SHW-M5(80|85)!': ['Samsung', 'Galaxy Core Safe'] + 'SHW-M5(80|85)!': ['Samsung', 'Galaxy Core Safe'], }, 'SMT-E5015': ['Samsung', 'Olleh SkyLife Smart Settopbox', DeviceType.TELEVISION], @@ -13689,7 +13691,7 @@ exports.ANDROID_MODELS = { 'SM-A900!': ['Samsung', 'Galaxy A9 (2016)'], 'SM-A908!': ['Samsung', 'Galaxy A90 5G'], 'SM-A910!': ['Samsung', 'Galaxy A9 Pro'], - 'SM-A920!': ['Samsung', 'Galaxy A9 (2018)'] + 'SM-A920!': ['Samsung', 'Galaxy A9 (2018)'], }, 'SM-C[0-9]{3,3}!!': { @@ -13700,12 +13702,12 @@ exports.ANDROID_MODELS = { 'SM-C700!': ['Samsung', 'Galaxy C7'], 'SM-C701!': ['Samsung', 'Galaxy C7 Pro'], 'SM-C710!': ['Samsung', 'Galaxy C7 (2017)'], - 'SM-C900!': ['Samsung', 'Galaxy C9'] + 'SM-C900!': ['Samsung', 'Galaxy C9'], }, 'SM-E[0-9]{3,3}!!': { 'SM-E500!': ['Samsung', 'Galaxy E5'], - 'SM-E700!': ['Samsung', 'Galaxy E7'] + 'SM-E700!': ['Samsung', 'Galaxy E7'], }, 'SM-F[0-9]{3,3}!!': { @@ -13717,7 +13719,7 @@ exports.ANDROID_MODELS = { 'SM-F907!': ['Samsung', 'Galaxy Fold 5G'], 'SM-F910!': ['Samsung', 'Galaxy Z Fold2'], 'SM-F916!': ['Samsung', 'Galaxy Z Fold2 5G'], - 'SM-F926!': ['Samsung', 'Galaxy Z Fold3 5G'] + 'SM-F926!': ['Samsung', 'Galaxy Z Fold3 5G'], }, 'SM-G[0-9]{3,3}!!': { @@ -13828,7 +13830,7 @@ exports.ANDROID_MODELS = { 'SM-G990!': ['Samsung', 'Galaxy S21 FE'], 'SM-G991!': ['Samsung', 'Galaxy S21'], 'SM-G996!': ['Samsung', 'Galaxy S21+'], - 'SM-G998!': ['Samsung', 'Galaxy S21 Ultra'] + 'SM-G998!': ['Samsung', 'Galaxy S21 Ultra'], }, 'SM-I9500': ['Samsung', 'Galaxy S4'], @@ -13867,7 +13869,7 @@ exports.ANDROID_MODELS = { 'SM-J737!': ['Samsung', 'Galaxy Wide 3'], 'SM-J800!': ['Samsung', 'Galaxy J8'], 'SM-J810!': ['Samsung', 'Galaxy J8 (2018)'], - 'SM-J900!': ['Samsung', 'Galaxy J9'] + 'SM-J900!': ['Samsung', 'Galaxy J9'], }, 'SM-M[0-9]{3,4}!!': { @@ -13883,7 +13885,7 @@ exports.ANDROID_MODELS = { 'SM-M315!': ['Samsung', 'Galaxy M31'], 'SM-M317!': ['Samsung', 'Galaxy M31s'], 'SM-M515!': ['Samsung', 'Galaxy M51'], - 'SM-M526!': ['Samsung', 'Galaxy M52'] + 'SM-M526!': ['Samsung', 'Galaxy M52'], }, 'SM-N[0-9]{3,4}!!': { @@ -13906,7 +13908,7 @@ exports.ANDROID_MODELS = { 'SM-N976!': ['Samsung', 'Galaxy Note 10+ 5G'], 'SM-N980!': ['Samsung', 'Galaxy Note 20'], 'SM-N981!': ['Samsung', 'Galaxy Note 20 5G'], - 'SM-N986!': ['Samsung', 'Galaxy Note 20 Ultra 5G'] + 'SM-N986!': ['Samsung', 'Galaxy Note 20 Ultra 5G'], }, 'SM-P[0-9]{3,3}!!': { @@ -13915,7 +13917,7 @@ exports.ANDROID_MODELS = { 'SM-P58[058]!': ['Samsung', 'Galaxy Tab A 10.1 with S Pen (2016)', DeviceType.TABLET], 'SM-P60[01257]!': ['Samsung', 'Galaxy Note 10.1 (2014)', DeviceType.TABLET], 'SM-P61[05]!': ['Samsung', 'Galaxy Tab S6 Lite', DeviceType.TABLET], - 'SM-P90[01257]!': ['Samsung', 'Galaxy Note Pro', DeviceType.TABLET] + 'SM-P90[01257]!': ['Samsung', 'Galaxy Note Pro', DeviceType.TABLET], }, 'SM-S[0-9]{3,3}!!': { @@ -13944,7 +13946,7 @@ exports.ANDROID_MODELS = { 'SM-S908B': ['Samsung', 'Galaxy S22 Ultra'], 'SM-S920L': ['Samsung', 'Galaxy Grand Prime'], 'SM-S975L': ['Samsung', 'Galaxy S4'], - 'SM-S978L': ['Samsung', 'Galaxy E5'] + 'SM-S978L': ['Samsung', 'Galaxy E5'], }, 'SM-T[0-9]{3,3}!!': { @@ -14000,7 +14002,7 @@ exports.ANDROID_MODELS = { 'SM-T87[05]!': ['Samsung', 'Galaxy Tab S7 11.0', DeviceType.TABLET], 'SM-T90[05]!': ['Samsung', 'Galaxy Tab Pro 12.2', DeviceType.TABLET], 'SM-T92[7]!': ['Samsung', 'Galaxy View2 (2019)', DeviceType.TABLET], - 'SM-T97[06]!': ['Samsung', 'Galaxy Tab S7+ 12.4 (2020)', DeviceType.TABLET] + 'SM-T97[06]!': ['Samsung', 'Galaxy Tab S7+ 12.4 (2020)', DeviceType.TABLET], }, 'SM-X200': ['Samsung', 'Galaxy Tab A8 10.5', DeviceType.TABLET], @@ -14016,7 +14018,7 @@ exports.ANDROID_MODELS = { 'SM-W2014': ['Samsung', 'Galaxy W2014'], 'SM-W2015': ['Samsung', 'Galaxy Golden 2'], 'SM-W2016': ['Samsung', 'Galaxy Golden 3'], - 'SM-W2017': ['Samsung', 'Veyron'] + 'SM-W2017': ['Samsung', 'Veyron'], }, 'SPH-D[0-9]{3,3}!!': { @@ -14024,7 +14026,7 @@ exports.ANDROID_MODELS = { 'SPH-D700': ['Samsung', 'Epic 4G'], 'SPH-D705': ['Samsung', 'Epic 4G 2'], 'SPH-D710!': ['Samsung', 'Galaxy S II'], - 'SPH-D720!': ['Samsung', 'Nexus S'] + 'SPH-D720!': ['Samsung', 'Nexus S'], }, 'SPH-L[0-9]{3,3}!!': { @@ -14036,7 +14038,7 @@ exports.ANDROID_MODELS = { 'SPH-L710!': ['Samsung', 'Galaxy S III'], 'SPH-L72A!': ['Samsung', 'Galaxy S4'], 'SPH-L720!': ['Samsung', 'Galaxy S4'], - 'SPH-L900!': ['Samsung', 'Galaxy Note II'] + 'SPH-L900!': ['Samsung', 'Galaxy Note II'], }, 'SPH-M[0-9]{3,3}!!': { @@ -14049,13 +14051,13 @@ exports.ANDROID_MODELS = { 'SPH-M910': ['Samsung', 'Intercept'], 'SPH-M920': ['Samsung', 'Transform'], 'SPH-M930!': ['Samsung', 'Transform Ultra'], - 'SPH-M950': ['Samsung', 'Galaxy Reverb'] + 'SPH-M950': ['Samsung', 'Galaxy Reverb'], }, 'SPH-P[0-9]{3,3}!!': { 'SPH-P100!': ['Samsung', 'Galaxy Tab 7.0', DeviceType.TABLET], 'SPH-P500': ['Samsung', 'Galaxy Tab 2 10.1', DeviceType.TABLET], - 'SPH-P600': ['Samsung', 'Galaxy Note 10.1', DeviceType.TABLET] + 'SPH-P600': ['Samsung', 'Galaxy Note 10.1', DeviceType.TABLET], }, 'YP-G!!': { @@ -14069,7 +14071,7 @@ exports.ANDROID_MODELS = { 'YP-GI1': ['Samsung', 'Galaxy S WiFi 4.2', 'media'], 'YP-GI2': ['Samsung', 'Galaxy 070', 'media'], 'YP-G50': ['Samsung', 'Galaxy Player', 'media'], - 'YP-G70': ['Samsung', 'Galaxy S WiFi 5.0', 'media'] + 'YP-G70': ['Samsung', 'Galaxy S WiFi 5.0', 'media'], }, GT9100: ['Samsung', 'Galaxy S II'], @@ -14124,7 +14126,7 @@ exports.ANDROID_MODELS = { 'Galaxy pop plus 4G': ['Samsung', 'Galaxy Pop Plus'], 'Galaxy Precedent': ['Samsung', 'Galaxy Precedent'], 'GALAXY Tab': ['Samsung', 'Galaxy Tab', DeviceType.TABLET], - 'Galaxy Tab3': ['Samsung', 'Galaxy Tab 3', DeviceType.TABLET] + 'Galaxy Tab3': ['Samsung', 'Galaxy Tab 3', DeviceType.TABLET], }, S2: ['Samsung', 'Galaxy S II'], @@ -14176,7 +14178,7 @@ exports.ANDROID_MODELS = { 'SC-04L': ['Samsung', 'Galaxy S10+ SC-04L', { carrier: 'DoCoMo' }], 'SC-05D': ['Samsung', 'GALAXY Note SC-05D', { carrier: 'DoCoMo' }], 'SC-05G': ['Samsung', 'GALAXY S6 SC-05G', { carrier: 'DoCoMo' }], - 'SC-06D': ['Samsung', 'GALAXY S III SC-06D', { carrier: 'DoCoMo' }] + 'SC-06D': ['Samsung', 'GALAXY S III SC-06D', { carrier: 'DoCoMo' }], }, 'SC[LTV][23][0-9]!!': { @@ -14195,14 +14197,14 @@ exports.ANDROID_MODELS = { SCV38: ['Samsung', 'Galaxy S9 SCV38', { carrier: 'au' }], SCV39: ['Samsung', 'Galaxy S9+ SCV39', { carrier: 'au' }], SCV40: ['Samsung', 'Galaxy Note9 SCV40', { carrier: 'au' }], - SCV41: ['Samsung', 'Galaxy S10 SCV41', { carrier: 'au' }] + SCV41: ['Samsung', 'Galaxy S10 SCV41', { carrier: 'au' }], }, ISW11SC: ['Samsung', 'GALAXY S II WiMAX ISW11SC', { carrier: 'au' }], '40[0-9]SC!!': { '403SC': ['Samsung', 'GALAXY Tab 4 7.0 403SC', DeviceType.TABLET, { carrier: 'Softbank' }], - '404SC': ['Samsung', 'GALAXY S6 Edge 404SC', { carrier: 'Softbank' }] + '404SC': ['Samsung', 'GALAXY S6 Edge 404SC', { carrier: 'Softbank' }], }, 'printer-tablet': ['Samsung', 'ProXpress', DeviceType.PRINTER], @@ -14216,13 +14218,13 @@ exports.ANDROID_MODELS = { 'ELEMENT 8V3': ['Sencor', 'Element 8 V3', DeviceType.TABLET], 'SENCOR ELEMENT 9.7V3': ['Sencor', 'Element 9.7 V3', DeviceType.TABLET], 'ELEMENT10 1': ['Sencor', 'Element 10.1', DeviceType.TABLET], - 'ELEMENT P501': ['Sencor', 'Element P501'] + 'ELEMENT P501': ['Sencor', 'Element P501'], }, 'SENSEIT R390': ['Senseit', 'R390'], 'QuickFone Mini': ['Sensonic', 'QuickFone Mini'], 'QuickFone-Mini': ['Sensonic', 'QuickFone Mini'], - 'QuickFone ([NXZ][0-9]+?)!': ['Sensonic', 'QuickFone $1'], + 'QuickFone ([NXZ][0-9]\+?)!': ['Sensonic', 'QuickFone $1'], 'SENWA S970': ['Senwa', 'S970'], S1005KTAB: ['Serioux', 'GoTab S1005KTAB', DeviceType.TABLET], STARACTIVE: ['SFR', 'STARACTIVE'], @@ -14278,13 +14280,13 @@ exports.ANDROID_MODELS = { '503SH': ['Sharp', 'AQUOS Xx2 mini 503SH', { carrier: 'Softbank' }], '603SH': ['Sharp', 'AQUOS Xx3 mini 603SH', { carrier: 'Softbank' }], '701SH': ['Sharp', 'AQUOS R compact 701SH', { carrier: 'Softbank' }], - A01SH: ['Sharp', 'GALAPAGOS A01SH', { carrier: 'Y! Mobile' }] + A01SH: ['Sharp', 'GALAPAGOS A01SH', { carrier: 'Y! Mobile' }], }, 'IS0[0-9]!!': { IS01: ['Sharp', 'IS01', { carrier: 'au' }], IS03: ['Sharp', 'IS03', { carrier: 'au' }], - IS05: ['Sharp', 'IS05', { carrier: 'au' }] + IS05: ['Sharp', 'IS05', { carrier: 'au' }], }, 'ISW?1[0-9]SH!!': { @@ -14294,7 +14296,7 @@ exports.ANDROID_MODELS = { IS14SH: ['Sharp', 'AQUOS PHONE IS14SH', { carrier: 'au' }], IS15SH: ['Sharp', 'AQUOS PHONE SL IS15SH', { carrier: 'au' }], ISW16SH: ['Sharp', 'AQUOS PHONE SERIE ISW16SH', { carrier: 'au' }], - IS17SH: ['Sharp', 'AQUOS PHONE CL IS17SH', { carrier: 'au' }] + IS17SH: ['Sharp', 'AQUOS PHONE CL IS17SH', { carrier: 'au' }], }, 'EB-A71GJ': ['Sharp', 'EB-A71GJ', DeviceType.TABLET], @@ -14330,7 +14332,7 @@ exports.ANDROID_MODELS = { SBM302SH: ['Sharp', 'AQUOS PHONE Xx 302SH', { carrier: 'Softbank' }], SBM303SH: ['Sharp', 'AQUOS PHONE Xx mini 303SH', { carrier: 'Softbank' }], SBM305SH: ['Sharp', 'AQUOS CRYSTAL 305SH', { carrier: 'Softbank' }], - SBM306SH: ['Sharp', 'AQUOS CRYSTAL 306SH'] // The U.S. Sprint version (now part of Softbank) + SBM306SH: ['Sharp', 'AQUOS CRYSTAL 306SH'], // The U.S. Sprint version (now part of Softbank) }, '(3|5|6|7)0[0-9]SH!!': { @@ -14342,7 +14344,7 @@ exports.ANDROID_MODELS = { '509SH': ['Sharp', 'シンプルスマホ3 509SH', { carrier: 'Softbank' }], '605SH': ['Sharp', 'AQUOS R 605SH', { carrier: 'Softbank' }], '606SH': ['Sharp', 'AQUOS ea 606SH', { carrier: 'Softbank' }], - '706SH': ['Sharp', 'AQUOS R2 706SH', { carrier: 'Softbank' }] + '706SH': ['Sharp', 'AQUOS R2 706SH', { carrier: 'Softbank' }], }, SH01D: ['Sharp', 'AQUOS PHONE SH-01D', { carrier: 'DoCoMo' }], @@ -14405,7 +14407,7 @@ exports.ANDROID_MODELS = { 'SH-10B': ['Sharp', 'LYNX SH-10B', { carrier: 'DoCoMo' }], 'SH-10D': ['Sharp', 'AQUOS PHONE sv SH-10D', { carrier: 'DoCoMo' }], 'SH-12C': ['Sharp', 'AQUOS PHONE SH-12C', { carrier: 'DoCoMo' }], - 'SH-13C': ['Sharp', 'AQUOS PHONE f SH-13C', { carrier: 'DoCoMo' }] + 'SH-13C': ['Sharp', 'AQUOS PHONE f SH-13C', { carrier: 'DoCoMo' }], }, '(SHP-)?(SHARP )?SH[0-9]{2,3}!!': { @@ -14439,7 +14441,7 @@ exports.ANDROID_MODELS = { 'SHARP SH8188U': ['Sharp', 'SH8188U'], SH8288U: ['Sharp', 'SH8288U'], SH8268U: ['Sharp', 'SH8268U'], - SH8298U: ['Sharp', 'SH8298U'] + SH8298U: ['Sharp', 'SH8298U'], }, 'SH[FLTV][0-9]{2,2}!!': { @@ -14466,7 +14468,7 @@ exports.ANDROID_MODELS = { SHV40: ['Sharp', 'AQUOS sense SHV40', { carrier: 'au' }], 'SHV40 u': ['Sharp', 'AQUOS sense SHV40', { carrier: 'UQ mobile' }], SHV41: ['Sharp', 'AQUOS R compact SHV41', { carrier: 'au' }], - SHV42: ['Sharp', 'AQUOS R2 SHV42', { carrier: 'au' }] + SHV42: ['Sharp', 'AQUOS R2 SHV42', { carrier: 'au' }], }, WX04SH: ['Sharp', 'AQUOS PHONE es WX04SH', { carrier: 'Willcom' }], WX05SH: ['Sharp', 'AQUOS PHONE ef WX05SH', { carrier: 'Willcom' }], @@ -14483,7 +14485,7 @@ exports.ANDROID_MODELS = { 'AQUOS 58U3A': ['Sharp', 'Aquos U3A', DeviceType.TELEVISION], 'AQUOS 52UE20A': ['Sharp', 'Aquos UE20A', DeviceType.TELEVISION], 'AQUOS 60UE20A': ['Sharp', 'Aquos UE20A', DeviceType.TELEVISION], - 'AQUOS 70LX765A': ['Sharp', 'Aquos LX765A', DeviceType.TELEVISION] + 'AQUOS 70LX765A': ['Sharp', 'Aquos LX765A', DeviceType.TELEVISION], }, 'LC-Ux30US': ['Sharp', 'Aquos UH30U', DeviceType.TELEVISION], @@ -14522,7 +14524,7 @@ exports.ANDROID_MODELS = { 'Skyworth 9R15 E710U': ['Skyworth', 'E710', DeviceType.TELEVISION], 'Skyworth 8K93 E780U': ['Skyworth', 'E780', DeviceType.TELEVISION], 'Skyworth 8R98 E790U': ['Skyworth', 'E790', DeviceType.TELEVISION], - 'Skyworth A55 Coocaa': ['Skyworth', 'Coocaa Honor A55', DeviceType.TELEVISION] + 'Skyworth A55 Coocaa': ['Skyworth', 'Coocaa Honor A55', DeviceType.TELEVISION], }, WF7C: ['Smartbitt', 'WF7C', DeviceType.TABLET], @@ -14574,7 +14576,7 @@ exports.ANDROID_MODELS = { 'Andromax T AD628J': ['Smartfren', 'Andromax T'], 'Andromax U!': ['Smartfren', 'Andromax U'], 'Andromax-U': ['Smartfren', 'Andromax U'], - 'Smartfren Andromax U3': ['Smartfren', 'Andromax U3'] + 'Smartfren Andromax U3': ['Smartfren', 'Andromax U3'], }, AD686G: ['Smartfren', 'Andromax C'], @@ -14606,7 +14608,7 @@ exports.ANDROID_MODELS = { SmartQT30: ['SmartQ', 'T30', DeviceType.TABLET], 'SmartQ V5': ['SmartQ', 'V5', DeviceType.TABLET], SmartQV5II: ['SmartQ', 'V5 II', DeviceType.TABLET], - 'SmartQ V7': ['SmartQ', 'V7', DeviceType.TABLET] + 'SmartQ V7': ['SmartQ', 'V7', DeviceType.TABLET], }, T20: ['SmartQ', 'T20', DeviceType.TABLET], @@ -14614,7 +14616,7 @@ exports.ANDROID_MODELS = { 'SZENIO!!': { 'SZENIO 2000': ['Szenio', '2000', DeviceType.TABLET], - 'SZENIO 2500': ['Szenio', '2500', DeviceType.TABLET] + 'SZENIO 2500': ['Szenio', '2500', DeviceType.TABLET], }, 'Sonim!!': { @@ -14629,7 +14631,7 @@ exports.ANDROID_MODELS = { 'Sonim XP6711Z1': ['Sonim', 'XP6711'], 'Sonim XP7700': ['Sonim', 'XP7700'], 'Sonim-XP7700': ['Sonim', 'XP7700'], - 'sonim/XP7700': ['Sonim', 'XP7700'] + 'sonim/XP7700': ['Sonim', 'XP7700'], }, XP8800: ['Sonim', 'XP8800'], @@ -14651,7 +14653,7 @@ exports.ANDROID_MODELS = { 'C670[0-9]!': ['Sony', 'C670x'], // Itsuki 'C68(02|06|33|43)!': ['Sony', 'Xperia Z Ultra'], // Togari 'C69(02|03|06|43)!': ['Sony', 'Xperia Z1'], // Honami - C6916: ['Sony', 'Xperia Z1s'] // Honami + C6916: ['Sony', 'Xperia Z1s'], // Honami }, 'D[0-9]{4,4}!!': { @@ -14673,7 +14675,7 @@ exports.ANDROID_MODELS = { 'D65(63)!': ['Sony', 'Xperia Z2a'], // Canopus 'D66(03|16|33|43|46|53)!': ['Sony', 'Xperia Z3'], // ... 'D66(83)!': ['Sony', 'Xperia Z3 dual'], // ... - D6708: ['Sony', 'Xperia Z3v'] // ... + D6708: ['Sony', 'Xperia Z3v'], // ... }, 'E[0-9]{4,4}!!': { @@ -14696,7 +14698,7 @@ exports.ANDROID_MODELS = { 'E66(03|46|53)!': ['Sony', 'Xperia Z5'], 'E66(33|83)!': ['Sony', 'Xperia Z5 dual'], 'E68(53)!': ['Sony', 'Xperia Z5 Premium'], - 'E68(33|83)!': ['Sony', 'Xperia Z5 Premium dual'] + 'E68(33|83)!': ['Sony', 'Xperia Z5 Premium dual'], }, 'F[0-9]{4,4}!!': { @@ -14707,7 +14709,7 @@ exports.ANDROID_MODELS = { 'F51(21|22)!': ['Sony', 'Xperia X'], 'F53(21)!': ['Sony', 'Xperia X Compact'], 'F81(31|32)!': ['Sony', 'Xperia X Performance'], - 'F83(31|32|33)!': ['Sony', 'Xperia XZ'] + 'F83(31|32|33)!': ['Sony', 'Xperia XZ'], }, 'G[0-9]{4,4}!!': { @@ -14718,7 +14720,7 @@ exports.ANDROID_MODELS = { 'G81(41|42|88)!': ['Sony', 'Xperia XZ Premium'], 'G82(31|32)!': ['Sony', 'Xperia XZs'], 'G83(41|42|43)!': ['Sony', 'Xperia XZ1'], - 'G84(41|42)!': ['Sony', 'Xperia XZ1 Compact'] + 'G84(41|42)!': ['Sony', 'Xperia XZ1 Compact'], }, 'H[0-9]{4,4}!!': { @@ -14734,7 +14736,7 @@ exports.ANDROID_MODELS = { 'H83(14|24)!': ['Sony', 'Xperia XZ2 Compact'], 'H84(16)!': ['Sony', 'Xperia XZ3'], 'H84(41)!': ['Sony', 'Xperia XZ1 Compact'], - 'H94(36|93)!': ['Sony', 'Xperia XZ3'] + 'H94(36|93)!': ['Sony', 'Xperia XZ3'], }, 'I[0-9]{4,4}!!': { @@ -14743,14 +14745,14 @@ exports.ANDROID_MODELS = { 'I33(12)!': ['Sony', 'Xperia L3'], 'I41(13|93)!': ['Sony', 'Xperia 10'], 'I42(13|93)!': ['Sony', 'Xperia 10 Plus'], - 'I43(12|32)!': ['Sony', 'Xperia L3'] + 'I43(12|32)!': ['Sony', 'Xperia L3'], }, 'J[0-9]{4,4}!!': { 'J81(10|70)!': ['Sony', 'Xperia 1'], 'J82(10|70)!': ['Sony', 'Xperia 5'], 'J91(10)!': ['Sony', 'Xperia 1'], - 'J92(10|60)!': ['Sony', 'Xperia 5'] + 'J92(10|60)!': ['Sony', 'Xperia 5'], }, 'XQ-AT51': ['Sony', 'Xperia 1 II'], @@ -14768,7 +14770,7 @@ exports.ANDROID_MODELS = { 'E[0-9]{2,2}[a-z]!!': { 'E10(a|i|iv)!': ['Sony Ericsson', 'Xperia X10 Mini'], // Robyn 'E15(a|av|i|iv|i-o)?$!': ['Sony Ericsson', 'Xperia X8'], // Shakira - 'E16i!': ['Sony Ericsson', 'W8 Walkman'] // Shakira Walkman + 'E16i!': ['Sony Ericsson', 'W8 Walkman'], // Shakira Walkman }, 'L[0-9]{2,2}[a-z]!!': { @@ -14776,32 +14778,32 @@ exports.ANDROID_MODELS = { L36h: ['Sony', 'Xperia Z'], // Yuga 'L39(h|t|u)!': ['Sony', 'Xperia Z1'], // Honami 'L50(w|t|u)!': ['Sony', 'Xperia Z2'], // Sirius - 'L55(t|u)!': ['Sony', 'Xperia Z3'] // ... + 'L55(t|u)!': ['Sony', 'Xperia Z3'], // ... }, - '(SNM-)?LT[0-9]{2,2}[a-z]?!!': { + '(SNM\-)?LT[0-9]{2,2}[a-z]?!!': { 'LT11i!': ['Sony Ericsson', 'Xperia Neo V'], // Haida 'LT15(a|at|av|i|iv|i-o)?$!': ['Sony Ericsson', 'Xperia Arc'], // Anzu 'LT15i Speed Edition': ['Sony Ericsson', 'Xperia Arc'], // Anzu 'LT18(a|i|iv|i-o)?$!': ['Sony Ericsson', 'Xperia Arc S'], // Ayame 'LT22i!': ['Sony', 'Xperia P'], // Nypon 'LT25i!': ['Sony', 'Xperia V'], // Tsubasa - '(SNM-)?LT25c!': ['Sony', 'Xperia VC'], // Tsubasa + '(SNM\-)?LT25c!': ['Sony', 'Xperia VC'], // Tsubasa 'LT26ii!': ['Sony', 'Xperia SL'], // Nozomi2 'LT26(i|i-o)!': ['Sony', 'Xperia S'], // Nozomi 'LT26w!': ['Sony', 'Xperia Acro S'], // Hikari 'LT28(at|h|i)!': ['Sony', 'Xperia Ion'], // Aoba 'LT29i!': ['Sony', 'Xperia TX'], // Hayabusa 'LT30(at)!': ['Sony', 'Xperia TL'], // Mint - 'LT30(a|p)!': ['Sony', 'Xperia T'] // Mint + 'LT30(a|p)!': ['Sony', 'Xperia T'], // Mint }, - '(SNM-)?M[0-9]{2,2}[a-z]!!': { - '(SNM-)?M35(c|h|t|ts)!': ['Sony', 'Xperia SP'], // HuaShan + '(SNM\-)?M[0-9]{2,2}[a-z]!!': { + '(SNM\-)?M35(c|h|t|ts)!': ['Sony', 'Xperia SP'], // HuaShan 'M36h!': ['Sony', 'Xperia ZR'], // Dogo 'M50w!': ['Sony', 'Xperia T3'], // Seagull 'M51w!': ['Sony', 'Xperia Z1 Compact'], // Amami - 'M55w!': ['Sony', 'Xperia Z3 Compact'] // ... + 'M55w!': ['Sony', 'Xperia Z3 Compact'], // ... }, 'MK16(a|i|$)!': ['Sony Ericsson', 'Xperia Pro'], // Iyokan @@ -14810,7 +14812,7 @@ exports.ANDROID_MODELS = { 'MT11(a|i|iv|i-o)!': ['Sony Ericsson', 'Xperia Neo V'], // Haida 'MT15(a|i|iv|i-o|$)!': ['Sony Ericsson', 'Xperia Neo'], // Hallon 'MT25i!': ['Sony', 'Xperia Neo L'], // Phoenix - 'MT27i!': ['Sony', 'Xperia Sola'] // Pepper + 'MT27i!': ['Sony', 'Xperia Sola'], // Pepper }, 'R800(a|at|i|iv|x)!': ['Sony Ericsson', 'Xperia Play'], // Zeus @@ -14819,7 +14821,7 @@ exports.ANDROID_MODELS = { S36h: ['Sony', 'Xperia L'], // TaoShan S39h: ['Sony', 'Xperia C'], // CN3 S50h: ['Sony', 'Xperia M2 dual'], // Eagle - 'S55(t|u)!': ['Sony', 'Xperia C3 dual'] // ... + 'S55(t|u)!': ['Sony', 'Xperia C3 dual'], // ... }, 'SK17(a|i|iv|i-o)!': ['Sony Ericsson', 'Xperia Mini Pro'], // Mango @@ -14833,14 +14835,14 @@ exports.ANDROID_MODELS = { 'ST23(a|i)?!': ['Sony', 'Xperia Miro'], // Mesona 'ST25(a|i)!': ['Sony', 'Xperia U'], // Kumquat 'ST26(a|i)?!': ['Sony', 'Xperia J'], // JLo - 'ST27(a|i)!': ['Sony', 'Xperia Go'] // Lotus + 'ST27(a|i)!': ['Sony', 'Xperia Go'], // Lotus }, 'U20(a|i|iv)!': ['Sony Ericsson', 'Xperia X10 Mini Pro'], // Mimmi 'WT[0-9]{2,2}[a-z]!!': { 'WT18i!': ['Sony Ericsson', 'Walkman'], // Mulberry - 'WT19(a|i|iv)!': ['Sony Ericsson', 'Live with Walkman'] // Coconut + 'WT19(a|i|iv)!': ['Sony Ericsson', 'Live with Walkman'], // Coconut }, X8: ['Sony Ericsson', 'Xperia X8'], // Shakira @@ -14856,7 +14858,7 @@ exports.ANDROID_MODELS = { 'IS[0-9]{2,2}S!!': { IS11S: ['Sony Ericsson', 'Xperia acro IS11S', { carrier: 'au' }], // Akane - IS12S: ['Sony Ericsson', 'Xperia acro HD IS12S', { carrier: 'au' }] // Hayate + IS12S: ['Sony Ericsson', 'Xperia acro HD IS12S', { carrier: 'au' }], // Hayate }, 'SO-0[0-9][A-Z]!!': { @@ -14899,7 +14901,7 @@ exports.ANDROID_MODELS = { 'SO-05F': ['Sony', 'Xperia Tablet Z2 SO-05F', DeviceType.TABLET, { carrier: 'DoCoMo' }], // Castor 'SO-05G': ['Sony', 'Xperia Tablet Z4 SO-05G', DeviceType.TABLET, { carrier: 'DoCoMo' }], // ... 'SO-05K': ['Sony', 'Xperia XZ2 Compact SO-05K', { carrier: 'DoCoMo' }], - 'SO-07D': ['Sony', 'SO-07D', DeviceType.TABLET, { carrier: 'DoCoMo' }] // ... + 'SO-07D': ['Sony', 'SO-07D', DeviceType.TABLET, { carrier: 'DoCoMo' }], // ... }, 'SO[LTV][0-9]{2,2}!!': { @@ -14920,27 +14922,27 @@ exports.ANDROID_MODELS = { SOV37: ['Sony', 'Xperia XZ2 SOV37', { carrier: 'au' }], // ... SOV38: ['Sony', 'Xperia XZ2 Premium SOV38', { carrier: 'au' }], // ... SOV39: ['Sony', 'Xperia XZ3 SOV39', { carrier: 'au' }], // ... - SOV40: ['Sony', 'Xperia 1 SOV40', { carrier: 'au' }] // ... + SOV40: ['Sony', 'Xperia 1 SOV40', { carrier: 'au' }], // ... }, '40[0-9]SO!!': { '401SO': ['Sony', 'Xperia Z3 401SO', { carrier: 'Softbank' }], // ... - '402SO': ['Sony', 'Xperia Z4 402SO', { carrier: 'Softbank' }] // ... + '402SO': ['Sony', 'Xperia Z4 402SO', { carrier: 'Softbank' }], // ... }, '50[0-9]SO!!': { '501SO': ['Sony', 'Xperia Z5 501SO', { carrier: 'Softbank' }], // ... - '502SO': ['Sony', 'Xperia X Performance 502SO', { carrier: 'Softbank' }] // ... + '502SO': ['Sony', 'Xperia X Performance 502SO', { carrier: 'Softbank' }], // ... }, '60[0-9]SO!!': { '601SO': ['Sony', 'Xperia XZ 601SO', { carrier: 'Softbank' }], // ... - '602SO': ['Sony', 'Xperia XZs 602SO', { carrier: 'Softbank' }] // ... + '602SO': ['Sony', 'Xperia XZs 602SO', { carrier: 'Softbank' }], // ... }, '70[0-9]SO!!': { '701SO': ['Sony', 'Xperia XZ1 701SO', { carrier: 'Softbank' }], // ... - '702SO': ['Sony', 'Xperia XZ2 702SO', { carrier: 'Softbank' }] // ... + '702SO': ['Sony', 'Xperia XZ2 702SO', { carrier: 'Softbank' }], // ... }, 'Xperia!!': { @@ -15018,7 +15020,7 @@ exports.ANDROID_MODELS = { 'Xperia Tablet Z LTE': ['Sony', 'Xperia Tablet Z', DeviceType.TABLET], 'Xperia Tablet Z Wi-Fi': ['Sony', 'Xperia Tablet Z', DeviceType.TABLET], 'Xperia Tablet Z WiFi': ['Sony', 'Xperia Tablet Z', DeviceType.TABLET], - 'Xperia Z2 Tablet Wifi': ['Sony', 'Xperia Tablet Z2', DeviceType.TABLET] + 'Xperia Z2 Tablet Wifi': ['Sony', 'Xperia Tablet Z2', DeviceType.TABLET], }, 'Sony Xperia Ray': ['Sony Ericsson', 'Xperia Ray'], // Urushi @@ -15041,7 +15043,7 @@ exports.ANDROID_MODELS = { 'SGP4(12)!': ['Sony', 'Xperia Tablet Z Ultra', DeviceType.TABLET], 'SGP5(11|12|21|41|51|61)!': ['Sony', 'Xperia Tablet Z2', DeviceType.TABLET], // Castor 'SGP6(11|12|21|41)!': ['Sony', 'Xperia Tablet Z3 Compact', DeviceType.TABLET], - 'SGP7(12|71)!': ['Sony', 'Xperia Tablet Z4', DeviceType.TABLET] + 'SGP7(12|71)!': ['Sony', 'Xperia Tablet Z4', DeviceType.TABLET], }, 'NWZ?-Z1000Series!': ['Sony', 'Walkman Z', DeviceType.MEDIA], @@ -15051,7 +15053,7 @@ exports.ANDROID_MODELS = { 'NSZ-GS7': ['Sony', 'NSZ-GS7', DeviceType.TELEVISION, Flag.GOOGLETV], 'NSZ-GS8': ['Sony', 'NSZ-GS8', DeviceType.TELEVISION, Flag.GOOGLETV], 'NSZ-GT1': ['Sony', 'NSZ-GT1', DeviceType.TELEVISION, Flag.GOOGLETV], - 'NSZ-GU1': ['Sony', 'BRAVIA Smart Stick NSZ-GU1', DeviceType.TELEVISION, Flag.GOOGLETV] + 'NSZ-GU1': ['Sony', 'BRAVIA Smart Stick NSZ-GU1', DeviceType.TELEVISION, Flag.GOOGLETV], }, beetle: ['Sony', 'NSZ-GS7', DeviceType.TELEVISION, Flag.GOOGLETV], @@ -15178,7 +15180,7 @@ exports.ANDROID_MODELS = { Mi730: ['Spice', 'Mi-730 Tab', DeviceType.TABLET], 'Spice Mi-730': ['Spice', 'Mi-730 Tab', DeviceType.TABLET], 'Spice Mi-740': ['Spice', 'Mi-740', DeviceType.TABLET], - SpiceMi1010: ['Spice', 'Mi-1010 Stellar Pad', DeviceType.TABLET] + SpiceMi1010: ['Spice', 'Mi-1010 Stellar Pad', DeviceType.TABLET], }, 'Spice N-300': ['Spice', 'Buddy N300'], @@ -15262,7 +15264,7 @@ exports.ANDROID_MODELS = { 'Starmobile QUEST': ['Starmobile', 'Quest'], 'Starmobile UP': ['Starmobile', 'Up'], 'Starmobile UP Max': ['Starmobile', 'Up Max'], - 'Starmobile VIDA': ['Starmobile', 'Vida'] + 'Starmobile VIDA': ['Starmobile', 'Vida'], }, 'DIAMOND D1': ['Starmobile', 'Diamond D1'], @@ -15278,7 +15280,7 @@ exports.ANDROID_MODELS = { 'STARWAY Andromeda S900': ['Starway', 'Andromeda S900', DeviceType.TABLET], 'Starway Andromeda S910': ['Starway', 'Andromeda S910', DeviceType.TABLET], 'Andromeda S910': ['Starway', 'Andromeda S910', DeviceType.TABLET], - 'Andromeda S940': ['Starway', 'Andromeda S940', DeviceType.TABLET] + 'Andromeda S940': ['Starway', 'Andromeda S940', DeviceType.TABLET], }, 'STX!!': { @@ -15286,7 +15288,7 @@ exports.ANDROID_MODELS = { 'STX Mini': ['Stonex', 'STX Mini'], 'STX MINI 2': ['Stonex', 'STX Mini 2'], 'STX ULTRA': ['Stonex', 'STX Ultra'], - 'STX ULTRA 2': ['Stonex', 'STX Ultra 2'] + 'STX ULTRA 2': ['Stonex', 'STX Ultra 2'], }, 'Scroll!!': { @@ -15298,7 +15300,7 @@ exports.ANDROID_MODELS = { 'Scroll Excel 2': ['Storage Options', 'Scroll Excel 2', DeviceType.TABLET], 'Scroll Extreme': ['Storage Options', 'Scroll Extreme', DeviceType.TABLET], 'Scroll Tablet': ['Storage Options', 'Scroll Tablet', DeviceType.TABLET], - 'Scroll Tablet PC': ['Storage Options', 'Scroll Tablet PC', DeviceType.TABLET] + 'Scroll Tablet PC': ['Storage Options', 'Scroll Tablet PC', DeviceType.TABLET], }, 'eZee!!': { @@ -15340,14 +15342,14 @@ exports.ANDROID_MODELS = { "eZee'Tab97D11-S": ['Storex', "eZee'Tab 97d11s", DeviceType.TABLET], "eZee'Tab10D11-M": ['Storex', "eZee'Tab 10d11m", DeviceType.TABLET], "eZee'tab10D12-S": ['Storex', "eZee'Tab 10d12s", DeviceType.TABLET], - "eZee'Tab13Q10-M": ['Storex', "eZee'Tab 13q10m", DeviceType.TABLET] + "eZee'Tab13Q10-M": ['Storex', "eZee'Tab 13q10m", DeviceType.TABLET], }, 'STOREX LinkBox': ['Storex', 'LinkBox', DeviceType.TELEVISION], 'SRT!!': { 'SRT AN4': ['Strong', 'SRT AN4', DeviceType.TELEVISION], - 'SRT AN4M': ['Strong', 'SRT AN4M', DeviceType.TELEVISION] + 'SRT AN4M': ['Strong', 'SRT AN4M', DeviceType.TELEVISION], }, 'Cyclone!!': { @@ -15355,7 +15357,7 @@ exports.ANDROID_MODELS = { 'CYCLONE EXPLORER II': ['Sumvision', 'Cyclone Explorer 2', DeviceType.TABLET], 'cyclone Titan': ['Sumvision', 'Cyclone Titan', DeviceType.TABLET], 'Cyclone Voyager': ['Sumvision', 'Cyclone Voyager', DeviceType.TABLET], - 'Cyclone Voyager 2': ['Sumvision', 'Cyclone Voyager 2', DeviceType.TABLET] + 'Cyclone Voyager 2': ['Sumvision', 'Cyclone Voyager 2', DeviceType.TABLET], }, M1001: ['Superpad', 'M1001', DeviceType.TABLET], @@ -15371,7 +15373,7 @@ exports.ANDROID_MODELS = { 'SC-90JB': ['Supersonic', 'Matrix SC-90JB', DeviceType.TABLET], 'SC-90MID': ['Supersonic', 'Matrix SC-90MID', DeviceType.TABLET], 'SC-91JB': ['Supersonic', 'Matrix SC-91JB', DeviceType.TABLET], - 'SC-91MID': ['Supersonic', 'Matrix SC-91MID', DeviceType.TABLET] + 'SC-91MID': ['Supersonic', 'Matrix SC-91MID', DeviceType.TABLET], }, 'SUGAR ([A-Z][0-9]?(?: Pro)?)!': ['SUGAR', '$1', DeviceType.TABLET], @@ -15437,7 +15439,7 @@ exports.ANDROID_MODELS = { 'Xplorer Z III': ['Symphony', 'Xplorer ZIII'], 'Xplorer ZV': ['Symphony', 'Xplorer ZV'], 'Symphony ZIV': ['Symphony', 'Xplorer ZIV'], - 'Symphony Z9': ['Symphony', 'Xplorer Z9'] + 'Symphony Z9': ['Symphony', 'Xplorer Z9'], }, W20: ['Symphony', 'Xplorer W20'], @@ -15459,7 +15461,7 @@ exports.ANDROID_MODELS = { 'T-smart G58': ['T-smart', 'G58'], 'T-smart I08': ['T-smart', 'I08'], 'T-smart I58 TD': ['T-smart', 'I58'], - 'T-smart L818': ['T-smart', 'L818'] + 'T-smart L818': ['T-smart', 'L818'], }, 'Tabra QAV801': ['Tabra', 'QAV801', DeviceType.TABLET], @@ -15632,7 +15634,7 @@ exports.ANDROID_MODELS = { 'TCL Y910': ['TCL', 'Hero N3'], 'TCL Y910T': ['TCL', 'Hero N3'], 'TCL TAB 7': ['TCL', 'Tab 7', DeviceType.TABLET], - 'TCL Google TV TV': ['TCL', 'MoVo UD TV', DeviceType.TELEVISION, Flag.GOOGLETV] + 'TCL Google TV TV': ['TCL', 'MoVo UD TV', DeviceType.TELEVISION, Flag.GOOGLETV], }, 'TECNO!!': { @@ -15736,7 +15738,7 @@ exports.ANDROID_MODELS = { 'TECNO P701': ['Tecno', 'DroiPad 7D', DeviceType.TABLET], 'TECNO 8H': ['Tecno', 'DroiPad 8', DeviceType.TABLET], 'TECNO P904': ['Tecno', 'DroiPad 10D', DeviceType.TABLET], - 'TECNO DP10A': ['Tecno', 'DroiPad 10 Pro II', DeviceType.TABLET] + 'TECNO DP10A': ['Tecno', 'DroiPad 10 Pro II', DeviceType.TABLET], }, L3: ['Tecno', 'L3'], @@ -16030,11 +16032,11 @@ exports.ANDROID_MODELS = { TLINK410: ['Thomson', 'Tlink410'], TLINK455: ['Thomson', 'Tlink455'], TLINK475: ['Thomson', 'Tlink475'], - TLINK535: ['Thomson', 'Tlink535'] + TLINK535: ['Thomson', 'Tlink535'], }, MoFing: ['Thomson', 'MoFing', DeviceType.TABLET], - '8950': ['Thomson', '3G 8950', DeviceType.TABLET], + 8950: ['Thomson', '3G 8950', DeviceType.TABLET], PRIMO7: ['Thomson', 'Primo 7', DeviceType.TABLET], PRIMO8: ['Thomson', 'Primo 8', DeviceType.TABLET], 'QM734-8G': ['Thomson', 'QM734-8G', DeviceType.TABLET], @@ -16097,7 +16099,7 @@ exports.ANDROID_MODELS = { 'thl 4400': ['THL', '4400'], thl5000: ['THL', '5000'], 'thl 5000': ['THL', '5000'], - 'thl 5000T': ['THL', '5000T'] + 'thl 5000T': ['THL', '5000T'], }, 'W8 beyond': ['THL', 'W8 beyond'], @@ -16106,7 +16108,7 @@ exports.ANDROID_MODELS = { 'TizzBird!!': { 'TizzBird N1G': ['TizzBird', 'N1', DeviceType.TELEVISION], 'TizzBird S20A': ['TizzBird', 'S20A', DeviceType.TELEVISION], - 'TizzBird S20T': ['TizzBird', 'S20T', DeviceType.TELEVISION] + 'TizzBird S20T': ['TizzBird', 'S20T', DeviceType.TELEVISION], }, MagicBox: ['Tmall', 'MagicBox', DeviceType.TELEVISION], @@ -16114,7 +16116,7 @@ exports.ANDROID_MODELS = { 'tolino tab!!': { 'tolino tab 7': ['Tolino', 'Tab 7', DeviceType.TABLET], 'tolino tab 8': ['Tolino', 'Tab 8', DeviceType.TABLET], - 'tolino tab 8.9': ['Tolino', 'Tab 8.9', DeviceType.TABLET] + 'tolino tab 8.9': ['Tolino', 'Tab 8.9', DeviceType.TABLET], }, ATP7526: ['Tomtec', 'Ultimate10', DeviceType.TABLET], @@ -16142,7 +16144,7 @@ exports.ANDROID_MODELS = { 'TOOKY T1981PLUS': ['Tooky', 'T1981 Plus'], 'TOOKY T1982': ['Tooky', 'T1982'], 'TOOKY T1992': ['Tooky', 'T1992'], - 'TOOKY W1': ['Tooky', 'W1'] + 'TOOKY W1': ['Tooky', 'W1'], }, 'DROIDZ Duo': ['Torque', 'DROIDZ Duo', DeviceType.TABLET], @@ -16206,7 +16208,7 @@ exports.ANDROID_MODELS = { 'Satellite ([A-Z][0-9]{3,3}[A-Z]?)!': ['Toshiba', 'Satellite $1', DeviceType.DESKTOP], 'Satellite ([A-Z][0-9]{2,2}[A-Z]+-[A-Z])!': ['Toshiba', 'Satellite $1', DeviceType.DESKTOP], 'Satellite ([A-Z][0-9]{2,2}-[A-Z]?)!': ['Toshiba', 'Satellite $1', DeviceType.DESKTOP], - 'Satellite Pro ([A-Z][0-9]{3,3})!': ['Toshiba', 'Satellite Pro $1', DeviceType.DESKTOP] + 'Satellite Pro ([A-Z][0-9]{3,3})!': ['Toshiba', 'Satellite Pro $1', DeviceType.DESKTOP], }, 'StarTab 715x': ['Touch+', 'Startab 715', DeviceType.TABLET], @@ -16230,7 +16232,7 @@ exports.ANDROID_MODELS = { 'ST10216-3!': ['Trekstor', 'Surftab Ventos 10.1', DeviceType.TABLET], 'ST70404-1!': ['Trekstor', 'Surftab Xirion 7.0', DeviceType.TABLET], 'ST70408-1!': ['Trekstor', 'Surftab Xirion 7.0', DeviceType.TABLET], - 'ST10416-1!': ['Trekstor', 'Surftab Xirion 10.1', DeviceType.TABLET] + 'ST10416-1!': ['Trekstor', 'Surftab Xirion 10.1', DeviceType.TABLET], }, 'Trevi PHABLET 4C': ['Trevi', 'Phablet 4C'], @@ -16259,7 +16261,7 @@ exports.ANDROID_MODELS = { 'TREQ Tune Z': ['Treq', 'Tune Z', DeviceType.TABLET], 'TREQ Turbo': ['Treq', 'Turbo', DeviceType.TABLET], 'TREQ-TURBO': ['Treq', 'Turbo', DeviceType.TABLET], - 'TREQ 3G Turbo': ['Treq', 'Turbo', DeviceType.TABLET] + 'TREQ 3G Turbo': ['Treq', 'Turbo', DeviceType.TABLET], }, 'Phablet 5,3 Q': ['Trevi', 'Phablet 5.3 Q'], @@ -16296,7 +16298,7 @@ exports.ANDROID_MODELS = { 'Amazing X5s': ['TWM', 'Amazing X5s'], 'Amazing X6': ['TWM', 'Amazing X6'], 'Amazing X7': ['TWM', 'Amazing X7'], - 'Fantastic T3': ['TWM', 'Fantastic T3'] + 'Fantastic T3': ['TWM', 'Fantastic T3'], }, A6S: ['TWM', 'Amazing A6S'], @@ -16354,7 +16356,7 @@ exports.ANDROID_MODELS = { 'UMI Super': ['UMI', 'Super'], 'UMI TOUCH': ['UMI', 'Touch'], 'UMI TOUCH X': ['UMI', 'Touch X'], - 'UMI ZERO': ['UMI', 'Zero'] + 'UMI ZERO': ['UMI', 'Zero'], }, 'A9 Pro': ['UMI', 'A9 Pro'], @@ -16379,7 +16381,7 @@ exports.ANDROID_MODELS = { 'UNUSUAL 10X': ['Unusual', '10X', DeviceType.TABLET], 'UNUSUAL 10XQUAD': ['Unusual', '10X', DeviceType.TABLET], 'Unusual 10Z': ['Unusual', '10Z', DeviceType.TABLET], - 'UNUSUAL 40Y': ['Unusual', '40Y', DeviceType.TABLET] + 'UNUSUAL 40Y': ['Unusual', '40Y', DeviceType.TABLET], }, 'UOOGOU!!': { @@ -16393,19 +16395,19 @@ exports.ANDROID_MODELS = { 'UOOGOU-T8': ['Uoogou', 'T8'], 'UOOGOU X3': ['Uoogou', 'X3'], 'UOOGOU X5': ['Uoogou', 'X5'], - 'UOOGOU X6': ['Uoogou', 'X6'] + 'UOOGOU X6': ['Uoogou', 'X6'], }, 'UTime!!': { 'UTime i8': ['UTime', 'i8'], 'UTime U100': ['UTime', 'U100'], - 'UTime X1': ['UTime', 'X1'] + 'UTime X1': ['UTime', 'X1'], }, 'Usmart!!': { 'USmart CL600': ['USmart', 'CL600'], 'Usmart F450': ['USmart', 'F450'], - 'Usmart-F450': ['USmart', 'F450'] + 'Usmart-F450': ['USmart', 'F450'], }, KUNO4: ['uWriteTouch', 'KUNO 4', DeviceType.TABLET], @@ -16423,7 +16425,7 @@ exports.ANDROID_MODELS = { 'VS TOUCHTAB 7DC V': ['Versus', 'Touchtab 7 Dual Core', DeviceType.TABLET], 'VS TOUCHTAB 8DC': ['Versus', 'Touchtab 8 Dual Core', DeviceType.TABLET], 'VS TOUCHTAB 9': ['Versus', 'Touchtab 9', DeviceType.TABLET], - 'VS TOUCHTAB 10.1DC': ['Versus', 'Touchtab 10.1 Dual Core', DeviceType.TABLET] + 'VS TOUCHTAB 10.1DC': ['Versus', 'Touchtab 10.1 Dual Core', DeviceType.TABLET], }, 'verykool!!': { @@ -16509,7 +16511,7 @@ exports.ANDROID_MODELS = { 'verykool T742': ['verykool', 'Kolorpad T742', DeviceType.TABLET], 'verykool T7440': ['verykool', 'Kolorpad II T7440', DeviceType.TABLET], verykoolT7442: ['verykool', 'Kolorpad III T7442', DeviceType.TABLET], - VerykoolTL8010: ['verykool', 'Kolorpad TL8010', DeviceType.TABLET] + VerykoolTL8010: ['verykool', 'Kolorpad TL8010', DeviceType.TABLET], }, s732: ['verykool', 's732'], @@ -16565,7 +16567,7 @@ exports.ANDROID_MODELS = { 'Videocon Z55Krypton': ['Videocon', 'Infinium Z55 Krypton'], 'VIDEOCON ZEST FLAME': ['Videocon', 'Zest Flame'], 'VIDEOCON ZEST FLASH': ['Videocon', 'Zest Flash'], - 'Videocon V35DC': ['Videocon', 'Zest V35DC'] + 'Videocon V35DC': ['Videocon', 'Zest V35DC'], }, Z30Aire: ['Videocon', 'Infinium Z30 Aire'], @@ -16654,14 +16656,14 @@ exports.ANDROID_MODELS = { 'VINUS V8': ['Vinus', 'V8'], 'VINUS V9': ['Vinus', 'V9'], 'VINUS V10': ['Vinus', 'V10'], - 'VINUS X2': ['Vinus', 'X2'] + 'VINUS X2': ['Vinus', 'X2'], }, 'VL-[0-9]{3,3}!!': { 'VL-107!': ['Visual Land', 'Prestige 7', DeviceType.TABLET], 'VL-109': ['Visual Land', 'Connect 9', DeviceType.TABLET], 'VL-110': ['Visual Land', 'Prestige 10', DeviceType.TABLET], - 'VL-879': ['Visual Land', 'Connect 7', DeviceType.TABLET] + 'VL-879': ['Visual Land', 'Connect 7', DeviceType.TABLET], }, PRO7D: ['Visual Land', 'Prestige 7D', DeviceType.TABLET], @@ -16881,7 +16883,7 @@ exports.ANDROID_MODELS = { 'vivo Y928': ['Vivo', 'Y928'], 'VIV-vivo Y928': ['Vivo', 'Y928'], 'VIV-vivo Y937': ['Vivo', 'Y937'], - 'vivo Y937': ['Vivo', 'Y937'] + 'vivo Y937': ['Vivo', 'Y937'], }, V1916A: ['Vivo', 'iQOO Pro'], @@ -17259,7 +17261,7 @@ exports.ANDROID_MODELS = { 'miTab NEO': ['Wolder', 'miTab NEO', DeviceType.TABLET], 'miTab THINK': ['Wolder', 'miTab THINK', DeviceType.TABLET], 'miTab Seattle': ['Wolder', 'miTab SEATTLE', DeviceType.TABLET], - 'miTab URBAN': ['Wolder', 'miTab URBAN', DeviceType.TABLET] + 'miTab URBAN': ['Wolder', 'miTab URBAN', DeviceType.TABLET], }, 'AT-A[QS][0-9]{2,2}!!': { @@ -17289,7 +17291,7 @@ exports.ANDROID_MODELS = { 'AT-AS50Q': ['Wolfgang', 'AT-AS50Q'], 'AT-AS53N': ['Wolfgang', 'AT-AS53N'], 'AT-AS55HD': ['Wolfgang', 'AT-AS55HD'], - 'AT-AS55HD1': ['Wolfgang', 'AT-AS55HD1'] + 'AT-AS55HD1': ['Wolfgang', 'AT-AS55HD1'], }, M12: ['Wopad', 'M12', DeviceType.TABLET], @@ -17367,7 +17369,7 @@ exports.ANDROID_MODELS = { 'Woxter Nimbus 102Q': ['Woxter', 'Nimbus 102Q', DeviceType.TABLET], 'Woxter Nimbus1000': ['Woxter', 'Nimbus 1000', DeviceType.TABLET], 'Woxter Nimbus1100RX': ['Woxter', 'Nimbus 1100 RX', DeviceType.TABLET], - 'Woxter Smart Tab 80': ['Woxter', 'Smart Tab 80', DeviceType.TABLET] + 'Woxter Smart Tab 80': ['Woxter', 'Smart Tab 80', DeviceType.TABLET], }, 'Wxt Tab PC 65CXi': ['Woxter', 'Tablet PC 65 CXi', DeviceType.TABLET], @@ -17377,28 +17379,28 @@ exports.ANDROID_MODELS = { Xiaomi: ['Xiaomi', 'Mi 1'], '(Xiaomi )?(Xiaomi|Xiaomi M|MI)!!': { - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?(1|ONE)($| ?Plus| ?C)!': ['Xiaomi', 'Mi 1'], - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?(1|ONE)S!': ['Xiaomi', 'Mi 1S'], - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?(2|TWO)($|/|C|Plus)!': ['Xiaomi', 'Mi 2'], - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?(2|TWO)A!': ['Xiaomi', 'Mi 2A'], - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?(2|TWO)S!': ['Xiaomi', 'Mi 2S'], - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?(3|THREE)($|/|C|W|Plus)!': ['Xiaomi', 'Mi 3'], - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?4($|W| ?LTE)!': ['Xiaomi', 'Mi 4'], - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?4c!': ['Xiaomi', 'Mi 4c'], - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?4i!': ['Xiaomi', 'Mi 4i'], - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?4s!': ['Xiaomi', 'Mi 4s'], - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?5$!': ['Xiaomi', 'Mi 5'], - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?5c$!': ['Xiaomi', 'Mi 5c'], - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?5s$!': ['Xiaomi', 'Mi 5s'], - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?5s Plus$!': ['Xiaomi', 'Mi 5s Plus'], - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?5x$!': ['Xiaomi', 'Mi 5x'], - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?6$!': ['Xiaomi', 'Mi 6'], - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?6X$!': ['Xiaomi', 'Mi 6X'], - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?7S$!': ['Xiaomi', 'Mi 7S'], - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?A1$!': ['Xiaomi', 'Mi A1'], - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?A2$!': ['Xiaomi', 'Mi A2'], - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?A2 Lite!': ['Xiaomi', 'Mi A2 Lite'], - '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ -]?A3$!': ['Xiaomi', 'Mi A3'] + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?(1|ONE)($| ?Plus| ?C)!': ['Xiaomi', 'Mi 1'], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?(1|ONE)S!': ['Xiaomi', 'Mi 1S'], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?(2|TWO)($|\/|C|Plus)!': ['Xiaomi', 'Mi 2'], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?(2|TWO)A!': ['Xiaomi', 'Mi 2A'], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?(2|TWO)S!': ['Xiaomi', 'Mi 2S'], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?(3|THREE)($|\/|C|W|Plus)!': ['Xiaomi', 'Mi 3'], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?4($|W| ?LTE)!': ['Xiaomi', 'Mi 4'], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?4c!': ['Xiaomi', 'Mi 4c'], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?4i!': ['Xiaomi', 'Mi 4i'], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?4s!': ['Xiaomi', 'Mi 4s'], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?5$!': ['Xiaomi', 'Mi 5'], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?5c$!': ['Xiaomi', 'Mi 5c'], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?5s$!': ['Xiaomi', 'Mi 5s'], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?5s Plus$!': ['Xiaomi', 'Mi 5s Plus'], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?5x$!': ['Xiaomi', 'Mi 5x'], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?6$!': ['Xiaomi', 'Mi 6'], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?6X$!': ['Xiaomi', 'Mi 6X'], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?7S$!': ['Xiaomi', 'Mi 7S'], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?A1$!': ['Xiaomi', 'Mi A1'], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?A2$!': ['Xiaomi', 'Mi A2'], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?A2 Lite!': ['Xiaomi', 'Mi A2 Lite'], + '(Xiaomi )?(Xiaomi|Xiaomi M|MI)[ \-]?A3$!': ['Xiaomi', 'Mi A3'], }, 'MI 8': ['Xiaomi', 'Mi 8'], @@ -17427,7 +17429,7 @@ exports.ANDROID_MODELS = { '(Xiaomi|Xiaomi Mi|MI) Note ?2!': ['Xiaomi', 'Mi Note 2'], '(Xiaomi|Xiaomi Mi|MI) Note ?3!': ['Xiaomi', 'Mi Note 3'], '(Xiaomi|Xiaomi Mi|MI) Note ?Plus!': ['Xiaomi', 'Mi Note Plus'], - '(Xiaomi|Xiaomi Mi|MI) Note ?Pro!': ['Xiaomi', 'Mi Note Pro'] + '(Xiaomi|Xiaomi Mi|MI) Note ?Pro!': ['Xiaomi', 'Mi Note Pro'], }, '(Xiaomi )?(MI )?MAX$!': ['Xiaomi', 'Mi Max'], @@ -17449,7 +17451,7 @@ exports.ANDROID_MODELS = { '(Xiaomi )?20131(22)!': ['Xiaomi', 'Mi Note'], '(Xiaomi )?20146(18)!': ['Xiaomi', 'Mi Note'], '(Xiaomi )?20155(01)!': ['Xiaomi', 'Mi Note Pro'], - '(Xiaomi )?20156(11)!': ['Xiaomi', 'Mi Note 3'] + '(Xiaomi )?20156(11)!': ['Xiaomi', 'Mi Note 3'], }, '(Xiaomi )?(Redmi|RedRice|HM)!!': { @@ -17478,36 +17480,36 @@ exports.ANDROID_MODELS = { '(Xiaomi )?(Redmi|HM) ?8A!': ['Xiaomi', 'Redmi 8A'], '(Xiaomi )?(Redmi|HM) ?9C!': ['Xiaomi', 'Redmi 9C'], '(Xiaomi )?(Redmi|HM) ?9T!': ['Xiaomi', 'Redmi 9T'], - '(Xiaomi )?Redmi[ -]K20$!': ['Xiaomi', 'Redmi K20'], - '(Xiaomi )?Redmi[ -]K20 Pro!': ['Xiaomi', 'Redmi K20 Pro'], - '(Xiaomi )?Redmi[ -]K30 5G!': ['Xiaomi', 'Redmi K30'], - '(Xiaomi )?Redmi[ -]K30 Pro!': ['Xiaomi', 'Redmi K30 Pro'], - '(Xiaomi )?Redmi[ -]S2$!': ['Xiaomi', 'Redmi S2'], - '(Xiaomi )?Redmi[ -]Y1$!': ['Xiaomi', 'Redmi Y1'], - '(Xiaomi )?Redmi[ -]Y1 Lite!': ['Xiaomi', 'Redmi Y1 Lite'], - '(Xiaomi )?Redmi[ -]Y2$!': ['Xiaomi', 'Redmi Y2'], - '(Xiaomi )?Redmi[ -]Go$!': ['Xiaomi', 'Redmi Go'] - }, - - '(Xiaomi )?(Redmi|HM)[ -]?Note!!': { - '(Xiaomi )?(Redmi|HM) ?Note([ -]?1| LTE| 4G|$)!': ['Xiaomi', 'Redmi Note'], - '(Xiaomi )?(Redmi|HM)[ -]Note 2$!': ['Xiaomi', 'Redmi Note 2'], - '(Xiaomi )?Redmi[ -]Note 3$!': ['Xiaomi', 'Redmi Note 3'], - '(Xiaomi )?Redmi[ -]Note 3 Pro!': ['Xiaomi', 'Redmi Note 3 Pro'], - '(Xiaomi )?Redmi[ -]Note ?4$!': ['Xiaomi', 'Redmi Note 4'], - '(Xiaomi )?Redmi[ -]Note ?4X!': ['Xiaomi', 'Redmi Note 4X'], - '(Xiaomi )?Redmi[ -]Note ?5$!': ['Xiaomi', 'Redmi Note 5'], - '(Xiaomi )?Redmi[ -]Note ?5A!': ['Xiaomi', 'Redmi Note 5A'], - '(Xiaomi )?Redmi[ -]Note 5 Pro!': ['Xiaomi', 'Redmi Note 5 Pro'], - '(Xiaomi )?Redmi[ -]Note 6 Pro!': ['Xiaomi', 'Redmi Note 6 Pro'], - '(Xiaomi )?Redmi[ -]Note 7$!': ['Xiaomi', 'Redmi Note 7'], - '(Xiaomi )?Redmi[ -]Note 7 Pro!': ['Xiaomi', 'Redmi Note 7 Pro'], - '(Xiaomi )?Redmi[ -]Note 8$!': ['Xiaomi', 'Redmi Note 8'], - '(Xiaomi )?Redmi[ -]Note 8 Pro!': ['Xiaomi', 'Redmi Note 8 Pro'], - '(Xiaomi )?Redmi[ -]Note 8T!': ['Xiaomi', 'Redmi Note 8T'], - '(Xiaomi )?Redmi[ -]Note 9$!': ['Xiaomi', 'Redmi Note 9'], - '(Xiaomi )?Redmi[ -]Note 9S!': ['Xiaomi', 'Redmi Note 9S'], - '(Xiaomi )?Redmi[ -]Note 9 Pro!': ['Xiaomi', 'Redmi Note 9 Pro'] + '(Xiaomi )?Redmi[ \-]K20$!': ['Xiaomi', 'Redmi K20'], + '(Xiaomi )?Redmi[ \-]K20 Pro!': ['Xiaomi', 'Redmi K20 Pro'], + '(Xiaomi )?Redmi[ \-]K30 5G!': ['Xiaomi', 'Redmi K30'], + '(Xiaomi )?Redmi[ \-]K30 Pro!': ['Xiaomi', 'Redmi K30 Pro'], + '(Xiaomi )?Redmi[ \-]S2$!': ['Xiaomi', 'Redmi S2'], + '(Xiaomi )?Redmi[ \-]Y1$!': ['Xiaomi', 'Redmi Y1'], + '(Xiaomi )?Redmi[ \-]Y1 Lite!': ['Xiaomi', 'Redmi Y1 Lite'], + '(Xiaomi )?Redmi[ \-]Y2$!': ['Xiaomi', 'Redmi Y2'], + '(Xiaomi )?Redmi[ \-]Go$!': ['Xiaomi', 'Redmi Go'], + }, + + '(Xiaomi )?(Redmi|HM)[ \-]?Note!!': { + '(Xiaomi )?(Redmi|HM) ?Note([ \-]?1| LTE| 4G|$)!': ['Xiaomi', 'Redmi Note'], + '(Xiaomi )?(Redmi|HM)[ \-]Note 2$!': ['Xiaomi', 'Redmi Note 2'], + '(Xiaomi )?Redmi[ \-]Note 3$!': ['Xiaomi', 'Redmi Note 3'], + '(Xiaomi )?Redmi[ \-]Note 3 Pro!': ['Xiaomi', 'Redmi Note 3 Pro'], + '(Xiaomi )?Redmi[ \-]Note ?4$!': ['Xiaomi', 'Redmi Note 4'], + '(Xiaomi )?Redmi[ \-]Note ?4X!': ['Xiaomi', 'Redmi Note 4X'], + '(Xiaomi )?Redmi[ \-]Note ?5$!': ['Xiaomi', 'Redmi Note 5'], + '(Xiaomi )?Redmi[ \-]Note ?5A!': ['Xiaomi', 'Redmi Note 5A'], + '(Xiaomi )?Redmi[ \-]Note 5 Pro!': ['Xiaomi', 'Redmi Note 5 Pro'], + '(Xiaomi )?Redmi[ \-]Note 6 Pro!': ['Xiaomi', 'Redmi Note 6 Pro'], + '(Xiaomi )?Redmi[ \-]Note 7$!': ['Xiaomi', 'Redmi Note 7'], + '(Xiaomi )?Redmi[ \-]Note 7 Pro!': ['Xiaomi', 'Redmi Note 7 Pro'], + '(Xiaomi )?Redmi[ \-]Note 8$!': ['Xiaomi', 'Redmi Note 8'], + '(Xiaomi )?Redmi[ \-]Note 8 Pro!': ['Xiaomi', 'Redmi Note 8 Pro'], + '(Xiaomi )?Redmi[ \-]Note 8T!': ['Xiaomi', 'Redmi Note 8T'], + '(Xiaomi )?Redmi[ \-]Note 9$!': ['Xiaomi', 'Redmi Note 9'], + '(Xiaomi )?Redmi[ \-]Note 9S!': ['Xiaomi', 'Redmi Note 9S'], + '(Xiaomi )?Redmi[ \-]Note 9 Pro!': ['Xiaomi', 'Redmi Note 9 Pro'], }, '(Xiaomi |HM)?20!!': { @@ -17527,7 +17529,7 @@ exports.ANDROID_MODELS = { '(Xiaomi |HM)?20147(15)!': ['Xiaomi', 'Redmi Note'], '(Xiaomi |HM)?20149(11)!': ['Xiaomi', 'Redmi Note'], '(Xiaomi |HM)?20150(52)!': ['Xiaomi', 'Redmi Note 2'], - '(Xiaomi |HM)?20160(51)!': ['Xiaomi', 'Redmi Note 4'] + '(Xiaomi |HM)?20160(51)!': ['Xiaomi', 'Redmi Note 4'], }, '21061119DG': ['Xiaomi', 'Redmi 10'], @@ -17583,7 +17585,7 @@ exports.ANDROID_MODELS = { M2103K19PG: ['Xiaomi', 'Poco M3 Pro'], '(Xiaomi |HM)?21!!': { - '(Xiaomi |HM)?21091(19)!': ['Xiaomi', 'Mi 11 Lite'] + '(Xiaomi |HM)?21091(19)!': ['Xiaomi', 'Mi 11 Lite'], }, 'POCOPHONE F1': ['Xiaomi', 'Pocophone F1'], @@ -17635,7 +17637,7 @@ exports.ANDROID_MODELS = { '(Xiaomi|Xiaomi Mi|MI) Pad 2!': ['Xiaomi', 'Mi Pad 2', DeviceType.TABLET], '(Xiaomi|Xiaomi Mi|MI) Pad 3!': ['Xiaomi', 'Mi Pad 3', DeviceType.TABLET], '(Xiaomi|Xiaomi Mi|MI) Pad 4$!': ['Xiaomi', 'Mi Pad 4', DeviceType.TABLET], - '(Xiaomi|Xiaomi Mi|MI) Pad 4 Plus!': ['Xiaomi', 'Mi Pad 4 Plus', DeviceType.TABLET] + '(Xiaomi|Xiaomi Mi|MI) Pad 4 Plus!': ['Xiaomi', 'Mi Pad 4 Plus', DeviceType.TABLET], }, '21051182G': ['Xiaomi', 'Mi Pad 5', DeviceType.TABLET], @@ -17646,7 +17648,7 @@ exports.ANDROID_MODELS = { '(Xiaomi|Xiaomi Mi|MI)Box2$!': ['Xiaomi', 'Mi Box 2', DeviceType.TELEVISION], '(Xiaomi|Xiaomi Mi|MI)Box3$!': ['Xiaomi', 'Mi Box 3', DeviceType.TELEVISION], '(Xiaomi|Xiaomi Mi|MI)Box3S!': ['Xiaomi', 'Mi Box 3S', DeviceType.TELEVISION], - '(Xiaomi|Xiaomi Mi|MI)Box3 Pro!': ['Xiaomi', 'Mi Box 3 Pro', DeviceType.TELEVISION] + '(Xiaomi|Xiaomi Mi|MI)Box3 Pro!': ['Xiaomi', 'Mi Box 3 Pro', DeviceType.TELEVISION], }, '(Xiaomi|Xiaomi Mi|MI)TV!!': { @@ -17655,7 +17657,7 @@ exports.ANDROID_MODELS = { '(Xiaomi|Xiaomi Mi|MI)TV2S!': ['Xiaomi', 'Mi TV 2S', DeviceType.TELEVISION], '(Xiaomi|Xiaomi Mi|MI)TV3($|-)!': ['Xiaomi', 'Mi TV 3', DeviceType.TELEVISION], '(Xiaomi|Xiaomi Mi|MI)TV4($|-)!': ['Xiaomi', 'Mi TV 4', DeviceType.TELEVISION], - '(Xiaomi|Xiaomi Mi|MI)TV4A!': ['Xiaomi', 'Mi TV 4A', DeviceType.TELEVISION] + '(Xiaomi|Xiaomi Mi|MI)TV4A!': ['Xiaomi', 'Mi TV 4A', DeviceType.TELEVISION], }, 'XO Learning tablet': ['XO', 'Tablet', DeviceType.TABLET], @@ -17719,7 +17721,7 @@ exports.ANDROID_MODELS = { X900: ['XOLO', 'X900'], 'Xolo X900': ['XOLO', 'X900'], 'XOLO X910': ['XOLO', 'X910'], - 'XOLO X1000': ['XOLO', 'X1000'] + 'XOLO X1000': ['XOLO', 'X1000'], }, BLACK: ['XOLO', 'Black'], @@ -17885,7 +17887,7 @@ exports.ANDROID_MODELS = { 'ANDY 6EL LTE': ['Yezz', 'Andy 6EL'], 'YEZZ-6Q': ['Yezz', 'Andy 6Q'], 'Andy 6Q': ['Yezz', 'Andy 6Q'], - 'Yezz-T7FD': ['Yezz', 'Epic T7FD', DeviceType.TABLET] + 'Yezz-T7FD': ['Yezz', 'Epic T7FD', DeviceType.TABLET], }, C868: ['Yicheer', 'C868'], @@ -18011,7 +18013,7 @@ exports.ANDROID_MODELS = { 'ultrafone 504': ['Zen', 'Ultrafone 504'], 'ultrafone 506': ['Zen', 'Ultrafone 506'], 'ultrafone 701HD': ['Zen', 'Ultrafone 701HD'], - 'ultrafone 701FHD': ['Zen', 'Ultrafone 701FHD'] + 'ultrafone 701FHD': ['Zen', 'Ultrafone 701FHD'], }, 'ZIGO EON5I': ['Zigo', 'Eon 5i'], @@ -18031,7 +18033,7 @@ exports.ANDROID_MODELS = { 'ZTE A[0-9]{3,3}!!': { 'ZTE A880': ['ZTE', 'Xiao Xian'], - 'ZTE A905L': ['ZTE', 'A905L'] + 'ZTE A905L': ['ZTE', 'A905L'], }, 'ZTE B[0-9]{3,3}!!': { @@ -18039,7 +18041,7 @@ exports.ANDROID_MODELS = { 'ZTE B792': ['ZTE', 'Boost Kuta'], 'ZTE B795': ['ZTE', 'Boost Icon Nero'], 'ZTE B816': ['ZTE', 'Boost INDY'], - 'ZTE B880': ['ZTE', 'Xiao Xian 2'] + 'ZTE B880': ['ZTE', 'Xiao Xian 2'], }, 'ZTE BA[0-9]{3,3}!!': { @@ -18054,7 +18056,7 @@ exports.ANDROID_MODELS = { 'ZTE BA611T': ['ZTE', 'BA611T'], 'ZTE BA620': ['ZTE', 'Blade X3'], 'ZTE BA910': ['ZTE', 'Blade A910'], - 'ZTE BA910T': ['ZTE', 'Blade A910'] + 'ZTE BA910T': ['ZTE', 'Blade A910'], }, 'ZTE BV0[0-9]{3,3}!!': { @@ -18065,7 +18067,7 @@ exports.ANDROID_MODELS = { 'ZTE BV0720T': ['ZTE', 'Blade A2'], 'ZTE BV0730': ['ZTE', 'Blade A2 Plus'], 'ZTE BV0800': ['ZTE', 'Blade V8'], - 'ZTE BV0870': ['ZTE', 'BV0870'] + 'ZTE BV0870': ['ZTE', 'BV0870'], }, 'ZTE C[0-9]{3,3}!!': { @@ -18074,7 +18076,7 @@ exports.ANDROID_MODELS = { 'ZTE C880A': ['ZTE', 'Blade A1'], 'ZTE C880D': ['ZTE', 'C880D'], 'ZTE C880S': ['ZTE', 'Xiao Xian 3'], - 'ZTE C880U': ['ZTE', 'Blade A1'] + 'ZTE C880U': ['ZTE', 'Blade A1'], }, 'ZTE C N[0-9]{3,3}!!': { @@ -18083,17 +18085,17 @@ exports.ANDROID_MODELS = { 'ZTE C N700': ['ZTE', 'C N700'], 'ZTE C N760': ['ZTE', 'C N760'], 'ZTE C N780': ['ZTE', 'C N780'], - 'ZTE C N880!': ['ZTE', 'Blade'] + 'ZTE C N880!': ['ZTE', 'Blade'], }, 'ZTE C R[0-9]{3,3}!!': { 'ZTE C R750': ['ZTE', 'C R750'], - 'ZTE C R750+': ['ZTE', 'C R750'] + 'ZTE C R750+': ['ZTE', 'C R750'], }, 'ZTE C X[0-9]{3,3}!!': { 'ZTE C X500': ['ZTE', 'Score'], - 'ZTE C X920': ['ZTE', 'C X920'] + 'ZTE C X920': ['ZTE', 'C X920'], }, 'ZTE ?G[0-9]{3,3}!!': { @@ -18103,7 +18105,7 @@ exports.ANDROID_MODELS = { 'ZTE G719C': ['ZTE', 'G719C'], 'ZTE G720C': ['ZTE', 'G720C'], 'ZTE ?G720T!': ['ZTE', 'G720T'], - 'ZTE G721C': ['ZTE', 'G721C'] + 'ZTE G721C': ['ZTE', 'G721C'], }, '(ZTE ?)?N[0-9]{3,3}!!': { @@ -18151,7 +18153,7 @@ exports.ANDROID_MODELS = { 'ZTE N980': ['ZTE', 'N980'], 'ZTE N983': ['ZTE', 'N983'], N986: ['ZTE', 'N986'], - 'ZTE N986': ['ZTE', 'N986'] + 'ZTE N986': ['ZTE', 'N986'], }, '(ZXY-)?(ZTE )?N[0-9]{4,4}!!': { @@ -18175,7 +18177,7 @@ exports.ANDROID_MODELS = { N9520: ['ZTE', 'Stormer'], N9521: ['ZTE', 'Boost Max+'], N9810: ['ZTE', 'Vital'], - N9835: ['ZTE', 'Grand S Pro'] + N9835: ['ZTE', 'Grand S Pro'], }, '(ZXY-)?NX[0-9]{2,3}!!': { @@ -18211,17 +18213,17 @@ exports.ANDROID_MODELS = { NX601J: ['ZTE', 'Nubia X6'], NX659J: ['ZTE', 'Nubia Red Magic'], NX629J: ['ZTE', 'Nubia Red Magic 3'], - NX669J: ['ZTE', 'Nubia Red Magic 6'] + NX669J: ['ZTE', 'Nubia Red Magic 6'], }, 'ZTE K813': ['ZTE', 'K813'], 'ZTE M[0-9]{3,3}!!': { - 'ZTE M901C': ['ZTE', 'Grand Memo 2'] + 'ZTE M901C': ['ZTE', 'Grand Memo 2'], }, 'ZTE P[0-9]{3,3}!!': { - 'ZTE P727A': ['ZTE', 'P722A'] + 'ZTE P727A': ['ZTE', 'P722A'], }, 'ZTE ?Q[0-9]{3,3}!!': { @@ -18248,7 +18250,7 @@ exports.ANDROID_MODELS = { 'ZTE Q802D': ['ZTE', 'Q802D'], 'ZTE ?Q802T!': ['ZTE', 'Q802T'], 'ZTE Q805T': ['ZTE', 'Q805T'], - 'ZTE Q806T': ['ZTE', 'Q806T'] + 'ZTE Q806T': ['ZTE', 'Q806T'], }, 'ZTE Q[0-9]!!': { @@ -18256,18 +18258,18 @@ exports.ANDROID_MODELS = { 'ZTE Q2S-T': ['ZTE', 'Q2S-T'], 'ZTE Q5-T': ['ZTE', 'Q5-T'], 'ZTE Q7': ['ZTE', 'Q7'], - 'ZTE Q7-C': ['ZTE', 'Q7-C'] + 'ZTE Q7-C': ['ZTE', 'Q7-C'], }, 'ZTE R[0-9]{3,3}!!': { - 'ZTE R880H': ['ZTE', 'Spark'] + 'ZTE R880H': ['ZTE', 'Spark'], }, 'ZTE S[0-9]{3,3}!!': { 'ZTE S118': ['ZTE', 'Grand S Lite'], 'ZTE S158': ['ZTE', 'S158'], 'ZTE S251': ['ZTE', 'Grand S II'], - 'ZTE S291': ['ZTE', 'Grand S II'] + 'ZTE S291': ['ZTE', 'Grand S II'], }, 'ZTE T[0-9]!!': { @@ -18301,7 +18303,7 @@ exports.ANDROID_MODELS = { 'ZTE T815': ['ZTE', 'Tempo'], // Telstra 'ZTE T816': ['ZTE', 'Smart Plus'], // Telstra 'ZTE T912': ['ZTE', 'Blade S6 Lite'], - 'ZTE T920': ['ZTE', 'Blade S7'] + 'ZTE T920': ['ZTE', 'Blade S7'], }, 'ZTE T ?U[0-9]{3,3}!!': { @@ -18315,7 +18317,7 @@ exports.ANDROID_MODELS = { 'ZTE T U830': ['ZTE', 'T U830'], 'ZTE T ?U880!': ['ZTE', 'Blade'], 'ZTE T ?U900!': ['ZTE', 'T U900'], - 'ZTE T ?U960!': ['ZTE', 'T U960'] + 'ZTE T ?U960!': ['ZTE', 'T U960'], }, '(ZTE ?)?U[0-9]{3,3}!!': { @@ -18354,15 +18356,15 @@ exports.ANDROID_MODELS = { 'ZTE U969': ['ZTE', 'U969'], 'ZTE U970!': ['ZTE', 'Grand X'], 'ZTE U985': ['ZTE', 'Grand Era'], - 'ZTE U988S': ['ZTE', 'Geek'] + 'ZTE U988S': ['ZTE', 'Geek'], }, 'ZTE U N[0-9]{3,3}!!': { 'ZTE U N720': ['ZTE', 'U N720'], - 'ZTE U N721': ['ZTE', 'U N721'] + 'ZTE U N721': ['ZTE', 'U N721'], }, - 'ZTE U[ (-]V[)-]?[0-9]{3,3}!!': { + 'ZTE U[ \(\-]V[\)\-]?[0-9]{3,3}!!': { 'ZTE U V760': ['ZTE', 'U V760'], 'ZTE U V852': ['ZTE', 'Dreamer'], 'ZTE U V856': ['ZTE', 'Mimosa Mini'], @@ -18374,12 +18376,12 @@ exports.ANDROID_MODELS = { 'ZTE U(V)880+': ['ZTE', 'Blade'], 'ZTE U V881': ['ZTE', 'Blade II'], 'ZTE U V889D': ['ZTE', 'U V889D'], - 'ZTE U V960': ['ZTE', 'Skate'] + 'ZTE U V960': ['ZTE', 'Skate'], }, 'ZTE U X[0-9]{3,3}!!': { 'ZTE U X850': ['ZTE', 'Racer'], - 'ZTE U X876': ['ZTE', 'U X876'] + 'ZTE U X876': ['ZTE', 'U X876'], }, '(ZTE ?)?V[0-9]{3,3}[A-Z]!!': { @@ -18409,7 +18411,7 @@ exports.ANDROID_MODELS = { ZTEv967s: ['ZTE', 'V967S'], 'ZTE V970M!': ['ZTE', 'Grand X'], 'ZTE V970T': ['ZTE', 'Grand X'], - 'ZTE V993W': ['ZTE', 'Nubia V5'] + 'ZTE V993W': ['ZTE', 'Nubia V5'], }, '(ZTE ?)?V ?[0-9]{3,3}!!': { @@ -18448,7 +18450,7 @@ exports.ANDROID_MODELS = { 'ZTE V985 Grand Era': ['ZTE', 'Grand Era'], 'ZTE V ?987!': ['ZTE', 'Grand X Quad'], 'ZTE V988': ['ZTE', 'Grand S'], - 'ZTE V998': ['ZTE', 'Grand S'] + 'ZTE V998': ['ZTE', 'Grand S'], }, '(ZTE ?)?X[0-9]{3,3}!!': { @@ -18458,7 +18460,7 @@ exports.ANDROID_MODELS = { 'X501 USA Cricket': ['ZTE', 'Groove'], 'X501 USA RS': ['ZTE', 'Groove'], 'ZTE X850': ['ZTE', 'Racer'], - 'ZTE X876': ['ZTE', 'Raise'] + 'ZTE X876': ['ZTE', 'Raise'], }, '(ZTE )?Z[0-9]!!': { @@ -18562,7 +18564,7 @@ exports.ANDROID_MODELS = { Z992: ['ZTE', 'Avail 2'], 'ZTE Z993': ['ZTE', 'Prelude'], 'ZTE Z995': ['ZTE', 'Overture'], - 'ZTE Z998': ['ZTE', 'Unico'] + 'ZTE Z998': ['ZTE', 'Unico'], }, '(ZTE )?Blade!!': { @@ -18712,7 +18714,7 @@ exports.ANDROID_MODELS = { 'ZTE Blade Vec Pro': ['ZTE', 'Blade Vec Pro'], 'ZTE Blade X3': ['ZTE', 'Blade X3'], 'ZTE Blade X7': ['ZTE', 'Blade X7'], - 'ZTE Blade X9': ['ZTE', 'Blade X9'] + 'ZTE Blade X9': ['ZTE', 'Blade X9'], }, 'ZTE Geek!!': { @@ -18722,7 +18724,7 @@ exports.ANDROID_MODELS = { 'ZTE GEEK II 4G': ['ZTE', 'Geek II'], 'ZTE Geek 2 pro': ['ZTE', 'Geek II Pro'], 'ZTE GEEK II Pro': ['ZTE', 'Geek II Pro'], - 'ZTE GEEK II Pro 4G': ['ZTE', 'Geek II Pro'] + 'ZTE GEEK II Pro 4G': ['ZTE', 'Geek II Pro'], }, '(ZTE )?(Grand|Mimosa)!!': { @@ -18750,7 +18752,7 @@ exports.ANDROID_MODELS = { 'Grand X2': ['ZTE', 'Grand X2'], 'ZTE Grand X2': ['ZTE', 'Grand X2'], 'ZTE Grand X 2': ['ZTE', 'Grand X2'], - 'ZTE Grand X2 In': ['ZTE', 'Grand X2'] + 'ZTE Grand X2 In': ['ZTE', 'Grand X2'], }, '(ZTE )?Kis!!': { @@ -18769,20 +18771,20 @@ exports.ANDROID_MODELS = { 'ZTE Kis 3': ['ZTE', 'Kis 3'], 'ZTE Kis3 max': ['ZTE', 'Kis 3 Max'], 'KIS C341': ['ZTE', 'Kis C341'], - 'Kis T3': ['ZTE', 'Kis T3'] + 'Kis T3': ['ZTE', 'Kis T3'], }, '(ZTE )?Racer!!': { 'ZTE Racer': ['ZTE', 'Racer'], Racer: ['ZTE', 'Racer'], - RacerII: ['ZTE', 'Racer II'] + RacerII: ['ZTE', 'Racer II'], }, '(ZTE )?Skate!!': { Skate: ['ZTE', 'Skate'], 'ZTE Skate': ['ZTE', 'Skate'], 'Skate Pro': ['ZTE', 'Skate Pro'], - 'ZTE Skate 2': ['ZTE', 'Skate 2'] + 'ZTE Skate 2': ['ZTE', 'Skate 2'], }, 'ZTE Libra': ['ZTE', 'Libra'], @@ -18988,7 +18990,7 @@ exports.ANDROID_MODELS = { 'ZP990+': ['Zopo', 'ZP990+'], ZP998: ['Zopo', 'ZP998 C2 II'], 'ZOPO ZP998': ['Zopo', 'ZP998 C2 II'], - ZP999: ['Zopo', 'ZP999 Lion Heart'] + ZP999: ['Zopo', 'ZP999 Lion Heart'], }, C2: ['Zopo', 'ZP960 C2'], @@ -19007,7 +19009,7 @@ exports.ANDROID_MODELS = { 'BASE Lutea 3': ['BASE', 'Lutea 3'], 'BASE Varia': ['BASE', 'Varia'], 'BASE Tab': ['BASE', 'TAB', DeviceType.TABLET], - 'BASE Tab 7.1': ['BASE', 'TAB 7-1', DeviceType.TABLET] + 'BASE Tab 7.1': ['BASE', 'TAB 7-1', DeviceType.TABLET], }, 'Beeline!!': { @@ -19033,7 +19035,7 @@ exports.ANDROID_MODELS = { 'Beeline Tab IS': ['Beeline', 'Tab IS', DeviceType.TABLET], 'Beeline Tab Fast': ['Beeline', 'Tab Fast', DeviceType.TABLET], 'Beeline Tab Fast 2': ['Beeline', 'Tab Fast 2', DeviceType.TABLET], - 'Beeline Tab Pro': ['Beeline', 'Tab Pro', DeviceType.TABLET] + 'Beeline Tab Pro': ['Beeline', 'Tab Pro', DeviceType.TABLET], }, 'Bouygues Telecom Bs 351': ['Bouygues', 'Bs 351'], @@ -19254,13 +19256,13 @@ exports.ANDROID_MODELS = { 'i-mobile i-note 3': ['i-Mobile', 'i-Note 3', DeviceType.TABLET], 'i-mobile i-note WIFI3': ['i-Mobile', 'i-Note 3', DeviceType.TABLET], 'i-mobile i-note WiFi 7': ['i-Mobile', 'i-Note 7', DeviceType.TABLET], - 'i-mobile i-note WiFi 9': ['i-Mobile', 'i-Note 9', DeviceType.TABLET] + 'i-mobile i-note WiFi 9': ['i-Mobile', 'i-Note 9', DeviceType.TABLET], }, 'KPN!!': { 'KPN Smart 200': ['KPN', 'Smart 200'], 'KPN Smart 300': ['KPN', 'Smart 300'], - 'KPN Smart 400': ['KPN', 'Smart 400'] + 'KPN Smart 400': ['KPN', 'Smart 400'], }, 'Kyivstar!!': { @@ -19268,7 +19270,7 @@ exports.ANDROID_MODELS = { 'Kyivstar Shine': ['Kyivstar', 'Shine'], 'Kyivstar Spark': ['Kyivstar', 'Spark'], 'Kyivstar Aqua': ['Kyivstar', 'Aqua'], - 'Kyivstar Terra': ['Kyivstar', 'Terra'] + 'Kyivstar Terra': ['Kyivstar', 'Terra'], }, 'MegaFon SP-AI': ['Мегафон', 'SP-A1'], @@ -19327,7 +19329,7 @@ exports.ANDROID_MODELS = { 'MTC SMART Run': ['MTC', 'Smart Run'], 'MTC SMART Run 4G': ['MTC', 'Smart Run'], 'MTC SMART Sprint 4G': ['MTC', 'Smart Sprint'], - 'MTC Viva': ['MTC', 'Viva'] + 'MTC Viva': ['MTC', 'Viva'], }, 'SMART Sprint': ['MTC', 'Smart Sprint'], @@ -19519,7 +19521,7 @@ exports.ANDROID_MODELS = { 'QMobile Z8': ['Q-Mobile', 'Noir Z8'], 'QMobile Z8 Plus': ['Q-Mobile', 'Noir Z8 Plus'], 'QMobile Z9': ['Q-Mobile', 'Noir Z9'], - 'QMobile Z10': ['Q-Mobile', 'Noir Z10'] + 'QMobile Z10': ['Q-Mobile', 'Noir Z10'], }, 'Z4 mini': ['Q-Mobile', 'Noir Quatro Z4 mini'], @@ -19614,7 +19616,7 @@ exports.ANDROID_MODELS = { 'Telenor Smart Pro 2': ['Telenor', 'Smart Pro 2'], 'TELENOR SMART TOUCH MINI': ['Telenor', 'Smart Touch Mini'], 'Telenor Touch Mini': ['Telenor', 'Smart Touch Mini'], - 'Telenor Touch Pad': ['Telenor', 'Touch Pad', DeviceType.TABLET] + 'Telenor Touch Pad': ['Telenor', 'Touch Pad', DeviceType.TABLET], }, 'T-Hub2': ['Telstra', 'T-Hub 2', DeviceType.TABLET], @@ -19626,7 +19628,7 @@ exports.ANDROID_MODELS = { 'tmn smart a15': ['TMN', 'Smart A15'], 'tmn smart a18': ['TMN', 'Smart A18'], 'tmn smart a20': ['TMN', 'Smart A20'], - 'tmn smart a60': ['TMN', 'Smart A60'] + 'tmn smart a60': ['TMN', 'Smart A60'], }, 'soft stone': ['TMN', 'Soft Stone'], @@ -19646,7 +19648,7 @@ exports.ANDROID_MODELS = { 'TURKCELL TURBO T50': ['Turkcell', 'Turbo T50'], 'TURKCELL T60': ['Turkcell', 'T60'], 'TURKCELL T70': ['Turkcell', 'T70'], - 'TURKCELL T80': ['Turkcell', 'T80'] + 'TURKCELL T80': ['Turkcell', 'T80'], }, 'Turk Telekom TT175': ['Türk Telekom', 'TT175'], @@ -19713,7 +19715,7 @@ exports.ANDROID_MODELS = { 'Vodafone Smart Tab 4': ['Vodafone', 'Smart Tab 4', DeviceType.TABLET], 'Vodafone Smart Tab 3G!': ['Vodafone', 'Smart Tab 3G', DeviceType.TABLET], 'Vodafone Smart Tab 4G!': ['Vodafone', 'Smart Tab 4G', DeviceType.TABLET], - 'Vodafone Tab grand 6': ['Vodafone', 'Tab Grand 6', DeviceType.TABLET] + 'Vodafone Tab grand 6': ['Vodafone', 'Tab Grand 6', DeviceType.TABLET], }, 'SmartTab!!': { @@ -19721,7 +19723,7 @@ exports.ANDROID_MODELS = { SmartTab7: ['Vodafone', 'Smart Tab 7', DeviceType.TABLET], SmartTabII7: ['Vodafone', 'Smart Tab II 7', DeviceType.TABLET] /* Lenovo */, SmartTabII10: ['Vodafone', 'Smart Tab II 10', DeviceType.TABLET], - SmartTab10: ['Vodafone', 'Smart Tab 10', DeviceType.TABLET] /* ZTE Web Tab 10 */ + SmartTab10: ['Vodafone', 'Smart Tab 10', DeviceType.TABLET] /* ZTE Web Tab 10 */, }, VF685: ['Vodafone', 'Smart 4 Fun'], @@ -19755,7 +19757,7 @@ exports.ANDROID_MODELS = { 'VFD 1400': ['Vodafone', 'Tab Prime 7', DeviceType.TABLET], VFD1400: ['Vodafone', 'Tab Prime 7', DeviceType.TABLET], - TC26: ['Zebra', 'TC26', DeviceType.POS] + TC26: ['Zebra', 'TC26', DeviceType.POS], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/models-asha.js b/data/models-asha.js index ea0dfbf..757fba5 100644 --- a/data/models-asha.js +++ b/data/models-asha.js @@ -1,20 +1,18 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.ASHA_MODELS = { - 'Asha230SingleSIM' : [ 'Nokia', 'Asha 230' ], - 'Asha230DualSIM' : [ 'Nokia', 'Asha 230' ], - '500' : [ 'Nokia', 'Asha 500' ], - 'Asha500SingleSIM' : [ 'Nokia', 'Asha 500' ], - 'Asha500DualSIM' : [ 'Nokia', 'Asha 500' ], - '501' : [ 'Nokia', 'Asha 501' ], - '501s' : [ 'Nokia', 'Asha 501' ], - '501.1' : [ 'Nokia', 'Asha 501' ], - '501.2' : [ 'Nokia', 'Asha 501' ], - '502' : [ 'Nokia', 'Asha 502' ], - '503' : [ 'Nokia', 'Asha 503' ], - '503s' : [ 'Nokia', 'Asha 503' ], + Asha230SingleSIM: ['Nokia', 'Asha 230'], + Asha230DualSIM: ['Nokia', 'Asha 230'], + 500: ['Nokia', 'Asha 500'], + Asha500SingleSIM: ['Nokia', 'Asha 500'], + Asha500DualSIM: ['Nokia', 'Asha 500'], + 501: ['Nokia', 'Asha 501'], + '501s': ['Nokia', 'Asha 501'], + 501.1: ['Nokia', 'Asha 501'], + 501.2: ['Nokia', 'Asha 501'], + 502: ['Nokia', 'Asha 502'], + 503: ['Nokia', 'Asha 503'], + '503s': ['Nokia', 'Asha 503'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/models-bada.js b/data/models-bada.js index b1664ed..6a8e5a4 100644 --- a/data/models-bada.js +++ b/data/models-bada.js @@ -1,20 +1,18 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.BADA_MODELS = { - 'GT- ?S52(50|53)!' : [ 'Samsung', 'Wave 525' ], - 'GT-S53(30|33)!' : [ 'Samsung', 'Wave 533' ], - 'GT-S5380!' : [ 'Samsung', 'Wave Y' ], - 'GT-S57(50|53)!' : [ 'Samsung', 'Wave 575' ], - 'GT-S57(80)!' : [ 'Samsung', 'Wave 578' ], - 'GT-S72(30|33)!' : [ 'Samsung', 'Wave 723' ], - 'GT-S7250!' : [ 'Samsung', 'Wave M' ], - 'GT-S8500!' : [ 'Samsung', 'Wave' ], - 'SCH-F859!' : [ 'Samsung', 'Wave' ], - 'GT- ?S8530!' : [ 'Samsung', 'Wave II' ], - 'GT- ?S8600!' : [ 'Samsung', 'Wave 3' ], - 'SHW-M410' : [ 'Samsung', 'Wave 3' ] + 'GT- ?S52(50|53)!': ['Samsung', 'Wave 525'], + 'GT-S53(30|33)!': ['Samsung', 'Wave 533'], + 'GT-S5380!': ['Samsung', 'Wave Y'], + 'GT-S57(50|53)!': ['Samsung', 'Wave 575'], + 'GT-S57(80)!': ['Samsung', 'Wave 578'], + 'GT-S72(30|33)!': ['Samsung', 'Wave 723'], + 'GT-S7250!': ['Samsung', 'Wave M'], + 'GT-S8500!': ['Samsung', 'Wave'], + 'SCH-F859!': ['Samsung', 'Wave'], + 'GT- ?S8530!': ['Samsung', 'Wave II'], + 'GT- ?S8600!': ['Samsung', 'Wave 3'], + 'SHW-M410': ['Samsung', 'Wave 3'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/models-blackberry.js b/data/models-blackberry.js index a1f9e57..0acd0f9 100644 --- a/data/models-blackberry.js +++ b/data/models-blackberry.js @@ -1,54 +1,52 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.BLACKBERRY_MODELS = { - '9000' : 'Bold', - '9600' : 'Bold', - '9650' : 'Bold', - '9700' : 'Bold', - '9780' : 'Bold', - '9788' : 'Bold', - '9790' : 'Bold', - '9900' : 'Bold', - '9930' : 'Bold', - '8300' : 'Curve', - '8310' : 'Curve', - '8320' : 'Curve', - '8330' : 'Curve', - '8350i' : 'Curve', - '8520' : 'Curve', - '8530' : 'Curve', - '8900' : 'Curve', - '9220' : 'Curve', - '9300' : 'Curve', - '9310' : 'Curve', - '9315' : 'Curve', - '9320' : 'Curve', - '9330' : 'Curve', - '9350' : 'Curve', - '9360' : 'Curve', - '9370' : 'Curve', - '9380' : 'Curve', - '8100' : 'Pearl', - '8110' : 'Pearl', - '8120' : 'Pearl', - '8130' : 'Pearl', - '8220' : 'Pearl', - '8230' : 'Pearl', - '9100' : 'Pearl', - '9105' : 'Pearl', - '9500' : 'Storm', - '9520' : 'Storm2', - '9530' : 'Storm', - '9550' : 'Storm', - '9670' : 'Style', - '9800' : 'Torch', - '9810' : 'Torch', - '9850' : 'Torch', - '9860' : 'Torch', - '9630' : 'Tour', - '9981' : 'Porsche P' + 9000: 'Bold', + 9600: 'Bold', + 9650: 'Bold', + 9700: 'Bold', + 9780: 'Bold', + 9788: 'Bold', + 9790: 'Bold', + 9900: 'Bold', + 9930: 'Bold', + 8300: 'Curve', + 8310: 'Curve', + 8320: 'Curve', + 8330: 'Curve', + '8350i': 'Curve', + 8520: 'Curve', + 8530: 'Curve', + 8900: 'Curve', + 9220: 'Curve', + 9300: 'Curve', + 9310: 'Curve', + 9315: 'Curve', + 9320: 'Curve', + 9330: 'Curve', + 9350: 'Curve', + 9360: 'Curve', + 9370: 'Curve', + 9380: 'Curve', + 8100: 'Pearl', + 8110: 'Pearl', + 8120: 'Pearl', + 8130: 'Pearl', + 8220: 'Pearl', + 8230: 'Pearl', + 9100: 'Pearl', + 9105: 'Pearl', + 9500: 'Storm', + 9520: 'Storm2', + 9530: 'Storm', + 9550: 'Storm', + 9670: 'Style', + 9800: 'Torch', + 9810: 'Torch', + 9850: 'Torch', + 9860: 'Torch', + 9630: 'Tour', + 9981: 'Porsche P', }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/models-brew.js b/data/models-brew.js index 496cb43..fc206a7 100644 --- a/data/models-brew.js +++ b/data/models-brew.js @@ -1,7 +1,5 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.BREW_MODELS = { 'Coolpad D508': ['Coolpad', 'D508'], 'Coolpad D510': ['Coolpad', 'D510'], @@ -92,7 +90,7 @@ exports.BREW_MODELS = { 'Pantech TXT8045!': ['Pantech', 'Jest 2'], 'ZTE F-450!': ['ZTE', 'Adamant'], 'ZTE R516!': ['ZTE', 'R516'], - 'ZTE R518!': ['ZTE', 'R518'] + 'ZTE R518!': ['ZTE', 'R518'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/models-feature.js b/data/models-feature.js index bdde637..aa3c1ee 100644 --- a/data/models-feature.js +++ b/data/models-feature.js @@ -1,7 +1,5 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - const DeviceType = require('../src/constants').deviceType; exports.FEATURE_MODELS = { @@ -112,7 +110,7 @@ exports.FEATURE_MODELS = { 'GT-I6410!': ['Vodafone', '360 M1'], 'GT-I8320!': ['Vodafone', '360 H1'], 'GT-I8330!': ['Vodafone', '360 H2'], - 'WIDETEL WCX150': ['Widetel', 'WCX150'] + 'WIDETEL WCX150': ['Widetel', 'WCX150'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/models-firefoxos.js b/data/models-firefoxos.js index 7949710..750d759 100644 --- a/data/models-firefoxos.js +++ b/data/models-firefoxos.js @@ -31,15 +31,15 @@ exports.FIREFOXOS_MODELS = { 'ALCATEL4044[MNOTVW]!': ['Alcatel', 'Go Flip'], 'ALCATEL4044C!': ['Alcatel', 'QUICKFLIP'], - '.LYF/.F30C!': ['Jio', 'JioPhone F30C'], - '.LYF/.F101K!': ['Jio', 'JioPhone F101K'], - 'LYF/F30C!': ['Jio', 'JioPhone F30C'], - 'LYF/F41T!': ['Jio', 'JioPhone F41T'], - 'LYF/F50Y!': ['Jio', 'JioPhone F50Y'], - 'LYF/F61F!': ['Jio', 'JioPhone F61F'], - 'LYF/F81E!': ['Jio', 'JioPhone F81E'], - 'LYF/F90M!': ['Jio', 'JioPhone F90M'], - 'LYF/F101K!': ['Jio', 'JioPhone F101K'] + '.LYF\/.F30C!': ['Jio', 'JioPhone F30C'], + '.LYF\/.F101K!': ['Jio', 'JioPhone F101K'], + 'LYF\/F30C!': ['Jio', 'JioPhone F30C'], + 'LYF\/F41T!': ['Jio', 'JioPhone F41T'], + 'LYF\/F50Y!': ['Jio', 'JioPhone F50Y'], + 'LYF\/F61F!': ['Jio', 'JioPhone F61F'], + 'LYF\/F81E!': ['Jio', 'JioPhone F81E'], + 'LYF\/F90M!': ['Jio', 'JioPhone F90M'], + 'LYF\/F101K!': ['Jio', 'JioPhone F101K'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/models-ios.js b/data/models-ios.js index 142fed1..7cd2838 100644 --- a/data/models-ios.js +++ b/data/models-ios.js @@ -1,7 +1,5 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - const DeviceType = require('../src/constants').deviceType; exports.IOS_MODELS = { @@ -146,7 +144,7 @@ exports.IOS_MODELS = { 'iPad13,8': ['Apple', 'iPad Pro (12.9″, 5th gen)', DeviceType.TABLET], 'iPad13,9': ['Apple', 'iPad Pro (12.9″, 5th gen)', DeviceType.TABLET], 'iPad13,10': ['Apple', 'iPad Pro (12.9″, 5th gen)', DeviceType.TABLET], - 'iPad13,11': ['Apple', 'iPad Pro (12.9″, 5th gen)', DeviceType.TABLET] + 'iPad13,11': ['Apple', 'iPad Pro (12.9″, 5th gen)', DeviceType.TABLET], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/models-kddi.js b/data/models-kddi.js index d3bdca9..6f237f5 100644 --- a/data/models-kddi.js +++ b/data/models-kddi.js @@ -349,7 +349,7 @@ exports.KDDI_MODELS = { TST4: ['Toshiba', 'TT11'], TST5: ['Toshiba', 'TT21'], TST6: ['Toshiba', 'TT22'], - TST7: ['Toshiba', 'TT31'] + TST7: ['Toshiba', 'TT31'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/models-palmos.js b/data/models-palmos.js index 646451a..c9e75bc 100644 --- a/data/models-palmos.js +++ b/data/models-palmos.js @@ -1,97 +1,95 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - const DeviceType = require('../src/constants').deviceType; const DeviceSubType = require('../src/constants').deviceSubType; exports.PALMOS_MODELS = { - 'Palm-D061' : [ 'Palm', 'Centro 685', DeviceType.MOBILE ], - 'Palm-D062' : [ 'Palm', 'Centro 690', DeviceType.MOBILE ], - 'Palm-TunX' : [ 'Palm', 'LifeDrive', DeviceType.PDA ], - 'Palm-stuj' : [ 'Palm', 'm125', DeviceType.PDA ], - 'Palm-hbbs' : [ 'Palm', 'm130', DeviceType.PDA ], - 'Palm-trnd' : [ 'Palm', 'm500', DeviceType.PDA ], - 'Palm-ecty' : [ 'Palm', 'm505', DeviceType.PDA ], - 'Palm-lith' : [ 'Palm', 'm515', DeviceType.PDA ], - 'Palm-sky1' : [ 'Palm', 'i705', DeviceType.PDA ], - 'hspr-H101' : [ 'Palm', 'Treo 600', DeviceType.MOBILE ], - 'hspr-H102' : [ 'Palm', 'Treo 650', DeviceType.MOBILE ], - 'Palm-D053' : [ 'Palm', 'Treo 680', DeviceType.MOBILE ], - 'Palm-D052' : [ 'Palm', 'Treo 700', DeviceType.MOBILE ], - 'Palm-D060' : [ 'Palm', 'Treo 755', DeviceType.MOBILE ], - 'Palm-MT64' : [ 'Palm', 'Tungsten C', DeviceType.PDA ], - 'Palm-Cct1' : [ 'Palm', 'Tungsten E', DeviceType.PDA ], - 'Palm-Zir4' : [ 'Palm', 'Tungsten E2', DeviceType.PDA ], - 'Palm-Frg1' : [ 'Palm', 'Tungsten T', DeviceType.PDA ], - 'Palm-Frg2' : [ 'Palm', 'Tungsten T2', DeviceType.PDA ], - 'Palm-Arz1' : [ 'Palm', 'Tungsten T3', DeviceType.PDA ], - 'Palm-TnT5' : [ 'Palm', 'Tungsten T5', DeviceType.PDA ], - 'Palm-atc1' : [ 'Palm', 'Tungsten W', DeviceType.PDA ], - 'Palm-D050' : [ 'Palm', 'TX', DeviceType.PDA ], - 'Palm-Cubs' : [ 'Palm', 'Zire', DeviceType.PDA ], - 'Palm-Zi21' : [ 'Palm', 'Zire 21', DeviceType.PDA ], - 'Palm-D051' : [ 'Palm', 'Zire 22', DeviceType.PDA ], - 'Palm-Zi22' : [ 'Palm', 'Zire 31', DeviceType.PDA ], - 'Palm-Zpth' : [ 'Palm', 'Zire 71', DeviceType.PDA ], - 'Palm-Zi72' : [ 'Palm', 'Zire 72', DeviceType.PDA ], + 'Palm-D061': ['Palm', 'Centro 685', DeviceType.MOBILE], + 'Palm-D062': ['Palm', 'Centro 690', DeviceType.MOBILE], + 'Palm-TunX': ['Palm', 'LifeDrive', DeviceType.PDA], + 'Palm-stuj': ['Palm', 'm125', DeviceType.PDA], + 'Palm-hbbs': ['Palm', 'm130', DeviceType.PDA], + 'Palm-trnd': ['Palm', 'm500', DeviceType.PDA], + 'Palm-ecty': ['Palm', 'm505', DeviceType.PDA], + 'Palm-lith': ['Palm', 'm515', DeviceType.PDA], + 'Palm-sky1': ['Palm', 'i705', DeviceType.PDA], + 'hspr-H101': ['Palm', 'Treo 600', DeviceType.MOBILE], + 'hspr-H102': ['Palm', 'Treo 650', DeviceType.MOBILE], + 'Palm-D053': ['Palm', 'Treo 680', DeviceType.MOBILE], + 'Palm-D052': ['Palm', 'Treo 700', DeviceType.MOBILE], + 'Palm-D060': ['Palm', 'Treo 755', DeviceType.MOBILE], + 'Palm-MT64': ['Palm', 'Tungsten C', DeviceType.PDA], + 'Palm-Cct1': ['Palm', 'Tungsten E', DeviceType.PDA], + 'Palm-Zir4': ['Palm', 'Tungsten E2', DeviceType.PDA], + 'Palm-Frg1': ['Palm', 'Tungsten T', DeviceType.PDA], + 'Palm-Frg2': ['Palm', 'Tungsten T2', DeviceType.PDA], + 'Palm-Arz1': ['Palm', 'Tungsten T3', DeviceType.PDA], + 'Palm-TnT5': ['Palm', 'Tungsten T5', DeviceType.PDA], + 'Palm-atc1': ['Palm', 'Tungsten W', DeviceType.PDA], + 'Palm-D050': ['Palm', 'TX', DeviceType.PDA], + 'Palm-Cubs': ['Palm', 'Zire', DeviceType.PDA], + 'Palm-Zi21': ['Palm', 'Zire 21', DeviceType.PDA], + 'Palm-D051': ['Palm', 'Zire 22', DeviceType.PDA], + 'Palm-Zi22': ['Palm', 'Zire 31', DeviceType.PDA], + 'Palm-Zpth': ['Palm', 'Zire 71', DeviceType.PDA], + 'Palm-Zi72': ['Palm', 'Zire 72', DeviceType.PDA], - 'sony-ystn' : [ 'Sony', 'CLIÉ PEG-N600C', DeviceType.PDA ], - 'sony-ysmt' : [ 'Sony', 'CLIÉ PEG-N700C', DeviceType.PDA ], - 'sony-ysm2' : [ 'Sony', 'CLIÉ PEG-N750C', DeviceType.PDA ], - 'sony-nsca' : [ 'Sony', 'CLIÉ PEG-S320', DeviceType.PDA ], - 'sony-nsc2' : [ 'Sony', 'CLIÉ PEG-S360', DeviceType.PDA ], - 'sony-vnce' : [ 'Sony', 'CLIÉ PEG-T400', DeviceType.PDA ], - 'sony-mdna' : [ 'Sony', 'CLIÉ PEG-T600C', DeviceType.PDA ], - 'sony-npls' : [ 'Sony', 'CLIÉ PEG-T650C', DeviceType.PDA ], - 'sony-rdwd' : [ 'Sony', 'CLIÉ PEG-NR70', DeviceType.PDA ], - 'sony-crdb' : [ 'Sony', 'CLIÉ PEG-NX60', DeviceType.PDA ], - 'sony-tldo' : [ 'Sony', 'CLIÉ PEG-NX73V', DeviceType.PDA ], - 'sony-mdrd' : [ 'Sony', 'CLIÉ PEG-NX80V', DeviceType.PDA ], - 'sony-grnd' : [ 'Sony', 'CLIÉ PEG-NZ90', DeviceType.PDA ], - 'sony-frta' : [ 'Sony', 'CLIÉ PEG-SL10', DeviceType.PDA ], - 'sony-cocs' : [ 'Sony', 'CLIÉ PEG-SL20', DeviceType.PDA ], - 'sony-glps' : [ 'Sony', 'CLIÉ PEG-SJ22', DeviceType.PDA ], - 'sony-mcnd' : [ 'Sony', 'CLIÉ PEG-SJ33', DeviceType.PDA ], - 'sony-vrna' : [ 'Sony', 'CLIÉ PEG-TG50', DeviceType.PDA ], - 'sony-atom' : [ 'Sony', 'CLIÉ PEG-TH55', DeviceType.PDA ], - 'sony-goha' : [ 'Sony', 'CLIÉ PEG-TJ25', DeviceType.PDA ], - 'sony-leia' : [ 'Sony', 'CLIÉ PEG-TJ27', DeviceType.PDA ], - 'sony-hwai' : [ 'Sony', 'CLIÉ PEG-TJ30', DeviceType.PDA ], - 'sony-goku' : [ 'Sony', 'CLIÉ PEG-TJ35', DeviceType.PDA ], - 'sony-luke' : [ 'Sony', 'CLIÉ PEG-TJ37', DeviceType.PDA ], - 'sony-amno' : [ 'Sony', 'CLIÉ PEG-UX40', DeviceType.PDA ], - 'sony-prmr' : [ 'Sony', 'CLIÉ PEG-UX50', DeviceType.PDA ], - 'sony-ancy' : [ 'Sony', 'CLIÉ PEG-VZ90', DeviceType.PDA ], + 'sony-ystn': ['Sony', 'CLIÉ PEG-N600C', DeviceType.PDA], + 'sony-ysmt': ['Sony', 'CLIÉ PEG-N700C', DeviceType.PDA], + 'sony-ysm2': ['Sony', 'CLIÉ PEG-N750C', DeviceType.PDA], + 'sony-nsca': ['Sony', 'CLIÉ PEG-S320', DeviceType.PDA], + 'sony-nsc2': ['Sony', 'CLIÉ PEG-S360', DeviceType.PDA], + 'sony-vnce': ['Sony', 'CLIÉ PEG-T400', DeviceType.PDA], + 'sony-mdna': ['Sony', 'CLIÉ PEG-T600C', DeviceType.PDA], + 'sony-npls': ['Sony', 'CLIÉ PEG-T650C', DeviceType.PDA], + 'sony-rdwd': ['Sony', 'CLIÉ PEG-NR70', DeviceType.PDA], + 'sony-crdb': ['Sony', 'CLIÉ PEG-NX60', DeviceType.PDA], + 'sony-tldo': ['Sony', 'CLIÉ PEG-NX73V', DeviceType.PDA], + 'sony-mdrd': ['Sony', 'CLIÉ PEG-NX80V', DeviceType.PDA], + 'sony-grnd': ['Sony', 'CLIÉ PEG-NZ90', DeviceType.PDA], + 'sony-frta': ['Sony', 'CLIÉ PEG-SL10', DeviceType.PDA], + 'sony-cocs': ['Sony', 'CLIÉ PEG-SL20', DeviceType.PDA], + 'sony-glps': ['Sony', 'CLIÉ PEG-SJ22', DeviceType.PDA], + 'sony-mcnd': ['Sony', 'CLIÉ PEG-SJ33', DeviceType.PDA], + 'sony-vrna': ['Sony', 'CLIÉ PEG-TG50', DeviceType.PDA], + 'sony-atom': ['Sony', 'CLIÉ PEG-TH55', DeviceType.PDA], + 'sony-goha': ['Sony', 'CLIÉ PEG-TJ25', DeviceType.PDA], + 'sony-leia': ['Sony', 'CLIÉ PEG-TJ27', DeviceType.PDA], + 'sony-hwai': ['Sony', 'CLIÉ PEG-TJ30', DeviceType.PDA], + 'sony-goku': ['Sony', 'CLIÉ PEG-TJ35', DeviceType.PDA], + 'sony-luke': ['Sony', 'CLIÉ PEG-TJ37', DeviceType.PDA], + 'sony-amno': ['Sony', 'CLIÉ PEG-UX40', DeviceType.PDA], + 'sony-prmr': ['Sony', 'CLIÉ PEG-UX50', DeviceType.PDA], + 'sony-ancy': ['Sony', 'CLIÉ PEG-VZ90', DeviceType.PDA], - 'smsn-phix' : [ 'Samsung', 'SPH-i300', DeviceType.MOBILE ], - 'smsn-Phx2' : [ 'Samsung', 'SPH-i330', DeviceType.MOBILE ], - 'smsn-blch' : [ 'Samsung', 'SPH-i500', DeviceType.MOBILE ], - 'smsn-BLFM' : [ 'Samsung', 'SPH-i530', DeviceType.MOBILE ], - 'smsn-glxy' : [ 'Samsung', 'SPH-i550', DeviceType.MOBILE ], + 'smsn-phix': ['Samsung', 'SPH-i300', DeviceType.MOBILE], + 'smsn-Phx2': ['Samsung', 'SPH-i330', DeviceType.MOBILE], + 'smsn-blch': ['Samsung', 'SPH-i500', DeviceType.MOBILE], + 'smsn-BLFM': ['Samsung', 'SPH-i530', DeviceType.MOBILE], + 'smsn-glxy': ['Samsung', 'SPH-i550', DeviceType.MOBILE], - 'grmn-3200' : [ 'Garmin', 'iQue 3200', DeviceType.GPS ], - 'grmn-3600' : [ 'Garmin', 'iQue 3600', DeviceType.GPS ], - 'grmn-3700' : [ 'Garmin', 'iQue 3600a', DeviceType.GPS ], + 'grmn-3200': ['Garmin', 'iQue 3200', DeviceType.GPS], + 'grmn-3600': ['Garmin', 'iQue 3600', DeviceType.GPS], + 'grmn-3700': ['Garmin', 'iQue 3600a', DeviceType.GPS], - 'trgp-trg1' : [ 'HandEra', 'TRG Pro', DeviceType.PDA ], - 'trgp-trg2' : [ 'HandEra', '330', DeviceType.PDA ], + 'trgp-trg1': ['HandEra', 'TRG Pro', DeviceType.PDA], + 'trgp-trg2': ['HandEra', '330', DeviceType.PDA], - 'qcom-qc20' : [ 'Kyocera', 'QCP-6035', DeviceType.MOBILE ], - 'kwc.-7135' : [ 'Kyocera', 'QCP-7135', DeviceType.MOBILE ], + 'qcom-qc20': ['Kyocera', 'QCP-6035', DeviceType.MOBILE], + 'kwc.-7135': ['Kyocera', 'QCP-7135', DeviceType.MOBILE], - 'Tpwv-Rdog' : [ 'Tapwave', 'Zodiac', [ DeviceType.GAMING, DeviceSubType.PORTABLE ] ], + 'Tpwv-Rdog': ['Tapwave', 'Zodiac', [DeviceType.GAMING, DeviceSubType.PORTABLE]], - 'gsRl-zicn' : [ 'Group Sense', 'Xplore G18', DeviceType.MOBILE ], - 'gsRl-zcn2' : [ 'Group Sense', 'Xplore M28', DeviceType.MOBILE ], - 'gsRl-zcn5' : [ 'Group Sense', 'Xplore M68', DeviceType.MOBILE ], + 'gsRl-zicn': ['Group Sense', 'Xplore G18', DeviceType.MOBILE], + 'gsRl-zcn2': ['Group Sense', 'Xplore M28', DeviceType.MOBILE], + 'gsRl-zcn5': ['Group Sense', 'Xplore M68', DeviceType.MOBILE], - 'acer-momo' : [ 'Acer', 's10', DeviceType.PDA ], - 'acer-coco' : [ 'Acer', 's50', DeviceType.PDA ], + 'acer-momo': ['Acer', 's10', DeviceType.PDA], + 'acer-coco': ['Acer', 's50', DeviceType.PDA], - 'Acea-MZ01' : [ 'Aceeca', 'Meazura MEZ1000', DeviceType.PDA ], - 'Acea-PD01' : [ 'Aceeca', 'PDA32', DeviceType.PDA ], + 'Acea-MZ01': ['Aceeca', 'Meazura MEZ1000', DeviceType.PDA], + 'Acea-PD01': ['Aceeca', 'PDA32', DeviceType.PDA], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/models-s30plus.js b/data/models-s30plus.js index 6c139e5..5e0f9ce 100644 --- a/data/models-s30plus.js +++ b/data/models-s30plus.js @@ -1,13 +1,11 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.S30PLUS_MODELS = { - '215' : [ 'Nokia', '215' ], - '220' : [ 'Nokia', '220' ], - '222' : [ 'Nokia', '222' ], - '225' : [ 'Nokia', '225' ], - '230' : [ 'Nokia', '230' ] + 215: ['Nokia', '215'], + 220: ['Nokia', '220'], + 222: ['Nokia', '222'], + 225: ['Nokia', '225'], + 230: ['Nokia', '230'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/models-s40.js b/data/models-s40.js index 8f47094..dd1c112 100644 --- a/data/models-s40.js +++ b/data/models-s40.js @@ -1,137 +1,135 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.S40_MODELS = { - 'C1-01!' : [ 'Nokia', 'C1-01' ], - 'C1-02!' : [ 'Nokia', 'C1-02' ], - 'C1-03!' : [ 'Nokia', 'C1-03' ], - 'C2-00!' : [ 'Nokia', 'C2-00' ], - 'C2-01!' : [ 'Nokia', 'C2-01' ], - 'C2-02!' : [ 'Nokia', 'C2-02' ], - 'C2-03!' : [ 'Nokia', 'C2-03' ], - 'C2-05!' : [ 'Nokia', 'C2-05' ], - 'C2-06!' : [ 'Nokia', 'C2-06' ], - 'C3-00!' : [ 'Nokia', 'C3-00' ], - 'C3-01!' : [ 'Nokia', 'C3-01' ], - 'X2-00!' : [ 'Nokia', 'X2-00' ], - 'X2-01!' : [ 'Nokia', 'X2-01' ], - 'X2-02!' : [ 'Nokia', 'X2-02' ], - 'X2-03!' : [ 'Nokia', 'X2-03' ], - 'X2-05!' : [ 'Nokia', 'X2-05' ], - 'X3-00!' : [ 'Nokia', 'X3-00' ], - 'X3-02!' : [ 'Nokia', 'X3-02' ], - '109' : [ 'Nokia', '109' ], - '110' : [ 'Nokia', '110' ], - '111' : [ 'Nokia', '111' ], - '111.1' : [ 'Nokia', '111' ], - '112' : [ 'Nokia', '112' ], - '114' : [ 'Nokia', '114' ], - '200' : [ 'Nokia', 'Asha 200' ], - '201' : [ 'Nokia', 'Asha 201' ], - '202' : [ 'Nokia', 'Asha 202' ], - '203' : [ 'Nokia', 'Asha 203' ], - '205' : [ 'Nokia', 'Asha 205' ], - '205.1' : [ 'Nokia', 'Asha 205' ], - '205.3' : [ 'Nokia', 'Asha 205' ], - '206' : [ 'Nokia', 'Asha 206' ], - '206.1' : [ 'Nokia', 'Asha 206' ], - '208' : [ 'Nokia', '208' ], - '208.1' : [ 'Nokia', '208' ], - '208.2' : [ 'Nokia', '208' ], - '208.3' : [ 'Nokia', '208' ], - '208.4' : [ 'Nokia', '208' ], - '210' : [ 'Nokia', 'Asha 210' ], - '210.2' : [ 'Nokia', 'Asha 210' ], - '210.3' : [ 'Nokia', 'Asha 210' ], - '210.4' : [ 'Nokia', 'Asha 210' ], - '210.5' : [ 'Nokia', 'Asha 210' ], - '300' : [ 'Nokia', 'Asha 300' ], - '301' : [ 'Nokia', '301' ], - '301.1' : [ 'Nokia', '301' ], - '302' : [ 'Nokia', 'Asha 302' ], - '303' : [ 'Nokia', 'Asha 303' ], - '305' : [ 'Nokia', 'Asha 305' ], - '306' : [ 'Nokia', 'Asha 306' ], - '308' : [ 'Nokia', 'Asha 308' ], - '309' : [ 'Nokia', 'Asha 309' ], - '310' : [ 'Nokia', 'Asha 310' ], - '311' : [ 'Nokia', 'Asha 311' ], - '515' : [ 'Nokia', '515' ], - '515.2' : [ 'Nokia', '515' ], - '1682c' : [ 'Nokia', '1682 classic' ], - '2055' : [ 'Nokia', 'Asha 2055' ], - '2060' : [ 'Nokia', '2060' ], // Same as Asha 206 - '2220s!' : [ 'Nokia', '2220 slide' ], - '2320c!' : [ 'Nokia', '2320 classic' ], - '2322c!' : [ 'Nokia', '2322 classic' ], - '2323c!' : [ 'Nokia', '2323 classic' ], - '2330c!' : [ 'Nokia', '2330 classic' ], - '2600c!' : [ 'Nokia', '2600 classic' ], - '2680s!' : [ 'Nokia', '2680 slide' ], - '2690' : [ 'Nokia', '2690' ], - '2692' : [ 'Nokia', '2692' ], - '2700c!' : [ 'Nokia', '2700 classic' ], - '2710c' : [ 'Nokia', '2710' ], - '2710c-2' : [ 'Nokia', '2710' ], - '2720a!' : [ 'Nokia', '2720 fold' ], - '2730c!' : [ 'Nokia', '2730 classic' ], - '3020' : [ 'Nokia', '3020' ], - '3109c' : [ 'Nokia', '3109 classic' ], - '3110c' : [ 'Nokia', '3110 Evolve' ], - '3120c' : [ 'Nokia', '3120 classic' ], - '3120classic' : [ 'Nokia', '3120 classic' ], - '3208c' : [ 'Nokia', '3208 classic' ], - '3500c' : [ 'Nokia', '3500 classic' ], - '3555b' : [ 'Nokia', '3555' ], - '3600s' : [ 'Nokia', '3600 slide' ], - '3610a' : [ 'Nokia', '3610 fold' ], - '3710fold' : [ 'Nokia', '3710 fold' ], - '3720c' : [ 'Nokia', '3720 classic' ], - '5000!' : [ 'Nokia', '5000' ], - '5130!' : [ 'Nokia', '5130 XpressMusic' ], - '5130c!' : [ 'Nokia', '5130 classic' ], - '5132' : [ 'Nokia', '5132 XpressMusic' ], - '5200!' : [ 'Nokia', '5200' ], - '5220!' : [ 'Nokia', '5220 XpressMusic' ], - '5300!' : [ 'Nokia', '5300 XpressMusic' ], - '5310!' : [ 'Nokia', '5310 XpressMusic' ], - '5330' : [ 'Nokia', '5330 Mobile TV Edition' ], - '5330-1d' : [ 'Nokia', '5330 Mobile TV Edition' ], - '5610d!' : [ 'Nokia', '5610 XpressMusic' ], - '6070!' : [ 'Nokia', '6070' ], - '6208c' : [ 'Nokia', '6208 classic' ], - '6212c' : [ 'Nokia', '6212 classic' ], - '6260s!' : [ 'Nokia', '6260 slide' ], - '6230i!' : [ 'Nokia', '6230i' ], - '6233' : [ 'Nokia', '6233' ], - '6234' : [ 'Nokia', '6234' ], - '6263!' : [ 'Nokia', '6263' ], - '6280' : [ 'Nokia', '6280' ], - '6300' : [ 'Nokia', '6300' ], - '6300i' : [ 'Nokia', '6300i' ], - '6301' : [ 'Nokia', '6301' ], - '6303c' : [ 'Nokia', '6303 classic' ], - '6303classic' : [ 'Nokia', '6303 classic' ], - '6303iclassic' : [ 'Nokia', '6303i classic' ], - '6303ci' : [ 'Nokia', '6303i classic' ], - '6350' : [ 'Nokia', '6350' ], - '6500s!' : [ 'Nokia', '6500 slide' ], - '6600f!' : [ 'Nokia', '6600 fold' ], - '6600s!' : [ 'Nokia', '6600 slide' ], - '6600i!' : [ 'Nokia', '6600i slide' ], - '6700c!' : [ 'Nokia', '6700 classic' ], - '6750c' : [ 'Nokia', '6750 Mural' ], - '7070!' : [ 'Nokia', '7070 Prism' ], - '7100s!' : [ 'Nokia', '7100 Supernova' ], - '7210s!' : [ 'Nokia', '7210 Supernova' ], - '7210Supernova!' : [ 'Nokia', '7210 Supernova' ], - '7230!' : [ 'Nokia', '7230' ], - '7310c!' : [ 'Nokia', '7310 Supernova' ], - '7500' : [ 'Nokia', '7500 Prism' ], - '7510Supernova!' : [ 'Nokia', '7510 Supernova' ], - '7610Supernova!' : [ 'Nokia', '7610 Supernova' ], - '8800!' : [ 'Nokia', '8800 Arte' ] + 'C1-01!': ['Nokia', 'C1-01'], + 'C1-02!': ['Nokia', 'C1-02'], + 'C1-03!': ['Nokia', 'C1-03'], + 'C2-00!': ['Nokia', 'C2-00'], + 'C2-01!': ['Nokia', 'C2-01'], + 'C2-02!': ['Nokia', 'C2-02'], + 'C2-03!': ['Nokia', 'C2-03'], + 'C2-05!': ['Nokia', 'C2-05'], + 'C2-06!': ['Nokia', 'C2-06'], + 'C3-00!': ['Nokia', 'C3-00'], + 'C3-01!': ['Nokia', 'C3-01'], + 'X2-00!': ['Nokia', 'X2-00'], + 'X2-01!': ['Nokia', 'X2-01'], + 'X2-02!': ['Nokia', 'X2-02'], + 'X2-03!': ['Nokia', 'X2-03'], + 'X2-05!': ['Nokia', 'X2-05'], + 'X3-00!': ['Nokia', 'X3-00'], + 'X3-02!': ['Nokia', 'X3-02'], + 109: ['Nokia', '109'], + 110: ['Nokia', '110'], + 111: ['Nokia', '111'], + 111.1: ['Nokia', '111'], + 112: ['Nokia', '112'], + 114: ['Nokia', '114'], + 200: ['Nokia', 'Asha 200'], + 201: ['Nokia', 'Asha 201'], + 202: ['Nokia', 'Asha 202'], + 203: ['Nokia', 'Asha 203'], + 205: ['Nokia', 'Asha 205'], + 205.1: ['Nokia', 'Asha 205'], + 205.3: ['Nokia', 'Asha 205'], + 206: ['Nokia', 'Asha 206'], + 206.1: ['Nokia', 'Asha 206'], + 208: ['Nokia', '208'], + 208.1: ['Nokia', '208'], + 208.2: ['Nokia', '208'], + 208.3: ['Nokia', '208'], + 208.4: ['Nokia', '208'], + 210: ['Nokia', 'Asha 210'], + 210.2: ['Nokia', 'Asha 210'], + 210.3: ['Nokia', 'Asha 210'], + 210.4: ['Nokia', 'Asha 210'], + 210.5: ['Nokia', 'Asha 210'], + 300: ['Nokia', 'Asha 300'], + 301: ['Nokia', '301'], + 301.1: ['Nokia', '301'], + 302: ['Nokia', 'Asha 302'], + 303: ['Nokia', 'Asha 303'], + 305: ['Nokia', 'Asha 305'], + 306: ['Nokia', 'Asha 306'], + 308: ['Nokia', 'Asha 308'], + 309: ['Nokia', 'Asha 309'], + 310: ['Nokia', 'Asha 310'], + 311: ['Nokia', 'Asha 311'], + 515: ['Nokia', '515'], + 515.2: ['Nokia', '515'], + '1682c': ['Nokia', '1682 classic'], + 2055: ['Nokia', 'Asha 2055'], + 2060: ['Nokia', '2060'], // Same as Asha 206 + '2220s!': ['Nokia', '2220 slide'], + '2320c!': ['Nokia', '2320 classic'], + '2322c!': ['Nokia', '2322 classic'], + '2323c!': ['Nokia', '2323 classic'], + '2330c!': ['Nokia', '2330 classic'], + '2600c!': ['Nokia', '2600 classic'], + '2680s!': ['Nokia', '2680 slide'], + 2690: ['Nokia', '2690'], + 2692: ['Nokia', '2692'], + '2700c!': ['Nokia', '2700 classic'], + '2710c': ['Nokia', '2710'], + '2710c-2': ['Nokia', '2710'], + '2720a!': ['Nokia', '2720 fold'], + '2730c!': ['Nokia', '2730 classic'], + 3020: ['Nokia', '3020'], + '3109c': ['Nokia', '3109 classic'], + '3110c': ['Nokia', '3110 Evolve'], + '3120c': ['Nokia', '3120 classic'], + '3120classic': ['Nokia', '3120 classic'], + '3208c': ['Nokia', '3208 classic'], + '3500c': ['Nokia', '3500 classic'], + '3555b': ['Nokia', '3555'], + '3600s': ['Nokia', '3600 slide'], + '3610a': ['Nokia', '3610 fold'], + '3710fold': ['Nokia', '3710 fold'], + '3720c': ['Nokia', '3720 classic'], + '5000!': ['Nokia', '5000'], + '5130!': ['Nokia', '5130 XpressMusic'], + '5130c!': ['Nokia', '5130 classic'], + 5132: ['Nokia', '5132 XpressMusic'], + '5200!': ['Nokia', '5200'], + '5220!': ['Nokia', '5220 XpressMusic'], + '5300!': ['Nokia', '5300 XpressMusic'], + '5310!': ['Nokia', '5310 XpressMusic'], + 5330: ['Nokia', '5330 Mobile TV Edition'], + '5330-1d': ['Nokia', '5330 Mobile TV Edition'], + '5610d!': ['Nokia', '5610 XpressMusic'], + '6070!': ['Nokia', '6070'], + '6208c': ['Nokia', '6208 classic'], + '6212c': ['Nokia', '6212 classic'], + '6260s!': ['Nokia', '6260 slide'], + '6230i!': ['Nokia', '6230i'], + 6233: ['Nokia', '6233'], + 6234: ['Nokia', '6234'], + '6263!': ['Nokia', '6263'], + 6280: ['Nokia', '6280'], + 6300: ['Nokia', '6300'], + '6300i': ['Nokia', '6300i'], + 6301: ['Nokia', '6301'], + '6303c': ['Nokia', '6303 classic'], + '6303classic': ['Nokia', '6303 classic'], + '6303iclassic': ['Nokia', '6303i classic'], + '6303ci': ['Nokia', '6303i classic'], + 6350: ['Nokia', '6350'], + '6500s!': ['Nokia', '6500 slide'], + '6600f!': ['Nokia', '6600 fold'], + '6600s!': ['Nokia', '6600 slide'], + '6600i!': ['Nokia', '6600i slide'], + '6700c!': ['Nokia', '6700 classic'], + '6750c': ['Nokia', '6750 Mural'], + '7070!': ['Nokia', '7070 Prism'], + '7100s!': ['Nokia', '7100 Supernova'], + '7210s!': ['Nokia', '7210 Supernova'], + '7210Supernova!': ['Nokia', '7210 Supernova'], + '7230!': ['Nokia', '7230'], + '7310c!': ['Nokia', '7310 Supernova'], + 7500: ['Nokia', '7500 Prism'], + '7510Supernova!': ['Nokia', '7510 Supernova'], + '7610Supernova!': ['Nokia', '7610 Supernova'], + '8800!': ['Nokia', '8800 Arte'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/models-symbian.js b/data/models-symbian.js index 7bbcc45..f7d084c 100644 --- a/data/models-symbian.js +++ b/data/models-symbian.js @@ -1,184 +1,182 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - const Flag = require('../src/constants').flag; exports.SYMBIAN_MODELS = { - 'BenQ P30' : [ 'BenQ', 'P30', {'flag' : Flag.UIQ} ], - 'BenQ P31' : [ 'BenQ', 'P31', {'flag' : Flag.UIQ} ], - 'RIZR-Z8' : [ 'Motorola', 'RIZR Z8', {'flag' : Flag.UIQ} ], - 'RIZR-Z10' : [ 'Motorola', 'RIZR Z10', {'flag' : Flag.UIQ} ], - 'A920' : [ 'Motorola', 'A920', {'flag' : Flag.UIQ} ], - 'A925' : [ 'Motorola', 'A925', {'flag' : Flag.UIQ} ], - 'A1000' : [ 'Motorola', 'A1000', {'flag' : Flag.UIQ} ], - 'M1000' : [ 'Motorola', 'M1000', {'flag' : Flag.UIQ}, {'carrier' : 'DoCoMo'} ], - 'G700' : [ 'Sony Ericsson', 'G700', {'flag' : Flag.UIQ} ], - 'G900' : [ 'Sony Ericsson', 'G900', {'flag' : Flag.UIQ} ], - 'M600i' : [ 'Sony Ericsson', 'M600', {'flag' : Flag.UIQ} ], - 'P910i' : [ 'Sony Ericsson', 'P910', {'flag' : Flag.UIQ} ], - 'P990i' : [ 'Sony Ericsson', 'P990', {'flag' : Flag.UIQ} ], - 'P1i' : [ 'Sony Ericsson', 'P1', {'flag' : Flag.UIQ} ], - 'W950i' : [ 'Sony Ericsson', 'W950', {'flag' : Flag.UIQ} ], - 'W960i' : [ 'Sony Ericsson', 'W960', {'flag' : Flag.UIQ} ], + 'BenQ P30': ['BenQ', 'P30', { flag: Flag.UIQ }], + 'BenQ P31': ['BenQ', 'P31', { flag: Flag.UIQ }], + 'RIZR-Z8': ['Motorola', 'RIZR Z8', { flag: Flag.UIQ }], + 'RIZR-Z10': ['Motorola', 'RIZR Z10', { flag: Flag.UIQ }], + A920: ['Motorola', 'A920', { flag: Flag.UIQ }], + A925: ['Motorola', 'A925', { flag: Flag.UIQ }], + A1000: ['Motorola', 'A1000', { flag: Flag.UIQ }], + M1000: ['Motorola', 'M1000', { flag: Flag.UIQ }, { carrier: 'DoCoMo' }], + G700: ['Sony Ericsson', 'G700', { flag: Flag.UIQ }], + G900: ['Sony Ericsson', 'G900', { flag: Flag.UIQ }], + M600i: ['Sony Ericsson', 'M600', { flag: Flag.UIQ }], + P910i: ['Sony Ericsson', 'P910', { flag: Flag.UIQ }], + P990i: ['Sony Ericsson', 'P990', { flag: Flag.UIQ }], + P1i: ['Sony Ericsson', 'P1', { flag: Flag.UIQ }], + W950i: ['Sony Ericsson', 'W950', { flag: Flag.UIQ }], + W960i: ['Sony Ericsson', 'W960', { flag: Flag.UIQ }], - 'LG KS10' : [ 'LG', 'KS10 Joy', {'flag' : Flag.S60} ], - 'LGKT610' : [ 'LG', 'KT610', {'flag' : Flag.S60} ], - 'LGKT615' : [ 'LG', 'KT615', {'flag' : Flag.S60} ], - 'C5-00!' : [ 'Nokia', 'C5-00', {'flag' : Flag.S60} ], - 'C5-01' : [ 'Nokia', 'C5-01', {'flag' : Flag.S60} ], - 'C5-03!' : [ 'Nokia', 'C5-03', {'flag' : Flag.S60} ], - 'C5-04' : [ 'Nokia', 'C5-04', {'flag' : Flag.S60} ], - 'C5-05' : [ 'Nokia', 'C5-05', {'flag' : Flag.S60} ], - 'C5-06' : [ 'Nokia', 'C5-06', {'flag' : Flag.S60} ], - 'C6-00!' : [ 'Nokia', 'C6-00', {'flag' : Flag.S60} ], - 'C6-01!' : [ 'Nokia', 'C6-01', {'flag' : Flag.S60} ], - 'C7-00!' : [ 'Nokia', 'C7-00', {'flag' : Flag.S60} ], - 'E5-00!' : [ 'Nokia', 'E5-00', {'flag' : Flag.S60} ], - 'E6' : [ 'Nokia', 'E6-00', {'flag' : Flag.S60} ], - 'E6-00' : [ 'Nokia', 'E6-00', {'flag' : Flag.S60} ], - 'E7-00' : [ 'Nokia', 'E7-00', {'flag' : Flag.S60} ], - 'N8-00' : [ 'Nokia', 'N8-00', {'flag' : Flag.S60} ], - 'T7-00' : [ 'Nokia', 'T7-00', {'flag' : Flag.S60} ], - 'X5-00' : [ 'Nokia', 'X5-00', {'flag' : Flag.S60} ], - 'X5-01' : [ 'Nokia', 'X5-01', {'flag' : Flag.S60} ], - 'X6-00!' : [ 'Nokia', 'X6-00', {'flag' : Flag.S60} ], - 'X7-00!' : [ 'Nokia', 'X7-00', {'flag' : Flag.S60} ], - 'N-Gage' : [ 'Nokia', 'N-Gage', {'flag' : Flag.S60} ], - 'N-GageQD' : [ 'Nokia', 'N-Gage QD', {'flag' : Flag.S60} ], - 'E50(-[1-9])?$!' : [ 'Nokia', 'E50', {'flag' : Flag.S60} ], - 'E51(-[1-9])?$!' : [ 'Nokia', 'E51', {'flag' : Flag.S60} ], - 'E52(-[1-9])?$!' : [ 'Nokia', 'E52', {'flag' : Flag.S60} ], - 'E55(-[1-9])?$!' : [ 'Nokia', 'E55', {'flag' : Flag.S60} ], - 'E60(-[1-9])?$!' : [ 'Nokia', 'E60', {'flag' : Flag.S60} ], - 'E61i!' : [ 'Nokia', 'E61i', {'flag' : Flag.S60} ], - 'E61(-[1-9])?$!' : [ 'Nokia', 'E61', {'flag' : Flag.S60} ], - 'E62(-[1-9])?$!' : [ 'Nokia', 'E62', {'flag' : Flag.S60} ], - 'E63(-[1-9])?$!' : [ 'Nokia', 'E63', {'flag' : Flag.S60} ], - 'E65(-[1-9])?$!' : [ 'Nokia', 'E65', {'flag' : Flag.S60} ], - 'E66(-[1-9])?$!' : [ 'Nokia', 'E66', {'flag' : Flag.S60} ], - 'E70(-[1-9])?$!' : [ 'Nokia', 'E70', {'flag' : Flag.S60} ], - 'E71x' : [ 'Nokia', 'E71x', {'flag' : Flag.S60} ], - 'E71(-[1-9])?$!' : [ 'Nokia', 'E71', {'flag' : Flag.S60} ], - 'E72(-[1-9])?$!' : [ 'Nokia', 'E72', {'flag' : Flag.S60} ], - 'E73(-[1-9])?$!' : [ 'Nokia', 'E73 Mode', {'flag' : Flag.S60} ], - 'E75(-[1-9])?$!' : [ 'Nokia', 'E75', {'flag' : Flag.S60} ], - 'E90(-[1-9])?$!' : [ 'Nokia', 'E90 Communicator', {'flag' : Flag.S60} ], - 'E-90-1' : [ 'Nokia', 'E90 Communicator', {'flag' : Flag.S60} ], - 'N70(-[1-9])?$!' : [ 'Nokia', 'N70', {'flag' : Flag.S60} ], - 'N71(-[1-9])?$!' : [ 'Nokia', 'N71', {'flag' : Flag.S60} ], - 'N72(-[1-9])?$!' : [ 'Nokia', 'N72', {'flag' : Flag.S60} ], - 'N73(-[1-9])?$!' : [ 'Nokia', 'N73', {'flag' : Flag.S60} ], - 'N75(-[1-9])?$!' : [ 'Nokia', 'N75', {'flag' : Flag.S60} ], - 'N76(-[1-9])?$!' : [ 'Nokia', 'N76', {'flag' : Flag.S60} ], - 'N77(-[1-9])?$!' : [ 'Nokia', 'N77', {'flag' : Flag.S60} ], - 'N78(-[1-9])?$!' : [ 'Nokia', 'N78', {'flag' : Flag.S60} ], - 'N79(-[1-9])?$!' : [ 'Nokia', 'N79', {'flag' : Flag.S60} ], - 'N80(-[1-9])?$!' : [ 'Nokia', 'N80', {'flag' : Flag.S60} ], - 'N81(-[1-9])?$!' : [ 'Nokia', 'N81', {'flag' : Flag.S60} ], - 'Nokia N81' : [ 'Nokia', 'N81', {'flag' : Flag.S60} ], - 'Nokia N81 8GB' : [ 'Nokia', 'N81 8GB', {'flag' : Flag.S60} ], - 'N82(-[1-9])?$!' : [ 'Nokia', 'N82', {'flag' : Flag.S60} ], - 'N85(-[1-9])?$!' : [ 'Nokia', 'N85', {'flag' : Flag.S60} ], - 'N86(-[1-9])?$!' : [ 'Nokia', 'N86 8MP', {'flag' : Flag.S60} ], - 'N86 ?8MP$!' : [ 'Nokia', 'N86 8MP', {'flag' : Flag.S60} ], - 'N90(-[1-9])?$!' : [ 'Nokia', 'N90', {'flag' : Flag.S60} ], - 'N91(-[1-9])?$!' : [ 'Nokia', 'N91', {'flag' : Flag.S60} ], - 'N92(-[1-9])?$!' : [ 'Nokia', 'N92', {'flag' : Flag.S60} ], - 'N93(-[1-9])?$!' : [ 'Nokia', 'N93', {'flag' : Flag.S60} ], - 'N93i' : [ 'Nokia', 'N93i', {'flag' : Flag.S60} ], - 'N95(-[1-9])?$!' : [ 'Nokia', 'N95', {'flag' : Flag.S60} ], - 'N95[ -]8GB(-[1-9])?!' : [ 'Nokia', 'N95 8GB', {'flag' : Flag.S60} ], - 'N96(-[1-9])?$!' : [ 'Nokia', 'N96', {'flag' : Flag.S60} ], - 'N97(-[1-3])?$!' : [ 'Nokia', 'N97', {'flag' : Flag.S60} ], - 'N97i' : [ 'Nokia', 'N97', {'flag' : Flag.S60} ], - 'N97(-[4-5])?$!' : [ 'Nokia', 'N97 Mini', {'flag' : Flag.S60} ], - 'N97 ?mini!' : [ 'Nokia', 'N97 Mini', {'flag' : Flag.S60} ], - '500' : [ 'Nokia', '500', {'flag' : Flag.S60} ], - '600' : [ 'Nokia', '600', {'flag' : Flag.S60} ], - '603' : [ 'Nokia', '603', {'flag' : Flag.S60} ], - '700' : [ 'Nokia', '700', {'flag' : Flag.S60} ], - '701' : [ 'Nokia', '701', {'flag' : Flag.S60} ], - '702T' : [ 'Nokia', '702T', {'flag' : Flag.S60} ], - '801T' : [ 'Nokia', '801T', {'flag' : Flag.S60} ], - '808' : [ 'Nokia', '808 PureView', {'flag' : Flag.S60} ], - '808PureView' : [ 'Nokia', '808 PureView', {'flag' : Flag.S60} ], - '808 PureView' : [ 'Nokia', '808 PureView', {'flag' : Flag.S60} ], - '3230' : [ 'Nokia', '3230', {'flag' : Flag.S60} ], - '3250' : [ 'Nokia', '3250', {'flag' : Flag.S60} ], - '3650' : [ 'Nokia', '3650', {'flag' : Flag.S60} ], - '3660' : [ 'Nokia', '3660', {'flag' : Flag.S60} ], - '5228' : [ 'Nokia', '5228', {'flag' : Flag.S60} ], - '5233!' : [ 'Nokia', '5228', {'flag' : Flag.S60} ], // The 5233 is known as 5228 - 'N5233!' : [ 'Nokia', '5228', {'flag' : Flag.S60} ], // The 5233 is known as 5228 - '5230!' : [ 'Nokia', '5230', {'flag' : Flag.S60} ], - '5232' : [ 'Nokia', '5232', {'flag' : Flag.S60} ], - '5235!' : [ 'Nokia', '5235 Ovi Music Unlimited', {'flag' : Flag.S60} ], - '5236' : [ 'Nokia', '5236', {'flag' : Flag.S60} ], - '5238' : [ 'Nokia', '5238', {'flag' : Flag.S60} ], - '5250' : [ 'Nokia', '5250', {'flag' : Flag.S60} ], - '5320!' : [ 'Nokia', '5320 XpressMusic', {'flag' : Flag.S60} ], - '5500d!' : [ 'Nokia', '5500 Sport', {'flag' : Flag.S60} ], - '5530!' : [ 'Nokia', '5530 XpressMusic', {'flag' : Flag.S60} ], - '5630!' : [ 'Nokia', '5630 XpressMusic', {'flag' : Flag.S60} ], - '5700!' : [ 'Nokia', '5700 XpressMusic', {'flag' : Flag.S60} ], - '5730!' : [ 'Nokia', '5730 XpressMusic', {'flag' : Flag.S60} ], - '5800!' : [ 'Nokia', '5800 XpressMusic', {'flag' : Flag.S60} ], - '6110Navigator' : [ 'Nokia', '6110 Navigator', {'flag' : Flag.S60} ], - '6120c!' : [ 'Nokia', '6120 classic', {'flag' : Flag.S60} ], - '6121c!' : [ 'Nokia', '6121 classic', {'flag' : Flag.S60} ], - '6122c!' : [ 'Nokia', '6124 classic', {'flag' : Flag.S60} ], // The 6122 is known as 6124 - '6124c' : [ 'Nokia', '6124 classic', {'flag' : Flag.S60} ], - '6210 ?Navigator!' : [ 'Nokia', '6210 Navigator', {'flag' : Flag.S60} ], - '6220c!' : [ 'Nokia', '6220 classic', {'flag' : Flag.S60} ], - '6260' : [ 'Nokia', '6260', {'flag' : Flag.S60} ], - '6290!' : [ 'Nokia', '6290', {'flag' : Flag.S60} ], - '6600' : [ 'Nokia', '6600', {'flag' : Flag.S60} ], - '6630' : [ 'Nokia', '6630', {'flag' : Flag.S60} ], - '6650d!' : [ 'Nokia', '6650 fold', {'flag' : Flag.S60} ], - '6670' : [ 'Nokia', '6670', {'flag' : Flag.S60} ], - '6680' : [ 'Nokia', '6680', {'flag' : Flag.S60} ], - '6681' : [ 'Nokia', '6681', {'flag' : Flag.S60} ], - '6700s' : [ 'Nokia', '6700 slide', {'flag' : Flag.S60} ], - '6700s-1c' : [ 'Nokia', '6700 slide', {'flag' : Flag.S60} ], - '6708' : [ 'Nokia', '6708', {'flag' : Flag.UIQ} ], - '6710s' : [ 'Nokia', '6710 Navigator', {'flag' : Flag.S60} ], - '6720c!' : [ 'Nokia', '6720 classic', {'flag' : Flag.S60} ], - '6730c!' : [ 'Nokia', '6730 classic', {'flag' : Flag.S60} ], - '6760s!' : [ 'Nokia', '6760 slide', {'flag' : Flag.S60} ], - '6788' : [ 'Nokia', '6788', {'flag' : Flag.S60} ], - '6788i' : [ 'Nokia', '6788i', {'flag' : Flag.S60} ], - '6790s-1b!' : [ 'Nokia', '6790 Surge', {'flag' : Flag.S60} ], - '6790s-1c!' : [ 'Nokia', '6790 slide', {'flag' : Flag.S60} ], - '7610' : [ 'Nokia', '7610', {'flag' : Flag.S60} ], - '7650' : [ 'Nokia', '7650', {'flag' : Flag.S60} ], - '7660' : [ 'Nokia', '7660', {'flag' : Flag.S60} ], - 'Oro' : [ 'Nokia', 'Oro', {'flag' : Flag.S60} ], - 'Panasonic-X700' : [ 'Panasonic', 'X700', {'flag' : Flag.S60} ], - 'Panasonic-X800' : [ 'Panasonic', 'X800', {'flag' : Flag.S60} ], - 'I7710' : [ 'Samsung', 'GT-I7710', {'flag' : Flag.S60} ], - 'I8510' : [ 'Samsung', 'INNOV8', {'flag' : Flag.S60} ], - 'I8910' : [ 'Samsung', 'Omnia HD', {'flag' : Flag.S60} ], - 'SGH-D720' : [ 'Samsung', 'D720', {'flag' : Flag.S60} ], - 'SGH-D728' : [ 'Samsung', 'D728', {'flag' : Flag.S60} ], - 'SGH-D730' : [ 'Samsung', 'D730', {'flag' : Flag.S60} ], - 'SGH-i400!' : [ 'Samsung', 'i400', {'flag' : Flag.S60} ], - 'SGH-i408!' : [ 'Samsung', 'i408', {'flag' : Flag.S60} ], - 'SGH-i450!' : [ 'Samsung', 'i450', {'flag' : Flag.S60} ], - 'SGH-i455!' : [ 'Samsung', 'i455', {'flag' : Flag.S60} ], - 'SGH-i458!' : [ 'Samsung', 'i458', {'flag' : Flag.S60} ], - 'SGH-i520!' : [ 'Samsung', 'i520', {'flag' : Flag.S60} ], - 'SGH-i550!' : [ 'Samsung', 'i550', {'flag' : Flag.S60} ], - 'SGH-i560!' : [ 'Samsung', 'i560', {'flag' : Flag.S60} ], - 'SGH-i568!' : [ 'Samsung', 'i568', {'flag' : Flag.S60} ], - 'SGH-i570!' : [ 'Samsung', 'i570', {'flag' : Flag.S60} ], - 'SGH-G810' : [ 'Samsung', 'G810', {'flag' : Flag.S60} ], - 'U' : [ 'Sony Ericsson', 'Satio', {'flag' : Flag.S60} ], - '(?i)U1(a|i|iv)?$!' : [ 'Sony Ericsson', 'Satio', {'flag' : Flag.S60} ], - '(?i)U5(a|i|iv)?$!' : [ 'Sony Ericsson', 'Vivaz', {'flag' : Flag.S60} ], - '(?i)U8(a|i)?$!' : [ 'Sony Ericsson', 'Vivaz Pro', {'flag' : Flag.S60} ], - 'ConstellationT' : [ 'Vertu', 'Constellation T', {'flag' : Flag.S60} ], - 'ConstellationQuest' : [ 'Vertu', 'Constellation Quest', {'flag' : Flag.S60} ], + 'LG KS10': ['LG', 'KS10 Joy', { flag: Flag.S60 }], + LGKT610: ['LG', 'KT610', { flag: Flag.S60 }], + LGKT615: ['LG', 'KT615', { flag: Flag.S60 }], + 'C5-00!': ['Nokia', 'C5-00', { flag: Flag.S60 }], + 'C5-01': ['Nokia', 'C5-01', { flag: Flag.S60 }], + 'C5-03!': ['Nokia', 'C5-03', { flag: Flag.S60 }], + 'C5-04': ['Nokia', 'C5-04', { flag: Flag.S60 }], + 'C5-05': ['Nokia', 'C5-05', { flag: Flag.S60 }], + 'C5-06': ['Nokia', 'C5-06', { flag: Flag.S60 }], + 'C6-00!': ['Nokia', 'C6-00', { flag: Flag.S60 }], + 'C6-01!': ['Nokia', 'C6-01', { flag: Flag.S60 }], + 'C7-00!': ['Nokia', 'C7-00', { flag: Flag.S60 }], + 'E5-00!': ['Nokia', 'E5-00', { flag: Flag.S60 }], + E6: ['Nokia', 'E6-00', { flag: Flag.S60 }], + 'E6-00': ['Nokia', 'E6-00', { flag: Flag.S60 }], + 'E7-00': ['Nokia', 'E7-00', { flag: Flag.S60 }], + 'N8-00': ['Nokia', 'N8-00', { flag: Flag.S60 }], + 'T7-00': ['Nokia', 'T7-00', { flag: Flag.S60 }], + 'X5-00': ['Nokia', 'X5-00', { flag: Flag.S60 }], + 'X5-01': ['Nokia', 'X5-01', { flag: Flag.S60 }], + 'X6-00!': ['Nokia', 'X6-00', { flag: Flag.S60 }], + 'X7-00!': ['Nokia', 'X7-00', { flag: Flag.S60 }], + 'N-Gage': ['Nokia', 'N-Gage', { flag: Flag.S60 }], + 'N-GageQD': ['Nokia', 'N-Gage QD', { flag: Flag.S60 }], + 'E50(-[1-9])?$!': ['Nokia', 'E50', { flag: Flag.S60 }], + 'E51(-[1-9])?$!': ['Nokia', 'E51', { flag: Flag.S60 }], + 'E52(-[1-9])?$!': ['Nokia', 'E52', { flag: Flag.S60 }], + 'E55(-[1-9])?$!': ['Nokia', 'E55', { flag: Flag.S60 }], + 'E60(-[1-9])?$!': ['Nokia', 'E60', { flag: Flag.S60 }], + 'E61i!': ['Nokia', 'E61i', { flag: Flag.S60 }], + 'E61(-[1-9])?$!': ['Nokia', 'E61', { flag: Flag.S60 }], + 'E62(-[1-9])?$!': ['Nokia', 'E62', { flag: Flag.S60 }], + 'E63(-[1-9])?$!': ['Nokia', 'E63', { flag: Flag.S60 }], + 'E65(-[1-9])?$!': ['Nokia', 'E65', { flag: Flag.S60 }], + 'E66(-[1-9])?$!': ['Nokia', 'E66', { flag: Flag.S60 }], + 'E70(-[1-9])?$!': ['Nokia', 'E70', { flag: Flag.S60 }], + E71x: ['Nokia', 'E71x', { flag: Flag.S60 }], + 'E71(-[1-9])?$!': ['Nokia', 'E71', { flag: Flag.S60 }], + 'E72(-[1-9])?$!': ['Nokia', 'E72', { flag: Flag.S60 }], + 'E73(-[1-9])?$!': ['Nokia', 'E73 Mode', { flag: Flag.S60 }], + 'E75(-[1-9])?$!': ['Nokia', 'E75', { flag: Flag.S60 }], + 'E90(-[1-9])?$!': ['Nokia', 'E90 Communicator', { flag: Flag.S60 }], + 'E-90-1': ['Nokia', 'E90 Communicator', { flag: Flag.S60 }], + 'N70(-[1-9])?$!': ['Nokia', 'N70', { flag: Flag.S60 }], + 'N71(-[1-9])?$!': ['Nokia', 'N71', { flag: Flag.S60 }], + 'N72(-[1-9])?$!': ['Nokia', 'N72', { flag: Flag.S60 }], + 'N73(-[1-9])?$!': ['Nokia', 'N73', { flag: Flag.S60 }], + 'N75(-[1-9])?$!': ['Nokia', 'N75', { flag: Flag.S60 }], + 'N76(-[1-9])?$!': ['Nokia', 'N76', { flag: Flag.S60 }], + 'N77(-[1-9])?$!': ['Nokia', 'N77', { flag: Flag.S60 }], + 'N78(-[1-9])?$!': ['Nokia', 'N78', { flag: Flag.S60 }], + 'N79(-[1-9])?$!': ['Nokia', 'N79', { flag: Flag.S60 }], + 'N80(-[1-9])?$!': ['Nokia', 'N80', { flag: Flag.S60 }], + 'N81(-[1-9])?$!': ['Nokia', 'N81', { flag: Flag.S60 }], + 'Nokia N81': ['Nokia', 'N81', { flag: Flag.S60 }], + 'Nokia N81 8GB': ['Nokia', 'N81 8GB', { flag: Flag.S60 }], + 'N82(-[1-9])?$!': ['Nokia', 'N82', { flag: Flag.S60 }], + 'N85(-[1-9])?$!': ['Nokia', 'N85', { flag: Flag.S60 }], + 'N86(-[1-9])?$!': ['Nokia', 'N86 8MP', { flag: Flag.S60 }], + 'N86 ?8MP$!': ['Nokia', 'N86 8MP', { flag: Flag.S60 }], + 'N90(-[1-9])?$!': ['Nokia', 'N90', { flag: Flag.S60 }], + 'N91(-[1-9])?$!': ['Nokia', 'N91', { flag: Flag.S60 }], + 'N92(-[1-9])?$!': ['Nokia', 'N92', { flag: Flag.S60 }], + 'N93(-[1-9])?$!': ['Nokia', 'N93', { flag: Flag.S60 }], + N93i: ['Nokia', 'N93i', { flag: Flag.S60 }], + 'N95(-[1-9])?$!': ['Nokia', 'N95', { flag: Flag.S60 }], + 'N95[ -]8GB(-[1-9])?!': ['Nokia', 'N95 8GB', { flag: Flag.S60 }], + 'N96(-[1-9])?$!': ['Nokia', 'N96', { flag: Flag.S60 }], + 'N97(-[1-3])?$!': ['Nokia', 'N97', { flag: Flag.S60 }], + N97i: ['Nokia', 'N97', { flag: Flag.S60 }], + 'N97(-[4-5])?$!': ['Nokia', 'N97 Mini', { flag: Flag.S60 }], + 'N97 ?mini!': ['Nokia', 'N97 Mini', { flag: Flag.S60 }], + 500: ['Nokia', '500', { flag: Flag.S60 }], + 600: ['Nokia', '600', { flag: Flag.S60 }], + 603: ['Nokia', '603', { flag: Flag.S60 }], + 700: ['Nokia', '700', { flag: Flag.S60 }], + 701: ['Nokia', '701', { flag: Flag.S60 }], + '702T': ['Nokia', '702T', { flag: Flag.S60 }], + '801T': ['Nokia', '801T', { flag: Flag.S60 }], + 808: ['Nokia', '808 PureView', { flag: Flag.S60 }], + '808PureView': ['Nokia', '808 PureView', { flag: Flag.S60 }], + '808 PureView': ['Nokia', '808 PureView', { flag: Flag.S60 }], + 3230: ['Nokia', '3230', { flag: Flag.S60 }], + 3250: ['Nokia', '3250', { flag: Flag.S60 }], + 3650: ['Nokia', '3650', { flag: Flag.S60 }], + 3660: ['Nokia', '3660', { flag: Flag.S60 }], + 5228: ['Nokia', '5228', { flag: Flag.S60 }], + '5233!': ['Nokia', '5228', { flag: Flag.S60 }], // The 5233 is known as 5228 + 'N5233!': ['Nokia', '5228', { flag: Flag.S60 }], // The 5233 is known as 5228 + '5230!': ['Nokia', '5230', { flag: Flag.S60 }], + 5232: ['Nokia', '5232', { flag: Flag.S60 }], + '5235!': ['Nokia', '5235 Ovi Music Unlimited', { flag: Flag.S60 }], + 5236: ['Nokia', '5236', { flag: Flag.S60 }], + 5238: ['Nokia', '5238', { flag: Flag.S60 }], + 5250: ['Nokia', '5250', { flag: Flag.S60 }], + '5320!': ['Nokia', '5320 XpressMusic', { flag: Flag.S60 }], + '5500d!': ['Nokia', '5500 Sport', { flag: Flag.S60 }], + '5530!': ['Nokia', '5530 XpressMusic', { flag: Flag.S60 }], + '5630!': ['Nokia', '5630 XpressMusic', { flag: Flag.S60 }], + '5700!': ['Nokia', '5700 XpressMusic', { flag: Flag.S60 }], + '5730!': ['Nokia', '5730 XpressMusic', { flag: Flag.S60 }], + '5800!': ['Nokia', '5800 XpressMusic', { flag: Flag.S60 }], + '6110Navigator': ['Nokia', '6110 Navigator', { flag: Flag.S60 }], + '6120c!': ['Nokia', '6120 classic', { flag: Flag.S60 }], + '6121c!': ['Nokia', '6121 classic', { flag: Flag.S60 }], + '6122c!': ['Nokia', '6124 classic', { flag: Flag.S60 }], // The 6122 is known as 6124 + '6124c': ['Nokia', '6124 classic', { flag: Flag.S60 }], + '6210 ?Navigator!': ['Nokia', '6210 Navigator', { flag: Flag.S60 }], + '6220c!': ['Nokia', '6220 classic', { flag: Flag.S60 }], + 6260: ['Nokia', '6260', { flag: Flag.S60 }], + '6290!': ['Nokia', '6290', { flag: Flag.S60 }], + 6600: ['Nokia', '6600', { flag: Flag.S60 }], + 6630: ['Nokia', '6630', { flag: Flag.S60 }], + '6650d!': ['Nokia', '6650 fold', { flag: Flag.S60 }], + 6670: ['Nokia', '6670', { flag: Flag.S60 }], + 6680: ['Nokia', '6680', { flag: Flag.S60 }], + 6681: ['Nokia', '6681', { flag: Flag.S60 }], + '6700s': ['Nokia', '6700 slide', { flag: Flag.S60 }], + '6700s-1c': ['Nokia', '6700 slide', { flag: Flag.S60 }], + 6708: ['Nokia', '6708', { flag: Flag.UIQ }], + '6710s': ['Nokia', '6710 Navigator', { flag: Flag.S60 }], + '6720c!': ['Nokia', '6720 classic', { flag: Flag.S60 }], + '6730c!': ['Nokia', '6730 classic', { flag: Flag.S60 }], + '6760s!': ['Nokia', '6760 slide', { flag: Flag.S60 }], + 6788: ['Nokia', '6788', { flag: Flag.S60 }], + '6788i': ['Nokia', '6788i', { flag: Flag.S60 }], + '6790s-1b!': ['Nokia', '6790 Surge', { flag: Flag.S60 }], + '6790s-1c!': ['Nokia', '6790 slide', { flag: Flag.S60 }], + 7610: ['Nokia', '7610', { flag: Flag.S60 }], + 7650: ['Nokia', '7650', { flag: Flag.S60 }], + 7660: ['Nokia', '7660', { flag: Flag.S60 }], + Oro: ['Nokia', 'Oro', { flag: Flag.S60 }], + 'Panasonic-X700': ['Panasonic', 'X700', { flag: Flag.S60 }], + 'Panasonic-X800': ['Panasonic', 'X800', { flag: Flag.S60 }], + I7710: ['Samsung', 'GT-I7710', { flag: Flag.S60 }], + I8510: ['Samsung', 'INNOV8', { flag: Flag.S60 }], + I8910: ['Samsung', 'Omnia HD', { flag: Flag.S60 }], + 'SGH-D720': ['Samsung', 'D720', { flag: Flag.S60 }], + 'SGH-D728': ['Samsung', 'D728', { flag: Flag.S60 }], + 'SGH-D730': ['Samsung', 'D730', { flag: Flag.S60 }], + 'SGH-i400!': ['Samsung', 'i400', { flag: Flag.S60 }], + 'SGH-i408!': ['Samsung', 'i408', { flag: Flag.S60 }], + 'SGH-i450!': ['Samsung', 'i450', { flag: Flag.S60 }], + 'SGH-i455!': ['Samsung', 'i455', { flag: Flag.S60 }], + 'SGH-i458!': ['Samsung', 'i458', { flag: Flag.S60 }], + 'SGH-i520!': ['Samsung', 'i520', { flag: Flag.S60 }], + 'SGH-i550!': ['Samsung', 'i550', { flag: Flag.S60 }], + 'SGH-i560!': ['Samsung', 'i560', { flag: Flag.S60 }], + 'SGH-i568!': ['Samsung', 'i568', { flag: Flag.S60 }], + 'SGH-i570!': ['Samsung', 'i570', { flag: Flag.S60 }], + 'SGH-G810': ['Samsung', 'G810', { flag: Flag.S60 }], + U: ['Sony Ericsson', 'Satio', { flag: Flag.S60 }], + '(?i)U1(a|i|iv)?$!': ['Sony Ericsson', 'Satio', { flag: Flag.S60 }], + '(?i)U5(a|i|iv)?$!': ['Sony Ericsson', 'Vivaz', { flag: Flag.S60 }], + '(?i)U8(a|i)?$!': ['Sony Ericsson', 'Vivaz Pro', { flag: Flag.S60 }], + ConstellationT: ['Vertu', 'Constellation T', { flag: Flag.S60 }], + ConstellationQuest: ['Vertu', 'Constellation Quest', { flag: Flag.S60 }], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/models-tizen.js b/data/models-tizen.js index cd9a8de..e339a62 100644 --- a/data/models-tizen.js +++ b/data/models-tizen.js @@ -1,7 +1,5 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - const DeviceType = require('../src/constants').deviceType; exports.TIZEN_MODELS = { @@ -64,7 +62,7 @@ exports.TIZEN_MODELS = { sdk: [null, null, DeviceType.EMULATOR], Emulator: [null, null, DeviceType.EMULATOR], 'Mobile-Emulator': [null, null, DeviceType.EMULATOR], - 'TIZEN Emulator': [null, null, DeviceType.EMULATOR] + 'TIZEN Emulator': [null, null, DeviceType.EMULATOR], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/models-touchwiz.js b/data/models-touchwiz.js index 4f73e0d..e23b303 100644 --- a/data/models-touchwiz.js +++ b/data/models-touchwiz.js @@ -1,48 +1,46 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - exports.TOUCHWIZ_MODELS = { - 'GT-B5310!' : [ 'Samsung', 'Corby Pro' ], - 'GT-B3410' : [ 'Samsung', 'Star Qwerty' ], - 'GT-B7722' : [ 'Samsung', 'Star Duos' ], - 'GT-C3262' : [ 'Samsung', 'Champ Neo Duos' ], - 'GT-C33(00|03)!' : [ 'Samsung', 'Champ' ], - 'GT-C3312R' : [ 'Samsung', 'Rex 60' ], - 'GT-C3312!' : [ 'Samsung', 'Champ Deluxe Duos' ], - 'GT-C3330' : [ 'Samsung', 'Champ 2' ], - 'GT-C6712' : [ 'Samsung', 'Star II Duos' ], - 'GT-E2652!' : [ 'Samsung', 'Champ Duos' ], - 'GT-I6230!' : [ 'Samsung', 'Star TV' ], - 'GT-I6712!' : [ 'Samsung', 'Duos TV' ], - 'GT-M3710' : [ 'Samsung', 'Corby Beat' ], - 'GT-M5650' : [ 'Samsung', 'Lindy' ], - 'GT-S3370!' : [ 'Samsung', 'Corby 3G' ], - 'GT-S36(50|53)!' : [ 'Samsung', 'Corby' ], - 'GT-S3770!' : [ 'Samsung', 'Champ 3G' ], - 'GT-S38(00|02)!' : [ 'Samsung', 'Rex 70' ], - 'GT-S3850' : [ 'Samsung', 'Corby II' ], - 'GT-S5220' : [ 'Samsung', 'Star 3' ], - 'GT-S5222R' : [ 'Samsung', 'Rex 80' ], - 'GT-S5222' : [ 'Samsung', 'Star 3 Duos' ], - 'GT-S52(30|33)!' : [ 'Samsung', 'Star' ], - 'GT-S5260P' : [ 'Samsung', 'Player City' ], - 'GT-S52(60|63)!' : [ 'Samsung', 'Star II' ], - 'GT-S5292R' : [ 'Samsung', 'Rex 90' ], - 'GT-S5292' : [ 'Samsung', 'Star Deluxe Duos' ], - 'GT-S5560!' : [ 'Samsung', 'Marvel' ], - 'GT-S5600' : [ 'Samsung', 'Preston' ], - 'GT-S5603' : [ 'Samsung', 'Star 3G' ], - 'GT-S5620!' : [ 'Samsung', 'Monte' ], - 'GT-S5680' : [ 'Samsung', 'GT-S5680' ], - 'GT-S7550' : [ 'Samsung', 'Blue Earth' ], - 'S80(00|03)!' : [ 'Samsung', 'Jet' ], - 'GT-S8000c' : [ 'Samsung', 'Jet' ], - 'GT-S8003' : [ 'Samsung', 'Jet' ], - 'SGH-A597' : [ 'Samsung', 'Eternity II' ], - 'SGH-F480' : [ 'Samsung', 'Tocco' ], - 'SGH-F480I' : [ 'Samsung', 'Tocco' ], - 'SGH-T528g' : [ 'Samsung', 'Straight Talk' ] + 'GT-B5310!': ['Samsung', 'Corby Pro'], + 'GT-B3410': ['Samsung', 'Star Qwerty'], + 'GT-B7722': ['Samsung', 'Star Duos'], + 'GT-C3262': ['Samsung', 'Champ Neo Duos'], + 'GT-C33(00|03)!': ['Samsung', 'Champ'], + 'GT-C3312R': ['Samsung', 'Rex 60'], + 'GT-C3312!': ['Samsung', 'Champ Deluxe Duos'], + 'GT-C3330': ['Samsung', 'Champ 2'], + 'GT-C6712': ['Samsung', 'Star II Duos'], + 'GT-E2652!': ['Samsung', 'Champ Duos'], + 'GT-I6230!': ['Samsung', 'Star TV'], + 'GT-I6712!': ['Samsung', 'Duos TV'], + 'GT-M3710': ['Samsung', 'Corby Beat'], + 'GT-M5650': ['Samsung', 'Lindy'], + 'GT-S3370!': ['Samsung', 'Corby 3G'], + 'GT-S36(50|53)!': ['Samsung', 'Corby'], + 'GT-S3770!': ['Samsung', 'Champ 3G'], + 'GT-S38(00|02)!': ['Samsung', 'Rex 70'], + 'GT-S3850': ['Samsung', 'Corby II'], + 'GT-S5220': ['Samsung', 'Star 3'], + 'GT-S5222R': ['Samsung', 'Rex 80'], + 'GT-S5222': ['Samsung', 'Star 3 Duos'], + 'GT-S52(30|33)!': ['Samsung', 'Star'], + 'GT-S5260P': ['Samsung', 'Player City'], + 'GT-S52(60|63)!': ['Samsung', 'Star II'], + 'GT-S5292R': ['Samsung', 'Rex 90'], + 'GT-S5292': ['Samsung', 'Star Deluxe Duos'], + 'GT-S5560!': ['Samsung', 'Marvel'], + 'GT-S5600': ['Samsung', 'Preston'], + 'GT-S5603': ['Samsung', 'Star 3G'], + 'GT-S5620!': ['Samsung', 'Monte'], + 'GT-S5680': ['Samsung', 'GT-S5680'], + 'GT-S7550': ['Samsung', 'Blue Earth'], + 'S80(00|03)!': ['Samsung', 'Jet'], + 'GT-S8000c': ['Samsung', 'Jet'], + 'GT-S8003': ['Samsung', 'Jet'], + 'SGH-A597': ['Samsung', 'Eternity II'], + 'SGH-F480': ['Samsung', 'Tocco'], + 'SGH-F480I': ['Samsung', 'Tocco'], + 'SGH-T528g': ['Samsung', 'Straight Talk'], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/models-wm.js b/data/models-wm.js index d1234e3..67902cb 100644 --- a/data/models-wm.js +++ b/data/models-wm.js @@ -283,7 +283,7 @@ exports.WM_MODELS = { 'SFR v3650!': ['Vodafone', 'Polaris'], v1415: ['Vodafone', 'Vox'], v1240: ['Vodafone', 'VDA II'], - '1210': ['Vodafone', 'VDA IV'], + 1210: ['Vodafone', 'VDA IV'], v1210: ['Vodafone', 'VDA IV'], 'HTC VDA V': ['Vodafone', 'VDA V'], v1640: ['Vodafone', 'VPA IV'], @@ -315,7 +315,7 @@ exports.WM_MODELS = { X04HT: ['HTC', 'TOUCH DIAMOND X04HT', { carrier: 'Softbank' }], X05HT: ['HTC', 'TOUCH PRO X05HT', { carrier: 'Softbank' }], 'SC-01B': ['Samsung', 'SC-01B', { carrier: 'DoCoMo' }], - X01SC: ['Samsung', 'OMNIA Pro X01SC', { carrier: 'Softbank' }] + X01SC: ['Samsung', 'OMNIA Pro X01SC', { carrier: 'Softbank' }], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/models-wp.js b/data/models-wp.js index 80eaf31..f84fe65 100644 --- a/data/models-wp.js +++ b/data/models-wp.js @@ -1,7 +1,5 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - const DeviceType = require('../src/constants').deviceType; exports.WP_MODELS = { @@ -203,7 +201,7 @@ exports.WP_MODELS = { '(Lumia ?|Nokia ?)?1020!': ['Nokia', 'Lumia 1020'], '(Lumia ?|Nokia ?)?1320!': ['Nokia', 'Lumia 1320'], '(Lumia ?|Nokia ?)?1520!': ['Nokia', 'Lumia 1520'], - 'Lumia 1530': ['Microsoft', 'Lumia 1530'] + 'Lumia 1530': ['Microsoft', 'Lumia 1530'], }, 'RM-[0-9]{3,4}!!': { @@ -251,14 +249,14 @@ exports.WP_MODELS = { 'RM-1116!': ['Microsoft', 'Lumia 950 XL'], 'RM-8(75|76|77)!': ['Nokia', 'Lumia 1020'], 'RM-9(94|95|96)!': ['Nokia', 'Lumia 1320'], - 'RM-9(37|38|39|40)!': ['Nokia', 'Lumia 1520'] + 'RM-9(37|38|39|40)!': ['Nokia', 'Lumia 1520'], }, 'id[0-9]{3,3}!!': { 'id102!': ['Nokia', 'Lumia 822'], 'id308!': ['Nokia', 'Lumia 1520'], 'id313!': ['Nokia', 'Lumia 635'], - 'id316!': ['Nokia', 'Lumia 530'] + 'id316!': ['Nokia', 'Lumia 530'], }, SeaRay: ['Nokia', 'Lumia 800'], @@ -278,7 +276,7 @@ exports.WP_MODELS = { 'GT-i8700': ['Samsung', 'Omnia 7'], 'GT-I8710': ['Samsung', 'Ativ S'], 'GT-I8750': ['Samsung', 'Ativ S'], - 'GT-S7530!': ['Samsung', 'Omnia M'] + 'GT-S7530!': ['Samsung', 'Omnia M'], }, 'SGH-[IT][0-9]{3,3}!!': { @@ -288,7 +286,7 @@ exports.WP_MODELS = { 'SGH-i707': ['Samsung', 'Taylor'], // Developer phone - never released 'SGH-i917!': ['Samsung', 'Focus'], 'SGH-i937!': ['Samsung', 'Focus S'], - 'SGH-T899M': ['Samsung', 'Ativ S'] + 'SGH-T899M': ['Samsung', 'Ativ S'], }, 'SM-W750V': ['Samsung', 'Ativ SE'], @@ -315,7 +313,7 @@ exports.WP_MODELS = { WinQ1000: ['XOLO', 'Win Q1000'], 'Billy 4': ['Yezz', 'Billy 4'], 'Billy 4.7': ['Yezz', 'Billy 4.7'], - '47': ['Yezz', 'Monaco 47'], + 47: ['Yezz', 'Monaco 47'], USCCN859: ['ZTE', 'N859 Render'], 'N880e!': ['ZTE', 'N880e'], V965W: ['ZTE', 'V965W Tania'], @@ -328,7 +326,7 @@ exports.WP_MODELS = { 'Linux!': [null, null], '!': [null, null], 'XXX!': [null, null], - 'InfoPath!': [null, null] + 'InfoPath!': [null, null], }; /* This file is automatically generated, do not edit manually! */ diff --git a/data/os-darwin.js b/data/os-darwin.js index 47d3f48..4f6df8c 100644 --- a/data/os-darwin.js +++ b/data/os-darwin.js @@ -13,6 +13,16 @@ module.exports = { 13: { value: '10.9' }, 14: { value: '10.10' }, 15: { value: '10.11' }, + 16: { value: '10.12' }, + 17: { value: '10.13' }, + 18: { value: '10.14' }, + 19: { value: '10.15' }, + 20: { value: '11' }, + 21: { value: '12' }, + 22: { value: '13' }, + 23: { value: '14' }, + 24: { value: '15' }, + 25: { value: '26' }, }, IOS: { 9: { value: '1' }, @@ -21,6 +31,16 @@ module.exports = { 13: { value: '6' }, 14: { value: '7' }, 15: { value: '9' }, + 16: { value: '10' }, + 17: { value: '11' }, + 18: { value: '12' }, + 19: { value: '13' }, + 20: { value: '14' }, + 21: { value: '15' }, + 22: { value: '16' }, + 23: { value: '17' }, + 24: { value: '18' }, + 25: { value: '26' }, }, }, }; diff --git a/data/profiles.js b/data/profiles.js index be6de69..2f5ffef 100644 --- a/data/profiles.js +++ b/data/profiles.js @@ -1,7 +1,5 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable max-len */ - const DeviceType = require('../src/constants').deviceType; exports.PROFILES = { @@ -24384,6 +24382,4 @@ exports.PROFILES = { 'http://www.zte.com.cn/mobile/uaprof/MegaFon_SP-A5.xml': ['Мегафон', 'SP-A5', 'Android', DeviceType.MOBILE], }; -/* eslint-enable max-len */ - /* This file is automatically generated, do not edit manually! */ diff --git a/data/regexes/applications-bots.js b/data/regexes/applications-bots.js index ea014d6..d6b3d5d 100644 --- a/data/regexes/applications-bots.js +++ b/data/regexes/applications-bots.js @@ -1,5 +1,4 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - -exports.BOTS_REGEX = /(008|360|a6|abound|muncher|adaxas|addthis|admantx|adsbot|ahrefs|archiver|altavista|curious|cloudfront|amorank|apple|archive|jeeves|astra|backlink|baidu|barkrowler|bazqux|bingbot|msnbot|msmobot|bing|blex|blogbridge|blogger|bloglines|bloglovin|blogpulse|blogram|blogtrot|blogshares|boardreader|lddc|browsershots|bubing|buck|builtwith|butterfly|buzzsumo|bytespider|heritrix|clarabot|cliqz|cloudflare|coccoc|comodo|commafeed|cbot|cresearch|watchdog|datanyze|datasearch|dataprovider|daum|daumoa|digg|domaincrawl|domainstats|discord|domain|dmca|duckduck|embed|evc|exabot|exactseek|ezooms|facebook|fast|flamingo|fastladder|feed|wrangler|validator|fever|florienzh|friendica|robot|genieo|fetchor|google|gofeed|gomez|ichiro|gooblog|goorss|gowiki|grammarly|grub|hatena|capture|heureka|hootsuite|htdig|httpmon|hubpages|hubspot|spider|indeed|iodc|istellabot|crawler|kakao|kouio|larbin|letsearch|line|linkedin|linkpad|linkdex|livedoor|seeker|ltx71|magpie|mj12bot|mapion|mail.ru|medium|megaindex|socialstreams|mixi|minds|mnogo|mojeek|monitor|dotbot|rogerbot|yeti|mxtoolbox|netcraft|netestate|netvibes|newsblur|newsgator|nimbostratus|odklbot|orange|pages|petal|aspiegel|psbot|pingdom|pinterest|plurk|pocket|postrank|comment|reddit|rssbar|hunter|quora|safesearch|scrapy|searchatlas|seekport|semrush|serpstat|seokicks|seznam|shopwiki|reader|simplepie|site24|skype|slack|sogou|sophora|soso|spaziodati|spdycheck|spinn|sputnik|detector|summify|telegram|twisted|twitter|tiny|tineye|tlsprober|trustedsite|typhoeus|vagabondo|velen|vkshare|voat|voila|vocus|mcrawler|vuhuv|w3bot|jigsaw|w3c|wappalyzer|wayback|webindexer|wordpress|mechanize|xenu|xerka|sitemap|yacy|yandex|yahoo|y!j|slurp|yelp|yioop|yisou|zgrab|zmeu|httpclient|nutch|synapse|indy|go|httpunit|okhttp|node|wget|curl|package|java|simple|libwww|lwp|urllib|requests|php|pear|zend|ruby)/i; +exports.BOTS_REGEX = + /(008|360|a6|abound|muncher|adaxas|addthis|admantx|adsbot|ahrefs|archiver|altavista|curious|cloudfront|amorank|apple|archive|jeeves|astra|backlink|baidu|barkrowler|bazqux|bingbot|msnbot|msmobot|bing|blex|blogbridge|blogger|bloglines|bloglovin|blogpulse|blogram|blogtrot|blogshares|boardreader|lddc|browsershots|bubing|buck|builtwith|butterfly|buzzsumo|bytespider|heritrix|clarabot|cliqz|cloudflare|coccoc|comodo|commafeed|cbot|cresearch|watchdog|datanyze|datasearch|dataprovider|daum|daumoa|digg|domaincrawl|domainstats|discord|domain|dmca|duckduck|embed|evc|exabot|exactseek|ezooms|facebook|fast|flamingo|fastladder|feed|wrangler|validator|fever|florienzh|friendica|robot|genieo|fetchor|google|gofeed|gomez|ichiro|gooblog|goorss|gowiki|grammarly|grub|hatena|capture|heureka|hootsuite|htdig|httpmon|hubpages|hubspot|spider|indeed|iodc|istellabot|crawler|kakao|kouio|larbin|letsearch|line|linkedin|linkpad|linkdex|livedoor|seeker|ltx71|magpie|mj12bot|mapion|mail.ru|medium|megaindex|socialstreams|mixi|minds|mnogo|mojeek|monitor|dotbot|rogerbot|yeti|mxtoolbox|netcraft|netestate|netvibes|newsblur|newsgator|nimbostratus|odklbot|orange|pages|petal|aspiegel|psbot|pingdom|pinterest|plurk|pocket|postrank|comment|reddit|rssbar|hunter|quora|safesearch|scrapy|searchatlas|seekport|semrush|serpstat|seokicks|seznam|shopwiki|reader|simplepie|site24|skype|slack|sogou|sophora|soso|spaziodati|spdycheck|spinn|sputnik|detector|summify|telegram|twisted|twitter|tiny|tineye|tlsprober|trustedsite|typhoeus|vagabondo|velen|vkshare|voat|voila|vocus|mcrawler|vuhuv|w3bot|jigsaw|w3c|wappalyzer|wayback|webindexer|wordpress|mechanize|xenu|xerka|sitemap|yacy|yandex|yahoo|y!j|slurp|yelp|yioop|yisou|zgrab|zmeu|httpclient|nutch|synapse|indy|go|httpunit|okhttp|node|wget|curl|package|java|simple|libwww|lwp|urllib|requests|php|pear|zend|ruby)/i; diff --git a/data/regexes/applications-browsers.js b/data/regexes/applications-browsers.js index 2a1fc36..e386acc 100644 --- a/data/regexes/applications-browsers.js +++ b/data/regexes/applications-browsers.js @@ -1,5 +1,4 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - -exports.BROWSERS_REGEX = /(115|126|2345|37abc|qihu|1stbrowser|7star|abrowse|acorn|acoo|amigo|aol|america|apus|arachne|arora|aweb|avant|asw|avg|aviator|avira|flyflow|bdbrowser|bdspark|basilisk|beamrise|beonex|blackwren|blackhawk|bolt|blackbird|brave|brisk|browsex|browzar|byffox|camino|canure|ccleaner|cent|charon|chedot|cheshire|chimlac|chimera|chromeplus|colibri|columbus|cometbird|comodo|dragon|conkeror|coc|coolnovo|corom|crazy|crusta|cunaguaro|cyberdog|cyberfox|daedalus|degan|demeter|deskbrowse|diigo|dillo|doczilla|rhodonit|dplus|elements|eudoraweb|falkon|flamesky|flock|framafox|freeu|galeon|globalmojo|epiphany|greenbrowser|hola|hydra|ibrowse|icab|iceape|icecat|icedove|iceweasel|irider|iridium|iron|kapiko|kazehakase|kchrome|kinza|kkman|klondike|kylo|meleon|lbrowser|lbbrowser|light|lobo|lolifox|lovense|lunascape|naenara|netcaptor|madfox|mxbrowser|min|mini|mixshark|mlbrowser|mypal|multixp|netpositive|nichrome|origyn|owb|live|juzi|orca|oregano|otter|palemoon|patriott|perk|polarity|privacy|qiyu|qtweb|quicklook|qupzilla|qute|rekonq|ryouko|sylera|saayaa|salam|shiira|sielo|sitekiosk|sleipnir|slimjet|metasr|sparrow|sputnik|stainless|station|sunchrome|sundance|sundial|superbird|swiftweasel|swiftfox|swing|to-browser|tencent|tenfourfox|theworld|tulip|tungsten|ultrab|usejump|vimprobable|vivaldi|airwatch|vonkeror|voyager|waterfox|whale|winwap|xvast|yabrowser|zvu|zipzap|zombie|1password|3g explorer|4g explorer|aloha|atomiclite|au|awakening|baidu|bdmobile|bidu|baiduboxapp|browser|blazer|acheetahi|cornowser|coolmarket|cute|digia|doris|doroty|ecosia|www browser|epic|eui|go.web|helium|heytap|huohoubrowser|surfboard|isurf|jig browser|jumanji|tnsbrowser|kiosk|kiwi|lebrowser|liebao|macross|mammoth|mcent|mint|mobicip|mib|cmcs|motorola|multizilla|netfrontlife|onebrowser|oneplus|plink|polaris|pure|openwave|up|km|oppo|quark|realme|semc|stnc|sogou|symphony|tenta|ucpro|vivo|weblite|wk|yaani|alti|aplix|awox|browserserver|isis|netbox|spyglass|oregan|viera|zetakey|bunjalloo|nwf|nuanti|wib|prince|demobrowser|dooble|dwb|evm|fireweb|hive|intermec|phantom|qt|roccat|raven|rockmelt|scope|slim|smbrowser|snowshoe|surf|tao|taz|uzbl|villanova|vimb|wada|wavelink|webrender|webster|wyzo|yelang|yrcweb|linemode|lynx|links|w3m|nimbus|Webwasher|sankore|adapi|brightsign|coship)/i; +exports.BROWSERS_REGEX = + /(115|126|2345|37abc|qihu|1stbrowser|7star|abrowse|acorn|acoo|amigo|aol|america|apus|arachne|arora|aweb|avant|asw|avg|aviator|avira|flyflow|bdbrowser|bdspark|basilisk|beamrise|beonex|blackwren|blackhawk|bolt|blackbird|brave|brisk|browsex|browzar|byffox|camino|canure|ccleaner|cent|charon|chedot|cheshire|chimlac|chimera|chromeplus|colibri|columbus|cometbird|comodo|dragon|conkeror|coc|coolnovo|corom|crazy|crusta|cunaguaro|cyberdog|cyberfox|daedalus|degan|demeter|deskbrowse|diigo|dillo|doczilla|rhodonit|dplus|elements|eudoraweb|falkon|flamesky|flock|framafox|freeu|galeon|globalmojo|epiphany|greenbrowser|hola|hydra|ibrowse|icab|iceape|icecat|icedove|iceweasel|irider|iridium|iron|kapiko|kazehakase|kchrome|kinza|kkman|klondike|kylo|meleon|lbrowser|lbbrowser|light|lobo|lolifox|lovense|lunascape|naenara|netcaptor|madfox|mxbrowser|min|mini|mixshark|mlbrowser|mypal|multixp|netpositive|nichrome|origyn|owb|live|juzi|orca|oregano|otter|palemoon|patriott|perk|polarity|privacy|qiyu|qtweb|quicklook|qupzilla|qute|rekonq|ryouko|sylera|saayaa|salam|shiira|sielo|sitekiosk|sleipnir|slimjet|metasr|sparrow|sputnik|stainless|station|sunchrome|sundance|sundial|superbird|swiftweasel|swiftfox|swing|to-browser|tencent|tenfourfox|theworld|tulip|tungsten|ultrab|usejump|vimprobable|vivaldi|airwatch|vonkeror|voyager|waterfox|whale|winwap|xvast|yabrowser|zvu|zipzap|zombie|1password|3g explorer|4g explorer|aloha|atomiclite|au|awakening|baidu|bdmobile|bidu|baiduboxapp|browser|blazer|acheetahi|cornowser|coolmarket|cute|digia|doris|doroty|ecosia|www browser|epic|eui|go.web|helium|heytap|huohoubrowser|surfboard|isurf|jig browser|jumanji|tnsbrowser|kiosk|kiwi|lebrowser|liebao|macross|mammoth|mcent|mint|mobicip|mib|cmcs|motorola|multizilla|netfrontlife|onebrowser|oneplus|plink|polaris|pure|openwave|up|km|oppo|quark|realme|semc|stnc|sogou|symphony|tenta|ucpro|vivo|weblite|wk|yaani|alti|aplix|awox|browserserver|isis|netbox|spyglass|oregan|viera|zetakey|bunjalloo|nwf|nuanti|wib|prince|demobrowser|dooble|dwb|evm|fireweb|hive|intermec|phantom|qt|roccat|raven|rockmelt|scope|slim|smbrowser|snowshoe|surf|tao|taz|uzbl|villanova|vimb|wada|wavelink|webrender|webster|wyzo|yelang|yrcweb|linemode|lynx|links|w3m|nimbus|Webwasher|sankore|adapi|brightsign|coship)/i; diff --git a/data/regexes/applications-others.js b/data/regexes/applications-others.js index 768ef5d..57d9d59 100644 --- a/data/regexes/applications-others.js +++ b/data/regexes/applications-others.js @@ -1,5 +1,4 @@ /* This file is automatically generated, do not edit manually! */ -/* eslint-disable */ - -exports.OTHERS_REGEX = /(itunes|qt|bluefish|nightingale|songbird|stagefright|substream|vlc|windows-media|coreplayer|flycast|boxee|kodi|xbmc|lightning|thunderbird|outlook|lotus|postbox|bat|yahoo|daum|flipboard|akregator|blogos|cococ|feed|liferea|news|jetbrains|rss|reeder|reedkit|rome|ziepod|messenger|kakao|kik|line|slack|viber|whatsapp|wire|yammer|zalo|fbios|fb4a|googleplus|instagram|pinterest|weibo|tumblr|twitter|wp-android|yelp|office|bingweb|hao123|gsa|naver|sogousearch|yandex|atom|golive|brackets|iweb|frontpage|amaya|websphere|download|tansodl|origin|secondlife|valve|raptr|alipay|cooliris|google|leechcraft|expeditor)/i; +exports.OTHERS_REGEX = + /(itunes|qt|bluefish|nightingale|songbird|stagefright|substream|vlc|windows-media|coreplayer|flycast|boxee|kodi|xbmc|lightning|thunderbird|outlook|lotus|postbox|bat|yahoo|daum|flipboard|akregator|blogos|cococ|feed|liferea|news|jetbrains|rss|reeder|reedkit|rome|ziepod|messenger|kakao|kik|line|slack|viber|whatsapp|wire|yammer|zalo|fbios|fb4a|googleplus|instagram|pinterest|weibo|tumblr|twitter|wp-android|yelp|office|bingweb|hao123|gsa|naver|sogousearch|yandex|atom|golive|brackets|iweb|frontpage|amaya|websphere|download|tansodl|origin|secondlife|valve|raptr|alipay|cooliris|google|leechcraft|expeditor)/i; diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 0000000..6890c60 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,54 @@ +const js = require('@eslint/js'); +const prettierRecommended = require('eslint-plugin-prettier/recommended'); +const globals = require('globals'); + +/* eslint-config-google (github.com/google/eslint-config-google) is archived and its last + * release predates flat config; these are the rules it added on top of eslint:recommended + * that still apply once eslint-plugin-prettier/recommended has turned off every formatting + * rule, kept here directly so the project doesn't depend on an unmaintained package. */ +const codeQualityRules = { + 'guard-for-in': 2, + 'no-caller': 2, + 'no-extend-native': 2, + 'no-extra-bind': 2, + 'no-invalid-this': 2, + 'no-multi-str': 2, + 'no-new-wrappers': 2, + 'no-throw-literal': 2, + 'no-with': 2, + 'prefer-promise-reject-errors': 2, + 'no-unused-vars': [2, { args: 'none' }], + camelcase: [2, { properties: 'never' }], + 'new-cap': 2, + 'no-array-constructor': 2, + 'no-new-object': 2, + 'one-var': [2, { var: 'never', let: 'never', const: 'never' }], + 'spaced-comment': [2, 'always'], + 'no-new-symbol': 2, + 'no-var': 2, + 'prefer-const': [2, { destructuring: 'all' }], + 'prefer-rest-params': 2, + 'prefer-spread': 2, +}; + +module.exports = [ + js.configs.recommended, + { + rules: codeQualityRules, + }, + prettierRecommended, + { + languageOptions: { + ecmaVersion: 6, + sourceType: 'commonjs', + globals: Object.assign({}, globals.node, globals.es2015), + }, + rules: { + 'no-control-regex': 0, + 'no-console': 'warn', + // The codebase's idiom is `let match; if ((match = re.exec(ua))) {...}` repeated many + // times in the same function to probe a UA string against a sequence of patterns. + 'no-useless-assignment': 0, + }, + }, +]; diff --git a/package-lock.json b/package-lock.json index 90ea8ee..fc19b5d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,79 +1,74 @@ { "name": "which-browser", - "version": "0.7.1", + "version": "0.8.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "which-browser", - "version": "0.7.1", + "version": "0.8.0", "license": "MIT", "devDependencies": { + "@eslint/js": "^10.0.1", "@hapi/code": "^9.0.3", - "@hapi/lab": "^25.1.3", - "eslint": "^8.52.0", - "eslint-config-google": "^0.14.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-prettier": "^5.0.1", - "husky": "^8.0.0", - "lint-staged": "^15.0.2", - "nyc": "^15.1.0", - "prettier": "^3.0.3", - "request": "^2.88.2", - "sinon": "^17.0.0", + "@hapi/lab": "^26.0.1", + "eslint": "^10.9.1", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-prettier": "^5.5.6", + "globals": "^17.11.0", + "husky": "^9.1.7", + "lint-staged": "^17.3.0", + "nyc": "^18.0.0", + "prettier": "^3.9.6", + "sinon": "^22.1.0", "yamljs": "^0.3.0" }, "engines": { "node": ">=6.0.0" } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "node_modules/@babel/code-frame": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz", + "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@babel/helper-validator-identifier": "^7.29.7", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.2.tgz", - "integrity": "sha512-0S9TQMmDHlqAZ2ITT95irXKfxN9bncq8ZCoJhun3nHL/lLUxd2NKBJYoNGWH7S0hz6fRQwWlAWn/ILM0C70KZQ==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz", + "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", - "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.23.0", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.0", - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz", + "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.7", + "@babel/helper-compilation-targets": "^7.29.7", + "@babel/helper-module-transforms": "^7.29.7", + "@babel/helpers": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/template": "^7.29.7", + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7", + "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -88,140 +83,33 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/core/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/core/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/eslint-parser": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.22.15.tgz", - "integrity": "sha512-yc8OOBIQk1EcRrpizuARSQS0TWAcOMpEJ1aafhNznaeYkeL+OhqnDObGFylB8ka8VFF/sZc+S4RzHyO+3LjQxg==", - "dev": true, - "dependencies": { - "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", - "eslint-visitor-keys": "^2.1.0", - "semver": "^6.3.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || >=14.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.11.0", - "eslint": "^7.5.0 || ^8.0.0" - } - }, - "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/@babel/eslint-parser/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", - "jsesc": "^2.5.1" + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz", + "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.29.7", + "@babel/helper-validator-option": "^7.29.7", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -229,72 +117,40 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@babel/helper-globals": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz", + "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==", "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz", + "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.0.tgz", - "integrity": "sha512-WhDWw1tdrlT0gMgUJSlX0IQvoO1eN279zrAUbVB+KpV2c3Tylz8+GnKOLllCS6Z/iZQEyVYxhZVUdPTqs2YYPw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz", + "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-imports": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7", + "@babel/traverse": "^7.29.7" }, "engines": { "node": ">=6.9.0" @@ -303,76 +159,59 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz", + "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz", + "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz", + "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.2.tgz", - "integrity": "sha512-lzchcp8SjTSVe/fPmLwtWVBFC7+Tbn8LGHDVfDp9JGxpAY5opSaEFgt8UQvrnECWOTdji2mOWMz1rOhkHscmGQ==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz", + "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.2", - "@babel/types": "^7.23.0" + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.29.8" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -381,311 +220,166 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template/node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/template/node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz", + "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "@babel/code-frame": "^7.29.7", + "@babel/parser": "^7.29.7", + "@babel/types": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/template/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/template/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/template/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/traverse": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.2.tgz", - "integrity": "sha512-azpe59SQ48qG6nu2CzcMLbxUudtN+dOM9kDbUqGq3HXUJRlo7i8fvPoxQUzYgLZ4cMVmuZgm8vvBpNeRhd6XSw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.0", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.0", - "@babel/types": "^7.23.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz", + "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "@babel/code-frame": "^7.29.7", + "@babel/generator": "^7.29.8", + "@babel/helper-globals": "^7.29.7", + "@babel/parser": "^7.29.8", + "@babel/template": "^7.29.7", + "@babel/types": "^7.29.8", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/traverse/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/traverse/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.29.7", + "@babel/helper-validator-identifier": "^7.29.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.10.1.tgz", + "integrity": "sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==", "dev": true, + "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, + "license": "MIT", "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "node_modules/@eslint/config-array": { + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", + "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "@eslint/object-schema": "^2.1.7", + "debug": "^4.3.1", + "minimatch": "^3.1.5" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "node_modules/@eslint/config-helpers": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "type-fest": "^0.20.2" + "@eslint/core": "^0.17.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/eslintrc/node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "@types/json-schema": "^7.0.15" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/@eslint/js": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz", + "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "eslint": "^10.0.0" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/@eslint/object-schema": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/js": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz", - "integrity": "sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA==", + "node_modules/@eslint/plugin-kit": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0", + "levn": "^0.4.1" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@hapi/boom": { @@ -735,24 +429,6 @@ "@hapi/hoek": "^11.0.2" } }, - "node_modules/@hapi/eslint-plugin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@hapi/eslint-plugin/-/eslint-plugin-6.0.0.tgz", - "integrity": "sha512-6eN1fnBO742nTTSpQtYB35aFGAT9I7r4u2v/+R2c9ToYTQp4QBoPOBA5R3+C7+Az3I0ugs+lTIqAsMPDLpsRAg==", - "dev": true, - "peerDependencies": { - "@babel/core": "^7.14.3", - "@babel/eslint-parser": "^7.14.3" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "@babel/eslint-parser": { - "optional": true - } - } - }, "node_modules/@hapi/hoek": { "version": "11.0.2", "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-11.0.2.tgz", @@ -760,18 +436,19 @@ "dev": true }, "node_modules/@hapi/lab": { - "version": "25.1.3", - "resolved": "https://registry.npmjs.org/@hapi/lab/-/lab-25.1.3.tgz", - "integrity": "sha512-WRvcRcCTUmZGSFue9z6iz8RGyY8ihZHOu1PpPG7YpmLsfKvViIiw5fOjYBMsVe+HRLZXjRRH4lcKWlVYzcnM8Q==", + "version": "26.0.1", + "resolved": "https://registry.npmjs.org/@hapi/lab/-/lab-26.0.1.tgz", + "integrity": "sha512-l1K4cktA1b+0WpUUPHEWIKwllu9IGAht3HYcNtzSIlxbuxLGWF4m37fVtRa0GWYewkx/4UGVgLcfCXmNSAqdDQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.16.0", - "@babel/eslint-parser": "^7.16.0", + "@babel/eslint-parser": "^7.25.1", "@hapi/bossy": "^6.0.0", - "@hapi/eslint-plugin": "^6.0.0", + "@hapi/eslint-plugin": "^7.0.0", "@hapi/hoek": "^11.0.2", "diff": "^5.0.0", - "eslint": "8.x.x", + "eslint": "9.x.x", "find-rc": "4.x.x", "globby": "^11.1.0", "handlebars": "4.x.x", @@ -785,9 +462,12 @@ "bin": { "lab": "bin/lab" }, + "engines": { + "node": ">=18" + }, "peerDependencies": { - "@hapi/eslint-plugin": "^6.0.0", - "typescript": ">=3.6.5" + "@hapi/eslint-plugin": "^7.0.0", + "typescript": ">=4.4.0" }, "peerDependenciesMeta": { "typescript": { @@ -795,6 +475,133 @@ } } }, + "node_modules/@hapi/lab/node_modules/@babel/eslint-parser": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.29.7.tgz", + "integrity": "sha512-zxt+UJTOMKvUt3yOg+D58MLuz334pHp93qifMFcjIIO+9hN6t+ufw2gi7vDPMpxvfnHRR+3VVXvIjineCcgyXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/@hapi/lab/node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, + "node_modules/@hapi/lab/node_modules/@eslint/eslintrc": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.6.tgz", + "integrity": "sha512-l2Ul9PrHsPCKcEY/ac7VgFj9D80C7S68sOKc618SyHDPK36s1XcFebXY0iTzUVn4Yq+YbwvSnDmCz9yxjX+QrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.14.0", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.3.0", + "minimatch": "^3.1.5", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@hapi/lab/node_modules/@eslint/js": { + "version": "9.39.5", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.5.tgz", + "integrity": "sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@hapi/lab/node_modules/@hapi/eslint-plugin": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@hapi/eslint-plugin/-/eslint-plugin-7.0.0.tgz", + "integrity": "sha512-u11LSTnBbSwZ6veyXRR4ULW0TfGDRYlg5mpNN0y2A2SoINN9f8za4jIxxzAfZKlFDKkqqowG5wxKBrquNfxmCg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "globals": "^15.11.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "^7.24.9", + "@babel/eslint-parser": "^7.25.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@babel/eslint-parser": { + "optional": true + } + } + }, + "node_modules/@hapi/lab/node_modules/@hapi/eslint-plugin/node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@hapi/lab/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@hapi/lab/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, "node_modules/@hapi/lab/node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -804,13 +611,173 @@ "node": ">=8" } }, - "node_modules/@hapi/lab/node_modules/diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "node_modules/@hapi/lab/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@hapi/lab/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@hapi/lab/node_modules/eslint": { + "version": "9.39.5", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.5.tgz", + "integrity": "sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.2", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", + "@eslint/eslintrc": "^3.3.6", + "@eslint/js": "9.39.5", + "@eslint/plugin-kit": "^0.4.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.5", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/@hapi/lab/node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@hapi/lab/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@hapi/lab/node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@hapi/lab/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@hapi/lab/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=0.3.1" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@hapi/lab/node_modules/globby": { @@ -842,6 +809,87 @@ "node": ">=8" } }, + "node_modules/@hapi/lab/node_modules/js-yaml": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.3.2.tgz", + "integrity": "sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@hapi/lab/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@hapi/lab/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@hapi/lab/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@hapi/lab/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/@hapi/lab/node_modules/seedrandom": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", @@ -891,18 +939,42 @@ "@hapi/topo": "^6.0.1" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.13", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", - "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "node_modules/@humanfs/core": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.2.tgz", + "integrity": "sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" + "@humanfs/types": "^0.15.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.8.tgz", + "integrity": "sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.2", + "@humanfs/types": "^0.15.0", + "@humanwhocodes/retry": "^0.4.0" }, "engines": { - "node": ">=10.10.0" + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/types": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@humanfs/types/-/types-0.15.0.tgz", + "integrity": "sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" } }, "node_modules/@humanwhocodes/module-importer": { @@ -918,11 +990,19 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", - "dev": true + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", @@ -996,57 +1076,60 @@ } }, "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.6.tgz", + "integrity": "sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "dev": true, - "engines": { - "node": ">=6.0.0" + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1057,6 +1140,7 @@ "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", "dev": true, + "license": "MIT", "dependencies": { "eslint-scope": "5.1.1" } @@ -1066,6 +1150,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -1074,6 +1159,16 @@ "node": ">=8.0.0" } }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1109,81 +1204,87 @@ "node": ">= 8" } }, - "node_modules/@pkgr/utils": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.4.2.tgz", - "integrity": "sha512-POgTXhjrTfbTV63DiFXav4lBHiICLKKwDeaKn9Nphwj7WH6m0hMMCaJkMyRWjgtPFyRKRVoMXXjczsTQRDEhYw==", + "node_modules/@pkgr/core": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.3.6.tgz", + "integrity": "sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==", "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "fast-glob": "^3.3.0", - "is-glob": "^4.0.3", - "open": "^9.1.0", - "picocolors": "^1.0.0", - "tslib": "^2.6.0" - }, + "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/unts" + "url": "https://opencollective.com/pkgr" } }, "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@sinonjs/fake-timers": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", - "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", + "version": "15.4.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-15.4.0.tgz", + "integrity": "sha512-DsG+8/LscQIQg68J6Ef3dv10u6nVyetYn923s3/sus5eaGfTo1of5WMZSLf0UJc9KDuKPilPH0UDJCjvNbDNCA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@sinonjs/commons": "^3.0.0" + "@sinonjs/commons": "^3.0.1" } }, "node_modules/@sinonjs/samsam": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", - "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-10.0.2.tgz", + "integrity": "sha512-8lVwD1Df1BmzoaOLhMcGGcz/Jyr5QY2KSB75/YK1QgKzoabTeLdIVyhXNZK9ojfSKSdirbXqdbsXXqP9/Ve8+A==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@sinonjs/commons": "^2.0.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" + "@sinonjs/commons": "^3.0.1", + "type-detect": "^4.1.0" } }, - "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "node_modules/@sinonjs/samsam/node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "dev": true, - "dependencies": { - "type-detect": "4.0.8" + "license": "MIT", + "engines": { + "node": ">=4" } }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", - "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", - "dev": true + "node_modules/@types/esrecurse": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", + "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", + "dev": true, + "license": "MIT" }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true + "node_modules/@types/estree": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", + "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" }, "node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", + "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -1223,10 +1324,11 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", + "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -1238,45 +1340,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-escapes": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", - "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", - "dev": true, - "dependencies": { - "type-fest": "^1.0.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/append-transform": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", @@ -1293,7 +1356,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/argparse": { "version": "1.0.10", @@ -1304,107 +1368,53 @@ "sprintf-js": "~1.0.2" } }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", - "dev": true - }, "node_modules/balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/bplist-parser": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz", - "integrity": "sha512-z0M+byMThzQmD9NILRniCUXYsYpjwnlO8N5uCFaCqIOpqRsJCrQL9NK3JsD67CN5a08nF5oIL2bD6loTdHOuKw==", + "node_modules/baseline-browser-mapping": { + "version": "2.11.19", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.19.tgz", + "integrity": "sha512-Grytf1xOxOEMTGRwx6rLGKkTabd4vMg3VrKdj/7joCmV0qgh4QwMMO6xh34YEXQqirAuUdgQGa5orJQQ+69RBw==", "dev": true, - "dependencies": { - "big-integer": "^1.6.44" + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.cjs" }, "engines": { - "node": ">= 5.10.0" + "node": ">=6.0.0" } }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, + "license": "MIT", "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" } }, "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "version": "4.28.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.8.tgz", + "integrity": "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA==", "dev": true, "funding": [ { @@ -1420,11 +1430,13 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" + "baseline-browser-mapping": "^2.11.12", + "caniuse-lite": "^1.0.30001809", + "electron-to-chromium": "^1.5.402", + "node-releases": "^2.0.53", + "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" @@ -1439,21 +1451,6 @@ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "node_modules/bundle-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz", - "integrity": "sha512-PKA4BeSvBpQKQ8iPOGCSiell+N8P+Tf1DlwqmYhpe2gAhKPHn8EYOxVT+ShuGmhg8lN8XiSlS80yiExKXrURlw==", - "dev": true, - "dependencies": { - "run-applescript": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/caching-transform": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", @@ -1488,9 +1485,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001558", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001558.tgz", - "integrity": "sha512-/Et7DwLqpjS47JPEcz6VnxU9PwcIdVi0ciLXRWBQdj1XFye68pSQYpV0QtPTfUKWuOaEig+/Vez2l74eDc1tPQ==", + "version": "1.0.30001810", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001810.tgz", + "integrity": "sha512-TITQPUkaz+aVk5GL6NhOdwk1aEaNTSDPsGFWrTuhKGtjTF70jL/Oht2W4c6rXUe5fu7Ie19VIahAXHIIiWWNeg==", "dev": true, "funding": [ { @@ -1505,64 +1502,16 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true - }, - "node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", - "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", - "dev": true, - "dependencies": { - "restore-cursor": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + ], + "license": "CC-BY-4.0" }, - "node_modules/cli-truncate": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, "node_modules/cliui": { @@ -1600,24 +1549,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/cliui/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/cliui/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/cliui/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -1668,46 +1599,24 @@ } }, "node_modules/color-convert": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.2.tgz", - "integrity": "sha512-3NUJZdhMhcdPn8vJ9v2UQJoH0qqoGUkYTgFEPZaPjEtwmmKUfNV46zZmgB2M5M4DCEQHMaCfWHCxiBflLm04Tg==", - "dev": true, - "dependencies": { - "color-name": "1.1.1" - } - }, - "node_modules/color-name": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.1.tgz", - "integrity": "sha1-SxQVMEz1ACjqgWQ2Q72C6gWANok=", - "dev": true - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", "dependencies": { - "delayed-stream": "~1.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 0.8" + "node": ">=7.0.0" } }, - "node_modules/commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true, - "engines": { - "node": ">=16" - } + "license": "MIT" }, "node_modules/commondir": { "version": "1.0.1", @@ -1727,17 +1636,12 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true - }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -1777,40 +1681,14 @@ "node": ">=8" } }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -1836,84 +1714,6 @@ "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, - "node_modules/default-browser": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-4.0.0.tgz", - "integrity": "sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==", - "dev": true, - "dependencies": { - "bundle-name": "^3.0.0", - "default-browser-id": "^3.0.0", - "execa": "^7.1.1", - "titleize": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-3.0.0.tgz", - "integrity": "sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==", - "dev": true, - "dependencies": { - "bplist-parser": "^0.2.0", - "untildify": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser/node_modules/execa": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/default-browser/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser/node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", - "dev": true, - "engines": { - "node": ">=14.18.0" - } - }, "node_modules/default-require-extensions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", @@ -1929,25 +1729,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "node_modules/diff": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.2.tgz", + "integrity": "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==", "dev": true, + "license": "BSD-3-Clause", "engines": { - "node": ">=0.4.0" + "node": ">=0.3.1" } }, "node_modules/dir-glob": { @@ -1962,39 +1751,12 @@ "node": ">=8" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "node_modules/electron-to-chromium": { - "version": "1.4.570", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.570.tgz", - "integrity": "sha512-5GxH0PLSIfXKOUMMHMCT4M0olwj1WwAxsQHzVW5Vh3kbsvGw8b4k7LHQmTLC2aRhsgFzrF57XJomca4XLc/WHA==", - "dev": true + "version": "1.5.415", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.415.tgz", + "integrity": "sha512-958V+Kbhtgz+SxXeEVKBjrlKRBIDAYvUJfwhjxMZ5S6ut9jAl7l9ZKBkBrvjyjZE36PabLUo2L8kEeV5O4vgJg==", + "dev": true, + "license": "ISC" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -2009,120 +1771,123 @@ "dev": true }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint": { - "version": "8.52.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.52.0.tgz", - "integrity": "sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.9.1.tgz", + "integrity": "sha512-9VaAkDURekixUQJy0oJYl2DcN6oKMfxay7XzaGYAWQwsb6qfKf+x76R2k1L8kb1boc+FyCAaTA9GmiKaaiaF+A==", "dev": true, + "license": "MIT", + "workspaces": [ + "packages/*" + ], "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.52.0", - "@humanwhocodes/config-array": "^0.11.13", + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.2", + "@eslint/config-array": "^0.23.5", + "@eslint/config-helpers": "^0.7.0", + "@eslint/core": "^1.2.1", + "@eslint/plugin-kit": "^0.7.2", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "ajv": "^6.14.0", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", - "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", + "eslint-scope": "^9.1.2", + "eslint-visitor-keys": "^5.0.1", + "espree": "^11.2.0", + "esquery": "^1.7.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", + "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", + "minimatch": "^10.2.5", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-google": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/eslint-config-google/-/eslint-config-google-0.14.0.tgz", - "integrity": "sha512-WsbX4WbjuMvTdeVL6+J3rK1RGhCTqjsFjX7UMSMgZiyxxaNLkoJENbrGExzERFeoTpGw3F3FypTiWAP9ZXzkEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "url": "https://eslint.org/donate" }, "peerDependencies": { - "eslint": ">=5.16.0" + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } } }, "node_modules/eslint-config-prettier": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", - "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "version": "10.1.8", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.8.tgz", + "integrity": "sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==", "dev": true, + "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, + "funding": { + "url": "https://opencollective.com/eslint-config-prettier" + }, "peerDependencies": { "eslint": ">=7.0.0" } }, "node_modules/eslint-plugin-prettier": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz", - "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==", + "version": "5.5.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.5.6.tgz", + "integrity": "sha512-ifetmTcxWfz+4qRW3pH/ujdTq2jQIj59AxJMIN26K5avYgU8dxycUETQonWiW+wPrYXA0j3Try0l1CnwVQtDqQ==", "dev": true, + "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.8.5" + "prettier-linter-helpers": "^1.0.1", + "synckit": "^0.11.13" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/prettier" + "url": "https://opencollective.com/eslint-plugin-prettier" }, "peerDependencies": { "@types/eslint": ">=8.0.0", "eslint": ">=8.0.0", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", "prettier": ">=3.0.0" }, "peerDependenciesMeta": { @@ -2135,30 +1900,24 @@ } }, "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz", + "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { + "@types/esrecurse": "^4.3.1", + "@types/estree": "^1.0.8", "esrecurse": "^4.3.0", "estraverse": "^5.2.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-scope/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", @@ -2171,154 +1930,121 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/eslint/node_modules/@eslint/config-array": { + "version": "0.23.5", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz", + "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "color-convert": "^2.0.1" + "@eslint/object-schema": "^3.0.5", + "debug": "^4.3.1", + "minimatch": "^10.2.4" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/eslint/node_modules/@eslint/config-helpers": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.7.0.tgz", + "integrity": "sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@eslint/core": "^1.2.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/eslint/node_modules/@eslint/core": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", + "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "color-name": "~1.1.4" + "@types/json-schema": "^7.0.15" }, "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, + "node_modules/eslint/node_modules/@eslint/object-schema": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz", + "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "node_modules/eslint/node_modules/@eslint/plugin-kit": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.2.tgz", + "integrity": "sha512-+CNAzxglkrpNf/kKywqQfk74QjtceuOE7Qm+AF8miRvPF/wmmK5+OJOgVh3AVTT3RP2mH3+FOaxlE5v72owk0A==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "type-fest": "^0.20.2" + "@eslint/core": "^1.2.1", + "levn": "^0.4.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^20.19.0 || ^22.13.0 || >=24" } }, - "node_modules/eslint/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/eslint/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": "18 || 20 || >=22" } }, - "node_modules/eslint/node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/eslint/node_modules/brace-expansion": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, "engines": { - "node": ">=8" + "node": "20 || >=22" } }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, - "dependencies": { - "argparse": "^2.0.1" + "license": "Apache-2.0", + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=24" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint/node_modules/locate-path": { @@ -2336,21 +2062,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "node_modules/eslint/node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "brace-expansion": "^5.0.8" }, "engines": { - "node": ">= 0.8.0" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/eslint/node_modules/p-limit": { @@ -2392,75 +2117,32 @@ "node": ">=8" } }, - "node_modules/eslint/node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/eslint/node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "node_modules/espree": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", + "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "prelude-ls": "^1.2.1" + "acorn": "^8.16.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^5.0.1" }, "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, + "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" @@ -2480,10 +2162,11 @@ } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -2491,15 +2174,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -2512,24 +2186,16 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, - "node_modules/estraverse": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", - "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", @@ -2539,62 +2205,6 @@ "node": ">=0.10.0" } }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "dev": true - }, - "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -2605,7 +2215,8 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/fast-glob": { "version": "3.3.1", @@ -2657,22 +2268,24 @@ } }, "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, + "license": "MIT", "dependencies": { - "flat-cache": "^3.0.4" + "flat-cache": "^4.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=16.0.0" } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -2716,96 +2329,56 @@ } }, "node_modules/flat-cache": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", - "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "keyv": "^4.5.4" }, "engines": { - "node": ">=12.0.0" + "node": ">=16" } }, - "node_modules/flat-cache/node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", - "dev": true + "node_modules/flatted": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.4.tgz", + "integrity": "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==", + "dev": true, + "license": "ISC" }, - "node_modules/flat-cache/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, + "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" }, "engines": { - "node": "*" + "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/flat-cache/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "license": "ISC", + "engines": { + "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, "node_modules/fromentries": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", @@ -2859,27 +2432,6 @@ "node": ">=8.0.0" } }, - "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, "node_modules/glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", @@ -2910,12 +2462,16 @@ } }, "node_modules/globals": { - "version": "11.10.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.10.0.tgz", - "integrity": "sha512-0GZF1RiPKU97IHUO5TORo9w1PwrH/NBPl+fS7oMLdaTRiYmYbwK4NWoZWrAdd0/abG9R2BU+OiwyQpTpE6pdfQ==", + "version": "17.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.11.0.tgz", + "integrity": "sha512-Z2I8hM+PbJDXQDq3Icgpzv+mPdwr68iZUU9d5WW4FuXfDUQfkZaZuvjMv42/5crNyw154+9+VWXbYrUgDXbxNw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/graceful-fs": { @@ -2924,20 +2480,15 @@ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", "dev": true }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "version": "4.7.9", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", + "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.5", - "neo-async": "^2.6.0", + "neo-async": "^2.6.2", "source-map": "^0.6.1", "wordwrap": "^1.0.0" }, @@ -2960,38 +2511,6 @@ "node": ">=0.10.0" } }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dev": true, - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/hasha": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", @@ -3035,40 +2554,17 @@ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "engines": { - "node": ">=16.17.0" - } - }, "node_modules/husky": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", "dev": true, + "license": "MIT", "bin": { - "husky": "lib/bin.js" + "husky": "bin.js" }, "engines": { - "node": ">=14" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/typicode" @@ -3083,6 +2579,23 @@ "node": ">= 4" } }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -3108,21 +2621,6 @@ "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -3132,18 +2630,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -3156,45 +2642,16 @@ "node": ">=0.10.0" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.12.0" } }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -3206,49 +2663,17 @@ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-wsl/node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, "node_modules/istanbul-lib-coverage": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", @@ -3271,100 +2696,50 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/istanbul-lib-processinfo": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", - "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-3.0.1.tgz", + "integrity": "sha512-s3mX05h5wGZeScG6XnOanygPh4SJu5ujMc9YbvpnLGXWy1cRiGbp0NdVcjHxgoZt3WfQppfBsa0y+gWdYJ2pGQ==", "dev": true, + "license": "ISC", "dependencies": { "archy": "^1.0.0", "cross-spawn": "^7.0.3", "istanbul-lib-coverage": "^3.2.0", "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" + "rimraf": "^6.1.3" }, "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "node": "20 || >=22" } }, "node_modules/istanbul-lib-report": { @@ -3490,13 +2865,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "version": "3.15.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.2.tgz", + "integrity": "sha512-6EuL879VkRA+1Cz578mKMiKvjPNEuk6+r1JaFzoSWejZmtf7xWbIyw1e3KkxlkzTIt9Taw6JBhEppG7utc1P+w==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -3505,35 +2882,25 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", @@ -3547,12 +2914,6 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -3565,87 +2926,65 @@ "node": ">=6" } }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/just-extend": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-4.2.1.tgz", - "integrity": "sha512-g3UB796vUFIY90VIv/WX3L2c8CS2MdWUww3CNrYmqza1Fg0DURc2K/O4YrnklBdQarSJ/y8JnJYDGc+1iumQjg==", - "dev": true - }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, "engines": { - "node": ">=10" + "node": ">= 0.8.0" } }, "node_modules/lint-staged": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.0.2.tgz", - "integrity": "sha512-vnEy7pFTHyVuDmCAIFKR5QDO8XLVlPFQQyujQ/STOxe40ICWqJ6knS2wSJ/ffX/Lw0rz83luRDh+ET7toN+rOw==", - "dev": true, - "dependencies": { - "chalk": "5.3.0", - "commander": "11.1.0", - "debug": "4.3.4", - "execa": "8.0.1", - "lilconfig": "2.1.0", - "listr2": "7.0.2", - "micromatch": "4.0.5", - "pidtree": "0.6.0", - "string-argv": "0.3.2", - "yaml": "2.3.3" + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-17.3.0.tgz", + "integrity": "sha512-woZS3vNe3UKqBaLPvbLOtKRY4tLANpWQhom12MGWqC8Mh1lCOO+WgSwmX2amjJAqTY9BkXYW87fCUH5H9Ph6xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^4.0.5", + "string-argv": "^0.3.2", + "tinyexec": "^1.2.4" }, "bin": { "lint-staged": "bin/lint-staged.js" }, "engines": { - "node": ">=18.12.0" + "node": ">=22.22.1" }, "funding": { "url": "https://opencollective.com/lint-staged" + }, + "optionalDependencies": { + "yaml": "^2.9.0" } }, - "node_modules/listr2": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-7.0.2.tgz", - "integrity": "sha512-rJysbR9GKIalhTbVL2tYbF2hVyDnrf7pFUZBwjPaMIdadYHmeT+EVi/Bu3qd7ETQPahTotg2WRCatXwRBW554g==", + "node_modules/lint-staged/node_modules/picomatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.7.tgz", + "integrity": "sha512-qcJu88Q2IWqJsDD529JKMdwGm/dvInW4HvQnRwiH9JtihJvzGOscDtHE3x1pBKeUOTysQ8kVmLnJ2kJu7yhcGA==", "dev": true, - "dependencies": { - "cli-truncate": "^3.1.0", - "colorette": "^2.0.20", - "eventemitter3": "^5.0.1", - "log-update": "^5.0.1", - "rfdc": "^1.3.0", - "wrap-ansi": "^8.1.0" - }, + "license": "MIT", "engines": { - "node": ">=16.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/locate-path": { @@ -3667,42 +3006,18 @@ "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", "dev": true }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "dev": true - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "node_modules/log-update": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz", - "integrity": "sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==", - "dev": true, - "dependencies": { - "ansi-escapes": "^5.0.0", - "cli-cursor": "^4.0.0", - "slice-ansi": "^5.0.0", - "strip-ansi": "^7.0.1", - "wrap-ansi": "^8.0.1" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/lru-cache": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^3.0.2" } @@ -3722,21 +3037,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -3747,56 +3047,25 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { "node": ">=8.6" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", + "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -3813,75 +3082,47 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mo-walk": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mo-walk/-/mo-walk-1.2.0.tgz", - "integrity": "sha512-rat9d/EMjr08N56/u2MwMaykb/bGuByYmTgG8eJIJbUxPtSuoW76el6Tm1+cUqY0lmhuss4IIO3x2lWLojmRTA==", + "node_modules/minipass": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", "dev": true, - "dependencies": { - "pkg-up": "3.x.x" - }, + "license": "BlueOak-1.0.0", "engines": { - "node": ">=12" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/neo-async": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", - "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", - "dev": true - }, - "node_modules/nise": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.5.tgz", - "integrity": "sha512-VJuPIfUFaXNRzETTQEEItTOP8Y171ijr+JLq42wHes3DiryR8vT+1TXQW/Rx8JNUhyYYWyIvjXTU6dOhJcs9Nw==", - "dev": true, - "dependencies": { - "@sinonjs/commons": "^2.0.0", - "@sinonjs/fake-timers": "^10.0.2", - "@sinonjs/text-encoding": "^0.7.1", - "just-extend": "^4.0.2", - "path-to-regexp": "^1.7.0" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/nise/node_modules/@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "node_modules/mo-walk": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mo-walk/-/mo-walk-1.2.0.tgz", + "integrity": "sha512-rat9d/EMjr08N56/u2MwMaykb/bGuByYmTgG8eJIJbUxPtSuoW76el6Tm1+cUqY0lmhuss4IIO3x2lWLojmRTA==", "dev": true, "dependencies": { - "type-detect": "4.0.8" + "pkg-up": "3.x.x" + }, + "engines": { + "node": ">=12" } }, - "node_modules/nise/node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } + "license": "MIT" }, - "node_modules/nise/node_modules/@sinonjs/fake-timers/node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true, - "dependencies": { - "type-detect": "4.0.8" - } + "license": "MIT" }, "node_modules/node-preload": { "version": "0.2.1", @@ -3896,31 +3137,21 @@ } }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, - "node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "version": "2.0.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.53.tgz", + "integrity": "sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==", "dev": true, - "dependencies": { - "path-key": "^4.0.0" - }, + "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18" } }, "node_modules/nyc": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-18.0.0.tgz", + "integrity": "sha512-G5UyHinFkB1BxqGTrmZdB6uIYH0+v7ZnVssuflUDi+J+RhKWyAhRT1RCehBSI6jLFLuUUgFDyLt49mUtdO1XeQ==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/load-nyc-config": "^1.0.0", "@istanbuljs/schema": "^0.1.2", @@ -3929,13 +3160,13 @@ "decamelize": "^1.2.0", "find-cache-dir": "^3.2.0", "find-up": "^4.1.0", - "foreground-child": "^2.0.0", + "foreground-child": "^3.3.0", "get-package-type": "^0.1.0", - "glob": "^7.1.6", + "glob": "^13.0.6", "istanbul-lib-coverage": "^3.0.0", "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-instrument": "^6.0.2", + "istanbul-lib-processinfo": "^3.0.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.0.2", @@ -3944,17 +3175,40 @@ "p-map": "^3.0.0", "process-on-spawn": "^1.0.0", "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", + "rimraf": "^6.1.3", "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", + "spawn-wrap": "^3.0.0", + "test-exclude": "^8.0.0", "yargs": "^15.0.2" }, "bin": { "nyc": "bin/nyc.js" }, "engines": { - "node": ">=8.9" + "node": "20 || >=22" + } + }, + "node_modules/nyc/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/nyc/node_modules/brace-expansion": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" } }, "node_modules/nyc/node_modules/convert-source-map": { @@ -3977,20 +3231,18 @@ } }, "node_modules/nyc/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "*" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -4008,25 +3260,29 @@ "node": ">=8" } }, - "node_modules/nyc/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/nyc/node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "p-limit": "^2.2.0" + "brace-expansion": "^5.0.8" }, "engines": { - "node": ">=8" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/nyc/node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "node_modules/nyc/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "aggregate-error": "^3.0.0" + "p-limit": "^2.2.0" }, "engines": { "node": ">=8" @@ -4050,30 +3306,6 @@ "node": ">=8" } }, - "node_modules/nyc/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "engines": { - "node": "*" - } - }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -4083,37 +3315,22 @@ "wrappy": "1" } }, - "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-9.1.0.tgz", - "integrity": "sha512-OS+QTnw1/4vrf+9hh1jc1jnYjzSG4ttTBB8UxOwAnInG3Uo4ssetzC1ihqaIHjLJnA5GGlRl6QlZXOTQhRBUvg==", + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "dependencies": { - "default-browser": "^4.0.0", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^2.2.0" + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.8.0" } }, "node_modules/p-limit": { @@ -4140,6 +3357,19 @@ "node": ">=6" } }, + "node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", @@ -4164,6 +3394,13 @@ "node": ">=8" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -4194,33 +3431,33 @@ "node": ">=0.10.0" } }, - "node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, "engines": { - "node": ">=12" + "node": "18 || 20 || >=22" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/path-to-regexp": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", - "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", "dev": true, - "dependencies": { - "isarray": "0.0.1" + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" } }, - "node_modules/path-to-regexp/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -4230,23 +3467,19 @@ "node": ">=8" } }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", "dev": true, + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -4254,18 +3487,6 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pidtree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", - "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -4326,11 +3547,22 @@ "node": ">=8" } }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.6.tgz", + "integrity": "sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" }, @@ -4342,10 +3574,11 @@ } }, "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz", + "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==", "dev": true, + "license": "MIT", "dependencies": { "fast-diff": "^1.1.2" }, @@ -4365,12 +3598,6 @@ "node": ">=8" } }, - "node_modules/psl": { - "version": "1.1.31", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", - "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", - "dev": true - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -4380,15 +3607,6 @@ "node": ">=6" } }, - "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -4421,38 +3639,6 @@ "node": ">=4" } }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dev": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -4477,46 +3663,6 @@ "node": ">=4" } }, - "node_modules/restore-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", - "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/restore-cursor/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -4527,135 +3673,81 @@ "node": ">=0.10.0" } }, - "node_modules/rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "node_modules/run-applescript": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", - "integrity": "sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==", - "dev": true, - "dependencies": { - "execa": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/rimraf": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.1.3.tgz", + "integrity": "sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" + "glob": "^13.0.3", + "package-json-from-dist": "^1.0.1" }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/run-applescript/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" + "bin": { + "rimraf": "dist/esm/bin.mjs" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/run-applescript/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, "engines": { - "node": ">=8" + "node": "20 || >=22" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-applescript/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/run-applescript/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/rimraf/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": "18 || 20 || >=22" } }, - "node_modules/run-applescript/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", "dev": true, + "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" + "balanced-match": "^4.0.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "20 || >=22" } }, - "node_modules/run-applescript/node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/rimraf/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, "engines": { - "node": ">=8" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/run-applescript/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "node_modules/rimraf/node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.8" + }, "engines": { - "node": ">=6" + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/run-parallel": { @@ -4681,31 +3773,15 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } }, "node_modules/set-blocking": { "version": "2.0.0", @@ -4720,17 +3796,16 @@ "dev": true }, "node_modules/sinon": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-17.0.0.tgz", - "integrity": "sha512-p4lJiYKBoOEVUxxVIC9H1MM2znG1/c8gud++I2BauJA5hsz7hHsst35eurNWXTusBsIq66FzOQbZ/uMdpvbPIQ==", + "version": "22.1.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-22.1.0.tgz", + "integrity": "sha512-n1ajF2rBWMTtEwbKcw4UdFg4nCnDdq/U6RDoxtOd7oapOlRoJ5ynwFx60owROyhDpA9QhMZi0pCO/xtmwFjG7w==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@sinonjs/commons": "^3.0.0", - "@sinonjs/fake-timers": "^11.2.2", - "@sinonjs/samsam": "^8.0.0", - "diff": "^5.1.0", - "nise": "^5.1.5", - "supports-color": "^7.2.0" + "@sinonjs/commons": "^3.0.1", + "@sinonjs/fake-timers": "^15.4.0", + "@sinonjs/samsam": "^10.0.2", + "diff": "^9.0.0" }, "funding": { "type": "opencollective", @@ -4738,35 +3813,15 @@ } }, "node_modules/sinon/node_modules/diff": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", - "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-9.0.0.tgz", + "integrity": "sha512-svtcdpS8CgJyqAjEQIXdb3OjhFVVYjzGAPO8WGCmRbrml64SPw/jJD4GoE98aR7r25A0XcgrK3F02yw9R/vhQw==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } }, - "node_modules/sinon/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/sinon/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -4776,22 +3831,6 @@ "node": ">=8" } }, - "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, "node_modules/source-map-support": { "version": "0.5.21", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", @@ -4812,15 +3851,17 @@ } }, "node_modules/spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-3.0.0.tgz", + "integrity": "sha512-z+s5vv4KzFPJVddGab0xX2n7kQPGMdNUX5l9T8EJqsXdKTWpcxmAqWHpsgHEXoC1taGBCc7b79bi62M5kdbrxQ==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { + "cross-spawn": "^7.0.6", "foreground-child": "^2.0.0", "is-windows": "^1.0.2", "make-dir": "^3.0.0", - "rimraf": "^3.0.0", + "rimraf": "^6.1.3", "signal-exit": "^3.0.2", "which": "^2.0.1" }, @@ -4828,54 +3869,18 @@ "node": ">=8" } }, - "node_modules/spawn-wrap/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/spawn-wrap/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/spawn-wrap/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/spawn-wrap/node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", "dev": true, + "license": "ISC", "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": ">= 8" + "node": ">=8.0.0" } }, "node_modules/sprintf-js": { @@ -4884,31 +3889,6 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "node_modules/sshpk": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", - "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", - "dev": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/string-argv": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", @@ -4918,44 +3898,6 @@ "node": ">=0.6.19" } }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "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/strip-bom": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", @@ -4965,93 +3907,115 @@ "node": ">=8" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/synckit": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", - "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.13.tgz", + "integrity": "sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==", "dev": true, + "license": "MIT", "dependencies": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.5.0" + "@pkgr/core": "^0.3.6" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/unts" + "url": "https://opencollective.com/synckit" } }, "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-8.0.0.tgz", + "integrity": "sha512-ZOffsNrXYggvU1mDGHk54I96r26P8SyMjO5slMKSc7+IWmtB/MQKnEC2fP51imB3/pT6YK5cT5E8f+Dd9KdyOQ==", "dev": true, + "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" + "glob": "^13.0.6", + "minimatch": "^10.2.2" }, "engines": { - "node": ">=8" + "node": "20 || >=22" + } + }, + "node_modules/test-exclude/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" } }, "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "*" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/titleize": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/titleize/-/titleize-3.0.0.tgz", - "integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==", + "node_modules/test-exclude/node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "brace-expansion": "^5.0.8" + }, "engines": { - "node": ">=12" + "node": "18 || 20 || >=22" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "node_modules/tinyexec": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.3.0.tgz", + "integrity": "sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=18" } }, "node_modules/to-regex-range": { @@ -5059,6 +4023,7 @@ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -5066,64 +4031,29 @@ "node": ">=8.0" } }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "dev": true - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { - "safe-buffer": "^5.0.1" + "prelude-ls": "^1.2.1" }, "engines": { - "node": "*" + "node": ">= 0.8.0" } }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, "node_modules/type-detect": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -5146,19 +4076,10 @@ "node": ">=0.8.0" } }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.1.tgz", + "integrity": "sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ==", "dev": true, "funding": [ { @@ -5174,9 +4095,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -5194,28 +4116,20 @@ "punycode": "^2.1.0" } }, - "node_modules/uuid": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", - "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "dev": true, - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "engines": [ - "node >=0.6.0" - ], + "license": "ISC", "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, "node_modules/which-module": { @@ -5230,29 +4144,22 @@ "integrity": "sha512-1hEeV8SfBYhNRc/bNXeQfyUBX8Dl9SCYME3qXh99iZP9wJcnhnlBsoBw8Y0lXVZ3YuPsoxImTzBiol1ouNR/hg==", "dev": true }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -5281,15 +4188,24 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yaml": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.3.tgz", - "integrity": "sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==", + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", + "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", "dev": true, + "license": "ISC", + "optional": true, + "bin": { + "yaml": "bin.mjs" + }, "engines": { - "node": ">= 14" + "node": ">= 14.6" + }, + "funding": { + "url": "https://github.com/sponsors/eemeli" } }, "node_modules/yamljs": { diff --git a/package.json b/package.json index 75c059b..72d41c8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "which-browser", - "version": "0.7.1", + "version": "0.8.0", "description": "Browser sniffing tool and UA parser. Browser sniffing gone too far — A useragent parser library for JavaScript", "main": "src/Parser.js", "types": "which-browser.d.ts", @@ -15,8 +15,9 @@ "update-models": "node ./bin/update-models", "update-profiles": "node ./bin/update-profiles", "update-regexes": "node ./bin/update-regexes", - "update-all": "npm run update-applications && npm run update-browser-ids && npm run update-chrome && npm run update-indices && npm run update-models && npm run update-profiles && npm run update-regexes", - "prepare": "husky install" + "update-all": "npm run update-applications && npm run update-browser-ids && npm run update-chrome && npm run update-indices && npm run update-models && npm run update-profiles && npm run update-regexes && npm run format-data", + "format-data": "prettier --write \"data/**/*.js\" && eslint --fix data", + "prepare": "husky" }, "engines": { "node": ">=6.0.0" @@ -38,18 +39,18 @@ "author": "Simone Mariotti", "license": "MIT", "devDependencies": { + "@eslint/js": "^10.0.1", "@hapi/code": "^9.0.3", - "@hapi/lab": "^25.1.3", - "eslint": "^8.52.0", - "eslint-config-google": "^0.14.0", - "eslint-config-prettier": "^9.0.0", - "eslint-plugin-prettier": "^5.0.1", - "husky": "^8.0.0", - "lint-staged": "^15.0.2", - "nyc": "^15.1.0", - "prettier": "^3.0.3", - "request": "^2.88.2", - "sinon": "^17.0.0", + "@hapi/lab": "^26.0.1", + "eslint": "^10.9.1", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-prettier": "^5.5.6", + "globals": "^17.11.0", + "husky": "^9.1.7", + "lint-staged": "^17.3.0", + "nyc": "^18.0.0", + "prettier": "^3.9.6", + "sinon": "^22.1.0", "yamljs": "^0.3.0" }, "lint-staged": { diff --git a/src/Analyser/Camouflage.js b/src/Analyser/Camouflage.js index 34f62d9..e9179c2 100644 --- a/src/Analyser/Camouflage.js +++ b/src/Analyser/Camouflage.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Constants = require('../constants'); const DeviceModels = require('../data/DeviceModels'); const Version = require('../model/Version'); diff --git a/src/Analyser/Corrections.js b/src/Analyser/Corrections.js index 68aadef..51df441 100644 --- a/src/Analyser/Corrections.js +++ b/src/Analyser/Corrections.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Constants = require('../constants'); class Corrections { @@ -28,6 +26,9 @@ class Corrections { if (this.data.browser.name && this.data.browser.family) { Corrections.hideFamilyIfEqualToBrowser.call(this); } + if (this.data.browser.name && this.data.os.name && this.data.os.version) { + Corrections.hideOsVersionIfFixed.call(this); + } return this; } @@ -37,6 +38,22 @@ class Corrections { } } + static hideOsVersionIfFixed() { + if (this.data.os.name === 'OS X') { + const name = this.data.browser.family ? this.data.browser.family.name : this.data.browser.name; + + if (name === 'Chrome' && this.data.os.version.value === '10.15.7') { + this.data.os.version = null; + } + if (name === 'Safari' && this.data.os.version.value === '10.15.7') { + this.data.os.version = null; + } + if (name === 'Firefox' && this.data.os.version.value === '10.15') { + this.data.os.version = null; + } + } + } + static fixMidoriEngineName() { if (this.data.browser.name === 'Midori' && this.data.engine.name !== 'Webkit') { this.data.engine.name = 'Webkit'; diff --git a/src/Analyser/Derive.js b/src/Analyser/Derive.js index 3868b83..8c20fb2 100644 --- a/src/Analyser/Derive.js +++ b/src/Analyser/Derive.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Constants = require('../constants'); const Using = require('../model/Using'); const Version = require('../model/Version'); @@ -426,6 +424,18 @@ class Derive { if (this.data.os.version.is('12')) { this.data.os.version.nickname = 'Monterey'; } + if (this.data.os.version.is('13')) { + this.data.os.version.nickname = 'Ventura'; + } + if (this.data.os.version.is('14')) { + this.data.os.version.nickname = 'Sonoma'; + } + if (this.data.os.version.is('15')) { + this.data.os.version.nickname = 'Sequoia'; + } + if (this.data.os.version.is('26')) { + this.data.os.version.nickname = 'Tahoe'; + } } } } diff --git a/src/Analyser/Header.js b/src/Analyser/Header.js index 650d677..11fbdba 100644 --- a/src/Analyser/Header.js +++ b/src/Analyser/Header.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Constants = require('../constants'); const { Baidu, BrowserId, OperaMini, Puffin, UCBrowserNew, UCBrowserOld, Useragent, Wap } = require('./Header/'); diff --git a/src/Analyser/Header/Baidu.js b/src/Analyser/Header/Baidu.js index 3bd9891..5c99ffd 100644 --- a/src/Analyser/Header/Baidu.js +++ b/src/Analyser/Header/Baidu.js @@ -1,4 +1,3 @@ -/* eslint-disable require-jsdoc */ /** * Class for baidu detection */ diff --git a/src/Analyser/Header/BrowserId.js b/src/Analyser/Header/BrowserId.js index c731ac8..110a003 100644 --- a/src/Analyser/Header/BrowserId.js +++ b/src/Analyser/Header/BrowserId.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Using = require('../../model/Using'); const Version = require('../../model/Version'); const Constants = require('../../constants'); diff --git a/src/Analyser/Header/OperaMini.js b/src/Analyser/Header/OperaMini.js index b9ec936..2f4eadb 100644 --- a/src/Analyser/Header/OperaMini.js +++ b/src/Analyser/Header/OperaMini.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Constants = require('../../constants'); const DeviceModels = require('../../data/DeviceModels'); diff --git a/src/Analyser/Header/Puffin.js b/src/Analyser/Header/Puffin.js index 4310dc9..98adb47 100644 --- a/src/Analyser/Header/Puffin.js +++ b/src/Analyser/Header/Puffin.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const DeviceModels = require('../../data/DeviceModels'); class Puffin { diff --git a/src/Analyser/Header/UCBrowserNew.js b/src/Analyser/Header/UCBrowserNew.js index 879b6cd..1fdc022 100644 --- a/src/Analyser/Header/UCBrowserNew.js +++ b/src/Analyser/Header/UCBrowserNew.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const DeviceModels = require('../../data/DeviceModels'); const Family = require('../../model/Family'); const Version = require('../../model/Version'); diff --git a/src/Analyser/Header/UCBrowserOld.js b/src/Analyser/Header/UCBrowserOld.js index 3c9587a..34fe9f6 100644 --- a/src/Analyser/Header/UCBrowserOld.js +++ b/src/Analyser/Header/UCBrowserOld.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Constants = require('../../constants'); class UCBrowserOld { diff --git a/src/Analyser/Header/Useragent.js b/src/Analyser/Header/Useragent.js index 4174e96..6779230 100644 --- a/src/Analyser/Header/Useragent.js +++ b/src/Analyser/Header/Useragent.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const { Application, Bot, Browser, Device, Engine, Os, Using } = require('./Useragent/'); class Useragent { diff --git a/src/Analyser/Header/Useragent/Application.js b/src/Analyser/Header/Useragent/Application.js index 60dcbb7..5599605 100644 --- a/src/Analyser/Header/Useragent/Application.js +++ b/src/Analyser/Header/Useragent/Application.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Using = require('../../../model/Using'); const Version = require('../../../model/Version'); const Family = require('../../../model/Family'); diff --git a/src/Analyser/Header/Useragent/Bot.js b/src/Analyser/Header/Useragent/Bot.js index f98ee2a..3775a9f 100644 --- a/src/Analyser/Header/Useragent/Bot.js +++ b/src/Analyser/Header/Useragent/Bot.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Constants = require('../../../constants'); const Applications = require('../../../data/Applications'); diff --git a/src/Analyser/Header/Useragent/Browser.js b/src/Analyser/Header/Useragent/Browser.js index 050614f..28e037a 100644 --- a/src/Analyser/Header/Useragent/Browser.js +++ b/src/Analyser/Header/Useragent/Browser.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Using = require('../../../model/Using'); const Version = require('../../../model/Version'); const Family = require('../../../model/Family'); @@ -2614,5 +2612,3 @@ class Browser { } module.exports = Browser; - -/* eslint-enable require-jsdoc */ diff --git a/src/Analyser/Header/Useragent/Device.js b/src/Analyser/Header/Useragent/Device.js index a209478..73ec0db 100644 --- a/src/Analyser/Header/Useragent/Device.js +++ b/src/Analyser/Header/Useragent/Device.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const { Appliance, Cars, diff --git a/src/Analyser/Header/Useragent/Device/Appliance.js b/src/Analyser/Header/Useragent/Device/Appliance.js index f52d021..2ece636 100644 --- a/src/Analyser/Header/Useragent/Device/Appliance.js +++ b/src/Analyser/Header/Useragent/Device/Appliance.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Constants = require('../../../../constants'); class Appliance { diff --git a/src/Analyser/Header/Useragent/Device/Cars.js b/src/Analyser/Header/Useragent/Device/Cars.js index 3c9ddf8..7bfbf0c 100644 --- a/src/Analyser/Header/Useragent/Device/Cars.js +++ b/src/Analyser/Header/Useragent/Device/Cars.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Constants = require('../../../../constants'); class Cars { diff --git a/src/Analyser/Header/Useragent/Device/Ereader.js b/src/Analyser/Header/Useragent/Device/Ereader.js index e237e98..64c5f91 100644 --- a/src/Analyser/Header/Useragent/Device/Ereader.js +++ b/src/Analyser/Header/Useragent/Device/Ereader.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Constants = require('../../../../constants'); class Ereader { diff --git a/src/Analyser/Header/Useragent/Device/Gaming.js b/src/Analyser/Header/Useragent/Device/Gaming.js index 44d77e9..783dc53 100644 --- a/src/Analyser/Header/Useragent/Device/Gaming.js +++ b/src/Analyser/Header/Useragent/Device/Gaming.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Constants = require('../../../../constants'); class Gaming { diff --git a/src/Analyser/Header/Useragent/Device/Gps.js b/src/Analyser/Header/Useragent/Device/Gps.js index ad5aaa8..df3f639 100644 --- a/src/Analyser/Header/Useragent/Device/Gps.js +++ b/src/Analyser/Header/Useragent/Device/Gps.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Constants = require('../../../../constants'); class Gps { diff --git a/src/Analyser/Header/Useragent/Device/Media.js b/src/Analyser/Header/Useragent/Device/Media.js index 34cfc9d..6a67793 100644 --- a/src/Analyser/Header/Useragent/Device/Media.js +++ b/src/Analyser/Header/Useragent/Device/Media.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Constants = require('../../../../constants'); const Version = require('../../../../model/Version'); diff --git a/src/Analyser/Header/Useragent/Device/Mobile.js b/src/Analyser/Header/Useragent/Device/Mobile.js index 24ee73f..3fb2dc7 100644 --- a/src/Analyser/Header/Useragent/Device/Mobile.js +++ b/src/Analyser/Header/Useragent/Device/Mobile.js @@ -1,4 +1,3 @@ -/* eslint-disable require-jsdoc */ /* eslint-disable no-useless-escape */ const Constants = require('../../../../constants'); diff --git a/src/Analyser/Header/Useragent/Device/Pda.js b/src/Analyser/Header/Useragent/Device/Pda.js index e652438..aecaae6 100644 --- a/src/Analyser/Header/Useragent/Device/Pda.js +++ b/src/Analyser/Header/Useragent/Device/Pda.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Constants = require('../../../../constants'); const Version = require('../../../../model/Version'); const Family = require('../../../../model/Family'); diff --git a/src/Analyser/Header/Useragent/Device/Phone.js b/src/Analyser/Header/Useragent/Device/Phone.js index dee5191..d697616 100644 --- a/src/Analyser/Header/Useragent/Device/Phone.js +++ b/src/Analyser/Header/Useragent/Device/Phone.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Constants = require('../../../../constants'); class Phone { diff --git a/src/Analyser/Header/Useragent/Device/Printer.js b/src/Analyser/Header/Useragent/Device/Printer.js index e97e499..c211421 100644 --- a/src/Analyser/Header/Useragent/Device/Printer.js +++ b/src/Analyser/Header/Useragent/Device/Printer.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Constants = require('../../../../constants'); class Printer { diff --git a/src/Analyser/Header/Useragent/Device/Signage.js b/src/Analyser/Header/Useragent/Device/Signage.js index 2e2a22b..d14231a 100644 --- a/src/Analyser/Header/Useragent/Device/Signage.js +++ b/src/Analyser/Header/Useragent/Device/Signage.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Constants = require('../../../../constants'); class Signage { diff --git a/src/Analyser/Header/Useragent/Device/Tablet.js b/src/Analyser/Header/Useragent/Device/Tablet.js index 83ffa63..b25630f 100644 --- a/src/Analyser/Header/Useragent/Device/Tablet.js +++ b/src/Analyser/Header/Useragent/Device/Tablet.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Constants = require('../../../../constants'); class Tablet { diff --git a/src/Analyser/Header/Useragent/Device/Television.js b/src/Analyser/Header/Useragent/Device/Television.js index e6fbe38..8c2e93e 100644 --- a/src/Analyser/Header/Useragent/Device/Television.js +++ b/src/Analyser/Header/Useragent/Device/Television.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Constants = require('../../../../constants'); const Manufacturers = require('../../../../data/Manufacturers'); diff --git a/src/Analyser/Header/Useragent/Engine.js b/src/Analyser/Header/Useragent/Engine.js index f8ddecc..1693a0c 100644 --- a/src/Analyser/Header/Useragent/Engine.js +++ b/src/Analyser/Header/Useragent/Engine.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Version = require('../../../model/Version'); class Engine { diff --git a/src/Analyser/Header/Useragent/Os.js b/src/Analyser/Header/Useragent/Os.js index c383db3..f59c169 100644 --- a/src/Analyser/Header/Useragent/Os.js +++ b/src/Analyser/Header/Useragent/Os.js @@ -1,4 +1,3 @@ -/* eslint-disable require-jsdoc */ /* eslint-disable no-useless-escape */ const Family = require('../../../model/Family'); @@ -79,6 +78,14 @@ class Os { }); } + /* Since iOS 26, Safari freezes the reported OS version at 18 or 19, the real version can be + * recovered from the Safari version number, which stayed tied to the iOS major version */ + if (this.data.os.version && /^1[89]\./u.test(this.data.os.version.value)) { + if ((match = /Version\/([0-9]+(?:\.[0-9]+)*)/u.exec(ua)) && parseInt(match[1], 10) >= 26) { + this.data.os.version = new Version({ value: match[1] }); + } + } + if (/iPhone Simulator;/u.test(ua)) { this.data.device.type = Constants.deviceType.EMULATOR; } else { @@ -103,14 +110,14 @@ class Os { this.data.os.name = 'OS X'; - if ((match = /Mac OS X (1[0-9][0-9\._]*)/u.exec(ua))) { + if ((match = /Mac OS X ([12][0-9][0-9\._]*)/u.exec(ua))) { this.data.os.version = new Version({ value: match[1].replace(/_/g, '.'), details: 2, }); } - if ((match = /;os=Mac (1[0-9][0-9[\.,]*)/u.exec(ua))) { + if ((match = /;os=Mac ([12][0-9][0-9[\.,]*)/u.exec(ua))) { this.data.os.version = new Version({ value: match[1].replace(/,/g, '.'), details: 2, diff --git a/src/Analyser/Header/Useragent/Using.js b/src/Analyser/Header/Useragent/Using.js index c9086c8..649e6df 100644 --- a/src/Analyser/Header/Useragent/Using.js +++ b/src/Analyser/Header/Useragent/Using.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Version = require('../../../model/Version'); const UsingClass = require('../../../model/Using'); diff --git a/src/Analyser/Header/Wap.js b/src/Analyser/Header/Wap.js index 1a4a9ad..a6f61d9 100644 --- a/src/Analyser/Header/Wap.js +++ b/src/Analyser/Header/Wap.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const Constants = require('../../constants'); const DeviceProfiles = require('../../data/DeviceProfiles'); diff --git a/src/model/Main.js b/src/model/Main.js index e45624b..8f76f54 100644 --- a/src/model/Main.js +++ b/src/model/Main.js @@ -1,4 +1,3 @@ -/* eslint-disable valid-jsdoc */ const Browser = require('./Browser'); const Engine = require('./Engine'); const Os = require('./Os'); @@ -280,6 +279,4 @@ class Main { } } -/* eslint-enable valid-jsdoc */ - module.exports = Main; diff --git a/test/data/desktop/browser-chrome.yaml b/test/data/desktop/browser-chrome.yaml index c76ec07..2d8744b 100644 --- a/test/data/desktop/browser-chrome.yaml +++ b/test/data/desktop/browser-chrome.yaml @@ -68,5 +68,9 @@ readable: 'Chrome 87 on macOS Big Sur 11.0' - headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36' - readable: 'Chrome 100 on macOS Catalina 10.15' - result: { browser: { name: Chrome, version: '100', type: browser }, engine: { name: Blink }, os: { name: 'OS X', alias: macOS, version: { value: '10.15', nickname: Catalina } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } \ No newline at end of file + readable: 'Chrome 100 on macOS' + result: { browser: { name: Chrome, version: '100', type: browser }, engine: { name: Blink }, os: { name: 'OS X', alias: macOS }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36' + readable: 'Chrome 123 on macOS' + result: { browser: { name: Chrome, version: '123', type: browser }, engine: { name: Blink }, os: { name: 'OS X', alias: macOS }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } \ No newline at end of file diff --git a/test/data/desktop/browser-edge.yaml b/test/data/desktop/browser-edge.yaml index 2143d0e..7f9e100 100644 --- a/test/data/desktop/browser-edge.yaml +++ b/test/data/desktop/browser-edge.yaml @@ -37,4 +37,8 @@ - headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3782.0 Safari/537.36 Edg/76.0.152.0' readable: 'Edge 76 on macOS Mojave 10.14' - result: { browser: { name: Edge, family: { name: Chrome, version: 76 }, version: '76', type: browser }, engine: { name: Blink }, os: { name: 'OS X', alias: macOS, version: { value: '10.14', nickname: Mojave } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } \ No newline at end of file + result: { browser: { name: Edge, family: { name: Chrome, version: 76 }, version: '76', type: browser }, engine: { name: Blink }, os: { name: 'OS X', alias: macOS, version: { value: '10.14', nickname: Mojave } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0' + readable: 'Edge 123 on macOS' + result: { browser: { name: Edge, family: { name: Chrome, version: 123 }, version: '123', type: browser }, engine: { name: Blink }, os: { name: 'OS X', alias: macOS }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } \ No newline at end of file diff --git a/test/data/desktop/browser-firefox.yaml b/test/data/desktop/browser-firefox.yaml index e0b91ac..116ce48 100644 --- a/test/data/desktop/browser-firefox.yaml +++ b/test/data/desktop/browser-firefox.yaml @@ -257,4 +257,8 @@ - headers: "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0" readable: "Firefox 100.0 on Windows 10" - result: { browser: { name: Firefox, version: "100.0", type: browser }, engine: { name: Gecko, version: "100.0" }, os: { name: Windows, version: { alias: "10", value: "10.0" } }, device: { type: desktop } } \ No newline at end of file + result: { browser: { name: Firefox, version: "100.0", type: browser }, engine: { name: Gecko, version: "100.0" }, os: { name: Windows, version: { alias: "10", value: "10.0" } }, device: { type: desktop } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:123.0) Gecko/20100101 Firefox/123.0' + readable: 'Firefox 123.0 on macOS' + result: { browser: { name: Firefox, version: '123.0', type: browser }, engine: { name: Gecko, version: '123.0' }, os: { name: 'OS X', alias: macOS }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } \ No newline at end of file diff --git a/test/data/desktop/browser-safari.yaml b/test/data/desktop/browser-safari.yaml index f6f6299..b8bd0fa 100644 --- a/test/data/desktop/browser-safari.yaml +++ b/test/data/desktop/browser-safari.yaml @@ -233,4 +233,8 @@ - headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.0.1 Safari/605.1.15' readable: 'Safari 14.0.1 on macOS Catalina 10.15' - result: { browser: { name: Safari, version: 14.0.1, type: browser }, engine: { name: Webkit, version: 605.1.15 }, os: { name: 'OS X', alias: macOS, version: { value: '10.15', nickname: Catalina } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } \ No newline at end of file + result: { browser: { name: Safari, version: 14.0.1, type: browser }, engine: { name: Webkit, version: 605.1.15 }, os: { name: 'OS X', alias: macOS, version: { value: '10.15', nickname: Catalina } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 Safari/605.1.15' + readable: 'Safari 17.5 on macOS' + result: { browser: { name: Safari, version: '17.5', type: browser }, engine: { name: Webkit, version: 605.1.15 }, os: { name: 'OS X', alias: macOS }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } \ No newline at end of file diff --git a/test/data/desktop/platform-electron.yaml b/test/data/desktop/platform-electron.yaml index 78a758e..41d0ac7 100644 --- a/test/data/desktop/platform-electron.yaml +++ b/test/data/desktop/platform-electron.yaml @@ -41,4 +41,12 @@ - headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 12_3_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Electron/12.0.9 Safari/537.36' readable: 'Electron 12.0.9 on macOS Monterey 12.3' - result: { browser: { using: { name: Electron, version: 12.0.9 }, family: { name: Chrome, version: 89 }, type: browser }, engine: { name: Blink }, os: { name: 'OS X', alias: macOS, version: { value: '12.3', nickname: Monterey } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } \ No newline at end of file + result: { browser: { using: { name: Electron, version: 12.0.9 }, family: { name: Chrome, version: 89 }, type: browser }, engine: { name: Blink }, os: { name: 'OS X', alias: macOS, version: { value: '12.3', nickname: Monterey } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 15_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.6723.70 Electron/33.0.2 Safari/537.36' + readable: 'Electron 33.0.2 on macOS Sequoia 15.1' + result: { browser: { using: { name: Electron, version: 33.0.2 }, family: { name: Chrome, version: 130 }, type: browser }, engine: { name: Blink }, os: { name: 'OS X', alias: macOS, version: { value: '15.1', nickname: Sequoia } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } +- + headers: 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 26_0_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.7259.0 Electron/38.0.0 Safari/537.36' + readable: 'Electron 38.0.0 on macOS Tahoe 26.0' + result: { browser: { using: { name: Electron, version: 38.0.0 }, family: { name: Chrome, version: 140 }, type: browser }, engine: { name: Blink }, os: { name: 'OS X', alias: macOS, version: { value: '26.0', nickname: Tahoe } }, device: { type: desktop, manufacturer: Apple, model: Macintosh } } \ No newline at end of file diff --git a/test/data/mobile/manufacturer-lg.yaml b/test/data/mobile/manufacturer-lg.yaml index 4785e55..5728a5b 100644 --- a/test/data/mobile/manufacturer-lg.yaml +++ b/test/data/mobile/manufacturer-lg.yaml @@ -188,8 +188,8 @@ readable: 'Chrome 18 on a LG Escape running Android 4.0.4' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-P925 Build/ICS) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.64 Mobile Safari/537.36' - result: { browser: { name: Chrome, version: 28.0.1500.64, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Thrill } } - readable: 'Chrome Dev 28.0.1500.64 on a LG Thrill running Android 4.0.4' + result: { browser: { name: Chrome, version: '28', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Thrill } } + readable: 'Chrome 28 on a LG Thrill running Android 4.0.4' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LG-SU660 Build/IMM76L) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus 2X' } } @@ -236,8 +236,8 @@ readable: 'Chrome 18 on a LG Lucid 2 running Android 4.1.1' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; AS870 4G Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' - result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus F5' } } - readable: 'Chrome Dev 26.0.1410.58 on a LG Optimus F5 running Android 4.1.2' + result: { browser: { name: Chrome, version: '26', type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus F5' } } + readable: 'Chrome 26 on a LG Optimus F5 running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; LG-AS780 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36' result: { browser: { name: Chrome, version: '41', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus F7' } } @@ -248,12 +248,12 @@ readable: 'Chrome 35 on a LG Optimus F3Q running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; LG-E410 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' - result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L1 II' } } - readable: 'Chrome Dev 28.0.1500.94 on a LG Optimus L1 II running Android 4.1.2' + result: { browser: { name: Chrome, version: '28', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L1 II' } } + readable: 'Chrome 28 on a LG Optimus L1 II running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; LG-E415f Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' - result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L1 II Dual' } } - readable: 'Chrome Dev 28.0.1500.94 on a LG Optimus L1 II Dual running Android 4.1.2' + result: { browser: { name: Chrome, version: '28', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L1 II Dual' } } + readable: 'Chrome 28 on a LG Optimus L1 II Dual running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; LG-E425 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus L3 II' } } @@ -304,16 +304,16 @@ readable: 'Chrome 29 on a LG Connect 4G running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; VS890 4G Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' - result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Enact } } - readable: 'Chrome Dev 26.0.1410.58 on a LG Enact running Android 4.1.2' + result: { browser: { name: Chrome, version: '26', type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: Enact } } + readable: 'Chrome 26 on a LG Enact running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; L-05E Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.114 Mobile Safari/537.36' result: { browser: { name: Chrome, version: '34', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus it L-05E', carrier: DoCoMo } } readable: 'Chrome 34 on a LG Optimus it L-05E running Android 4.2.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; Optimusx4 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' - result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus X4' } } - readable: 'Chrome Dev 28.0.1500.94 on a LG Optimus X4 running Android 4.2.2' + result: { browser: { name: Chrome, version: '28', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Optimus X4' } } + readable: 'Chrome 28 on a LG Optimus X4 running Android 4.2.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; AOSP on Mako Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/38.0.2125.102 Mobile Safari/537.36' result: { browser: { name: 'LG Browser', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: LG, model: 'Nexus 4' } } diff --git a/test/data/mobile/manufacturer-motorola.yaml b/test/data/mobile/manufacturer-motorola.yaml index 3d84527..337dba0 100644 --- a/test/data/mobile/manufacturer-motorola.yaml +++ b/test/data/mobile/manufacturer-motorola.yaml @@ -72,8 +72,8 @@ readable: 'Chrome 18 on a Motorola XT928 running Android 4.0.3' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; Droid2Global Build/MR1) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' - result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Droid 2' } } - readable: 'Chrome Dev 26.0.1410.58 on a Motorola Droid 2 running Android 4.0.3' + result: { browser: { name: Chrome, version: '26', type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Droid 2' } } + readable: 'Chrome 26 on a Motorola Droid 2 running Android 4.0.3' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; MB525 Build/IML74K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: DEFY } } @@ -92,8 +92,8 @@ readable: 'Chrome 18 on a Motorola Milestone running Android 4.0.3' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; XT862 Build/5.5.1_84_D3G-55) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' - result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Droid 3' } } - readable: 'Chrome Dev 28.0.1500.94 on a Motorola Droid 3 running Android 4.0.3' + result: { browser: { name: Chrome, version: '28', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Droid 3' } } + readable: 'Chrome 28 on a Motorola Droid 3 running Android 4.0.3' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; MB526 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: DEFY+ } } @@ -172,8 +172,8 @@ readable: 'Chrome 18 on a Motorola ATRIX TV running Android 4.0.4' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; XT883 Build/IML74K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.64 Mobile Safari/537.36' - result: { browser: { name: Chrome, version: 28.0.1500.64, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Milestone 3' } } - readable: 'Chrome Dev 28.0.1500.64 on a Motorola Milestone 3 running Android 4.0.4' + result: { browser: { name: Chrome, version: '28', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Milestone 3' } } + readable: 'Chrome 28 on a Motorola Milestone 3 running Android 4.0.4' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; XT897 Build/7.7.1Q-6_SPR-125_ASA-10) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'PHOTON Q' } } @@ -208,8 +208,8 @@ readable: 'Chrome 18 on a Motorola RAZR HD running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; TC55 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' - result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'TC55 Touch Computer' } } - readable: 'Chrome Dev 28.0.1500.94 on a Motorola TC55 Touch Computer running Android 4.1.2' + result: { browser: { name: Chrome, version: '28', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'TC55 Touch Computer' } } + readable: 'Chrome 28 on a Motorola TC55 Touch Computer running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; XT881 Build/9.8.3O-118_USC-14) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Motorola, model: 'Electrify 2' } } diff --git a/test/data/mobile/manufacturer-samsung-android.yaml b/test/data/mobile/manufacturer-samsung-android.yaml index 9200a38..fcc42b5 100644 --- a/test/data/mobile/manufacturer-samsung-android.yaml +++ b/test/data/mobile/manufacturer-samsung-android.yaml @@ -36,8 +36,8 @@ readable: 'Chrome 44 on a Samsung Galaxy Axiom running Android 1.6' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 10.0; GT-S6310 Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' - result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Young' } } - readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Young running Android 4.1.2' + result: { browser: { name: Chrome, version: '26', type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Young' } } + readable: 'Chrome 26 on a Samsung Galaxy Young running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 17.0; GT-S7580 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.93 Mobile Safari/537.36' result: { browser: { name: Chrome, version: '43', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Trend Plus' } } @@ -84,8 +84,8 @@ readable: 'Chrome 18 on a Samsung Galaxy S II LTE running Android 4.0.3' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.3; SHV-E120L Build/IML74K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' - result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II HD LTE' } } - readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy S II HD LTE running Android 4.0.3' + result: { browser: { name: Chrome, version: '26', type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.0.3 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II HD LTE' } } + readable: 'Chrome 26 on a Samsung Galaxy S II HD LTE running Android 4.0.3' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; GT-I8150 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.133 Mobile Safari/535.19' result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy W' } } @@ -148,8 +148,8 @@ readable: 'Chrome 27 on a Samsung Galaxy Ace Plus running Android 4.0.4' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; GT-S7560 Build/IMM76I) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' - result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Ace II x' } } - readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Ace II x running Android 4.0.4' + result: { browser: { name: Chrome, version: '26', type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Ace II x' } } + readable: 'Chrome 26 on a Samsung Galaxy Ace II x running Android 4.0.4' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; GT-S7562 Build/452) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S Duos' } } @@ -184,8 +184,8 @@ readable: 'Chrome 18 on a Samsung Galaxy Stellar running Android 4.0.4' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SCH-R740C Build/IMM76D) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' - result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Discover' } } - readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Discover running Android 4.0.4' + result: { browser: { name: Chrome, version: '26', type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Discover' } } + readable: 'Chrome 26 on a Samsung Galaxy Discover running Android 4.0.4' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SCH-S738C Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Centura' } } @@ -196,8 +196,8 @@ readable: 'Chrome 25 on a Samsung SCH-W2013 running Android 4.0.4' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SCH-i929 Build/IMM76D) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.64 Mobile Safari/537.36' - result: { browser: { name: Chrome, version: 28.0.1500.64, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II Duos' } } - readable: 'Chrome Dev 28.0.1500.64 on a Samsung Galaxy S II Duos running Android 4.0.4' + result: { browser: { name: Chrome, version: '28', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy S II Duos' } } + readable: 'Chrome 28 on a Samsung Galaxy S II Duos running Android 4.0.4' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; SCL21 Build/IMM76D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'GALAXY S III Progre SCL21', carrier: au } } @@ -276,12 +276,12 @@ readable: 'Chrome 34 on a Samsung Galaxy Star Trios running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S5310 Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' - result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Pocket Neo' } } - readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Pocket Neo running Android 4.1.2' + result: { browser: { name: Chrome, version: '26', type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Pocket Neo' } } + readable: 'Chrome 26 on a Samsung Galaxy Pocket Neo running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S5312 Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' - result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Pocket Neo Duos' } } - readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Pocket Neo Duos running Android 4.1.2' + result: { browser: { name: Chrome, version: '26', type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Pocket Neo Duos' } } + readable: 'Chrome 26 on a Samsung Galaxy Pocket Neo Duos running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S5830 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' result: { browser: { name: Chrome, version: '27', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Ace' } } @@ -300,28 +300,28 @@ readable: 'Chrome 27 on a Samsung Galaxy Y Duos TV running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S6790 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' - result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Fame Lite' } } - readable: 'Chrome Dev 28.0.1500.94 on a Samsung Galaxy Fame Lite running Android 4.1.2' + result: { browser: { name: Chrome, version: '28', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Fame Lite' } } + readable: 'Chrome 28 on a Samsung Galaxy Fame Lite running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S6792L Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' - result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Fame Lite Duos' } } - readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Fame Lite Duos running Android 4.1.2' + result: { browser: { name: Chrome, version: '26', type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Fame Lite Duos' } } + readable: 'Chrome 26 on a Samsung Galaxy Fame Lite Duos running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S6810 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Fame' } } readable: 'Chrome 18 on a Samsung Galaxy Fame running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S7262 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' - result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Star Pro' } } - readable: 'Chrome Dev 28.0.1500.94 on a Samsung Galaxy Star Pro running Android 4.1.2' + result: { browser: { name: Chrome, version: '28', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Star Pro' } } + readable: 'Chrome 28 on a Samsung Galaxy Star Pro running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S7390 Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' - result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Trend Lite' } } - readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Trend Lite running Android 4.1.2' + result: { browser: { name: Chrome, version: '26', type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Trend Lite' } } + readable: 'Chrome 26 on a Samsung Galaxy Trend Lite running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S7392 Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' - result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Trend' } } - readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Trend running Android 4.1.2' + result: { browser: { name: Chrome, version: '26', type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Trend' } } + readable: 'Chrome 26 on a Samsung Galaxy Trend running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; GT-S7572 Build/JRO03L) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.141 Mobile Safari/537.36' result: { browser: { name: Chrome, version: '35', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Trend II Duos' } } @@ -352,8 +352,8 @@ readable: 'Chrome 40 on a Samsung Galaxy Trend 2 running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; SCH-I759 Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' - result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Infinite' } } - readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Infinite running Android 4.1.2' + result: { browser: { name: Chrome, version: '26', type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Infinite' } } + readable: 'Chrome 26 on a Samsung Galaxy Infinite running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; SCH-I829 Build/JZO54K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' result: { browser: { name: Chrome, version: '27', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Style Duos' } } @@ -372,8 +372,8 @@ readable: 'Chrome 34 on a Samsung Galaxy Win Pro running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; SPH-M840 Build/JZO54K) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' - result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Ring' } } - readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Ring running Android 4.1.2' + result: { browser: { name: Chrome, version: '26', type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Ring' } } + readable: 'Chrome 26 on a Samsung Galaxy Ring running Android 4.1.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.2; xx; GT-N7100 Build/JZO54K) AppleWebKit/535.19 (KHTML, like Gecko) Version/1.0.130207 Chrome/18.0.1025.308 Mobile Safari/535.19' result: { browser: { name: 'Samsung Internet', version: '1.0', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Samsung, model: 'Galaxy Note II' } } diff --git a/test/data/mobile/manufacturer-sony.yaml b/test/data/mobile/manufacturer-sony.yaml index 3a5eded..9547faa 100644 --- a/test/data/mobile/manufacturer-sony.yaml +++ b/test/data/mobile/manufacturer-sony.yaml @@ -20,8 +20,8 @@ readable: 'Chrome 18 on a Sony Xperia Z running Android 4.0.4' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LT25c Build/9.0.E.0.287) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' - result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia VC' } } - readable: 'Chrome Dev 28.0.1500.94 on a Sony Xperia VC running Android 4.0.4' + result: { browser: { name: Chrome, version: '28', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia VC' } } + readable: 'Chrome 28 on a Sony Xperia VC running Android 4.0.4' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; LT25i Build/9.0.1.D.0.10) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia V' } } @@ -92,8 +92,8 @@ readable: 'Chrome 18 on a Sony Xperia J running Android 4.0.4' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.0.4; ST27a Build/6.1.1.B.0.145) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' - result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Go' } } - readable: 'Chrome Dev 28.0.1500.94 on a Sony Xperia Go running Android 4.0.4' + result: { browser: { name: Chrome, version: '28', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.0.4 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Go' } } + readable: 'Chrome 28 on a Sony Xperia Go running Android 4.0.4' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.1.1; C1504 Build/11.3.A.0.47) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19' result: { browser: { name: Chrome, version: '18', type: browser }, engine: { name: Webkit, version: '535.19' }, os: { name: Android, version: 4.1.1 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia E' } } @@ -136,24 +136,24 @@ readable: 'Chrome 31 on a Sony Xperia E4g running Android 4.2.1' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; C2004 Build/15.2.A.1.12) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' - result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia M dual' } } - readable: 'Chrome Dev 26.0.1410.58 on a Sony Xperia M dual running Android 4.2.2' + result: { browser: { name: Chrome, version: '26', type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia M dual' } } + readable: 'Chrome 26 on a Sony Xperia M dual running Android 4.2.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; C6802 Build/14.1.B.0.406) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.90 Mobile Safari/537.36' result: { browser: { name: Chrome, version: '27', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z Ultra' } } readable: 'Chrome 27 on a Sony Xperia Z Ultra running Android 4.2.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; C6902 Build/14.1.G.1.493) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Mobile Safari/537.31' - result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z1' } } - readable: 'Chrome Dev 26.0.1410.58 on a Sony Xperia Z1 running Android 4.2.2' + result: { browser: { name: Chrome, version: '26', type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z1' } } + readable: 'Chrome 26 on a Sony Xperia Z1 running Android 4.2.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; SO-02F Build/14.1.H.1.230) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' - result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z1 f SO-02F', carrier: DoCoMo } } - readable: 'Chrome Dev 28.0.1500.94 on a Sony Xperia Z1 f SO-02F running Android 4.2.2' + result: { browser: { name: Chrome, version: '28', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z1 f SO-02F', carrier: DoCoMo } } + readable: 'Chrome 28 on a Sony Xperia Z1 f SO-02F running Android 4.2.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3.1; D2303 Build/21.0.D.8.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' - result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.3.1 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia M2' } } - readable: 'Chrome Dev 28.0.1500.94 on a Sony Xperia M2 running Android 4.3.1' + result: { browser: { name: Chrome, version: '28', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.3.1 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia M2' } } + readable: 'Chrome 28 on a Sony Xperia M2 running Android 4.3.1' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3.1; Xperia Z Ultra Build/JLS36I) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36' result: { browser: { name: Chrome, version: '31', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.3.1 }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z Ultra (Google Edition)' } } @@ -168,8 +168,8 @@ readable: 'Chrome 31 on a Sony Xperia Z1s running Android 4.3' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; D2004 Build/20.0.A.1.12) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' - result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia E1' } } - readable: 'Chrome Dev 28.0.1500.94 on a Sony Xperia E1 running Android 4.3' + result: { browser: { name: Chrome, version: '28', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia E1' } } + readable: 'Chrome 28 on a Sony Xperia E1 running Android 4.3' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; D2104 Build/20.0.B.0.84) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.89 Mobile Safari/537.36' result: { browser: { name: Chrome, version: '40', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia E1 dual' } } @@ -184,8 +184,8 @@ readable: 'Chrome 31 on a Sony Xperia T2 Ultra dual running Android 4.3' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; D5503 Build/14.2.A.1.114) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.94 Mobile Safari/537.36' - result: { browser: { name: Chrome, version: 28.0.1500.94, type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z1 Compact' } } - readable: 'Chrome Dev 28.0.1500.94 on a Sony Xperia Z1 Compact running Android 4.3' + result: { browser: { name: Chrome, version: '28', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z1 Compact' } } + readable: 'Chrome 28 on a Sony Xperia Z1 Compact running Android 4.3' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.3; Xperia Z2 Build/JLS36C) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.59 Mobile Safari/537.36' result: { browser: { name: Chrome, version: '39', type: browser }, engine: { name: Blink }, os: { name: Android, version: '4.3' }, device: { type: mobile, subtype: smart, manufacturer: Sony, model: 'Xperia Z2' } } diff --git a/test/data/mobile/os-ios.yaml b/test/data/mobile/os-ios.yaml index fd14027..764a9a6 100644 --- a/test/data/mobile/os-ios.yaml +++ b/test/data/mobile/os-ios.yaml @@ -469,4 +469,16 @@ - headers: 'User-Agent: (iPhone; iOS 13.1.2; Scale/2.00; iPhone9,3)' readable: 'an Apple iPhone 7 running iOS 13.1.2' - result: { os: { name: iOS, version: 13.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 7' } } \ No newline at end of file + result: { os: { name: iOS, version: 13.1.2 }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: 'iPhone 7' } } +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 18_7 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.2 Mobile/15E148 Safari/604.1' + readable: 'Safari on an Apple iPhone running iOS 26.2' + result: { browser: { name: Safari, version: '26.2', type: browser }, engine: { name: Webkit, version: 605.1.15 }, os: { name: iOS, version: '26.2' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 18_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Mobile/15E148 Safari/604.1' + readable: 'Safari on an Apple iPhone running iOS 26.0' + result: { browser: { name: Safari, version: '26.0', type: browser }, engine: { name: Webkit, version: 605.1.15 }, os: { name: iOS, version: '26.0' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } +- + headers: 'User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 17_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/123.0.6312.87 Mobile/15E148 Safari/604.1' + readable: 'Chrome 123 on an Apple iPhone running iOS 17.4' + result: { browser: { name: Chrome, version: '123', type: browser }, engine: { name: Webkit, version: 605.1.15 }, os: { name: iOS, version: '17.4' }, device: { type: mobile, subtype: smart, manufacturer: Apple, model: iPhone } } \ No newline at end of file diff --git a/test/data/tablet/manufacturer-samsung.yaml b/test/data/tablet/manufacturer-samsung.yaml index 140e5b6..2a06001 100644 --- a/test/data/tablet/manufacturer-samsung.yaml +++ b/test/data/tablet/manufacturer-samsung.yaml @@ -80,8 +80,8 @@ readable: 'Chrome 30 on a Samsung Galaxy Tab 3 Lite running Android 4.2.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; SM-T310 Build/JDQ39) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.58 Safari/537.31' - result: { browser: { name: Chrome, version: 26.0.1410.58, type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.2.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 3 8.0' } } - readable: 'Chrome Dev 26.0.1410.58 on a Samsung Galaxy Tab 3 8.0 running Android 4.2.2' + result: { browser: { name: Chrome, version: '26', type: browser }, engine: { name: Webkit, version: '537.31' }, os: { name: Android, version: 4.2.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Tab 3 8.0' } } + readable: 'Chrome 26 on a Samsung Galaxy Tab 3 8.0 running Android 4.2.2' - headers: 'User-Agent: Mozilla/5.0 (Linux; Android 4.2.2; xx; SAMSUNG SM-P905 Build/JDQ39) AppleWebKit/537.36 (KHTML, like Gecko) Version/1.5 Chrome/28.0.1500.94 Safari/537.36' result: { browser: { name: 'Samsung Internet', version: '1.5', type: browser }, engine: { name: Blink }, os: { name: Android, version: 4.2.2 }, device: { type: tablet, manufacturer: Samsung, model: 'Galaxy Note Pro' } } diff --git a/test/unit/MassiveTest.js b/test/unit/MassiveTest.js index 2e76290..5383571 100644 --- a/test/unit/MassiveTest.js +++ b/test/unit/MassiveTest.js @@ -1,5 +1,3 @@ -/* eslint-disable require-jsdoc */ - const { describe, it } = (exports.lab = require('@hapi/lab').script()); const expect = require('@hapi/code').expect; const Parser = require('../../src/Parser'); @@ -23,7 +21,7 @@ describe('Testing Parser with YAML files', () => { // eslint-disable-next-line no-console console.error('The above error is caused in the test file ' + category + '/' + file); - throw new Error('Aborting the tests'); + throw new Error('Aborting the tests', { cause: e }); } }); });