diff --git a/.editorconfig b/.editorconfig index ef29d33d77a..6744aa1e32e 100644 --- a/.editorconfig +++ b/.editorconfig @@ -4,6 +4,6 @@ root = true end_of_line = lf insert_final_newline = false -[*.{js,html}] +[*.{js,html,scss,json}] indent_style = space indent_size = 4 diff --git a/.eslintrc.json b/.eslintrc.json index 95ada47b0aa..fdd2a9484a6 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -130,9 +130,12 @@ "frontend/express/public/core/*/javascripts/countly.*.js", "plugins/*/frontend/public/javascripts/countly.*.js" ], + "parserOptions": { + "ecmaVersion": 2020 + }, "env": { "browser": true, - "es6": true + "es2020": true }, "rules": { "valid-jsdoc": [ @@ -205,7 +208,7 @@ ], "excludedFiles": "plugins/*/frontend/public/**/*.js", "env": { - "es6": true, + "es2020": true, "node": true }, "parserOptions": { @@ -285,7 +288,7 @@ ], "excludedFiles": "plugins/*/tests.js", "env": { - "es6": true, + "es2020": true, "node": true }, "parserOptions": { @@ -302,7 +305,7 @@ "plugins/*/tests.js" ], "env": { - "es6": true, + "es2020": true, "node": true, "mocha": true }, @@ -321,7 +324,7 @@ "ui-tests/**/*.js" ], "env": { - "es6": true, + "es2020": true, "node": true, "mocha": true }, diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 21c488aded0..34cd366029d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -77,6 +77,7 @@ jobs: image: countly/countly-core:pipelines-${{ github.base_ref || github.ref_name }} env: COUNTLY_CONFIG__MONGODB_HOST: mongodb + COUNTLY_CONFIG_API_PREVENT_JOBS: true steps: - uses: actions/checkout@v3 @@ -133,6 +134,7 @@ jobs: image: countly/countly-core:pipelines-${{ github.base_ref || github.ref_name }} env: COUNTLY_CONFIG__MONGODB_HOST: mongodb + COUNTLY_CONFIG_API_PREVENT_JOBS: true steps: - uses: actions/checkout@v3 @@ -179,6 +181,7 @@ jobs: image: countly/countly-core:pipelines-${{ github.base_ref || github.ref_name }} env: COUNTLY_CONFIG__MONGODB_HOST: mongodb + COUNTLY_CONFIG_API_PREVENT_JOBS: true steps: - uses: actions/checkout@v3 @@ -212,8 +215,8 @@ jobs: npm install /sbin/my_init & node bin/scripts/test.connection.js - npx grunt mochaTest - ui-test: + npx grunt mochaTest + ui-test-dashboard: runs-on: ubuntu-latest services: @@ -231,6 +234,7 @@ jobs: image: countly/countly-core:pipelines-${{ github.base_ref || github.ref_name }} env: COUNTLY_CONFIG__MONGODB_HOST: mongodb + COUNTLY_CONFIG_API_PREVENT_JOBS: true steps: - uses: actions/checkout@v2 @@ -277,7 +281,80 @@ jobs: /sbin/my_init & cd ui-tests npm install - npm run cy:run + npm run cy:run:dashboard + + - name: Upload UI tests artifacts + if: ${{ failure() }} + shell: bash + working-directory: /opt/countly/ui-tests/cypress + run: | + ARTIFACT_ARCHIVE_NAME="$(date '+%Y%m%d-%H.%M')_${GITHUB_REPOSITORY#*/}_CI#${{ github.run_number }}.tar.gz" + mkdir -p screenshots videos + tar zcvf "$ARTIFACT_ARCHIVE_NAME" screenshots videos + curl -o /tmp/uploader.log -u "${{ secrets.BOX_UPLOAD_AUTH }}" ${{ secrets.BOX_UPLOAD_PATH }} -T "$ARTIFACT_ARCHIVE_NAME" + + ui-test-onboarding: + runs-on: ubuntu-latest + + services: + mongodb: + image: mongo:6.0 + options: >- + --health-cmd mongosh + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + - 27017:27017 + + container: + image: countly/countly-core:pipelines-${{ github.base_ref || github.ref_name }} + env: + COUNTLY_CONFIG__MONGODB_HOST: mongodb + COUNTLY_CONFIG_API_PREVENT_JOBS: true + + steps: + - uses: actions/checkout@v2 + + - name: Install Chrome + shell: bash + run: | + apt update + apt install -y libgtk2.0-0 libgtk-3-0 libgbm-dev libnotify-dev libgconf-2-4 libnss3 libxss1 libasound2 libxtst6 xauth xvfb wget + wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -O /tmp/chrome.deb + apt install -y /tmp/chrome.deb + + - name: Copy code + shell: bash + run: cp -rf ./* /opt/countly + + - name: Prepare files to use correct MongoDB host + shell: bash + run: "sed -i 's/mongosh --quiet/mongosh --host mongodb --quiet/' /opt/countly/bin/backup/import_events.sh && sed -i 's/mongoimport --db/mongoimport --host mongodb --db/' /opt/countly/bin/backup/import_events.sh" + + - name: Prepare environment + shell: bash + working-directory: /opt/countly + run: | + sed -i 's/port: 3001,/port: 3001, workers: 1,/' /opt/countly/api/config.js + cp "./plugins/plugins.default.json" "/opt/countly/plugins/plugins.json" + npm install + sudo countly task dist-all + bash bin/scripts/countly.prepare.ce.tests.sh + cd ui-tests + echo '{"username": "${{ secrets.CYPRESS_USER_USERNAME }}","email": "${{ secrets.CYPRESS_USER_EMAIL }}","password": "${{ secrets.CYPRESS_USER_PASSWORD }}"}' > cypress/fixtures/user.json + sed -i 's/00000000-0000-0000-0000-000000000000/${{ secrets.CYPRESS_KEY }}/g' package.json + cp cypress.config.sample.js cypress.config.js + sed -i 's/000000/${{ secrets.CYPRESS_PROJECT_ID }}/g' cypress.config.js + + - name: Run UI tests + shell: bash + working-directory: /opt/countly + run: | + /sbin/my_init & + cd ui-tests + npm install + npm run cy:run:onboarding - name: Upload UI tests artifacts if: ${{ failure() }} diff --git a/Gruntfile.js b/Gruntfile.js index b039764be61..bb9aca6d1bf 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -150,6 +150,8 @@ module.exports = function(grunt) { 'frontend/express/public/javascripts/countly/vue/components/drawer.js', 'frontend/express/public/core/notes/javascripts/countly.models.js', 'frontend/express/public/core/notes/javascripts/countly.common.notes.js', + 'frontend/express/public/core/date-presets/javascripts/countly.models.js', + 'frontend/express/public/core/date-presets/javascripts/countly.views.js', 'frontend/express/public/javascripts/countly/vue/components/vis.js', 'frontend/express/public/javascripts/countly/vue/components/helpers.js', 'frontend/express/public/javascripts/countly/vue/components/sidebar.js', @@ -504,4 +506,4 @@ module.exports = function(grunt) { grunt.registerTask('dist-all', ['dist', 'plugins', 'locales']); -}; \ No newline at end of file +}; diff --git a/api/api.js b/api/api.js index 1fc920e5b6b..4a475af5272 100755 --- a/api/api.js +++ b/api/api.js @@ -173,7 +173,7 @@ plugins.connectToAllDatabases().then(function() { * Handle exit events for gracefull close */ ['SIGHUP', 'SIGINT', 'SIGQUIT', 'SIGILL', 'SIGTRAP', 'SIGABRT', - 'SIGBUS', 'SIGFPE', 'SIGUSR1', 'SIGSEGV', 'SIGUSR2', 'SIGTERM' + 'SIGBUS', 'SIGFPE', 'SIGSEGV', 'SIGTERM', ].forEach(function(sig) { process.on(sig, async function() { storeBatchedData(sig); @@ -280,7 +280,14 @@ plugins.connectToAllDatabases().then(function() { : os.cpus().length; for (let i = 0; i < workerCount; i++) { - const worker = cluster.fork(); + // there's no way to define inspector port of a worker in the code. So if we don't + // pick a unique port for each worker, they conflict with each other. + let nodeOptions = {}; + if (countlyConfig?.symlinked !== true) { // countlyConfig.symlinked is passed when running in a symlinked setup + const inspectorPort = i + 1 + (common?.config?.masterInspectorPort || 9229); + nodeOptions = { NODE_OPTIONS: "--inspect-port=" + inspectorPort }; + } + const worker = cluster.fork(nodeOptions); workers.push(worker); } diff --git a/api/configextender.js b/api/configextender.js index 03247a32683..670c736c24d 100644 --- a/api/configextender.js +++ b/api/configextender.js @@ -52,7 +52,8 @@ const OVERRIDES = { FILESTORAGE: 'fileStorage', RELOADCONFIGAFTER: 'reloadConfigAfter', PREVENTJOBS: 'preventJobs', - SHARED_CONNECTION: 'shared_connection' + SHARED_CONNECTION: 'shared_connection', + PREVENT_JOBS: 'preventJobs' }; /** diff --git a/api/lib/countly.common.js b/api/lib/countly.common.js index 83fb06a9c02..c1b5d2a61af 100644 --- a/api/lib/countly.common.js +++ b/api/lib/countly.common.js @@ -384,10 +384,16 @@ function getPeriodObject(prmPeriod, bucket) { var period = prmPeriod || _period; - endTimestamp = _currMoment.clone().endOf("day"); + var excludeCurrentDay = period.excludeCurrentDay || false; + + if (period.period) { + period = period.period; + } + + endTimestamp = excludeCurrentDay ? _currMoment.clone().subtract(1, 'days').endOf('day') : _currMoment.clone().endOf('day'); if (period.since) { - period = [period.since, Date.now()]; + period = [period.since, endTimestamp.clone().valueOf()]; } if (period && typeof period === 'string' && period.indexOf(",") !== -1) { @@ -518,6 +524,24 @@ function getPeriodObject(prmPeriod, bucket) { previousPeriod: yesterday.clone().subtract(1, "day").format("YYYY.M.D") }); } + else if (/([1-9][0-9]*)minutes/.test(period)) { + let nMinutes = parseInt(/([1-9][0-9]*)minutes/.exec(period)[1]); + startTimestamp = _currMoment.clone().startOf("minute").subtract(nMinutes - 1, "minutes"); + cycleDuration = moment.duration(nMinutes, "minutes"); + Object.assign(periodObject, { + dateString: "HH:mm", + isSpecialPeriod: true + }); + } + else if (/([1-9][0-9]*)hours/.test(period)) { + let nHours = parseInt(/([1-9][0-9]*)hours/.exec(period)[1]); + startTimestamp = _currMoment.clone().startOf("hour").subtract(nHours - 1, "hours"); + cycleDuration = moment.duration(nHours, "hours"); + Object.assign(periodObject, { + dateString: "HH:mm", + isSpecialPeriod: true + }); + } else if (/([1-9][0-9]*)days/.test(period)) { let nDays = parseInt(/([1-9][0-9]*)days/.exec(period)[1]); startTimestamp = _currMoment.clone().startOf("day").subtract(nDays - 1, "days"); @@ -741,6 +765,46 @@ function getPeriodObject(prmPeriod, bucket) { return periodObject; } +/** + * Checks if the period parameter is valid + * @param {string} period - period parameter + * @returns {boolean} true if period is valid, false if not +*/ +countlyCommon.isValidPeriodParam = function(period) { + + if (period && typeof period === 'string' && period.indexOf(",") !== -1) { + try { + period = JSON.parse(period); + } + catch (SyntaxError) { + return false; + } + } + + if (Array.isArray(period)) { + return period.length === 2; + } + + if (typeof period === 'object') { + if (Object.prototype.hasOwnProperty.call(period, 'period')) { + return countlyCommon.isValidPeriodParam(period.period); + } + else { + return Object.prototype.hasOwnProperty.call(period, 'since'); + } + } + + return period === 'month' || + period === 'prevMonth' || + period === 'day' || + period === 'yesterday' || + period === 'hour' || + /([1-9][0-9]*)days/.test(period) || + /([1-9][0-9]*)weeks/.test(period) || + /([1-9][0-9]*)months/.test(period) || + /([1-9][0-9]*)years/.test(period); +}; + // Public Properties /** * Currently selected period diff --git a/api/parts/data/fetch.js b/api/parts/data/fetch.js index 9c07fbbf791..2995f42bc4d 100644 --- a/api/parts/data/fetch.js +++ b/api/parts/data/fetch.js @@ -2019,8 +2019,26 @@ fetch.alljobs = async function(metric, params) { ]).toArray(); total = total.length > 0 ? total[0].total : 0; const pipeline = [ + { + $addFields: { + sortKey: { + $cond: { + if: { $eq: ["$status", 0] }, + then: 0, + else: { + $cond: { + if: { $eq: ["$status", 7] }, + then: 1, + else: 2 + } + } + } + } + } + }, { $sort: { + sortKey: 1, finished: -1 } }, diff --git a/api/parts/data/usage.js b/api/parts/data/usage.js index 02fd6961f2b..927683b14bd 100644 --- a/api/parts/data/usage.js +++ b/api/parts/data/usage.js @@ -231,31 +231,9 @@ usage.getPredefinedMetrics = function(params, userProps) { params.is_os_processed = true; } else { - var value; - var length; - for (var key in common.os_mapping) { - if (params.qstring.metrics._os.toLowerCase().startsWith(key)) { - if (value) { - if (length < key.length) { - value = common.os_mapping[key]; - length = key.length; - } - } - else { - value = common.os_mapping[key]; - length = key.length; - } - } - } - - if (!value) { - params.qstring.metrics._os_version = params.qstring.metrics._os[0].toLowerCase() + params.qstring.metrics._os_version; - params.is_os_processed = true; - } - else { - params.qstring.metrics._os_version = value + params.qstring.metrics._os_version; - params.is_os_processed = true; - } + params.qstring.metrics._os = params.qstring.metrics._os.replace(/\[|\]/g, ''); + params.qstring.metrics._os_version = "[" + params.qstring.metrics._os + "]" + params.qstring.metrics._os_version; + params.is_os_processed = true; } } if (params.qstring.metrics._app_version) { @@ -296,6 +274,15 @@ usage.getPredefinedMetrics = function(params, userProps) { params.qstring.metrics._manufacturer = "Apple"; } } + if (params.qstring.metrics._has_hinge) { + var hasHingeValue = params.qstring.metrics._has_hinge; + if (hasHingeValue === "true" || hasHingeValue === true || hasHingeValue === "hinged") { + params.qstring.metrics._has_hinge = "hinged"; + } + else { + params.qstring.metrics._has_hinge = "not_hinged"; + } + } } var predefinedMetrics = [ @@ -349,6 +336,11 @@ usage.getPredefinedMetrics = function(params, userProps) { name: "_resolution", set: "resolutions", short_code: common.dbUserMap.resolution + }, + { + name: "_has_hinge", + set: "has_hinge", + short_code: common.dbUserMap.has_hinge } ] }, @@ -1277,4 +1269,4 @@ plugins.register("/sdk/user_properties", async function(ob) { } }); -module.exports = usage; \ No newline at end of file +module.exports = usage; diff --git a/api/parts/jobs/handle.js b/api/parts/jobs/handle.js index 2eab5b1f1c0..82926769326 100644 --- a/api/parts/jobs/handle.js +++ b/api/parts/jobs/handle.js @@ -15,11 +15,14 @@ class Handle { /** constructor **/ constructor() { log.i('Starting job handle in %d', process.pid); + var self = this; manager.singleDefaultConnection().then((db) => { - this.db = db; - this.classes = {}; // {'job name': Constructor} - this.files = {}; // {'ping': '/usr/local/countly/api/jobs/ping.js'} - scan(this.db, this.files, this.classes); + manager.reloadEnabledPluginList(db, function() { + self.db = db; + self.classes = {}; // {'job name': Constructor} + self.files = {}; // {'ping': '/usr/local/countly/api/jobs/ping.js'} + scan(self.db, self.files, self.classes); + }); }); } diff --git a/api/parts/jobs/manager.js b/api/parts/jobs/manager.js index 51c641561e1..04080f84cc3 100644 --- a/api/parts/jobs/manager.js +++ b/api/parts/jobs/manager.js @@ -263,7 +263,7 @@ class Manager { continue; } var splittedName = job.name.split(':'); - if (!manager.isPluginOn(splittedName[0])) { + if (!manager.isPluginEnabled(splittedName[0])) { continue; //skipping this job as plugin is disabled } diff --git a/api/parts/jobs/runner.js b/api/parts/jobs/runner.js index f32baaaab41..93edee66693 100644 --- a/api/parts/jobs/runner.js +++ b/api/parts/jobs/runner.js @@ -188,7 +188,7 @@ function imAlive(callback) { else if (doc && doc.ok) { me = doc.value; log.d('updated ls'); - if (leader.runner === me._id) { + if (me && leader.runner === me._id) { log.d('updating leader ls'); let update = {ls: me.ls}, locking = !leader.lock; diff --git a/api/parts/jobs/scanner.js b/api/parts/jobs/scanner.js index c7f6d374943..dad13d46845 100644 --- a/api/parts/jobs/scanner.js +++ b/api/parts/jobs/scanner.js @@ -13,7 +13,7 @@ module.exports = (db, filesObj, classesObj) => { }); }); - var jobs = manager.getPlugins(); + var jobs = manager.getPlugins(true); if (!jobs) { log.e('Won\'t start jobs because no plugins.json exist'); return reject('Won\'t start jobs because no plugins.json exist'); diff --git a/api/parts/mgmt/date_presets.js b/api/parts/mgmt/date_presets.js new file mode 100755 index 00000000000..ed46ffc6dc2 --- /dev/null +++ b/api/parts/mgmt/date_presets.js @@ -0,0 +1,686 @@ +/** +* This module is meant for handling date presets. +* @module api/parts/mgmt/date_presets +*/ + +/** @lends module:api/parts/mgmt/date_presets */ +var presetsApi = {}, + common = require('../../utils/common.js'); + +/** +* Get presets +* @param {params} params - params object +* @returns {boolean} true if successful +**/ +presetsApi.getAll = async function(params) { + var member = params.member, + memberId = member._id + "", + memberEmail = member.email, + filterCond = {}; + + if (!member.global_admin) { + var groups = member.group_id || []; + if (!Array.isArray(groups)) { + groups = [groups]; + } + groups = groups.map(group_id => group_id + ""); + filterCond = { + $or: [ + {owner_id: memberId}, + {share_with: "all-users"}, + {shared_email_view: memberEmail}, + {shared_email_edit: memberEmail}, + {shared_user_groups_edit: {$in: groups}}, + {shared_user_groups_view: {$in: groups}} + ] + }; + } + + common.db.collection('date_presets').aggregate([ + { $match: filterCond }, + { + $addFields: { + owner_id_objectId: { $toObjectId: '$owner_id' } + } + }, + { + $lookup: { + from: 'members', + localField: 'owner_id_objectId', + foreignField: '_id', + as: 'owner' + } + }, + { $unwind: '$owner' }, + { + $project: { + _id: 1, + name: 1, + range: 1, + share_with: 1, + shared_email_edit: { + $cond: { + if: { + $or: [ + member.global_admin, + { $eq: ['$owner_id', memberId] }, + { $in: [groups, '$shared_user_groups_edit'] }, + { $in: [memberEmail, '$shared_email_edit'] } + ] + }, + then: '$shared_email_edit', + else: false + } + }, + shared_email_view: { + $cond: { + if: { + $or: [ + member.global_admin, + { $eq: ['$owner_id', memberId] }, + { $in: [groups, '$shared_user_groups_edit'] }, + { $in: [memberEmail, '$shared_email_edit'] } + ] + }, + then: '$shared_email_view', + else: false + } + }, + shared_user_groups_edit: { + $cond: { + if: { + $or: [ + member.global_admin, + { $eq: ['$owner_id', memberId] }, + { $in: [groups, '$shared_user_groups_edit'] }, + { $in: [memberEmail, '$shared_email_edit']} + ] + }, + then: '$shared_user_groups_edit', + else: false + } + }, + shared_user_groups_view: { + $cond: { + if: { + $or: [ + member.global_admin, + { $eq: ['$owner_id', memberId] }, + { $in: [groups, '$shared_user_groups_edit'] }, + { $in: [memberEmail, '$shared_email_edit']} + ] + }, + then: '$shared_user_groups_view', + else: false + } + }, + exclude_current_day: 1, + owner_id: 1, + owner_name: '$owner.full_name', + fav: { + $in: [memberId, '$fav'] + }, + is_owner: { + $cond: { + if: { + $eq: ['$owner_id', memberId] + }, + then: true, + else: member.global_admin + } + }, + created_at: 1, + edited_at: 1, + sort_order: 1 + } + }, + { + $sort: { + sort_order: 1 + } + } + ]).toArray(function(err, presets) { + if (err || !presets || !presets.length) { + console.log("Error getting presets", err, presets); + common.returnMessage(params, 500, 'Error getting presets'); + return false; + } + common.returnOutput(params, presets); + return true; + }); + + return true; +}; + +/** +* Add new preset +* @param {params} params - params object +* @returns {boolean} true if successful +**/ +presetsApi.create = function(params) { + var argProps = { + 'name': { + 'required': true, + 'type': 'String', + 'non-empty': true + }, + 'range': { + 'required': true, + 'type': [ + 'Array', + 'Object', + 'String' + ], + 'multiple': true + }, + 'share_with': { + 'required': true, + 'type': 'String', + 'default': 'none', //none, all-users, selected-users + 'non-empty': true + }, + 'shared_email_edit': { + 'required': false, + 'type': 'Array' + }, + 'shared_email_view': { + 'required': false, + 'type': 'Array' + }, + 'shared_user_groups_edit': { + 'required': false, + 'type': 'Array' + }, + 'shared_user_groups_view': { + 'required': false, + 'type': 'Array' + }, + 'exclude_current_day': { + 'required': false, + 'type': 'Boolean', + 'default': false + }, + 'app_id': { + 'required': true, + 'type': 'String', + 'min-length': 24, + 'max-length': 24, + 'exclude-from-ret-obj': true + } + }, + newPreset = {}; + + if (params.qstring.range) { + try { + params.qstring.range = JSON.parse(params.qstring.range); + if (Array.isArray(params.qstring.range) && params.qstring.range.length !== 2) { + throw new SyntaxError(); + } + } + catch (SyntaxError) { + common.returnMessage(params, 400, 'Invalid range'); + return false; + } + } + + if (params.qstring.shared_email_edit) { + try { + params.qstring.shared_email_edit = JSON.parse(params.qstring.shared_email_edit); + } + catch (SyntaxError) { + common.returnMessage(params, 400, 'Invalid shared_email_edit'); + return false; + } + } + + if (params.qstring.shared_email_view) { + try { + params.qstring.shared_email_view = JSON.parse(params.qstring.shared_email_view); + } + catch (SyntaxError) { + common.returnMessage(params, 400, 'Invalid shared_email_view'); + return false; + } + } + + if (params.qstring.shared_user_groups_edit) { + try { + params.qstring.shared_user_groups_edit = JSON.parse(params.qstring.shared_user_groups_edit); + } + catch (SyntaxError) { + common.returnMessage(params, 400, 'Invalid shared_user_groups_edit'); + return false; + } + } + + if (params.qstring.shared_user_groups_view) { + try { + params.qstring.shared_user_groups_view = JSON.parse(params.qstring.shared_user_groups_view); + } + catch (SyntaxError) { + common.returnMessage(params, 400, 'Invalid shared_user_groups_view'); + return false; + } + } + + if (params.qstring.exclude_current_day) { + try { + params.qstring.exclude_current_day = JSON.parse(params.qstring.exclude_current_day); + } + catch (SyntaxError) { + common.returnMessage(params, 400, 'Invalid exclude_current_day'); + return false; + } + } + + if (!(newPreset = common.validateArgs(params.qstring, argProps))) { + common.returnMessage(params, 400, 'Not enough args'); + return false; + } + + for (let i in params.qstring) { + if (typeof newPreset[i] === "undefined" && !["app_id"].includes(i)) { + newPreset[i] = params.qstring[i]; + } + } + + newPreset.created_at = Math.floor(((new Date()).getTime()) / 1000); + + newPreset.owner_id = params.member._id + ""; + + newPreset.fav = []; + + if (newPreset.share_with !== "selected-users") { + newPreset.shared_email_edit = []; + newPreset.shared_email_view = []; + newPreset.shared_user_groups_edit = []; + newPreset.shared_user_groups_view = []; + } + + newPreset.sort_order = 0; + + common.db.collection('date_presets').insert(newPreset, { safe: true }, function(err, preset) { + if (!err && preset && preset.ops && preset.ops[0] && preset.ops[0]._id) { + + //Update sort order of other presets + common.db.collection('date_presets').updateMany({_id: {$ne: preset.ops[0]._id}}, {$inc: {sort_order: 1}}, function(err1) { + if (err1) { + common.returnMessage(params, 500, 'Error updating sort order of other presets'); + return false; + } + common.returnOutput(params, preset.ops[0]); + return true; + }); + } + else { + common.returnMessage(params, 500, 'Error adding preset'); + return false; + } + }); +}; + +/** +* Update preset +* @param {params} params - params object +* @returns {boolean} true if successful +**/ +presetsApi.update = function(params) { + var argProps = { + 'preset_id': { + 'required': true, + 'type': 'String', + 'min-length': 24, + 'max-length': 24, + 'exclude-from-ret-obj': true + }, + 'name': { + 'required': false, + 'type': 'String', + 'non-empty': true + }, + 'range': { + 'required': false, + 'type': [ + 'Array', + 'Object', + 'String' + ], + 'multiple': true + }, + 'share_with': { + 'required': false, + 'type': 'String', + 'default': 'none', //none, all-users, selected-users + 'non-empty': true + }, + 'shared_email_edit': { + 'required': false, + 'type': 'Array' + }, + 'shared_email_view': { + 'required': false, + 'type': 'Array' + }, + 'shared_user_groups_edit': { + 'required': false, + 'type': 'Array' + }, + 'shared_user_groups_view': { + 'required': false, + 'type': 'Array' + }, + 'exclude_current_day': { + 'required': false, + 'type': 'Boolean', + 'default': false + }, + 'fav': { + 'required': false, + 'type': 'Boolean', + }, + 'sort_order': { + 'required': false, + 'type': 'Number' + }, + 'app_id': { + 'required': true, + 'type': 'String', + 'min-length': 24, + 'max-length': 24, + 'exclude-from-ret-obj': true + } + }, + updatedPreset = {}, + member = params.member, + memberId = member._id + "", + memberEmail = member.email, + filterCond = {}; + + if (!member.global_admin) { + var groups = member.group_id || []; + if (!Array.isArray(groups)) { + groups = [groups]; + } + groups = groups.map(group_id => group_id + ""); + filterCond = { + $or: [ + {owner_id: memberId}, + {share_with: "all-users"}, + {shared_email_view: memberEmail}, + {shared_email_edit: memberEmail}, + {shared_user_groups_edit: {$in: groups}}, + {shared_user_groups_view: {$in: groups}} + ] + }; + } + + if (params.qstring.range) { + try { + params.qstring.range = JSON.parse(params.qstring.range); + } + catch (SyntaxError) { + common.returnMessage(params, 400, 'Invalid range'); + return false; + } + } + + if (params.qstring.shared_email_edit) { + try { + params.qstring.shared_email_edit = JSON.parse(params.qstring.shared_email_edit); + } + catch (SyntaxError) { + common.returnMessage(params, 400, 'Invalid shared_email_edit'); + return false; + } + } + + if (params.qstring.shared_email_view) { + try { + params.qstring.shared_email_view = JSON.parse(params.qstring.shared_email_view); + } + catch (SyntaxError) { + common.returnMessage(params, 400, 'Invalid shared_email_view'); + return false; + } + } + + if (params.qstring.shared_user_groups_edit) { + try { + params.qstring.shared_user_groups_edit = JSON.parse(params.qstring.shared_user_groups_edit); + } + catch (SyntaxError) { + common.returnMessage(params, 400, 'Invalid shared_user_groups_edit'); + return false; + } + } + + if (params.qstring.shared_user_groups_view) { + try { + params.qstring.shared_user_groups_view = JSON.parse(params.qstring.shared_user_groups_view); + } + catch (SyntaxError) { + common.returnMessage(params, 400, 'Invalid shared_user_groups_view'); + return false; + } + } + + if (params.qstring.exclude_current_day) { + try { + params.qstring.exclude_current_day = JSON.parse(params.qstring.exclude_current_day); + } + catch (SyntaxError) { + common.returnMessage(params, 400, 'Invalid exclude_current_day'); + return false; + } + } + + if (params.qstring.fav) { + try { + params.qstring.fav = JSON.parse(params.qstring.fav); + } + catch (SyntaxError) { + common.returnMessage(params, 400, 'Invalid fav'); + return false; + } + } + + if (params.qstring.sort_order) { + try { + params.qstring.sort_order = JSON.parse(params.qstring.sort_order); + } + catch (SyntaxError) { + common.returnMessage(params, 400, 'Invalid sort_order'); + return false; + } + } + + if (!(updatedPreset = common.validateArgs(params.qstring, argProps))) { + common.returnMessage(params, 400, 'Not enough args'); + return false; + } + + filterCond._id = common.db.ObjectID(params.qstring.preset_id); + + common.db.collection('date_presets').findOne(filterCond, function(err, presetBefore) { + if (err || !presetBefore) { + common.returnMessage(params, 500, 'Could not find preset'); + return false; + } + + for (let i in params.qstring) { + if (typeof updatedPreset[i] === "undefined" && !["preset_id", "fav", "app_id"].includes(i)) { + updatedPreset[i] = params.qstring[i]; + } + } + + updatedPreset.edited_at = Math.floor(((new Date()).getTime()) / 1000); + + if (updatedPreset.share_with !== "selected-users") { + updatedPreset.shared_email_edit = []; + updatedPreset.shared_email_view = []; + updatedPreset.shared_user_groups_edit = []; + updatedPreset.shared_user_groups_view = []; + } + + //Handle fav + if (typeof params.qstring.fav !== 'undefined') { + let fav = presetBefore.fav || []; + if (params.qstring.fav === true && !fav.includes(params.member._id + "")) { + fav.push(params.member._id + ""); + } + if (params.qstring.fav === false && fav.includes(params.member._id + "")) { + fav.splice(fav.indexOf(params.member._id + ""), 1); + } + updatedPreset.fav = fav; + } + + common.db.collection('date_presets').update({_id: presetBefore._id}, {$set: updatedPreset}, {safe: true}, function(err1) { + if (err1) { + common.returnMessage(params, 500, 'Error updating preset'); + return false; + } + + //If sort order changed, update other presets + if (updatedPreset.sort_order !== presetBefore.sort_order) { + const oldSortOrder = presetBefore.sort_order; + const newSortOrder = updatedPreset.sort_order; + const sort_order_difference = oldSortOrder - newSortOrder; + + const updateQuery = { + sort_order: { + $gte: Math.min(oldSortOrder, newSortOrder), + $lte: Math.max(oldSortOrder, newSortOrder) + }, + _id: { $ne: presetBefore._id } + }; + + const update = sort_order_difference > 0 ? { $inc: { sort_order: 1 } } : { $inc: { sort_order: -1 } }; + + common.db.collection('date_presets').updateMany(updateQuery, update, {multi: true}, function(err2) { + if (err2) { + common.returnMessage(params, 500, 'Error updating sort order of other presets'); + return false; + } + common.returnMessage(params, 200, 'Preset updated'); + return true; + }); + } + else { + common.returnMessage(params, 200, 'Preset updated'); + return true; + } + }); + }); + return true; +}; + +/** +* Get presets +* @param {params} params - params object +* @returns {boolean} true if successful +**/ +presetsApi.delete = function(params) { + var argProps = { + 'preset_id': { + 'required': true, + 'type': 'String', + 'min-length': 24, + 'max-length': 24, + 'exclude-from-ret-obj': true + } + }; + + if (!common.validateArgs(params.qstring, argProps)) { + common.returnMessage(params, 400, 'Not enough args'); + return false; + } + + common.db.collection('date_presets').findOne({ _id: common.db.ObjectID(params.qstring.preset_id)}, function(err, presetBefore) { + if (err || !presetBefore) { + common.returnMessage(params, 500, 'Could not find preset'); + return false; + } + if (presetBefore.owner_id !== params.member._id + "" && !params.member.global_admin) { + common.returnMessage(params, 401, 'Not authorized'); + return false; + } + common.db.collection('date_presets').remove({_id: common.db.ObjectID(params.qstring.preset_id)}, { safe: true }, function(err1, preset) { + if (err1 || !preset) { + common.returnMessage(params, 500, 'Error deleting preset'); + return false; + } + //Update sort order of other presets + common.db.collection('date_presets').updateMany({sort_order: {$gt: presetBefore.sort_order}}, {$inc: {sort_order: -1}}, function(err2) { + if (err2) { + common.returnMessage(params, 500, 'Error updating sort order of other presets'); + return false; + } + common.returnOutput(params, preset); + return true; + }); + }); + }); +}; + +presetsApi.getById = function(params) { + var argProps = { + 'preset_id': { + 'required': true, + 'type': 'String', + 'min-length': 24, + 'max-length': 24, + 'exclude-from-ret-obj': true + }, + 'app_id': { + 'required': true, + 'type': 'String', + 'min-length': 24, + 'max-length': 24, + 'exclude-from-ret-obj': true + } + }; + + var member = params.member, + memberId = member._id + "", + memberEmail = member.email, + filterCond = {}; + + if (!member.global_admin) { + var groups = member.group_id || []; + if (!Array.isArray(groups)) { + groups = [groups]; + } + groups = groups.map(group_id => group_id + ""); + filterCond = { + $or: [ + {owner_id: memberId}, + {share_with: "all-users"}, + {shared_email_view: memberEmail}, + {shared_email_edit: memberEmail}, + {shared_user_groups_edit: {$in: groups}}, + {shared_user_groups_view: {$in: groups}} + ] + }; + } + + if (!common.validateArgs(params.qstring, argProps)) { + common.returnMessage(params, 400, 'Not enough args'); + return false; + } + + filterCond._id = common.db.ObjectID(params.qstring.preset_id); + + common.db.collection('date_presets').findOne(filterCond, function(err, preset) { + if (err || !preset) { + common.returnMessage(params, 500, 'Could not find preset'); + return false; + } + preset.is_owner = (preset.owner_id === memberId) || member.global_admin; + let fav = preset.fav || []; + preset.fav = fav.includes(memberId); + common.returnOutput(params, preset); + return true; + }); +}; + +module.exports = presetsApi; \ No newline at end of file diff --git a/api/parts/mgmt/users.js b/api/parts/mgmt/users.js index 0cfd7e62f49..e4ca6e3c3ee 100644 --- a/api/parts/mgmt/users.js +++ b/api/parts/mgmt/users.js @@ -583,13 +583,14 @@ usersApi.updateUser = async function(params) { * @param {params} params - params object * @returns {boolean} true if user was deleted **/ -usersApi.deleteUser = function(params) { +usersApi.deleteUser = async function(params) { var argProps = { 'user_ids': { 'required': true, 'type': 'Array' } }, + fails = 0, userIds = []; var deleteUserValidation = common.validateArgs(params.qstring.args, argProps, true); @@ -605,21 +606,53 @@ usersApi.deleteUser = function(params) { continue; } else { - common.db.collection('auth_tokens').remove({ 'owner': userIds[i] }, function() {}); - common.db.collection('members').findAndModify({ '_id': common.db.ObjectID(userIds[i]) }, {}, {}, { remove: true }, function(err, user) { - if (!err && user && user.ok && user.value) { + const user = await common.db.collection('members').findOne({ '_id': common.db.ObjectID(userIds[i]) }); + const promisifiedDispatch = function(prms, data) { + return new Promise((resolve, reject) => { plugins.dispatch("/i/users/delete", { - params: params, - data: user.value + params: prms, + data, + }, async(__, otherPluginResults) => { + const rejectReasons = otherPluginResults.reduce((acc, result) => { + if (result.status === "rejected") { + acc.push((result.reason && result.reason.message) || ''); + } + + return acc; + }, []); + + if (rejectReasons.length > 0) { + log.e("User " + userIds[i] + " deletion failed\n%j", rejectReasons.join("\n")); + fails += 1; + reject(false); + } + else { + await common.db.collection('auth_tokens').remove({ 'owner': userIds[i] }); + await usersApi.deleteUserNotes({ member: { _id: userIds[i] } }); + await common.db.collection('members').remove({_id: common.db.ObjectID(userIds[i])}); + deleteUserPresets(userIds[i]); + resolve(true); + } }); - usersApi.deleteUserNotes({member: {_id: user.value._id.toString()}}); - } - }); + }); + }; + + await promisifiedDispatch(params, user); } } - common.returnMessage(params, 200, 'Success'); - return true; + if (fails === 0) { + common.returnMessage(params, 200, 'Success'); + return true; + } + else if (fails === userIds.length) { + common.returnMessage(params, 500, 'User deletion failed, please see logs for more detail'); + return false; + } + else { + common.returnMessage(params, 200, 'Some users cannot be deleted, please see logs for more detail'); + return true; + } }; // created functions below are for account deletion. when merging together with next should remove and include from members utility !!!!!! @@ -728,12 +761,49 @@ function verifyMemberArgon2Hash(username, password, callback) { }); } +/** + * Delete user's date presets + * @param {string} memberId | User id + */ +function deleteUserPresets(memberId) { + common.db.collection("date_presets").remove({owner: memberId + ""}, function() { + //handle errors + }); +} + // END of reused functions usersApi.deleteOwnAccount = function(params) { if (params.qstring.password && params.qstring.password !== "") { verifyMemberArgon2Hash(params.member.email, params.qstring.password, (err, member) => { + const dispatchDeleteCallback = async function(__, otherPluginResults) { + const rejectReasons = otherPluginResults.reduce((acc, result) => { + if (result.status === "rejected") { + acc.push((result.reason && result.reason.message) || ''); + } + + return acc; + }, []); + + if (rejectReasons.length > 0) { + log.e("User deletion failed\n%j", rejectReasons.join("\n")); + common.returnMessage(params, 500, { errorMessage: "User deletion failed. Failed to delete some data related to this user." }); + } + else { + try { + await common.db.collection('members').remove({_id: common.db.ObjectID(member._id + "")}); + killAllSessionForUser(member._id); + deleteUserPresets(member._id); + common.returnMessage(params, 200, 'Success'); + } + catch (err1) { + console.log(err1); + common.returnMessage(params, 400, 'Mongo error'); + } + } + }; + if (member) { if (member.global_admin) { common.db.collection('members').count({'global_admin': true}, function(err2, count) { @@ -744,42 +814,20 @@ usersApi.deleteOwnAccount = function(params) { if (count < 2) { common.returnMessage(params, 400, 'global admin limit'); } - else { - common.db.collection('members').remove({_id: common.db.ObjectID(member._id + "")}, function(err1 /*, res1*/) { - if (err1) { - console.log(err1); - common.returnMessage(params, 400, 'Mongo error'); - } - else { - plugins.dispatch("/i/users/delete", { - params: params, - data: member - }); - killAllSessionForUser(member._id); - common.returnMessage(params, 200, 'Success'); - } - }); - } - - }); - - } - else { - common.db.collection('members').remove({_id: common.db.ObjectID(member._id + "")}, function(err3 /* , res1*/) { - if (err3) { - console.log(err3); - common.returnMessage(params, 400, 'Mongo error'); - } else { plugins.dispatch("/i/users/delete", { params: params, data: member - }); - killAllSessionForUser(member._id); - common.returnMessage(params, 200, 'Success'); + }, dispatchDeleteCallback); } }); } + else { + plugins.dispatch("/i/users/delete", { + params: params, + data: member + }, dispatchDeleteCallback); + } } else { common.returnMessage(params, 400, 'password not valid'); diff --git a/api/utils/common.js b/api/utils/common.js index d831bad3021..01c1c7951be 100644 --- a/api/utils/common.js +++ b/api/utils/common.js @@ -217,7 +217,8 @@ common.dbUserMap = { 'last_end_session_timestamp': 'lest', 'has_ongoing_session': 'hos', 'previous_events': 'pe', - 'resolution': 'r' + 'resolution': 'r', + 'has_hinge': 'hh', }; common.dbUniqueMap = { @@ -1119,6 +1120,31 @@ common.validateArgs = function(args, argProperties, returnErrors) { } } } + else if (Array.isArray(argProperties[arg].type) && argProperties[arg].multiple) { //ALLOW MULTIPLE TYPES FOR ARGUMENT + const argType = typeof args[arg]; + const allowedTypes = argProperties[arg].type.map(t => t.toLowerCase()); + + if (!Array.isArray(args[arg]) && !allowedTypes.includes(argType)) { + if (returnErrors) { + returnObj.errors.push("Invalid type for " + arg); + returnObj.result = false; + argState = false; + } + else { + return false; + } + } + else if (Array.isArray(args[arg]) && !allowedTypes.includes('array')) { + if (returnErrors) { + returnObj.errors.push("Invalid type for " + arg); + returnObj.result = false; + argState = false; + } + else { + return false; + } + } + } else if (typeof argProperties[arg].type === 'object' && !argProperties[arg].array) { if (typeof args[arg] !== 'object' && !(!argProperties[arg].required && args[arg] === null)) { if (returnErrors) { @@ -2631,6 +2657,7 @@ common.updateAppUser = function(params, update, no_meta, callback) { update.$set.lac = params.time.timestamp; } update.$set.last_sync = Math.round(Date.now() / 1000); + update.$set.lu = new Date(); } if (!user.sdk) { diff --git a/api/utils/countlyFs.js b/api/utils/countlyFs.js index fbf0769235c..099905ae2fa 100644 --- a/api/utils/countlyFs.js +++ b/api/utils/countlyFs.js @@ -631,6 +631,24 @@ countlyFs.gridfs = {}; }); }); }; + /** + * List files inside the category (collection/directory) + * @param {string} category - collection to list files in + * @param {function} callback - function called when files found or query errored, providing error object as first param and a list of filename, creation date and size as secondas second + */ + ob.listFiles = function(category, callback) { + const bucket = new GridFSBucket(db, { bucketName: category }); + bucket.find().toArray() + .then((records) => callback( + null, + records.map(({ filename, uploadDate, length }) => ({ + filename, + createdOn: uploadDate, + size: length + })) + )) + .catch((error) => callback(error, null)); + }; /** * Get handler for filesystem, which in case of GridFS is database connection @@ -941,6 +959,30 @@ countlyFs.fs = {}; }); }; + /** + * List files inside the category (directory) + * @param {string} category - directory to list files in + * @param {function} callback - function called when files found, providing error object as first param and a list of filename, creation date and size as second + */ + ob.listFiles = function(category, callback) { + fs.readdir(category, function(err, files) { + if (err) { + return callback(err); + } + callback( + null, + files.map(filename => { + const stats = fs.statSync(category + '/' + filename); + return { + filename, + createdOn: stats.mtime, + size: stats.size + }; + }) + ); + }); + }; + /** * Get handler for filesystem, which in case of GridFS is database connection * @returns {object} databse connection diff --git a/api/utils/requestProcessor.js b/api/utils/requestProcessor.js index e8b431b2d82..72e0642e391 100755 --- a/api/utils/requestProcessor.js +++ b/api/utils/requestProcessor.js @@ -41,6 +41,7 @@ const countlyApi = { appUsers: require('../parts/mgmt/app_users.js'), eventGroups: require('../parts/mgmt/event_groups.js'), cms: require('../parts/mgmt/cms.js'), + datePresets: require('../parts/mgmt/date_presets.js'), } }; @@ -1313,24 +1314,6 @@ const processRequest = (params) => { var app_id = params.qstring.app_id; var updateThese = {"$unset": {}}; if (idss.length > 0) { - for (let i = 0; i < idss.length; i++) { - idss[i] = idss[i] + ""; //make sure it is string to do not fail. - if (idss[i].indexOf('.') !== -1) { - updateThese.$unset["map." + idss[i].replace(/\./g, '\\u002e')] = 1; - updateThese.$unset["omitted_segments." + idss[i].replace(/\./g, '\\u002e')] = 1; - } - else { - updateThese.$unset["map." + idss[i]] = 1; - updateThese.$unset["omitted_segments." + idss[i]] = 1; - } - idss[i] = common.decode_html(idss[i]);//previously escaped, get unescaped id (because segments are using it) - if (idss[i].indexOf('.') !== -1) { - updateThese.$unset["segments." + idss[i].replace(/\./g, '\\u002e')] = 1; - } - else { - updateThese.$unset["segments." + idss[i]] = 1; - } - } common.db.collection('events').findOne({"_id": common.db.ObjectID(params.qstring.app_id)}, function(err, event) { if (err) { @@ -1340,75 +1323,122 @@ const processRequest = (params) => { common.returnMessage(params, 400, "Could not find event"); return; } - //fix overview - if (event.overview && event.overview.length) { - for (let i = 0; i < idss.length; i++) { - for (let j = 0; j < event.overview.length; j++) { - if (event.overview[j].eventKey === idss[i]) { - event.overview.splice(j, 1); - j = j - 1; + let successIds = []; + let failedIds = []; + let promises = []; + for (let i = 0; i < idss.length; i++) { + let collectionNameWoPrefix = common.crypto.createHash('sha1').update(idss[i] + app_id).digest('hex'); + common.db.collection("events" + collectionNameWoPrefix).drop(); + promises.push(new Promise((resolve, reject) => { + plugins.dispatch("/i/event/delete", { + event_key: idss[i], + appId: app_id + }, function(_, otherPluginResults) { + const rejectReasons = otherPluginResults?.reduce((acc, result) => { + if (result?.status === "rejected") { + acc.push((result.reason && result.reason.message) || ''); + } + return acc; + }, []); + + if (rejectReasons?.length) { + failedIds.push(idss[i]); + log.e("Event deletion failed\n%j", rejectReasons.join("\n")); + reject("Event deletion failed. Failed to delete some data related to this Event."); + return; + } + else { + successIds.push(idss[i]); + resolve(); } } - } - if (!updateThese.$set) { - updateThese.$set = {}; - } - updateThese.$set.overview = event.overview; + ); + })); } - //remove from list - if (typeof event.list !== 'undefined' && Array.isArray(event.list) && event.list.length > 0) { - for (let i = 0; i < idss.length; i++) { - let index = event.list.indexOf(idss[i]); - if (index > -1) { - event.list.splice(index, 1); - i = i - 1; + Promise.allSettled(promises).then(async() => { + //remove from map, segments, omitted_segments + for (let i = 0; i < successIds.length; i++) { + successIds[i] = successIds[i] + ""; //make sure it is string to do not fail. + if (successIds[i].indexOf('.') !== -1) { + updateThese.$unset["map." + successIds[i].replace(/\./g, '\\u002e')] = 1; + updateThese.$unset["omitted_segments." + successIds[i].replace(/\./g, '\\u002e')] = 1; + } + else { + updateThese.$unset["map." + successIds[i]] = 1; + updateThese.$unset["omitted_segments." + successIds[i]] = 1; + } + successIds[i] = common.decode_html(successIds[i]);//previously escaped, get unescaped id (because segments are using it) + if (successIds[i].indexOf('.') !== -1) { + updateThese.$unset["segments." + successIds[i].replace(/\./g, '\\u002e')] = 1; + } + else { + updateThese.$unset["segments." + successIds[i]] = 1; } } - if (!updateThese.$set) { - updateThese.$set = {}; + //fix overview + if (event.overview && event.overview.length) { + for (let i = 0; i < successIds.length; i++) { + for (let j = 0; j < event.overview.length; j++) { + if (event.overview[j].eventKey === successIds[i]) { + event.overview.splice(j, 1); + j = j - 1; + } + } + } + if (!updateThese.$set) { + updateThese.$set = {}; + } + updateThese.$set.overview = event.overview; } - updateThese.$set.list = event.list; - } - //remove from order - if (typeof event.order !== 'undefined' && Array.isArray(event.order) && event.order.length > 0) { - for (let i = 0; i < idss.length; i++) { - let index = event.order.indexOf(idss[i]); - if (index > -1) { - event.order.splice(index, 1); - i = i - 1; + //remove from list + if (typeof event.list !== 'undefined' && Array.isArray(event.list) && event.list.length > 0) { + for (let i = 0; i < successIds.length; i++) { + let index = event.list.indexOf(successIds[i]); + if (index > -1) { + event.list.splice(index, 1); + i = i - 1; + } } + if (!updateThese.$set) { + updateThese.$set = {}; + } + updateThese.$set.list = event.list; } - if (!updateThese.$set) { - updateThese.$set = {}; + //remove from order + if (typeof event.order !== 'undefined' && Array.isArray(event.order) && event.order.length > 0) { + for (let i = 0; i < successIds.length; i++) { + let index = event.order.indexOf(successIds[i]); + if (index > -1) { + event.order.splice(index, 1); + i = i - 1; + } + } + if (!updateThese.$set) { + updateThese.$set = {}; + } + updateThese.$set.order = event.order; } - updateThese.$set.order = event.order; - } - common.db.collection('events').update({"_id": common.db.ObjectID(app_id)}, updateThese, function(err2) { - if (err2) { - console.log(err2); - common.returnMessage(params, 400, err); - } - else { - for (let i = 0; i < idss.length; i++) { - var collectionNameWoPrefix = common.crypto.createHash('sha1').update(idss[i] + app_id).digest('hex'); - common.db.collection("events" + collectionNameWoPrefix).drop(function() {}); - plugins.dispatch("/i/event/delete", { - event_key: idss[i], - appId: app_id - }); + await common.db.collection('events').update({ "_id": common.db.ObjectID(app_id) }, updateThese); + + plugins.dispatch("/systemlogs", { + params: params, + action: "event_deleted", + data: { + events: successIds, + appID: app_id } - plugins.dispatch("/systemlogs", { - params: params, - action: "event_deleted", - data: { - events: idss, - appID: app_id - } - }); - common.returnMessage(params, 200, 'Success'); + }); + + common.returnMessage(params, 200, 'Success'); + + }).catch((err2) => { + if (failedIds.length) { + log.e("Event deletion failed for following Event keys:\n%j", failedIds.join("\n")); } + log.e("Event deletion failed\n%j", err2); + common.returnMessage(params, 500, { errorMessage: "Event deletion failed. Failed to delete some data related to this Event." }); }); }); } @@ -2956,6 +2986,55 @@ const processRequest = (params) => { } break; } + case '/o/date_presets': { + switch (paths[3]) { + case 'getAll': + validateUserForMgmtReadAPI(countlyApi.mgmt.datePresets.getAll, params); + break; + case 'getById': + validateUserForMgmtReadAPI(countlyApi.mgmt.datePresets.getById, params); + break; + default: + if (!plugins.dispatch(apiPath, { + params: params, + validateUserForDataReadAPI: validateUserForDataReadAPI, + validateUserForMgmtReadAPI: validateUserForMgmtReadAPI, + paths: paths, + validateUserForDataWriteAPI: validateUserForDataWriteAPI, + validateUserForGlobalAdmin: validateUserForGlobalAdmin + })) { + common.returnMessage(params, 400, 'Invalid path, must be one of /getAll /getById'); + } + break; + } + break; + } + case '/i/date_presets': { + switch (paths[3]) { + case 'create': + validateUserForWrite(params, countlyApi.mgmt.datePresets.create); + break; + case 'update': + validateUserForWrite(params, countlyApi.mgmt.datePresets.update); + break; + case 'delete': + validateUserForWrite(params, countlyApi.mgmt.datePresets.delete); + break; + default: + if (!plugins.dispatch(apiPath, { + params: params, + validateUserForDataReadAPI: validateUserForDataReadAPI, + validateUserForMgmtReadAPI: validateUserForMgmtReadAPI, + paths: paths, + validateUserForDataWriteAPI: validateUserForDataWriteAPI, + validateUserForGlobalAdmin: validateUserForGlobalAdmin + })) { + common.returnMessage(params, 400, 'Invalid path, must be one of /create /update or /delete'); + } + break; + } + break; + } default: if (!plugins.dispatch(apiPath, { params: params, diff --git a/api/utils/taskmanager.js b/api/utils/taskmanager.js index 2a9a5b1fb30..8be6a3cfc6f 100644 --- a/api/utils/taskmanager.js +++ b/api/utils/taskmanager.js @@ -956,15 +956,19 @@ taskmanager.rerunTask = function(options, callback) { errored: true, request: reqData }, body); - } } + if (options.autoUpdate) { //as it is auto from task, do callback only after finishing calculations. + callback1(null, "Success"); + } } }; if (common.processRequest) { common.processRequest(params); } - callback1(null, "Success"); + if (!options.autoUpdate) { + callback1(null, "Success"); + } }); } diff --git a/bin/commands/countly.sh b/bin/commands/countly.sh index 13dab914e37..81be212b6f6 100755 --- a/bin/commands/countly.sh +++ b/bin/commands/countly.sh @@ -111,7 +111,7 @@ countly_upgrade (){ countly_root ; if [ $# -eq 0 ] then - INOFFLINEMODE=$(countly config 'api.offline_mode' | awk -F'= ' '{print $2}') + INOFFLINEMODE=$(countly config 'api.offline_mode' | awk '/=/{print $NF}') if [ "$INOFFLINEMODE" == "false" ] then diff --git a/bin/commands/scripts/plugin.js b/bin/commands/scripts/plugin.js index a705f70a4e1..09c7f7e0d9e 100644 --- a/bin/commands/scripts/plugin.js +++ b/bin/commands/scripts/plugin.js @@ -11,14 +11,11 @@ var myArgs = process.argv.slice(2); function save_changes(data, finalList) { manager.dbConnection().then((db) => { manager.loadConfigs(db, function() { - if (manager.getConfig("api").sync_plugins) { - manager.updateConfigs(db, "plugins", data, function() { - db.close(); - }); - } - else { + + manager.updateConfigs(db, "plugins", data, function() { db.close(); - } + }); + fs.writeFile(pluginsListPath, JSON.stringify(finalList), 'utf8', function() { console.log("Changes saved"); }); @@ -80,7 +77,7 @@ manager.dbConnection().then((db) => { db.close(); if (myArgs[0] == "enable" && myArgs[1]) { let pluginName = myArgs[1]; - if (plugins.indexOf(pluginName) == -1) { + if (!manager.isPluginEnabled(pluginName)) { let {dpcs} = dependencies.getDependencies(plugins.concat(pluginName), { discoveryStrategy: "enableParents", env: "cli" @@ -131,7 +128,7 @@ manager.dbConnection().then((db) => { } else if (myArgs[0] == "disable" && myArgs[1]) { let pluginName = myArgs[1]; - if (plugins.indexOf(pluginName) > -1) { + if (manager.isPluginEnabled(pluginName)) { let {dpcs} = dependencies.getDependencies(plugins.concat(pluginName), { discoveryStrategy: "enableParents", env: "cli" diff --git a/bin/countly.install_rhel.sh b/bin/countly.install_rhel.sh index c12edd89672..2fbd19bcee8 100644 --- a/bin/countly.install_rhel.sh +++ b/bin/countly.install_rhel.sh @@ -87,7 +87,7 @@ sudo systemctl start sendmail > /dev/null || echo "sendmail service does not exi #install npm modules npm config set prefix "$DIR/../.local/" -( cd "$DIR/.."; npm install -g npm@6.14.13; npm install sqlite3 --build-from-source; npm install; npm install argon2 --build-from-source; ) +( cd "$DIR/.."; npm install argon2; npm install sqlite3 --build-from-source; npm install; ) #install numactl sudo dnf install -y numactl diff --git a/bin/countly.install_ubuntu.sh b/bin/countly.install_ubuntu.sh index 220fd1728e5..b2719be2ebe 100644 --- a/bin/countly.install_ubuntu.sh +++ b/bin/countly.install_ubuntu.sh @@ -91,7 +91,7 @@ sudo apt-get install -y sendmail #install npm modules npm config set prefix "$DIR/../.local/" -( cd "$DIR/.."; npm install -g npm@6.14.13; npm install sqlite3 --build-from-source; npm install; npm install argon2 --build-from-source; ) +( cd "$DIR/.."; npm install argon2; npm install sqlite3 --build-from-source; npm install; ) #install mongodb if ! command -v mongod &> /dev/null; then diff --git a/bin/scripts/device_list/amazon.json b/bin/scripts/device_list/amazon.json index 1c87221cf8a..a080bb7d96a 100644 --- a/bin/scripts/device_list/amazon.json +++ b/bin/scripts/device_list/amazon.json @@ -1,4 +1,6 @@ { + "KFTUWI":"Fire HD 10 (2023, 13th Gen)", + "KFSNWI":"Fire Max 11 (2023, 13th Gen)", "KFRAWI (2GB)":"Fire HD 8 (2022, 2GB)", "KFRAPWI (3GB)":"Fire HD 8 (2022, 3GB)", "KFQUWI": "Fire 7 (2022)", @@ -36,13 +38,30 @@ "AFTN":"Fire TV (Gen 3)", "AFTA":"Fire TV Cube", "AFTR":"Fire TV Cube (Gen 2)", + "AFTGAZL":"Fire TV Cube - 3rd Gen (2022)", + "AFTKRT":"Fire TV Stick 4K Max - 2nd Gen (2023) - 16 GB", + "AFTKM":"Fire TV Stick 4K - 2nd Gen (2023) - 8 GB", "AFTMM":"Fire TV Stick 4K", "AFTSSS":"Fire TV Stick (Gen 3)", "AFTSS":"Fire TV Stick Lite (Gen 1)", "AFTKA":"Fire TV Stick 4K Max", + "AFTBTX4":"Redmi 108cm (43 inches) 4K Ultra HD smart LED Fire TV (2023)", + "AFTBU001":"AmazonBasics HD/FHD - Fire TV (2020)", + "AFTPR001":"AmazonBasics 4K - Fire TV (2020)", + "AFTPR001":"AmazonBasics 4K - Fire TV (2020)", + "AFTTIFF55":"Onida HD/FHD - Fire TV (2020)", + "AFTSHN02":"TCL 32 FHD, 40 FHD Fire TV (2023)", + "AFTMD002":"TCL Class S3 1080p LED Smart TV with Fire TV (2023)", + "AFTMD001":"Fire TV - TCL Q6 4K QLED HDR (2023)", + "AFTMD001":"Fire TV - TCL S4 Series 4K UHD HDR LED (2023)", + "AFTKA002":"Fire TV 2-Series (2023)", + "AFTKAUK002":"Fire TV 2-Series (2023)", + "AFTHA004":"Toshiba 4K UHD - Fire TV (2022)", + "AFTTIFF43":"Fire TV Omni QLED Series (2022)", + "AFTHA001":"Hisense U6 4K UHD - Fire TV (2022)", "AFTMON001":"Funai 4K - Fire TV (2022)", "AFTJULI1":"JVC 4K - Fire TV (2021)", - "AFTANNA0":"ok 4K - Fire TV (2021)", + "AFTANNA0":"Xiaomi F2 4K - Fire TV (2022)", "AFTHA003":"Toshiba 4K Far-field UHD", "AFTHA002":"Toshiba V35 Series LED FHD", "AFTTIFF43":"Fire TV Omni Series (2021)", @@ -58,5 +77,7 @@ "AFTEU011":"Fire TV (Grundig Vision 6 HD 2019)", "AFTEU014":"Fire TV (Grundig Vision 7 4K 2019)", "AFTEUFF014":"Fire TV (Grundig OLED 4K 2019)", - "AFTLFT962X3":"Stellantis" + "AFTLFT962X3":"Stellantis", + "AFTLBT962E2":"BMW (2022)", + "AEOHY":"Echo Show 15 (2021)" } \ No newline at end of file diff --git a/bin/scripts/device_list/apple.json b/bin/scripts/device_list/apple.json index c922b03862d..6c6011013b3 100644 --- a/bin/scripts/device_list/apple.json +++ b/bin/scripts/device_list/apple.json @@ -144,6 +144,16 @@ "iPad14,4":"iPad Pro 11 inch 4th Gen", "iPad14,5":"iPad Pro 12.9 inch 6th Gen", "iPad14,6":"iPad Pro 12.9 inch 6th Gen", + "iPad14,8":"iPad Air 6th Gen", + "iPad14,9":"iPad Air 6th Gen", + "iPad16,3-A":"iPad Pro 11 inch 5th Gen", + "iPad16,3-B":"iPad Pro 11 inch 5th Gen", + "iPad16,4-A":"iPad Pro 11 inch 5th Gen", + "iPad16,4-B":"iPad Pro 11 inch 5th Gen", + "iPad16,5-A":"iPad Pro 12.9 inch 7th Gen", + "iPad16,5-B":"iPad Pro 12.9 inch 7th Gen", + "iPad16,6-A":"iPad Pro 12.9 inch 7th Gen", + "iPad16,6-B":"iPad Pro 12.9 inch 7th Gen", "Watch1,1":"Apple Watch (1st Gen) 38mm", "Watch1,2":"Apple Watch (1st Gen) 42mm", "Watch2,6":"Apple Watch Series 1 38mm", @@ -198,6 +208,8 @@ "i386":"Simulator (i386)", "x86_64":"Simulator (x84_64)", "arm64":"Simulator (arm64)", + "Mac15,4":"iMac (24-inch, 2023) USB 3", + "Mac15,5":"iMac (24-inch, 2023)", "iMac21,1": "iMac (24-inch, M1, 2021)", "iMac21,2": "iMac (24-inch, M1, 2021)", "iMac20,1": "iMac (Retina 5K, 27-inch, 2020)", @@ -295,10 +307,25 @@ "MacBookAir3,2": "MacBook Air (13-inch, Late 2010)", "MacBookAir3,1": "MacBook Air (11-inch, Late 2010)", "MacBookAir2,1": "MacBook Air (Mid 2009)", + "Mac15,13":"MacBook Air (15-inch, M3, 2024)", + "Mac15,12":"MacBook Air (13-inch, M3, 2024)", + "Mac14,15":"MacBook Air (15-inch, M2, 2023)", + "Mac14,8":"Mac Pro (2023)", "Mac14,7": "MacBook Pro (13-inch, M2, 2022)", "Mac14,6": "MacBook Pro (16-inch, 2023)", "Mac14,10": "MacBook Pro (16-inch, 2023)", "Mac14,5": "MacBook Pro (14-inch, 2023)", "Mac14,9": "MacBook Pro (14-inch, 2023)", - "Mac14,2": "MacBook Air (M2, 2022)" + "Mac14,2": "MacBook Air (M2, 2022)", + "Mac15,7":"MacBook Pro (16-inch, Nov 2023)", + "Mac15,9":"MacBook Pro (16-inch, Nov 2023)", + "Mac15,11":"MacBook Pro (16-inch, Nov 2023)", + "Mac15,6":"MacBook Pro (14-inch, Nov 2023)", + "Mac15,8":"MacBook Pro (14-inch, Nov 2023)", + "Mac15,10":"MacBook Pro (14-inch, Nov 2023)", + "Mac15,3":"MacBook Pro (14-inch, Nov 2023)", + "Mac13,2":"Mac Studio (2022)", + "Mac13,1":"Mac Studio (2022)", + "Mac14,14":"Mac Studio (2023) Thunderbolt", + "Mac14,13":"Mac Studio (2023) USB-C" } diff --git a/bin/scripts/device_list/scrape_mac_devices.txt b/bin/scripts/device_list/scrape_mac_devices.txt index 2a614126c37..26819260358 100644 --- a/bin/scripts/device_list/scrape_mac_devices.txt +++ b/bin/scripts/device_list/scrape_mac_devices.txt @@ -5,6 +5,8 @@ Mac Book Pro (https://support.apple.com/en-us/HT201300) Mac Book (https://support.apple.com/en-us/HT201608) Mac Book Air (https://support.apple.com/en-us/HT201862) Mac mini (https://support.apple.com/en-us/HT201894) +Mac Studio (https://support.apple.com/en-us/102231) +Apple TV (https://support.apple.com/en-us/101605) Load script: diff --git a/bin/scripts/device_list/supported_devices.csv b/bin/scripts/device_list/supported_devices.csv index 74b862d789c..ee02f713157 100644 --- a/bin/scripts/device_list/supported_devices.csv +++ b/bin/scripts/device_list/supported_devices.csv @@ -3,6 +3,7 @@ Retail Branding,Marketing Name,Device,Model ,,FJL21,FJL21 ,,hws7721g,MediaPad 7 Youth 2 1&1,1&1 Puck,diw362_1u1,DIW362P 1U1 +1&1,1&1 TV BOX,DIW377-1u1,DIW377 1u1 1&1,1&1 TV Box,diw387_1u1,DIW387 1U1 1&1,DIW387-1&1,diw387_1u1,DIW387 1U1 10.or,10or_G2,G2,10or G2 @@ -10,6 +11,8 @@ Retail Branding,Marketing Name,Device,Model 10.or,E,E,E 10.or,G,G,G 10.or,G2,G2,G2 +2E (ERC),2E 2K Google TV,capitolhill,2E 2K Google TV +2E (ERC),2E 4K Google TV,keoneae,2E 4K Google TV 3222222 Satelital,G706,G706,G706 3BBTV,3BBTV,S3000,S3000-T0C08 3BBTV,TBBTV01,TBBTV01,TBBTV01 @@ -29,16 +32,20 @@ Retail Branding,Marketing Name,Device,Model 7mobile,Kamba 2,7mobile_Kamba_2,Kamba_2 7mobile,SWEGUE,SWEGUE,SWEGUE 7mobile,Swegue 2,Swegue_2,Swegue 2 +8849,TANK MINI 1,TANK_MINI_1,TANK MINI 1 8849,TANK2,TANK2,TANK2 +8849,TANK3,TANK3,TANK 3 9mobile,DM_T901,DM_T901,DM_T901 A.O.I. ELECTRONICS FACTORY,A.O.I.,TR10CS1_11,TR10CS1 A1,A1 Alpha 20+,P671F60,A1 Alpha 20+ +A1,A1 Bulgaria B866V2F02,A1_B866V2F02,B866V2F02 A1,A1 Hrvatska B866V2F02,A1_B866V2F02,B866V2F02 A1,A1 Smart N9,VFD720,VFD 720 A1,A1-Smart-Box-DV9161,DV9161-KBA,A1-Smart-Box-DV9161 A1,ADT-3,adt3,ADT-3 A1,Ai-ES1059,Ai-ES1059,Ai-ES1059 AAUW,T50_2023,T50_2023,T50_2023 +AAUW,T60PRO,T60PRO_ROW,T60PRO_ROW AAUW,T60Pro,T60Pro,T60Pro AAUW,T60Pro_2023,T60Pro_2023,T60Pro_2023 AAUW,T90,T90,T90 @@ -47,6 +54,7 @@ ABCTECH,PG11,PG11,PG11 ABCTECH,X20,X20,X20 ABCTECH,X20_Pro,X20_Pro,X20_Pro ABCTECH,X5,X5,X5 +ACE (Global),AS0224,BUZZ_5_Prime,BUZZ 5 Prime ACE (Global),AS0623,BUZZ_4_Note,BUZZ 4 Note ACE (Global),BUZZ 3,BUZZ_3,BUZZ 3 ACE (Global),BUZZ 3 Plus,BUZZ_3_Plus,BUZZ 3 Plus @@ -78,6 +86,7 @@ ACTECK,AC_934312,AC_934312,AC_934312 ADOC,ADOC EX650,rk3588_t,ADOCEX650 ADOC,ADOC TCAT10,ADOC_TCAT10,ADOC TCAT10 ADOC,D30,D30,D30 +ADOC,D40,D40,D40 ADOC,M3,M3,M3 ADVAN,ADVANNASAPro,ADVANNASAPro,ADVANNASAPro ADVAN,Sketsa3,ADVAN_SKETSA3,1013 @@ -160,6 +169,8 @@ ALBADEEL,Smart TV,redwood,AI PONT ALMATEEN,LXL43G7H-AT,samseong,AI PONT ALPHA_LING,A97GT,A97GT,A97GT ALPHA_LING,A97GT_Pro,A97GT_Pro,A97GT_Pro +ALPINE,Intelligent vehicle network system,INE-AW409S,INE-AW409S +ALT(IN),ODIN Kids Phone,odin,AT-M130 ALT.STYLEFOLDER,Style Folder,thor,AT-M120 AMGx13e,ASPE2201,ASPE2201,ASPE2201 AMTC,MD1001 Tablet,MD1001,MD1001 @@ -187,11 +198,13 @@ AOC,AOC,A731-H1,A731-H1 AOC,AOC,A732G,A732G AOC,AOC,AOC_A831L-D,A831L-D AOC,AOC,hongkong,4K SMART TV +AOC,AOC,mountbaker,2K SMART TV AOC,AOC Android TV,PH0M_EA_T32,AOC Android TV AOC,AOC Google TV TA7,PH3M_AL_T32,AOC Google TV TA7 AOC,Q10107L-ME,Q10107L-ME,Q10107L-ME AOC,Q10107LW-ME,Q10107LW-ME,Q10107LW-ME AOC,Q8108L-ME,Q8108L-ME,Q8108L-ME +AORO,M8,M8,M8 AOSKEY,F11,F11,F11 AOSKEY,P21,P21,P21 AOYODKG,A21S,A21S,A21S @@ -208,6 +221,7 @@ ARATEK,Marshall-8,Marshall-8,Marshall-8 ARBOR,G47,G47,G47 ARBOR,GT78-VN,GT78-VN,GT78-VN ARBOR,HT10,HT10,HT10 +ARGUEST,Arguest Android UHD TV,kunyang,Arguest Android UHD TV ARMADILOS,Listo22,Listo22,Listo22 ARRQW,RO-55LCS,samseong,AI PONT ARRQW,Saudi Arabia,tamachi,ARRQW FHD Android TV @@ -246,6 +260,7 @@ AT&T,U705AA,U705AA,U705AA ATEAM,A1010,A1010,A1010 ATEAM,A801,A801,A801 ATEC,APD3,APD3,APD3 +ATEC,ATEC GRANDE,ATEC_IWB,A8GC ATEL,A68EL,A68EL,A68EL ATID,AT908,AT908,AT908 ATID,AT908_EEA,AT908,AT908_EEA @@ -254,6 +269,8 @@ ATM (Brazil),IT-1001A,IT-1001A,IT-1001A ATM (Brazil),R5,R5,R5 ATM (Brazil),R5Plus,R5Plus,R5Plus ATM (Brazil),R5_Pro,R5_Pro,R5 Pro +ATMPC,IT_701A,IT_701A,IT_701A +ATMPC,IT_701A_EEA,IT_701A_EEA,IT_701A ATOL,Smart.Slim Plus,t50p,Smart_Slim_Plus ATOL,Smart_Prime,t150,Smart_Prime ATVIO,100011886BK,100011886BK,100011886BK @@ -310,6 +327,7 @@ AWOW,MID_1085_EEA,MID_1085_EEA,MID_1085_EEA AWOW,MID_1089IPS_EEA,MID_1089IPS_EEA,MID_1089IPS_EEA AWOW,UTBook,UTBook,UTBook AWOW,UTBook_EEA,UTBook_EEA,UTBook_EEA +AXEL,AX_PRO,AX_PRO,AX_PRO AXON,Evolution,Evolution,Evolution AXSTV,AXSTV130,SEI130PTS,AXSTV130 AXSTV,AXSTV530,SEI530PTS,AXSTV530 @@ -325,6 +343,7 @@ AZOM TECH,River1,River1,AZOM River 1 AZPEN,A1046G,A1046G,A1046G AZPEN,A1052,A1052,A1052 AZPEN,A1080,mid1032_mk_32,A1080 +AZPEN,A1080G,A1080G,A1080G AZPEN,A1083,A1083,A1083 AZPEN,A720,wing-inet,A720 AZPEN,A780,A780,A780 @@ -374,6 +393,7 @@ Acepad,A130,A130,A130 Acepad,A130-2023,A130-2023,A130-2023 Acepad,A140,A140,A140 Acepad,A145,A145,A145 +Acepad,A170,A170,A170 Acepad,AX1,AX1,AX1 Acer,,C6,Acer E320 Acer,,C6,Acer E320-orange @@ -401,6 +421,7 @@ Acer,A3-A20,acer_harley,A3-A20 Acer,A3-A20FHD,acer_harleyfhd,A3-A20FHD Acer,A3-A30,omega,A3-A30 Acer,A3-A40,acer_jetfirefhd,A3-A40 +Acer,ACER ALTOS EZA,AKREI13,ACER_ALTOS_EZA Acer,ACTAB1021_A,ACTAB1021_A,ACTAB1021_A Acer,ACTAB1022,ACTAB1022,ACTAB1022 Acer,ACTAB1024,ACTAB1024,ACTAB1024 @@ -431,6 +452,7 @@ Acer,Acer,waiawa,DIX51R4KU Acer,Acer Chromebook 11 (C740),paine_cheets,Acer Chromebook 11 (C740) Acer,Acer Chromebook R13,elm_cheets,Acer Chromebook R13 (CB5-312T) Acer,Acer Holo360,acer_c01,C01 +Acer,Acer Iconia T10-21M,Acer_Iconia_T10-21M,Acer_Iconia_T10-21M Acer,Acer One 10 T4-129L,AcerO10T4129L,Acer One 10 T4-129L Acer,Acer One 10 T4-129L,AcerOne10T4129LIx,Acer One 10 T4-129LIx Acer,Acer One 10 T4-129LI,AcerO10T412LI,Acer One 10 T4-129LI @@ -441,6 +463,7 @@ Acer,Acer One 8 T4-82L,AcerOne8T4-82L,Acer One 8 T4-82L Acer,Acer One 8 T4-82L,AcerOne8T4-82Lxi,Acer One 8 T4-82L Acer,Acer One 8 T4-82L,AcerOne8T482L,Acer One 8 T4-82L Acer,Acer One 8 T9-422L,AcerOne8T9-422L,Acer One 8 T9-422L +Acer,Acer education whiteboard,DT3K_F,DT3K_F Acer,Acer_A60,Acer_A60,A60 Acer,Acer_A60L,Acer_A60L,A60L Acer,Acer_A61L,Acer_A61L,A61L @@ -597,6 +620,7 @@ Acer,LiquidMT,a4,Liquid Metal Acer,M3-2200,da2,M3-2200 Acer,MWND1,MW1,MWND1 Acer,N3-2200,da2,N3-2200 +Acer,P11,P11,P11-11 Acer,Picasso,picasso,A501 Acer,Picasso,ventana,A500 Acer,Picasso,ventana,G100W @@ -651,6 +675,7 @@ Admiral Overseas Corporation,Fire,Fire,Fire Admiral Overseas Corporation,O7,O7,O7 Admiral Overseas Corporation,One,One,One Adonis,Adonis,seocho,Adonis 4K Android TV +Adreamer (Shenzhen),KidsPad10X,KidsPad10X,KidsPad10X Adreamer (Shenzhen),KidsPad_7,KidsPad_7,KidsPad_7 Adreamer (Shenzhen),LeoPad 10X,LeoPad_10X,LeoPad 10X Adreamer (Shenzhen),Libra PAD,Libra_PAD,Libra PAD @@ -708,6 +733,7 @@ Advan digital,TAB 8,ADVAN_TAB_8,8002 Advan digital,TAB Gallilea,ADVAN_TAB_Gallilea,8003 Advan digital,TAB VX,ADVAN_TAB_VX,1013 Advan digital,TAB_10,ADVAN_TAB_10,1010 +Advan digital,TAB_A8_PLUS,ADVAN_TAB_A8_PLUS,8004 Advan digital,X7 Max,X7_Max,7301 Advan digital,X7 Pro,ADVAN_7008,7008 Advan digital,X7 Pro,ADVAN_X7_Pro,X7 Pro @@ -796,6 +822,15 @@ Advantech,DLT-V7312AP,dlt_v7312,DLT-V7312AP Advantech,DLT-V7312AP+,dlt_v7312plus,DLT-V7312AP+ Aelion,i8,Aelion_i8,i8 Aeon Communication (IN),AE1020,AE1020,AE1020 +Aermoo,CM08,PT3_2,CM08 +Aermoo,DF10,M22PE,DF10 +Aermoo,DF10 Pro,M22G_2,DF10 Pro +Aermoo,PF10,M23HE_2,PF10 +Aermoo,PF20,ZN133SE,PF 20 +Aermoo,PF20 Pro,ZN133TE,PF20 Pro +Aermoo,RG Mini,ZN137E,RG Mini +Aermoo,RG10,F1_2,RG10 +Aermoo,RG10S,F1C_2,RG10S Affix,T737,AFFIX_T737,AFFIX T737 AfriOne,CYGNUS,CYGNUS,CYGNUS AfriOne,CYGNUSX,CYGNUSX,CYGNUSX @@ -835,11 +870,14 @@ Aiuto,AT1002,AT1002,AT1002 Aiuto,AT701,AT701,AT701 Aiuto,AT702,AT702,AT702 Aiwa,A81,AIWA_A81,A81 +Aiwa,A8_LTE,A8_LTE,A8_LTE +Aiwa,AIWA,hongkong,AIWA 4K GOOGLE TV Aiwa,AIWA,lavender,4K SMART TV Aiwa,AIWA,stanford,SMART TV Aiwa,AIWA,zhongshan,4K SMART TV Aiwa,AIWA 2K TV,shinagawa,AIWA 2K TV Aiwa,AIWA TV,SW6H,AIWA TV +Aiwa,AIWA TV,SW6H,AIWA UHD SMART TV Aiwa,AW790,AW790,AW790 Aiwa,AWM501,AWM501,AWM501 Aiwa,AWM509,AWM509,AWM509 @@ -886,6 +924,7 @@ Akai,FZ701,FZ701,FZ701 Akai,FZ702,FZ702,FZ702 Akai,FZ703,FZ703,FZ703 Akai,MD1063,MD1063,MD1063 +Akai,SP5504G,SP5504G,SP5504G Akari,AX-115ATV,DV8035,AX-115ATV Akari,AX-117ATV,DV8219,AX-117ATV Akino,IN-32SE9,shibuya,AkinoTV @@ -943,6 +982,7 @@ Aligator,S4090,S4090,S4090 Aligator,S5065,ALIGATORS5065,ALIGATOR S5065 Aligator,S5068,S5068,S5068 Aligator,S5710,S5710,S5710 +Alited,PA650,PA650,PA650 AllCall,AllCall_Madrid,AllCall_Madrid,AllCall_Madrid AllCall,AllCall_S1,AllCall_S1,AllCall_S1 AllCall,AllCall_S1_X,AllCall_S1_X,AllCall_S1_X @@ -1103,6 +1143,7 @@ AllView,Viva i701G,Viva_i701G,Viva_i701G AllView,Viva i701G,Viva_i701G,Viva_i701G_TM AllView,Viva i7G,Viva_i7G,Viva_i7G AllView,Viva_H701_LTE,Viva_H701_LTE,Viva_H701_LTE +AllView,X10_Soul_Lite,X10_Soul_Lite,X10_Soul_Lite AllView,X2 Soul Lite,X2_Soul_Lite,X2_Soul_Lite AllView,X2 Soul Lite,X2_Soul_Lite,X2_Soul_Lite_TM AllView,X2 Soul Mini,X2_Soul_Mini,X2_Soul_Mini @@ -1184,6 +1225,8 @@ Alldocube,iPlay_20,iPlay_20,iPlay_20 Alldocube,iPlay_30,T1012,iPlay_30 Alldocube,iPlay_40,T1020S,iPlay_40 Alldocube,iPlay_40_5G,T1016,iPlay40_5G +Alldocube,iPlay_50_Pro,T1030MAN,iPlay_50_Pro +Alldocube,iPlay_60,T1102T,iPlay_60 Alldocube,kPad,T1026,kPad Allducube,T1001,T1001,T1001 Allente,Allente 1,OnePlace2,Allente 1 @@ -1191,6 +1234,7 @@ Allente,Allente Streaming Hub,SEI700ALLG,Allente Streaming Hub Allfine,M721,86S,M721 Allfine,PC1038Q,fine10_Joy,PC1038Q Alliance,DTP9731,DTP9731,DTP9731 +Allnet,PrimeOne,PrimeOne,PrimeOne Allouette,PSY7020SKD,PSY7020SKD,PSY7020SKD Alpha,Alpha 43G7NUA,samseong,AI PONT Alpha,M8T,ikebukuro,AI PONT @@ -1296,6 +1340,8 @@ Andersson,TBQ10322,TBQ10322,TBQ10322 Andersson,TBQ8322,TBQ8322,TBQ8322 Andersson,TBQ_10321,TBQ_10321,TBQ_10321 Andersson,TBX10,TBX10,TBX10 +AngelLira,ALFP200,ALFP200,ALFP200 +AngelTech,E109GCM,E109GCM,E109GCM AngelTech,P80,P80,P80 Antel,DV8547,DV8547,DV8547 Anydata,,ASP320Q_GSM,ASP320Q_ANDi @@ -1380,8 +1426,10 @@ Apex,TM785CH,tm785ch,TM785CH Apex,U10,U10,U10 Apex,U10PRO,U10PRO,U10PRO Apex,Z4PRO,Z4PRO,Z4PRO +Apolosign,EM101A,EM101A,EM101A Apolosign,EM103A,EM103A,EM103A Apolosign,K109A,K109A,K109A +Apolosign,K109_Pro,K109_Pro,K109_Pro Apolosign,K709A,K709A,K709A Apolosign,NW1495T_ROW,NW1495T,NW1495T Apolosign,elcnw tablet,NW1495T,NW1495T_EEA @@ -1410,6 +1458,7 @@ Arcelik,Arcelik Google TV OLED,wanchai,Arcelik Google TV OLED Arcelik,Arcelik Google TV QLED,wanchai,Arcelik Google TV QLED Arcelik,Arcelik Google TV UHD+,wanchai,Arcelik Google TV UHD+ Arcelik,B55L 9682 5AS,arcelik_eu,arcelik_uhd_powermax_at +Arcelik,R4,R4,R4 Arcelik,Turkey,martin,Arcelik Android TV Archos,,A101S,ARCHOS 101G9 Archos,,A101S,Archos 101 Internet Tablet @@ -1859,6 +1908,7 @@ Aspera,ASPERA R9,R9,ASPERA_R9 Aspera,ASPERA_R10,ASPERA_R10,ASPERA_R10 Aspera,Aspera Swift,Aspera_Swift,Swift Aspera,Aspera_Nitro,Aspera_Nitro,Nitro +Aspera,Buzz,Buzz,Buzz Aspera,GEM,GEM,GEM Aspera,JAZZ,Jazz,Jazz Aspera,Jazz_2,Jazz_2,Jazz 2 @@ -1867,6 +1917,7 @@ Aspera,Wren,Wren,Wren Astak,NEOS,Wenu,NEOS Astro,Genesis_S8,Astro_Genesis_S8,Genesis_S8 Astro,Nova_Phab_M9,Nova_Phab_M9,Nova_Phab_M9 +Astro,sooka-TV-v1,sooka-TV_v1,sooka-TV-v1 Astro Queo,A712,A712,A712 Astro mobile,Smart _A1_Plus,Smart_A1_Plus,Smart A1 Plus AstroQueo,polaris_wifionly,polaris-wifionly,A912 @@ -1989,6 +2040,7 @@ Asus,ROG Phone 6 series,ASUS_AI2201,ASUS_AI2201_A Asus,ROG Phone 6 series,ASUS_AI2201,ASUS_AI2201_B Asus,ROG Phone 6 series,ASUS_AI2201,ASUS_AI2201_C Asus,ROG Phone 6 series,ASUS_AI2201,ASUS_AI2201_D +Asus,ROG Phone 6D Ultimate,ASUS_AI2203,ASUS_AI2203_C Asus,ROG Phone 6D Ultimate,ASUS_AI2203,ASUS_AI2203_D Asus,ROG Phone 6D series,ASUS_AI2203,ASUS_AI2203_B Asus,ROG Phone 7 series,ASUS_AI2205,ASUS_AI2205_A @@ -2255,6 +2307,7 @@ Asus,ZenWatch 3,swift,ASUS ZenWatch 3 Asus,Zenbo,ASUS_ZENBO,Zenbo Asus,Zenbo Qrobot,ASUS_ZENBO,Zenbo Asus,Zenfone 10,ASUS_AI2302,ASUS_AI2302 +Asus,Zenfone 11 Ultra,ASUS_AI2401,ASUS_AI2401_H Asus,Zenfone 8,ASUS_I006D,ASUS_I006D Asus,Zenfone 8,ASUS_I006D,ZS590KS Asus,Zenfone 8 / ASUS 8z,ASUS_I006D,ASUS_I006D @@ -2278,6 +2331,7 @@ Athesi,AT-E8T,AT-E8T,AT-E8T Athesi,Athesi AP5702,AP5702,AP5702 Athesi,Athesi AP5706,AP5706,Athesi_AP5706 Athesi,Athesi professional AP5705S,AP5705S,AP5705S +Athesi,E55,E55,E55 Athesi,E6A,E6A,E6A Athesi,RT101A,RT101A,RT101A9 Athesi,RT4500_EEA,RT4500,RT4500 @@ -2285,6 +2339,8 @@ Athesi,RT55_EEA,RT55,RT55 Athesi,RT80A,RT80A,RT80A9 Atozee,AT10,AT10,AT10 Atozee,AT10K,AT10K,AT10K +Atozee,AT11K,AT11K,AT11K +Atozee,AT12K,AT12K,AT12K Atozee,AT70K,AT70K,AT70K Atozee,AT70KS,AT70KS,AT70KS Atozee,AT70K_EEA,AT70K_EEA,AT70K_EEA @@ -2293,12 +2349,16 @@ Atozee,AT81K,AT81K,AT81K Atozee,CP20_MAX,CP20_MAX,CP20_MAX Atozee,CP20_PRO,CP20_PRO,CP20_PRO Atozee,CP30,CP30,CP30 +Atozee,P10,P10,P10 Atozee,P70W,P70W,P70W Atozee,P80W,P80W,P80W Atozee,YQ10S_Gold,YQ10S_Gold,YQ10S_Gold Atozee,YQ10S_MAX,YQ10S_MAX,YQ10S_MAX +Atozee,YQ10S_PRO,YQ10S_PRO,YQ10S_PRO +Atozee,ZB10S,ZB10S,ZB10S Atria Convergence Technologies,ACT,B860H_V1,B860H Attila,Magic_1,Magic_1,Magic_1 +Attila,WTATTRW2,WTATTRW2,WTATTRW2 Auchan,AUCHAN,Q7T9INK,Q7T9INK Auchan,LI12210IN,LI12210IN,LI12210IN Auchan,LI902T9IN,LI902T9IN,LI902T9IN @@ -2377,6 +2437,7 @@ Avaya,Vantage,K175,Avaya Vantage Avaya,Vantage,K175,K175 Avaya,Vantage,Vantage,Avaya Vantage Avaya,Vantage,Vantage,K165 +AvidPad,A30PRO,A30PRO,A30PRO Avion,Avion A10,Avion_A10,Avion A10 Avion,Avion A10 Pro,Avion_A10_Pro,Avion A10 Pro Avion,m2,Avion_M2,M2 @@ -2398,6 +2459,7 @@ Avvio,CHIVAS 55,CHIVAS_55,CHIVAS_55 Avvio,Mint_M353,Mint_M353,Mint_M353 Avvio,Q503,Avvio_Q503,Avvio_Q503 Axen,AXEN 2K Google TV,capitolhill,AXEN 2K Google TV +Axen,AXEN 4K Google TV,keoneae,AXEN 4K Google TV Axioo,Axioo AX4,Axioo_AX4,Axioo_AX4 Axioo,MH,MH,MH Axioo,PICOpad-7H,PICOpad-7H,PICOpad-7H @@ -2414,6 +2476,7 @@ Azeyou,AT1012E,AT1012E,AT1012E Azeyou,AT1012U,AT1012U,AT1012U Azeyou,AT1014,AT1014,AT1014 Azeyou,AT1014U,AT1014U,AT1014U +Azeyou,AT1016BBK,AT1016BBK,T50 Azeyou,AT1031E,AT1031E,AT1031E Azeyou,AT1031U,AT1031U,AT1031U Azeyou,AT701E,AT701E,AT701E @@ -2627,12 +2690,14 @@ BMAX,I11,I11,I11 BMAX,I11_EEA,I11_EEA,I11_EEA BMAX,I11_Plus,I11_Plus,I11_Plus BMAX,I11_Plus_EEA,I11_Plus_EEA,I11_Plus_EEA +BMAX,I11_Power,I11_Power,I11_Power BMAX,I9_Plus,I9_Plus_WIFI_EEA,I9_Plus BMAX,I9_Plus,I9_Plus_WIFI_ROW,I9_Plus BMAX,I9_Plus_EEA,I9_Plus_EEA,I9_Plus_EEA BMAX,I9_Plus_ROW,I9_Plus_ROW,I9_Plus_ROW BMAX,I9_Plus_WLAN,I9_Plus_WLAN,I9_Plus BMAX,I9_Plus_WLAN_EEA,I9_Plus_WLAN_EEA,I9_Plus +BMAX,I9_Plus_Wlanonly_EEA,I9_Plus_Wlanonly_EEA,I9_Plus BMPRO,BMPRO7DI,BMPRO7DI,BMPRO7DI BMXC,BM108,BM108,BM108 BMXC,JR-M802,JR-M802,JR-M802 @@ -2799,6 +2864,7 @@ BMobile,BL54Pro,Bmobile_BL54Pro,BL54Pro BMobile,BL54Pro_MV12,Bmobile_BL54Pro,BL54Pro BMobile,BL54_PRO_TG05,Bmobile_BL54_PRO_TG05,BL54_PRO BMobile,BL55,Bmobile_BL55,BMOBILE_BL55 +BMobile,BL55,Bmobile_BL55_TG,BL55_TG BMobile,BL55_PRO_MV12,Bmobile_BL55_PRO_MV12,BL55_PRO BMobile,BL60,Bmobile_BL60,BL60 BMobile,BL60,Bmobile_BL60_TG05B,BL60_TG05B @@ -2839,6 +2905,7 @@ BMobile,FUN 4,Bmobile_FUN_4_2018,FUN 4 2018 BMobile,Nobu A55 Pro,Azumi_NA55_Pro,NOBU A55 PRO BMobile,Speed 5,Bmobile_SPEED5,Speed 5 BMobile,T70,Bmobile_T70,Bmobile_T70 +BMobile,Ultra,Bmobile_ULTRA,ULTRA BMobile,Ultra,Bmobile_ULTRA_TG07,ULTRA BMobile,X10,Bmobile_X10_MV03,X10 BMobile,X11,Bmobile_X11,Bmobile X11 @@ -3044,6 +3111,7 @@ BRUHM,BTF-43SG,ikebukuro,AI PONT BRUHM,BTF-75TG,samseong,AI PONT BTC Mobile,S5548,S5548,S5548 BTC Mobile,Touch,Touch,Touch +BUFF,X9 pro,X-9_LTEVII_PRO,X9 pro BULSATCOM,UPD-BJ00R,UPD-BJ00R,UPD-BJ00R BULSATCOM,b-box,HP44H,b-box BVS (AR),BVS 4K 0TT 01,SFO,BVS 4K OTT 01 @@ -3133,6 +3201,7 @@ Beeline,Tab,Beeline_Tab,Beeline Tab Beeline,Tab 2,Tab_2,Tab_2 Beeline,Tab IS,Beeline_Tab_IS,Beeline_Tab_IS Beeline,Tab_Fast,Beeline_Tab_Fast,Beeline_Tab_Fast +Beghelli,SLV SMARTPHONE 55,SLV_SMARTPHONE_55,SLV_SMARTPHONE_55 Beko,Beko Android TV,kunyang,Beko Android TV Beko,Beko Android TV,shinagawa,Beko Android TV Beko,Beko Android TV,sinchon,Beko Android TV @@ -3141,6 +3210,7 @@ Beko,Beko Google TV OLED,wanchai,Beko Google TV OLED Beko,Beko Google TV QLED,wanchai,Beko Google TV QLED Beko,Beko Google TV UHD+,wanchai,Beko Google TV UHD+ Beko,Beko UHD Android TV,kunyang,Beko Android UHD TV +Beko,R4,R4,R4 Beko,Turkey,martin,Beko Android TV Bell Canada,Bell Streamer,sti6130d324,Bell Streamer Bell Canada,FibeTV,vip7802_bell,FibeTV @@ -3183,6 +3253,7 @@ BenQ,PT2200,PT2200,PT2200 BenQ,Q Stick,S905Y2,QS01 BenQ,QS01,S905Y2,QS01 BenQ,QS02,YUL,QS02 +BenQ,RE04_series,RE04_series,RE04_series BenQ,RM6504,RM6504,RM6504 BenQ,RM7504,RM7504,RM7504 BenQ,RM8604,RM8604,RM8604 @@ -3372,6 +3443,7 @@ Blackview,A30-RU,A30-RU,A30-RU Blackview,A5,A5,A5 Blackview,A50,A50,A50 Blackview,A52,A52,A52 +Blackview,A52 Pro,A52Pro,A52 Pro Blackview,A53,A53,A53 Blackview,A53 Pro,A53_Pro,A53 Pro Blackview,A55,A55,A55 @@ -3401,10 +3473,14 @@ Blackview,Active 6,Active6_RU,Active 6 Blackview,Active 8 Pro,Active8Pro,Active 8 Pro Blackview,BL5000,BL5000,BL5000 Blackview,BL6000Pro,BL6000Pro,BL6000Pro +Blackview,BL8000,BL8000,BL8000 Blackview,BL8800,BL8800,BL8800 Blackview,BL8800Pro,BL8800Pro,BL8800Pro +Blackview,BL9000,BL9000,BL9000 +Blackview,BL9000 Pro,BL9000_Pro,BL9000 Pro Blackview,BV4000,BV4000,BV4000 Blackview,BV4000Pro_RU,BV4000Pro,BV4000Pro-RU +Blackview,BV4800,BV4800,BV4800 Blackview,BV4900,BV4900,BV4900 Blackview,BV4900Pro,BV4900Pro,BV4900Pro Blackview,BV4900s,BV4900s,BV4900s @@ -3413,6 +3489,7 @@ Blackview,BV5100Pro,BV5100Pro,BV5100Pro Blackview,BV5200,BV5200,BV5200 Blackview,BV5200 Pro,BV5200_Pro,BV5200 Pro Blackview,BV5300,BV5300,BV5300 +Blackview,BV5300 Plus,BV5300_Plus,BV5300 Plus Blackview,BV5300 Pro,BV5300_Pro,BV5300 Pro Blackview,BV5500,BV5500,BV5500 Blackview,BV5500,BV5500S,BV5500 @@ -3452,6 +3529,7 @@ Blackview,BV8000 Pro,BV8000Pro,BV8000Pro Blackview,BV8000Pro_RU,BV8000Pro_RU,BV8000Pro_RU Blackview,BV8800,BV8800,BV8800 Blackview,BV8900,BV8900,BV8900 +Blackview,BV8900 Pro,BV8900_Pro,BV8900 Pro Blackview,BV9000,BV9000,BV9000 Blackview,BV9000 Pro,BV9000Pro,BV9000Pro Blackview,BV9000 Pro-F,BV9000Pro-F,BV9000Pro-F @@ -3461,6 +3539,7 @@ Blackview,BV9000-RU,BV9000Pro-RU,BV9000Pro-RU Blackview,BV9100,BV9100,BV9100 Blackview,BV9200,BV9200,BV9200 Blackview,BV9300,BV9300,BV9300 +Blackview,BV9300 Pro,BV9300_Pro,BV9300 Pro Blackview,BV9600,BV9600,BV9600 Blackview,BV9600E,BV9600E,BV9600E Blackview,BV9600Pro,Blackview,BV9600Pro @@ -3483,9 +3562,13 @@ Blackview,Blackview BV9900E,BV9900E,BV9900E Blackview,Blackview BV9900Pro,BV9900Pro,BV9900Pro Blackview,Blackview P2,P2,P2 Blackview,Business_4_G1,Business_4_G1,Business_4_G1 +Blackview,COLOR 8,COLOR_8,COLOR 8 Blackview,E7S,E7s,E7s +Blackview,HERO 10,HERO10,HERO 10 Blackview,MAX1,MAX1,MAX1 +Blackview,MEGA 1,MEGA_1,MEGA 1 Blackview,N6000,N6000,N6000 +Blackview,N6000 SE,N6000_SE,N6000 SE Blackview,P10000 Pro,P10000_Pro,P10000 Pro Blackview,P10000 Pro,P10000_Pro,P10000_Pro Blackview,P2 Lite,P2Lite,P2Lite @@ -3496,23 +3579,32 @@ Blackview,Pad8_RU,Pad8_RU,Pad8 Blackview,S6,S6,S6 Blackview,S8,S8,S8 Blackview,S8_RU,S8,S8 +Blackview,SHARK 8,Shark8,SHARK 8 Blackview,SOLID-4G3,SOLID_4G3,SOLID_4G3 Blackview,SOLID_4_G2,SOLID_4_G2,SOLID 4 G2 +Blackview,Shark 8,Shark8,SHARK 8 Blackview,Tab 10,Tab_10,Tab 10 Blackview,Tab 10 Pro,Tab_10_Pro,Tab 10 Pro Blackview,Tab 10 WiFi,Tab10WiFi,Tab 10 WiFi Blackview,Tab 13,Tab_13,Tab 13 Blackview,Tab 13 Pro,Tab13_Pro,Tab 13 Pro +Blackview,Tab 16 Pro,Tab16_Pro,Tab 16 Pro +Blackview,Tab 16_Pro,Tab16_Pro,Tab 16 Pro +Blackview,Tab 18,Tab18,Tab 18 Blackview,Tab 3 Kids,Tab3Kids,Tab 3 Kids +Blackview,Tab 50 Kids,Tab50Kids_TUR,Tab 50 Kids Blackview,Tab 50 WiFi,Tab50WiFi,Tab 50 WiFi Blackview,Tab 60,Tab60,Tab 60 +Blackview,Tab 60 Kids,Tab60Kids,Tab 60 Kids Blackview,Tab 60 Kids,Tab60Kids_EEA,Tab 60 Kids +Blackview,Tab 60 Kids,Tab60Kids_RU,Tab 60 Kids Blackview,Tab 70 WiFi,Tab70WiFi,Tab 70 WiFi Blackview,Tab 8 WiFi,Tab8_WiFi_EEA,Tab 8 WiFi Blackview,Tab 8 WiFi,Tab8_WiFi_ROW,Tab 8 WiFi Blackview,Tab 80,Tab80,Tab 80 Blackview,Tab 80,Tab80_EEA,Tab 80 Blackview,Tab 80,Tab80_RU,Tab 80 +Blackview,Tab 9 WiFi,Tab_9_WiFi,Tab 9 WiFi Blackview,Tab10,Tab_10,Tab 10 Blackview,Tab11SE_EEA,Tab11SE_EEA,Tab 11 SE Blackview,Tab11SE_NEU,Tab11SE_NEU,Tab 11 SE @@ -3568,6 +3660,8 @@ Blackview,Tab_7_EEA,Tab_7_EEA,Tab 7 Blackview,Tab_7_NEU,Tab_7_NEU,Tab 7 Blackview,Tab_7_WiFi_EEA,Tab_7_WiFi_EEA,Tab 7 WiFi Blackview,Tab_7_WiFi_NEU,Tab_7_WiFi_NEU,Tab 7 WiFi +Blackview,Tab_90_WiFi_NEU,Tab_90_WiFi,Tab 90 WiFi +Blackview,WAVE 6C,WAVE6C,WAVE 6C Blaupunkt,A-STREAM,GMP,A-STREAM Blaupunkt,"AUSTRALIA, EU, JAPAN, MIDDLE EAST",martin,BLAUPUNKT Android Monitor Blaupunkt,"AUSTRALIA, MIDDLE EAST, JAPAN",guandu,BLAUPUNKT 4K Android TV @@ -3584,6 +3678,7 @@ Blaupunkt,BLAUPUNKT,hongkong,4K SMART TV Blaupunkt,BLAUPUNKT,hongkong,BLAUPUNKT 4K TV Blaupunkt,BLAUPUNKT,hongkong,BLAUPUNKT GOOGLE TV 4K Blaupunkt,BLAUPUNKT,lavender,BLAUPUNKT 4K TV +Blaupunkt,BLAUPUNKT,mountbaker,BLAUPUNKT 2K TV Blaupunkt,BLAUPUNKT,stanford,CSV2K Blaupunkt,BLAUPUNKT,zhongshan,CSV4K Blaupunkt,BLAUPUNKT2K,nippori,BP 2K Android TV @@ -3675,6 +3770,7 @@ Blu,B110DL,B110DL,B110DL Blu,B130DL,B130DL,B130DL Blu,B131DL,B130DL,B131DL Blu,B140DL,B140DL,B140DL +Blu,B160V,B160V,B160V Blu,B3,B301,B3 Blu,BLU,G0430WW,G71 Blu,BLU Dash XL,Dash_XL,Dash XL @@ -3752,6 +3848,7 @@ Blu,C6x,C090P,C6x Blu,C7,C250EQ,C7 Blu,C7 MAX,C0220,C7 MAX Blu,C7x,C290EQ,C7x +Blu,C9,C0230,C9 Blu,D10,D10,D10 Blu,D500,D500,D500 Blu,D510,D510,D510 @@ -3777,6 +3874,7 @@ Blu,Dash XL,Dash_XL,Dash XL Blu,Dash XL,Dash_XL,Studio M5 Plus Blu,Dash_L3,Dash_L3,Dash L3 Blu,E100,E_100,E100 +Blu,E15,E0010,E15 Blu,E20,E20,E20 Blu,ENERGY XL,BLU_ENERGY_XL,ENERGY XL Blu,ENERGY DIAMOND,BLU_ENERGY_DIAMOND,BLU ENERGY DIAMOND @@ -3790,6 +3888,7 @@ Blu,F91 5G,F0030UU,F91 5G Blu,G0290WW,G0290WW,G80 Blu,G33,G0890,G33 Blu,G33,G0892,G33 +Blu,G33,G0892_GMOB,G33 Blu,G33,G0892_MXT,G33 Blu,G33,G0892_SP,G33 Blu,G33,G0892_SYN,G33 @@ -3870,6 +3969,7 @@ Blu,Grand_M2_LTE,G0050,Grand M2 LTE Blu,Grand_X,Grand_X,Grand X Blu,J10L,J0140,J10L Blu,J10L,J0150,J10L +Blu,J5,J0210,J5 Blu,J6L,J0110,J6L Blu,J6S,J210EQ,J6S Blu,J7,J0000LL_ATT_MX,J7 @@ -3878,6 +3978,7 @@ Blu,J9L,J0080WW,J9L Blu,J9L,J0082WW,J9L Blu,J9L,J0090WW,J9L Blu,J9L,J0092WW,J9L +Blu,K10,K0110,K10 Blu,LIFE ONE X,BLU_LIFE_ONE_X,BLU LIFE ONE X Blu,LIFE ONE X,Life_One_X,Life One X Blu,LIFE ONE X2,Life_One_X2,Life One X2 @@ -3891,9 +3992,14 @@ Blu,M10L,M0190WW,M10L Blu,M10L PLUS,M0223,M10L PLUS Blu,M10L PLUS,M0223_EX,M10L PLUS Blu,M10L PLUS,M0223_ND,M10L PLUS +Blu,M10L PLUS,M0224,M10L PLUS Blu,M10L PLUS,M0224_ND,M10L PLUS Blu,M10L Pro,M0214_ND,M10L Pro +Blu,M10L Pro,M0215,M10L Pro +Blu,M10L Pro,M0215_MXT,M10L Pro Blu,M10L Pro,M0215_ND,M10L Pro +Blu,M10L Pro,M0215_NDSK,M10L Pro +Blu,M10L Pro,M0215_SYN,M10L Pro Blu,M6,M0030TT,M6 Blu,M6,M030P,M6 Blu,M6 2021,M0080WW,M6 2021 @@ -4032,6 +4138,7 @@ Blu,VIVO VI+,V0310WW,Vivo XI PLUS Blu,VIVO VI+,V0310WW,Vivo XI+ Blu,VIVO XI,V0330WW,Vivo XI Blu,VIVO XL,BLU_VIVO_XL,VIVO XL +Blu,View 5 Pro,B170D,B170D Blu,Vivo 12 Pro,V0670LL,Vivo 12 Pro Blu,Vivo 5 Mini,Vivo_5_Mini,Vivo 5 Mini Blu,Vivo 8,V0150UU,Vivo 8 @@ -4084,9 +4191,11 @@ Bluebird,EK430,EK430,EK430 Bluebird,HF450,HF450,HF450 Bluebird,HF550,HF550,HF550 Bluebird,HF550,HF550,HF550_RU +Bluebird,HF550X,EF550,HF550x Bluebird,RP350,RP350,RP350 Bluebird,RT080,RT080,RT080 Bluebird,RT103,RT103,RT103 +Bluebird,S20,S20,S20 Bluebird,S50,S50,S50 Bluebird,S70,S70,S70 Bluebird,SF550,SF550,SF550 @@ -4243,19 +4352,16 @@ CAIXUN,Canada,yeongdeungpo,AiPlus4K CAIXUN,Columbia,marina,Apollo Premium4K TV CAIXUN,Columbia,patrick,Aiplus4K CAIXUN,Dreamstar 2K SMART TV,nagata,Dreamstar 2K SMART TV +CAIXUN,Dreamstar 4K SMART TV,marina,Dreamstar 4K SMART TV CAIXUN,EXPRESS,marina,Apollo Premium4K TV -CAIXUN,Europe,marina,Fobem 4K SMART TV CAIXUN,Europe,martin,Caixun Android TV CAIXUN,Europe,martin,SE 2K Android Monitor CAIXUN,Europe,martin,Smarttech Android Monitor -CAIXUN,Europe,nagata,Fobem 2K SMART TV CAIXUN,Korea,marina,DWsummus 4K SMART TV CAIXUN,MAXWELL SMART TV,marina,MAXWELL SMART TV CAIXUN,MAXWELL SMART TV,nagata,MAXWELL SMART TV CAIXUN,Malaysia,yeongdeungpo,AiPlus4KMY CAIXUN,Mexico,yeongdeungpo,AiPlus4K -CAIXUN,Newal 2K SMART TV,nagata,Newal 2K SMART TV -CAIXUN,Newal 4K SMART TV,marina,Newal 4K SMART TV CAIXUN,Sgamer,cottongreen,Sgamer CAIXUN,South of America,marina,Apollo Pro4K TV CAIXUN,South of America,martin,AiPlus2K @@ -4291,6 +4397,8 @@ CG Mobile,OMEGA 3,OMEGA_3,OMEGA 3 CG Mobile,OMEGA 8,CG_Omega_8,Omega 8 CG Mobile,Omega6,OMEGA6,CG_OMEGA6 CGV (France),Ultimate T8,Ultimate_T8,CGV_Ultimate T8 +CHAINWAY,C5_EEA,C5,C5 +CHAINWAY,C5_GL,C5,C5 CHAINWAY,C60,C60,C60 CHAINWAY,C6000,C6000,C6000 CHAINWAY,C61,C61,C61 @@ -4352,13 +4460,17 @@ CLIO,Zion_5,Zion_5,Zion_5 CLOUD_AiR-WiFi,ATab-1,ATab-1,CAW21T101 CMCC,M811,m811,M811 CMCC,M811,m811hk,M811 +COCOMM,COCOMM F900B,F900BN0101,F900B COCOMM,ENOS,ENOS,ENOS COCOMM,F900,F900N0101,F900 COCOMM,F910B0101,F910B0101,F910 COEX,COEX 2K Smart TV,sunnyvale,COEX 2K Smart TV COEX,COEX 4K Smart TV,SW6H,COEX 4K Smart TV COEX,COEX 4K Smart TV FF,SW6H,COEX 4K Smart TV FF +COLORROOM,C3_Pro_ROW,C3_Pro_ROW,C3_Pro +COLORROOM,C5,C5,C5 COLORROOM,K12,K12,K12 +COMBUSTECH,COMBUSTECH-IFPD,rk3588_t,COMBUS_IB COMPUMAX,BLUEPAD10,BLUEPAD10,BLUEPAD10 COMPUMAX,BlueS10,COMPUMAX,BlueS10 COMTECO,DV8535,DV8535-KBC,DV8535 @@ -4368,6 +4480,8 @@ CONSUNG,CS10L_PRO,CS10L_PRO,CS10L_PRO CONVERGE,T7045PS,T7045PS,T7045PS CONVERGE,T8045PS,T8045PS,T8045PS COOKIE,YS-CK0001,YS-CK0001,YS-CK0001 +COOLFAN,C107,C107,C107 +COOLFAN,C107_EEA,C107,C107 COOLFAN,OC106,OC106,OC106 COOLFAN,OC106,OC106_EEA,OC106 COOP,MARTE,MARTE,MARTE @@ -4418,6 +4532,7 @@ CRONY,Smart TV,longshan,AI PONT CROWN MUSTANG,Argentina,martin,Crown Mustang 2K Android TV CROWN MUSTANG,Argentina,patrick,Crown Mustang 4K Android TV CTOUCH,CTOUCH Droid OPS Module,Droid_OPS_Module,UGE013AM +CVTE,CVTE SA12,rk3588_t,SA12 series CVTE,edu_v2,rk3588_t,edu_v2 CWELL,M10,M10,CWELL M10 CWOWDEFU,C10G,C10G,C10G @@ -4497,6 +4612,7 @@ Captiva,Pad 10 3G pLUS,Pad_10_3G_Plus,Captiva Pad 10 3G Plus Carbon Mobile,Carbon 1 Mark II,C1M2BD_R2,Carbon 1 Mark II Carbon Mobile,Carbon Mobile,C1M2BD_R1,C1M2BD_R1 CarePad,C101,C101,C101 +Carpe_Iter,Adventure Pad,CIAP1,CIAP-01EU Carrefour,CT1000,Carrefour,CT1000 Carrefour,CT1020W,M1010FP,CT1020W Carrefour,CT1050,TVE9603,TVE9603I @@ -4539,6 +4655,8 @@ Casper,TA80CA2,TA80CA2_1,TA80CA2 Casper,VIA A2,CASPER_VIA_A2,CASPER_VIA_A2 Casper,VIA A3 Plus,VIA_A3_Plus,VIA_A3_Plus Casper,VIA A4,VIA_A4,VIA A4 +Casper,VIA A40,VIA_A40,VIA A40 +Casper,VIA A40,VIA_M40,VIA M40 Casper,VIA F30,VIA_F30,VIA F30 Casper,VIA F30 Plus,VIA_F30_Plus,VIA F30 Plus Casper,VIA G1,CASPER_VIA_G1,CASPER_VIA_G1 @@ -4580,6 +4698,7 @@ Casper,VIA_S30_0,VIA_S30_0,VIA_S30_0 Casper,VIA_S40,VIA_S40,VIA S40 Casper,VIA_S48_0,VIA_S48_0,VIA_S48_0 Casper,VIA_T41,VIA_T41,VIA_T41 +Casper,VIA_X40,VIA_X40,VIA_X40 Cat,B15,TOUGH,B15 Cat,B15Q,B15Q,B15Q Cat,B15Q,CatB15Q,B15Q @@ -4715,6 +4834,7 @@ CenturyLink,PureTV,ctl_iptv_mrvl,S60CLI Challenger,4K Smart TV,gangbyeon,Challenger 4K AI Smart TV Challenger,Android TV,R1,ATV R1 Challenger,Android TV,R2,ATV R2 +Challenger,CHALLENGER,lavender,4K SMART TV Challenger,R3,R3,R3 Challenger,R4,R4,R4 Challenger,Smart TV,osaki,2K AI Smart TV @@ -4934,6 +5054,9 @@ Cidea,CM82,CM82,CM82 Cidea,CM826,CM826,CM826 Cidea,CM90,CM90,CM90 Cidea,CM91_EEA,CM91_EEA,CM91_EEA +Cidea,P1100,P1100,P1100 +Cidea,P1150,P1150,P1150 +CignalPlayTV,CIGSEI100,CIGSEI100,CIGSEI100 Ciontek,CS20,CS20,CS20 Ciontek,CS30,CS30,CS30 Ciontek,CS50,CS50,CS50 @@ -4948,6 +5071,7 @@ Cipherlab,RS30,Mercury,CipherLab RS30 Cipherlab,RS31,RS31,RS31 Cipherlab,RS35,RS35,RS35 Cipherlab,RS36,RS36,RS36 +Cipherlab,RS38,RS38,RS38 Cipherlab,RS51_HS,RS51_HS,RS51_HS Cipherlab,Saturn,RS50,RS50 Cisco,CP-860,860,CP-860 @@ -4982,6 +5106,8 @@ Classpro,CGS55UHD,samseong,AI PONT Classpro,EGS42FHD,ikebukuro,AI PONT Classpro,G7N,redwood,AI PONT Classpro,Smart TV,longshan,AI PONT +ClearTouch,NEXT_TDED,rk3588_t,CTI_NEXT_TDED_S10 +ClearTouch,UX Pro Edge,rk3588_t,UX_Pro_Edge_Display ClearTouch,six_zero_XXAplus,rk3588_t,six_zero_XXAplus Clementoni,CLEMPAD_2018,CLEMPAD_2018,CLEMPAD_2018 Clementoni,Clempad 4.4 Basic Special,Clempad2_special,Clempad2_special @@ -5055,6 +5181,7 @@ CloudFone,Thrill View,Thrill_View,Thrill View CloudFone,ThrillBoost2Plus,ThrillBoost2Plus,Thrill Boost 2 Plus CloudMinds,A1-901,A1-901,A1-901 CloudMinds,OTTTAB2,OTTTAB2,OTTTAB2 +Cloud_Mobile,Stratus_C8,Stratus_C8,Stratus C8 Clout,Hind 5.1,Hind_5_1,Hind 5.1 Clout,X425 Shavit,X425_Shavit,X425 Shavit Clout,X428 Astute,X428_Astute,X428 Astute @@ -5126,8 +5253,13 @@ Compaq,CT311T,CT311T,CT311T Compaq,India/Srilanka/Bangladesh/GCC,guandu,COMPAQ ANDROID 4K TV Compaq,India/Srilanka/Bangladesh/GCC,martin,COMPAQ ANDROID 2K TV Compaq,Q5,Q5,Q5 +Compaq,Q5 PRO,Q5_PRO,Q5_PRO Compaq,Q6,Q6,Q6 +Compaq,QT10,Compaq_QT10,QT10 Compaq,QTAB,QTAB,QTAB +Compaq,QTAB10_1,QTAB10_1,QTAB10.1 +Compaq,QTAB10_1,QTAB10_1,QTAB10_1 +Compaq,QTAB8,QTAB8,QTAB8 Compaq,QTab10.1_LTE,QTab10_LTE,QTab10_LTE Compaq,QTab8,QTab8,QTab8 Compaq,QTab8_LTE,QTab8_LTE,QTab8_LTE @@ -5302,15 +5434,20 @@ Contixo, K101A,K101A,K101A Contixo,CONTIXO_V8,CONTIXO-V8,V8 Contixo,K101,K101,K101 Contixo,K102,K102,K102 +Contixo,K102_A,K102_A,K102_A Contixo,K103,K103,K103 +Contixo,K103A,K103A,K103A Contixo,K4,K4,K4 +Contixo,K80,K80,K80 Contixo,LA703R,LA703R,LA703R Contixo,V10,V10,V10 Contixo,V10A,V10A,V10A Contixo,V10E,V10E,V10E +Contixo,V10M,V10M,V10M Contixo,V10S,V10S,V10S Contixo,V10X,V10X,V10X Contixo,V11,V11,V11 +Contixo,V8,V8_A,V8 Contixo,V80,V80,V80 Contixo,V8S,V8S,V8S Contixo,V8X,V8X,V8X @@ -5457,6 +5594,7 @@ Coolpad,COOLPAD_C202,COOLPAD_C202,COOLPAD C202 Coolpad,COOLPAD_C203,COOLPAD_C203,COOLPAD C203 Coolpad,CP12,CP12,CP12 Coolpad,CP12p_S0,CP12p,CP12p +Coolpad,CP12s,CP12s,CP12s Coolpad,CP3503L,CP3503L,CP3503L Coolpad,CP3504L,CP3504L,CP3504L Coolpad,CP5108,msm7627a_a8_5108_new,Coolpad 5108 @@ -5484,6 +5622,7 @@ Coolpad,Cool 12A,2042,coolpad Cool 12A Coolpad,Cool 12A,Coolpad_2042_U0,2042 Coolpad,Cool 20,k69v1_64,CP03 Coolpad,Cool 20 pro,CP05,CP05 +Coolpad,Cool 20s 5G,CP07,CP07 Coolpad,Cool C1,cool_c1,C106 Coolpad,Cool C1,cool_c1,C106-6 Coolpad,Cool C1,cool_c1,C106-7 @@ -5567,6 +5706,7 @@ Coolpad,Y91-921,Y91,Coolpad Y91-921 Coolpad,Y92-9,Y92-9,Coolpad Y92-9 Coolpad,coolpad 5651,CP12p,CP12p Coolpad,coolpad COOL 20,k69v1_64,CP03 +Coolpad,coolpad COOL 30i,CP12Q,CP12Q Coolpad,coolpad N7 Air,2021,2021 Coolpad,coolpad N7 Plus,coolpad_N7_Plus,2032 Coolpad,cp3648A,cp3648a,cp3648A @@ -5671,6 +5811,7 @@ Ctroniq,SNOOK-X10,4G_TABLET,SNOOK-X10 Ctroniq,SNOOK-X10,SNOOK-X10,SNOOK-X10 Ctroniq,SNOOK-X75,SNOOK-X75,SNOOK-X75 Ctroniq,SNOOK-X80,SNOOK-X80,SNOOK-X80 +Cubot,A1_EEA,A1,A1 Cubot,C20,C20,C20 Cubot,C30,C30,C30 Cubot,CUBOT CHEETAH 2,CUBOT_CHEETAH_2,CUBOT CHEETAH 2 @@ -5706,6 +5847,7 @@ Cubot,KINGKONG MINI2,KINGKONG_MINI2,KINGKONG MINI2 Cubot,KINGKONG MINI2 Pro,KINGKONG_MINI2_Pro,KINGKONG MINI2 Pro Cubot,KINGKONG MINI2 Pro,KINGKONG_MINI2_Pro,KINGKONG_MINI2_Pro Cubot,KINGKONG STAR,KINGKONG_STAR,KINGKONG STAR +Cubot,KINGKONG X,KINGKONG_X,KINGKONG X Cubot,KINGKONG_MINI,KINGKONG_MINI,KINGKONG_MINI Cubot,KING_KONG_3,KING_KONG_3,KING_KONG_3 Cubot,MANITO,CUBOT_MANITO,CUBOT_MANITO @@ -5751,6 +5893,7 @@ Cubot,X30,X30,X30 Cubot,X30P,X30P,X30P Cubot,X50,X50,X50 Cubot,X70,X70,X70 +Cubot,X90,X90,X90 Cubot,note_9,NOTE_9,NOTE 9 Custom,Ares,Ares,Ares Custom,K-Ranger,K-Ranger,K-Ranger @@ -5773,6 +5916,7 @@ Cyrus,CS45XA,CS45XA,CS45XA Cyrus,CS45XA,CS45XA2,CS45XA Cyrus,CS45XA_EEA,CS45XA2,CS45XA_EEA Cyrus,CS45XA_EEA,CS45XA_EEA,CS45XA_EEA +Cyrus,ORSY_Controller,ORSY_Controller,ORSY_Controller D-Tech,D5L,D5-L,D5-L D-Tech,D5L,D5L,D5L D-Tech,D5S,D5S,D5S @@ -5804,6 +5948,8 @@ DEED,DC-WT15,DC-WT15,DC-WT15 DEPLAY,BS101_EEA,BS101_EEA,BS101_EEA DEPLAY,BS703_EEA,BS703_EEA,BS703_EEA DEPLAY,BS801,BS801_EEA,BS801 +DEPLAY,E108GCM,E108GCM,E108GCM +DEWSOD,C9,C9,C9 DEXP,A.350,A350,A350 DEXP,A150,A150,A150 DEXP,A160,A160,A160 @@ -6003,18 +6149,23 @@ DGTEC,Dg_1524,Dg_1524,Dg_1524 DIADEM,CUTE_5,CUTE_5,CUTE 5 DIALN,G10,G10,G10 DIALN,G65,G65,G65 +DIALN,G68,G68,G68 +DIALN,NEO2024,NEO2024,NEO2024 +DIALN,NOVA2024,NOVA2024,NOVA2024 DIALN,Neo,Neo,Neo DIALN,Neo,NeoA,Neo DIALN,Nova,Nova,Nova DIALN,Nova,NovaA,Nova DIALN,S10,S10,S10 DIALN,S8,S8,S8 +DIALN,X10 Pulse,X10_Pulse,X10 Pulse DIALN,X10G,X10G,X10G DIALN,X10ULTRA,X10ULTRA,X10ULTRA DIALN,X62,X62,X62 DIALN,X62,X62A,X62 DIALN,X62,X62B,X62 DIALN,X62,X62C,X62 +DIALN,X62S,X62S,X62S DIALN,X65,X65,X65 DIALN,X65,X65A,X65 DIALN,X65,X65B,X65 @@ -6024,6 +6175,7 @@ DIALN,X8PRO,X8PRO,X8 PRO DIALN,X8ULTRA,X8ULTRA,X8ULTRA DIAMANT,EU,tamachi,DIAMANT Android TV DIAMANT,EU,yeongdeungpo,DIAMANT Android TV +DIDIK_TAB,DT24,DT24,DT24 DIFRNCE,DIT702201,DIT702201,NID_7010 DIJITSU,DCT 90,DCT_90,DCT 90 DIJITSU,DIJITSU,hongkong,4K SMART TV @@ -6059,6 +6211,8 @@ DL,Tablet_DL_3724,Tablet_DL_3724,Tablet_DL_3724 DL,X_Quad_Pro,X_Quad_Pro,Tablet DL 3410 DL,YZU_DS53,Smartphone_YZU_DS53,Smartphone_YZU_DS53 DL,i-Player_KIDS,Tablet_DL_3910,Tablet_DL_3910 +DMOAO,D5-EEA,D5-EEA,D5-EEA +DMOAO,D5-US,D5-US,D5-US DNA,DNA,dctiw384,DNA Android TV DNA,DNA Hubi 2.0,m393gena,DNA Hubi 2.0 DNA,DNA Hubi Soundbox,m393vsb_dna,DNA Hubi Soundbox @@ -6082,6 +6236,7 @@ DORA,Smart TV,redwood,AI PONT DREAMTECH,STARPAD,STARPAD,STARPAD DSIC,Mobilebase DS6,ds6,DS6 DSIC,RD86QE,RD86QE,RD86QE +DSTechnology,MATE ONE,MO_Pro,MO_Series DTC products,S10,S10,S10 DTC products,S30,S30,S30 DTV (Thai),P3,Digital_Life_P3,P3 @@ -6101,6 +6256,8 @@ Daehap,DH-B301K,DH-B301K,DH-B301K Daelim_System,Daelim System_IFPD,Daelim_System_RK3588,ULTRA_DS11386 Daewoo,4K Smart TV,pioneer,4K SA Smart TV Daewoo,4K Smart TV,pioneer,DAEWOO 4K SA Smart TV +Daewoo,DAEWOO,lavender,4K SMART TV +Daewoo,DAEWOO,mountbaker,2K SMART TV Daewoo,DAEWOO SMART TV,SW6H,DAEWOO SMART TV Daewoo,DAEWOO SMART TV,sunnyvale,DAEWOO SMART TV Daewoo,DW-TN7RK16,DW-TN7RK16,DW-TN7RK16 @@ -6119,6 +6276,12 @@ Dahua,DAHUA,zhongshan,43FCOL Dahua,DAHUA,zhongshan,43FSA Dahua,DAHUA,zhongshan,4K SMART TV Daihatsu,A-DA,balticaAA,MY22ADA +Daiwa,2K DATV,capitolhill,2K DATV +Daiwa,2K DATV,capitolhill,Daiwa 2K Google TV +Daiwa,4K DATV,keoneae,4K DATV +Daiwa,4K DATV,keoneae,Daiwa 4K Google TV +Daiwa,4K DATV-Z,keoneae,Daiwa 4K Google TV-Z +Danew,D809ProPlus,D809ProPlus,D809ProPlus Danew,DSlide 710,Dslide710,Dslide710 Danew,DSlide 750,Danew_DSlide750,DSlide750 Danew,Dbook112_EEA,Dbook112_EEA,Dbook112_EEA @@ -6148,6 +6311,7 @@ Danew,Dslide_1021C,Dslide_1021C,Dslide_1021C Danew,Dslide_1021_EEA,Dslide_1021,Dslide_1021 Danew,Dslide_1025_EEA,Dslide_1025_EEA,Dslide_1025 Danew,Dslide_113,Dslide_113,Dslide_113 +Danew,Dslide_114,Dslide_114,Dslide_114 Danew,Dslide_809,Dslide_809_EEA,Dslide_809 Danew,Dslide_809Pro_EEA,Dslide_809Pro,Dslide_809Pro Danew,G27,G27,G27 @@ -6172,6 +6336,7 @@ Danew,konnect 601,Konnect_601,Konnect_601 Dangbei,DBOD02,himalaya,DBOD02 Dany,MAXX_05,MAXX_05,MAXX_05 Dany,Signature-S8,Signature-S8,Signature-S8 +Daria,zahedan,zahedan,DM-B50104 Datalogic,Datalogic MEMOR 10,dl35,MEMOR 10 Datalogic,Joya Touch 22,jta11,Joya Touch 22 Datalogic,Joya Touch 22,jta11f,Joya Touch 22 @@ -6206,9 +6371,12 @@ Dcode,Cypher,Dcode_Cypher,DS-CR1 Dcode,DS-X1,DS-X1,DS-X1 Dcode,DS_BD1,DS_BD1,DS-BD1 Dcode,DS_BD2,DS_BD2,DS-BD2 +Dcode,DS_BD4_Pro,DS_BD4_Pro,DS-BD4 Pro Dcode,DS_CL1,DS_CL1,DS-CL1 Dcode,DS_CL2_Lite,DS_CL2_Lite,DS-CL2 Lite Dcode,DS_CL2_Pro,DS_CL2_Pro,DS-CL2 Pro +Dcode,DS_CL4_Lite_C,DS_CL4_Lite,DS-CL4 Lite +Dcode,DS_CL4_Pro,DS_CL4_Pro,DS-CL4 Pro Dcolor,GD1 4K,YUL,GD1 4K Ddm,ANDY 5EI,AM5E3I047,ANDY 5EI DeWALT,DeWalt md501,md501,md501 @@ -6310,6 +6478,9 @@ Denver Electronics,TIQ_1048,TIQ_1048,TIQ-1048 Detco,Detco 4K Google TV,keoneae,Detco 4K Google TV Deutsche Telekom,T Phone,Jaguar,T Phone Deutsche Telekom,T Phone Pro,Lion,T Phone Pro +Deutsche Telekom,T Phone Pro (2023),Tiger,T Phone Pro (2023) +Deutsche Telekom,T Phone (2023),Leopard,T Phone (2023) +Deutsche Telekom,T Tablet,Hubbs,T Tablet DiDi (Japan),DDT-001,DDT-001,DDT-001 DiMora Mobile,Adrenalin Pro,Adrenalin_Pro,Adrenalin Pro DiMora Mobile,DiMora_LUX,DiMora_LUX,DiMora_LUX @@ -6352,6 +6523,7 @@ Digi,INFINITY MAX,DIGIT_INFINITY_MAX,DIGIT INFINITY MAX DigiKing,DigiKing 2K Android,lasalle,DigiKing 2K Android TV DigiKing,DigiKing 4K Android,kenton,DigiKing 4K Android TV DigiKing,Digiking 2K Google TV,capitolhill,Digiking 2K Google TV +DigiKing,Digiking 4K Google TV-A,keoneae,Digiking 4K Google TV-A DigiLand,10542843,10542843,10542843 DigiLand,206886-01,mdt9003,206886-01 DigiLand,Compumax Blue,mid1016_ma,Compumax Blue @@ -6426,6 +6598,7 @@ Digiquest,EU、UK、AP,martin,Digiquest 2K Android TV Digiquest,Italy,tamachi,Digiquest 2K Android TV Digiquest,Italy,yeongdeungpo,Digiquest 4K Android TV Digit,DIGIT INFINITY,DIGIT_INFINITY,DIGIT INFINITY +Digit,Digit Chrome,Digit_Chrome,Digit Chrome Digit,DigitPad10,DigitPad10,DigitPad10 Digit,Digit_Glory,Digit_Glory1,Digit Glory1 Digit,Digitplay1,Digitplay1,Digitplay1 @@ -6668,6 +6841,10 @@ Doogee,BL12000 PRO,t758_dg_a67t_n,BL12000 PRO Doogee,BL5000,BL5000,BL5000 Doogee,BL5500_Lite,BL5500_Lite,BL5500_Lite Doogee,BL7000,BL7000,BL7000 +Doogee,F10,F1,F10 +Doogee,F10 Pro,F1S,F10 Pro +Doogee,F10S,F1C,Blade10 Pro +Doogee,F10S,F1C,F10S Doogee,MIX,t766_dg_n_mix,MIX Doogee,MIX Lite,t766_dg_a66,MIX Lite Doogee,Mix,MIX,MIX @@ -6683,12 +6860,20 @@ Doogee,N40Plus,N40Plus,N40Pro Doogee,N40Pro,N40Pro,N40Pro Doogee,N40Pro_RU,N40Pro,N40Pro Doogee,N50,1918Y,N50 +Doogee,N50 Plus,1918P,N50 Plus +Doogee,N50Pro,1918N,N50Pro +Doogee,N50S,1918D,N50S Doogee,N60Pro,1919,N60Pro +Doogee,N70,1925T,N70 Doogee,P3Mini Kid,P3Mini_Kid,T20Mini Kid +Doogee,R08,PT3,R08 Doogee,R10,PT1,R10 Doogee,R10,PT1,R10 Pro +Doogee,R20,PT2,R20 Doogee,S100,M22,S100 Doogee,S100Pro,M22H,S100Pro +Doogee,S108,M22G,S108 +Doogee,S108,M22G,S118 Doogee,S110,M22P,S110 Doogee,S30,S30,S30 Doogee,S35,S35,S35 @@ -6700,8 +6885,12 @@ Doogee,S40,S40,S40 Doogee,S40Lite,S40Lite,S40Lite Doogee,S40Pro,S40Pro,S40Pro Doogee,S41,M21,S41 +Doogee,S41,M21TE,S41T +Doogee,S41 Max,M21TU,S41 Max +Doogee,S41 Plus,M21TP,S41 Plus Doogee,S41Pro,M21T,S41Pro Doogee,S41T,M21T,S41Pro +Doogee,S41T,M21TE,S41T Doogee,S50,t758_dg_m3t_n,S50 Doogee,S51,S51,S51 Doogee,S55,S55,S55 @@ -6742,29 +6931,48 @@ Doogee,Smini,ZN137,Smini Doogee,T10,P1,T10 Doogee,T10,P1_2,T10 Doogee,T10E,P4,T10E +Doogee,T10Plus,P1T,T10Plus Doogee,T10Pro,P1_2,T10Pro Doogee,T10S,P1D,T10S Doogee,T10SE,P4,T10E Doogee,T20,P2,T20 Doogee,T20,P2_2,T20 Doogee,T20Mini,P3Mini,T20Mini +Doogee,T20Mini Pro,P3MiniS,T20Mini Pro Doogee,T20S,P2D,T20S +Doogee,T20Ultra,P2T,T20Ultra +Doogee,T30 Mini,P3MiniTE_2,T30 Mini +Doogee,T30 Mini Pro,P3MiniT,T30 Mini Pro Doogee,T30Pro,P3Pro,T30Pro +Doogee,T30S,P3D,T30S +Doogee,T30S,P3D_2,T30S +Doogee,T30Ultra,P3,T30Ultra Doogee,T5,T5,T5 Doogee,T5S,T5S,T5S Doogee,U10,RK1,U10 +Doogee,U10 Pro,RK1S,U10 Pro Doogee,U10KID,RK1KID,U10 Kid Doogee,U10KID,RK1KID,U10Kid +Doogee,U8,RK3,U8 +Doogee,U8 Kid,RK3KID,U8 Kid +Doogee,U9,RK2,U9 +Doogee,U9 Kid,RK2KID,U9 Kid Doogee,V MAX,M23H,V Max Doogee,V Max,M23H,V Max +Doogee,V Max,M23HR,V Max +Doogee,V Max Pro,M23HC,V Max Pro Doogee,V10,V10,V10 Doogee,V10,V10,V11 Doogee,V20,V20,V20 Doogee,V20Pro,ZN133T,V20Pro +Doogee,V20S,ZN133S,V20S Doogee,V30,M23,V30 Doogee,V30Pro,M23,V30 +Doogee,V30Pro,M23U,V30Pro Doogee,V30T,M23T,V30T Doogee,V31GT,M23S,V31GT +Doogee,V40,ZN138,DK10 +Doogee,V40,ZN138N,V40 Doogee,X10,doogee-X10,DOOGEE X10 Doogee,X100,X100,X100 Doogee,X11,X11,X11 @@ -6820,12 +7028,22 @@ Doogee,Y9Plus,Y9Plus,Y9Plus Doogee,shoot 2,t591_dga57_we,Shoot_2 Doopro,C1,C1,C1 Doopro,C1_Pro,C1_Pro,C1_Pro +Doopro,G11,P4_2,G11 +Doopro,G20,P1TE,G20 +Doopro,G8,RK3_2,G8 Doopro,P1,P1,P1 Doopro,P1_Pro,P1_Pro,P1_Pro Doopro,P2,br6580_weg_n,P2 Doopro,P2_Pro,P2_Pro,P2_Pro Doopro,P4,P4,P4 Doopro,P4_Pro,P4_Pro,P4_Pro +Doopro,Play 10 Pro,P3_Mini_TE,Play 10 Pro +Doopro,Play 11,P3F,Play 11 +Doopro,Play 11 Pro,P3_2,Play 11 Pro +Doopro,Y10,P3A,Y10 +Doopro,Y10 Plus,P3AE,Y10 Plus +Doopro,Y10 Pro,P3D_3,Y10 Pro +Doopro,Y10 Ultra,P3AS,Y10 Ultra Dopo,DP7856K,DP7856K,DP7856K Dopo,DPA23D,polaris-wifionly,DPA23D Dopo,DPM1081,RCT6203W46,DPM1081 @@ -6926,6 +7144,7 @@ Dragontouch,Y88X_PRO_EEA,Y88X_PRO,Y88X_PRO Dragontouch,Y88X__PLUS,Y88X__PLUS,Y88X__PLUS DreamMaker,DreamMaker,DPLAY,DPLAY Dreamax,DMX-ST7A,DMX-ST7A,DMX-ST7A +Dreamstar,Nova,YYZ,Nova Dtac,Phone M2,dtacPhoneM2,dtacPhoneM2 Dtac,Phone S2,dtacPhoneS2,dtac_Phone_S2 Dtac,Phone S3,dtacPhoneS3,dtacPhoneS3 @@ -7016,6 +7235,8 @@ EDENWOOD,EDENWOOD,komagome,EDENWOOD 2K Android TV EDENWOOD,EDENWOOD 4K Android TV,kenton,EDENWOOD 4K Android TV EDUTAB,ELITE_10,ELITE_10,ELITE_10 EGBOK,P803,P803,P803 +EGOBOO,EB101,EB101,EB101 +EGOTEK,AK10,AK10,AK10 EGOTEK,Mars8,Mars8,Mars8 EGOTEK,Penguin,Penguin,Penguin EGOTEK,Venus10,Venus10,Venus10 @@ -7039,6 +7260,7 @@ EKO,EKO,hongkong,EKO 4K Android TV EKO,EKO,kaitak,EKO Google TV EKO,EKO,komagome,EKO 2K Android TV EKO,EKO,lavender,EKO 4K Android TV +EKO,EKO,mountbaker,EKO 2K Android TV EKO,EKO,shilin,EKO 4K Android TV EKO,EKO,tennoji,2K EKO Google TV EKO,EKO,zhongshan,EKO 4K Android TV @@ -7093,6 +7315,8 @@ ELO Touch,Elo-i3-PUCK,Elo-i3-PUCK,Elo-i3-PUCK ELO Touch,I-Series 3.0 for Android,Elo-i3-10Std,Elo-i3-10Std ELO Touch,I-Series 3.0 for Android,Elo-i3-22Std,Elo-i3-22Std ELO Touch,"I-Series Pay 7""",7in-I-Series-Pay,7in-I-Series-Pay +ELO Touch,M100,M100,M100 +ELO Touch,M100C,M100C,M100C ELO Touch,M50,M50,M50 ELO Touch,M50C,M50C,M50C ELO Touch,M60-Pay,M60-Pay,M60-Pay @@ -7186,10 +7410,14 @@ ETERNITY,HERO-SP001,HERO-SP001,HERO-SP001 ETERNITY,HEROSP001,HEROSP001,SP-001 ETG(G),ETG-BT1121,ETG-BT1121,ETG-BT1121 ETOE,D1221,YUL,D1221 +EUDORA,E10Pro,E10Pro,E10Pro +EUDORA,E62 Plus,E62Plus,E62 Plus +EUDORA,EudoraE65Pro,E65Pro,E65 Pro EUDORA,R10 Pro,R10_Pro,R10 Pro EVEREST-EVERPAD,DC-1032,mid1032_mk,DC-1032 EVEREST-EVERPAD,DC-8015,mid7015_mk,DC-8015 EVEREST-EVERPAD,DC-M700,DC-M700,DC-M700 +EVO FUSE 4K,EVO FUSE 4K,SEI700L,FUSE 4K EVOFORCE1,FRC1-ABB,SEI800ABB,FRC1-ABB EVOFORCE1,FRC1-Armstrong,SEI800AS,FRC1-Armstrong EVOFORCE1,FRC1-BlueRidge,SEI800BR,FRC1-BlueRidge @@ -7197,6 +7425,7 @@ EVOFORCE1,FRC1-BlueStream,SEI800BS,FRC1-BlueStream EVOFORCE1,FRC1-CBT,SEI800CB,FRC1-CBT EVOFORCE1,FRC1-CableCo,SEI800TV,FRC1-CableCo EVOFORCE1,FRC1-Eastlink,SEI800ESTL,FRC1-ESTL +EVOFORCE1,FRC1-Eastlink,SEI800ESTL,FRC1-Eastlink EVOFORCE1,FRC1-MDCOM,SEI800MDCOM,FRC1-MDCOM EVOFORCE1,FRC1-MOBI,SEI800MOBI,FRC1-MOBI EVOFORCE1,FRC1-Midco,SEI800MC,FRC1-Midco @@ -7281,12 +7510,14 @@ Eks Mobility,x7,X7,X7 Elecost,QuadTab E10.1,QuadTab_E101,QuadTab E10.1 Elecson,Meeplus_1,Meeplus_1,Meeplus_1 Electroland Ghana,NASCO_Allure,NASCO_Allure,NASCO_Allure +Electroman,ELECTROMAN,mountbaker,Smart FHD TV Electroman,Electroman,hongkong,Smart UHD TV Electroman,Electroman,stanford,Smart FHD TV Electroman,Electroman,zhongshan,Smart UHD TV Electroneum,electroneumM1,electroneumM1,electroneumM1 Element,ELEMENT,hongkong,4K SMART TV Element,Element,bruno,Element2KAndroidTV +Element,Element,expo,ElementDeluxe4k Element,Element,kaitak,ElementPlatiumTV Element,Element,shilin,Element4KAndroidTV Element,Element,tennoji,ElementDeluxe2K @@ -7380,6 +7611,7 @@ Ematic,PBSKD7201,PBSKD7201,PBSKD7201 Ematic,Sprout Channel Cubby,Cubby,SproutChannelCubby Ematic,USA,Jetstream,AGT418 Emdoor,EM_I8180,em_i8180,em_i8180 +Emerson,EID-1400,EID-1400,EID-1400 Emerson,EM749/748,EM749_748,EM749_748 Emerson,EM9,EM9,EM9 Emporia,E5mini,E5mini,E5mini @@ -7400,6 +7632,7 @@ Energizer,EnergyE500,EnergyE500,EnergyE500 Energizer,EnergyE500S_EU,EnergyE500S_EU,EnergyE500S_EU Energizer,EnergyE500S_US,EnergyE500S_US,EnergyE500S_US Energizer,H550S,HARDCASEH550S,HARDCASEH550S +Energizer,H67G,H67G,H67G Energizer,HARDCASEH500S,HARDCASEH500S,HARDCASEH500S Energizer,Hardcase H620S,H620SEU,H620SEU Energizer,Hardcase H621S,H621SEU,H621SEU @@ -7413,6 +7646,8 @@ Energizer,S550,S550,S550 Energizer,U505S,U505S,U505S Energizer,U506S,U506S,U506S Energizer,U608S,U608S,U608S +Energizer,U652S,U652S,U652S +Energizer,U683S,U683S,U683S Energizer,Ultimate U710S,Ultimate_U710S,Ultimate U710S EnergySistem,adelroth,adelroth,Energy Tablet Pro 4 Enerpres,SMIG_V,SMIG_V,SMIG_V @@ -7745,6 +7980,8 @@ F&U (Fandu),FU 2K SMART TV,nagata,FU 2K SMART TV F&U (Fandu),Greece,marina,FU 4K SMART TV F&U (Fandu),Greece,tamachi,F and U Android TV F&U (Fandu),Greece,yeongdeungpo,F and U Android TV +F-Plus,R570E,R570E,R570E +F-Plus,RT800,RT800,RT800 F-Plus,SA50_21620,SA50_21620,SA50_21620 F-Plus,SA55_21624,SA55_21624,SA55 2GB/16GB 2400mAh GMS F-Plus,SH60_23230,SH60_23230,SH60_23230 @@ -7775,6 +8012,7 @@ FACETEL,Q10-EEA,Q10-EEA,Q10-EEA FACETEL,Q10-Pro,Q10-Pro,Q10-Pro FACETEL,Q10-US,Q10-US,Q10-US FACETEL,Q10_EEA,Q10_EEA,Q10_EEA +FACETEL,Q10_T_US,Q10_T_US,Q10_T_US FACETEL,Q3-EEA,Q3-EEA,Q3-EEA FACETEL,Q3-pro,Q3_pro,Q3_pro FACETEL,Q3_EEA,Q3_EEA,Q3_EEA @@ -7852,14 +8090,27 @@ FLEX MOBILE,S9,S9,S9 FMC,Digital Experience,belford,Infotainment-system FMC,Digital Experience,belford,SYNC FOLG,KS20,KS20,KidS Prime 1 +FOSSiBOT,DT1_Lite,DT1_Lite,DT1 Lite +FOSSiBOT,DT2,DT2,DT2 FOSSiBOT,F101,F101,F101 FOSSiBOT,F101,F101_P,F101 +FOSSiBOT,F101 P,F101_P,F101 P FOSSiBOT,F101 Pro,F101_Pro,F101 Pro FOSSiBOT,F102,F102,F102 FOSSiBOT,F102 ROW,F102,F102 +FOSSiBOT,F106 Pro ROW,F106_Pro,F106 Pro +FOSSiBOT,Tab 11,Tab_11,Tab 11 FOXX,T8C,T8C,T8C FOXXD,A2023,A2023,A2023 +FOXXD,A55,A55,A55 +FOXXD,A56,A56,A56 FOXXD,A5Pro,A5Pro,A5Pro +FOXXD,A62,A62,A62 +FOXXD,A63,A63,A63 +FOXXD,A65,A65,A65 +FOXXD,A65M,A65M,A65M +FOXXD,A65Plus,A65Plus,A65Plus +FOXXD,A6_Plus,A6_Plus,A6 Plus FOXXD,C10,C10,C10 FOXXD,FOXXD C65,FOXXD_C65,FOXXD C65 FOXXD,MIRO,L590A,L590A @@ -7897,7 +8148,6 @@ FPT Trading,X50,FPT_X50,FPT X50 FUEGO,FUEGO 2K SMART TV,nagata,FUEGO 2K SMART TV FUEGO,FUEGO 4K SMART TV,marina,FUEGO 4K SMART TV FUNKER,E500i,E500i,E500i -FUSE4K,FUSE 4K,SEI700L,FUSE 4K FUSE4K,FUSE 4K,SEI700TV,FUSE 4K FaceVsion,OC1020A,OC1020A,FV-FG6 Facime,FLEET_7,FLEET_7,FLEET_7 @@ -7971,6 +8221,7 @@ Filih,FX4423,FX4423,FX4423 Finggo,FWSP-S1000,FWSP-S1000-HW,FWSP-S1000 Finggo,FWTA-T1000,FWTA-T1000,FWTA-T1000 Firehawk,FP-600,FP-600,FP-600 +Firehawk,Firehawk,ToughDroid_Pro,FT-810 Firehawk,ToughDroid,ToughDroid,ToughDroid FirstNationalBank,FNB,SP5045V,SP5045V Flash,Ivory,Ivory,Ivory @@ -8113,6 +8364,8 @@ Fly,Tornado One,IQ4511_Octa,IQ4511 Octa Fly,Tornado One,IQ4511_Octa,IQ4511 TR Fly,View,View,View Fly_Tech,T101,T101,T101 +Fobem,2K SMART TV,nagata,Fobem 2K SMART TV +Fobem,Fobem 4K SMART TV,marina,Fobem 4K SMART TV Fone Haus,Blaze,Blaze,Blaze Fone Haus,Bolt,Bolt,Bolt Fone Haus,CoolminttTribe,CoolMinttTribe,CoolMinttTribe @@ -8221,8 +8474,11 @@ Free,Liberty 4G,Liberty_4G,Liberty 4G Free Vision,FR-CK718,FR-CK718,FR-CK718 FreeYond,F9,F9,F9 FreeYond,F9S,F9S,2306004M +FreeYond,F9S,F9S,F9S +FreeYond,F9S,F9S_EEA,F9S FreeYond,M5,M5,M5 FreeYond,M5A,M5A,2305003M +FreeYond,M6,M6,2308005M Freebit,A55J,arima6735_65u_l1,TONE m15 Freebit,TONE m15,TONE_m15,TONE m15 Freebit,Tone m15,TONE_m15,TONE m15 @@ -8536,11 +8792,14 @@ GIRASOLE,TAB5,TAB5,TAB5 GIRASOLE,X9,X9,X9 GLOBAL3,B02,B02,B02 GMMZ,DongleTV1,DongleTV1,DongleTV1 +GOMDUSA,X23,X23,X23 GOODTEL,G10_EEA,G10_EEA,G10_EEA GOODTEL,G10_US,G10_US,G10_US GOODTEL,G2-EEA,G2-EEA,G2-EEA GOODTEL,G2_A_EEA,G2_A_EEA,G2_A_EEA GOODTEL,G2_EEA,G2_EEA,G2_EEA +GOODTEL,G2_U_EEA,G2_U_EEA,G2_U_EEA +GOODTEL,G2_U_US,G2_U_US,G2_U_US GOODTEL,G3_EEA,G3_EEA,G3_EEA GOODTEL,G6,G6,G6 GOODTEL,G6_EEA,G6_EEA,G6 @@ -8552,6 +8811,7 @@ GP-electronic,YC-102D,YC-102D,YC-102D GP-electronic,YC-3135D,YC-3135D,YC-3135D GP-electronic,YC-83P,YC-83P,YC-83P GP-electronic,YC-83T,YC-83T,YC-83T +GPOA,UAI PRO,UAI_PRO,UAI_Series GREATASIA,E101GC,E101GC,E101GC GREATASIA,E101GC4G,E101GC4G,E101GC4G GREATASIA,E101GCM,E101GCM,E101GCM @@ -8565,6 +8825,7 @@ GREATASIA,ET103G,ET103G,ET103G GREATASIA,Kidpad_M7,Kidpa_M7,Kidpa_M7 GREATASIA,Pad_M30,Pad_M30,Pad_M30 GREATASIA,TK-E8765,TK-E8765,TK-E8765 +GREATASIA,TK-P86,TK-P86,TK-P86 GREATASIA,Z8,Z8,Z8 GRID Communications (SG),GS6100,GRID_GS6100,GS6100 GSmart,Akta A4,Akta_A4,Akta_A4 @@ -8649,6 +8910,7 @@ Geecoo,G1_3g,G1_3g,G1_3g Geecoo,G2,G2,G2 Geecoo,G3,G3,G3 Geecoo,G4,G4,G4 +Gen2Wave,Prime RS01,Prime_RS01,G2W-RS55HD Gen2Wave,RP70A,RP70A,RP70A General Dynamics,GD Tough Mobile,granite,GD Tough Mobile General Dynamics,GD Tough mobile,granite,GD Tough Mobile @@ -8713,6 +8975,7 @@ Geo (GeoTechVision),GEO10,GEO10,GEO10X GeoMax,GeoMax Zenius08,Zenius08,GMT-08QA-2301 Geoelectron,P9IV,P9IV_Handheld,P9IV Geoelectron,P9IV_Handheld_EEA,P9IV_Handheld,P9IV +Gertec,SK-210,SK-210,SK-210 Gesellschaft für SMK mBH,Tough Mobile,granite,CP600 Geshem,GS0882T,GS0882T,GS0882T Geshem,GS0883T,GS0883T,GS0883T @@ -8740,6 +9003,7 @@ Ghia,Beetle7,Beetle7,Beetle7 Ghia,G1,G1,G1 Ghia,GA7133,GA7133,GA7133 Ghia,GA8N,GA8N,GA8N +Ghia,GA8N2,GA8N2,GA8N2 Ghia,GHIA,stanford,SMART TV Ghia,GHIA,zhongshan,4K SMART TV Ghia,GHIA_A1,GHIA_A1,GHIA_A1 @@ -8749,6 +9013,10 @@ Ghia,GHIA_AXIS7P,GHIA_AXIS7P,GHIA_AXIS7P Ghia,GHIA_L1,GHIA_L1,GHIA_L1 Ghia,GHIA_VECTOR_3G,GHIA_VECTOR_3G,GHIA_VECTOR_3G Ghia,GK133,GK133,GK133 +Ghia,GK133M3,GK133M3,GK133M3 +Ghia,GK133N3,GK133N3,GK133N3 +Ghia,GK133S3,GK133S3,GK133S3 +Ghia,GK133T3,GK133T3,GK133T3 Ghia,GPND133,GPND133,GPND133 Ghia,GS3G,GS3G,GS3G Ghia,GTA7PLUS,GTA7PLUS,GTA7PLUS @@ -9078,6 +9346,7 @@ GoClever,QUANTUM_700S/QUANTUM 700S,QUANTUM_700S,QUANTUM_700S GoClever,Quantum 500 STEEL,FQ_500R,Quantum_500_STEEL GoClever,TQ700/QUANTUM 700/TAB,TQ700,TQ700 GoPlus,GoPlus 4k,SEI700STL,GoPlus 4k +Goally,P3_8,P3_8,P3_8 Gobox,T2,T2,T2 Gol Mobile,F10,F10,F10 Gol Mobile,F10_PRIME,F10_PRIME,F10_PRIME @@ -9124,6 +9393,7 @@ Google,Emulator,generic_x86,Android SDK built for x86 Google,Emulator,generic_x86_64,Android SDK built for x86_64 Google,Galaxy S4 Google Play edition,jgedlte,GT-I9505G Google,Google Android Emulator,generic_x86_arm,sdk_gphone_x86 +Google,Google Automotive Emulator,emulator_car64_x86_64,Android SDK built for x86_64 Google,Google Play Games on PC,vsoc_kiwi_x86_64,HPE device Google,Intel Alder Lake Chromebook,brya_cheets,brya Google,Intel Alder Lake Chromebox,brask_cheets,brask @@ -9141,6 +9411,7 @@ Google,Intel Gemini Lake Chromebook,octopus_cheets,octopus Google,Intel Jasper Lake Chromebook,dedede_cheets,dedede Google,Intel Jasper Lake Chromebook,keeby_cheets,keeby Google,Intel Kaby Lake U Chromebook,nami_cheets,nami +Google,Intel Meteorlake-U Chromebook,rex_cheets,rex Google,Intel Tiger Lake Chromebook,volteer_cheets,volteer Google,Mediatek MT8183 Chromebook,jacuzzi_cheets,jacuzzi Google,Mediatek MT8183 Tablet,kukui_cheets,kukui @@ -9172,6 +9443,7 @@ Google,Pixel 7 Pro,cheetah,Pixel 7 Pro Google,Pixel 7a,lynx,Pixel 7a Google,Pixel 8,shiba,Pixel 8 Google,Pixel 8 Pro,husky,Pixel 8 Pro +Google,Pixel 8a,akita,Pixel 8a Google,Pixel C,dragon,Pixel C Google,Pixel Fold,felix,Pixel Fold Google,Pixel Slate,nocturne_cheets,Google Pixel Slate @@ -9219,6 +9491,8 @@ Gplus,Z10,Z10,Gplus Z10 Gradiente,GTB_106,GTB_106,GTB_106 Gradiente,iphone C600,GBC_bravo,iphone C600 Gradiente,iphone C600,bravo,iphone C600 +Graetz,GRAETZ,lavender,4K SMART TV +Grandstream,Grandstream WP856,WP856,WP856 Greatwall,100011886,tablet,100011886 Greatwall,100011886_GTW,tablet,100011886_GTW Greatwall,K701,K701,K701 @@ -9258,6 +9532,7 @@ Grundig,Grundig Google TV OLED,wanchai,Grundig Google TV OLED Grundig,Grundig Google TV QLED,wanchai,Grundig Google TV QLED Grundig,Grundig Google TV UHD+,wanchai,Grundig Google TV UHD+ Grundig,Grundig UHD Android TV,kunyang,Grundig Android UHD TV +Grundig,R4,R4,R4 Grundig,TC69CA2,GTB801,GTB 801 Grundig,Turkey,martin,Grundig Android TV Grunhelm,GT9HD32,ikebukuro,AI PONT @@ -9310,6 +9585,7 @@ Guophone,XP9800,Guophone_XP9800,XP9800 H133,Betacrux,Betacrux,Betacrux H819E,MINTAKA,MINTAKA,MINTAKA HAKO,HAKO mini,GMP,HAKO mini +HANDELSON,H14,H14,H14 HANET,T432,SmartEdu,T432 HANKOOK_CREA,HANKOOK_CREA_IFPD,HANKOOK_CREA_RK3588,CREA_86135_Series HANYEAL,E101GC,E101GC,E101GC @@ -9319,6 +9595,7 @@ HAOVM,HP10_EEA,HP10_EEA,P10_EEA HAOVM,HP20,HP20,P20 HAOVM,MediaPad C8,HC8,C8 HAOVM,MediaPadP8,P8,P8 +HAOVM,P10_2024,P10_2024,P10 HAOVM,P8,HP8,P8 HAOVM,P9,P9,P9 HAOVM,P9_EEA,P9_EEA,P9_EEA @@ -9344,6 +9621,7 @@ HEADWOLF,HPAD1A,HPAD1A,H1A HEADWOLF,Hpad1,Hpad1,Hpad1 HEADWOLF,Hpad2,Hpad2,H2 HEADWOLF,Hpad2,Hpad2,H2A +HEADWOLF,W5A,W5A,W5A HEADWOLF,WPAD2,WPAD2,W2 HEADWOLF,Wpad1,Wpad1,W1 HEADWOLF,Wpad2,Wpad2,W2 @@ -9354,22 +9632,31 @@ HELIX_INC,C-TABLET,C-TABLET,C-TABLET HIGRACE,OC101,OC101,OC101 HIGRACE,OC101,OC101_EEA,OC101 HIKVISION,DS-D5C,DS_D5C65RB_A,DS_D5C65RB_A +HIKVISION,DS-MDT301,DS-MDT301,DS-MDT301 HIMADE,HIMADE,shilin,HIMADE4KAndroidTV HIMADE,UHD Android TV,sindorim,AI PONT +HISORL,P80-ROW,P80-ROW,P80 +HISORL,T10P,T10P,T10P +HISORL,TAB10_EEA,TAB10_EEA,TAB10_EEA +HISORL,TAB_10,TAB_10,TAB_10 HKC,A79 Tablet,EM62,A79 HKC Elec,4K Smart TV,gangbyeon,HKC 4K AI Smart TV HKC Elec,4K Smart TV,gangbyeon,TATUNG 4K AI Smart TV HKC Elec,4K Smart TV,pioneer,4K PA Smart TV HKC Elec,4K Smart TV,pioneer,4K SA Smart TV HKC Elec,4K Smart TV,pioneer,HKC 4K SA Smart TV +HKC Elec,Google TV,burbank,4K PA Google TV +HKC Elec,Google TV,kannai,2K JP Google TV HKC Elec,Google TV,lakeside,4K COL Google TV HKC Elec,Google TV,lakeside,4K PA Google TV HKC Elec,Google TV,lakeside,4K SA Google TV HKC Elec,Google TV,lakeside,4K US Google TV +HKC Elec,Google TV,lakeside,POLYTRON 4K HKC Elec,Google TV,nagai,2K COL Google TV HKC Elec,Google TV,nagai,2K PA Google TV HKC Elec,Google TV,nagai,2K SA Google TV HKC Elec,Google TV,nagai,2K US Google TV +HKC Elec,Google TV,nagai,POLYTRON 2K HKC Elec,Smart Monitor,mateo,2K Smart Monitor HKC Elec,Smart TV,mateo,2K PA Smart TV HKC Elec,Smart TV,mateo,2K US Smart TV @@ -9405,9 +9692,13 @@ HOMTOM,S99,S99,S99 HOMTOM,S99i,S99i,S99i HOMTOM,Z8,Z8,Z8 HOMTOM,c1,C1,C1 +HONKUAHG,EV10,EV10,EV10 HORIZON,EU,tamachi,HORIZON Android TV HORIZON,EU,yeongdeungpo,HORIZON Android TV HORIZON,ID65HZA3B1_C,Interactive_White_Board,ID65HZA3B1_C +HORIZON,ID75HZA3B1_C,Interactive_White_Board,ID75HZA3B1_C +HORIZON,ID86HZA3B1_C,Interactive_White_Board,ID86HZA3B1_C +HORIZON,IFPD,65W72B,W72B HOT (il),HOT ONE,VSB3918_ALT_ME,HOT ONE HOT (il),HOT Streamer,DV8555-KIH,HOT Streamer HOT (il),StreamerV3,DIW377_ALT_ME,HOT Streamer V3 @@ -10184,6 +10475,7 @@ HTC,Wildfire E2 play,Wildfire_E2_play,Wildfire E2 play HTC,Wildfire E2 plus,Wildfire_E2_plus,Wildfire E2 plus HTC,Wildfire E3,Wildfire_E3,Wildfire E3 HTC,Wildfire E3 lite,Wildfire_E3_lite,Wildfire E3 lite +HTC,Wildfire E4,Wildfire_E4,Wildfire E4 HTC,Wildfire S,marvel,HTC Wildfire S HTC,Wildfire S,marvel,HTC Wildfire S A510b HTC,Wildfire S,marvel,HTC Wildfire S A510e @@ -10326,6 +10618,7 @@ Haier,Haier Android TV PRO ISDB,daan,Haier Android TV PRO ISDB Haier,Haier Leisure L7,Haier_Leisure_L7,HM-N700-FL Haier,Haier MatrixTV AE,irvine,Haier MatrixTV AE Haier,Haier MatrixTV AEL,irvine,Haier MatrixTV AEL +Haier,Haier MatrixTV AR,yongchun,Haier MatrixTV AR Haier,Haier MatrixTV AS,irvine,Haier MatrixTV AS Haier,Haier MatrixTV AS,irvine,Haier OLED TV AS Haier,Haier MatrixTV BE,jordan,Haier MatrixTV BE @@ -10443,6 +10736,7 @@ Hammer,Hammer Construction,Hammer_Construction,Hammer_Construction Hammer,Hammer Energy 2 2022,Energy_2_2022,Hammer_Energy_2_2022 Hammer,Hammer Explorer Plus,Explorer_Plus,Hammer_Explorer_Plus Hammer,Hammer Explorer Pro,Hammer_Expl_Pro,Hammer_Explorer_Pro +Hammer,Hammer_Iron_Va_EEA,HS2401x,Iron Va Handheld Group,ALGIZ RT10,ALGIZ_RT10,ALGIZ_RT10 Handheld Group,ALGIZ RT8,ALGIZ_RT8,ALGIZ_RT8 Handheld Group,Algiz RT7,algizRT7,Algiz RT7 @@ -10465,6 +10759,7 @@ Handheld-Wireless,X6,X6,X6 Handsfree,R5,R5,R5 Handtop,HTA11,HTA11,HTA11 HannSpree,HSD0001,Reader,HannsNote2 +HannSpree,HSD0001A,Reader,HannsNote2 HannSpree,HSG1279,HANNSpad,HSG1279 HannSpree,HSG1341,mid1024_e,HSG1341 HannSpree,HSG1351,HSG1351,HSG1351 @@ -10558,6 +10853,7 @@ Hiking,A30,A30,A30 Hiking,A40,A40,A40 Hiking,A42,A42,A42 Hiking,A44,A44,A44 +Hiking,A45,A45,A45 Hiking,A46,A46,A46 Hiking,A47,A42_A47,A42_A47 Hiking,A48,A43_A48,A43_A48 @@ -10944,6 +11240,7 @@ Hisense,Hisense E60 Lite,HLTE235E_12,Hisense E60 Lite Hisense,Hisense E60 Lite,HLTE235E_20,Hisense E60 Lite Hisense,Hisense E70,HLTE262E,Hisense E70 Hisense,Hisense E70,HLTE262E_01,Hisense E70 +Hisense,Hisense E70 Pro,HLTE263E,Hisense E70 Pro Hisense,Hisense E76MINIM,HS8937QC,Hisense E76MINIM Hisense,Hisense E77,HS8937QC,Hisense E77 Hisense,Hisense F15,HS6739MT,Hisense F15 @@ -11010,6 +11307,7 @@ Hisense,Hisense U50,HLTE222E_01,Hisense U50 Hisense,Hisense U50,HLTE222E_02,Hisense U50 Hisense,Hisense U50,HLTE233E_10,Hisense H50 Lite Hisense,Hisense U605,HS7731ESP,HWCD101E +Hisense,Hisense U605,HS7731ESP,HWCD102E Hisense,Hisense U605,HS7731ESP,Hisense M50 Lite Hisense,Hisense U605,HS7731ESP,Hisense M50 Lite 2021 Hisense,Hisense U605,HS7731ESP,Hisense U30 @@ -11336,6 +11634,8 @@ Hisense,laoshan_HK,laoshan,HKU7A Hisense,laoshan_emH,laoshan,HAT4KDTV Hisense,laoshan_laser,laoshan,HAT4KDTV Hisense,lt971,LT971,LT971 +Hisense,lushan,lushan,SmartTV 4K FFM +Hisense,lushan-NF,lushan,SmartTV 4K Hisense,songshan,songshan,SmartTV 4K Hisense,u972,HS7731SP,U972 Hisense,vision2_1,vision2_1,vision2_1 @@ -11368,7 +11668,6 @@ Homatics,Dongle Q,ICN,Dongle Q Homatics,Dongle R 4K,YQB,Dongle R 4K Homatics,Global,YQB,Dongle R 4K Homatics,Kickpi,YYZ,KP1 -Homatics,Nova,YYZ,Nova Homatics,SEI600HM,HND,Box Q Homatics,SEI700HMG,SEI700HMG,Dongle 4K Homatics,Stick HD,IAD,Stick HD @@ -11385,6 +11684,7 @@ Hometech,ALFA 8RX,ALFA_8RX,ALFA_8RX Hometech,ALFA10TB,ALFA10TB,ALFA10TB Hometech,ALFA_10BS,ALFA_10BS,ALFA_10BS Hometech,ALFA_10BT,ALFA_10BT,ALFA_10BT +Hometech,ALFA_10BT_V2,ALFA_10BT_V2,ALFA_10BT_V2 Hometech,ALFA_10RX,ALFA_10RX,ALFA_10RX Hometech,ALFA_10YC,ALFA_10YC,ALFA_10YC Hometech,ALFA_7M,ALFA_7M,ALFA_7M @@ -11548,6 +11848,8 @@ Honor,HONOR 90,HNREA,REA-NX9 Honor,HONOR 90 GT,HNMAG,MAG-AN00 Honor,HONOR 90 Lite,HNCRT-M2,CRT-NX1 Honor,HONOR 90 Lite,HNCRT-M2,CRT-NX3 +Honor,HONOR 90 Smart,HNCLK-M1,CLK-NX1 +Honor,HONOR 90 Smart,HNCLK-M1,CLK-NX3 Honor,HONOR Magic V2,HNVER,VER-N49 Honor,HONOR Magic Vs,HNFRI,FRI-NX9 Honor,HONOR Magic4 Lite,HNANY-Q1,ANY-LX1 @@ -11561,7 +11863,10 @@ Honor,HONOR Magic6,HNBVL-AN00,BVL-AN00 Honor,HONOR Magic6 Lite 5G,HNALI-Q,ALI-NX1 Honor,HONOR Magic6 Lite 5G,HNALI-Q,ALI-NX3 Honor,HONOR Magic6 Pro,HNBVL,BVL-AN16 +Honor,HONOR Magic6 Pro,HNBVL,BVL-N49 Honor,HONOR Pad 8,HNHEY-Q,HEY-W09 +Honor,HONOR Pad 9,HNHEY2-Q,HEY2-N09 +Honor,HONOR Pad 9,HNHEY2-Q,HEY2-W09 Honor,HONOR Pad X8,HNAGM3,AGM3-AL09HN Honor,HONOR Pad X8,HNAGM3,AGM3-W09HN Honor,HONOR Pad X8 Lite,HNAGM,AGM-W09HN @@ -11588,6 +11893,8 @@ Honor,HONOR X7a,HNRKY-M1,RKY-LX3 Honor,HONOR X7b,HNCLK-Q,CLK-LX1 Honor,HONOR X7b,HNCLK-Q,CLK-LX2 Honor,HONOR X7b,HNCLK-Q,CLK-LX3 +Honor,HONOR X7b 5G,HNCLK-M1,CLK-NX1 +Honor,HONOR X7b 5G,HNCLK-M1,CLK-NX2 Honor,HONOR X8,HNTFY-Q,TFY-LX1 Honor,HONOR X8,HNTFY-Q,TFY-LX2 Honor,HONOR X8,HNTFY-Q,TFY-LX3 @@ -11605,7 +11912,13 @@ Honor,HONOR X9,HNANY-Q1,ANY-LX3 Honor,HONOR X9 5G,HNANY-Q,ANY-NX1 Honor,HONOR X9a 5G,HNRMO-Q,RMO-NX1 Honor,HONOR X9b 5G,HNALI-Q,ALI-NX1 +Honor,Honor 200 Lite,HNLLY-M1,LLY-NX1 +Honor,Honor 200 Lite,HNLLY-M1,LLY-NX3 +Honor,Honor X9b 5G,HNALI-Q,ALI-NX3P +Honor,PORSCHE DESIGN HONOR Magic V2 RSR,HNVER,VER-N49DP +Honor,PORSCHE DESIGN HONOR Magic6 RSR,HNBVL,BVL-AN20 Honor,RBN-NX1,HNRBN-Q,RBN-NX1 +Honor,荣耀V Purse,HNVCA-Q,VCA-AN00 Hoozo,F13,F13,F13 Hoozo,F13_EEA,F13_EEA,F13_EEA Hoozo,HZ0010,HZ0010,HZ0010 @@ -11616,6 +11929,7 @@ Hoozo,KTLA133,KTLA133,KTLA133 Hoozo,MA768,MA768,MA768 Hoozo,MBR05,MBR05,MBR05 Hoozo,MBR05_EEA,MBR05_EEA,MBR05_EEA +Hoozo,MID,MID,MID Hoozo,MR768,MR768,MR768 Hoozo,MR7863,MR7863,MR7863 Hoozo,MTP30,MTP30,MTP30 @@ -11623,8 +11937,10 @@ Hoozo,MTP30_EEA,MTP30_EEA,MTP30_EEA Hoozo,MZ10863,MZ10863,MZ10863 Hoozo,MZ10863W,MZ10863W,MZ10863W Hoozo,MZS10,MZS10,MZS10 +Hoozo,T10A,T10A,T10A Hoozo,YK_P30,YK_P30,YK_P30 Hoozo,YK_P30_EEA,YK_P30_EEA,YK_P30_EEA +Hot Pepper,15 Pro Max,15_Pro_Max,15 Pro Max Hot Pepper,AJI,AJI,HPPR10A Hot Pepper,AP17,AP17,AP17 Hot Pepper,Bola,Bola,Bola @@ -11635,12 +11951,16 @@ Hot Pepper,DT10,DT10_EEA,DT10 Hot Pepper,Ghost,HPP-GS1,HPP-GS1 Hot Pepper,H5,H5,H5 Hot Pepper,HPPAP16,HPPAP16,HPPAP16 +Hot Pepper,HPPH82A,HPPH82A,HPPH82A +Hot Pepper,K82A,K82A,K82A +Hot Pepper,KR10,KR10,KR10 Hot Pepper,KT10,KT10,KT10 Hot Pepper,KT10_EEA,KT10_EEA,KT10_EEA Hot Pepper,Pulla,Pulla,Pulla Hot Pepper,ROJO,ROJO,HPPR20A Hot Pepper,Serrano,HPP-L55,HPP-L55 Hot Pepper,Serrano,HPP-L55B,HPP-L55B +Hot Pepper,Stylo 7plus,Stylo_7plus,Stylo 7plus Hot Pepper,VLE5,VLE5,VLE5 Hot Pepper,VLE5,VLE5A,VLE5A HotLight,TP1003,TP1003,TP1003 @@ -11649,6 +11969,7 @@ Hotwav,A1,A1,A1 Hotwav,A1_Plus,A1_Plus,A1 Plus Hotwav,Cosmos,Cosmos,Cosmos Hotwav,Cosmos_U,Cosmos_U,Cosmos U +Hotwav,Cyber 15,Cyber_15,Cyber 15 Hotwav,Cyber 7,Cyber_7,Cyber 7 Hotwav,Cyber 8,Cyber_8,Cyber 8 Hotwav,Cyber 9 Pro,Cyber_9_Pro,Cyber 9 Pro @@ -11670,7 +11991,9 @@ Hotwav,Magic 9,Magic_9,Magic 9 Hotwav,Magic Q8,Magic_Q8,Magic Q8 Hotwav,Magic Q8 Plus,Magic_Q8_Plus,Magic Q8 Plus Hotwav,Magic_5_Plus,Magic_5_Plus,Magic 5 Plus +Hotwav,Note 12E,Note_12E_EEA,Note 12E Hotwav,Note 15 EEA,Note_15,Note 15 +Hotwav,Pad 11,Pad_11_EEA,Pad 11 Hotwav,Pearl K1,Pearl_K1,Pearl K1 Hotwav,Pearl K2,Pearl_K2,Pearl K2 Hotwav,Pearl K3,Pearl_K3,Pearl K3 @@ -11690,6 +12013,7 @@ Hotwav,TAB R6 Ultra,TAB_R6_Ultra,TAB R6 Ultra Hotwav,Venus,Venus,Venus Hotwav,W10,W10,W10 Hotwav,W10 Pro,W10_Pro,W10 Pro +Hotwav,W11,W11,W11 How,1001-G,1001-G,1001-G How,1001_G,1001-G_Go,1001-G Go How,705-G,705-G,705-G @@ -13345,7 +13669,9 @@ Hyjoy,KT1006,KT1006,KT1006 Hyjoy,P11,P11,P11 Hyjoy,P11_EEA ,P11_EEA,P11_EEA Hykker,Smart Box Android TV,DV8038,Smart Box Android TV +Hyper,Hyper Board,Hyper,Hyper Hytel,HOT MINI,HOT_MINI,HOT MINI +Hytel,M15A,M15A,M15A Hytel,M30A,M30A,M30A Hytera,PDC550,PDC550,PDC550 Hytera,PDC680,PDC680,PDC680 @@ -13438,6 +13764,12 @@ Hyundai,HT8WB1RBK02_12,HT8WB1RBK02_12,8WB1 Hyundai,HT8WB1RBK03,HT8WB1RBK03,HT8WB1RBK03 Hyundai,HY1-5085,HY1_5085,HY1-5085 Hyundai,HYLED5015A4KM,samseong,AI PONT +Hyundai,HYUNDAI,bruno,HYUNDAI2KAndroidTV +Hyundai,HYUNDAI,hongkong,4K SMART ATSC TV +Hyundai,HYUNDAI,hongkong,4K SMART COL TV +Hyundai,HYUNDAI,hongkong,4K SMART ISDB TV +Hyundai,HYUNDAI,lavender,4K SMART COL TV +Hyundai,HYUNDAI,lavender,4K SMART ISDB TV Hyundai,HYUNDAI,stanford,2K SMART TV Hyundai,HYUNDAI 2K Android TV,lasalle,HYUNDAI 2K Android TV Hyundai,HYUNDAI 2K Android TV-A,lasalle,HYUNDAI 2K Android TV-A @@ -13467,6 +13799,7 @@ Hyundai,Hyundai Koral 10X,HT1003X16,HT1003X16 Hyundai,Hyundai Koral 7M3X,HT0703K,HT0703K16 Hyundai,Hyundai Koral_7M4,HT0704K08,HT0704K08 Hyundai,Hyundai Koral_7XL,HT0701L16,HT0701L16 +Hyundai,Hyundai Smartboard,HDIT_IFPD,HDP Hyundai,Hyundai TV,SW4H,Hyundai TV Hyundai,Hyundai android TV,hanyang,HYUNDAI 4K Android TV Hyundai,Hyundai_Eternity_G50,HT1G50K,Hyundai_Eternity_G50 @@ -13567,17 +13900,21 @@ IIIF150,Air1 Ultra+,Air1_Ultra_Pro,Air1 Ultra Pro IIIF150,B1,B1,B1 IIIF150,B1 Pro,B1_Pro,B1 Pro IIIF150,B2,B2,B2 +IIIF150,B2 Pro,B2_Pro,B2 Pro IIIF150,B2 Ultra,B2_Ultra,B2 Ultra IIIF150,Raptor LTD,Raptor,Raptor +IKALL,I KALL Z13,I_KALL_Z13,Z13 IKALL,IKALL,IKALL,IKALL IKALL,K510,K510,K510 IKALL,N4,N4,N4 IKALL,N5,N5,N5 +IKALL,S3,S3,S3 IMAGO,AIOS,AIOS,PRIME IMARFLEX,IMARFLEX 2K Android TV,lasalle,IMARFLEX 2K Android TV IMARFLEX,IMARFLEX 4K Android TV,kenton,IMARFLEX 4K Android TV IMARFLEX,imarflex 2K Google TV,capitolhill,imarflex 2K Google TV IMARFLEX,imarflex 4K Google TV,keoneae,imarflex 4K Google TV +IMARFLEX,imarflex 4K Google TV-A,keoneae,imarflex 4K Google TV-A IMO(In My Opinion),IMO Q,IMO_Q,IMO Q IMO(In My Opinion),IMO Q2 Plus,IMO_Q2_Plus,IMO Q2 Plus IMO(In My Opinion),IMO Q2 Pro,IMO_Q2_Pro,IMO Q2 Pro @@ -13652,6 +13989,8 @@ INOI,INOI_7_2020,INOI_7_2020,INOI 7 2020 INOI,INOI_7_4_64_2021,INOI_7_4_64_2021,INOI 7 4+64 2021 INOI,INOI_7_LITE,INOI_7_LITE,INOI_7_LITE INOI,INOI_7i,INOI_7i,INOI_7i +INOI,INOI_A14,INOI_A14,A140 +INOI,INOI_A14E,INOI_A14,A140 INOI,easyphone,easyphone,INOI easyphone INOI,inoiPad,inoiPad,inoiPad 2+32 Wi-Fi+3G INOI,inoiPad_mini_3G,inoiPad_mini_3G,inoiPad mini 2+32 Wi-Fi+3G @@ -13674,6 +14013,7 @@ INSYS,IH9-L614,IH9-L614,IH9-L614 INSYS,KP1_S10,KP1_S10,KP1_S10 INSYS,KT9-70RA,KT9-70RA,KT9-70RA INSYS,WH2-9832,WH2-9832,WH2-9832 +INUSUAL,INUTAB21,INUTAB21,INUTAB21 ION ELECTRONICS,Gravity,Gravity,Gravity ION ELECTRONICS,Kids,Kids,Kids ION ELECTRONICS,Orbit,Orbit,Orbit @@ -13685,6 +14025,7 @@ IQ Touch,iMax_EC1053,iMax_EC1053,iMax_EC1053 IQU_GROUP,IQU_T10_4G,IQU_T10_4G,IQU T10 4G IQU_GROUP,IQU_T8_4G,IQU_T8_4G,IQU T8 4G IQU_GROUP,SMARTEasy_Q50,SMARTEasy_Q50,SMARTEasy_Q50 +IRA (explore more),IRA explore more,IRA_BHARATAB_1021,IRA_BHARATAB_1021 IRA (explore more),IRA801,IRA801,IRA801 IRA (explore more),IRABIO,IRABIO,IRABIO IRA (explore more),IRADUO_PRO,IRA_DUO_PRO,IRA_DUO_PRO @@ -13762,6 +14103,9 @@ Ikon,IK-T808,IK-T808,IK-T808 Ikon,IK-WT1080,IK-WT1080,IK-WT1080 Ikon,IK-WT1088,IK-WT1088,IK-WT1088 Ikon,IKON,IK-1028,IK-1028 +Ikon,IKON 2K Google TV,capitolhill,IKON 2K Google TV +Ikon,IKON 4K Google TV,keoneae,IKON 4K Google TV +Ikon,IK_WA024,IK_WA024,IK_WA024 IkuMobile,A10,A10,A10 IkuMobile,A10s,A10s,A10s IkuMobile,A11,A11,A11 @@ -13830,6 +14174,7 @@ Inco,MINI,MINI,MINI Inco,Rouge1,Rouge1,Rouge1 Inco,eco_s,eco_s,eco_s IndiHome,B860H V5.0,B860HV5_Telkom,B860H V5.0 +IndiHome,B866F V1.1,B866FV1_1,B866F V1.1 IndiHome,HG680_FJ,HG680,HG680_FJ Indurama,INDURAMA,stanford,INDURAMA SMART TV 2K Indurama,INDURAMA,zhongshan,INDURAMA SMART TV 4K @@ -13853,6 +14198,7 @@ Infinix,43X3,beaudry,Infinix AndroidTV Infinix,50X3,barking,Infinix AndroidTV Infinix,55X1,samseong,AI PONT Infinix,GT 10 Pro,Infinix-X6739,Infinix X6739 +Infinix,GT 20 Pro,Infinix-X6871,Infinix X6871 Infinix,HOT,Infinix-X689F,Infinix X689F Infinix,HOT 10,Infinix-X682B,Infinix X682B Infinix,HOT 10,Infinix-X682C,Infinix X682C @@ -13918,6 +14264,7 @@ Infinix,HOT5,Infinix-X559C,Infinix X559F Infinix,HOT5 Lite,Infinix-X559,Infinix X559 Infinix,HOT5 Lite,X557,Infinix HOT 4 Infinix,Hot 4 Pro,Infinix-X5511-13M,Infinix HOT 4 Pro +Infinix,Infinix Google TV,kualakai,Infinix Google TV Infinix,Infinix HOT 10 Lite,Infinix-X657B,Infinix X657B Infinix,Infinix HOT 10S,Infinix-X689,Infinix X689 Infinix,Infinix HOT 10S,Infinix-X689B,Infinix X689B @@ -13968,7 +14315,9 @@ Infinix,Infinix NOTE 12i,Infinix-X6819,Infinix X6819 Infinix,Infinix NOTE 30,Infinix-X6833B,Infinix X6833B Infinix,Infinix NOTE 30 5G,Infinix-X6711,Infinix X6711 Infinix,Infinix NOTE 40,Infinix-X6853,Infinix X6853 +Infinix,Infinix NOTE 40 5G,Infinix-X6852,Infinix X6852 Infinix,Infinix NOTE 40 Pro,Infinix-X6850,Infinix X6850 +Infinix,Infinix NOTE 40 Pro 5G,Infinix-X6851,Infinix X6851 Infinix,Infinix NOTE 5,Infinix-X604_sprout,Infinix X604 Infinix,Infinix NOTE 5,Infinix-X604_sprout,Infinix X604B Infinix,Infinix NOTE 5 Stylus,Infinix-X605_sprout,Infinix X605 @@ -14018,6 +14367,7 @@ Infinix,NOTE 4,Infinix-X572,Infinix X572 Infinix,NOTE 4,Infinix-X572,Infinix X572-LTE Infinix,NOTE 4 Pro,Infinix-X571,Infinix X571 Infinix,NOTE 4 Pro,Infinix-X571,Infinix X571-LTE +Infinix,NOTE 40 Pro+ 5G,Infinix-X6851B,Infinix X6851B Infinix,NOTE 7,Infinix-X690,Infinix X690 Infinix,NOTE 7,Infinix-X690B,Infinix X690B Infinix,NOTE 7,Infinix-X690C,Infinix X690C @@ -14363,6 +14713,7 @@ Invens,S1,S1,S1 Invens,Spain,nagata,INVES SMART TV Invens,UNO,UNO,UNO Invens,WE1,WE1,WE1 +Inventus,CT7,Aqua,CT7 Inverse Net,EP172BZ,EP172BZ,EP172BZ Inverse Net,EP172PR,EP172PR,EP172PR Inverse Net,LT101,LT101,LT101 @@ -14539,10 +14890,10 @@ Isafe,IS330,IS330,IS330 Isafe,IS520,IS520,IS520 Isafe,IS520.1,IS520_1,IS520_1 Isafe,IS530,IS530,IS530 -Isafe,IS540,IS540,IS540 Isafe,IS655,IS655,IS655 Isafe,IS910.1,IS910_1,IS910_1 Isafe,IS930,IS930,IS930 +Isafe,IS940,IS940,IS940 Iskon,Iskon.Play TV,HY44G,Iskon.Play TV Iskon,Iskon.TV,wh220_iskon,Iskon.TV Iskon,wh220_iskon,wh220_iskon,Iskon.TV @@ -14591,6 +14942,7 @@ Itel,A55,itel-W6003,itel W6003 Itel,A58,itel-A661W,itel A661W Itel,A58 Lite,itel-A631W,itel A631W Itel,A58 Pro,itel-A661WP,itel A661WP +Itel,A58 lite,itel-A631W,itel A631W Itel,A62,itel-A62,itel A62 Itel,A70,itel-A665L,itel A665L Itel,F311,Spice-F311,Spice F311 @@ -14622,6 +14974,7 @@ Itel,P37 Pro(Vision2 Plus),itel-P681LM,itel P681LM Itel,P38,itel-P661W,itel P661W Itel,P51,P51,itel P51 Itel,Pad 1 mini,itel-IKP-31,IKP-31 +Itel,Pad-2,itel-Pad-2,itel-P10002L Itel,Pad1,itel-P10001L,itel P10001L Itel,Prime 4,itel_Prime4,itel Prime 4 Itel,S11,S11,itel S11 @@ -14644,11 +14997,14 @@ Itel,S41,itel_S41,itel S41 Itel,S42,itel-S42,itel S42 Itel,SP591,itel-W6004,itel W6004 Itel,Smart TV,redwood,AI PONT +Itel,VIMOQ A19S,VIMOQ-A507LA,VIMOQ A507LA +Itel,VIMOQ A19S,VIMOQ-A507LT,VIMOQ A507LT Itel,Vision 3,itel-S661LP,itel S661LP Itel,Vision 3,itel-S661LPN,itel S661LPN Itel,Vision1,itel-L6005,itel L6005 Itel,Vision1 Plus(P36 Pro LTE),itel-L6501,itel L6501 Itel,Vision1Pro,itel-L6502,itel L6502 +Itel,W4001S,itel-W4001S,itel W4001S Itel,WOW TV,umeda,WOW TV Itel,it1355,itel_it1355,itel it1355 Itel,it1355M,itel_it1355M,itel it1355M @@ -14684,12 +15040,15 @@ Itel,it1655S,itel_it1655S,itel it1655S Itel,it1702,itel_it1702,itel it1702 Itel,it1703,itel_it1703,itel it1703 Itel,itel A24,itel-A507LN,itel A507LN +Itel,itel A24 2023,itel-A507LX,itel A507LX +Itel,itel A48,itel-L6006F,itel L6006F Itel,itel A58 Lite,itel-A631W-R2,itel A631W Itel,itel AC50,itel-A507LM,itel A507LM Itel,itel V51 LTE,itel-A507LP,itel A507LP Itel,itel 4K TV,SW4H,itel 4K TV Itel,itel A04,itel-A632W,itel A632W Itel,itel A04,itel-A632WM,itel A632WM +Itel,itel A04s,itel-A632L,itel A632L Itel,itel A11,itel_A11,itel A11 Itel,itel A14,itel-A14,itel A14 Itel,itel A14,itel-A14,itel A14TZ @@ -14712,9 +15071,11 @@ Itel,itel A23,itel-A23F,itel A23 Itel,itel A23,itel-A23S,itel A23S Itel,itel A23S,itel-A511LQ,itel A511LQ Itel,itel A24,itel-A507LM,itel A507LM +Itel,itel A24,itel-A507LN,itel A507LN Itel,itel A24,itel-A507LS,itel A507LS Itel,itel A24,itel-L5007,itel L5007 Itel,itel A24 2023,itel-A507LC,itel A507LC +Itel,itel A24 2023,itel-A507LNP,itel A507LNP Itel,itel A24 2023,itel-A507LSP,itel A507LSP Itel,itel A24 Pro,itel-A511LP2,itel A511LP Itel,itel A25,itel-L5002R,itel L5002 @@ -14733,6 +15094,7 @@ Itel,itel A47,itel-L5505,itel L5505 Itel,itel A48,itel-L6006,itel L6006 Itel,itel A48,itel-L6006L,itel L6006L Itel,itel A49 Play,itel-A631L,itel A631L +Itel,itel A50,itel-A667L,itel A667L Itel,itel A510W,itel-A510W,itel A510W Itel,itel A52,itel-A52,itel A52 Itel,itel A52 Lite,itel-A52-Lite,itel A52 Lite @@ -14746,14 +15108,20 @@ Itel,itel A57 2GB,itel-A611WP,itel A611WP Itel,itel A58 Lite,itel-A631W,itel A631W Itel,itel A58 Lite,itel-A631W-R2,itel A631W Itel,itel A58 lite,itel-A631W,itel A631W +Itel,itel A58 lite,itel-A631W-R2,itel A631W Itel,itel A60,itel-A662L,itel A662L Itel,itel A60E,itel-A662L,itel A662L +Itel,itel A60S,itel-A662LM,itel A662LM Itel,itel A60s,itel-A662LM,itel A662LM +Itel,itel A662L,itel-A662L,itel A662L Itel,itel AC12,itel-A14,itel A14 +Itel,itel AC13,itel-W4001,itel W4001 Itel,itel AC13,itel-W4001P,itel W4001P Itel,itel AC32,itel-A16S,itel A16S Itel,itel AC32,itel-W5004,itel W5004 +Itel,itel AC50,itel-A507LMO,itel A507LMO Itel,itel AC50,itel-L5007D,itel L5007D +Itel,itel AC50 Pro,itel-A507LMO,itel A507LMO Itel,itel AC60,itel-L6004L,itel L6004L Itel,itel Alpha Lite,itel-W5008,itel W5008 Itel,itel KidPad 1,Itel-W7001,Itel W7001 @@ -14778,6 +15146,7 @@ Itel,itel P55T,itel-P665L,itel P665L Itel,itel Prime 4,itel_Prime4,itel Prime 4 Itel,itel PrimeTab 1,itel-W7002,itel W7002 Itel,itel PrimeTab 1,itel-W7002P,itel W7002P +Itel,itel RS4,itel-S666LN,itel S666LN Itel,itel S12,itel-S12,itel S12 Itel,itel S16 Pro,itel-W6503,itel W6503 Itel,itel S16 Pro(Vision 2),itel-L6503,itel L6503 @@ -14792,6 +15161,8 @@ Itel,itel S32LTE,itel-S32LTE,itel S32LTE Itel,itel TV,shibuya,itel TV Itel,itel V41,itel-W4001S,itel W4001S Itel,itel V51 LTE,itel-L5007S,itel L5007S +Itel,itel V52 lite,itel-A507LV,itel A507LV +Itel,itel V52A,itel-A507LX,itel A507LX Itel,itel V52LTE,itel-A507LV,itel A507LV Itel,itel VISION 5 Plus,itel-S662LCN,itel S662LCN Itel,itel Vision 3,itel-S661L,itel S661L @@ -14818,6 +15189,7 @@ Itel,itel-A16-Plus,itel-A16-Plus,itel A16 Plus Itel,itel-A510W,itel-A510W,itel A510W Itel,itel-IKP-31,itel-IKP-31,IKP-31 Itel,itel-L5007S,itel-L5007S,itel L5007S +Itel,itel-Pad-2,itel-Pad-2,itel-P10002L Itworks,TM705,TM705,NID_7010 J-COM (cn),SC40,SC40,SC40 J:COM,KSTB7043,KSTB6165,KSTB7043 @@ -14857,6 +15229,7 @@ JREN,JR-J71,JR-J71,JR-J71 JREN,JR-J8,JR-J8,JR-J8 JREN,JR_J1063,JR_J1063,JR_J1063 JREN,JR_J7,JR_J7,JR_J7 +JTWORKS,JTWORKS-IFPD,rk3588_t,JTW JTYPDA,X20L,X20L,X20L JUSYEA,J10_EEA,J10_EEA,J10_EEA JUSYEA,J10_US,J10_US,J10_US @@ -14903,6 +15276,7 @@ JVC,JVC,hongkong,JVC 4K DVB TV JVC,JVC,hongkong,JVC 4K ISDB TV JVC,JVC,kaitak,4KGoogle TV JVC,JVC,kaitak,JVCPA 4KAndroid TV +JVC,JVC,kaitak,JVCSA 4KGoogle TV JVC,JVC,kaitak,JVCSA 4KGoogleTV JVC,JVC,kaitak,Platinum Google TV JVC,JVC,komagome,EU 2K Android TV @@ -14913,6 +15287,7 @@ JVC,JVC,lavender,JVC 4K ISDB TV JVC,JVC,mountbaker,JVC 2K ATSC TV JVC,JVC,mountbaker,JVC 2K DVB TV JVC,JVC,mountbaker,JVC 2K ISDB TV +JVC,JVC,mountbaker,JVC 2K TV JVC,JVC,seocho,JVC 4K Android TV JVC,JVC,seocho,JVC SA 4K Android TV JVC,JVC,seocho,JVC US 4K Android TV @@ -14931,6 +15306,7 @@ JVC,JVC,zhongshan,4K SMART TV JVC,JVC,zhongshan,COL 4K SMART TV JVC,JVC 4K Smart TV NZ,SW6H,JVC 4K Smart TV NZ JVC,JVC 4K Smart TV Plus,anaheim,JVC 4K Smart TV Plus +JVC,JVC G24 TV,anaheim,JVC G24 TV JVC,JVC J20,Cunda,J20 JVC,KR,expo,Premium 4K GTV JVC,LT-32N3115A,ikebukuro,AI PONT @@ -14961,6 +15337,7 @@ Janam,XG200,XG200,XG200 Janam,XG4,XG4,XG4 Janam,XM75,XM75,XM75 Janam,XM75,XM75P,XM75 +Janam,XR2,XR2,XR2 Janam,XT100,XT100,XT100 Janam,XT2,XT2,XT2 Janam,XT200,XT200,XT200 @@ -15035,6 +15412,8 @@ Jumper,EZpad_M10S,EZpad_M10S,EZpad M10S Jumper,EZpad_M10S_ROW,EZpad_M10S_ROW,EZpad M10S Jumper,EZpad_M10_EEA,EZpad_M10,EZpad M10 Jumper,EZpad_M11,EZpad_M11,EZpad_M11 +Jumper,EZpad_M11_Pro,EZpad_M11_Pro,EZpad M11 Pro +Jumper,Z1,Z1,Z1 Juniper Systems,Cedar CT8,CT8,Cedar CT8 Juniper Systems,Mesa3,MS3A,MS3A Just5,CF8,CF8,CF8 @@ -15147,9 +15526,16 @@ KEMPLER STRAUSS,ZKEMPLER,ZKEMPLER,ZKEMPLER KEMPLER STRAUSS,ZKEMPLER PRO,ZKEMPLER_PRO,ZKEMPLERPRO KEMPLER STRAUSS,ZKEMPLER11,ZKEMPLER11,ZKEMPLER11 KEMPLER STRAUSS,ZKEMPLER11PRO,ZKEMPLER11PRO,ZKEMPLER11PRO +KEMPLER STRAUSS,ZKEMPLERMAX,ZKEMPLERMAX,ZKEMPLERMAX KEMPLER STRAUSS,ZKEMPLER_11,ZKEMPLER_11,ZKEMPLER_11 KEMPLER STRAUSS,ZKEMPLER_PLUS,ZKEMPLER_PLUS,ZKEMPLER PLUS +KENSHI,Armor C1s,Armor_C1s,Armor C1s +KENSHI,Armor H1s,Armor_H1s,Armor H1s +KENSHI,Armor I1 Slim,Armor_I1_Slim,Armor I1 Slim +KENSHI,Armor I1w,Armor_I1w,Armor I1w +KENSHI,Armor_C1w_RU,Armor_C1w,Armor_C1w KENSHI,Armor_P1s,Armor_P1s,Armor P1s +KENSHI,E10,E10,E10 KENSHI,E17_RU,E17,E17 KENSHI,E18_RU,E18,E18 KENSHI,E28,E28,E28 @@ -15157,6 +15543,7 @@ KENSHI,H21,H21,H21 KENSHI,H38,H38,H38 KENSHI,Kenshi KP10,KP10,KP10 KENSHI,Kenshi KP11,KP11,KP11 +KENSHI,O8,O8,O8 KEP-Tech,K-S18,K-S18,K-S18 KEYENCE,BT-A500GA,BTA500,BTA500 KEYENCE,BTA700,BTA700,BTA700 @@ -15169,6 +15556,7 @@ KGTEL,X5,X5A,X5 KGTEL,X55E,X55E,X55E KIRISUN,KIRISUN T650,T650,T650 KISA phone,KPAU04,KPAU04,KPAU04 +KJ_Board,KJG IR13,KJG_IR13,KJG_Series KNC (LK),TPC_XTE10D,TPC_XTE10D,TPC_XTE10D KONDE,KD2,KD2,KD2 KONDE,KIDS_FIVE,KIDS_FIVE,KIDS_FIVE @@ -15178,6 +15566,7 @@ KONKA,HK 2K Google TV,capitolhill,HK 2K Google TV KONKA,HK 4K Google TV-A,keoneae,HK 4K Google TV-A KONKA,HK 4K Google TV-B,keoneae,HK 4K Google TV-B KONKA,HK 4K Google TV-C,keoneae,HK 4K Google TV-C +KONKA,HK 4K Google TV-D,keoneae,HK 4K Google TV-D KONKA,HK Google TV-A,bandra,HK Google TV-A KONKA,HYUNDAI 4K Google TV-E,keoneae,HYUNDAI 4K Google TV-E KONKA,KC516,KC516,KC516 @@ -15305,7 +15694,15 @@ KTCtv,Global,stanford,CSV2K KTCtv,Golbal,zhongshan,CSV4K KTCtv,HARMON-TEC,hongkong,4K SMART TV KTCtv,HARMON-TEC,mountbaker,2K SMART TV +KTCtv,IBG,lavender,4K SMART TV +KTCtv,IBG,mountbaker,2K SMART TV +KTCtv,IHOME,hongkong,4K SMART TV +KTCtv,IHOME,mountbaker,2K SMART TV KTCtv,IMMER,hongkong,4K SMART TV +KTCtv,INCLO,hongkong,4K SMART TV +KTCtv,INNO-HIT,hongkong,4K SMART TV +KTCtv,INNO-HIT,lavender,4K SMART TV +KTCtv,INNO-HIT,mountbaker,2K SMART TV KTCtv,INNOVA,hongkong,INNOVA GOOGLE TV 4K KTCtv,INNOVA,lavender,INNOVA GOOGLE TV 4K KTCtv,INNOVA,mountbaker,INNOVA GOOGLE TV @@ -15325,6 +15722,9 @@ KTCtv,NAKAMICHI,lavender,NAKAMICHI GOOGLE TV 4K KTCtv,NAKAMICHI,mountbaker,NAKAMICHI GOOGLE TV KTCtv,NAKAMICHI,stanford,CSV2K KTCtv,NAKAMICHI,zhongshan,CSV4K +KTCtv,NEXUS,lavender,4K SMART TV +KTCtv,OZON,stanford,2K SMART TV +KTCtv,OZON,zhongshan,4K SMART TV KTCtv,PHIMARK,hongkong,4K SMART TV KTCtv,PHIMARK,lavender,4K SMART TV KTCtv,PHIMARK,mountbaker,2K SMART TV @@ -15334,6 +15734,7 @@ KTCtv,QRIOM,lavender,4K SMART TV KTCtv,QRIOM,mountbaker,2K SMART TV KTCtv,RENYA,mountbaker,2K SMART TV KTCtv,REYNA,hongkong,4K SMART TV +KTCtv,ROOMI,hongkong,4K SMART TV KTCtv,RZTK,stanford,2K SMART TV KTCtv,RZTK,zhongshan,4K SMART TV KTCtv,SA,hongkong,EcoTV Plus @@ -15347,6 +15748,7 @@ KTCtv,STAR-TRACK,lavender,STAR-TRACK 4K SMART TV KTCtv,SVISION,hongkong,SVISION 4K Android TV KTCtv,Siera,zhongshan,4K Siera SMART TV KTCtv,Smart TV,mountbaker,EcoTV FHD +KTCtv,THEUHD,hongkong,4K SMART TV KTCtv,TRIBOSS,mountbaker,2K SMART TV KTCtv,VEIRA,lavender,4K SMART TV KTCtv,VEIRA,mountbaker,2K SMART TV @@ -15421,6 +15823,7 @@ Kalley,xiaoyushan_kalley,xiaoyushan,HiSmartTV A4 Kammunica,Kammunica_500V,Kammunica_500V,Kammunica_500V Kammunica,Kammunica_800,Kammunica_800,Kammunica_800 Kammunica,Kammunica_XD,Kammunica_XD,Kammunica_XD +KanDao,Kandao Meeting Ultra,MT1001,MT1001 Kanji,ARGENTINA,martin,KANJI 2K Android TV Kanji,ARGENTINA,patrick,KANJI 4K Android TV Kanji,KANJI_AC05,KANJI-AC05,KJ-AC05 @@ -15494,6 +15897,8 @@ Karbonn,X23,X23,X23 Karma,KG555 Pro,KG555_Pro,KG555 Pro Karma,KG777 Pro,KG777Pro,KG777 Pro Karvy,KA7Q3,KA7Q3,KA7Q3 +KateMedia,KT-2-EEA,KT-2-EEA,KT-2-EEA +KateMedia,KT-2-other,KT-2-other,KT-2-other Kbro,A0_S905X2,sti6160d19,A0_S905X2 Kbro,A25751P,A2_5751P,A25751P Kbro,A2S905X4,A2_S905X4,A2S905X4 @@ -15520,6 +15925,7 @@ Kenbo,O61,O61,O61 Kenbo,O71,O71,O71 Kennex,MD7053G,MD7053G,MD7053G Kenstar,KENSTAR,stanford,2K SMART TV +Kenwood,KENWOOD,mountbaker,KENWOOD 2K TV Kenwood,KWSA80K,XP8800,KWSA80K Kenwood,Kenwood,hongkong,KENWOOD ATSC 4K TV Kenwood,Kenwood,hongkong,KENWOOD DVB 4K TV @@ -15585,6 +15991,7 @@ Kimlok,K712_EEA,K712_EEA,K712_EEA Kinetic,RSTV-A4K-16,DV8219,RSTV-A4K-16 Kingcomm,C500,C500,Kingcomm C500 Kingcomm,E550,E550,Kingcomm E550 +Kinstone,CON_102,CON_102,CON_102 Kinstone,KST070CH_D,KST070CH_D,KST070CH_D Kinstone,KST102SA-EEA,KST102SA-EEA,KST102SA-EEA Kinstone,KST102SF,KST102SF,KST102SF @@ -15601,6 +16008,7 @@ Kioto,MID1021,MID1021,MID1021 Kioto,MID1028,MID1028,MID1028 Kioto,MID1036,MID1036,MID1036 Kiowa,A5_CRISTAL,A5_CRISTAL,A5_CRISTAL +Kiowa,KIOWA,mountbaker,2K SMART TV Kiowa,KIOWA,stanford,2K SMART TV Kiowa,KIOWA,zhongshan,4K SMART TV Kiowa,S5_CRISTAL,S5_CRISTAL,S5_CRISTAL @@ -15726,6 +16134,8 @@ Kogan,Australia,yeongdeungpo,Kogan TV Kogan,Australia and New Zeeland,guandu,Kogan 4K TV Kogan,EU、UK、AP,martin,Kogan TV Kogan,KALED32RH9210STA,ikebukuro,AI PONT +Kogan,KATB1064WGRY,KATB1064WGRY,KATB1064WGRY +Kogan,KATB21064CPA,KATB21064CPA,KATB21064CPA Kogan,Kogan 4K Android TV,SW4H,Kogan 4K Android TV Kogan,Kogan 4K PRO Android TV,SW4H_FF,Kogan 4K PRO Android TV Kogan,Kogan Agora 8 Plus,Agora_8_Plus,Agora 8 Plus @@ -15776,6 +16186,7 @@ Konrow,SWEET_55,SWEET_55,SWEET 55 Konrow,Sky,Sky,Sky Konrow,Smartfive,KONROW_Smartfive,Smartfive Kooda,KOODA 2K TV,shibuya,KOODA 2K TV +Korea Telecom,KG2100,KG2100,KG2100 Korea Telecom,KG3100,KG3100,KG3100 Korea Telecom,KG4100,KG4100,KG4100 Korea Telecom,KI1101,KI1101,KI1101 @@ -15830,8 +16241,12 @@ Kruger&Matz,FLOW6,FLOW6,FLOW6 Kruger&Matz,FLOW6Lite,FLOW6Lite,FLOW6Lite Kruger&Matz,FLOW6S,FLOW6S,FLOW6S Kruger&Matz,FLOW7,FLOW7,FLOW7 +Kruger&Matz,FLOW_11_EEA,FLOW_11,FLOW 11 +Kruger&Matz,FLOW_11_NF_EEA,FLOW_11,FLOW 11 Kruger&Matz,Flow_7S_EEA,Flow_7S,Flow 7S Kruger&Matz,Flow_9_EEA,Flow_9,Flow 9 +Kruger&Matz,KM 2K TV,capitolhill,KM 2K TV +Kruger&Matz,KM 4K TV,keoneae,KM 4K TV Kruger&Matz,KM1066,EAGLE_1066,KM1066 Kruger&Matz,KM1067,EAGLE_1067,KM1067 Kruger&Matz,KM1072,EAGLE_1072,KM1072 @@ -16027,6 +16442,8 @@ Kzen,Eva_E01,Eva_E01,Eva_E01 Kzen,Lamia_L01,Lamia_L01,Lamia L01 LAMINA,LTT8A4G_EEA,LTT8A4G_EEA,LTT8A4G LAMZIEN,LAMZIEN_P2,LAMZIEN_P2,LAMZIEN_P2 +LANDI,M20,M20,M20 +LANDI,M20SE,M20SE,M20SE LARVAND,M863TabH8,M863TabH8,M863TabH8 LARVAND,M863TabH8,M863TabH8,TabH8 LAUNCH,X-431 PAD VII,X-431PADVII,AI System EN P133-01 @@ -17428,9 +17845,7 @@ LINNEX,LI22,LI22,LI22 LINSAY,F-7HD2CORE / F-7HD4CORE / F-10HD2CORE /F-10XHD4CORE,F-7HD2CORE,LINSAY F-7HD2CORE/F-7HD4CORE/F-10HD2CORE/F-10XHD4CORE LISTO,"France, Belgium, Germany, The Netherlands, Italy, Spain, Portugal",yeongdeungpo,LISTO Android TV LISTO,Rumania,tamachi,LISTO Android TV -LLA,Gasobi region,SEI700L,FUSE 4K LLA,Orion,SEI500L,Orion -LLA,Panama,SEI700L,FUSE 4K LLA,VIP6102W LLA-PA,vip6102w,VIP6102W LLA,VIP6102W-LLA,vip6102w,VIP6102W LLOYD,Android TV,R1,ATV R1 @@ -17453,6 +17868,8 @@ LNMBBS,L301,L301,L301 LNMBBS,L60,L60,L60 LNMBBS,L80,L80,L80 LNMBBS,L80-EEA,L80-EEA,L80-EEA +LNMBBS,L80_EEA,L80_EEA,L80_EEA +LNMBBS,L80_US,L80_US,L80_US LNMBBS,P40-EEA,P40-EEA,P40-EEA LNMBBS,P401,P401,P401 LOOQS,F102-EEA,F102-EEA,F102-EEA @@ -17535,6 +17952,7 @@ LVILLE,TPC1013_EEA,TPC1013_EEA,TPC1013_EEA LW,LW688,LW688,LW688 LW,LW788,LW788,LW788 LYNKNEX,LYNKNEX PX5,LYNKNEX-PX5,PX5 +LYNKNEX,PX5,LYNKNEX-PX5,PX5 LYOTECH_LABS,LFi_ONE_EEA,LFi_ONE,LFi ONE Laiq,GLAM,LAIQ_Glam,LAIQ Glam Laiq,Glow,Glow,Glow @@ -17636,6 +18054,7 @@ Lanix,LANIX,zhongshan,4K SMART TV Lanix,LANIX_PAD_E7,ILIUM_PADE7V11,LANIX_PAD_E7 Lanix,Llium L910,Ilium_L910,Ilium L910 Lanix,M1R,M1R,M1R +Lanix,M5,M5,M5 Lanix,M5e,M5e,M5e Lanix,NA,stanford,2K SMART TV Lanix,RX7_v3,RX7_v3,RX7_v3 @@ -17724,6 +18143,7 @@ Lava,BE_U,Be_U,Lava Be_U Lava,BLAZE,LZX403,LAVA Blaze Lava,BLAZE 5G,LXX503,LAVA LXX503 Lava,Blaze 2 Pro,LZX406,LAVA LZX406 +Lava,Blaze Curve,LXX505,LAVA LXX505 Lava,Blaze Pro 5G,LXX506,LAVA LXX506 Lava,ERA 1X,era1X,era1X Lava,ERA 1X,era1X,era1Xpro @@ -17738,7 +18158,9 @@ Lava,Iris 50_Pro,iris_50_Pro,iris 50 Pro Lava,Iris61,LN9910,LN9910 Lava,Iris820,iris820,iris820 Lava,Iris90,iris90,iris90 +Lava,LAVA AGNI 2 5G,LXX504,LAVA LXX504 Lava,LAVA AGNI 5G,LXX501,LAVA LXX501 +Lava,LAVA LZX414,LZX414,LAVA LZX414 Lava,LAVA Z66,Z66,Lava Z66 Lava,LE000Z93P,LE000Z93P,LE000Z93P Lava,LE9810,LE9810,LAVA LE9810 @@ -17763,6 +18185,7 @@ Lava,R1LITE,R1_Lite,R1_Lite Lava,R2,R2,R2 Lava,R3,R3,R3 Lava,R3 Prime,iris90,iris90 +Lava,Storm 5G,LXX508,LAVA LXX508 Lava,T101,LTN10RT,LTN10RT Lava,T101,T101,T101 Lava,T101N,T101N,T101N @@ -18359,6 +18782,7 @@ Lenovo,Lenovo K8 Note,manning,XT1902-3 Lenovo,Lenovo K8 Plus,marino_f,Lenovo K Lenovo,Lenovo K8 Plus,marino_f,Lenovo K8 Plus Lenovo,Lenovo K9,K9,Lenovo L38043 +Lenovo,Lenovo Legion Tab,TB320FC,TB320FC Lenovo,Lenovo Mirage Solo,vega,VR-1541F Lenovo,Lenovo N Series Chromebook,reks_cheets,Braswell Chrome OS Device Lenovo,Lenovo N Series Chromebook,reks_cheets,Intel Braswell Chromebook @@ -18469,6 +18893,7 @@ Lenovo,Lenovo Tab K10 PRC,X6C6F,Lenovo TB-X6C6F Lenovo,Lenovo Tab K10 PRC,X6C6X,Lenovo TB-X6C6X Lenovo,Lenovo Tab K10c,TB-X6E6N,Lenovo TB-X6E6N Lenovo,Lenovo Tab K11,TB330FUP,TB330FUP +Lenovo,Lenovo Tab K11,TB330XUP,TB330XUP Lenovo,Lenovo Tab K8,TB-8506F,Lenovo TB-8506F Lenovo,Lenovo Tab M10 (3rd Gen),TB328FU,TB328FU Lenovo,Lenovo Tab M10 (3rd Gen),TB328XU,TB328XU @@ -18500,6 +18925,7 @@ Lenovo,Lenovo Tab M10 Plus 3rd Gen,TB128XU,Lenovo TB128XU Lenovo,Lenovo Tab M10a 5G,LET02,LET02 Lenovo,Lenovo Tab M11,TB330FU,TB330FU Lenovo,Lenovo Tab M11,TB330XU,TB330XU +Lenovo,Lenovo Tab M11,TB330XUP,TB330XUP Lenovo,Lenovo Tab M7,7305F,Lenovo TB-7305F Lenovo,Lenovo Tab M7,7305I,Lenovo TB-7305I Lenovo,Lenovo Tab M7,7305X,Lenovo TB-7305X @@ -18539,6 +18965,7 @@ Lenovo,Lenovo Tab P11 Pro (2nd Gen),TB132FU,TB132FU Lenovo,Lenovo Tab P12,TB370FU,TB370FU Lenovo,Lenovo Tab P12 Pro,Q706F,Lenovo TB-Q706F Lenovo,Lenovo Tab P12 Pro,Q706Z,Lenovo TB-Q706Z +Lenovo,Lenovo Tab Plus,TB351FU,TB351FU Lenovo,Lenovo Tab QT K11,TB-J6C6F,Lenovo TB-J6C6F Lenovo,Lenovo Tab QT K11,TB-J6C6N,Lenovo TB-J6C6N Lenovo,Lenovo Tab QT K11 Pro 5G,J607Z,Lenovo TB-J607Z @@ -18831,6 +19258,7 @@ Lexibook,Fluo,MFC145FR1,MFC145FR1 Lexibook,Fluo XL,MFC191FR2,MFC191FR2 Lexibook,Fluo XL Premium Edition,MFC510FR1,MFC510FR1 Lexibook,LT10,LT10,LT10 +Lexibook,LT10EN_09,LT10EN_09,LT10EN_09 Lexibook,"LexiTab 10""",MFC512,MFC512FR Lexibook,LexiTab 10'',mfc511,MFC511DE Lexibook,LexiTab 10'',mfc511,MFC511EN @@ -18919,9 +19347,12 @@ Logic Mobility,L66,L66,L66 Logic Mobility,L66 LITE,L66_LITE,L66 LITE Logic Mobility,L66 PRO,L66_PRO,LOGIC L66 PRO Logic Mobility,L68,LOGIC_L68,LOGIC L68 +Logic Mobility,L68 Ultra,L68_Ultra,L68_Ultra +Logic Mobility,LOGIC L55V PLUS,LOGIC_L55V_PLUS,LOGIC L55V PLUS Logic Mobility,LOGIC L50T,LOGIC_L50T,LOGIC L50T Logic Mobility,LOGIC L61,LOGIC_L61,LOGIC L61 Logic Mobility,LOGIC L63,LOGIC_L63,LOGIC L63 +Logic Mobility,LOGIC L63M,LOGIC_L63M,L63M Logic Mobility,LOGIC L65 LITE,LOGIC_L65_LITE,LOGIC L65 LITE Logic Mobility,LOGIC MV01,LOGIC_MV01,LOGIC MV01 Logic Mobility,LOGIC MV02,LOGIC_MV02,LOGIC MV02 @@ -18930,6 +19361,7 @@ Logic Mobility,LOGIC_L55S,LOGIC_L55S,LOGIC L55S Logic Mobility,LOGIC_L5D,LOGIC_L5D,LOGIC_L5D Logic Mobility,LOGIC_L60,LOGIC_L60,LOGIC L60 Logic Mobility,LOGIC_L65,LOGIC_L65,LOGIC L65 +Logic Mobility,LOGIC_L66M,LOGIC_L66M,L66M Logic Mobility,LOGIC_L66M,LOGIC_L66M,LOGIC L66M Logic Mobility,LOGIC_X40,LOGIC_X40,X40 Logic Mobility,LOGIC_X60G,LOGIC_X60G,LOGIC_X60G @@ -19007,6 +19439,7 @@ Logicom,L-IXIR TAB 701 3G,TAB701,L-IXIR TAB 701 3G Logicom,L-IXIR TAB 840,L-IXIR_TAB_840,L-IXIR_TAB_840 Logicom,L-ite_Tab1060,LiteTab1060,L-ite_Tab1060 Logicom,L351,L-EMENT351,L-EMENT351 +Logicom,L65T,LOGIC_L65T,LOGIC L65T Logicom,L743,L-EMENT743,L-EMENT743 Logicom,LA_TAB_LINK71,LA_TAB_LINK71,LOGICOM_LA_TAB_LINK_71 Logicom,LEMENT TAB 740,LEMENTTAB740,L-EMENT 740 @@ -19114,6 +19547,7 @@ Logicom,Touch Tablet CT730,CT730,CT730 Logicom,VRBOT552,VRBOT552,VR BOT 552 Logicom,VRBOT552PLUS,VRBOT552PLUS,VR BOT 552 PLUS Logicom,Volt-R,Volt-R,Volt-R +Logicom,Wave 2,Wave_2,Wave 2 Logicom,le Moov,LeMoov,LeMoov Logik,LOGIK,sadang,LOGIK 4K Android TV Logik,LOGIK,tabata,LOGIK 2K Android TV @@ -19208,6 +19642,7 @@ M4tel,M4 SS4458,TOUCHPLUS02A-S17A,M4 SS4458 M4tel,M4 SS4458-R,M4-SS4458-R,M4-SS4458-R M4tel,R2 Plus,R2_Plus,R2_Plus MAG,MAG,lavender,4K SMART TV +MAG,MAG,mountbaker,2K SMART TV MAG,MAG425A,MAG425A,MAG425A MAG,MAG500A,MAG500A,MAG500A MAGCH,M210,M210,M210 @@ -19218,6 +19653,8 @@ MAGCH,M321-EEA,M321-EEA,M321-EEA MAGCH,M520,M520,M520 MAGCH,M610,M610,M610 MAGCH,M610-EEA,M610-EEA,M610-EEA +MAGCH,M820,M820,M820 +MAGCH,M820-EEA,M820-EEA,M820-EEA MAGCH,M821,M821,M821 MAGCH,M821-EEA,M821-EEA,M821-EEA MAGCH,M910,M910,M910 @@ -19226,6 +19663,7 @@ MAGICworld,Smart TV,longshan,AI PONT MAGNUMTECH,MG715,MG715,MG715 MARVUE,M11,M11,M11 MARVUE,M12,M12,M12 +MARVUE,M15,M15,M15 MARVUE,M8,M8,M8 MARVUE,M81,M81,M81 MARVUE,Pad_M10,Pad_M10,Pad_M10 @@ -19243,6 +19681,7 @@ MAZE,SSB-508E,SSB-508E,SSB-508E MAZE,SSB5518R,SSB5518R,SSB5518R MAZE,SSB558R,SSB558R,SSB558R MAZE,SSB700T,SSB700T,SSB700T +MCTV,MCIFPD,rk3588_t,MCIFPD MDC Store,Grand,Grand,Grand MDC Store,M100,M100,M100 MDC Store,M200,M200,M200 @@ -19256,16 +19695,21 @@ MDC Store,Prime_S,Prime_S,Prime_S MEDER,MEDER,smartguide210_eea,SmartGuide_2.10 MEDER,SmartGuide210-464,SmartGuide210-464,SmartGuide210-464 MEDER,m60,m60,m60 +MEFERI,CIAO,CIAO,CIAO MEFERI,ME10,ME10,ME10 MEFERI,ME40K,ME40K,ME40K MEFERI,ME40M,ME40K_M,ME40K MEFERI,ME61,ME61,ME61 MEFERI,ME65,ME65,ME65 +MEFERI,ME74,ME74,ME74 +MEIZE,D105,D105,D105 +MEO(Portugal),AVATAR 3,VSB3918-MEO,MEOBox 4K (VSB3918) MEO(Portugal),MEO TV Box 4K,DV8555-MEO,MEO TV Box 4K MEO(Portugal),MEO TV Box 4K,DV8985-MEO,MEOBox 4K DV8985 MEO(Portugal),MEO TV Box 4K (DIW3930),DIW3930-MEO,MEO TV Box 4K (DIW3930) MEO(Portugal),MEOBox 4K,DIW3930-MEO,MEO TV Box 4K (DIW3930) MEO(Portugal),MEOBox 4K v2,DIW377-MEO,MEO TV Box 4K (DIW377) +METHOD_XI,KW_IWB,KW_RK3588,METHOD_XI_8600 MG Series,Any 302,TR10CS2_3,TR10CS2 MG series,Any 302,TR10CS1_15,TR10CS1 MG series,Any 302,TR10CS2_2,TR10CS2 @@ -19283,6 +19727,7 @@ MIFONE,Model 6 Pro Max 4G,Model-6-Pro-Max-4G,Model-6-Pro-Max-4G MIKU,TAB63A,TAB63A,TAB63A MILECTRIC,"SPAIN, MOROCCO, PORTUGAL",tamachi,MILECTRIC Android TV MILECTRIC,"SPAIN, MOROCCO, PORTUGAL",yeongdeungpo,MILECTRIC Android TV +MINDEO,M50_EEA,M50_EEA,M50_EEA MINDEO,MS8389,MS8389,MS8389 MINDEO,MS8389,MS8389RU,MS8389 MINDEO,MS8589,MS8589,MS8589 @@ -19294,6 +19739,7 @@ MIRAY,MIDM_737,MIDM_737,MIDM_737 MIRAY,MIDM_F10,MIDM_F10,MIDM_F10 MIRAY,R3,R3,R3 MIRAY,R4,R4,R4 +MIRAY,TM4G_1006,TM4G_1006,TM4G_1006 MIRAY,TPM4G_105,TPM4G_105,TPM4G_105 MIRAY,TPM4G_E108,TPM4G_E108,TPM4G_E108 MIRAY,TPM4G_E108_A,TPM4G_E108_A,TPM4G_E108 @@ -19375,6 +19821,7 @@ MOVISUN,TAB-S1,TAB-S1,TAB-S1 MOXNICE,P50-EEA,P50-EEA,P50-EEA MOXNICE,P50-ROW,P50-ROW,P50-ROW MOXNICE,P63_EEA,P63,P63 +MPORT,MPORT-IFPD,rk3588_t,e_Smarter MPman,MPDC1006,MPDC1006,MPDC1006 MPman,MPDC706,MPDC706,MPDC706 MSI,NB32-Gen2,NB32-Gen2,NB32-Gen2 @@ -19399,6 +19846,7 @@ MTC,Hansung,seocho,Hansung 4K Android TV MTC,Hansung,shilin,Hansung4KAndroidTV MTC,Infiniton,bangbae,Infiniton 4K Android TV MTC,Infiniton,komagome,Infiniton 2K Android TV +MTC,JVC,shilin,JVC TV Ultra MTC,JVC,shilin,JVC US 4K Android TV MTC,KIVI,shilin,KIVI 4K Android TV MTC,KLEINZ,shilin,KLEINZ4KAndroidTV @@ -19421,6 +19869,7 @@ MTC,VINCENT,shilin,VINCENT 4K Android TV MTC,Vodafone Smart mini,Vodafone_875,MTC 970H MTC,WasabiMango,shilin,WasabiMango4KAndroidTV MTC,chile,S2000,S2000-Z0C11 +MTN,S5012,S5012,S5012 MTN Group,5982C3,MTN-TBW5982C3,MTN-TBW5982C3 MTN Group,8978P,MTN-8978P,MTN-8978P MTN Group,K919,K919,K919 @@ -19456,6 +19905,7 @@ MULTYNET,Pakistan,marina,MULTYNET 4K SMART TV MULTYNET,Pakistan,nagata,MULTYNET 2K SMART TV MULTYNET,Pakistan,tamachi,MULTYNET FHD Android TV MULTYNET,Pakistan,yeongdeungpo,MULTYNET UHD Android TV +MUNGYO,MUNGYO MGEB,MGEB,MGEB Mach Speed,xtreme,X_treme_Play_Tab,X-treme Play Tab MachSpeed (Apollo Brands),STR-9.6-Tablet,STR_96_Tablet,STR-9.6-Tablet MachSpeed (Apollo Brands),Trio Stealth_10 Tablet,D_10AL,Trio Stealth_10 @@ -19497,6 +19947,7 @@ Majestic,TAB_914,TAB_914,TAB_914 Majestic,TAB_915_4G,TAB_915_4G,TAB_915_4G Majestic,TAB_916_4G,TAB_916_4G,TAB_916_4G Majestic,TAB_918_PRO_4G,TAB_918_PRO_4G,TAB_918_PRO_4G +Majestic,TAB_920_PLUS_4G,TAB_920_PLUS_4G,TAB_920_PLUS_4G Making Life Simple,Brace,iQM801,iQM801 Making Life Simple,MLS Novel 3G,iQ181011N,iQ181011N Making Life Simple,MLS iQ1452aN,iQ1452aN,iQ1452aN @@ -19708,7 +20159,11 @@ Maxwest,MAX_TAB_7,MAX_TAB_7,MAX_TAB_7 Maxwest,MX-A4R,MX-A4R,MX-A4R Maxwest,MX-N62,MX-NN62WW01,MX-NN62 Maxwest,MX-N62,MX-NN62WW01,NITRO N62 +Maxwest,MX-N63,MX-N63,MX-N63 +Maxwest,Maxwest ASTRO_65T,MX-A65T,MX-A65T Maxwest,NITRO 55M,MX-N55MWW,MX-N55M +Maxwest,NITRO N6,MX-NN6,NITRO N6 +Maxwest,NITRO_55S,MX-N55S,MX-N55S Maxwest,Nitro 4N LTE,Nitro_4N_LTE,Nitro 4N LTE Maxwest,Nitro 4X,Nitro_4X,Nitro_4X Maxwest,Nitro 5 GO,Nitro_5_GO,Nitro 5 GO @@ -19747,6 +20202,7 @@ Maze_speed,MS5524G,MS5524G,MS5524G Maze_speed,MS5528G,MS5528G,MS5528G Maze_speed,MS5539G,MS5539G,MS5539G Maze_speed,MS5614G,MS5614G,MS5614G +Maze_speed,SM4T,SM4T,SM4T Maze_speed,SSB1000T,SSB1000T,SSB1000T Maze_speed,SSB1001T,SSB1001T,SSB1001T Maze_speed,SSB10T323,SSB10T323,SSB10T323 @@ -20029,6 +20485,7 @@ Memorex,MTAB-0753AK,MTAB-07535AK,MTAB-07535AK Memorex,MTAB-08530A,MTAB-08530A,MTAB-08530A Memorex,MTAB-09541AB,MTAB-09541AB,MTAB-09541AB MengalTab,ANZATECH,Mengaltab_Echague_anzatech,ANZATECH +Mengdash,M_Q58_EEA,M_Q58_EEA,M_Q58EEA Metro,E2,E2,E2 Metro,Pro5,Pro5,Pro5 Mgt electric,Lumyai,Lumyai,Lumyai @@ -20042,8 +20499,12 @@ MiTAC,N635_8,skating,N635_8 MiTAC,N650,prometheus,N650 MiTAC,N651,centaur,N651 MiTAC,N672,hera_pro,N672 +MiTAC,hera_pro,hera_pro,N672 +MiTAC,hera_pro_eea,hera_pro,N672 MiTAC,phaeton,phaeton,N722 MicroTouch,IDC_Series,IDC_Series,IDC_Series +MicroTouch,M1_IC0_N702,MACH_10,MACH_10 +MicroTouch,M1_IC1_N700_4G,IDC_Series_4G,IDC_Series_4G Micromax,32CAM6SHD,ikebukuro,AI PONT Micromax,A110,s9081,Micromax A110 Micromax,A111,A111,A111 @@ -20417,6 +20878,7 @@ Mirage,82S,MI-CH-82S,MI-CH-82S Mirage,MI-SO-81T,MI-SO-81T,MI-SO-81T Miramage,MF3D2211,MF3D2211,MF3D2211 Miramage,MTJ-X43FLS,barking,Miramage Smart Display +Miramage,Miramage Smart Display,beaudry,Miramage Smart Display Miramage,TV3223HDA11SMARTG,beaudry,Miramage AndroidTV Miramage,TV5023UHDA11SMARTG,barking,Miramage AndroidTV Mito,4K Smart TV,pioneer,4K PA Smart TV @@ -20455,6 +20917,7 @@ Mobell,S60,mobell_S60,S60 Mobell,S61,S61,S61 MobiIoT,Hotah,HotahOTG_N,HotahOTG MobiIoT,Hotah,HotahOTG_V,HotahOTG +MobiIoT,MobiGo,WM19,WM19 MobiIoT,MobiGo 2+,MobiGo2P,MobiGo2P MobiIoT,MobiGo 2+,MobiGo2PQV,MobiGo2P MobiIoT,MobiGo 2+ Pro,MobiGo2PP,MobiGo2PP @@ -20463,6 +20926,10 @@ MobiIoT,Mobigo2,MobiGo2,MobiGo2 MobiIoT,Mobigo2L,MobiGo2L,MobiGo2L MobiOcean,MOT102,MOT102,MOT102 MobiVista,VisioTab_10,VisioTab_10,VisioTab 10 +Mobicel,IX PLUS,IX_PLUS,IX_PLUS +Mobicel,P5,P5,P5 +Mobicel,RX,RX,RX +Mobicel,VX21,VX21,VX21 Mobicell,4U,4U,4U Mobicell,ARC,ARC,ARC Mobicell,ASTRO,ASTRO,ASTRO @@ -20493,10 +20960,12 @@ Mobicell,DANDY_RW,DANDY_RW,DANDY_RW Mobicell,DANDY_ZAM,DANDY_ZAM,DANDY_ZAM Mobicell,ECHO,ECHO,ECHO Mobicell,EGO,EGO,EGO +Mobicell,EPIC MAX,EPIC_MAX,EPIC MAX Mobicell,EPIC PRO 1,EPIC_PRO_1,EPIC PRO_1 Mobicell,EPIC PRO_2,EPIC_PRO_2,EPIC PRO_2 Mobicell,EPIC_1,EPIC_1,EPIC_1 Mobicell,EPIC_2,EPIC_2,EPIC_2 +Mobicell,F50,F50,F50 Mobicell,FAME,FAME,FAME Mobicell,FAME_DS,FAME_DS,FAME_DS Mobicell,FENDY_DS,FENDY_DS,FENDY_DS @@ -20514,6 +20983,7 @@ Mobicell,HERO,HERO,HERO Mobicell,HERO X,HERO_X,HERO_X Mobicell,HERO_DS,HERO_DS,HERO_DS Mobicell,HYPE,HYPE,HYPE +Mobicell,IX,IX,IX Mobicell,IX PRO,IX_PRO,IX PRO Mobicell,IX-1,IX-1,IX-1 Mobicell,Icon,Mobicel_Icon,Icon @@ -20525,6 +20995,7 @@ Mobicell,Legend_Max_2,Legend_Max_2,Legend Max_2 Mobicell,METRO2,METRO2,MOBICEL METRO2 Mobicell,MX1,MX1,MX1 Mobicell,MX2,PX12,MX2 +Mobicell,MX2 PLUS,MX2_PLUS,MX2 PLUS Mobicell,Matrix,Matrix,Matrix Mobicell,Mobicel,Sonic,Sonic Mobicell,Mobicel,Venus,Venus @@ -20552,6 +21023,7 @@ Mobicell,R1Plus,R1PLUS_1,R1PLUS_1 Mobicell,R3,R3,R3 Mobicell,R4,R4,R4 Mobicell,R4 LTE,R4_LTE,R4 LTE +Mobicell,R6_PLUS,R6_PLUS,R6 PLUS Mobicell,R7,R7,R7 Mobicell,R7,R7_1,R7_1 Mobicell,R7_2,R7_2,R7_2 @@ -20569,6 +21041,7 @@ Mobicell,RIO_ZAM,RIO_ZAM,RIO_ZAM Mobicell,RUBY,RUBY,RUBY Mobicell,RUSH,RUSH,RUSH Mobicell,RX PRO,RX_PRO,RX PRO +Mobicell,RX Plus,RX_Plus,RX Plus Mobicell,RX17,RX17,RX17 Mobicell,Retro,Retro,Retro Mobicell,SHIFT,SHIFT,SHIFT @@ -20705,6 +21178,7 @@ Mobiwire,MobiWire Kosumi,Kosumi,Kosumi Mobiwire,Mobiwire Verda,Verda,Mobiwire Verda Mobiwire,ONE,H5032U,ONE Mobiwire,Pegasus,Pegasus,Pegasus +Mobiwire,S26,H5112,S26 Mobiwire,S4040,S4040,S4040 Mobiwire,STARSHINE 5,Cygnus_mini,STARSHINE5 Mobiwire,STARSHINE 5,Cygnus_mini,STARSHINE_5 @@ -20723,6 +21197,7 @@ Mobiwire,Tala,Tala,Tala Mobiwire,Telenor SmartPlus,Telenor_SmartPlus,Telenor_SmartPlus Mobiwire,Telstra Lite Plus,Telstra_Lite_Plus,Telstra Lite Plus Mobiwire,V Lite 2,V_Lite_2,V Lite 2 +Mobiwire,V Pro 2 4G,V_Pro_2,V Pro 2 Mobiwire,V Smart 2,V_Smart_2,V Smart 2 Mobiwire,V.40,Nextel,V.40 Mobiwire,V.45,VSN,V.45S @@ -20785,9 +21260,12 @@ Montblanc,Summit,bluefish,SUMMIT Montblanc,Summit,lionfish,MB SUMMIT Montblanc,Summit 2+,coralia,Summit 2+ Montblanc,Summit Lite,icefish,SUMMIT LITE +Mookia,M-764,M-764,M-764 +Mookia,MM-35_EEA,MM-35_EEA,MM-35_EEA Mookia,MM10A,MM10A,MM10A Moolah Mobile,T10,T10,T10 Moolah Mobile,T100,T100,T100 +Moolah Mobile,T10_Pro,T10_Pro,T10_Pro Morep,Mavic 10,Mavic_30,M850 Morep,Mavic_Plus_DS,Mavic_Plus,M610DS Morep,Morep Mavic 10,Mavic_10,M830 @@ -21269,10 +21747,14 @@ Motorola,moto g 5G (2022),austin,moto g 5G (2022) Motorola,moto g 5G (2022),austin,moto g pure Motorola,moto g 5G - 2023,pnangn,moto g 5G - 2023 Motorola,moto g 5G - 2023,pnangn,moto g stylus 5G (2022) +Motorola,moto g 5G - 2024,fogo,moto g 5G - 2023 +Motorola,moto g 5G - 2024,fogo,moto g 5G - 2024 Motorola,moto g 5G plus,nairo,moto g 5G plus Motorola,moto g fast,rav,moto g fast Motorola,moto g play (2021),guamna,moto g play (2021) Motorola,moto g play (2021),guamna,moto g play (XT2093DL) +Motorola,moto g play - 2024,fogona,moto g play - 2024 +Motorola,moto g play - 2024,fogona,motorola edge 40 pro Motorola,moto g power,sofia,moto g power Motorola,moto g power (2021),borneo,moto g power Motorola,moto g power (2021),borneo,moto g power (2021) @@ -21280,6 +21762,8 @@ Motorola,moto g power (2022),tonga,moto g power (2022) Motorola,moto g power (XT2041DL),sofia,moto g power (XT2041DL) Motorola,moto g power 5G - 2023,devonn,moto g power 5G - 2023 Motorola,moto g power 5G - 2023,devonn,moto g(50) 5G +Motorola,moto g power 5G - 2024,cancunn,moto g power 5G - 2023 +Motorola,moto g power 5G - 2024,cancunn,moto g power 5G - 2024 Motorola,moto g pro,sofiap_sprout,moto g pro Motorola,moto g pure,ellis,moto g power Motorola,moto g pure,ellis,moto g pure @@ -21352,6 +21836,10 @@ Motorola,moto g(9),guamp,moto g(9) Motorola,moto g(9) play,guamp,moto g(9) play Motorola,moto g(9) plus,odessa,moto g(9) plus Motorola,moto g(9) power,cebu,moto g(9) power +Motorola,moto g04,lion,lion +Motorola,moto g04,lion,moto g04 +Motorola,moto g04s,lion,moto g04 +Motorola,moto g04s,lion,moto g04s Motorola,moto g10 power,capri,moto g(10) power Motorola,moto g13,penangf,moto g13 Motorola,moto g13,penangf,penangf @@ -21398,6 +21886,8 @@ Motorola,moto g62 5G,rhodec,moto g51 5G Motorola,moto g62 5G,rhodec,moto g62 5G Motorola,moto g62 5G,rhodei,moto g62 5G Motorola,moto g62 5G,rhodei,moto g71 5G +Motorola,moto g64 5G,cancunf,moto g54 5G +Motorola,moto g64 5G,cancunf,moto g64 5G Motorola,moto g71 5G,corfur,moto g(50) Motorola,moto g71 5G,corfur,moto g71 5G Motorola,moto g72,vicky,moto g(50) 5G @@ -21450,6 +21940,10 @@ Motorola,motorola edge 40 neo,manaus,motorola edge (2022) Motorola,motorola edge 40 neo,manaus,motorola edge 40 neo Motorola,motorola edge 40 pro,rtwo,motorola edge 30 pro Motorola,motorola edge 40 pro,rtwo,motorola edge 40 pro +Motorola,motorola edge 50 pro,eqe,motorola edge 40 pro +Motorola,motorola edge 50 pro,eqe,motorola edge 50 pro +Motorola,motorola edge 50 ultra,ctwo,motorola edge 40 pro +Motorola,motorola edge 50 ultra,ctwo,motorola edge 50 ultra Motorola,motorola edge 5G UW (2021),berlna,motorola edge 5G UW Motorola,motorola edge 5G UW (2021),berlna,motorola edge 5G UW (2021) Motorola,motorola edge S30,xpeng,XT2175-2 @@ -21504,6 +21998,7 @@ Motorola Solutions,LEX L10g,lexl10g,LEX L10g Motorola Solutions,LEX L10ig,lexl10ig,LEX L10ig Motorola Solutions,LEX L11,lexl11g_64,LEX L11 Motorola Solutions,LEX L11,lexl11g_64,LEX L11a +Motorola Solutions,LEX L11,lexl11g_64,LEX L11e Motorola Solutions,LEX L11,lexl11g_64,LEX L11j Motorola Solutions,LEX L11,lexl11g_64,LEX L11l Motorola Solutions,MOTOTRBO ION,mkz_sdm660_64,MSLB-MKZ900 @@ -21521,6 +22016,8 @@ Movado,Movado Connect,stargazer,Stargazer Movado,Movado Connect 2.0,tilefish,Movado Connect 2 Moveby,LINNEX,LX50,LX50 Movfast,Ranger2,MFT1522,Ranger2 +Movfast,Ranger2 Lite,MFT1621,Ranger2K +Movfast,Ranger2K,MFT1621,Ranger2K Movic,MOVIC_W5,MOVIC_W5,MOVIC-W5 Movienet,M7,SFO,M7 Moviltelco Trade,A58B,A58B,A58B @@ -21566,6 +22063,7 @@ Movitel,M9112,M9112,M9112 Movitel,M9113,M9113,M9113 Movitel,M9114,M9114,M9114 Movitel,M9116,M9116,M9116 +Movitel,M9117,M9117,M9117 Movitel,Movitel_M9104,Movitel_M9104,Movitel_M9104 Movix,Movix,MVX01,Movix Movix,Movix Go,MVX02,Movix Go @@ -21596,9 +22094,13 @@ Mpman,PH574,PH574,PH574 Mpman,PH60,PH60,PH60 Mpman,PH604,PH604,PH604 Mswipe,WiseposGo,L200,L200 +Mtek,MTEK,hongkong,4K SMART TV +Mtek,MTEK,lavender,4K SMART TV +Mtek,MTEK,mountbaker,2K SMART TV Mtek,MTEK,stanford,2K SMART TV Mtek,MTEK,zhongshan,4K SMART TV Multilaser,Brazil,martin,Multilaser Android TV +Multilaser,DI01_M7_WIFI,DI01_M7_WIFI,DI01_M7_WIFI Multilaser,Discovery,Discovery,Discovery Multilaser,F Max 2,Multilaser_F_Max_2,Multilaser_F_Max_2 Multilaser,G 3,Multilaser_G_3,Multilaser_G_3 @@ -21633,6 +22135,7 @@ Multilaser,M10 4G PRO,ML_SO1G_M10_4G_PRO,M10_4G_PRO Multilaser,M10 4G T3,ML-WI1C-M10-4G-T3,M10-4G-T3 Multilaser,M10 4G TERE,ML_JI0B_M10_4G_TERE,M10_4G_TERESOPOLIS Multilaser,M10 4G TERESOPOLIS,ML_SO0G_M10_4G_T,M10_4G_TERESOPOLIS +Multilaser,M10 WIFI,ML_SO0U_M10_WIFI,M10_WIFI Multilaser,M10-3G,ML-JI06-M10-3G,M10-3G Multilaser,M10-4G,ML-JI03-M10-4G,M10-4G Multilaser,M10A,M10A,M10A @@ -21666,6 +22169,7 @@ Multilaser,M7 WIFI,ML_SO0P_M7_WIFI,M7_WIFI Multilaser,M7 WIFI,ML_SO0R_M7_WIFI,M7_WIFI Multilaser,M7 WIFI,ML_SO0S_M7_WIFI,M7_WIFI Multilaser,M7 WIFI,ML_SO1E_M7_Wifi,M7_WIFI +Multilaser,M7 WIFI,ML_SO1S_M7_WIFI,M7_WIFI Multilaser,M7 WIFI,ML_SO2E_M7_WIFI,M7_WIFI Multilaser,M7-3G PLUS,ML-JI21-M7-3G-PLUS,M7-3G-PLUS Multilaser,M7-3G PLUS,ML-WI-M7_3G_PLUS,ML-WI-M7_3G_PLUS @@ -21698,6 +22202,8 @@ Multilaser,M7sLite,ML-SO06-M7sLite,M7sLite Multilaser,M8 4G,ML-WI0G-M8-4G,M8-4G Multilaser,M8 4G,ML_JI0I_M8_4G,M8_4G Multilaser,M8 4G,ML_SO0J_M8_4G,M8_4G +Multilaser,M8 4G,ML_SO0T_M8_WIFI,M8_WIFI +Multilaser,M8 4G,ML_SO0V_M8_4G,M8_4G Multilaser,M8 4G,ML_SO1J_M8_4G,M8_4G Multilaser,M8 4G,ML_SO4J_M8_4G_T3,M8_4G_T3 Multilaser,M8 Wifi,ML_SO0F_M8_WIFI,M8_WIFI @@ -21722,6 +22228,7 @@ Multilaser,MLX8,ML-WI23-MLX8,MLX8 Multilaser,MLX8,MLX8,MLX8 Multilaser,MLX8 4G,MLX8_4G,MLX8_4G Multilaser,MLX8_4G,ML_SO09_MLX8_4G,MLX8_4G +Multilaser,ML_GW0C_M10_4G,ML_GW0C_M10_4G,ML_GW0C_M10_4G Multilaser,ML_JI1C_M7S_PLUS,ML_JI1C_M7S_PLUS,M7S_PLUS Multilaser,ML_JI29_M9S_GO,ML_JI29_M9S_GO,M9S_GO Multilaser,ML_JI37_M7S_LITE,ML_JI37_M7S_LITE,M7S_LITE @@ -22089,6 +22596,7 @@ NEC,Tab M7 3rd Gen,LAVIET77SD1,LAVIE T7 7SD1 NELATECH,TAB8V1,TAB8V1,TAB8V NELATECH,TAB8V1,TAB8V1,TAB8V1 NELATECH,V22S1,V22S1,V22S +NELATECH,X1,X1_Pro,X1 NEO,GF214-NEO,GF214-NEO,GF214-NEO NEO,GF215-REY,GF214-NEO,GF215-REY NEONIQ,NQT-1013GIQ,NQT-1013GIQ,NQT-1013GIQ @@ -22111,6 +22619,7 @@ NEWSUN,S20,S20,S20 NEWSUN,S9,S9,S9 NEWTON,H1,H1,H1 NEXA,NexaN5a,NexaN5a,NexaN5a +NEXWIN,interactive flat panel display,IFPD_RK3588,NXW_GB86_13UP NGM Italia SRL,Android TV,R1,ATV R1 NGM Italia SRL,Android TV,R2,ATV R2 NGM Italia SRL,Danamic Now,DynamicNow,Now @@ -22175,6 +22684,7 @@ NOVOJOY,NV10,NV10,NV10 NOWO,DV 8535 4K,DV8535-KPN,DV 8535 4K NOWO,DV 8935 X4,DV8935-KPN,DV 8935 X4 NSPRE,NX-20PRO1,NX-20PRO1,NX-20PRO1 +NURIBOM,NRB-IFPD,rk3588_t,MP_Series NVIDIA,SHIELD Android TV,foster,SHIELD Android TV NVIDIA,SHIELD Android TV,foster,SHIELD Console NVIDIA,SHIELD TV,darcy,SHIELD Android TV @@ -22317,6 +22827,8 @@ Nebula,D2150,D2140-Cosmos,D2150 Nebula,D2160,D2140-Cosmos,D2160 Nebula,D2241,DM8260,D2241 Nebula,D2421,DM8261,D2421 +Nebula,Nebula_Capsule_3,taihang,D2425 +Nebula,Nebula_Mars_2_V2,taihang,D2325 Necnon,3L-2,3L-2,3L-2 Necnon,M002K-2,M002K-2,M002K-2 Necnon,M002K-2,M002K_2,M002K-2 @@ -22379,7 +22891,10 @@ Neusoft,S611,S611,S611 New Balance,Run IQ,shasta,NB RunIQ NewBridge,NBTB101,NBTB101,NBTB101 NewBridge,NBTB102,NBTB102,NBTB102 +Newal,Newal 2K SMART TV,nagata,Newal 2K SMART TV +Newal,Newal 4K SMART TV,marina,Newal 4K SMART TV Newings,T18,T18,T18 +Newland,N950,SmartPOS,N950 Newland,NLS-MT6550-AM,NLS-MT6550-AM,NLS-MT65 Newland,NLS-MT6552-EEA,NLS-MT6552-EEA,NLS-MT65 Newland,NLS-MT6552-GL,NLS-MT6552-GL,NLS-MT65 @@ -22393,10 +22908,12 @@ Newland,NLS-MT9052-RU,NLS-MT9052-GL,NLS-MT90 Newland,NLS-MT9055-GL,NLS-MT9055-GL,NLS-MT90 Newland,NLS-MT93,NLS-MT93,NLS-MT93 Newland,NLS-MT95,NLS-MT95,NLS-MT95 +Newland,NLS-N7,NLS-N7,NLS-N7 Newland,NLS-NFT10,NLS-NFT10-GL,NLS-NFT10 Newland,NLS-NFT10,NLS-NFT10-RU,NLS-NFT10 Newland,Newland NLS-MT90,NLS-MT90-GL,NLS-MT90 Newland,Newland NLS-N7,NLS-N7-GL,NLS-N7 +Newland,Newland NLS-NQuire,NLS-NQuire,NLS-NQuire Newline,23QA,velvet,LGA311D2 Newline,Q23,rk3588_t,Q23 Newline,WB55860W,WB55860W,WB55860W @@ -22443,6 +22960,8 @@ Nikkei,NI32HG7NA9,ikebukuro,AI PONT Nikkei,NI43UG7NA9,samseong,AI PONT Nikon,COOLPIX,S800c,COOLPIX S800c Nikon,COOLPIX S810c,s810c,COOLPIX S810c +Nissan,NissanConnect,aivi2_b,AIVI2 B +Nissan,NissanConnect,aivi2_n_full,AIVI2_N_FULL Nixon,The Mission,sculpin,The Mission Njoy,Arcas 7,Arcas_7,nJoy_Arcas_7 Njoy,Chronos 10,Chronos_10,Chronos_10 @@ -22467,11 +22986,14 @@ NobleSkiodo,NSTV,SW6H,NSTV NobleSkiodo,NSTV FF,SW6H,NSTV FF Noblex,A50,A50UNS,A50UNS Noblex,A60,A60UNS,A60UNS +Noblex,B30,NOBLEX_B30,B30 Noblex,Go Action,N551,N551 Noblex,Go Move,N552,N552 Noblex,Go Street,N504,N504 Noblex,Go Urban,N503,N503 +Noblex,N52,NOBLEX_N52,N52 Noblex,N601,N601,N601 +Noblex,N62,NOBLEX_N62,N62 Noblex,NBX-T1014N,TA10CA2,TA10CA2 Noblex,NBX-T7014,E270BSA,NBX-T7014 Noblex,NOBLEX Smart TV,sunnyvale,NOBLEX Smart TV @@ -22484,6 +23006,7 @@ Noblex,T7A6N,Tablet,T7A6N Noblex,X7500,songshan,SmartTV 4K Noblex,X9500,songshan,SmartTV 4K FFM Nobrand,Nobrand,stanford,Smart FHD TV +Noel,MBW100,MBW100,MBW100 Nokia,4K Smart TV,pioneer,4K PA Smart TV Nokia,Android TV,R1,ATV R1 Nokia,Android TV,R2,ATV R2 @@ -22679,6 +23202,9 @@ Nomi,ULTRA3 LTE PRO,Nomi_C101040,Nomi_C101040 Nomi,i5012,i5012,i5012 Nomi,i5014,i5014,i5014 Nomu,G200,G200,G200 +Nomu,G300,G300,G300 +Nomu,G500,G500,G500 +Nomu,G510,G510,G510 Nomu,M8,M8,M8 Nomu,S10,S10,S10 Nomu,S15,S15,S15 @@ -22696,9 +23222,11 @@ Nomu,V58,V58,V58 NoonEast,Smart TV,longshan,AI PONT NorthTech,NT-P70,NT-P70,NT-P70 NorthTech,NT-S10,NT-S10,NT-S10 +Noryox,Handheld_POS,Handheld_POS,NB55 Nothing,Nothing Phone (1),Spacewar,A063 Nothing,Nothing Phone (2),Pong,A065 Nothing,Nothing Phone (2),Pong,AIN065 +Nothing,Nothing Phone (2a),Pacman,A142 Nous,Fabulous,NS5005,NS5005 Nous,NS5002,NS5002,NS5002 Nous,NS5502,NS5502,NS5502 @@ -22774,6 +23302,7 @@ Nuu,X6,S5702LA,S5702L Nuu,X6 Plus,S6003LA,S6003L Nuu,X6mini,S5702LA,S5702L Nuu,X6mini,S5704LE,S5704L +Nuu,X7 Plus,S6601LA,S6601L Nuu,Z8,Z8,Z8 Nuvision,TM101A530L,TM101A530L,TM101A530L Nuvision,TM101A540N,mid1008a-l,TM101A540N @@ -22798,6 +23327,7 @@ OASYS,OASYS TEG9300,TEG9300-AL,TEG9300-AL OASYS,OAS_9301,OAS_9301,OAS_9301 OASYS,TEG9300,TEG9300,TEG9300 OASYS,TEG9300-4,TEG9300-4,TEG9300-4 +OASYS,TEG9300-4A,TEG9300-4A,TEG9300-4A OASYS,TEG9300-5,TEG9300-5,TEG9300-5 OASYS,TEG9300-M,TEG9300-M,TEG9300-M OBOX,OBOX4K.20,DV8519-BOX,OBOX4k.20 @@ -22853,6 +23383,8 @@ OLAX,Magic_Q8,Magic_Q8,Magic Q8 OLAX,Ocean K8,Ocean_K8,Ocean K8 OLAX,Ocean_F8,Ocean_F8,Ocean F8 OLAX,Q101_EEA,Q101_EEA,Q101_EEA +OMAX,7PAN,7PAN,7PAN +OMAX,OMAX-IFPD,rk3588_t,HANJI OMIX,MixTab Pro,MixTab_Pro,MixTab Pro OMIX,MixTab Pro 2,MixTab_Pro_2,MixTab Pro 2 OMIX,X3,X3,X3 @@ -22869,6 +23401,8 @@ OMIX,X700,X700,OMIX X700 OMIX,X700,X700,X700 ONDA TLC,T7 Pro,T7_PRO,T7_PRO ONDA TLC,T9 S,T9S,T9S +ONERugged,M195T,M195T,M195T +ONERugged,M86XE,M86XE,M86XE ONERugged,MPC10T,MPC10T,MPC10T ONERugged,MPC80T,MPC80T,MPC80T ONIDA,ONIDA 2K Android TV,lasalle,ONIDA 2K Android TV @@ -22877,6 +23411,7 @@ ONYX,AKA Model A,Model_A,Model A ONYX,BOOX,BOOX,BOOX ONYX,BOOX Tab,BOOX_Tab,BOOX Tab ONYX,QuartzT10-3,QuartzT10-3,QuartzT10-3 +ONYX,TabBoox,TabBoox,TabBoox ORBYS,F20,F20,F20 ORBYS,F21,F21,F21 ORCA,Kuwait,tamachi,ORCA FHD Android TV @@ -22885,6 +23420,7 @@ ORCA,O-0202,Orca_Display_2,O-0202 ORCA,OR-50UX400S,samseong,AI PONT ORCA,ORCA 2K Android TV,lasalle,ORCA 2K Android TV ORCA,ORCA 4K Android TV,kenton,ORCA 4K Android TV +ORION,Doshisha 2K Smart TV,umeda,Doshisha 2K Smart TV ORION,Smart TV,longshan,AI PONT ORION,Smart TV,redwood,AI PONT OSCAL,C20,C20,C20 @@ -22894,9 +23430,16 @@ OSCAL,C30 Pro,C30_Pro,C30 Pro OSCAL,C60,C60,C60 OSCAL,C70,C70,C70 OSCAL,C80,C80,C80 +OSCAL,FLAT 1C,FLAT1C,FLAT 1C +OSCAL,MODERN 8,MODERN_8,MODERN 8 OSCAL,Pad 15,Pad15,Pad 15 OSCAL,Pad 15,Pad15_EEA,Pad 15 +OSCAL,Pad 16,Pad16,Pad 16 +OSCAL,Pad 18,Pad18,Pad 18 +OSCAL,Pad 7,Pad_7,Pad 7 OSCAL,Pad 70,Pad70_NEU,Pad 70 +OSCAL,Pad 70 WiFi,Pad_70_WiFi,Pad 70 WiFi +OSCAL,Pad 80 WiFi,Pad_80_WiFi,Pad 80 WiFi OSCAL,Pad13_EEA,Pad13_EEA,Pad 13 OSCAL,Pad13_NEU,Pad13_NEU,Pad 13 OSCAL,Pad13_RU,Pad13_NEU,Pad 13 @@ -22911,6 +23454,10 @@ OSCAL,S70,S70,S70 OSCAL,S70 Pro,S70_Pro,S70 Pro OSCAL,S80,S80,S80 OSCAL,S80_RU,S80,S80 +OSCAL,TIGER 10,Tiger10,TIGER 10 +OSCAL,TIGER 12,Tiger12,TIGER 12 +OSCAL,Tiger 10,Tiger10,TIGER 10 +OSCAL,Tiger 12,Tiger12,TIGER 12 OSN tv,NGB22-OSN,HY45N,NGB22-OSN OTHO,T1,T1,T1 OTHO,T3,T3,T3 @@ -22948,6 +23495,7 @@ Oale,XS2_LTE,XS2_LTE,XS2_LTE Oale,dbx,dbx,dbx Oangcc,A13_EEA,A13_EEA,A13_EEA Oangcc,A13_US,A13_US,A13_US +Oangcc,A15_EEA,A15_EEA,A15_EEA Oangcc,A9-EEA,A9-EEA,A9-EEA Oangcc,A9_EEA,A9_EEA,A9_EEA Oangcc,A9_US,A9_US,A9_US @@ -22960,6 +23508,9 @@ Obi,MV1,yam,Obi MV1 Obi,OBJ SJ1.5,SJ1-5,SJ1-5 Oceusnetworks,Xiphos®TMD,granite,Xiphos(R)TMD Octopus,Octopus_One,Octopus_One,Octopus_One +Odea,A10_EEA,A10_EEA,A10 +Odea,A10_ROW,A10_ROW,A10 +Odea,S11_ROW,S11_ROW,S11 Odido,4K TV Box,SEI800TFAS,4K TV Box Odotpad,FIRE_V7,FIRE_V7,FIRE_V7 Odys,UNO X10,UNO_X10,UNO X10 @@ -22989,12 +23540,6 @@ OneClick,C2 Pro,C2_pro,C2 pro OneClick,X1,X1,X1 OneLern,OneLernDB009,OneLernDB009,OneLernDB009 OneLern,OneLernDB010,OneLernDB010,OneLernDB010 -OnePlus,12,OP595DL1,CPH2573 -OnePlus,12,OP595DL1,CPH2581 -OnePlus,12,OP595DL1,CPH2583 -OnePlus,12R,OP5D35L1,CPH2585 -OnePlus,12R,OP5D35L1,CPH2609 -OnePlus,12R,OP5D35L1,CPH2611 OnePlus,2,OnePlus2,ONE A2003 OnePlus,3,OnePlus3,ONEPLUS A3000 OnePlus,C00,Cebu,C00 @@ -23023,7 +23568,12 @@ OnePlus,OnePlus 11 5G,OP594DL1,CPH2451 OnePlus,OnePlus 11 5G 中国版,OP591BL1,PHB110 OnePlus,OnePlus 11R 5G,OP5961L1,CPH2487 OnePlus,OnePlus 12,OP5929L1,PJD110 +OnePlus,OnePlus 12,OP595DL1,CPH2573 +OnePlus,OnePlus 12,OP595DL1,CPH2581 +OnePlus,OnePlus 12,OP595DL1,CPH2583 +OnePlus,OnePlus 12R,OP5D35L1,CPH2585 OnePlus,OnePlus 12R,OP5D35L1,CPH2609 +OnePlus,OnePlus 12R,OP5D35L1,CPH2611 OnePlus,OnePlus 6,OnePlus6,ONEPLUS A6000 OnePlus,OnePlus 6,OnePlus6,ONEPLUS A6003 OnePlus,OnePlus 7,OnePlus7,GM1900 @@ -23079,6 +23629,7 @@ OnePlus,OnePlus 9RT 5G,OP5154L1,MT2110 OnePlus,OnePlus 9RT 5G,OP5155L1,MT2111 OnePlus,OnePlus Ace,OP5565,PGKM10 OnePlus,OnePlus Ace 3,OP5CF9L1,PJE110 +OnePlus,OnePlus Ace 3V,OP5CFBL1,PJF110 OnePlus,OnePlus Ace 竞速版,OP5911,PGZ110 OnePlus,OnePlus Nord,Nord,AC2001 OnePlus,OnePlus Nord,Nord,AC2003 @@ -23093,6 +23644,7 @@ OnePlus,OnePlus Nord CE 3 Lite 5G,OP5958L1,CPH2465 OnePlus,OnePlus Nord CE 3 Lite 5G,OP5958L1,CPH2467 OnePlus,OnePlus Nord CE 5G,OnePlusNordCE,EB2101 OnePlus,OnePlus Nord CE 5G,OnePlusNordCE,EB2103 +OnePlus,OnePlus Nord CE4,OP5D3FL1,CPH2613 OnePlus,OnePlus Nord N10 5G,OnePlusN10,BE2026 OnePlus,OnePlus Nord N10 5G,OnePlusN10,BE2028 OnePlus,OnePlus Nord N10 5G,OnePlusN10,BE2029 @@ -23111,9 +23663,12 @@ OnePlus,OnePlus Nord N200 5G,OnePlusN200,DE2117 OnePlus,OnePlus Nord N200 5G,OnePlusN200TMO,DE2118 OnePlus,OnePlus Nord N30 5G,OP5958L1,CPH2513 OnePlus,OnePlus Nord N30 5G,OP5958L1,CPH2515 +OnePlus,OnePlus Nord N30 SE 5G,OP5955L1,CPH2605 OnePlus,OnePlus Nord2 5G,OP515BL1,DN2101 OnePlus,OnePlus Nord2 5G,OP515BL1,DN2103 OnePlus,OnePlus Pad,OP59BCL1,OPD2203 +OnePlus,OnePlus Pad Go,OP5DA6L1,OPD2304 +OnePlus,OnePlus Watch 2,OPWWE231,OPWWE231 OnePlus,OnePlus2,OnePlus2,ONE A2003 OnePlus,OnePlus3,OnePlus3,ONEPLUS A3000 OnePlus,OnePlus3T,OnePlus3T,ONEPLUS A3000 @@ -23122,12 +23677,14 @@ OnePlus,OnePlus5T,OnePlus5T,ONEPLUS A5010 OnePlus,OnePlus6T,OnePlus6T,ONEPLUS A6010 OnePlus,OnePlus6T,OnePlus6T,ONEPLUS A6013 OnePlus,OnePlus6T,OnePlus6TSingle,ONEPLUS A6013 +OnePlus,Oneplus Ace 2 Pro,OP5943L1,PJA110 OnePlus,Oneplus_Dosa_IN,Oneplus_Dosa_IN,Oneplus_Dosa_IN OnePlus,Open,OP5973L1,CPH2551 OnePlus,PHP110,OP5927,PHP110 OnePlus,X,OnePlus,ONE E1003 OnePlus,Y Series,shibuya,Y Series OneScreen,OPS LF with Android,OneScreen-OPS-LF,OneScreen-OPS-LFA +OneScreen,OneScreen T7,rk3588_t,T7 Onix,AT101-1118,AT101-1118,AT101-1118 Onkyo,DP-CMX1,Gravity_128,DP-CMX1 Onkyo,DP-CTX1,DP-CTX1,DP-CTX1 @@ -23148,6 +23705,7 @@ Onn (Walmart),ONA19TB002,ONA19TB002,ONA19TB002 Onn (Walmart),ONA19TB003,ONA19TB003,ONA19TB003 Onn (Walmart),ONA19TB007,ONA19TB007,ONA19TB007 Onn (Walmart),Onn 2k TV stick,stephen,Onn 2k TV stick +Onn (Walmart),PM82T,PM82T,PM82T Onn (Walmart),PP86A_W,PP86A_W,PP86A_W Onn (Walmart),TBBVNC100005207,TBBVNC100005207,TBBVNC100005207 Onn (Walmart),TBBVNC100005208,TBBVNC100005208,TBBVNC100005208 @@ -23205,8 +23763,10 @@ Oppo,A17,OP56F5,CPH2477 Oppo,A17k,OP56F5,CPH2471 Oppo,A18,OP575DL1,CPH2591 Oppo,A1k,OP486C,CPH1923 +Oppo,A2 5G,OP5647,PJB110 Oppo,A2x 5G,OP5A0D,PJS110 Oppo,A3,CPH1837,CPH1837 +Oppo,A3 Pro 5G,OP59FB,PJY110 Oppo,A31,A31t,A31 Oppo,A31c,A31c,A31c Oppo,A31u,A31u,A31u @@ -23282,10 +23842,12 @@ Oppo,A58,OP574FL1,CPH2577 Oppo,A59,A59,OPPO A59 Oppo,A59,A59,OPPO A59m Oppo,A59,A59,OPPO A59s +Oppo,A59 5G,OP5AD5L1,CPH2617 Oppo,A59m,A59,OPPO A59m Oppo,A59st,A59,OPPO A59st Oppo,A59t,A59,OPPO A59t Oppo,A59tm,A59,OPPO A59tm +Oppo,A60,OP5AE7L1,CPH2631 Oppo,A7,CPH1901,CPH1901 Oppo,A7,CPH1905,CPH1905 Oppo,A7,PBFM00,PBFM00 @@ -23331,6 +23893,7 @@ Oppo,A9x,OP46F3,PCEM00 Oppo,A9x,OP46F3,PCET00 Oppo,AX5s,CPH1920,CPH1920 Oppo,AX7,CPH1903,CPH1903 +Oppo,A系列,OP5A0D,PJU110 Oppo,CHP1705,CPH1705,CPH1705fw Oppo,CPH1605,CPH1605,CPH1605 Oppo,CPH1605,CPH1605,OPPO CPH1605 @@ -23434,6 +23997,7 @@ Oppo,F1fw,F1f,F1f Oppo,F1fw,F1f,F1fw Oppo,F1w,F1f,F1f Oppo,F1w,F1f,F1w +Oppo,F25 Pro 5G,OP5A0BL1,CPH2603 Oppo,F7,CPH1819,CPH1819 Oppo,F7,CPH1821,CPH1821 Oppo,F9,CPH1823,CPH1823 @@ -23470,9 +24034,11 @@ Oppo,Find X6,OP528F,PGFM10 Oppo,Find X6 Pro,OP528BL1,PGEM10 Oppo,Find X7,OP5661L1,PHZ110 Oppo,Find X7 Ultra,OP565FL1,PHY110 +Oppo,Find X7 Ultra 卫星通信版,OP5660L1,PHY120 Oppo,Find5,FIND5,X909 Oppo,Find5,FIND5,X909T Oppo,K1,PBCM30,PBCM30 +Oppo,K12 5G,OP5A15L1,PJR110 Oppo,K3,OP4679,PCGM00 Oppo,K3,OP4679,PCGT00 Oppo,K3,OP486B,CPH1955 @@ -23491,8 +24057,10 @@ Oppo,N5117,N5117,N5117 Oppo,OPD2102A,OP5226L1,OPD2102A Oppo,OPG02_jp_kdi,OP4F39L1,OPG02 Oppo,OPPO A1 5G,OP561D,PHS110 +Oppo,OPPO A18,OP575DL1,CPH2591 Oppo,OPPO A33,OP4EEA,CPH2137 Oppo,OPPO A35,OP4E7B,PEFM00 +Oppo,OPPO A38,OP5759L1,CPH2579 Oppo,OPPO A53 5G,OP4E49,PECM30 Oppo,OPPO A53 5G,OP4E49,PECT30 Oppo,OPPO A53s 5G,OP4F53L1,CPH2321 @@ -23507,6 +24075,8 @@ Oppo,OPPO Pad,OP5223,OPD2101 Oppo,OPPO Pad 2,OP5989,OPD2201 Oppo,OPPO Pad 2,OP59BBL1,OPD2202 Oppo,OPPO Pad Air,OP5225,OPD2102 +Oppo,OPPO Pad Neo,OP5DA3L1,OPD2302 +Oppo,OPPO Pad Neo,OP5DA3L1,OPD2303 Oppo,OPPO Reno10 5G,OP5655,PHW110 Oppo,OPPO Reno10 Pro 5G,OP561F,PHV110 Oppo,OPPO Reno10 Pro+ 5G,OP564B,PHU110 @@ -23530,6 +24100,7 @@ Oppo,OPPO Reno8 T,OP5709L1,CPH2481 Oppo,OPPO Reno9 Pro 5G,OP5601,PGX110 Oppo,OPPO Watch,beluga,OPPO Watch Oppo,OPPO Watch,orca,OPPO Watch +Oppo,OPPO Watch X,OWWE231,OWWE231 Oppo,PCRT01,OP4AB5,PCRT01 Oppo,PDKM00,OP4ABB,PDKM00 Oppo,PDKT00,OP4ABB,PDKT00 @@ -23719,6 +24290,7 @@ Oppo,Reno10 Pro 5G,OP56DBL1,CPH2525 Oppo,Reno10 Pro 5G,OP56DBL1,CPH2541 Oppo,Reno10 Pro+ 5G,OP56D3L1,CPH2521 Oppo,Reno11,OP59EDL1,PJH110 +Oppo,Reno11 F 5G,OP5A0BL1,CPH2603 Oppo,Reno11 Pro,OP59EFL1,PJJ110 Oppo,Reno2 Z,OP4B65L1,CPH1945 Oppo,Reno2 Z,OP4B65L1,CPH1951 @@ -23800,6 +24372,7 @@ Opticon,H-27,H-27,H-27 Opticon,H-31,h31,h31 Opticon,H-33,h33,h33 Opticon,H-35,H-35,H-35 +Optoma,IFP5Gen3,rk3588_t,UXXSRK Oraimo,R401,oraimo-R401,oraimo R401 Oraimo,R402,oraimo-R402,oraimo R402 Oraimo,oraimo R401S,oraimo-R401,oraimo R401S @@ -23830,6 +24403,8 @@ Orange,Orange Neva leaf,Neva_leaf,Orange Neva leaf Orange,Orange Neva play,Neva_play,Orange Neva play Orange,Orange Neva sparkle,Neva_sparkle,Orange Neva sparkle Orange,Orange Neva zen,Neva_zen,Orange Neva zen +Orange,Orange Nola XL,Nola-ultra,Orange Nola XL +Orange,Orange Nola fun 3,Nola_fun_3,Orange Nola fun 3 Orange,Orange Nola play,Nola_play,Orange Nola play Orange,Orange Nola play plus,Nola_play_plus,Orange Nola play plus Orange,Orange Rise 33,Rise33,Orange_Rise_33 @@ -23861,6 +24436,7 @@ Orange,idol S,Diablo_LTE,Orange Niva Orange TV,Descodificador Orange TV,KSTB6130,KSTB6130 Orbic, T1003R,VC_Device,RC10RLT-RW Orbic,Magic,R678EL,R678EL +Orbic,O4S231AZ,Fun2,O4S23 Orbic,R370H,R370H,R370L Orbic,R678L5,R678L5,R678L5 Orbic,R8L5T,R8L5T,R8L5T @@ -23919,9 +24495,12 @@ Oukitel,C30,C30_EEA,C30 Oukitel,C31_EEA,C31,C31 Oukitel,C31_Pro_EEA,C31_Pro,C31 Pro Oukitel,C32_EEA,C32,C32 +Oukitel,C32_Pro_EEA,C32_Pro,C32 Pro Oukitel,C33_EEA,C33,C33 Oukitel,C35_EEA,C35,C35 Oukitel,C36_EEA,C36,C36 +Oukitel,C37_EEA,C37,C37 +Oukitel,C38_EEA,C38,C38 Oukitel,C6 Pro,C6_Pro,C6 Pro Oukitel,C8,C8,C8 Oukitel,C8 4G,C8_4G,C8 4G @@ -23958,13 +24537,21 @@ Oukitel,OK6000 PLUS,OK6000_Plus,OK6000 Plus Oukitel,OKC8 4G,OKC8_4G,OKC8 4G Oukitel,OKT1,OKT1,OKT1 Oukitel,OKT3,OKT3,OKT3 +Oukitel,OT5_EEA,OT5,OT5 +Oukitel,OT5_S_EEA,OT5_S,OT5 S +Oukitel,OT7_EEA,OT7,OT7 Oukitel,P07_EEA,P07,RT7 TITAN 5G +Oukitel,P07_NFC_EEA,P07,RT7 TITAN 5G Oukitel,RT1,RT1,RT1 Oukitel,RT1_EEA,RT1,RT1 Oukitel,RT2_EEA,RT2,RT2 Oukitel,RT3_S_EEA,RT3_EEA,RT3 +Oukitel,RT3_T_EEA,RT3,RT3 Oukitel,RT5_EEA,RT5,RT5 Oukitel,RT6_EEA,RT6,RT6 +Oukitel,RT6_NFC_EEA,RT6,RT6 +Oukitel,RT7_TITAN_EEA,RT7_TITAN,RT7 TITAN +Oukitel,RT8_EEA,RT8,RT8 Oukitel,S105B_RU,S105B,WP21 Ultra Oukitel,S109_RU,S109,WP22 Oukitel,S115_EEA,S115,WP26 @@ -24013,6 +24600,10 @@ Oukitel,WP23,S111,WP23 Oukitel,WP27_EEA,WP27,WP27 Oukitel,WP27_RU,WP27,WP27 Oukitel,WP30_Pro_EEA,WP30_Pro,WP30 Pro +Oukitel,WP32_EEA,WP32,WP32 +Oukitel,WP33_Pro_EEA,WP33_Pro,WP33 Pro +Oukitel,WP36_EEA,WP36,WP36 +Oukitel,WP38_EEA,WP38,WP38 Oukitel,WP5,WP5,WP5 Oukitel,WP5 Pro,WP5_Pro,WP5 Pro Oukitel,WP5000,WP5000,WP5000 @@ -24044,6 +24635,7 @@ Oysters,T72HM3G,T72HM3G,T72HM3G Oysters,T72HMs 3G,T72HM3G,T72HMs_3G PAITANRY,R16,R16,R16 PALSONIC,Android TV,R1,ATV R1 +PANORAMA,Smart TV,kualakai,Smart TV PAPAGO,GoPad8,GoPad8,GoPad8 PARTNER MOBILE,E22,E22,E22 PARTNER MOBILE,EV1_PRO,EV1_PRO,EV1 PRO @@ -24111,6 +24703,8 @@ PCD Argentina,PL571US,PL571US,PL571US PCD Argentina,PL620,PL620,PL620 PCD LLC,Bengal_Max,Bengal_Max,Bengal Max PCD LLC,P41PR,P41PR,P41PR +PCD LLC,P62,P62,P62 +PCD LLC,P65,P65,P65 PEAQ,PET-1008-F464E,PET-1008-F464E,PET 1008-F464E PEAQ,PET-1008-H332E,PET-1008-H332E,PET 1008-H332E PEAQ,PET-101-F464S,PET-101-F464S,PET-101-F464S @@ -24123,7 +24717,9 @@ PEAQ,PET-1081-LH332S,PET-1081-LH332S,PET 1081-LH332S PEAQ,PET-882-H232S,PET-882-H232S,Lightyear 2 PEAQ,PET-882-H232S,PET-882-H232S,PET-882-H232S PEAQ,PET_8040_H464S,PET_8040_H464S,PET_8040_H464S +PEICHENG,ZB31,ZB31,ZB31 PEL (PAK),PEL,lavender,4K SMART TV +PEL (PAK),PEL,mountbaker,2K SMART TV PEOTV,SEI300SLT,SEI300SLT,SEI300SLT PERSONA,MyTab_A8,MyTab_A8,MyTab_A8 PHILCO (ar),P510,P510,P510 @@ -24137,6 +24733,7 @@ PINOCCHIO,SGWIFIPAD320093,SGWIFIPAD320093,SGWIFIPAD320093 PIPO,IconX_P109,IconX_P109,IconX_P109 PIXART,Pixart_P20,Pixart_P20,Pixart_P20 PIXART,SZ10M68,SZ10M68,SZ10M68 +PIXPEAK,Tablet,Tablet,P7-EEA PIXPRO,PIXPRO L1 PRO,PIXPRO_L1_PRO,PIXPRO L1 PRO PIXPRO,PIXPRO T3,T3,PIXPRO T3 PLDT,PLDT-GMB8260,DS8942-KPP,PLDT-GMB8260 @@ -24149,6 +24746,7 @@ POCO,POCO C50,snow,220733SPI POCO,POCO C51,water,2302EPCC4H POCO,POCO C51,water,2305EPCC4G POCO,POCO C55,earth,22127PC95I +POCO,POCO C61,blue,2312BPC51H POCO,POCO C65,gale,2310FPCA4I POCO,POCO C65,gust,2310FPCA4G POCO,POCO F2 Pro,lmi,POCO F2 Pro @@ -24198,6 +24796,7 @@ PORTFOLIO,P9001,P9001,P9001 POS Terminal,ACT,POS,pCloud POS Terminal,MINT,POS,pCloud POSSAFE,OrderGo5_EEA,OrderGo5,OrderGo5 +POSSAFE,OrderGo_6_TR,OrderGo_6,OrderGo 6 PRAZteck,PT7EduPad,PT7EduPad,PT7EduPad PRIMA,PRIMA 2K Android TV,lasalle,PRIMA 2K Android TV PRIMA,PRIMA 4K Android TV,kenton,PRIMA 4K Android TV @@ -24211,6 +24810,7 @@ PRISMPLUS,PrismPlus P4KA,SW6H,PrismPlus P4KA PRISMPLUS,Prismplus TV,shibuya,Prismplus TV PROGRACE,K726,K726,K726 PROTON,PROTON 2K Android,lasalle,PROTON 2K Android +PROTON,PROTON 2K Google TV,capitolhill,PROTON 2K Google TV PROTON,PROTON 4K Android,kenton,PROTON 4K Android PROTON,PROTON 4K Google TV,keoneae,PROTON 4K Google TV PROTON,PROTON Google TV,bandra,PROTON Google TV @@ -24619,6 +25219,7 @@ Partner,OT-310,OT-310,OT-310 Partner,PartnerTV-Box,uzw4054ptn,PartnerTV-Box Partner,Partner_Evolution,Partner_Evolution,Partner Evolution Partner,S70PCI,Batman,S70PCI +Pastigio,P15,M10T2_P15,P15 Pastigio,SMY_17_M07R6_EEA,SMY-17-M07R6,SMY-17-M07R6 Pavapro,PavaPro7bk,Pavapro7bk,Pavapro7bk Pavapro,Pavapro10,Pavapro10bk,Pavapro10bk @@ -24639,7 +25240,7 @@ Peninsula,WP20N,WP20N,WP20N Penta,ETBA0552,PENTA_83AAQ2,PENTA_83AAQ2 Penta,ETBA0692,PENTA_73AAQ1,PENTA_73AAQ1 Penta,PENTA_73AAQ1,ETBA0604,PENTA_73AAQ1 -Pepperl_Fuchs,Smart-Ex 03,Smart-Ex03,Smart-Ex03 +Pepperl+Fuchs,Smart-Ex 03,Smart-Ex03,Smart-Ex03 Performance, T7,T7,T7 Performance,PR7RKTNF,PR7RKTNF,PR7RKTNF Performance,T9,T9,T9 @@ -24670,6 +25271,7 @@ Philco,Philco Smart plus TV,SW6H,Philco Smart plus TV Philco,PhilcoTV,shinjuku,PhilcoTV Philco,TP10A332,TP10A332,TP10A332 Philco,TP10A3N,TP10A3N,TP10A3N +Philco,TP10A464,TP10A464,TP10A464 Philco,TP10F,TP10F,TP10F Philco,TP7A4BB,TP7A4BB,TP7A4BB Philco,TP7A4N,TP7A4N,TP7A4N @@ -24697,7 +25299,14 @@ Philips,Mediasuite,PH8M_HE_5596,TPM191HN Philips,NeoViu D1,GMP,NeoViu D1 Philips,PHILIPS,TLE722G,TLE722G Philips,PHILIPS,hongkong,4K SMART TV +Philips,PHILIPS,hongkong,4K SMART TV PH Philips,PHILIPS,lavender,4K SMART TV +Philips,PHILIPS,lavender,4K SMART TV PH +Philips,PHILIPS,mountbaker,2K SMART TV +Philips,PHILIPS,mountbaker,2K SMART TV PH +Philips,PHILIPS S6210,PHILIPS-S6210,PHILIPS S6210 +Philips,PHILIPS S6310,PHILIPS-S6310,PHILIPS S6310 +Philips,PHILIPS S7710,PHILIPS-S7710,PHILIPS S7710 Philips,PHILIPS TV,cocina,PHILIPS TV Philips,PHP-S221C4AFD,MMD_WW,G3SMNTS22 Philips,PHP-S231C4AFD,G3SMNTS23,G3SMNTS23 @@ -24803,6 +25412,7 @@ Phone Max,Rocky_1,Rocky_1,Rocky_1 Phone Max,S4G,S4G,S4G Phone Max,X1,X1,X1 Phone Max,X1_Pro,X1_Pro,X1 Pro +PicassoTab,PicassoTab_X11,X11,PicassoTab X11 Pioneer,AV Receiver,AVH_W4400NEX,Jupiter Pioneer,Android TV,R2,ATV R2 Pioneer,B.PROカーナビ,AVIC_BX500,jupiter @@ -24846,9 +25456,11 @@ Pixus,Pixus_Drive,Pixus_Drive,Pixus_Drive Pixus,Pixus_Folio,Pixus_Folio,Pixus_Folio Pixus,Pixus_Hammer,Pixus_Hammer,Pixus_Hammer Pixus,Pixus_Joker,Pixus_Joker,Pixus_Joker +Pixus,Pixus_Line,Pixus_Line,Pixus_Line Pixus,Pixus_Sprint,Sprint,Pixus_Sprint Pixus,Pixus_Sprint_2_16,Sprint_2_16,Pixus_Sprint_2_16 Pixus,Pixus_Touch_7_3G,Pixus_Touch_7_3G,Pixus_Touch_7_3G +Pixus,Pixus_Wing,Pixus_Wing,Pixus_Wing Plaisio,A2,Turbo-X_A2,Turbo-X_A2 Plaisio,A4,A4,A4 Plaisio,Aqua,Aqua,Aqua @@ -24887,13 +25499,18 @@ PlayPoland,PLAY NOW TV BOX 2,DV8545-PLAY,PLAY NOW TV BOX 2 PlayPoland,PLAY NOW TV BOX 3,DV8945-KPP,PLAY NOW TV BOX 3 PlayPoland,Play Now,dctiw362p,DCTIW362_PLAY PlayPoland,play_dctiw362,dctiw362p,DCTIW362_PLAY +Plimpton,Kids20,Kids20,Kids20 +Plimpton,Kids20_EEA,Kids20_EEA,Kids20 Plimpton,Kids_10,Kids_10,Kids_10 Plimpton,Kids_10_EEA,Kids_10_EEA,Kids 10 Plimpton,Kids_10_ver13,Kids_10_ver13,Kids 10 Plimpton,Kids_8,Kids_8,Kids_8 Plimpton,P60Plus,P60Plus,P60Plus Plimpton,P60_Pro,P60_Pro,PlimPad_P60_Pro +Plimpton,P70_14,P70_14,P70 Plimpton,P8,P8,P8 +Plimpton,P8ProA14,P8ProA14,P8Pro +Plimpton,P8Pro_EEA,P8Pro_EEA,P8Pro Plimpton,PlimPad_P3,PlimPad_P3,PlimPad P3 Plimpton,PlimPad_P3_Pro,PlimPad_P3_Pro,PlimPad_P3_Pro Plimpton,PlimPad_P60,PlimPad_P60,PlimPad_P60 @@ -24946,6 +25563,7 @@ Point Mobile,PM85,pm85e,PM85E Point Mobile,PM85R,pm85r,PM85R Point Mobile,PM86,PM86,PM86 Point Mobile,PM90,pm90,PM90 +Point Mobile,PM95,PM95,PM95 Point of view,PVT-R78-3288,PVT-R78-3288,PVT-R78-3288 Point of view,TAB-7232-3G,TAB_7232_3G_EEA,TAB-7232-3G-V2 Point of view,TAB-P10232-3G,TAB-P10232-3G,TAB-P10232-3G @@ -25124,6 +25742,7 @@ Positivo,T1085,T1085,T1085 Positivo,T2040,T2040B,T2040 Positivo,T2050C,T2050C,T2050C Positivo,T2050C,T2050C,Tab Q10 +Positivo,T3010D,T3010D,Vision Tab 10 Positivo,T701 TV,T701,T701 Positivo,T705,T705,T705 Positivo,T705,T705,T705/T708 @@ -25232,6 +25851,7 @@ Positivo,mini I,mini_i,Positivo BGH Y300 Positivo,mini I,mini_i,Positivo Mini I Positivo,quattro,X435,quattro Positivo BGH,BGH Series Q10,M16QF1XMT8183,"Positivo BGH Series Q10""" +Positivo BGH,BGH Series Q10,M16QF1XMT8183,"TAB Q10""s" Positivo BGH,BGH Y100,Y700,Positivo BGH Y100 Positivo BGH,BGH Y210,Y210,Positivo BGH 7Di-A Positivo BGH,BGH Y210,Y210,Positivo BGH Y210 @@ -25322,6 +25942,7 @@ Premio,X70-2021,X70-2021,X70-2021 Premio,X75,X75,X75 Premio,X750-2021,X75-2021,X75-2021 Premio,X76,X76,X76 +Premio,X77,X77,X77 Premio,X80,X80,X80 Premio,X81,X81,X81 Premio,X83,X83,X83 @@ -25635,8 +26256,12 @@ Prism,UHD Android TV,sindorim,AI PONT Pritom,1AZ2P_eea,1AZ2P_eea,1AZ2P_eea Pritom,Benton_M10,Benton_M10,Benton_M10 Pritom,K7,K7,K7 +Pritom,K7,K7_A04,K7 +Pritom,K7,K7_A04_EEA,K7 Pritom,K7,K7_A103,K7 Pritom,K7,K7_A103_EEA,K7 +Pritom,K7_A03,K7_A03,K7 +Pritom,K7_A03_EEA,K7_A03_EEA,K7 Pritom,K7_A101,K7_A101,K7_A101 Pritom,K7_A101_EEA,K7_A101_EEA,K7_A101 Pritom,K7_A101_EEA,K7_A101_EEA,K7_A101_EEA @@ -25664,10 +26289,18 @@ Pritom,M10,M10_A01,M10 Pritom,M10,M10_A05_EEA,M10 Pritom,M10-EEA,M10-EEA,M10-EEA Pritom,M10_A01_EEA,M10_A01_EEA,M10 +Pritom,M10_A06,M10_A06,M10 +Pritom,M10_A06_EEA,M10_A06_EEA,M10 Pritom,M10_Air,M10_Air,M10_Air Pritom,M10_Air_EEA,M10_Air_EEA,M10_Air_EEA Pritom,M10_B01,M10,M10 Pritom,M10_B01_EEA,M10_EEA,M10 +Pritom,M10_B02,M10_B02,M10 +Pritom,M10_B02_EEA,M10_B02_EEA,M10 +Pritom,M10_B03,M10_B03,M10 +Pritom,M10_B03_EEA,M10_B03_EEA,M10 +Pritom,M10_C04,M10_C04,M10 +Pritom,M10_C04_EEA,M10_C04_EEA,M10 Pritom,M10_Lite,M10_Lite,M10_Lite Pritom,M10_Max,M10_Max,M10_Max Pritom,M10_Max_EEA,M10_Max_EEA,M10_Max_EEA @@ -25675,6 +26308,8 @@ Pritom,M10_PLUS,M10_PLUS,M10_PLUS Pritom,M10_PLUS_EEA,M10_PLUS_EEA,M10_PLUS_EEA Pritom,M10_PRO,M10_PRO,M10_PRO Pritom,M10_PRO_EEA,M10_PRO_EEA,M10_PRO_EEA +Pritom,M10_R01,M10_R01,M10_R01 +Pritom,M10_R01_EEA,M10_R01_EEA,M10_R01_EEA Pritom,M20,M10_A05,M10 Pritom,M20,M10_A05,M20 Pritom,M30,M30,M30 @@ -25688,6 +26323,10 @@ Pritom,P7PLUS_EEA,P7PLUS_EEA,P7PLUS Pritom,P7PRO,P7PRO,P7PRO Pritom,P7PRO_1,P7PRO_1,P7PRO_1 Pritom,P7PRO_EEA,P7PRO_EEA,P7PRO_EEA +Pritom,P7_A03,P7_A03,P7 +Pritom,P7_A03_EEA,P7_A03_EEA,P7 +Pritom,P7_A04,P7_A04,P7 +Pritom,P7_A04_EEA,P7_A04_EEA,P7 Pritom,P7_EEA,P7_A1_EEA,P7_EEA Pritom,P7_EEA,P7_EEA,P7_EEA Pritom,PRITOM,M10_EEA,M10_EEA @@ -25702,6 +26341,7 @@ Prixton,T1800Q_Plus,T1800Q_Plus,T1800Q Plus Prixton,T7014Q_Plus,T7014Q_Plus,T7014Q_Plus Prixton,T9120_EEA,T9120,T9120 ProDVX,APPC-10SLBe,rk3399_Android11,APPC-10SLBe +ProGLP,SMIG_VI,SMIG_VI,SMIG_VI Prodigi Connect12,Prodigi Connect 12,connect,Prodigi Connect 12 Professional Mobile,Pro V5,Pro_V5,Pro V5 Profilo,Profilo Smart TV,marina,Profilo Smart TV @@ -25751,6 +26391,8 @@ Proscan,PROSCAN 2K SMART TV,nagata,PROSCAN 2K SMART TV Protab,PTBPT5QCB7,PTBPT5QCB7,PTBPT5QCB7 Proximus,Proximus TV,uiw4020pxm,decoder Proximus,Proximus TV,uiw4068pxm,tvbox +Pulsaris,Fresh,Fresh,Fresh +Pulsaris,Pluma,Pluma,Pluma Punos,Punos X10,PTX1022G,X10 Tablet Punos,Punos X8 PTX822G,PTX822G,X8 Tablet Punos,Punos_10,Punos_10,Punos 10 @@ -25766,6 +26408,7 @@ QBell,Italy,tamachi,Qbell FHD Android TV QBell,Italy,yeongdeungpo,Qbell UHD Android TV QBell,QBELL,hongkong,QBELL 4K Android TV QBell,QBELL,lavender,QBELL 4K Android TV +QBell,QBELL,mountbaker,QBELL 2K Android TV QBell,QBELL,stanford,QBELL 2K Android TV QBell,QBELL,zhongshan,QBELL 4K Android TV QBell,QBell,bangbae,QBell 4K Android TV @@ -25774,6 +26417,7 @@ QBell,QPHONE_10_1,QPHONE_10_1,QPHONE_10.1 QBell,QPHONE_9_3,QPHONE_9_3,QPHONE_9_3 QBell,QTAB10,QTAB10,QTAB10 QBell,Qbell android TV,hanyang,QBELL Android TV +QCELL,Qsmart,QSmart,QSmart QFX USA,TLW-100,PhonePad,TLW-100 QIN(cn),F22 Pro,F22Pro,F22Pro QLA,C600,GBC_bravo,C600 @@ -25987,6 +26631,7 @@ Qsmart,Mark 2,MARK_2,Mark 2 Qsmart,QSmart Blaze,Blaze,Blaze Qsmart,QSmart Canopus,Canopus,QSmart_Canopus Qsmart,QSmart Rocket,Rocket,QSmart Rocket +Qsmart,QSmart Ultra,Ultra,Ultra Qsmart,QSmart X10,X10,QSmart X10 Qsmart,QSmart X20,X20,QSmart X20 Qsmart,QSmart X40,X40,QSmart X40 @@ -26151,6 +26796,8 @@ RCA,RCA RCT6B86E12,RCT6B86E12,RCT6B86E12 RCA,RCA RCT6S03W12,RCT6S03W12,RCT6S03W12 RCA,RCA RCT6S03W14,RCT6S03W14,RCT6S03W14 RCA,RCA Reno Max,RCA_Reno_Max,Reno Max +RCA,RCA TV 2K-A,lasalle,RCA TV 2K-A +RCA,RCA TV 4K G,keoneae,RCA TV 4K G RCA,RCARENO5011619,RCARENO5011619,RCARENO5011619 RCA,RCA_G2,RCA_G2,RCA G2 RCA,RCS13101T,RCS13101T,RCS13101T @@ -26437,6 +27084,7 @@ Redmi,Redmi 12,heat,23053RN02Y Redmi,Redmi 12 5G,XIG03,XIG03 Redmi,Redmi 12 5G,river,23076RA4BR Redmi,Redmi 12 5G,river,23076RN8DY +Redmi,Redmi 12 5G,river,A401XM Redmi,Redmi 12C,aether,22126RN91Y Redmi,Redmi 12C,earth,22120RN86G Redmi,Redmi 12C,earth,22120RN86I @@ -26484,6 +27132,9 @@ Redmi,Redmi A1+,snow,220743FI Redmi,Redmi A2,cloud,23026RN54G Redmi,Redmi A2,cloud,23028RN4DG Redmi,Redmi A2+,water,23028RNCAG +Redmi,Redmi A3,blue,23129RN51H +Redmi,Redmi A3,blue,23129RN51X +Redmi,Redmi A3,blue,2312CRNCCL Redmi,Redmi K20,davinci,Mi 9T Redmi,Redmi K20,davinci,Redmi K20 Redmi,Redmi K20,davinciin,Redmi K20 @@ -26583,6 +27234,7 @@ Redmi,Redmi Note 13 Pro 5G,garnet,2312DRA50I Redmi,Redmi Note 13 Pro+,zircon,23090RA98C Redmi,Redmi Note 13 Pro+ 5G,zircon,23090RA98G Redmi,Redmi Note 13 Pro+ 5G,zircon,23090RA98I +Redmi,Redmi Note 13 Pro+ 5G,zircon,24040RA98R Redmi,Redmi Note 7,lavender,Redmi Note 7 Redmi,Redmi Note 8,biloba,M1908C3JGG Redmi,Redmi Note 8,ginkgo,GINKGO @@ -26609,8 +27261,13 @@ Redmi,Redmi Note 9S,curtana,Redmi Note 9S Redmi,Redmi Note 9T,cannong,A001XM Redmi,Redmi Note 9T,cannong,M2007J22G Redmi,Redmi Pad,yunluo,22081283G +Redmi,Redmi Pad Pro,dizi,2405CRPFDC +Redmi,Redmi Pad Pro,dizi,2405CRPFDG +Redmi,Redmi Pad Pro 5G,ruan,24074RPD2C +Redmi,Redmi Pad SE,xun,23073RPBFC Redmi,Redmi Pad SE,xun,23073RPBFG Redmi,Redmi Pad SE,xun,23073RPBFL +Redmi,Redmi Turbo 3,peridot,24069RA21C Redmi,Smart TV,tarzan,MiTV-MOOQ3 Redway,redway10,redway10,redway10 Redway,redway10_lite,redway10_lite,redway10_lite @@ -26667,6 +27324,7 @@ Reeder,S19 Max 64GB,S19_Max_64GB,S19 Max 64GB Reeder,S19 Max Pro,S19_Max_Pro,S19 Max Pro Reeder,S19 Max Pro S,S19_Max_Pro_S,S19 Max Pro S Reeder,S19 Max Pro S Edge,S19MaxProSEdge,S19 Max Pro S Edge +Reeder,S19 MaxL 128GB,S19_MaxL_128GB,S19 MaxL 128GB Reeder,S19 Max Pro S Zoom,S19_Max_Pro_S_Zoom,S19 Max Pro S Zoom Reeder,S23 Pro Max,S23_Pro_Max,S23 Pro Max Reeder,T8,reeder_T8,reeder_T8 @@ -26722,6 +27380,7 @@ Remdun,RD895T,RD895T,RD895T Remdun,RD895TE,RD895TE,RD895TE Remdun,t8332_T10_64_k419,t8332_T10_64_k419,t8332_l40mmeiw_T10_64_k419 Renault,OpenR Link,aivi2_full,AIVI2 FULL +Renault,OpenR Link,aivi2_r_full_dom,AIVI2 R FULL DOM Reveal 16i,rk3399_rvlEEA_box,rk3399_reveal16i_box,Reveal 16i Reveal 16i,rk3399_rvl_box,rk3399_reveal16i_box,Reveal 16i Revko,BE XL,BE_xl,BE_xl @@ -26746,6 +27405,7 @@ Rhino,RHINO T80,scout,T80 Rhino,T8,Rhino_T8,T8 RiksTV,SRT412,HP40A3,SRT412 Rindo,R-32B6600,ikebukuro,AI PONT +Rindo,RINDO 2K Android TV,lasalle,RINDO 2K Android TV Rindo,Smart TV,longshan,AI PONT Rindo,Smart TV,redwood,AI PONT Rindo,Smart TV,samseong,AI PONT @@ -26764,6 +27424,7 @@ Rizzen,NovaTab_R10s,NovaTab_R10s,R10s Rizzen,S1,S1,S1 Rizzen,X1,X1,X1 RoadQuest,RoadQuest,RQ-G,RQ-G +RockTek,Gretzky,TSA,TVDongle RockTek,RT-G1,RTBox,RT-G1 Rockcel,Quartzo UP,Quartzo_UP,Quartzo UP Rockcel,Quartzo Up,Quartzo_up,Quartzo_up @@ -26804,9 +27465,11 @@ Ruggear,RG750,RG750_EEA,RG750 Ruggear,RG750,RG750_ROW,RG750 Ruggear,RG760,RG760,RG760 Ruggear,RG850,RG850,RG850 +Ruggear,RG880,RG880,RG880 Ruggear,RG910,RG910,RG910 Ruggear,RG930i,RG930i,RG930i Ruggear,RG935,RG935,RG935 +Ruggear,RG940,RG940,RG940 Ruggear,RugGear rg730,rg730,rg730 Ruio,A870,A870,A870 Ruio,Cola,M671M3,M671M3 @@ -26836,6 +27499,7 @@ S Vision,EU、UK、AP,martin,SVISION 2K Android TV S Vision,"Japan,USA,Australia, Italy,German",martin,SVISION Android Monitor S Vision,S android TV,hanyang,Svision Android TV S Vision,SVISION,lavender,SVISION 4K Android TV +S Vision,SVISION,mountbaker,SVISION 2K Android TV S Vision,SVISION,zhongshan,4K SMART TV S&T Global,8788_7,8788_7,8788_7 S&T Global,C20,C20,C20 @@ -26862,6 +27526,7 @@ SAIET,STS570,STS570,STS570 SAIET,STS571,STS571,STS571 SAIET,STS600,STS600,STS600 SAIET,STS601,STS601,STS601 +SAIET,STS602,STS602,STS602 SAKAISIO,FP-U320-711-WIFI,U320-WF,FP-U320-711-WIFI SAKAISIO,FP-U320-711-WWAN,U320-3G,FP-U320-711-WWAN SAMPO,Android TV,R2,ATV R2 @@ -26885,6 +27550,7 @@ SCHNEIDER,EU、UK、AP,martin,Schneider 2K Android TV SCHNEIDER,GMS55A1G,barking,SCHNEIDER AndroidTV SCHNEIDER,SCHNEIDER,bangbae,SCHNEIDER 4K Android TV SCHNEIDER,SCHNEIDER,komagome,SCHNEIDER 2K Android TV +SCHNEIDER,SCHNEIDER AndroidTV,beaudry,SCHNEIDER AndroidTV SCHNEIDER,Wave 3,Wave_3,Wave 3 SCIENTIA,BBT1019863,BBT1019863,BBT1019863 SCIENTIA,eWs10164T,eWs10164T,eWs10164T @@ -26900,6 +27566,7 @@ SEBBE,S23_EEA_A,S23_EEA_A,S23_EEA_A SEBBE,S23_M_US,S23_M_US,S23_M_US SEBBE,S23_US,S23_US,S23_US SEBBE,S23_US_B,S23_US_B,S23_US_B +SEBBE,S23_U_US,S23_U_US,S23_U_US SED Wireless,GPH-650R,SPH_650R,GPH-650R SELECLINE,MID7526CM,MID7526CM,NID_7010 SELECLINE,MID_9526CM,MID_9526CM,S952 @@ -26913,6 +27580,7 @@ SENSE,TW102,TW102,TW102 SENSETALK,ACM-T01K,ACM-T01K,ACM-T01K SERVO,P20,P20,P20 SEWOO,NBP_65,NBP_65,NBP-65 +SEWOO,SEWOO NBP-75,NBP-75,NBP-75 SFR,G8800,stb_dvb_sfr,SFR-G8800 SFR,STARADDICT 4,staraddict4,STARADDICT 4 SFR,STARXTREM3,STARXTREM3,STARXTREM3 @@ -26928,6 +27596,7 @@ SFR.fr,FR,DV8219,DV8219_SFR SGIN,A10,A10,A10 SGIN,C10,C10,C10 SGIN,C8,C8,C8 +SGIN,E10P,E10P,E10P SGIN,M1046W,M1046W,M1046W SGIN,M806BW6,M806BW6,M806BW6 SGIN,SGIN_E10M,SGIN_E10M,SGIN_E10M @@ -26992,7 +27661,9 @@ SKY_Brasil,Sky Brazil,usw8052skb,SKR02 SMART Technologies,AM60 series,komodo,AM60 series SMART Technologies,AM60 series,komodo,SMART AM60 SMART Technologies,AMG1,komodo,AMG series +SMART Technologies,SMART AMG series,komodo,SMART AMG1 SMART Technologies,SMART Board MX Series (V5),groundhog,SMART Board MX Series (V5) +SMART Technologies,SMART Board® RX Series,groundhog,SMART Board Interactive Display SMART_KASSEL,ARGENTINA,SK3402,SK3402 SMART_KASSEL,SK3403,SK3403,SK3403 SMART_KASSEL,SK3404,SK3404,SK3404 @@ -27009,6 +27680,7 @@ SMT_TSC,FLAME X555,FLAME_X555,FLAME_X555 SOHO STYLE,S1582C,S1582C,S1582C SOHO STYLE,S1586K,S1586K,S1586K SOHO STYLE,S1587K,S1587K,S1587K +SOHO STYLE,S65,S65,S65 SOHO STYLE,SS5214G,SS5214G,SS5214G SOHO STYLE,SS5314G,SS5314G,SS5314G SOHO STYLE,SS5414G,SS5414G,SS5414G @@ -27023,6 +27695,7 @@ SOSMART,T5,SOSMART_T5,SOSMART_T5 SOUTH,H6LM,H6LM,H6LM SOWLY,AG_1088_A133,AG_1088_A133,AG_1088_A133 SOWLY,AG_1088_A133P,AG_1088_A133P,AG_1088_A133P +SOWLY,AG_1088_A523P,AG_1088_A523P,AG_1088_A523P SPC,Discovery,Discovery,Discovery SPC,Discovery Pro,Discovery_Pro,Discovery Pro SPC,Discovery SE,Discovery_SE,Discovery SE @@ -27035,6 +27708,8 @@ SPC,GRAVITY_3,GRAVITY_3,GRAVITY_3 SPC,GRAVITY_3_MINI,GRAVITY_3_MINI,GRAVITY_3_MINI SPC,GRAVITY_3_PRO,GRAVITY_3_PRO,GRAVITY 3 PRO SPC,GRAVITY_3_SE,GRAVITY_3_SE,GRAVITY_3_SE +SPC,GRAVITY_5_EEA,GRAVITY_5_EEA,GRAVITY_5_EEA +SPC,GRAVITY_5_PRO,GRAVITY_5_PRO,GRAVITY 5 PRO SPC,GRAVITY_5_SE_EEA,GRAVITY_5_SE_EEA,GRAVITY 5 SE SPC,Gravity_Max_EEA,Gravity_Max,Gravity Max SPC,Indonesia,guandu,SPC Android TV @@ -27109,6 +27784,7 @@ SPC Universe,heaven_10_1,heaven-10_1,HEAVEN 10.1 SPECTRA,Spectra MobileMapper6,MobileMapper6,MobileMapper6 SPECTRA,TAP-POS,TAP-POS,SAH55 SPECTRA,tap-POS-AM,tap-POS-AM,SAH55AM +SPJtv,Android TV,R1,ATV R1 SPJtv,Android TV,R2,ATV R2 SPJtv,R3,R3,R3 SPJtv,R4,R4,R4 @@ -27154,6 +27830,8 @@ SSmooth,Vision Plus,Vision_Plus,Vision Plus STARK_FUTURE,VARG,VARG,VARG STARSHINE,STARSHINE,mountbaker,2K SMART TV STARSHINE,STARSHINE 2K Google TV,capitolhill,STARSHINE 2K Google TV +STARTMOBIS,START24,START24,START24 +STE (A),S11,S11,S11 STF Mobile,AERIAL,STFAERIAL,AERIAL STF Mobile,AERIAL PLUS,AERIAL,AERIAL PLUS STF Mobile,AURA,AURA,AURA @@ -27249,6 +27927,7 @@ SUNMAX,Model_Y,Model_Y,Model Y SUNMAX,SP125D_2,SP125D_2,SP125D_2 SUNMAX,Sunmax Model Tab 10,Sunmax_Model_Tab_10,Sunmax Model Tab 10 SUNMAX,Tab_6,Tab_6,Tab_6 +SUNPHONE,L4,L4,L3 SUNWIND,SKY 9 E201 3G,SS9237MG,SKY 9 E201 3G SS9237MG SUNWIND,SKY_9_A102_3G,SS9236PG,SKY 9 A102 3G SS9236PG SUNWIND,SS1270PL,SS1270PL,Sky 1430D 4G SS1270PL @@ -27305,6 +27984,7 @@ SWTV,SWTV-22AE,SW6H,SWTV-22AE SWTV,SWTV-22AE-4K,anaheim,SWTV-22AE-4K SWTV,SWTV-22AE-FHD,umeda,SWTV-22AE-FHD SWTV,SWTV-22COL-4K,anaheim,SWTV-22COL-4K +SWTV,SWTV-22HK-4K,anaheim,SWTV-22HK-4K SWTV,SWTV-22HK-4K NF,anaheim,SWTV-22HK-4K NF SWTV,SWTV-22NA-4K,anaheim,SWTV-22NA-4K SWTV,SWTV-22NA-FHD,umeda,SWTV-22NA-FHD @@ -27325,6 +28005,7 @@ SYLVOX,SYLVOX 4K Google TV-A,keoneae,SYLVOX 4K Google TV-A SYLVOX,SYLVOX 4K Google TV-B,keoneae,SYLVOX 4K Google TV-B SYLVOX,SYLVOX 4K Google TV-D,keoneae,SYLVOX 4K Google TV-D SYLVOX,SYLVOX 4K Google TV-E,keoneae,SYLVOX 4K Google TV-E +SYLVOX,SYLVOX Google TV,bandra,SYLVOX Google TV SYLVOX,SYLVOX Google TV-A,bandra,SYLVOX Google TV-A SYLVOX,Smart TV 2K,lasalle,Smart TV 2K SYLVOX,Smart TV 2K-A,lasalle,Smart TV 2K-A @@ -27347,6 +28028,7 @@ Safaricom,NEON_RAY_PRO,NEON_RAY_PRO,NEON_RAY_PRO Safaricom,Neon Storm,Neon_Storm,Neon Storm Safaricom,SFCSTB2LITE,SFCSTB2LITE,SFCSTB2LITE Safaricom,Safaricom ET Kimem,Safaricom_ET_Kimem,Safaricom ET Kimem +SafeGear_Mobile,SG390,SG390,SG390 Sagemcom,Wibox,dtiw384wb,m384wb Sagemcom,polsat soundbox 4K,m391_polsat,polsat soundbox 4K Saltillo,CF10,CF10,CF10 @@ -27785,6 +28467,11 @@ Samsung,Galaxy A54 5G,a54x,SM-A546U1 Samsung,Galaxy A54 5G,a54x,SM-A546V Samsung,Galaxy A54 5G,a54x,SM-A546W Samsung,Galaxy A54 5G,a54x,SM-S546VL +Samsung,Galaxy A55 5G,SC-53E,SC-53E +Samsung,Galaxy A55 5G,SCG27,SCG27 +Samsung,Galaxy A55 5G,a55x,SM-A5560 +Samsung,Galaxy A55 5G,a55x,SM-A556B +Samsung,Galaxy A55 5G,a55x,SM-A556E Samsung,Galaxy A6,a6elteaio,SM-A600AZ Samsung,Galaxy A6,a6elteatt,SM-A600A Samsung,Galaxy A6,a6eltemtr,SM-A600T1 @@ -27996,11 +28683,13 @@ Samsung,Galaxy Beam,GT-I8250,GT-I8250 Samsung,Galaxy Beam,GT-I8530,GT-I8530 Samsung,Galaxy Buddy,a22x,SM-A226L Samsung,Galaxy Buddy2,m23xq,SM-M236L +Samsung,Galaxy Buddy3,a15x,SM-A156L Samsung,Galaxy C5,c5ltechn,SM-C5000 Samsung,Galaxy C5,c5ltechn,SM-C500X Samsung,Galaxy C5,c5pltechn,SM-C5000 Samsung,Galaxy C5 Pro,c5proltechn,SM-C5010 Samsung,Galaxy C5 Pro,c5proltechn,SM-C5018 +Samsung,Galaxy C55 5G,m55xq,SM-C5560 Samsung,Galaxy C7,c7ltechn,SM-C7000 Samsung,Galaxy C7,c7ltechn,SM-C700X Samsung,Galaxy C7,c7proltechn,SM-C701X @@ -28118,6 +28807,7 @@ Samsung,Galaxy F12,f12,SM-F127G Samsung,Galaxy F13,m13,SM-E135F Samsung,Galaxy F14,a05s,SM-E145F Samsung,Galaxy F14 5G,m14x,SM-E146B +Samsung,Galaxy F15 5G,m15x,SM-E156B Samsung,Galaxy F22,f22,SM-E225F Samsung,Galaxy F23 5G,m23xq,SM-E236B Samsung,Galaxy F34 5G,m34x,SM-E346B @@ -28125,6 +28815,7 @@ Samsung,Galaxy F41,f41,SM-F415F Samsung,Galaxy F42 5G,f42x,SM-E426B Samsung,Galaxy F52 5G,f52x,SM-E5260 Samsung,Galaxy F54 5G,m54x,SM-E546B +Samsung,Galaxy F55 5G,m55xq,SM-E556B Samsung,Galaxy F62,f62,SM-E625F Samsung,Galaxy Fame,SCH-I629,SCH-I629 Samsung,Galaxy Fame,nevis,GT-S6810 @@ -28527,6 +29218,8 @@ Samsung,Galaxy M13,m13,SM-M135M Samsung,Galaxy M13 5G,a13x,SM-M136B Samsung,Galaxy M14,a05s,SM-M145F Samsung,Galaxy M14 5G,m14x,SM-M146B +Samsung,Galaxy M15 5G,m15x,SM-E156B +Samsung,Galaxy M15 5G,m15x,SM-M156B Samsung,Galaxy M20,m20,SM-M205N Samsung,Galaxy M20,m20lte,SM-M205F Samsung,Galaxy M20,m20lte,SM-M205FN @@ -28552,6 +29245,7 @@ Samsung,Galaxy M33 5G,m33x,SM-M336BU Samsung,Galaxy M34 5G,m34x,SM-M346B Samsung,Galaxy M34 5G,m34x,SM-M346B1 Samsung,Galaxy M34 5G,m34x,SM-M346B2 +Samsung,Galaxy M35 5G,m35x,SM-M356B Samsung,Galaxy M40,m40,SM-M405F Samsung,Galaxy M42 5G,a42xq,SM-M426B Samsung,Galaxy M51,m51,SM-M515F @@ -28559,6 +29253,8 @@ Samsung,Galaxy M52 5G,m52xq,SM-M526B Samsung,Galaxy M52 5G,m52xq,SM-M526BR Samsung,Galaxy M53 5G,m53x,SM-M536B Samsung,Galaxy M54 5G,m54x,SM-M546B +Samsung,Galaxy M55 5G,m55xq,SM-M556B +Samsung,Galaxy M55 5G,m55xq,SM-M556E Samsung,Galaxy M62,m62,SM-M625F Samsung,Galaxy Mega 2,mega23g,SM-G750H Samsung,Galaxy Mega 5.8,crater,GT-I9152 @@ -29202,15 +29898,21 @@ Samsung,Galaxy S23+,dm2q,SM-S916N Samsung,Galaxy S23+,dm2q,SM-S916U Samsung,Galaxy S23+,dm2q,SM-S916U1 Samsung,Galaxy S23+,dm2q,SM-S916W +Samsung,Galaxy S24,SC-51E,SC-51E +Samsung,Galaxy S24,SCG25,SCG25 Samsung,Galaxy S24,e1q,SM-S9210 +Samsung,Galaxy S24,e1q,SM-S921Q Samsung,Galaxy S24,e1q,SM-S921U Samsung,Galaxy S24,e1q,SM-S921U1 Samsung,Galaxy S24,e1q,SM-S921W Samsung,Galaxy S24,e1s,SM-S921B Samsung,Galaxy S24,e1s,SM-S921N +Samsung,Galaxy S24 Ultra,SC-52E,SC-52E +Samsung,Galaxy S24 Ultra,SCG26,SCG26 Samsung,Galaxy S24 Ultra,e3q,SM-S9280 Samsung,Galaxy S24 Ultra,e3q,SM-S928B Samsung,Galaxy S24 Ultra,e3q,SM-S928N +Samsung,Galaxy S24 Ultra,e3q,SM-S928Q Samsung,Galaxy S24 Ultra,e3q,SM-S928U Samsung,Galaxy S24 Ultra,e3q,SM-S928U1 Samsung,Galaxy S24 Ultra,e3q,SM-S928W @@ -29876,6 +30578,8 @@ Samsung,Galaxy Tab S6 Lite,gta4xl,SM-P615 Samsung,Galaxy Tab S6 Lite,gta4xl,SM-P615C Samsung,Galaxy Tab S6 Lite,gta4xl,SM-P615N Samsung,Galaxy Tab S6 Lite,gta4xl,SM-P617 +Samsung,Galaxy Tab S6 Lite,gta4xls,SM-P625 +Samsung,Galaxy Tab S6 Lite,gta4xlswifi,SM-P620 Samsung,Galaxy Tab S6 Lite,gta4xlve,SM-P619 Samsung,Galaxy Tab S6 Lite,gta4xlve,SM-P619N Samsung,Galaxy Tab S6 Lite,gta4xlvewifi,SM-P613 @@ -30340,6 +31044,9 @@ Samsung,SM-J337AZ,j3toplteaio,SM-J337AZ Samsung,SM-T230NZ,degasy18wifichn,SM-T230NZ Samsung,SM-W2018,kellyltechn,SM-W2018 Samsung,SM-W2018,kellyltechn,SM-W2018X +Samsung,Samsung Interactive Display,SAMSUNG_INTERACTIVE_DISPLAY,WA65D +Samsung,Samsung Interactive Display,SAMSUNG_INTERACTIVE_DISPLAY,WA75D +Samsung,Samsung Interactive Display,SAMSUNG_INTERACTIVE_DISPLAY,WA86D Samsung,Sidekick,SGH-T839,SGH-T839 Samsung,Transfix,SCH-R730,SCH-R730 Samsung,Transform,SPH-M920,SPH-M920 @@ -30356,6 +31063,8 @@ Samsung,三星W22 5G,v2q,SM-W2022 Samsung,心系天下 三星 W23,v4q,SM-W9023 Samsung,心系天下 三星 W23 Flip,e4q,SM-W7023 Samsung,领世旗舰8,venenoltechn,SM-G9298 +Samtech,MID_M1023,MID_M1023,MID_M10 +Samtech,MID_M1023_EEA,MID_M1023_EEA,MID_M10 Samtech,T3G_04,T3G_04,T3G_04 Samtech,TWIFI-04,TWIFI-04,TWIFI-04 Samtech,TWIFI-06,TWIFI-06,TWIFI-06 @@ -30458,6 +31167,7 @@ Selvas,BrailleSenseMini,BrailleSenseMini,H620B Selvas,BrailleSense_EEA,BrailleSense,H632B Selvas,H632B,BrailleSense,H632B Semeakoko,M_766,M_766,M_766 +Semeakoko,S-764,S-764,S-764 Semeakoko,SS1010,SS1010,SS1010 Semeakoko,SS10A,SS10A,SS10A Semeakoko,SS10A_EEA,SS10A_EEA,SS10A_EEA @@ -30503,10 +31213,12 @@ Seuic,AUTOID10,d560,AUTOID10 Seuic,AUTOID11,d310x,AUTOID11 Seuic,AUTOID9N,d500b,AUTIOD9N Seuic,AUTOID9N,d500b,AUTOID9N +Seuic,AUTOIDQ9,D360,AUTOIDQ9 Seuic,AUTOIDQ9G,d550,AUTOID Q9 Seuic,CRUISE1,d700s,CRUISE1 Seuic,CRUISE2,d730,CRUISE2 Seuic,CRUISE2 5G,d740,CRUISE2 5G +Seuic,CRUISE2 5GA,d740p,CRUISE2 5GA Seuic,HHT8B,hht8b,HHT8B Shaks,Gretzky,TSA,Shaks G1 Sharp,,SH7218T,SH7218T @@ -30533,6 +31245,8 @@ Sharp,4T-C**DL1/DJ1/DQ1/DN2,tcve2uj,AQUOS-TVJ21-2 Sharp,4T-C**DS1/DN1/DP1,tcvenuj,AQUOS-TVJ21 Sharp,4T-C**EN1/EQ1/ES1/EU1/EP1/FN1,tcvenruj,AQUOS-4KTVJ22 Sharp,4T-C**EN2/EL1/EQ2/FN2/FL1,tcvenruj,AQUOS-4KTVJ22-2 +Sharp,4T-C**GP1/GS1/GQ1/GN1,tcmar1uj,AQUOS-4KTVJ23-1 +Sharp,4T-C**GP2/GQ2/GN2,tcmar1uj,AQUOS-4KTVJ23-2 Sharp,4T-C50AG1T,LCD_50FOCAG1T,LCD_50FOCAG1T Sharp,4T-C50BDXA;4T-C50BDKA;4T-C50BDMA;4T-C50BDCA;4T-C50BDZA,Lcd_50sumtcca_xa,LCD_50SUMTCCA_XA Sharp,4T-C50BJ8T,gangnam,TVX19B @@ -30759,6 +31473,7 @@ Sharp,AQUOS-TVL23B,umeda,AQUOS-TVL23B Sharp,Android One S1,kaleido_sprout,S1 Sharp,B10,SH-A01,SH-A01 Sharp,BASIO active,DQO,SHG09 +Sharp,BASIO active2,ZKO,SHG12 Sharp,BASIO2 SHV36,SHV36,SHV36 Sharp,BG/BE,ebisu,AQUOS-TVX19A Sharp,BG/BE/CG,meguro,AQUOS-TVX19C @@ -30790,6 +31505,7 @@ Sharp,EG1,namba,AQUOS-TVP22A Sharp,EG1,namba,AQUOS-TVX22A Sharp,EN3/EL3,banqiao,AQUOS-TVE21F Sharp,EQ3/DN5,banqiao,AQUOS-TVE21A +Sharp,EU,sindang,AQUOS-TVE19A Sharp,EU,sindang,AQUOS-TVE19C Sharp,EU,sindang,AQUOS-TVE21A2 Sharp,EU,sindang,AQUOS_TVE19A @@ -30886,6 +31602,7 @@ Sharp,LC_50FOC45H,Lc_50foc45h,LC_50FOC45H Sharp,LYNX 3D SH-03C,SH03C,SH-03C Sharp,LYNX SH-10B,SH10B,SH-10B Sharp,Leitz Phone 2,MinevaL,LP-02 +Sharp,Leitz Phone 3,KamilleL,LP-03 Sharp,Leitz Phone1,JudauL,LP-01 Sharp,Media Tablet,EB-L76G-B,EB-L76G-B Sharp,PANTONE 5 SoftBank 107SH,SBM107SH,SBM107SH @@ -30921,10 +31638,16 @@ Sharp,SH8118U,msm7627,SH8118U Sharp,SH8128U,msm7627,SH8128U Sharp,SH8188U,SH8188U,SH8188U Sharp,SH825wi,SH825Wi,SH825Wi +Sharp,SHARP,lavender,4K SMART TV +Sharp,SHARP,mountbaker,2K SMART TV Sharp,SHARP,stanford,2K SMART TV Sharp,SHARP,zhongshan,4K SMART TV Sharp,SHARP 2K SMART TV,shinagawa,SHARP 2K SMART TV Sharp,SHARP 2K TV,umeda,SHARP 2K TV +Sharp,SHARP 4K TV,anaheim,SHARP 4K TV +Sharp,SHARP 4K TVH,anaheim,SHARP 4K TVH +Sharp,SHARP 4K TVT,anaheim,SHARP 4K TV +Sharp,SHARP 4K TVT,anaheim,SHARP 4K TVT Sharp,SHARP A2 Lite,SJ3,FS8026 Sharp,SHARP A2 Mini,HQ3,IF9009 Sharp,SHARP AQUOS C10,SH-Z01,SH-Z01 @@ -31015,8 +31738,10 @@ Sico SmartPhone,SSR1-5-8M,GBC_bravo,SSR1-5-8M Sico SmartPhone,SSR1-5-8M,GBC_bravo,sico pro Sigma Mobile,Tab A1015,TabA1015,Tab A1015 Sigma Mobile,Tab A1020,TabA1020,Tab A1020 +Sigma Mobile,Tab A1025 X-treme 2,Tab_A1025_2,Tab A1025 X-treme 2 Sigma Mobile,Tab A802,Tab_A802,Tab A802 Sigma Mobile,Tab_A1010_Neo,Tab_A1010_Neo,Tab_A1010_Neo +Sigma Mobile,Tab_A1033_X_treme,Tab_A1033_X-treme,Tab_A1033_X_treme Sigma Mobile,X-Style S5502,X-Style_S5502,X-Style_S5502 Sigma Mobile,X-Style_S5501,X-Style_S5501,X-Style_S5501 Sigma Mobile,X-TREME PQ24,X-treme_PQ24,X-treme_PQ24 @@ -31035,6 +31760,7 @@ Sigma Mobile,X-treme PQ54,X-treme_PQ54,X-treme_PQ54 Sigma Mobile,X-treme_PQ18,X-treme_PQ18,X-treme_PQ18 Sigma Mobile,X-treme_PQ54 MAX,X-treme_PQ54_MAX,X-treme_PQ54 MAX Sigma Mobile,X-treme_PQ55,X-treme_PQ55,X-treme PQ55 +Sigma Mobile,X-treme_PQ56,X_treme_PQ56,X-treme_PQ56 Sigma Mobile,X_Style_Tab_A103,X_Style_Tab_A103,X_Style_Tab_A103 Sigma Mobile,X_Style_Tab_A104,X_Style_Tab_A104,X_Style_Tab_A104 Sigma Mobile,X_style_Tab_A1010,X_style_Tab_A1010,X_style_Tab_A1010 @@ -31103,6 +31829,7 @@ Singtech,i-Tab Mini 3,iTab,i-Tab Mini 3 SinoGNSS,R60 Data Collector,R60,R60 Sintel,SINTEL-X1,SINTEL_X1,SINTEL-X1 Siragon,SA,zhongshan,SMART TV +Siragon,SIRAGON,lavender,4K SMART TV Siragon,SIRAGON,stanford,SMART TV Siragon,SP 6200,SP-6200,SP-6200 Siragon,SP-5000,SP-5000,Siragon SP-5000 @@ -31157,9 +31884,15 @@ Sky Devices,Elite A5,BITA_5,Elite A5 Sky Devices,Elite A5,Elite_A5,Elite A5 Sky Devices,Elite A5,Elite_AMS,Elite A5 Sky Devices,Elite A55,Elite_A55,Elite_A55 +Sky Devices,Elite A55Max,Elite_A55Max,Elite A55Max Sky Devices,Elite A6,Elite_A6,Elite A6 Sky Devices,Elite A63,Elite_A63,Elite A63 +Sky Devices,Elite A63Max,Elite_A63B_Max_B,Elite A63Max +Sky Devices,Elite A63Max,Elite_A63CMaxC,Elite A63Max Sky Devices,Elite A63Max,Elite_A63MUS,Elite A63Max +Sky Devices,Elite A63Max,Elite_A63_A_MaxA,Elite A63Max +Sky Devices,Elite A63Max,Elite_A63_D_Max_D,Elite A63Max +Sky Devices,Elite A63Mxca,Elite_A63Mxca,Elite A63Mxca Sky Devices,Elite B5,Elite_B5,Elite_B5 Sky Devices,Elite B55,Elite_B55,Elite_B55 Sky Devices,Elite B65,Elite_B65,Elite B65 @@ -31394,6 +32127,7 @@ Smart (BD),MQ703G,MQ703G,MQ703G Smart (BD),MQ703G_1,MQ703G_1,MQ703G_1 Smart (BD),SQ811G,SQ811G,SQ811G Smart-Tech TV,Aiplus4K,guandu,Aiplus4K +Smart-Tech TV,Contex TV,cottongreen,Contex TV Smart-Tech TV,Contex TV,nagata,Contex TV Smart-Tech TV,EU、UK、AP,martin,AiPlus2K Smart-Tech TV,EU、UK、AP,martin,WALTON Android TV @@ -31406,6 +32140,7 @@ SmartLabs,SML-5442TW,sml5442tw,SML-5442TW SmartPad,SM181301,SM181301,SM181301 SmartPad,Smartpad V7,Smartpad-V7,Smartpad-V7 SmartPad,Smartpad-V10,Smartpad-V10,Smartpad-V10 +Smart_Touch,ST IR13,STG_IR13,STG_Series Smartab,SRF79,SRF79,SRF79 Smartab,ST1009X,ST1009X,ST1009X Smartab,ST1020,ST1020,ST1020 @@ -31426,6 +32161,7 @@ Smartec,MiCA,MiCA,MiCA Smartec,N4,N4,N4 Smartec,SmartabS32,SmartabS32,SmartabS32 Smartec,SmartabS4,SmartabS4,SmartabS4 +Smartedu_Touch,WTC Series,WTC_Pro,Smartedu_WTC_Series Smartek,MR_POTATO_HEAD,MR_POTATO_HEAD,MR_POTATO_HEAD Smartek,PLAY_DOH,PLAY_DOH,PLAY_DOH Smartex,M520,M520,M520 @@ -31477,6 +32213,10 @@ Solinftec,SOL07,SOL07,SOL07 Solone,E1457,E1457,E1457 Solone,W1450,W1450,W1450 Solone,W1452,W1452,W1452 +Solutionforpros,R450,R450,R450 +Soneview,SONEVIEW,hongkong,4K SMART TV +Soneview,SONEVIEW,lavender,4K SMART TV +Soneview,SONEVIEW,mountbaker,2K SMART TV Soneview,SONEVIEW,stanford,2K SMART TV Soneview,SONEVIEW,zhongshan,4K SMART TV Sonimtech,Ex-Handy 09,XP6700Z1,Ex-Handy 09 @@ -31515,6 +32255,7 @@ Sony,BRAVIA 4K UR1,BRAVIA_UR1_4K,BRAVIA 4K UR1 Sony,BRAVIA 4K UR2,BRAVIA_UR2_4K,BRAVIA 4K UR2 Sony,BRAVIA 4K UR3,BRAVIA_UR3,BRAVIA 4K UR3 Sony,BRAVIA AE M6L,BRAVIA_AE_M6L,BRAVIA 4K AE1 +Sony,BRAVIA AE2,BRAVIA_AE2,BRAVIA 4K AE2 Sony,BRAVIA Smart Stick,NSZGU1,NSZ-GU1 Sony,BRAVIA TL,OD0M_EA_T32,BRAVIA TL Sony,BRAVIA TL2,OD0M_EA_T32,BRAVIA TL2 @@ -31549,6 +32290,7 @@ Sony,NW-ZX2,icx1265,WALKMAN Sony,NW-ZX700Series,icx1302,NW-ZX700Series Sony,NWZ-Z1000,icx1216,NWZ-Z1000Series Sony,NWZ-ZX1,icx1240,WALKMAN +Sony,PDT-FP1,PDT-FP1,PDT-FP1 Sony,SmartWatch 3,tetra,SmartWatch 3 Sony,Smartphone Z Ultra Google Play edition,C6806,C6806 Sony,Smartphone Z Ultra Google Play edition,C6806,C6806_GPe @@ -31591,6 +32333,12 @@ Sony,Xperia 1 V,XQ-DQ44,XQ-DQ44 Sony,Xperia 1 V,XQ-DQ54,XQ-DQ54 Sony,Xperia 1 V,XQ-DQ62,XQ-DQ62 Sony,Xperia 1 V,XQ-DQ72,XQ-DQ72 +Sony,Xperia 1 VI,A401SO,A401SO +Sony,Xperia 1 VI,SO-51E,SO-51E +Sony,Xperia 1 VI,SOG13,SOG13 +Sony,Xperia 1 VI,XQ-EC44,XQ-EC44 +Sony,Xperia 1 VI,XQ-EC54,XQ-EC54 +Sony,Xperia 1 VI,XQ-EC72,XQ-EC72 Sony,Xperia 10,I3113,I3113 Sony,Xperia 10,I3123,I3123 Sony,Xperia 10,I4113,I4113 @@ -31622,6 +32370,7 @@ Sony,Xperia 10 V,SOG11,SOG11 Sony,Xperia 10 V,XQ-DC44,XQ-DC44 Sony,Xperia 10 V,XQ-DC54,XQ-DC54 Sony,Xperia 10 V,XQ-DC72,XQ-DC72 +Sony,Xperia 10 VI,SO-52E,SO-52E Sony,Xperia 5,901SO,901SO Sony,Xperia 5,J8210,J8210 Sony,Xperia 5,J8270,J8270 @@ -32167,6 +32916,7 @@ SoyMomo,SoyMomo_Pro_EU_V2,SoyMomo_Pro_EU_V2,SoyMomo_Pro_EU_V2 SoyMomo,SoyMomo_Pro_V1,Pro_V1,SoyMomo_Pro_V1 SoyMomo,SoyMomo_Pro_V2,SoyMomo_Pro_V2,SoyMomo_Pro_V2 SoyMomo_Tablet,SoyMomo_PRO_V2MAX,SoyMomo_PRO_V2MAX,SoyMomo_PRO_V2MAX +SparX,Edge 20 Pro,Sparx_Edge_20_Pro,Edge 20 Pro SparX,NEO 5,NEO5,NEO 5 SparX,NEO_6,NEO_6,NEO_6 SparX,Neo 11,Neo_11,Neo 11 @@ -32176,6 +32926,8 @@ SparX,Neo 7 Plus,Neo_5_Plus,Sparx Neo 7 Plus SparX,Neo 7 Ultra,Neo_7_Ultra,Sparx Neo 7 Ultra SparX,Neo 7 Ultra,Neo_7_Ultra,Sparx Neo 7 Ultra 8GB SparX,Neo_X,Neo_X,Neo X +SparX,Note 12,Note_12,Note 12 +SparX,Note_20,Note_20,Note 20 SparX,S3,S3,S3 SparX,S6,S6,S6 SparX,S7,Sparx_S7,Sparx S7 @@ -32203,6 +32955,10 @@ Spectralink,Versity,Versity,Versity 9553 Spectralink,Versity,Versity,Versity 9640 Spectralink,Versity,Versity,Versity 9653 Spectralink,Versity 92-Series,VC92,VC9253 +Spectralink,Versity 9540,Versity,Versity 9540 +Spectralink,Versity 9553,Versity,Versity 9553 +Spectralink,Versity 9640,Versity,Versity 9640 +Spectralink,Versity 9653,Versity,Versity 9653 Spectralink,Versity 9740,Versity,Versity 9740 Spectralink,Versity 9753,Versity,Versity 9753 Speedata,FG50,FG50,FG50 @@ -32337,6 +33093,7 @@ Strong,Android TV,redwood,AI PONT Strong,LEAP-S1,LAS,LEAP-S1 Strong,Leap-S3,YDA,4K Google TV Box Strong,SRT41,YYT,4K Google TV Stick +Strong,SRT420,ZRH,4K Hybrid STB Strong,Smart TV,longshan,AI PONT Strong,Strong,bangbae,Strong 4K Android TV Strong,Strong,komagome,Strong 2K Android TV @@ -32357,6 +33114,7 @@ Stylo,BOLD,BOLD,BOLD Stylo,BOLD PLUS,BOLD_PLUS,BOLD_PLUS Stylo,BOLD_PLUS,BOLD_PLUS,BOLD_PLUS Stylo,BRAVE,BRAVE,BRAVE +Stylo,Comet,Comet,EEJ55 Stylo,DVK82 Mercury,DVK82_Mercury,DVK82 Mercury Stylo,DVK87_Orion 8_Tab,DVK87_Orion_8_Tab,DVK87 Orion 8 Tab Stylo,Destiny,Destiny,Destiny @@ -32370,6 +33128,7 @@ Stylo,Ithemba,Ithemba,Ithemba Stylo,Jupiter,DQR22,DQR22 Stylo,LIFE_2,LIFE_2,LIFE_2 Stylo,Luna,Luna,Luna +Stylo,MAVERICK,MAVERICK,MAVERICK Stylo,MOSCOW,MOSCOW,MOSCOW Stylo,ORION PLUS TAB 10,DVK88,ORION PLUS TAB 10 Stylo,Onyx,Onyx,Onyx @@ -32467,6 +33226,8 @@ Sumitomo Electric Industries,ST4500,ST4500,ST-4500 Sumitomo Electric Networks,,dhe1100,Hikari-iFrame/WDPF-703SE Sunbio,SB-TM700,SB-TM700,SB-TM700 Sunbrite,huangshan_sunbrite,huangshan,SmartTV 4K +Sunelan,Mountain M8,Mountain_M8,Mountain M8 +Sunelan,River X3,River_X3,River X3 Sunmi,L2H_EDLA_GL,SUNMI-L2HNFC,L2H_EDLA_GL Sunmi,L2Ks,SUNMI-L2KsNFC,L2Ks_EDLA_GL Sunmi,L2s_PRO,SUNMI-L2s_PRO,L2s_PRO @@ -32480,6 +33241,8 @@ Sunmi,Sunmi L2Ks,SUNMI-L2KsNFC,L2Ks_TR Sunmi,Sunmi V2s,V2s,V2s_EEA Sunmi,Sunmi V2s,V2s,V2s_GL Sunmi,Sunmi V2s,V2s,V2s_TR +Sunmi,T3 PRO,T3_PRO,T3 Pro Max +Sunmi,T3 PRO MAX,T3_PRO,T3 Pro Max Sunmi,V2s,V2s,V2s_EDLA_GL Sunmi,V2s,V2sNC,V2sNC_EDLA_GL Sunmi,V2sNC,V2sNC,V2sNC_EEA @@ -32498,6 +33261,7 @@ Sunny,SN10064,TABLET,SN10064 Sunny,SN7016,SN7016,SN7016 Sunny,SN7032,SN7032,SN7032 Sunny,SUNNY 2K Google TV,capitolhill,SUNNY 2K Google TV +Sunny,SUNNY 4K Google TV,keoneae,SUNNY 4K Google TV Sunstech,Spain / Portugal,martin,SUNSTECH SD ANDROID TV Sunstech,TAB1011,TAB1011,TAB1011 Sunstech,TAB1081,TAB1081,TAB1081 @@ -32560,6 +33324,7 @@ Syinix,55A1S,samseong,AI PONT Syinix,55U51,barking,Syinix AndroidTV Syinix,Africa,yeongdeungpo,Syinix UHD Android TV Syinix,Glory TV,SW6H,Glory TV +Syinix,Glory TV,umeda,Glory TV Syinix,Smart TV,longshan,AI PONT Syinix,Smart TV,redwood,AI PONT Symphony,ATOM,ATOM,ATOM @@ -32647,12 +33412,17 @@ Symphony,Z33,Z33,Z33 Symphony,Z35,Z35,Z35 Symphony,Z40,Z40,Z40 Symphony,Z42,Z42,Z42 +Symphony,Z42_pro,Z42_pro,Z42 pro Symphony,Z45,Z45,Symphony Z45 +Symphony,Z55,Z55,Z55 Symphony,Z60,Z60,Symphony Z60 Symphony,Z60,Z60,Z60 Symphony,Z60 Plus,Z60_plus,Z60 plus +Symphony,Z70,Z70,Z70 Symphony,ZVII,ZVII,ZVII Symphony,ZVIII,ZVIII,ZVIII +Symphony,helio_30,helio_30,helio 30 +Symphony,helio_80,helio_80,helio 80 Symphony,i10,i10,i10 Symphony,i10 plus,i10_plus,i10 plus Symphony,i100,i100,i100 @@ -32678,14 +33448,17 @@ Symphony,i80,i80,i80 Symphony,i85,i85,i85 Symphony,i90,i90,i90 Symphony,i95,i95,i95 +Symphony,i96,i96,i96 Symphony,i97,i97,i97 Symphony,i98,i98,i98 Symphony,i99,i99,i99 Symphony,innova10,innova10,innova10 Symphony,innova20,innova20,innova20 +Symphony,innova30,innova30,innova30 Symphony,roarV95,roarV95,roarV95 Symphony,roar_V150,roar_V150,roar_V150 Synetech,Synetech Elite Taurus,rk3588_t,Synetech_T35 +Synetech,Synetech_Elite_Taurus,rk3588_t,Synetech_T35 T-Mobile,REVVL 2,A30ATMO,REVVL 2 T-Mobile,REVVL 2,A30ATMO,REVVL_2_5052W T-Mobile,REVVL 2 PLUS,A70AXLTMO,REVVL 2 PLUS @@ -32697,6 +33470,9 @@ T-Mobile,REVVL 5G,Seattle_5G,T790W T-Mobile,REVVL 5G,Seattle_5G,T790Z T-Mobile,REVVL 6,Bethpage,TMAF025G T-Mobile,REVVL 6 Pro,Augusta,TMAF035G +T-Mobile,REVVL 6x 5G,TorreyPines,TMRV065G +T-Mobile,REVVL 6x PRO 5G,SouthernDunes,TMRV06P5G +T-Mobile,REVVL TAB 5G,REVVLTAB5G,TMRV5GTB T-Mobile,REVVL V,Newcastle,TMRVL4G T-Mobile,REVVL V+ 5G,Sprout,REVVL V+ 5G T-Mobile,REVVLRY,channel,REVVLRY @@ -32757,6 +33533,7 @@ TCL,G06_2K_GB,G06,Smart TV TCL,G06_2K_US,G06,Smart TV TCL,G07_4K_GB_NF,G07,Smart TV TCL,G08,G08,Smart TV Pro +TCL,G10,G10,Smart TV TCL,GO5c,U3A_PLUS_4G,5033E TCL,HotelTV,HotelTV,WelcomeTV TCL,Jitterbug Smart4,Sonata_BBH,T608G @@ -32867,6 +33644,9 @@ TCL,TCL 408,Civic_Plus,T507J TCL,TCL 408,Civic_Plus,T507U TCL,TCL 40T,Sonata_TF,T608DL TCL,TCL 40XL,Sonata_Pro_OM,T608M +TCL,TCL 50 5G,Dragonfly,T613K +TCL,TCL 50 SE,Ladybird,T611B +TCL,TCL 50 XL 5G,Goldfinch_TMO,T702W TCL,TCL 502,Rio_CAN,T432J TCL,TCL A3X,Delhi_TF,A600DL TCL,TCL C5,A3A,5152D @@ -32939,6 +33719,7 @@ TCL,TCL TAB 8,Luna,9132X TCL,TCL TAB 8 4G,Apollo_8_4G,9032X TCL,TCL TAB 8 LE,Luna_8_4G_TMO,9137W TCL,TCL TAB 8 Plus,Luna_8_4G_VZW,9138S +TCL,TCL TAB 8 SE,Luna_8_4G_ATT,9136R TCL,TCL TAB 8 V,Luna,9132X TCL,TCL TAB 8 Wi-Fi,Luna,9132X TCL,TCL TAB Disney Edition,Thor_8_4G_VZW,9050S @@ -34328,6 +35109,7 @@ TELE System,EU、UK、AP,martin,TELESYSTEM 2K Android TV TELE System,"Italy,Poland,Czech,BeNeLux",guandu,TELESYSTEM 4K Android TV TELE System,ON T2 HD,ONT2HD,ONT2HD TELE System,UPT24K,UPT24K,UPT24K +TELOX,BN500,BN500,BN500 TELOX,TE620G,TE620G,TE620G TELSTAR,TELSTAR 2K Google TV,capitolhill,TELSTAR 2K Google TV TELSTAR,TELSTAR 4K Google TV,keoneae,TELSTAR 4K Google TV @@ -34359,6 +35141,7 @@ THOMSON_KODAK,PATH_UHDXANDROID,LEDTVUHD,PATH_UHDXANDROID THTF,"TSINGHUA TONGFANG CO., LTD.",TR10CD1_3,TR10CD1 TIANHOO,EOS Pro,EOS_Pro,EOS Pro TIANYU,S40,S40,S40 +TIANYU,S40E,S40,S40 TIGO,ONEtv,uiw4054mil,ONEtv TIGO,ONEtv,uiw4059mil,ONEtv TIGO,ONEtv,vip6102w,ONEtv @@ -34473,6 +35256,7 @@ TPS,TPS-SC10,TPS-SC10,TPS-SC10 TREQ,SmarTab-8,SmarTab-8,SmarTab-8 TRIPLTEK,T mini,T_mini,T mini TRUE_SLIM,T1586K,T1586K,T1586K +TRUFON,TRUFON FLEX,TRUFON_FLEX,TRUFON FLEX TSUNAMi,Tablet Tsunami TSTA080D1,MG080D1T,MG080D1T TTS-group,IT10268,IT10268,IT10268 TTfone,TT20_eea,TTfone_TT20,TTfone TT20 @@ -34577,6 +35361,7 @@ Tech 4u,S8 Pro,S8_Pro,S8_Pro Tech 4u,Tech4U S8,S8,S8 Technicolor,,omap4_WT3,T-Hub2 Technicolor,Agile TV,dwt765mm,AgileTV +Technicolor,Agile TV,uzw4060mm,AgileTV Technicolor,Elisa Elamus,uzw4026ele,Elisa Elamus Technicolor,Euskaltel,dci765ekt,cooper Technicolor,LMT viedtelevīzijas iekārta,dwt765lmt,skipper @@ -34665,6 +35450,9 @@ Teclast,M40_EEA,M40_EEA,M40_EEA Teclast,M40_Plus_EEA,M40_Plus_EEA,M40_Plus_EEA Teclast,M40_Plus_ROW,M40_Plus_ROW,M40_Plus_ROW Teclast,M40_ROW,M40_ROW,M40_ROW +Teclast,M50-EEA,M50-EEA,M50 +Teclast,M50HD_ROW,M50HD_T,M50HD_ROW +Teclast,M50Mini_ROW,M50Mini_ROW,M50Mini Teclast,M50Pro_EEA,M50Pro_EEA,M50 Pro Teclast,M50Pro_ROW,M50Pro_ROW,M50 Pro Teclast,P10HD_N5H6,P10S_ROW,P10S_ROW @@ -34707,6 +35495,9 @@ Teclast,P30S_EEA,P30S_EEA,P30S_EEA Teclast,P30S_ROW,P30S_ROW,P30S_ROW Teclast,P30S_W_EEA,P30S_W_EEA,P30S_W_EEA Teclast,P30S_W_ROW,P30S_W_ROW,P30S_W_ROW +Teclast,P30T_EEA,P30T,P30T +Teclast,P30T_ROW,P30T,P30T +Teclast,P30_ROW,P30,P30 Teclast,P40HD_EEA,P40HD_EEA,P40HD Teclast,P40HD_EEA,P40HD_T,P40HD_EEA Teclast,P40HD_ROW,P40HD_ROW,P40HD @@ -34714,6 +35505,9 @@ Teclast,P40HD_ROW,P40HD_T,P40HD_ROW Teclast,P40HD_RUS,P40HD_RUS,P40HD Teclast,P40HD_T_EEA,P40HD_T_EEA,P40HD_T_EEA Teclast,P40HD_T_ROW,P40HD_T_ROW,P40HD_T_ROW +Teclast,P50S_EEA,P50S_EEA,P50S +Teclast,P50S_ROW,P50S_ROW,P50S +Teclast,P50_EEA,P50_EEA,P50 Teclast,P80T_EEA,P80T,P80T_EEA Teclast,P80T_ROW,P80T,P80T_ROW Teclast,P80T_Y_EEA,P80T_Y_EEA,P80T_EEA @@ -34779,10 +35573,14 @@ Teclast,T40_Plus_RUS,T40_Plus_RUS,T40_Plus_RUS Teclast,T40_Pro_W_EEA,T40_Pro_W_EEA,T40_Pro_W_EEA Teclast,T40_Pro_W_ROW,T40_Pro_W_ROW,T40_Pro_W_ROW Teclast,T40_ROW,T40,TLA001 +Teclast,T45HD_EEA,T45HD_T,T45HD_EEA +Teclast,T45HD_ROW,T45HD_T,T45HD_ROW Teclast,T50,Teclast_T50_EEA,T50 Teclast,T50,Teclast_T50_ROW,T50 Teclast,T50,Teclast_T50_RUS,T50 Teclast,T50Air_EEA,T50Air,T50Air_EEA +Teclast,T50HD_EEA,T50HD,T50HD_EEA +Teclast,T50HD_ROW,T50HD,T50HD_ROW Teclast,T50Pro_W_EEA,T50Pro_W_EEA,T50Pro_W_EEA Teclast,T50Pro_W_ROW,T50Pro_W_ROW,T50Pro_W_ROW Teclast,T50_2022_EEA,T50_2022_EEA,T50_EEA @@ -35032,6 +35830,14 @@ Tecno,TECNO CAMON 20,TECNO-CK6ns,TECNO CK6ns Tecno,TECNO CAMON 20 PRO,TECNO-CK6n,TECNO CK6n Tecno,TECNO CAMON 20 Premier 5G,TECNO-CK9n,TECNO CK9n Tecno,TECNO CAMON 20s Pro 5G,TECNO-CK8nB,TECNO CK8nB +Tecno,TECNO CAMON 30,TECNO-CL6,TECNO CL6 +Tecno,TECNO CAMON 30,TECNO-CL6k,TECNO CL6k +Tecno,TECNO CAMON 30,TECNO-CL6s,TECNO CL6s +Tecno,TECNO CAMON 30 5G,TECNO-CL7,TECNO CL7 +Tecno,TECNO CAMON 30 5G,TECNO-CL7k,TECNO CL7k +Tecno,TECNO CAMON 30 5G,TECNO-CL7s,TECNO CL7s +Tecno,TECNO CAMON 30 Premier 5G,TECNO-CL9,TECNO CL9 +Tecno,TECNO CAMON 30 Pro 5G,TECNO-CL8,TECNO CL8 Tecno,TECNO CAMON iACE 2,TECNO-KB2,TECNO KB2 Tecno,TECNO CAMON iACE 2x,TECNO-KB2j,TECNO KB2j Tecno,TECNO CX Air,TECNO-CX-Air,TECNO CX Air @@ -35070,6 +35876,8 @@ Tecno,TECNO POVA 3,TECNO-LF7n,TECNO LF7n Tecno,TECNO POVA 4,TECNO-LG7n,TECNO LG7n Tecno,TECNO POVA 4 Pro,TECNO-LG8n,TECNO LG8n Tecno,TECNO POVA 5G,TECNO-LE8,TECNO LE8 +Tecno,TECNO POVA 6,TECNO-LI7,TECNO LI7 +Tecno,TECNO POVA 6 Neo,TECNO-LI6,TECNO LI6 Tecno,TECNO POVA 6 Pro 5G,TECNO-LI9,TECNO LI9 Tecno,TECNO POVA Neo 3,TECNO-LH6n,TECNO LH6n Tecno,TECNO R6S,TECNO-R6,TECNO R6S @@ -35089,7 +35897,9 @@ Tecno,TECNO SPARK 20,TECNO-KJ5,TECNO KJ5 Tecno,TECNO SPARK 20,TECNO-KJ5n,TECNO KJ5n Tecno,TECNO SPARK 20,TECNO-KJ5s,TECNO KJ5s Tecno,TECNO SPARK 20 Pro,TECNO-KJ6,TECNO KJ6 +Tecno,TECNO SPARK 20 Pro 5G,TECNO-KJ8,TECNO KJ8 Tecno,TECNO SPARK 20 Pro+,TECNO-KJ7,TECNO KJ7 +Tecno,TECNO SPARK 20 Pro+,TECNO-KJ7s,TECNO KJ7s Tecno,TECNO SPARK 20C,TECNO-BG7,TECNO BG7 Tecno,TECNO SPARK 20C,TECNO-BG7n,TECNO BG7n Tecno,TECNO SPARK 4,TECNO-KC2,TECNO KC2 @@ -35181,6 +35991,7 @@ Tecno Mobile,POVA 5 Pro 5G,TECNO-Mobile-LH8n,TECNO Mobile LH8n Tecno Mobile,POVA Neo 2,TECNO-Mobile-LG6n,TECNO Mobile LG6n Tecno Mobile,SPARK Go 2023,TECNO-Mobile-BF7n,TECNO Mobile BF7n Tecno Mobile,SPARK Go 2024,TECNO-Mobile-BG6,TECNO Mobile BG6 +Tecno Mobile,TECNO Mobile POVA 6 Neo,TECNO-Mobile-LI6,TECNO Mobile LI6 Tecno Mobile,TECNO Mobile SPARK 20,TECNO-Mobile-KJ5n,TECNO Mobile KJ5n Tecno Mobile,TECNO Mobile SPARK 20 Pro+,TECNO-Mobile-KJ7,TECNO Mobile KJ7 Tecno Mobile,TECNO Mobile SPARK 20C,TECNO-Mobile-BG7n,TECNO Mobile BG7n @@ -35381,6 +36192,7 @@ Thomson,SPPL 2K GSmartTV,umeda,SPPL 2K GSmartTV Thomson,SPPL 4K GSmartTV,SW6H,SPPL 4K GSmartTV Thomson,SPPL 4K GSmartTV FF,SW6H,SPPL 4K GSmartTV FF Thomson,Smart TV,redwood,AI PONT +Thomson,T13M4BK64LTE,TEO13M,T13M4BK64LTE Thomson,TEO 8,TEO8LTE32,TEO8LTE Thomson,TEO10,TEO10,SPTEO10BK16 Thomson,TEO104G,TEO104G,TEO104G @@ -35403,6 +36215,7 @@ Thomson,Thomson TV,nagata,Thomson TV Thomson,ThomsonTV,shibuya,ThomsonTV Thuraya,Thuraya X5-Touch,X5-Touch,Thuraya X5-Touch TiVo Stream 4K,TiVo Stream 4K,SEI400TV,TiVo Stream 4K +Tibuta,SmartPad_E220,SmartPad_E220,SmartPad_E220 Tibuta,Tibuta_MasterPad-E100,Tibuta_MasterPad-E100,Tibuta_MasterPad-E100 Tibuta,Tibuta_MasterPad-T100,Tibuta_MasterPad-T100,Tibuta_MasterPad-T100 Tibuta,Tibuta_MasterPad-W200,MasterPad-W200,Tibuta_MasterPad-W200 @@ -35464,6 +36277,7 @@ Tonino Lamborghini,Antares,TL_Antares,Antares Tonino Lamborghini,TL99,ailsa_ii,TL99 Tonino Lamborghini,TL99G,ailsa_ii,TL99G Topicon,Topicon MDT1060,mdt1060,mdt1060 +Topsand,M8_U,M8_U,M8 Topsand,N10,N10_T,N10 Topsand,N8,N8,N8 Topsand,N8_KIDS,N8_KIDS,N8 KIDS @@ -35524,6 +36338,7 @@ Toshiba,TD-E657TS,xinnong,HIDB 4K Toshiba,TD-E757TS,ligen,HIDB 4K Toshiba,Thrive 7,tostab04,AT1S0 Toshiba,Toshiba Chromebook 2 (2015 Edition),gandof_cheets,Toshiba Chromebook 2 (2015 Edition) +Toshiba,ToshibaTV,hayward,ToshibaTV Toshiba,Toshiba_TV,MTK9632,Toshiba_TV Toshiba,Toshiba_TV,MTK9652,Toshiba_TV Toshiba,Toshiba_TV,NOVA72685,Toshiba_TV @@ -35532,6 +36347,8 @@ Toshiba,fushan_euT,hamamatsucho,Smart TV Toshiba,huangshan_emT,huangshan,Toshiba TV Toshiba,huashan_emT,hayward,Toshiba TV Toshiba,laoshan_Toshiba,laoshan,U7900 +Toshiba,lushan-Toshiba,lushan,SmartTV 4K +Toshiba,lushan-Toshiba-FFM,lushan,SmartTV 4K FFM Toshiba,taishan-jpT,taishan,SmartTV FFM Toshiba,tt300/tt301/tt302,Mozart,Mozart Toshiba,xiaoyushan_emT,xiaoyushan,HiSmartTV A4 @@ -35552,6 +36369,7 @@ Touchmate,TM-MID795,TM-MID795,TM-MID795 Touchmate,TM-TAB1085,TM-TAB1085,TM-TAB1085 Touchmate,TM_MID792WP,TM_MID792WP,TM-MID792WP Touchmate,TOUCHMATE-TM-MID811A,TM-MID811A,TOUCHMATE-TM-MID811A +Touchview Interactive,TVULTRA98_G5,TVULTRA98_G5,TVULTRA98_G5 Toughshield,R200,R200,R200 Toughshield,T700_TABLET,T700_TABLET,T700 Toush,4K FF SMART TV,SW6H,4K FF SMART TV @@ -35562,6 +36380,7 @@ Transvision,TRANSVISION-OTT-Box,UHD_I56AD_TRV,TRANSVISION-OTT-Box Transvision,TRANSVISION-Xstream,SEI500TR,TRANSVISION-Xstream Transvision,Transvision,USB6_IR80,TRANSVISION-iTV TravelWifi,Sapphire Tablet,Sapphire_Tablet,S_TAB +Trecfone,Trecfone_16 Pro Max,16_Pro_Max,16 Pro Max Trekstor,SurfTab ST70204-3,TREKM7100KLD,SurfTab ST70204-3 Trekstor,SurfTab breeze 9.6 quad,SurfTab,TrekStor SurfTab breeze 9.6 quad Trekstor,SurfTab breeze 9.6 quad 3G,ST9641602,TrekStor SurfTab breeze 9.6 quad 3G @@ -35638,9 +36457,12 @@ Trio,Stealth G4 7,Trio-Stealth-G4-7,Trio-Stealth-G4-7 Trio,Stealth-G4-101,Trio-Stealth-G4-101,Trio-Stealth G4 10.1 Trio,Stealth-G4-7.85,Trio-Stealth-G4-785,Trio-Stealth-G4-7.85 True,20721400,Tablet,20721400 +True,20721400E_EEA,Tablet,20721400E True,20725300,Tablet,20725300 +True,20725300E_EEA,Tablet,20725300E True,20726600,Tablet,20726600 True,20728200,Tablet,20728200 +True,20728200E_EEA,Tablet,20728200E True,Alpha_5G,Alpha_5G,Alpha 5G True,HCH03,TrueHCH03,HCH03 True,S1,S1,S1 @@ -35707,6 +36529,7 @@ TwinMOS,MQ703G,MQ703G,MQ703G UAUU,T30,T30,T30 UAUU,T60,T60,T60 UAUU,T90_NEW,T90_NEW,T90_NEW +UAUU,U10_RU,U10,U10 UBCtv,Vietnam,tamachi,UBC Android TV UBCtv,Vietnam,yeongdeungpo,UBC Android TV UCM(M),T12,T12,T12 @@ -35734,6 +36557,7 @@ UNITED TV,4K Smart TV,gangbyeon,4K AI Smart TV UNITED TV,LED32HS72A9,ikebukuro,AI PONT UNITED TV,Smart TV,osaki,2K AI Smart TV UNITED TV,Smart TV,redwood,AI PONT +UNITRADING,UNITRADING-IFPD,rk3588_t,UNIDEAS UNIWA,K626_EEA,K626,K626 UNIWA,M101,M101,M101 UNIWA,M101,M101,UNIWA M101 @@ -35797,6 +36621,7 @@ Ulefone,Armor 9,Armor_9,Armor 9 Ulefone,Armor 9E,Armor_9E,Armor 9E Ulefone,Armor Pad,Armor_Pad,Armor Pad Ulefone,Armor Pad 2,Armor_Pad_2,Armor Pad 2 +Ulefone,Armor Pad 3 Pro,ArmorPad3Pro,Armor Pad 3 Pro Ulefone,Armor Pad Lite,ArmorPadLite,Armor Pad Lite Ulefone,Armor X,Armor_X,Armor_X Ulefone,Armor X10,Armor_X10,Armor X10 @@ -35875,6 +36700,7 @@ Ulefone,Power Armor 13,Power_Armor_13,Power Armor 13 Ulefone,Power Armor 14,Power_Armor_14,Power Armor 14 Ulefone,Power Armor 14 Pro,Power_Armor14_Pro,Power Armor14 Pro Ulefone,Power Armor 16 Pro,PowerArmor16Pro,Power Armor 16 Pro +Ulefone,Power Armor 16S,Power_Armor_16S,Power Armor 16S Ulefone,Power Armor 18,Power_Armor_18,Power Armor 18 Ulefone,Power Armor 18T,Power_Armor_18T,Power Armor 18T Ulefone,Power Armor 19,Power_Armor_19,Power Armor 19 @@ -35960,6 +36786,10 @@ Umidigi,A13_Tab,A13_Tab,MT07 Umidigi,A13_Tab_EEA,A13_Tab_EEA,MT07 Umidigi,A15T,A15T,PA2310GBB Umidigi,A15T EEA,A15T,PA2310GBB +Umidigi,A15_Pro,A15_Pro,PA3NB15PA +Umidigi,A15_Pro_5G,A15_Pro_5G,MP36 +Umidigi,A15_Pro_5G_EEA,A15_Pro_5G,MP36 +Umidigi,A15_Pro_EEA,A15_Pro,PA3NB15PA Umidigi,A3,A3,A3 Umidigi,A3S,A3S,A3S Umidigi,A3S_EEA,A3S,A3S @@ -36036,6 +36866,7 @@ Umidigi,G1 Max RU,G1_Max,MP18 Umidigi,G1 Plus,G1_Plus,MP28 Umidigi,G1 Plus EEA,G1_Plus,MP28 Umidigi,G1_Tab_Kids,G1_Tab_Kids,MT10 +Umidigi,G1_Tab_Mini_EEA,G1_Tab_Mini_EEA,TG3DBG1MA Umidigi,G2,UMIDIGI_G2,MP21 Umidigi,G2 EEA,UMIDIGI_G2,MP21 Umidigi,G2_Tab_Kids,G2_Tab_Kids,MT11 @@ -36044,9 +36875,15 @@ Umidigi,G3 EEA,UMIDIGI_G3,MP24 Umidigi,G3 Plus,G3_Plus,MP25 Umidigi,G3 Plus EEA,G3_Plus,MP25 Umidigi,G3_Tab_Ultra,G3_Tab_Ultra,MT13 +Umidigi,G3_Tab_Ultra_EEA,G3_Tab_Ultra,MT13 Umidigi,G5 Mecha,G5_Mecha,RP08 Umidigi,G5 Mecha EEA,G5_Mecha,RP08 Umidigi,G5 Mecha RU,G5_Mecha,RP08 +Umidigi,G5_Tab,G5_Tab,MT16 +Umidigi,G5_Tab_EEA,G5_Tab_EEA,MT16 +Umidigi,G6_Tab,G6_Tab,TG2404GBA +Umidigi,G6_Tab_EEA,G6_Tab_EEA,TG2404GBA +Umidigi,G7_Tab_Mini,G7_Tab_Mini,TG2405GBA Umidigi,MT02_EEA,MT02_EEA,AblePad Umidigi,MT02_ROW,MT02_ROW,AblePad Umidigi,One,One,One @@ -36069,6 +36906,7 @@ Umidigi,Power 7S,Power_7S,MP06 Umidigi,Power 7S EEA,Power_7S,MP06 Umidigi,Power_3,Power_3,Power_3 Umidigi,Power_3_EEA,Power_3,Power_3 +Umidigi,Qin3ultra,Qin3ultra,Qin3ultra Umidigi,S2PRO,S2_PRO,S2_PRO Umidigi,S3_Pro,S3_Pro,S3_Pro Umidigi,S5 Pro,S5_Pro,S5 Pro @@ -36078,8 +36916,10 @@ Umidigi,UMIDIGI A13 Pro Max EEA,UMIDIGI_A13_Pro_Max,MP16 Umidigi,UMIDIGI A15,UMIDIGI_A15,MP33 Umidigi,UMIDIGI A15 EEA,UMIDIGI_A15,MP33 Umidigi,UMIDIGI A15 RU,UMIDIGI_A15,MP33 +Umidigi,UMIDIGI A15 Ultra,A15_Ultra,MP32 Umidigi,UMIDIGI A15C,UMIDIGI_A15C,MP34 Umidigi,UMIDIGI A15C EEA,UMIDIGI_A15C,MP34 +Umidigi,UMIDIGI A16 Pro,A16_Pro,PA3NB16PB Umidigi,UMIDIGI C1,UMIDIGI_C1,MP07 Umidigi,UMIDIGI C1 EEA,UMIDIGI_C1,MP07 Umidigi,UMIDIGI C2,UMIDIGI_C2,MP20 @@ -36096,6 +36936,11 @@ Umidigi,UMIDIGI G5A,UMIDIGI_G5A,MP38 Umidigi,UMIDIGI G5A EEA,UMIDIGI_G5A,MP38 Umidigi,UMIDIGI G5C,UMIDIGI_G5C,MP39 Umidigi,UMIDIGI G5C EEA,UMIDIGI_G5C,MP39 +Umidigi,UMIDIGI G6,G6,PG2311GBA +Umidigi,UMIDIGI G6 5G,G6_5G,PG2309GBA +Umidigi,UMIDIGI G7,G7,PG3NBG7YA +Umidigi,UMIDIGI G7_5G,G7_5G,PG3NBG7YB +Umidigi,UMIDIGI G7_EEA,G7,PG3NBG7YA Umidigi,UMIDIGI X,UMIDIGI_X,UMIDIGI X Umidigi,Z2,Z2,Z2 Umidigi,Z2 Pro,Z2_PRO,Z2_PRO @@ -36169,6 +37014,7 @@ Unitech,TB85,TB85,TB85 Unitech,TB85Plus,TB85Plus,TB85Plus Unitech,WD200,wd200,WD200 United Group,KSTB6020,KSTB6020,KSTB6020 +UnityWireless,EPIC E55,EPIC-E55,EPIC-E55 Unnecto,QUATTRO_M-3,QUATTRO_M-3,QUATTRO_M-3 Unnecto,U4560,U4560,U4560 Unnion Technologies,HH25,HH25,HH25 @@ -36213,6 +37059,7 @@ Urovo,DT50 5G,DT50_5G,DT50_5G Urovo,DT66,DT66,DT66 Urovo,P8100,P8100,P8100 Urovo,P8100P,P8100P,P8100P 4G +Urovo,P8100P 5G,P8100P_5G,P8100P_5G Urovo,RT40,SQ47,RT40 Urovo,RT40S,RT40S,RT40S Urovo,U2,SQ46M,U2 @@ -36223,6 +37070,7 @@ Usha Shriram,RA_1_GENIUS_STAR,RA_1_GENIUS_STAR,RA_1_GENIUS_STAR Utopia,UH0342 UHTABLET10.1INCH,UH0342,UH0342 V-MOCCS,VT-A9,VT-A9,VT-A9 V2COM,T2,ROCKY_T2,ROCKY T2 +V7,BUV7TBLT10A,BUV7TBLT10A,BUV7TBLT10A V7,IFPXX03-V7PRO,rk3588_t,IFPO3V7PRO V7,Zyro,zyro,V7 Zyro VAARAHI,TEO 8,T8LTE32G,TEO8LTE @@ -36242,14 +37090,20 @@ VANTEC,telma_i401,G4,G4 VASOUN,L10-T01,L10-T01,L10-T01 VASOUN,L10-T02,L10-T02,L10-T02 VASOUN,L10_A01,L10_A01,L10 +VASOUN,L10_A01_EEA,L10_A01_EEA,L10 +VASOUN,L10_A02,L10_A02,L10 +VASOUN,L10_A02_EEA,L10_A02_EEA,L10 +VASOUN,L10_A03,L10_A03,L10 VASOUN,M7,M7,M7 VASOUN,M7_EEA,M7_EEA,M7_EEA VASOUN,TAB12,TAB12,L10 VASOUN,TAB12_EEA,TAB12_EEA,L10 VBox,XTi,DTP9539,XTi +VECT,VECT-IFPD,rk3588_t,UIT VENSTAR,VENSTAR2050,VENSTAR2050,VENSTAR2050 VETOO,T4GB07,T4GB07,T4GB07 VETOO,T4GB10,T4GB10,T4GB10 +VETOO,TWIFIB07,TWIFIB07,TWIFIB07 VETOO,V10,V10,V10 VFONE,Mix,Mix,Mix VIA Tech,Mobile360 IVT01,IVT01,Mobile360 IVT01 @@ -36259,16 +37113,32 @@ VICTUS,VRS6_Plus,VRS6_Plus,VRS6 Plus VIKUSHA,V-E5,V-E5,V-E5 VIKUSHA,V-N5,V-N5,V-N5 VIKUSHA,V-Z40,V-Z40,V-Z40 +VIKUSHA,V-Z40Pro,V-Z40Pro,V-Z40Pro VIKUSHA,VZ-30,VZ-30,VZ-30 VILLAON,V20,V20,V20 +VILLAON,V20 SE,VILLAON_V20_SE,VILLAON V501W +VILLAON,V30 RS,VILLAON-V30-RS,VILLAON V6751L +VILLAON,VILLAON V30,V30,VILLAON V30 +VILLAON,VILLAON V30,VILLAON-V30,VILLAON V30 +VIMOQ,A18,VIMOQ-A512WS,VIMOQ A512WS VIMOQ,A662LS,VIMOQ-A662LS,VIMOQ A662LS +VIMOQ,SE668S,VIMOQ-P662LO,VIMOQ P662LO VIMOQ,VIMOQ AC50,VIMOQ-A507LD,VIMOQ A507LD +VIMOQ,VIMOQ A20 Core,VIMOQ-A632WS,VIMOQ A632WS +VIMOQ,VIMOQ A40,Nola-ultra,Orange Nola ultra +VIMOQ,VIMOQ A40,VIMOQ-A662LMO,VIMOQ A662LMO +VIMOQ,VIMOQ A40,VIMOQ-A662LMS,VIMOQ A662LMS +VIMOQ,VIMOQ A40,VIMOQ-A662LO,VIMOQ A662LO VIMOQ,VIMOQ A40,VIMOQ-A662LS,VIMOQ A662LS +VIMOQ,VIMOQ A49 Play,VIMOQ-A631LO,VIMOQ A631LO +VIMOQ,VIMOQ A49 Play,VIMOQ-A631LS,VIMOQ A631LS VIMOQ,VIMOQ A507LT,VIMOQ-A507LT,VIMOQ A507LT VIMOQ,VIMOQ V51 LTE,VIMOQ-A507LE,VIMOQ A507LE VIMOQ,VIMOQ Vision 3,VIMOQ-S661LS,VIMOQ S661LS +VIMOQ,VIMOQ-A661WS,VIMOQ-A661WS,VIMOQ A661WS VIMOQ,itel A18,VIMOQ-A512WS,VIMOQ A512WS VIOMI,Smart TV,longshan,AI PONT +VIOS,VTAB7,VTAB7,VTAB7 VIPER,SZ11MK1,SZ11MK1,SZ11MK1 VIPER,VIPER-Z08MK,VIPER-Z08MK,Z08MK VIPER,Z11MK,Z11MK,Z11MK @@ -36301,6 +37171,8 @@ VOLFEN,NEXO-TAB-70,NEXO-TAB-70,NEXO TAB 70 VOLFEN,NEXO_TAB_10,NEXO_TAB_10,NEXO_TAB_10 VOLFEN,Nexo TAB 7,Nexo-TAB-7,Nexo-TAB-7 VOLIA,VOL001,VOL001,VOL001 +VORCOM,AVALON,AVALON,AVALON +VORCOM,QuartzLITE,QuartzLITE,QuartzLITE VORCOM,S12_classic,S12_classic,S12_classic VORCOM,S7-classic,S7-classic,S7-classic VORCOM,S7-classic-10,S7-classic-10,S7-classic @@ -36423,6 +37295,8 @@ Veidoo,T80,T80,T80 Veidoo,T80_PLUS,T80_PLUS,T80_PLUS Veidoo,T80_PLUS,T80_PLUS_EEA,T80_PLUS_EEA Veidoo,V88,V88,V88 +Veidoo,VEIDOO_T30_PLUS ,VEIDOO_T30_PLUS,VEIDOO_T30_PLUS +Veidoo,VEIDOO_T30_PLUS_EEA,VEIDOO_T30_PLUS_EEA,VEIDOO_T30_PLUS_EEA Veidoo,VEIDOO_T40_EEA,VEIDOO_T40_EEA,VEIDOO_T40_EEA Veidoo,VEIDOO_T50,VEIDOO_T50,VEIDOO_T50 Veidoo,VEIDOO_T60,VEIDOO_T60,VEIDOO_T60 @@ -36615,6 +37489,7 @@ Vertu,Aster,alexa,Aster Vertu,Aster T,alexa,Aster T Vertu,Constellation V,gambit,Constellation V Vertu,Constellation X,tron,CONSTELLATION X +Vertu,METAFLIP,VTL-202302,VTL-202302 Vertu,Signature Touch,odin,Signature Touch Vertu,Signature Touch,titan,Signature Touch Vertu,Signature Touch,titan,Signature Touch L @@ -36740,11 +37615,13 @@ Vexia,NicatabletV3,NicatabletV3,NicatabletV3 Vexia,Vexia FCS E2 CLM,Vexia_FCS_E2_CLM,Vexia FCS E2 CLM Vexia,Vexia_TRES_10,Vexia_TRES_10,Vexia_TRES_10 VfonX,GP8,GP8,GP8 +Vgo Tel,NEW 10,NEW_10,NEW 10 Vgo Tel,NEW 11,Smartphone,NEW 11 Vgo Tel,NEW 15,NEW_15,NEW 15 Vgo Tel,NEW 24,NEW_24,NEW 24 Vgo Tel,NEW 7,NEW_7,NEW 7 Vgo Tel,NEW_20,NEW_20,NEW 20 +Vgo Tel,NOTE 24,NOTE_24,NOTE 24 Vgo Tel,New 5,NEW_5,NEW 5 Vgo Tel,OCEAN 6,VGOTEL_OCEAN_6,Ocean 6 Vgo Tel,Ocean 8,Ocean_8,Ocean_8 @@ -36906,6 +37783,7 @@ Vivo,PD1612,PD1612,vivo Y67 Vivo,PD1731D,PD1731D,vivo Y71A Vivo,S17,PD2283,V2283A Vivo,S17 Pro,PD2284,V2284A +Vivo,S18 Pro,PD2344,V2344A Vivo,T1,V2154,V2153 Vivo,T1,V2154,V2154 Vivo,T1,V2154,V2168 @@ -36917,6 +37795,7 @@ Vivo,T2 5G,V2222,V2240 Vivo,T2 Pro 5G,V2321,V2321 Vivo,T2x 5G,V2225,V2253 Vivo,T2x 5G,V2225,V2312 +Vivo,T3 5G,V2334,V2334 Vivo,U5x,PD2180,V2180GA Vivo,V1,V1,vivo V1 Vivo,V1730EA,PD1730E,V1730EA @@ -37159,24 +38038,35 @@ Vivo,V29e,V2303,V2303 Vivo,V29e 5G,V2317,V2317 Vivo,V3,PD1524,vivo V3 Vivo,V3,V3,vivo V3 +Vivo,V30,V2318,V2318 Vivo,V30 Lite,V2317,V2314 +Vivo,V30 Lite,V2342,V2342 Vivo,V30 Lite 5G,V2327,V2327 +Vivo,V30 Pro,V2319,V2319 Vivo,V30 SE,V2327,V2349 +Vivo,V30e,V2339,V2339 Vivo,V3Lite,V3Lite,vivo V3Lite Vivo,V3M A,PD1524B,vivo PD1524B Vivo,V3Max,V3Max,vivo V3Max Vivo,V3Max + A,PD1523B,vivo V3Max+ A Vivo,V3Max A,PD1523,vivo PD1523A +Vivo,V40 Lite,V2339,V2340 +Vivo,V40 Lite,V2339,V2341 Vivo,V40 SE 5G,V2327,V2337 Vivo,V5Plus,V5Plus,vivo V5Plus Vivo,V9,1727ID,vivo 1727 Vivo,V9 6GB,1723CF,vivo 1723 Vivo,V9 Pro,1851,vivo 1851 Vivo,X Flip,PD2256,V2256A +Vivo,X Fold3 Pro,PD2337,V2337A Vivo,X100,PD2309,V2309A Vivo,X100,V2308,V2308 Vivo,X100 Pro,PD2324,V2324A Vivo,X100 Pro,V2309,V2309 +Vivo,X100 Ultra,PD2366,V2366GA +Vivo,X100 Ultra,PD2366,V2366HA +Vivo,X100s,PD2309,V2359A +Vivo,X100s Pro,PD2324,V2324HA Vivo,X5,X5,vivo X5 Vivo,X50,2004,vivo 2004 Vivo,X50 Pro,2006,vivo 2006 @@ -37216,8 +38106,12 @@ Vivo,Y02s,V2204,V2229 Vivo,Y02t,V2254,V2252 Vivo,Y02t,V2254,V2254 Vivo,Y02t,V2254,V2325 +Vivo,Y03,V2333,V2332 +Vivo,Y03,V2333,V2406 Vivo,Y100,PD2313,V2313A Vivo,Y100,V2239,V2239 +Vivo,Y100,V2342,V2342 +Vivo,Y100,V2342,V2412 Vivo,Y100 5G,V2327,V2327 Vivo,Y100A,V2222,V2222 Vivo,Y11,PD2236,V2236A @@ -37232,8 +38126,16 @@ Vivo,Y16,V2204,V2305 Vivo,Y17,1902D,vivo 1902 Vivo,Y17s,V2310,V2310 Vivo,Y17s,V2310,V2331 +Vivo,Y18,V2333,V2333 +Vivo,Y18,V2333,V2345 +Vivo,Y18e,V2333,V2350 +Vivo,Y18s,V2333,V2410 Vivo,Y200 5G,V2307,V2307 +Vivo,Y200 GT,PD2361,V2361GA +Vivo,Y200 Pro 5G,V2303,V2303 +Vivo,Y200 Pro 5G,V2303,V2401 Vivo,Y200e 5G,V2327,V2336 +Vivo,Y200i,PD2354,V2354A Vivo,Y21,Y21,vivo Y21 Vivo,Y21A,2149,V2149 Vivo,Y21L,Y21L,vivo Y21L @@ -37269,6 +38171,8 @@ Vivo,Y36,V2247,V2247 Vivo,Y36,V2247,V2324 Vivo,Y36 5G,V2248,V2248 Vivo,Y36m,PD2318,V2318A +Vivo,Y36s,PD2318,V2318A +Vivo,Y38 5G,V2343,V2343 Vivo,Y51,Y51,vivo Y51 Vivo,Y51A,PD1510,vivo Y51A Vivo,Y53,1606,vivo 1606 @@ -37325,6 +38229,7 @@ Vivo,iQOO Neo7 竞速版,PD2232,V2232A Vivo,iQOO Neo8,PD2301,V2301A Vivo,iQOO Neo8 Pro,PD2302,V2302A Vivo,iQOO Neo9,PD2338,V2338A +Vivo,iQOO Neo9 Pro,I2304,I2304 Vivo,iQOO Neo9 Pro,PD2339,V2339A Vivo,iQOO Pad,DPD2307,iPA2375 Vivo,iQOO Pad Air,DPD2305,iPA2451 @@ -37345,6 +38250,10 @@ Vivo,iQOO Z7x,PD2272,V2272A Vivo,iQOO Z7x (m),PD2272,V2272A Vivo,iQOO Z7x 5G,I2216,I2216 Vivo,iQOO Z8x,PD2312,V2312A +Vivo,iQOO Z9,PD2361,V2361A +Vivo,iQOO Z9 5G,I2218,I2218 +Vivo,iQOO Z9 5G,I2302,I2302 +Vivo,iQOO Z9 Turbo,PD2352,V2352A Vivo,vivo 1907,1907,vivo 1907 Vivo,vivo X21i A,PD1801,vivo X21i A Vivo,vivo Y75s,PD1708C,vivo Y75s @@ -37417,6 +38326,7 @@ Vivo,vivo NEX A,PD1806,vivo NEX A Vivo,vivo NEX S,PD1805,vivo NEX S Vivo,vivo Pad Air,DPD2305,PA2353 Vivo,vivo Pad2,DPD2221,PA2373 +Vivo,vivo Pad3 Pro,DPD2329,PA2473 Vivo,vivo S1,PD1831,V1831A Vivo,vivo S15 Pro,PD2207,V2207A Vivo,vivo S15e,PD2190,V2190A @@ -37430,6 +38340,7 @@ Vivo,vivo T2,PD2199,V2199GA Vivo,vivo X Fold,PD2178,V2178A Vivo,vivo X Fold+,PD2229,V2229A Vivo,vivo X Fold2,PD2266,V2266A +Vivo,vivo X Fold3,PD2303,V2303A Vivo,vivo X Note,PD2170,V2170A Vivo,vivo X20,PD1709,vivo PD1709 Vivo,vivo X20,PD1709,vivo X20A @@ -37634,10 +38545,12 @@ Vonino,iMart_MAX,iMart_MAX,iMart_MAX Vonino,iMart_Pro,iMart_Pro,iMart_Pro Vonino,jax_S,Jax_S,Jax_S Voo,DV8220,DV8220,DV8220 +Voo,VOO Box,SEI700TMM,VOO Box Vorago,PAD-7,PAD-7,PAD-7 Vorago,PAD-7-KIDS,PAD-7-KIDS,PAD-7-KIDS Vorago,PAD-7-V5,PAD-7-V5,PAD-7-V5 Vorago,PAD-7-V6,PAD-7-V6,PAD-7-V6 +Vortex,B55,B55,B55 Vortex,Beat 8,BEAT8,BEAT 8 Vortex,G8,G8,G8 Vortex,HD60,HD60,HD60 @@ -37654,7 +38567,10 @@ Vortex,TAB8V,TAB8V,TAB8V Vortex,V22,V22,V22 Vortex,V22S,V22S,V22S Vortex,V50LTE,V50LTE,V50LTE +Vortex,VORTEX BTAB10,BTAB10,BTAB10 Vortex,VORTEX CM62,CM62,VORTEX CM62 +Vortex,VORTEX HD65 Choice,VORTEX_HD65_Choice,VORTEX HD65 Choice +Vortex,VORTEX_K65,VORTEX_K65,VORTEX K65 Vortex,Vortex Z22,Z22,Z22 Vortex,Vortex Z23,Z23,Z23 Vortex,VortexV20,VortexV20,V20 @@ -37701,6 +38617,7 @@ Vu Televisions,43GloLED,songshan,VU SMART TV Vu Televisions,43UA,ikebukuro,AI PONT Vu Televisions,50CA,samseong,AI PONT Vu Televisions,50CLED/55CLED/65CLED,songshan,VU TV FFM +Vu Televisions,55QMP,hengshan,VU TV FFM Vu Televisions,Android TV,longshan,AI PONT Vu Televisions,ULED,wuyishan,VU TV FFM Vu Televisions,VU 4K Google TV,keoneae,VU 4K Google TV @@ -37740,6 +38657,7 @@ WAOO,Waoo TV-boks,m393gena_w,Waoo TV-boks WCED,H1010_M50,H1010_M50,H1010_M50 WHOOP,TAB-8US2,TAB-8US2,TAB-8US2 WHOOP,TAB_8US1,TAB_8US1,TAB_8US1 +WIDE,WD_PL,WD_PL,WD_PL WIIGO,WG-7650,WG-7650,WG-7650 WILL (JP),Willfon_Pad_02,Willfon_Pad_02,Willfon_Pad_02 WILLETT,India,tamachi,WILLETT FHD Android TV @@ -37765,12 +38683,18 @@ Wainyok,P10X,P10X,P10X Walton,4K Smart TV,pioneer,4K PA Smart TV Walton,Bangladesh and EU,tamachi,WALTON Android TV Walton,Bangladesh and EU,yeongdeungpo,WALTON Android TV +Walton,Customer need debug,NEXG_N9,NEXG N9 Walton,EXPRESS,guandu,WALTON Android TV Walton,G 4K TV Dongle,YQX,G 4K TV Dongle Walton,LT750,LT750,LT750 Walton,NEXG N71,NEXG_N71,NEXG N71 Walton,NEXG N71 Plus,NEXG_N71_Plus,NEXG N71 Plus +Walton,NEXG N72,NEXG_N72,NEXG N72 +Walton,NEXG N73,NEXG_N73,NEXG N73 Walton,NEXG N8,NEXG_N8,NEXG N8 +Walton,NEXG_N25,NEXG_N25,NEXG N25 +Walton,ORBIT Y12,ORBIT_Y12,ORBIT Y12 +Walton,ORBIT Y70,ORBIT_Y70,ORBIT Y70 Walton,Orbit M20,OrbitM20,Orbit M20 Walton,Orbit Y11,Orbit_Y11,Orbit Y11 Walton,Orbit Y20,OrbitY20,Orbit Y20 @@ -37917,6 +38841,7 @@ WeTap,WeTap_Y10,WeTap_Y10,WeTap_Y10 WeTap,WeTap_Y10_EEA,WeTap_Y10_EEA,WeTap_Y10 WeTek,Play,Play,Play WeTek,WeTek,wh220,Air +Webee,Webee_Tab_8,Webee_Tab_8,Webee_Tab_8 Webfleet Solutions,PRO 8475,triton,PRO 8475 Weimei,WEIMEI NEON2,WEIMEI_NEON2,WEIMEI_NEON2 Weimei,weplus 3,weplus_3,weplus_3 @@ -37926,6 +38851,7 @@ Wenu,Kate,Wenu,Kate Westgate,Westgate_T801,Westgate-T801,T801 Westgate Resorts,T802,T802,T802 Westgate Resorts,T803,T803,T803 +Westgate Resorts,T805,T805,T805 Westinghouse,Smart TV,ueno,2K Android TV Westinghouse,W10TWF19,W10TWF19,W10TWF19 Westinghouse,W7T3G19,W7T3G19,W7T3G19 @@ -38260,6 +39186,8 @@ Wintouch,K72P,K72P,K72P Wintouch,Q705,Q705,Q705 Wintouch,WINTOUCH_K702,WINTOUCH_K702,K702 Wirele-X,MT70,MT70,MT70 +Wise-Tech,P33,P33,P33 +Wise-Tech,P55,P55,P55 Wise-Tech,Tech_A1_Plus,Tech_A1_Plus,Tech_A1_Plus Wise-Tech,Wise-Tech_M1,Wise-Tech_M1,Wise-Tech_M1 Wiseasy,Nano 6,Nano6,Nano6 @@ -38372,6 +39300,7 @@ X-TIGI,V21,X-TIGI_V21,X-TIGI_V21 X-TIGI,V28,V28,X-TIGI_V28 X-TIGI,V28 LTE,V28_LTE,X-TIGI_V28 LTE X-TIGI,V3+,X-TIGI_V3_Plus,X-TIGI_V3+ +X-TIGI,V51,V51,V51 X-TIGI,V8,V8,V8 X-TIGI,X-TIGI P16,Photo_P16,X_TIGI_Photo P16 X-TIGI,X-TIGI V19,X_TIGI_V19,X_TIGI_V19 @@ -38409,6 +39338,7 @@ X-View,X-ViewTablet10,X-ViewTablet10,X-ViewTablet10 X-View,X_ViewTablet10,X_ViewTablet10,X-ViewTablet X-mobile,X-mobile SmartWiFi,XM-SW1,XM-SW1 X-mobile,X4,X4,X4 +X-mobile,X63Pro,X_63_B_ProB,X63Pro X-mobile,XW,XW,XW XD-DML,ITALY,guandu,XD 4K Andriod TV XD-DML,XD,martin,XD 2K Andriod TV @@ -38434,6 +39364,8 @@ Xcell,Enia,Xcell_Enia,Enia Xcell,View,View,View Xcell,Zoom,Xcell_Zoom,Zoom Xelex,Gama_Tab_X8,Gama_Tab_X8,Gama_Tab_X8 +Xgody,N02,N02,N02 +Xgody,N02_A,N02_A,N02_A Xgody,T702,T702,T702 Xgody,T702A,T702A,T702A Xgody,T702E_EEA,T702E_EEA,T702E_EEA @@ -38447,6 +39379,7 @@ Xgody,T901Pro-A,T901Pro-A,T901Pro-A Xgody,T901Pro-EEA,T901Pro-EEA,T901Pro-E Xgody,TAB10,TAB10,TAB10 Xgody,TAB_M10,TAB_M10,TAB_M10 +Xgody,TAB_M10_EEA,TAB_M10_EEA,TAB_M10_EEA Xgody,X24_EU,X24_EU,X24_EU Xgody,XGT,XGT,XGT Xgody,XGT-T901-A,XGT-T901-A,XGT-T901-A @@ -38717,10 +39650,15 @@ Xiaomi,Xiaomi 13T Pro,corot,23078PND5G Xiaomi,Xiaomi 13T Pro,corot,23088PND5R Xiaomi,Xiaomi 13T Pro,corot,A301XM Xiaomi,Xiaomi 14,houji,23127PN0CC +Xiaomi,Xiaomi 14,houji,23127PN0CG Xiaomi,Xiaomi 14 Pro,shennong,23116PN5BC Xiaomi,Xiaomi 14 Pro,shennong,2311BPN23C +Xiaomi,Xiaomi 14 Ultra,aurora,24030PN60G +Xiaomi,Xiaomi 14 Ultra,aurora,24031PN0DC +Xiaomi,Xiaomi 14 Ultra,aurora,Xiaomi for arm64 Xiaomi,Xiaomi Civi,mona,2109119BC Xiaomi,Xiaomi Civi 1S,zijin,2109119BC +Xiaomi,Xiaomi Civi 4,chenfeng,24053PY09C Xiaomi,Xiaomi MIX Fold,cetus,M2011J18C Xiaomi,Xiaomi MIX Fold 2,zizhan,22061218C Xiaomi,Xiaomi MIX Fold 3,babylon,2308CPXD0C @@ -38735,6 +39673,7 @@ Xiaomi,Xiaomi Pad 6,pipa,23043RP34I Xiaomi,Xiaomi Pad 6 Max 14,yudi,2307BRPDCC Xiaomi,Xiaomi TV Box S (2nd Gen),jaws,MiTV-AFKR0 Xiaomi,Xiaomi TV stick 4K,soul,MiTV-AYFR0 +Xiaomi,Xiaomi Watch 2,axolotlaxie,Xiaomi Watch 2 Xiaomi,Xiaomi Watch 2 Pro,axolotl,Xiaomi Watch 2 Pro Xiaomi,Xiaomi Watch 2 Pro,axolotlte,Xiaomi Watch 2 Pro Xiaomi,Xiaomi civi 3,yuechu,23046PNC9C @@ -38746,11 +39685,13 @@ Xinlian,HC750,HC750,HC750 Xitrix,TravelPad A10,TravelPad_A10,TravelPad A10 Xitrix,XITRIX,stanford,SMART TV Xitrix,XITRIX,zhongshan,4K SMART TV +Xming,Page One Smart Projector,tianshan,Xming Google TV Xmobile,X1,X1,X1 Xmobile,X10,XMOBILE,X10 Xmobile,X10Max,X10Max,X10Max Xmobile,X3,Xmobile_X3,X3 Xmobile,X63Pro,X63Pro,X63Pro +Xmobile,X63Pro,X_63_ProA,X63Pro Xmobile,X7,X7,XMOBILE X7 Xmobile,X8Max,X8Max,X8Max Xmobile,X8Pro,X8Pronus,X8Pro @@ -38775,6 +39716,7 @@ Xplore Technologies,XP8776,XP8776,XP8776 Xplore Technologies,XSLATE_D10,XSLATE_D10,iX101B1 Xplore Technologies,XSLATE_D10,XSLATE_D10,iX101D1 Xplore Technologies,XSLATE_D10,XSLATE_D10,iX101D1-FIOS +Xsmart,Mate_10,Mate_10,Mate 10 Xstar,S2,S2,S2 Xstar,T20,T20,T20 Xtratech,BRIO_X31,BRIO_X31,BRIO_X31 @@ -38799,6 +39741,7 @@ YAYGO,SEI600YAY4,HND,ATV-101 YCQ_SZ,YCQ_Q88,YCQ_Q88,YCQ_Q88 YELLYOUTH,TAB_101,TAB_101,TAB_101 YETRUE,yetruepad21,yetruepad21_EEA,yetruepad21 +YIKEMI,Pad6_Plus_EEA,Pad6_Plus_EEA,Pad6 PLUS YOBANSE,T88,T88,T88 YOBANSE,Y101,Y101,Y101 YOBANSE,Z-T10,Z-T10,Z-T10 @@ -38849,6 +39792,7 @@ YU,Yureka Note,YU6000,YU 6000 YUMKEM,N10-EEA,N10-EEA,N10-EEA YUMKEM,U221,U221,U221 YUMKEM,U221-EEA,U221-EEA,U221-EEA +YUMKEM,U320,U320,U320 YUNTAB,D107,D107,D107 YUNTAB,YUNTAB-K107,YUNTAB-K107,YUNTAB-K107 YUNTAB,YUNTAB-K107_EEA,YUNTAB-K107_EEA,YUNTAB-K107_EEA @@ -38872,8 +39816,12 @@ Yes,Yes,SEI800Y,yes Yes,yes,SEI500Y,yes Yes,yes,SEI800Y,yes YesTeL,Note_30_pro,Note_30_pro,Note 30 pro +YesTeL,T13-EEA,T13-EEA,T13-EEA +YesTeL,T13-US,T13-US,T13-US YesTeL,T13_EEA,T13_EEA,T13_EEA YesTeL,T13_US,T13_US,T13_US +YesTeL,T15_U_EEA,T15_U_EEA,T15_U_EEA +YesTeL,T15_U_US,T15_U_US,T15_U_US YesTeL,T5,T5,T5 YesTeL,T5-plus,T5-plus,T5-plus YesTeL,T5_0,T5_0,T5_0 @@ -38883,6 +39831,8 @@ YesTeL,T5_EEA_0,T5_EEA_0,T5_EEA_0 YesTeL,X11_EEA,X11_EEA,X11_EEA YesTeL,X2_EEA,X2_EEA,X2_EEA YesTeL,X2_US,X2_US,X2_US +YesTeL,X2_U_EEA,X2_U_EEA,X2_U_EEA +YesTeL,X2_U_US,X2_U_US,X2_U_US YesTeL,X3,X3,X3 YesTeL,X3_EEA,X3_EEA,X3_EEA YesTeL,X7_EEA,X7_EEA,X7_EEA @@ -38926,6 +39876,7 @@ Yota Devices,C9660,yotaphone,C9660 Yota Devices,YotaPhone2,yotaphone2,YD201 YouSee,YouSee Streamer,VIP7020_YouSee,YouSee Streamer Youfone,Amigo7xYUF,Amigo7xYUF,Amigo7xYUF +Yuho,A1332E,A1332E,A1332E Yuho,Candy,Candy,Candy Yuho,Candy_Pro,Candy_Pro,Candy_Pro Yuho,Netra,Netra,Netra @@ -38951,6 +39902,7 @@ Yumpingo,YUMPINGO_1,YUMPINGO_1,YUMPINGO_1 ZAMOLXE,ZXT-10FL323G-PRO,ZXT-10FL323G-PRO,ZXT-10FL323G-PRO ZAMOLXE,ZXT-10HL323S,ZXT-10HL323S,ZXT-10HL323S ZCS(SZ),Z91,Z91,Z91 +ZCS(SZ),Z92,Z92,Z92 ZEEKER,ZEEKER_P10,ZEEKER_P10,ZEEKER P10 ZEEKER,ZEEKER_P10_EEA,ZEEKER_P10,ZEEKER P10 ZEEKER,ZEEKER_P10_RU,ZEEKER_P10,ZEEKER P10 @@ -38965,9 +39917,12 @@ ZENTALITY,C-705,C-705,C-705 ZETATV,Zeta TV TATU,DV8545-C-KUT,Zeta TV TATU ZIFFLER,ABMS Android TV,shinagawa,ABMS Android TV ZIK (kz),ZIK_W1027,ZIK_W1027,ZIK_W1027 +ZIOVO,Z118-EEA,Z118-EEA,Z118-EEA +ZIOVO,Z118-US,Z118-US,Z118-US ZLINE,ZLINE_Z_742,ZLINE_Z_742,Z_742 ZMBIZI,ZMBIZI,ZMBIZI_Z1,ZMBIZI Z1 ZMBIZI,ZMBIZI Z2,ZMBIZI_Z2,ZMBIZI Z2 +ZMOOTH,ZMOOTH ZTAB020,Zkai-study-Tab,ZTAB020 ZOLON,L16XX,L16XX,L16XX ZOLON,M30,M30,M30 ZOLON,M50,M50,M50 @@ -39189,6 +40144,7 @@ ZTE,009Z,bladeplus,ZTE V882 ZTE,009Z,bladeplus,ZTE V886J ZTE,402ZT,ZTE-402ZT,402ZT ZTE,5G UG Phone U23,P720F02,5G UG Phone U23 +ZTE,5G UG Phone U23,P720F02,ZTE 7160N ZTE,901ZT,P450A01,901ZT ZTE,902ZT,Z8851S,902ZT ZTE,A001ZT,Z6202S,A001ZT @@ -39654,6 +40610,8 @@ ZTE,LS-5503,P839F50,LS-5503 ZTE,LS-5503,P839F50,ZTE Blade S6 Plus ZTE,Lannister,weeper,Z863DL ZTE,Leopard MF800,roamer2,Leopard MF800 +ZTE,Libero Flip,Z8888S,A304ZT +ZTE,Libero Flip,Z8888S,XXXX ZTE,Light Tab 2,v9plus,Light Tab 2 ZTE,M8402,roamer2,M8402 ZTE,M901C,P692N60,ZTE M901C @@ -39830,6 +40788,7 @@ ZTE,Nubia 4010,P963F60,Nubia 4010 ZTE,Nubia 6010,P963F07,Nubia 6010 ZTE,Nubia 8011,P963F05,Nubia 8011 ZTE,Nubia 8031,P963F06,Nubia 8031 +ZTE,Nubia Flip 5G,P745F01,NX724J ZTE,Nubia N11,P731F50,Nubia N11 ZTE,Nubia N40,P963F50_A,Nubia N40 ZTE,Nubia N40,P963F50_A,ZTE Blade A51 Lite @@ -39913,6 +40872,7 @@ ZTE,RACER III mini,roamer2,RACER III mini ZTE,RED MAGIC 5G,NX659J,NX659J ZTE,REDMAGIC 7,NX709J-EEA,NX709J ZTE,REDMAGIC 7Pro,NX709J-UN,NX709J +ZTE,REDMAGIC 9,NX769J,NX769J ZTE,REDMAGIC 9 Pro,NX769J,NX769J ZTE,Racer,mooncake,Carl ZTE,Racer,mooncake,MTC 916 @@ -40235,6 +41195,7 @@ ZTE,X9180,X9180,X9180 ZTE,Z-01K,Z-01K,Z-01K ZTE,Z10,P817E52,ZTE Z10 ZTE,Z2020N3,Z8850K,A2020N3 +ZTE,Z2351N,P720F08,Z2351N ZTE,Z3153V,Z3153,Z3153V ZTE,Z3351S,Z3351,Z3351S ZTE,Z3352CA,Z3352CA,Z3352CA @@ -40258,6 +41219,7 @@ ZTE,Z6356T,Z6356T,Z6356T ZTE,Z6410,Z6410,Z6410S ZTE,Z6530M,Z6530,Z6530M ZTE,Z6530V,Z6530,Z6530V +ZTE,Z6561J,Z6561S,Z6561J ZTE,Z660G,nice,Z660G ZTE,Z6621O,Z6621O,Z6621O ZTE,Z665C,seanplus,Z665C @@ -40433,6 +41395,7 @@ ZTE,ZTE Axon 11 SE 5G,P683S10,ZTE 9000N ZTE,ZTE Axon 20 5G,P725A02,ZTE A2121G ZTE,ZTE Axon 30 Pro 5G,P875A12,ZTE A2022P ZTE,ZTE Axon 30 Ultra 5G,P875A11,ZTE A2022PG +ZTE,ZTE Axon 60,P616F02,Z2356 ZTE,ZTE B2017,msm8952_64,ZTE B2017 ZTE,ZTE BLADE A0605,P809F15,ZTE BLADE A0605 ZTE,ZTE BLADE A0605,P809F15,ZTE BLADE A6 MAX @@ -40510,6 +41473,7 @@ ZTE,ZTE Blade A33+ Core,P963F92,ZTE Blade A33+ Core ZTE,ZTE Blade A33s,P963F93,ZTE Blade A33s ZTE,ZTE Blade A34,P963F94,ZTE Blade A34 ZTE,ZTE Blade A34,P963F94_A,ZTE Blade A34 +ZTE,ZTE Blade A35 Lite,P963F10,ZTE Blade A35 Lite ZTE,ZTE Blade A3v,Z5157,Z5157V ZTE,ZTE Blade A3v,Z5157,Z5157Y ZTE,ZTE Blade A5 2019,P963F30,ZTE Blade A5 2019 @@ -40575,6 +41539,7 @@ ZTE,ZTE Blade V1000RU,P671F20D,ZTE Blade V1000RU ZTE,ZTE Blade V2020 Vita,P671F70,ZTE 8000 ZTE,ZTE Blade V41 Smart,P606F05,ZTE A7050 ZTE,ZTE Blade V50 Design,P606F08,ZTE 8050 +ZTE,ZTE Blade V50 Design,P606F08,nubia 8050 ZTE,ZTE Blade V50 Design 5G,P720F03,ZTE 8150N ZTE,ZTE Blade V50 Vita,P606F09,ZTE 8550 ZTE,ZTE Blade V770,P852F52,ZTE Blade V770 @@ -40638,13 +41603,18 @@ ZTE,myPad P5,K78,Amazing_P5 ZTE,myPad P5,K78,myPad P5 ZTE,nubia Z30 Pro,P875N02,NX667J ZTE,nubia Blade A72,Z6255,Z6255CA +ZTE,nubia Flip 5G,Z8888S,NX724J +ZTE,nubia Music,P963F11,Z2353 +ZTE,nubia Neo 2 5G,P820F03,Z2352N ZTE,nubia Neo 5G,P720F03_A,nubia 8150N ZTE,nubia Pad 3D,LumePad,LPD-20W ZTE,nubia Play,NX651J,NX651J +ZTE,nubia V50 Vita,P606F09,nubia 8550 ZTE,nubia Z5,NX501,nubia Z5 ZTE,nubia Z50 Ultra,PQ82A11,NX712J ZTE,nubia Z50S Pro,PQ82A02,NX713J ZTE,nubia Z60 Ultra,PQ83A01,NX721J +ZTE,nubia Z60 Ultra,PQ83F01,NX721J ZTE,sapphire lte,sapphire4g,Z3001S ZTE,tmn smart a15,atlas40,tmn smart a15 ZTE,tmn smart a60,kiska,tmn smart a60 @@ -40653,6 +41623,7 @@ ZTE,zBox 1,YXE,zBox 1 ZTE,中兴Axon 50 Ultra 5G,P898A25,ZTE A2024H ZTE,中兴畅行40,P963S71,ZTE 1020L ZTE,中兴远航41,P720S11,ZTE 7541N +ZTLEKE,S8Plus,S8Plus,S8Plus ZUKU,A151,A155,A151 ZUKU,DV8330-T2,DV8330-T2,DV8330-T2 ZUOPU, JH105,JH105,ZER A10 @@ -40717,6 +41688,7 @@ Zebra,MC330K,MC33C,MC33 Zebra,MC36,cardhu,MC36 Zebra,MC40,MC40,MC40N0 Zebra,MC9400,MC9400,MC9400 +Zebra,MC9450,MC9450,MC9450 Zebra,PS20 (Personal Shopper),PS20JB,PS20J Zebra,PS20(Personal Shopper),PS20JP,PS20J Zebra,Pollux,TC70,TC700H @@ -40736,14 +41708,17 @@ Zebra,TC51,TC51HC,TC51 Zebra,TC52ax,TC52X,TC52AX Zebra,TC53,TC53,TC53 Zebra,TC53A,TC53,TC53 +Zebra,TC53E,TC53E,TC53E Zebra,TC55,TC55,TC55 Zebra,TC56,TC56,TC56 Zebra,TC58,TC58,TC58 Zebra,TC70x,TC70x,TC70x Zebra,TC73,TC73,TC73 +Zebra,TC73,TC73T,TC73 Zebra,TC75x,TC75x,TC75x Zebra,TC75xDF,TC75xDF,TC75x Zebra,TC78,TC78,TC78 +Zebra,TC78,TC78T,TC78 Zebra,TC8000,TC8000,TC8000 Zebra,TN28,TN28,TN28 Zebra,VC80x,VC80x,VC80x @@ -40785,6 +41760,7 @@ Zeki,TBDG1073,TBDG1073,TBDG1073 Zeki,TBDG734,TBDG734,TBDG734 Zeki,TBDG874 Tablet,TBDG874B,TBDG874 Zeki,TBDV986,TBDV986,TBDV986 +Zeki,TBOG1034,TBOG1034,TBOG1034 Zeki,TBQC1063B,TBQC1063B,TBQC1063 Zeki,TBQG1038,TBQG1038,TBQG1038 Zeki,TBQG1084,TBQG1084,TBQG1084 @@ -40857,6 +41833,7 @@ Zoji,Z9,Z9,Z9 Zonda,AWM533,AWM533,AWM533 Zong 4G,Z1,Z1,Z1 Zong 4G,Z2,Z2,Z2 +Zonko,D105,D105,D105 Zonko,D106,D106,D106 Zonko,D118,D118,D118 Zonko,D136,D136,D136 @@ -40941,6 +41918,7 @@ Zuum,ONIX,ONIX,ONIX Zuum,ONIX S,ONIX_S,ONIX S Zuum,ROCKET II,ROCKET_II,ROCKET II Zuum,ROCKET III,ROCKET_III,ROCKET III +Zuum,SENS_CURVE,SENS_CURVE,SENS CURVE Zuum,STELLAR,STELLAR,STELLAR Zuum,STELLAR M1,STELLAR_M1,STELLAR M1 Zuum,STELLAR M2,STELLAR_M2,STELLAR M2 @@ -40969,6 +41947,9 @@ abxylute,abxylute_one,abxylute_one,abxylute_one abxylute,abxylute_one,abxylute_one,abxylute_one_EEA afriphone,smart_S5,smart_S5,smart_S5 aigo,A18,A18,A18 +aipan,F819,F819,F819 +ajib,ajib X1,ajib_X1,ajib X1 +ajib,ajib l1,ajib_l1,ajib l1 alter,MIG,MIG,MIG amulet7,P10SU_Plus,P10SU_Plus,P10SU_Plus amulet7,P10SU_Pro,P10SU_Pro,P10SU_Pro @@ -40977,6 +41958,7 @@ anyway-go,TP1040,TP1040,TP1040 aoson,M753,M753,M753 aoson,R103,R103,R103 aoson,aoson,M815,M815 +ascon,AT14,AT14,AT14P464 axs+,AXS B866V2FA,B866V2FA_AXS,AXS B866V2FA bbox,bbox,bbox-M752A,bbox-M752A beafon,Class_C250,Class_C250,Class_C250 @@ -40993,6 +41975,7 @@ benco,AE9230,AE9230,AE9230 benco,AE9240,AE9240,AE9240 benco,AE9310,AE9310,AE9310 benco,AE9950,AE9950,AE9950 +benco,AEOP519,AEOP519,AEOP519 benco,AF9010_F,AF9010_F,AF9010_F benco,AF9020,AF9020,AF9020 benco,AF9030,AF9030,AF9030 @@ -41006,6 +41989,7 @@ benco,benco S1 Pro,AE9260,AE9260 benco,benco V62,AE9150,AE9150 benco,benco V90,AE9120,AE9120 benco,benco V91,AE9310,AE9310 +benco,benco V92,AEOP517,AEOP517 benco,benco Y11,AH9110,AH9110 benco,benco Y30,AF9030,AF9030 benco,benco Y40,AH9210,AH9210 @@ -41086,11 +42070,13 @@ digITS,T1,T1,T1 du (UAE),IPBS9520,IPBS9520,IPBS9520 du (UAE),du TV,f515,VIP7802 duraMOBI,DK66,DK66,DK66 +e10 ETPad,ETPad,ETPad,ETPad e4u(A),TAB900,TAB900,TAB900 eBox,EBoxTv,diw387eb,EboxTV eBox,Ebox,diw387eb,EboxTV eNOVA,ENOVA,stanford,SA 2K SMART TV eNOVA,Enova,zhongshan,4K SMART TV +eNOVA,N50E,N50,N50 eNOVA,TAE08N10,TAE08N10,TAE08N10 eSTREAM 4K,EVOPRO,SEI500EV,EVOPRO eSTREAM 4K,IPA-1104HDH-01,eSTREAM4K_4x4,IPA-1104HDH-01 @@ -41174,10 +42160,15 @@ i-Mobile,i-note WiFi 1.1,M1703,i-mobile M1703 i-Mobile,iM319,iM319,iM319 i-PLUS,Nu65,Nu65,Nu65 i-PLUS,Nu70,Nu70,Nu70 +i.safe MOBILE,IS330,IS330,IS330 +i.safe MOBILE,IS530,IS530,IS530 +i.safe MOBILE,IS540,IS540,IS540 +i.safe MOBILE,IS930,IS930,IS930 i5 (dza),TABLET_PC,10080,10080 i5 (dza),V10,V10,V10 iBRIT,Alpha,AF51,AF51 iBRIT,Alpha_Plus,Alpha_Plus,Alpha_Plus +iBRIT,IB6001,IB6001,IB6001 iBRIT,IBRIT_I5,i5,IBRIT_I5 iBRIT,IBRIT_I7,i7,IBRIT_I7 iBRIT,IBRIT_POWER6,iBRIT_POWER6,iBRIT_POWER6 @@ -41262,6 +42253,7 @@ iData,iData P1,iData_P1,iData P1 iData,iData P1 mini,iData_P1_mini,iData P1 mini iData,iData T1,T1,iData T1 iData,iData T2,iData_T2,iData_T2 +iData,iData T3 Pro,T3_Pro,T3_Pro iData,iData i2,i2,iData i2 iData,iData i3,i3,iData i3 iData,iData_50,iData_50,iData 50 @@ -41307,6 +42299,9 @@ iHunt,Like 8,Like_8,Like_8 iHunt,Like_7,Like_7,Like_7 iHunt,Like_Hi10_2021,Like_Hi10_2021,Like_Hi10_2021 iHunt,Like_Hi5,Like_Hi5,Like Hi5 +iHunt,P25000 Pro,P25000_Pro,iHunt Titan P25000 Xtreme +iHunt,P32000_Ultra_EEA,P32000_Ultra,Strong Tablet P32000 Ultra 5G +iHunt,P8000_Ultra_EEA,P8000_Ultra,Titan P8000 Ultra Carbon iHunt,S10 Tank 2020,S10_Tank_2020,S10 Tank 2020 iHunt,S10 Tank PRO 2020,S10_Tank_PRO_2020,S10 Tank PRO 2020 iHunt,S100ApeX,S100ApeX,S100ApeX @@ -41339,6 +42334,7 @@ iHunt,iHuntLike12PRO,iHuntLike12PRO,iHunt Like 12 PRO iHunt,iHuntS22PLUS,iHuntS22PLUS,iHunt S22 PLUS iHunt,iHunt_Like_12_EEA,iHunt_Like_12,iHunt Like 12 iHunt,iHunt_Note_Ultra,iHunt_Note_Ultra,iHunt Note Ultra +iHunt,iHunt_P15000_EEA,iHunt_P15000,iHunt Titan P15000 Ultra iHunt,iHunt_S60_Discovery_Pro_2020,iHunt_S60_Discovery_Pro_2020,iHunt_S60_Discovery_Pro_2020 iLa Mobile,C3,C3,C3 iLa Mobile,D1,D1,D1 @@ -41364,13 +42360,19 @@ iLife,KIDS-TAB-5,KIDS-TAB-5,KIDS-TAB-5 iLife,KIDS_TAB_6,KIDS_TAB_6,KIDS_TAB_6 iLife,MISA,MISA,MISA iMACHINE,MobilePOSTerminal,MobilePOSTerminal,AP12 +iMACHINE,iMACHINE AP02 PLUS,AP02_PLUS,AP02 PLUS +iMACHINE,iMachine AP12,AP12,AP12 +iMACHINE,iMachine i2,i2,i2 iMESH,IM-560,IM-560,IM-560 +iMin,Crane1-16,Crane1,Crane1-16 iMin,D4 Pro,D4Pro,I23D01 iMin,Falcon 1,I22T01,I22T01 iMin,Swan 1 Pro,Swan1Pro,I23D02 iMin,Swift 1,I22M01,I22M01 iMin,Swift 1,I22M01,Swift_1 iMin,Swift 2 Pro,Swift2Pro,I23M02 +iMin,Swift1Pro,Swift1Pro,I23M03 +iMin,Swift2_GL,Swift2,I23M01_GL iMuz,4K Smart TV,pioneer,4K SA Smart TV iMuz,EG104,EG104,EG104 iMuz,"Foryou Digital Co.,Ltd",EG125,EG125 @@ -41461,6 +42463,7 @@ iSWAG,ODIN,ODIN,ODIN iSWAG,STREAM7,STREAM7,STREAM7 iSWAG,STREAM7Plus,STREAM7Plus,STREAM7 iSWAG,iSWAG ACTIV,iSWAG_ACTIV,iSWAG ACTIV +iSolution,OPS_RK3588_B,AKMEI14,ACER_ALTOS_EZB iTab XPLUS,ITAB_X38T,ITAB_X38T,ITAB_X38T iTab XPLUS,iTAB-A1,iTAB-A1,iTAB-A1 iTab XPLUS,iTab_XPLUS_10_1,iTab_XPLUS_10_1,iTab_XPLUS_10_1 @@ -41488,6 +42491,7 @@ iWaylink,TC601A,TC601A_GWL,TC601A_GWL iWaylink,TC601B,TC601B_GWL,TC601B_GWL iWaylink,TC603B,TC603B_GWL,TC603B_GWL iWaylink,TC603B_P,TC603B_GWL,TC603B_GWL +iYOU,A10,A10,A10 iYOU,iYOU_M1,iYOU_M1,iYOU_M1 ibowin,M10ES11,M10ES11,M130s imiia,4K Smart TV,gangbyeon,imiia 4K AI Smart TV @@ -41495,15 +42499,22 @@ imiia,4K Smart TV,pioneer,4K PA Smart TV imiia,Smart TV,mateo,2K PA Smart TV imiia,i-217D1,YUL,i-217D1 imiia,imiia 2k stick,IAD,imiia 2k stick +imiia,imiia 4K Google TV,keoneae,imiia 4K Google TV imiia,imiia 4K Google TV-Y,keoneae,imiia 4K Google TV-Y +imose,BAM III,BAM_III,BAM III imose,BAM-II,BAM-II,BAM-II +imose,OPOR,OPOR,OPOR imose,Omotab2,Omotab2,Omotab2 imose,Omotab_2s,Omotab_2s,Omotab 2s +imose,SEMPE,SEMPE,SEMPE +imozen,TC605AN,TC605,TC605 indigi,G4i,G4i,G4i +inefi,SlimPOS319,SlimPOS319,SlimPOS319 innos,Android TV,R2,ATV R2 innos,Innos,shilin,Innos4KAndroidTV innos,innos,bruno,Innos2KAndroidTV innos,innos 2K Google TV,capitolhill,innos 2K Google TV +innos,innos 2K Google TV-A,capitolhill,innos 2K Google TV-A innos,innos 4K Google TV,keoneae,innos 4K Google TV innos,innos 4K Google TV-A,keoneae,innos 4K Google TV-A innos,innos Google TV,bandra,innos Google TV @@ -41537,6 +42548,7 @@ mMax,mMax M55,M55,M55 memetech,P30,P30,P30 menfop,HaierP8B,HaierP8B,HaierP8B mipo,mipo_M17,mipo_M17,mipo_M17 +mipo,mipo_M59,mipo_M59,mipo_M59 moderness.online,TK807,TK807,TK807 mytel,M9501,M9501,M9501 mytel,M9502,M9502,M9502 @@ -41557,6 +42569,7 @@ novo,Bonvi Pro,t596_dp_n_37m35,Bonvi Pro okayseamedia,TK706,TK706,TK706 okayseamedia,TK708,TK708,TK708 okayseamedia,TK708_EEA,TK708_EEA,TK708_EEA +okulaku,UKD30,UKD30,UKD30 okulaku,ZIDS701,ZIDS701,ZIDS701 onn., onn_100003561,mid8011,100003561 onn.,10.4“ Tablet Pro,100110603,100110603 @@ -41572,17 +42585,20 @@ onn.,100071485,100071485,100071485 onn.,100071486,100071486,100071486 onn.,100092980,100092980,100092980 onn.,100092988,mid7019_mr_32,100092988 +onn.,M17QF21W,M17QF21W,M17QF21W onn.,MID8016,mid8016_mk_32,MID8016 onn.,PM82T,PM82T,PM82T onn.,Tablet Gen 4,100135923,100135923 onn.,Tablet Gen 4,100135925,100135925 onn.,onn. 4K Streaming Box,YOC,onn. 4K Streaming Box onn.,onn. 4k TV,sti6140d360,sti6140d360 +onn.,onn. Streaming Device 4K pro,SNA,onn. Streaming Device 4K pro onn.,onn_2k_gtv,XNA,onn. Full HD Streaming Device pendo,PNDPP44QC10,PNDPP44QC10,PNDPP44QC10 pendo,PNDPP44QC7,PNDPP44QC7,PNDPP44QC7 preo,PTABP10,PTABP10,PTABP10 preo,PTAB_P8,PTAB_P8,PTAB_P8 +prowise,Prowise Touchscreen Ten,ifpd,prowise prowise,Prowise Touchscreen Ultra,ifpd,prowise qunyiCO,Y10,Y10,Y10 qunyiCO,Y10_1,Y10_1,Y10 @@ -41594,6 +42610,7 @@ qunyiCO,Y7,Y7_0_EEA,Y7 qunyiCO,Y7_EEA,Y7_EEA,Y7 realme,4K Google TV Stick,YYT,4K Google TV Stick realme,4K Smart TV,gangbyeon,4K AI Smart TV +realme,NARZO 70 Pro 5G,RE5C86L1,RMX3868 realme,RMX3268,RED8D7,RMX3268 realme,RMX3612,RE588DL1,RMX3612 realme,RMX3627,RE58AF,RMX3627 @@ -41601,6 +42618,8 @@ realme,RMX3710,REE2ADL1,RMX3710 realme,RMX3771,RE58B8L1,RMX3771 realme,RMX3782,RE5C6CL1,RMX3782 realme,RMX3834,RE5C9F,RMX3834 +realme,RMX3997,RE5C9AL1,RMX3997 +realme,RMX3998,RE5C94L1,RMX3998 realme,Smart TV,mateo,2K PA Smart TV realme,Smart TV,redwood,AI PONT realme,TV Stick,BOS,TV Stick @@ -41630,9 +42649,12 @@ realme,realme 11 Pro 5G,RE58B8L1,RMX3771 realme,realme 11 Pro+,RE5865,RMX3740 realme,realme 11 Pro+ 5G,RE58B6L1,RMX3741 realme,realme 11x 5G,RE5C6CL1,RMX3785 +realme,realme 12 5G,RE5C94L1,RMX3999 +realme,realme 12 Lite,RE5C91L1,RMX3890 realme,realme 12 Pro 5G,RE5C84L1,RMX3842 realme,realme 12 Pro+ 5G,RE5C82L1,RMX3840 -realme,realme 12 Pro+5G,RE5C82L1,RMX3840 +realme,realme 12+ 5G,RE5C86L1,RMX3867 +realme,realme 12x 5G,RE5C9AL1,RMX3997 realme,realme 4K G Smart TV,SW6H,realme 4K G Smart TV realme,realme 4K G Smart TV FF,SW6H,realme 4K G Smart TV FF realme,realme 6,RMX2001L1,RMX2001 @@ -41688,9 +42710,11 @@ realme,realme C35,RE87BAL1,RMX3511 realme,realme C35,RE87BAL1,RMX3512 realme,realme C35,RE87BAL1,RMX3513 realme,realme C51,RE58BC,RMX3830 +realme,realme C51s,RE5C51,RMX3765 realme,realme C53,RE58C2,RMX3760 realme,realme C53,RE58CE,RMX3762 realme,realme C55,REE2ADL1,RMX3710 +realme,realme C65,RE5C42,RMX3910 realme,realme C67,RE5C91L1,RMX3890 realme,realme GT 2 ,RE58B2L1,RMX3312 realme,realme GT 2 Pro ,RED8ACL1,RMX3301 @@ -41709,6 +42733,8 @@ realme,realme GT5 240W,RE5C33,RMX3823 realme,realme GT5 Pro,RE5C37,RMX3888 realme,realme Narzo 30 Pro 5G,RMX2117L1,RMX2117 realme,realme Note 50,RE5C9F,RMX3834 +realme,realme P1 5G,RE5C86L1,RMX3870 +realme,realme P1 Pro 5G,RE5C84L1,RMX3844 realme,realme Pad 2,RE5C6EL1,RMP2204 realme,realme Pad 2,RE5C70L1,RMP2205 realme,realme Pad X,RE5496,RMP2108 @@ -41765,10 +42791,14 @@ realme,真我 Q3 Pro 5G,RMX2205CN,RMX2205 realme,真我 V20,RE584B,RMX3610 realme,真我 V20,RE584B,RMX3611 realme,真我11 Pro,RE5869,RMX3770 +realme,真我12 Pro,RE5C3C,RMX3843 +realme,真我12 Pro+,RE5C3B,RMX3841 +realme,真我12x,RE5C3F,RMX3993 realme,真我GT 2 ,RE5471,RMX3310 realme,真我GT 2 ,RE58B2L1,RMX3311 realme,真我GT 2 Pro ,RE547F,RMX3300 realme,真我GT Neo,RMX3031CN,RMX3031 +realme,真我GT Neo6 SE,RE5C39L1,RMX3850 realme,真我Q3s ,RE548B,RMX3461 realme,真我Q3s ,RE548B,RMX3462 realme,真我V13 5G,RE5081,RMX3041 @@ -41796,6 +42826,7 @@ simfer,simfer 2K Android TV,lasalle,simfer 2K Android TV simfer,simfer 4K Android TV,kenton,simfer 4K Android TV simpliTV,Strong-SRT4150,HY43X,Strong-SRT4150 simpliTV,Strong-SRT4250,HY43X,Strong-SRT4250 +sincoole,PAD-A7,Rugged_Tablet-A7,PAD-A7 sincoole,ST11-A5,ST11-A5,ST11-A5 sky HCN,KSTB1157,K1100UA,KSTB1157 sky HCN,skyhcn Android UHD STB,IMT-H6300,IMT-H6300 @@ -41865,6 +42896,7 @@ weelikeit,C85W,C85W,C85W weelikeit,C85W_EEA,C85W_EEA,C85W_EEA weelikeit,F11W,F11W,F11W weelikeit,F11W_EEA,F11W,F11W_EEA +weelikeit,F83W,F83W,F83W weelikeit,P16W,P16W,P16W weelikeit,P16W_EEA,P16W_EEA,P16W_EEA weelikeit,P82L,P82L,P82L diff --git a/bin/scripts/expire-data/remove_flow_collections.js b/bin/scripts/expire-data/remove_flow_collections.js new file mode 100644 index 00000000000..e72b8f91d43 --- /dev/null +++ b/bin/scripts/expire-data/remove_flow_collections.js @@ -0,0 +1,42 @@ +/** + * Remove old flow collections after running merge_flow_collections script + * Server: countly + * Path: countly dir/bin/upgrade/DEV/scripts/remove_flow_collections + * Command: node remove_flow_collections.js + */ + +const pluginManager = require('../../../../plugins/pluginManager'); + +pluginManager.dbConnection().then(async(countlyDb) => { + try { + let allCollections = await countlyDb.listCollections().toArray(); + let collectionNames = allCollections.map(o => o.name); + const flowSchemaCollections = collectionNames.filter(x => x.startsWith('flowSchema')); + const flowDataCollections = collectionNames.filter(x => x.startsWith('flowData')); + + try { + for (const collectionName of flowSchemaCollections) { + await countlyDb.collection(collectionName).drop(); + console.log('Finished removing flowSchema collections.'); + } + } + catch (error) { + console.log(`Error removing flowSchema collections: ${error}`); + } + try { + for (const collectionName of flowDataCollections) { + await countlyDb.collection(collectionName).drop(); + console.log('Finished removing flowData collections.'); + } + } + catch (error) { + console.log(`Error removing flowData collections: ${error}`); + } + } + catch (error) { + console.log(`Error removing flow collections: ${error}`); + } + finally { + countlyDb.close(); + } +}); \ No newline at end of file diff --git a/bin/scripts/fix-data/reports_snapshot_flag.js b/bin/scripts/fix-data/reports_snapshot_flag.js new file mode 100644 index 00000000000..50b386ea764 --- /dev/null +++ b/bin/scripts/fix-data/reports_snapshot_flag.js @@ -0,0 +1,62 @@ +/** + * Script to add no_snapshots flag to drill reports + * Server: countly + * Path: $(countly dir)/bin/scripts/reports_snapshot_flag.js + * Command: node fix_null_uids.js + */ +const pluginManager = require('../../../plugins/pluginManager.js'); +var Promise = require("bluebird"); + +console.log('looking for byval reports'); + + +Promise.all([pluginManager.dbConnection("countly")]).then(async function([countlyDb]) { + countlyDb.collection('long_tasks').find({"type": "drill", "linked_to._issuer": "wqm:drill", "manually_create": true}).toArray(function(err, reports) { + if (err) { + console.log('Error while fetching reports', err); + countlyDb.close(); + return; + } + else { + console.log("checking reports"); + reports = reports || []; + Promise.each(reports, function(report) { + return new Promise(function(resolve, reject) { + + try { + report.request = JSON.parse(report.request); + if (report.request && report.request.json && report.request.json.method === "segmentation" && report.request.json.projectionKey && !report.request.json.no_snapshots) { + report.request.json.no_snapshots = true; + countlyDb.collection('long_tasks').updateOne({_id: report._id}, {$set: {"request": JSON.stringify(report.request)}}, function(err) { + if (err) { + console.log('Error while updating report', report._id); + reject(); + } + else { + console.log('report updated', report._id); + resolve(); + } + }); + } + else { + resolve(); + } + } + catch (e) { + console.log('Error while parsing report', report._id); + console.log(e); + resolve(); + } + }); + }).then(function() { + console.log('Finished'); + countlyDb.close(); + process.exit(); + }).catch(function(err) { + console.log('Error', err); + countlyDb.close(); + process.exit(); + }); + } + }); +}); diff --git a/bin/scripts/install_plugins.js b/bin/scripts/install_plugins.js index 45058208630..40797b289e5 100644 --- a/bin/scripts/install_plugins.js +++ b/bin/scripts/install_plugins.js @@ -7,8 +7,10 @@ if (process.argv && process.argv.length > 2 && process.argv[2] === '--force') { process.env.FORCE_NPM_INSTALL = true; } -if (plugins.length > 0) { - manager.connectToAllDatabases().then(async() => { + +manager.connectToAllDatabases().then((dbs) => { + manager.loadConfigs(dbs[0], async() => { + plugins = manager.getPlugins(true); if (!manager.getConfig("api").offline_mode) { await asyncjs.eachSeries(plugins, function(plugin, done) { manager.installPlugin(plugin, function() { @@ -27,4 +29,5 @@ if (plugins.length > 0) { process.exit(0); }); }); -} +}); + diff --git a/bin/upgrade/24.05/scripts/ab_test_cohort_period_fix.js b/bin/upgrade/24.05/scripts/ab_test_cohort_period_fix.js new file mode 100644 index 00000000000..16d0901a4ef --- /dev/null +++ b/bin/upgrade/24.05/scripts/ab_test_cohort_period_fix.js @@ -0,0 +1,65 @@ +var pluginManager = require('../../../../plugins/pluginManager.js'); + +pluginManager.dbConnection().then(function(countlyDb) { + console.log("Connected to Countly database..."); + try { + countlyDb.collection("cohorts").find({"name": {"$regex": "^\\[CLY\\]_AB.*"}}, {"_id": 1, "steps": 1, "name": 1}).toArray(function(err, cohorts) { + if (cohorts) { + var updateObj = []; + for (var k = 0; k < cohorts.length; k++) { + if (cohorts[k].steps && cohorts[k].steps.length) { + for (var l = 0; l < cohorts[k].steps.length; l++) { + if (cohorts[k].steps[l].period && Array.isArray(cohorts[k].steps[l].period) && cohorts[k].steps[l].period[1] > 220950501179902000) { + updateObj.push({ + 'updateOne': { + 'filter': { "_id": cohorts[k]._id }, + 'update': { + "$set": { + "steps.$[element].period": { + "since": cohorts[k].steps[l].period[0] + } + } + }, + 'arrayFilters': [ + { + "element.period.0": cohorts[k].steps[l].period[0], + "element.period.1": cohorts[k].steps[l].period[1] + } + ] + } + }); + } + } + } + } + if (!(updateObj.length === 0)) { + countlyDb.collection("cohorts").bulkWrite(updateObj, {ordered: false}, function(err) { + if (err) { + console.error(err); + close(); + } + else { + console.log("Successfuly updated periods with huge numbers"); + close(); + } + }); + } + else { + console.log("No periods with huge numbers to fix."); + close(); + } + } + }); + } + catch (error) { + console.log("Error: " + error); + close(); + } + + function close() { + countlyDb.close(); + console.log("Done."); + } +}); + + diff --git a/bin/upgrade/24.05/scripts/generate_crashgroup_app_version_list.js b/bin/upgrade/24.05/scripts/generate_crashgroup_app_version_list.js new file mode 100644 index 00000000000..795286d0ebd --- /dev/null +++ b/bin/upgrade/24.05/scripts/generate_crashgroup_app_version_list.js @@ -0,0 +1,96 @@ +// This script will add a new field to crashgroup documents based on app_version +// Currently app_version is stored as an object like { '4:1:0': 20, '4:2:0': 10 } +// This script will take all of the keys from the object above and store it into an array +// With the array, it will be possible to query crashgroup with partial app version, e.g. the query '4.2' will get crashgroups that have app version '4.2.0', '4.2.1', etc + +var pluginManager = require('../../../../plugins/pluginManager.js'); + +console.log('Updating crashgroup data'); + +pluginManager.dbConnection().then(async (countlyDb) => { + console.log('Generating updates'); + + const apps = await countlyDb.collection('apps').find({}).project({_id: 1}).toArray(); + const updates = {}; + + for (let idx = 0; idx < apps.length; idx += 1) { + const crashgroupCollection = `app_crashgroups${apps[idx]._id}`; + const crashgroups = await countlyDb.collection(crashgroupCollection) + .find({ _id: { $ne: 'meta' } }) + .project({ _id: 1, app_version: 1 }) + .toArray(); + + updates[apps[idx]._id] = crashgroups.reduce((acc, crashgroup) => { + acc.push({ + updateOne: { + filter: { _id: crashgroup._id }, + update: { + $addToSet: { + app_version_list: { + $each: Object.keys(crashgroup.app_version).map((item) => item.replace(/:/g, '.')), + }, + }, + }, + }, + }); + + return acc; + }, []); + } + + console.log('Applying updates'); + + const BATCH_SIZE = 200; + let errCount = 0; + + for (let idx = 0; idx < apps.length; idx += 1) { + const appId = apps[idx]._id; + const crashgroupCollection = `app_crashgroups${appId}`; + + if (updates[appId]) { + let buffer = []; + + for (let idy = 0; idy < updates[appId].length; idy += 1) { + buffer.push(updates[appId][idy]); + + if (buffer.length === BATCH_SIZE || idy === updates[appId].length - 1) { + try { + await countlyDb.collection(crashgroupCollection).bulkWrite(buffer, { ordered: false }); + } + catch (err) { + errCount += 1; + console.error(`Failed updating collection ${crashgroupCollection}`, err); + } + finally { + buffer.length = 0; + } + } + } + } + + if (errCount === 0) { + try { + await countlyDb.collection(crashgroupCollection).updateOne( + { _id: 'meta' }, + { $set: { app_version_list_added: true } }, + ); + } + catch (err) { + console.error(`Failed updating collection ${crashgroupCollection} meta`, err); + } + + try { + await countlyDb.collection(crashgroupCollection).ensureIndex({ app_version_list: 1 }, { background: true }); + } + catch (err) { + console.error(`Failed updating collection ${crashgroupCollection} index`, err); + } + } + else { + console.error(`${errCount} batches failed when updating collection ${crashgroupCollection}`); + } + } + + countlyDb.close(); + console.log('Crashgroup data update done'); +}); diff --git a/bin/upgrade/24.05/scripts/merge_consent_histories.js b/bin/upgrade/24.05/scripts/merge_consent_histories.js new file mode 100644 index 00000000000..e410570c12f --- /dev/null +++ b/bin/upgrade/24.05/scripts/merge_consent_histories.js @@ -0,0 +1,60 @@ +// Script to merge all consent_history data +// Merges all app-specific consent_historyAPPID collections into a single consent_history collection + +const pluginManager = require('../../../../plugins/pluginManager.js'); + +function mergeConsentHistoryCollections(collections, db) { + let targetCollectionName = 'consent_history'; + let processes = []; + + console.log(`Merging consent_historyAPPID collections to ${targetCollectionName}...`); + for (const collectionName of collections) { + const appId = collectionName.split(targetCollectionName)[1]; + const pipeline = []; + + pipeline.push({ + $addFields: { + 'app_id': appId, + } + }); + + pipeline.push({ + $merge: { + into: targetCollectionName, + whenMatched: 'keepExisting' + } + }); + processes.push(db.collection(collectionName).aggregate(pipeline).toArray()); + } + return Promise.allSettled(processes); +} + +pluginManager.dbConnection().then(async(countlyDb) => { + try { + countlyDb.collection('consent_history').ensureIndex({device_id: 1}, function() {}); + countlyDb.collection('consent_history').ensureIndex({uid: 1}, function() {}); + countlyDb.collection('consent_history').ensureIndex({type: 1}, function() {}); + countlyDb.collection('consent_history').ensureIndex({ts: 1}, function() {}); + + let consentCollections = await countlyDb.listCollections().toArray(); + let collectionNames = consentCollections.map(o => o.name); + const consentHistoryCollections = (collectionNames.filter(x => x.startsWith('consent_history'))).filter(x => !x.endsWith('consent_history')); + try { + const result = await mergeConsentHistoryCollections(consentHistoryCollections, countlyDb); + const faileds = result.filter(x=>x.status === 'rejected'); + if (faileds.length) { + throw new Error(faileds.map(x=>x.reason).join('\n')); + } + console.log("Finished merging consent_historyAPPID collections. Collections merged to the new consent_history."); + } + catch (error) { + console.log(`Error merging consent_historyAPPID collections: ${error}`); + } + } + catch (error) { + console.log(`Error merging consent_historyAPPID collections: ${error}`); + } + finally { + countlyDb.close(); + } +}); diff --git a/bin/upgrade/24.05/scripts/merge_flow_collections.js b/bin/upgrade/24.05/scripts/merge_flow_collections.js new file mode 100644 index 00000000000..14f6cae3acb --- /dev/null +++ b/bin/upgrade/24.05/scripts/merge_flow_collections.js @@ -0,0 +1,82 @@ +/** + * Merges all app-specific flowSchemaAPPID and flowDataAPPID collections into a single flow_schemas and flow_data collection + * Server: countly + * Path: countly dir/bin/upgrade/DEV/scripts/merge_flow_collections + * Command: node merge_flow_collections.js + */ + +const pluginManager = require('../../../../plugins/pluginManager'); + +async function mergeFlowsCollections(type, collections, db) { + let targetCollectionName = ''; + let processes = []; + if (type === 'flowSchema') { + targetCollectionName = 'flow_schemas'; + } + else if (type === 'flowData') { + targetCollectionName = 'flow_data'; + } + else { + console.log('Invalid collection name given.'); + return; + } + + console.log(`Merging ${type} collections to ${targetCollectionName}...`); + for (const collectionName of collections) { + const appId = collectionName.split(type)[1]; + const pipeline = []; + + pipeline.push({ + $addFields: { + '_id': { $concat: [appId, '_', { $toString: '$_id' }] }, + 'app_id': appId, + }, + }); + pipeline.push({ + $merge: { + into: targetCollectionName, + whenMatched: 'keepExisting', + } + }); + + try { + await db.collection(collectionName).aggregate(pipeline).toArray(); + console.log(`Finished merging ${type} collection: ${collectionName}`); + } + catch (error) { + console.log(`Error merging ${type} collection ${collectionName}: ${error}`); + throw error; + } + } +} + +pluginManager.dbConnection().then(async(countlyDb) => { + try { + let allCollections = await countlyDb.listCollections().toArray(); + let collectionNames = allCollections.map(o => o.name); + const flowSchemaCollections = collectionNames.filter(x => x.startsWith('flowSchema')); + const flowDataCollections = collectionNames.filter(x => x.startsWith('flowData')); + + try { + await mergeFlowsCollections('flowSchema', flowSchemaCollections, countlyDb); + console.log('Finished merging flowSchema collections.'); + } + catch (error) { + console.log(`Error merging flowSchema collections: ${error}`); + } + + try { + await mergeFlowsCollections('flowData', flowDataCollections, countlyDb); + console.log('Finished merging flowData collections.'); + } + catch (error) { + console.log(`Error merging flowData collections: ${error}`); + } + } + catch (error) { + console.log(`Error merging flow collections: ${error}`); + } + finally { + countlyDb.close(); + } +}); diff --git a/bin/upgrade/24.05/scripts/merge_times_of_day_collections.js b/bin/upgrade/24.05/scripts/merge_times_of_day_collections.js new file mode 100644 index 00000000000..ecaa7cb360c --- /dev/null +++ b/bin/upgrade/24.05/scripts/merge_times_of_day_collections.js @@ -0,0 +1,61 @@ +// Script to merge all times_of_day collections into a single times_of_day collection + +const pluginManager = require('../../../../plugins/pluginManager.js'); + + +function mergeTimesOfDayCollections(collections, db) { + let targetCollectionName = 'times_of_day'; + let oldCollectionName = 'timesofday'; + let processes = []; + + console.log(`Merging timesofdayAPPID collections to ${targetCollectionName}...`); + for (const collectionName of collections) { + const appId = collectionName.split(oldCollectionName)[1]; + const pipeline = []; + pipeline.push({ + $addFields: { + "_id": { + $concat: [ + appId, + "_", + { $toString: "$_id" } + ] + }, + 'app_id': appId + } + }); + pipeline.push({ + $merge: { + into: targetCollectionName, + whenMatched: 'keepExisting' + } + }); + processes.push(db.collection(collectionName).aggregate(pipeline).toArray()); + } + return Promise.allSettled(processes); +} + +pluginManager.dbConnection().then(async(countlyDb) => { + try { + let timesOfDayCollections = await countlyDb.listCollections().toArray(); + let collectionNames = timesOfDayCollections.map(o => o.name); + const oldTimesOfDayCollections = (collectionNames.filter(x => x.startsWith('timesofday'))); + try { + const result = await mergeTimesOfDayCollections(oldTimesOfDayCollections, countlyDb); + const faileds = result.filter(x=>x.status === 'rejected'); + if (faileds.length) { + throw new Error(faileds.map(x=>x.reason).join('\n')); + } + console.log("Finished merging timesofdayAPPID collections. Collections merged to the new times_of_day."); + } + catch (error) { + console.log(`Error merging timesofdayAPPID collections: ${error}`); + } + } + catch (error) { + console.log(`Error merging timesofdayAPPID collections: ${error}`); + } + finally { + countlyDb.close(); + } +}); diff --git a/bin/upgrade/24.05/scripts/migrate_alerts_data.js b/bin/upgrade/24.05/scripts/migrate_alerts_data.js new file mode 100644 index 00000000000..93aaefd15e9 --- /dev/null +++ b/bin/upgrade/24.05/scripts/migrate_alerts_data.js @@ -0,0 +1,271 @@ +// update script to migrate alerts data for revamped Alerts plugin + +const pluginManager = require('../../../../plugins/pluginManager.js'); + +async function migrateAlertCollection(collectionName, db) { + console.log('Migrating alert data...'); + await db.collection(collectionName).updateMany( + { + 'alertDataType': { $ne: 'dataPoint'} + }, + { + $set: { + 'period': 'daily', + } + } + ); + await db.collection(collectionName).updateMany( + { + 'compareType': { + $regex: /^(increased|decreased)/ + } + }, + [ + { + $set: { + 'compareType': { + $arrayElemAt: [ + { $split: ['$compareType', ' by at least'] }, + 0 + ] + } + } + } + ] + ); + await db.collection(collectionName).updateMany( + { + $and: [ + { 'alertDataType': 'metric' }, + { 'alertDataSubType': 'Total users'}, + ] + }, + { + $set: { + 'alertDataType': 'users', + 'alertDataSubType': '# of users', + } + } + ); + await db.collection(collectionName).updateMany( + { + $and: [ + { 'alertDataType': 'metric' }, + { 'alertDataSubType': 'New users'}, + ] + }, + { + $set: { + 'alertDataType': 'users', + 'alertDataSubType': '# of new users' + } + } + ); + await db.collection(collectionName).updateMany( + { + $and: [ + { 'alertDataType': 'metric' }, + { 'alertDataSubType': 'Total sessions'}, + ] + }, + { + $set: { + 'alertDataType': 'sessions', + 'alertDataSubType': '# of sessions', + } + } + ); + await db.collection(collectionName).updateMany( + { + $and: [ + { 'alertDataType': 'metric' }, + { 'alertDataSubType': 'Average session duration'}, + ] + }, + { + $set: { + 'alertDataType': 'sessions', + 'alertDataSubType': 'average sessions duration', + } + } + ); + await db.collection(collectionName).updateMany( + { + $and: [ + { 'alertDataType': 'metric' }, + { 'alertDataSubType': 'Purchases'}, + ] + }, + { + $set: { + 'alertDataType': 'revenue', + 'alertDataSubType': 'total revenue', + } + } + ); + await db.collection(collectionName).updateMany( + { + $and: [ + { 'alertDataType': 'metric' }, + { 'alertDataSubType': 'Bounce rate'}, + ] + }, + { + $set: { + 'alertDataType': 'views', + 'alertDataSubType': 'bounce rate', + } + } + ); + await db.collection(collectionName).updateMany( + { + $and: [ + { 'alertDataType': 'metric' }, + { 'alertDataSubType': 'Number of page views'}, + ] + }, + { + $set: { + 'alertDataType': 'views', + 'alertDataSubType': '# of page views', + } + } + ); + db.collection(collectionName).updateMany( + { 'alertDataType': 'event' }, + [ + { + $set: { + 'alertDataType': 'events', + 'alertDataSubType2': { + $substrBytes: [ + '$alertDataSubType', + { $add: [{ $indexOfBytes: ['$alertDataSubType', '***'] }, 3] }, + { $subtract: [{$strLenBytes: "$alertDataSubType"}, {$add: [{$indexOfBytes: ['$alertDataSubType', '***']}, 3]}] } + ] + }, + 'alertDataSubType': 'count' + } + } + ] + ); + await db.collection(collectionName).updateMany( + { + $and: [ + { 'alertDataType': 'crash' }, + { 'alertDataSubType': 'Total crashes'}, + ] + }, + { + $set: { + 'alertDataType': 'crashes', + 'alertDataSubType': '# of crashes/errors', + } + } + ); + await db.collection(collectionName).updateMany( + { + $and: [ + { 'alertDataType': 'crash' }, + { 'alertDataSubType': 'New crash occurence'}, + ] + }, + { + $set: { + 'alertDataType': 'crashes', + 'alertDataSubType': 'new crash/error', + } + } + ); + await db.collection(collectionName).updateMany( + { + $and: [ + { 'alertDataType': 'crash' }, + { 'alertDataSubType': 'None fatal crash per session'}, + ] + }, + { + $set: { + 'alertDataType': 'crashes', + 'alertDataSubType': 'none-fatal crashes/errors per session', + } + } + ); + await db.collection(collectionName).updateMany( + { + $and: [ + { 'alertDataType': 'crash' }, + { 'alertDataSubType': 'Fatal crash per session'}, + ] + }, + { + $set: { + 'alertDataType': 'crashes', + 'alertDataSubType': 'fatal crashes/errors per session', + } + } + ); + await db.collection(collectionName).updateMany( + { + $and: [ + { 'alertDataType': 'dataPoint' }, + { 'alertDataSubType': 'Number of daily DP'}, + ] + }, + { + $set: { + 'alertDataType': 'dataPoints', + 'alertDataSubType': 'total data points', + 'period': 'daily' + } + } + ); + await db.collection(collectionName).updateMany( + { + $and: [ + { 'alertDataType': 'dataPoint' }, + { 'alertDataSubType': 'Hourly data points'}, + ] + }, + { + $set: { + 'alertDataType': 'dataPoints', + 'alertDataSubType': 'total data points', + 'period': 'hourly' + } + } + ); + await db.collection(collectionName).updateMany( + { + $and: [ + { 'alertDataType': 'dataPoint' }, + { 'alertDataSubType': 'Monthly data points'}, + ] + }, + { + $set: { + 'alertDataType': 'dataPoints', + 'alertDataSubType': 'total data points', + 'period': 'monthly' + } + } + ); +} + +pluginManager.dbConnection().then(async(countlyDb) => { + try { + let alertCollection = 'alerts'; + await migrateAlertCollection(alertCollection, countlyDb); + // const faileds = result.filter(x=>x.status === 'rejected'); + // if (faileds.length) { + // throw new Error(faileds.map(x=>x.reason).join('\n')); + // } + console.log("Finished migrating alert data. 'alerts' collection is updated."); + } + catch (error) { + console.log(`Error migrating alert data: ${error}`); + } + finally { + countlyDb.close(); + } +}); diff --git a/bin/upgrade/24.05/scripts/push_indexes.js b/bin/upgrade/24.05/scripts/push_indexes.js new file mode 100644 index 00000000000..695814f568f --- /dev/null +++ b/bin/upgrade/24.05/scripts/push_indexes.js @@ -0,0 +1,10 @@ +const pluginManager = require('../../../../plugins/pluginManager.js'); + +console.log("Creating indexes"); +pluginManager.dbConnection().then(async(db) => { + const indexName = await db.collection("push") + .createIndex({ a: 1, u: 1 }, { background: true }); + console.log("index:", indexName, "created on push collection"); + db.close(); +}); + diff --git a/bin/upgrade/24.05/scripts/remove_old_consent_histories.js b/bin/upgrade/24.05/scripts/remove_old_consent_histories.js new file mode 100644 index 00000000000..a1d14d437b0 --- /dev/null +++ b/bin/upgrade/24.05/scripts/remove_old_consent_histories.js @@ -0,0 +1,28 @@ +// script to delete old consent histories + +const pluginManager = require('../../../../plugins/pluginManager.js'); + +console.log("Deleting old consent histories..."); + +pluginManager.dbConnection().then(async(countlyDb) => { + try { + let allCollections = await countlyDb.listCollections().toArray(); + let collectionNames = allCollections.map(o => o.name); + const consentHistoryCollections = (collectionNames.filter(x => x.startsWith('consent_history'))).filter(x => !x.endsWith('consent_history')); + try { + for (const collectionName of consentHistoryCollections) { + await countlyDb.collection(collectionName).drop(); + } + console.log('Finished removing consent_historyAPPID collections.'); + } + catch (error) { + console.log(`Error removing consent_historyAPPID collections: ${error}`); + } + } + catch (error) { + console.log(`Error removing consent_historyAPPID collections: ${error}`); + } + finally { + countlyDb.close(); + } +}); \ No newline at end of file diff --git a/bin/upgrade/24.05/scripts/remove_old_times_of_day_collections.js b/bin/upgrade/24.05/scripts/remove_old_times_of_day_collections.js new file mode 100644 index 00000000000..3242d67974b --- /dev/null +++ b/bin/upgrade/24.05/scripts/remove_old_times_of_day_collections.js @@ -0,0 +1,28 @@ +// script to delete old timesofdayAPPID collections + +const pluginManager = require('../../../../plugins/pluginManager.js'); + +console.log("Deleting old timesOfDay collections..."); + +pluginManager.dbConnection().then(async(countlyDb) => { + try { + let allCollections = await countlyDb.listCollections().toArray(); + let collectionNames = allCollections.map(o => o.name); + const consentHistoryCollections = (collectionNames.filter(x => x.startsWith('timesofday'))).filter(x => !x.endsWith('timesofday')); + try { + for (const collectionName of consentHistoryCollections) { + await countlyDb.collection(collectionName).drop(); + } + console.log('Finished removing timesofdayAPPID collections.'); + } + catch (error) { + console.log(`Error removing timesofdayAPPID collections: ${error}`); + } + } + catch (error) { + console.log(`Error removing timesofdayAPPID collections: ${error}`); + } + finally { + countlyDb.close(); + } +}); \ No newline at end of file diff --git a/bin/upgrade/24.05/scripts/update_populator_templates.js b/bin/upgrade/24.05/scripts/update_populator_templates.js new file mode 100644 index 00000000000..ff4ac8fcdbb --- /dev/null +++ b/bin/upgrade/24.05/scripts/update_populator_templates.js @@ -0,0 +1,134 @@ +const pluginManager = require('../../../../plugins/pluginManager.js'); + +console.log("Updating user populator templates"); + +pluginManager.dbConnection().then(async(countlyDb) => { + const cursor = countlyDb.collection('populator_templates').find({uniqueUserCount: {$exists: false}}); + try { + while (await cursor.hasNext()) { + const existingTemplate = await cursor.next(); + try { + const convertedTemplate = convertTemplate(existingTemplate); + try { + const result = await countlyDb.collection('populator_templates').replaceOne({_id: existingTemplate._id}, convertedTemplate); + console.log("Template updated successfully:", existingTemplate.name); + } + catch (replaceOneError) { + console.error("Error during replaceOne:", replaceOneError); + console.log("Template data:", existingTemplate); + } + } + catch (convertError) { + console.error("Error converting template:", convertError); + console.log("Template data:", existingTemplate); + } + } + } + catch (generalError) { + console.error("General error processing template:", generalError); + } + finally { + cursor.close((err) => { + if (err) { + console.error("Error closing cursor:", err); + } + else { + countlyDb.close(); + console.log("All templates processed."); + } + }); + } +}).catch((err) => { + console.error("Error connecting to the database:", err); +}); + +function generateRandomNumber(min, max) { + return parseInt(Math.floor(Math.random() * (max - min + 1) + min), 10); +} +function convertTemplate(template) { + const convertedTemplate = { + "name": template.name, + "isDefault": false, + "uniqueUserCount": 100, + "platformType": ["Mobile", "Web", "Desktop"], + "users": template.up ? Object.keys(template.up).map(key => { + return { + "key": key, + "values": template.up[key].map(value => { + return { + "key": value, + "probability": "100" + }; + }) + }; + }) : [], + "events": template.events ? Object.keys(template.events).map(key => { + const event = template.events[key][0]; + return { + "key": key, + "segmentations": (event.segments ? Object.keys(event.segments).map(segmentKey => { + return { + "key": segmentKey, + "values": event.segments[segmentKey].map(segmentValue => { + return { + "key": segmentValue, + "probability": "100" + }; + }) + }; + }) : []), + "sum": { + "isActive": !!(event.sum && event.sum.length === 2), + "minSumValue": event.sum ? event.sum[0] : 0, + "maxSumValue": event.sum ? event.sum[1] : 0 + }, + "duration": { + "isActive": !!(event.sum && event.sum.length === 2), + "minDurationTime": event.dur ? event.dur[0] : 0, + "maxDurationTime": event.dur ? event.dur[1] : 0 + } + }; + }) : [], + "views": [], + "sequences": [ + { + "steps": [ + { + "key": "session", + "value": "start", + "probability": "100" + }, + ...(template.events ? Object.keys(template.events).map(eventKey => { + return { + "key": "events", + "value": eventKey, + "probability": "100" + }; + }) : []), + { + "key": "session", + "value": "end", + "probability": "100" + } + ] + } + ], + "behavior": { + "runningSession": [ + generateRandomNumber(1, 10), + generateRandomNumber(12, 72) + ], + "generalConditions": [], + "sequences": [ + { + "key": "Sequence_1", + "probability": 100 + } + ], + "sequenceConditions": [] + }, + "lastEditedBy": "Countly-Script" + }; + + return convertedTemplate; +} diff --git a/bin/upgrade/24.05/upgrade.sh b/bin/upgrade/24.05/upgrade.sh new file mode 100644 index 00000000000..54565dd038e --- /dev/null +++ b/bin/upgrade/24.05/upgrade.sh @@ -0,0 +1,13 @@ +#!/bin/bash +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +DATE=$(date +%Y-%m-%d:%H:%M:%S) +VERSION="$(basename "${DIR}")" + +countly stop +if [ -f "$DIR/upgrade_fs.sh" ]; then + bash "$DIR/upgrade_fs.sh" combined 2>&1 | tee -a "$DIR/../../../log/countly-upgrade-fs-$VERSION-$DATE.log" +fi +if [ -f "$DIR/upgrade_db.sh" ]; then + bash "$DIR/upgrade_db.sh" combined 2>&1 | tee -a "$DIR/../../../log/countly-upgrade-db-$VERSION-$DATE.log" +fi +countly upgrade diff --git a/bin/upgrade/24.05/upgrade_db.sh b/bin/upgrade/24.05/upgrade_db.sh new file mode 100644 index 00000000000..0560b29e98e --- /dev/null +++ b/bin/upgrade/24.05/upgrade_db.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +VER="24.05" + +CONTINUE="$(countly check before upgrade db "$VER")" + +if [ "$CONTINUE" != "1" ] && [ "$1" != "combined" ] +then + echo "Database is already up to date with $VER" + read -r -p "Are you sure you want to run this script? [y/N] " response + if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]] + then + CONTINUE=1 + fi +fi + +if [ "$CONTINUE" == "1" ] +then + echo "Running database modifications" + DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../.." && pwd )" + SCRIPTS="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + + if [ "$1" != "combined" ]; then + #upgrade plugins + nodejs "$DIR/scripts/install_plugins.js" + fi + + #add indexes + nodejs "$DIR/scripts/add_indexes.js" + + #run upgrade scripts + nodejs "$SCRIPTS/scripts/ab_test_cohort_period_fix.js" + nodejs "$SCRIPTS/scripts/generate_crashgroup_app_version_list.js" + nodejs "$SCRIPTS/scripts/merge_consent_histories.js" + nodejs "$SCRIPTS/scripts/merge_flow_collections.js" + nodejs "$SCRIPTS/scripts/merge_times_of_day_collections.js" + nodejs "$SCRIPTS/scripts/migrate_alerts_data.js" + nodejs "$SCRIPTS/scripts/remove_old_consent_histories.js" + nodejs "$SCRIPTS/scripts/remove_old_times_of_day_collections.js" + nodejs "$SCRIPTS/scripts/update_populator_templates.js" + nodejs "$SCRIPTS/scripts/push_indexes.js" + + + if [ "$1" != "combined" ]; then + countly upgrade; + fi + + #call after check + countly check after upgrade db "$VER" +elif [ "$CONTINUE" == "0" ] +then + echo "Database is already upgraded to $VER" +elif [ "$CONTINUE" == "-1" ] +then + echo "Database is upgraded to higher version" +else + echo "Unknown ugprade state: $CONTINUE" +fi diff --git a/bin/upgrade/24.05/upgrade_fs.sh b/bin/upgrade/24.05/upgrade_fs.sh new file mode 100644 index 00000000000..feabcb3fde5 --- /dev/null +++ b/bin/upgrade/24.05/upgrade_fs.sh @@ -0,0 +1,49 @@ +#!/bin/bash + +echo "Running filesystem modifications" + +VER="24.05" + +CONTINUE="$(countly check before upgrade fs "$VER")" + +if [ "$CONTINUE" != "1" ] && [ "$1" != "combined" ] +then + echo "Filesystem is already up to date with $VER" + read -r -p "Are you sure you want to run this script? [y/N] " response + if [[ "$response" =~ ^([yY][eE][sS]|[yY])$ ]] + then + CONTINUE=1 + fi +fi + +if [ "$CONTINUE" == "1" ] +then + DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )/../.." && pwd )" + + #enable command line + bash "$DIR/scripts/detect.init.sh" + + #upgrade plugins + nodejs "$DIR/scripts/install_plugins.js" + + #get web sdk + countly update sdk-web + + + if [ "$1" != "combined" ]; then + countly upgrade; + else + countly task dist-all; + fi + + #call after check + countly check after upgrade fs "$VER" +elif [ "$CONTINUE" == "0" ] +then + echo "Filesystem is already upgraded to $VER" +elif [ "$CONTINUE" == "-1" ] +then + echo "Filesystem is upgraded to higher version" +else + echo "Unknown ugprade state: $CONTINUE" +fi diff --git a/frontend/express/app.js b/frontend/express/app.js index c43ed8134b2..1bce9ae4bcf 100644 --- a/frontend/express/app.js +++ b/frontend/express/app.js @@ -942,123 +942,128 @@ Promise.all([plugins.dbConnection(countlyConfig), plugins.dbConnection("countly_ stringifyIds(countlyGlobalApps); stringifyIds(countlyGlobalAdminApps); - var defaultApp = userOfApps[0]; - var serverSideRendering = req.query.ssr; - _.extend(req.config, configs); - var countlyGlobal = { - COUNTLY_CONTAINER: process.env.COUNTLY_CONTAINER, - countlyTitle: req.countly.title, - company: req.countly.company, - languages: languages, - countlyVersion: req.countly.version, - countlyFavicon: req.countly.favicon, - pluginsSHA: sha1Hash(plugins.getPlugins()), - apps: countlyGlobalApps, - defaultApp: defaultApp, - admin_apps: countlyGlobalAdminApps, - csrf_token: req.csrfToken(), - auth_token: req.session.auth_token, - member: member, - config: req.config, - security: plugins.getConfig("security"), - plugins: plugins.getPlugins(true), - pluginsFull: plugins.getPlugins(), - path: countlyConfig.path || "", - cdn: countlyConfig.cdn || "", - message: req.flash("message"), - licenseNotification, - licenseError, - ssr: serverSideRendering, - timezones: timezones, - countlyTypeName: COUNTLY_NAMED_TYPE, - countlyTypeTrack: COUNTLY_TRACK_TYPE, - countly_tracking, - countly_domain, - frontend_app: versionInfo.frontend_app || 'e70ec21cbe19e799472dfaee0adb9223516d238f', - frontend_server: versionInfo.frontend_server || 'https://stats.count.ly/', - usermenu: { + plugins.reloadEnabledPluginList(common.db, function() { + + var defaultApp = userOfApps[0]; + var serverSideRendering = req.query.ssr; + _.extend(req.config, configs); + var countlyGlobal = { + COUNTLY_CONTAINER: process.env.COUNTLY_CONTAINER, + countlyTitle: req.countly.title, + company: req.countly.company, + languages: languages, + countlyVersion: req.countly.version, + countlyFavicon: req.countly.favicon, + pluginsSHA: sha1Hash(plugins.getPlugins()), + apps: countlyGlobalApps, + defaultApp: defaultApp, + admin_apps: countlyGlobalAdminApps, + csrf_token: req.csrfToken(), + auth_token: req.session.auth_token, + member: member, + config: req.config, + security: plugins.getConfig("security"), + plugins: plugins.getPlugins(), + pluginsFull: plugins.getPlugins(), + path: countlyConfig.path || "", + cdn: countlyConfig.cdn || "", + message: req.flash("message"), + licenseNotification, + licenseError, + ssr: serverSideRendering, + timezones: timezones, + countlyTypeName: COUNTLY_NAMED_TYPE, + countlyTypeTrack: COUNTLY_TRACK_TYPE, + countly_tracking, + countly_domain, + frontend_app: versionInfo.frontend_app || 'e70ec21cbe19e799472dfaee0adb9223516d238f', + frontend_server: versionInfo.frontend_server || 'https://stats.count.ly/', + usermenu: { + feedbackLink: COUNTLY_FEEDBACK_LINK, + documentationLink: COUNTLY_DOCUMENTATION_LINK, + helpCenterLink: COUNTLY_HELPCENTER_LINK, + featureRequestLink: COUNTLY_FEATUREREQUEST_LINK, + }, + }; + + + var toDashboard = { + countlyTitle: req.countly.title, + languages: languages, + countlyFavicon: req.countly.favicon, + adminOfApps: adminOfApps, + userOfApps: userOfApps, + defaultApp: defaultApp, + member: member, + intercom: countlyConfig.web.use_intercom, + track: countlyConfig.web.track || false, + installed: req.session.install || false, + cpus: require('os').cpus().length, + countlyVersion: req.countly.version, + countlyType: COUNTLY_TYPE_CE, + countlyTrial: COUNTLY_TRIAL, + countlyTypeName: COUNTLY_NAMED_TYPE, feedbackLink: COUNTLY_FEEDBACK_LINK, documentationLink: COUNTLY_DOCUMENTATION_LINK, helpCenterLink: COUNTLY_HELPCENTER_LINK, featureRequestLink: COUNTLY_FEATUREREQUEST_LINK, - }, - }; - - var toDashboard = { - countlyTitle: req.countly.title, - languages: languages, - countlyFavicon: req.countly.favicon, - adminOfApps: adminOfApps, - userOfApps: userOfApps, - defaultApp: defaultApp, - member: member, - intercom: countlyConfig.web.use_intercom, - track: countlyConfig.web.track || false, - installed: req.session.install || false, - cpus: require('os').cpus().length, - countlyVersion: req.countly.version, - countlyType: COUNTLY_TYPE_CE, - countlyTrial: COUNTLY_TRIAL, - countlyTypeName: COUNTLY_NAMED_TYPE, - feedbackLink: COUNTLY_FEEDBACK_LINK, - documentationLink: COUNTLY_DOCUMENTATION_LINK, - helpCenterLink: COUNTLY_HELPCENTER_LINK, - featureRequestLink: COUNTLY_FEATUREREQUEST_LINK, - countlyTypeTrack: COUNTLY_TRACK_TYPE, - frontend_app: versionInfo.frontend_app, - frontend_server: versionInfo.frontend_server, - production: configs.production || false, - pluginsSHA: sha1Hash(plugins.getPlugins(true)), - plugins: plugins.getPlugins(true), - config: req.config, - path: countlyConfig.path || "", - cdn: countlyConfig.cdn || "", - use_google: configs.use_google || false, - themeFiles: theme, - inject_template: req.template, - javascripts: [], - stylesheets: [], - offline_mode: configs.offline_mode || false - }; - // google services cannot work when offline mode enable - if (toDashboard.offline_mode) { - toDashboard.use_google = false; - } - if (countlyGlobal.config.offline_mode) { - countlyGlobal.config.use_google = false; - } - - var plgns = [].concat(plugins.getPlugins()); - if (plgns.indexOf('push') !== -1) { - plgns.splice(plgns.indexOf('push'), 1); - plgns.unshift('push'); - } - plgns.forEach(plugin => { - try { - let contents = fs.readdirSync(__dirname + `/../../plugins/${common.sanitizeFilename(plugin)}/frontend/public/javascripts`) || []; - toDashboard.javascripts.push.apply(toDashboard.javascripts, contents.filter(n => typeof n === 'string' && n.includes('.js') && n.length > 3 && n.indexOf('.js') === n.length - 3).map(n => `${plugin}/javascripts/${n}`)); - } - catch (e) { - console.log('Error while reading folder of plugin %s: %j', plugin, e.stack); + countlyTypeTrack: COUNTLY_TRACK_TYPE, + frontend_app: versionInfo.frontend_app, + frontend_server: versionInfo.frontend_server, + production: configs.production || false, + pluginsSHA: sha1Hash(plugins.getPlugins()), + plugins: plugins.getPlugins(), + config: req.config, + path: countlyConfig.path || "", + cdn: countlyConfig.cdn || "", + use_google: configs.use_google || false, + themeFiles: theme, + inject_template: req.template, + javascripts: [], + stylesheets: [], + offline_mode: configs.offline_mode || false + }; + // google services cannot work when offline mode enable + if (toDashboard.offline_mode) { + toDashboard.use_google = false; } - try { - let contents = fs.readdirSync(__dirname + `/../../plugins/${common.sanitizeFilename(plugin)}/frontend/public/stylesheets`) || []; - toDashboard.stylesheets.push.apply(toDashboard.stylesheets, contents.filter(n => typeof n === 'string' && n.includes('.css') && n.length > 4 && n.indexOf('.css') === n.length - 4).map(n => `${plugin}/stylesheets/${n}`)); + if (countlyGlobal.config.offline_mode) { + countlyGlobal.config.use_google = false; } - catch (e) { - console.log('Error while reading folder of plugin %s: %j', plugin, e.stack); + + + var plgns = [].concat(plugins.getPlugins()); + if (plgns.indexOf('push') !== -1) { + plgns.splice(plgns.indexOf('push'), 1); + plgns.unshift('push'); } - }); + plgns.forEach(plugin => { + try { + let contents = fs.readdirSync(__dirname + `/../../plugins/${common.sanitizeFilename(plugin)}/frontend/public/javascripts`) || []; + toDashboard.javascripts.push.apply(toDashboard.javascripts, contents.filter(n => typeof n === 'string' && n.includes('.js') && n.length > 3 && n.indexOf('.js') === n.length - 3).map(n => `${plugin}/javascripts/${n}`)); + } + catch (e) { + console.log('Error while reading folder of plugin %s: %j', plugin, e.stack); + } + try { + let contents = fs.readdirSync(__dirname + `/../../plugins/${common.sanitizeFilename(plugin)}/frontend/public/stylesheets`) || []; + toDashboard.stylesheets.push.apply(toDashboard.stylesheets, contents.filter(n => typeof n === 'string' && n.includes('.css') && n.length > 4 && n.indexOf('.css') === n.length - 4).map(n => `${plugin}/stylesheets/${n}`)); + } + catch (e) { + console.log('Error while reading folder of plugin %s: %j', plugin, e.stack); + } + }); - if (req.session.install) { - req.session.install = null; - res.clearCookie('install'); - } - plugins.callMethod("renderDashboard", {req: req, res: res, next: next, data: {member: member, adminApps: countlyGlobalAdminApps, userApps: countlyGlobalApps, countlyGlobal: countlyGlobal, toDashboard: toDashboard}}); + if (req.session.install) { + req.session.install = null; + res.clearCookie('install'); + } + plugins.callMethod("renderDashboard", {req: req, res: res, next: next, data: {member: member, adminApps: countlyGlobalAdminApps, userApps: countlyGlobalApps, countlyGlobal: countlyGlobal, toDashboard: toDashboard}}); - res.expose(countlyGlobal, 'countlyGlobal'); + res.expose(countlyGlobal, 'countlyGlobal'); - res.render('dashboard', toDashboard); + res.render('dashboard', toDashboard); + }); }); } @@ -1086,7 +1091,13 @@ Promise.all([plugins.dbConnection(countlyConfig), plugins.dbConnection("countly_ countlyDb.collection('members').update( { _id: common.db.ObjectID(member._id) }, - { $inc: { session_count: 1 } }, + { + $inc: { session_count: 1 }, + $set: { + last_login: Math.round(new Date().getTime() / 1000), + lu: new Date() + } + } ); if (member.global_admin) { diff --git a/frontend/express/public/core/app-management/templates/app-management.html b/frontend/express/public/core/app-management/templates/app-management.html index 6a3d9512c2e..50e04aefc5e 100644 --- a/frontend/express/public/core/app-management/templates/app-management.html +++ b/frontend/express/public/core/app-management/templates/app-management.html @@ -3,7 +3,7 @@ :title="i18n('management-applications.title')" > @@ -11,6 +11,7 @@
-

{{i18n("management-applications.create-first-app-title")}}

-

{{i18n("management-applications.create-first-app-description")}}

+

{{i18n("management-applications.create-first-app-title")}}

+

{{i18n("management-applications.create-first-app-description")}}

- - + + {{item.label}} {{i18n("management-applications.create-first-app-title")}} v-tooltip.top-start="apps[selectedApp].locked ? {content: i18n('management-applications.application-tooltip-locked-text')} : {content: i18n('management-applications.application-tooltip-unlocked-text')}"> -

{{apps[selectedApp] ? apps[selectedApp].name : i18n('common.add-new-app')}}

+

{{apps[selectedApp] ? apps[selectedApp].name : i18n('common.add-new-app')}}

@@ -52,16 +54,17 @@

{{apps[selectedApp] ? apps[selectedApp].name : i18n('common ref="appForm">