device_detector 1.0.2 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +4 -5
  3. data/CHANGELOG.md +3 -0
  4. data/README.md +5 -5
  5. data/Rakefile +13 -0
  6. data/lib/device_detector/version.rb +1 -1
  7. data/regexes/bots.yml +89 -2
  8. data/regexes/client/browser_engine.yml +3 -0
  9. data/regexes/client/browsers.yml +325 -76
  10. data/regexes/client/feed_readers.yml +6 -0
  11. data/regexes/client/libraries.yml +9 -0
  12. data/regexes/client/mobile_apps.yml +40 -1
  13. data/regexes/client/pim.yml +5 -0
  14. data/regexes/device/mobiles.yml +1607 -431
  15. data/regexes/oss.yml +1 -1
  16. data/regexes/vendorfragments.yml +1 -1
  17. data/spec/device_detector/concrete_user_agent_spec.rb +16 -17
  18. data/spec/device_detector/device_spec.rb +25 -25
  19. data/spec/device_detector/memory_cache_spec.rb +19 -19
  20. data/spec/device_detector/model_extractor_spec.rb +3 -3
  21. data/spec/device_detector/version_extractor_spec.rb +5 -6
  22. data/spec/device_detector_spec.rb +26 -26
  23. data/spec/fixtures/client/browser.yml +655 -322
  24. data/spec/fixtures/client/feed_reader.yml +39 -45
  25. data/spec/fixtures/client/library.yml +24 -11
  26. data/spec/fixtures/client/mediaplayer.yml +29 -28
  27. data/spec/fixtures/client/mobile_app.yml +100 -41
  28. data/spec/fixtures/client/pim.yml +32 -19
  29. data/spec/fixtures/detector/bots.yml +140 -23
  30. data/spec/fixtures/detector/camera.yml +2 -2
  31. data/spec/fixtures/detector/console.yml +3 -3
  32. data/spec/fixtures/detector/desktop.yml +312 -73
  33. data/spec/fixtures/detector/feature_phone.yml +48 -0
  34. data/spec/fixtures/detector/feed_reader.yml +141 -126
  35. data/spec/fixtures/detector/mediaplayer.yml +39 -38
  36. data/spec/fixtures/detector/mobile_apps.yml +86 -85
  37. data/spec/fixtures/detector/phablet.yml +715 -236
  38. data/spec/fixtures/detector/portable_media_player.yml +17 -0
  39. data/spec/fixtures/detector/smartphone-1.yml +3534 -3512
  40. data/spec/fixtures/detector/smartphone-10.yml +3848 -6286
  41. data/spec/fixtures/detector/smartphone-11.yml +5548 -3298
  42. data/spec/fixtures/detector/smartphone-12.yml +8655 -0
  43. data/spec/fixtures/detector/smartphone-2.yml +3645 -3625
  44. data/spec/fixtures/detector/smartphone-3.yml +4099 -4176
  45. data/spec/fixtures/detector/smartphone-4.yml +3861 -3865
  46. data/spec/fixtures/detector/smartphone-5.yml +3991 -4037
  47. data/spec/fixtures/detector/smartphone-6.yml +4074 -4047
  48. data/spec/fixtures/detector/smartphone-7.yml +4355 -4362
  49. data/spec/fixtures/detector/smartphone-8.yml +4087 -4136
  50. data/spec/fixtures/detector/smartphone-9.yml +4420 -4408
  51. data/spec/fixtures/detector/smartphone.yml +2900 -2904
  52. data/spec/fixtures/detector/tablet-1.yml +3946 -3912
  53. data/spec/fixtures/detector/tablet-2.yml +3593 -3617
  54. data/spec/fixtures/detector/tablet-3.yml +2738 -85
  55. data/spec/fixtures/detector/tablet.yml +3604 -3616
  56. data/spec/fixtures/detector/tv.yml +131 -51
  57. data/spec/fixtures/detector/unknown.yml +64 -27
  58. data/spec/fixtures/device/camera.yml +4 -3
  59. data/spec/fixtures/device/car_browser.yml +3 -2
  60. data/spec/fixtures/device/console.yml +15 -14
  61. metadata +4 -2
@@ -47,6 +47,12 @@
47
47
  url: 'http://www.chebinliu.com/projects/iphone/feeddler-rss-reader/'
48
48
  type: 'Feed Reader App'
49
49
 
50
+ - regex: 'QuiteRSS(?:[/ ](\d+[\.\d]+))?'
51
+ name: 'QuiteRSS'
52
+ version: '$1'
53
+ url: https://quiterss.org
54
+ type: 'Feed Reader App'
55
+
50
56
  - regex: 'gPodder/([\d\.]+)'
51
57
  name: 'gPodder'
52
58
  version: '$1'
@@ -82,3 +82,12 @@
82
82
  - regex: 'HTTPie(?:/(\d+[\.\d]+))?'
83
83
  name: 'HTTPie'
84
84
  version: '$1'
85
+
86
+ - regex: 'rest-client/(\d+[\.\d]+).*ruby'
87
+ name: 'REST Client for Ruby'
88
+ version: '$1'
89
+
90
+ - regex: 'RestSharp/(\d+[\.\d]+)'
91
+ name: 'RestSharp'
92
+ version: '$1'
93
+ url: 'http://restsharp.org/'
@@ -165,4 +165,43 @@
165
165
  regex: 'RSSRadio/([\d]+)?'
166
166
  name: 'RSSRadio'
167
167
  version: '$1'
168
-
168
+ -
169
+ regex: 'SogouSearch Android[\d\.]+ version([\d\.]+)?'
170
+ name: 'SogouSearch App'
171
+ version: '$1'
172
+ -
173
+ regex: 'NewsArticle/([\d\.]+)?'
174
+ name: 'NewsArticle App'
175
+ version: '$1'
176
+ -
177
+ regex: 'tieba/([\d\.]+)?'
178
+ name: 'tieba'
179
+ version: '$1'
180
+ -
181
+ regex: 'com\.douban\.group/([\d\.]+)?'
182
+ name: 'douban App'
183
+ version: '$1'
184
+ -
185
+ regex: 'BingWeb/([\d\.]+)?'
186
+ name: 'BingWebApp'
187
+ version: '$1'
188
+ -
189
+ regex: 'GSA/([\d\.]+)?'
190
+ name: 'Google Search App'
191
+ version: '$1'
192
+ -
193
+ regex: 'Flipboard/([\d\.]+)?'
194
+ name: 'Flipboard App'
195
+ version: '$1'
196
+ -
197
+ regex: 'Instagram[ /]([\d\.]+)?'
198
+ name: 'Instagram App'
199
+ version: '$1'
200
+ -
201
+ regex: 'baiduboxapp/([\d\.]+)?'
202
+ name: 'Baidu Box App'
203
+ version: '$1'
204
+ -
205
+ regex: 'Crosswalk(?!.*Streamy)/([\d\.]+)?'
206
+ name: 'CrosswalkApp'
207
+ version: '$1'
@@ -43,4 +43,9 @@
43
43
 
44
44
  - regex: 'DAVdroid(?:/(\d+[\.\d]+))?'
45
45
  name: 'DAVdroid'
46
+ version: '$1'
47
+
48
+ # SeaMonkey
49
+ - regex: '(?:SeaMonkey|Iceape)(?:/(\d+[\.\d]+))?'
50
+ name: 'SeaMonkey'
46
51
  version: '$1'
@@ -8,7 +8,7 @@
8
8
  'Tunisie Telecom':
9
9
  regex: 'StarTrail TT[);/ ]'
10
10
  device: 'smartphone'
11
- model: 'StarTrail'
11
+ model: 'StarTrail by TT'
12
12
 
13
13
  # SFR
14
14
  SFR:
@@ -29,6 +29,8 @@ SFR:
29
29
  model: 'StarShine 2' # ZTE
30
30
  - regex: 'StarShine[);/ ]'
31
31
  model: 'StarShine' # Huawei U8180
32
+ - regex: 'STARADDICT 4[);/ ]'
33
+ model: 'Staraddict 4'
32
34
  - regex: 'STARADDICT III[);/ ]'
33
35
  model: 'Staraddict 3' # Coolpad 8861U
34
36
  - regex: 'STARADDICT II Plus[);/ ]'
@@ -54,10 +56,12 @@ SFR:
54
56
 
55
57
  # HTC
56
58
  HTC:
57
- regex: 'HTC|Sprint (?:APA|ATP)|ADR(?!910L)[a-z0-9]+|NexusHD2|Amaze[ _]4G[);/ ]|(Desire|Sensation|Evo ?3D|IncredibleS|Wildfire|Butterfly)[ _]?([^;/]+) Build|(Amaze[ _]4G|One ?[XELSV\+]+)[);/ ]|SPV E6[05]0|One M8|X525a|PG86100|PC36100|XV6975|PJ83100[);/ ]|2PYB2|0PJA10|0PJA2'
59
+ regex: 'HTC|Sprint (?:APA|ATP)|ADR(?!910L)[a-z0-9]+|NexusHD2|Amaze[ _]4G[);/ ]|(Desire|Sensation|Evo ?3D|IncredibleS|Wildfire|Butterfly)[ _]?([^;/]+) Build|(Amaze[ _]4G|One ?[XELSV\+]+)[);/ ]|SPV E6[05]0|One M8|X525a|PG86100|PC36100|XV6975|PJ83100[);/ ]|2PYB2|2PZC5|0PJA10|0PJA2'
58
60
  device: 'smartphone'
59
61
  models:
60
62
  # explicit smartphone models
63
+ - regex: '2PZC5[);/ ]'
64
+ model: 'U11'
61
65
  - regex: 'XV6975[);/ ]'
62
66
  model: 'Imagio'
63
67
  - regex: 'PG86100[);/ ]'
@@ -127,40 +131,52 @@ HTC:
127
131
 
128
132
  # microsoft
129
133
  Microsoft:
130
- regex: 'KIN\.(One|Two)|RM-(?:1031|106[57]|109[02]|1096|1099|1109|1114|1127|1141|1154)|Microsoft; Lumia'
134
+ regex: 'KIN\.(One|Two)|RM-(?:1010|1031|106[57]|107[23467]|1089|109[02]|1096|1099|1109|111[34]|1127|1141|1154|994)|Microsoft; Lumia|Lumia (?:1530|1320|950|850|650|640|550|535|435)'
131
135
  device: 'smartphone'
132
136
  models:
133
137
  - regex: 'KIN\.(One|Two)'
134
138
  device: 'feature phone'
135
139
  model: 'Kin $1'
136
140
 
137
- - regex: 'RM-1031'
138
- model: 'Lumia 532'
139
- - regex: 'RM-106[57]'
140
- model: 'Lumia 640 XL'
141
- - regex: 'RM-1096'
142
- model: 'Lumia 640 XL'
143
- - regex: 'RM-109[02]'
144
- model: 'Lumia 535'
145
- - regex: 'RM-1099'
141
+ - regex: 'RM-1099|Lumia 430'
146
142
  model: 'Lumia 430'
147
- - regex: 'RM-1109'
148
- model: 'Lumia 640'
149
- - regex: 'RM-1114'
143
+ - regex: 'RM-1114|Lumia 435'
150
144
  model: 'Lumia 435'
151
- - regex: 'RM-1127'
152
- model: 'Lumia 550'
153
- - regex: 'RM-1141'
145
+ - regex: 'RM-1031|Lumia 532'
146
+ model: 'Lumia 532'
147
+ - regex: 'RM-109[02]|RM-1089|Lumia 535'
148
+ model: 'Lumia 535'
149
+ - regex: 'RM-1141|Lumia 540'
154
150
  model: 'Lumia 540'
155
- - regex: 'RM-1154'
151
+ - regex: 'RM-1127|Lumia 550'
152
+ model: 'Lumia 550'
153
+ - regex: 'RM-1010'
154
+ model: 'Lumia 638'
155
+ - regex: 'RM-106[57]|RM-1096|Lumia 640 XL'
156
+ model: 'Lumia 640 XL'
157
+ device: 'phablet'
158
+ - regex: 'RM-1109|RM-1113|RM-107[23467]|Lumia 640'
159
+ model: 'Lumia 640'
160
+ - regex: 'RM-1154|Lumia 650'
156
161
  model: 'Lumia 650'
162
+ - regex: 'Lumia 850'
163
+ model: 'Lumia 850'
164
+ - regex: 'Lumia 950 XL'
165
+ model: 'Lumia 950 XL'
166
+ device: 'phablet'
167
+ - regex: 'Lumia 950'
168
+ model: 'Lumia 950'
169
+ - regex: 'RM-994|Lumia 1320'
170
+ model: 'Lumia 1320'
171
+ - regex: 'Lumia 1530'
172
+ model: 'Lumia 1530'
157
173
 
158
174
  - regex: 'Microsoft; Lumia ([^;/)]+)[;/)]'
159
175
  model: 'Lumia $1'
160
176
 
161
177
  # NOKIA
162
178
  Nokia:
163
- regex: 'Nokia|Lumia|Maemo RX|portalmmm/2\.0 N7|portalmmm/2\.0 NK|nok[0-9]+|Symbian.*\s([a-z0-9]+)$|RX-51 N900|TA-[0-9]{4}'
179
+ regex: 'Nokia(?!Browser|Webview|; GT-I8750)|Lumia|Maemo RX|portalmmm/2\.0 N7|portalmmm/2\.0 NK|nok[0-9]+|Symbian.*\s([a-z0-9]+)$|RX-51 N900|TA-[0-9]{4}|ARM; 909'
164
180
  device: 'smartphone'
165
181
  models:
166
182
  # Nokia branded phones by HMD Global
@@ -178,12 +194,121 @@ Nokia:
178
194
  - regex: 'TA-10(04|12|52)'
179
195
  model: '8'
180
196
  # 2018 Models
181
- - regex: 'Nokia ([A-Za-z0-9\. ]+) Build'
182
- model: '$1'
197
+ - regex: 'Nokia 8\.1'
198
+ model: '8.1'
199
+ - regex: 'Nokia 8 Sirocco'
200
+ model: '8 Sirocco'
201
+ - regex: 'Nokia 7\.1'
202
+ model: '7.1'
203
+ - regex: 'Nokia 7 plus'
204
+ model: '7 plus'
205
+ - regex: 'Nokia 6\.1 Plus'
206
+ model: '6.1 Plus'
207
+ - regex: 'Nokia 6\.1'
208
+ model: '6.1'
209
+ - regex: 'Nokia 5\.1 Plus'
210
+ model: '5.1 Plus'
211
+ - regex: 'Nokia 5\.1'
212
+ model: '5.1'
213
+ - regex: 'Nokia 3\.1'
214
+ model: '3.1'
215
+ - regex: 'Nokia 2\.1'
216
+ model: '2.1'
217
+ - regex: 'Nokia 1 Plus'
218
+ model: '1 Plus'
219
+ - regex: 'Nokia 1'
220
+ model: '1'
183
221
 
184
222
  # Nokia phones
185
223
  - regex: 'RX-51 N900'
186
224
  model: 'N900'
225
+ - regex: '(?: )?(Nokia500|nokiaasha500(?:dualsim)?)(?: Build|[_);/])'
226
+ model: 'Asha 500'
227
+ - regex: 'Nokia5130c(?:-2)?'
228
+ model: '5130 XpressMusic'
229
+ - regex: 'Nokia5230'
230
+ model: 'Nuron'
231
+ - regex: 'Nokia5233'
232
+ model: '5233'
233
+ - regex: 'Nokia5800d-1'
234
+ model: '5800 XpressMusic'
235
+ - regex: 'Nokia6210Navigator'
236
+ model: 'Navigator'
237
+ - regex: 'Nokia8800e?'
238
+ model: 'Sapphire Arte'
239
+ - regex: 'NOKIA-RH-17'
240
+ model: '2280'
241
+ - regex: 'NOKIA-RH-27'
242
+ model: '6225'
243
+ - regex: 'NOKIA-RH-34'
244
+ model: '6585'
245
+ - regex: 'NOKIA-RH-48'
246
+ model: '3105'
247
+ - regex: 'NOKIA-RM-11'
248
+ model: '3205'
249
+ - regex: 'Nokia808 PureView'
250
+ model: '808 PureView'
251
+ - regex: 'Nokia ?([0-9]{4})c(?:-)?'
252
+ model: '$1 Classic'
253
+ - regex: 'Nokia ?([0-9]{4})s(?:-)?'
254
+ model: '$1 Slide'
255
+ - regex: 'Nokia ?([0-9]{4})'
256
+ model: '$1'
257
+ - regex: '(?: )?Nokia([235][0-9]{2})(?: Build|[_);/])'
258
+ model: 'Asha $1'
259
+ - regex: 'Nokia([CEX]-?[0-9]{1,2}i?)-[0-9]{1,2}u?(?: Build|[_);/])'
260
+ model: '$1'
261
+
262
+ - regex: 'Nokia;? 520T'
263
+ model: 'Lumia 520T'
264
+ - regex: 'RM-91[45]'
265
+ model: 'Lumia 520'
266
+ - regex: 'RM-997|Nokia 526'
267
+ model: 'Lumia 526'
268
+ - regex: 'RM-846'
269
+ model: 'Lumia 620'
270
+ - regex: 'RM-97[68]'
271
+ model: 'Lumia 630'
272
+ - regex: 'RM-97[45]'
273
+ model: 'Lumia 635'
274
+ - regex: 'RM-1027'
275
+ model: 'Lumia 636'
276
+ - regex: 'NOKIA;? 710'
277
+ model: 'Lumia 710'
278
+ - regex: 'Nokia;? 720T'
279
+ model: 'Lumia 720T'
280
+ - regex: 'RM-885'
281
+ model: 'Lumia 720'
282
+ - regex: 'Lumia 730'
283
+ model: 'Lumia 730'
284
+ - regex: 'RM-103[89]'
285
+ model: 'Lumia 735'
286
+ - regex: 'Nokia;? 800C'
287
+ model: 'Lumia 800C'
288
+ - regex: 'Nokia;? 800'
289
+ model: 'Lumia 800'
290
+ - regex: 'Nokia 820'
291
+ model: 'Lumia 820'
292
+ - regex: 'RM-984'
293
+ model: 'Lumia 830'
294
+ - regex: 'Nokia;? 900'
295
+ model: 'Lumia 900'
296
+ - regex: '(RM-82[12]|Nokia;? 920)(?: Build|[_);/])'
297
+ model: 'Lumia 920'
298
+ - regex: '(RM-89[23]|RM-910|Nokia;? 925)(?: Build|[a_);/])'
299
+ model: 'Lumia 925'
300
+ - regex: 'Lumia 929'
301
+ model: 'Lumia Icon'
302
+ - regex: 'RM-1045'
303
+ model: 'Lumia 930'
304
+ - regex: '(ARM; 909|NOKIA;? 909|NOKIA; id300)(?: Build|[_);/])'
305
+ model: 'Lumia 1020'
306
+ - regex: 'NOKIA;? 1520\.1'
307
+ model: 'Lumia 1520.1'
308
+
309
+ - regex: 'Nokia ([A-Za-z0-9\. ]+)(?: Build|[_);/])'
310
+ model: '$1'
311
+
187
312
  - regex: 'Nokia(N[0-9]+)'
188
313
  model: '$1'
189
314
  - regex: 'Nokia-([a-z0-9]+)'
@@ -316,117 +441,160 @@ TiPhone:
316
441
 
317
442
  # Apple
318
443
  Apple:
319
- regex: '(?:iTunes-)?Apple[ _]?TV|(?:Apple-|iTunes-)?(?:iPad|iPhone)|iPh[0-9],[0-9]|CFNetwork'
444
+ regex: '(?:iTunes-)?Apple[ _]?TV|(?:Apple-|iTunes-)?(?<!like )(?:iPad|iPhone)|iPh[0-9],[0-9]|CFNetwork'
320
445
  models:
321
446
  # specific smartphone devices
322
- - regex: '(?:Apple-)?iPh(?:one)?1[C,]1'
447
+ - regex: '(?:Apple-)?iPh(?:one)?1[C,_]1'
323
448
  model: 'iPhone'
324
449
  device: 'smartphone'
325
- - regex: '(?:Apple-)?iPh(?:one)?1[C,]2'
450
+ - regex: '(?:Apple-)?iPh(?:one)?1[C,_]2'
326
451
  model: 'iPhone 3G'
327
452
  device: 'smartphone'
328
- - regex: '(?:Apple-)?iPh(?:one)?2[C,]1'
453
+ - regex: '(?:Apple-)?iPh(?:one)?2[C,_]1'
329
454
  model: 'iPhone 3GS'
330
455
  device: 'smartphone'
331
- - regex: '(?:Apple-)?iPh(?:one)?3[C,][123]'
456
+ - regex: '(?:Apple-)?iPh(?:one)?3[C,_][123]'
332
457
  model: 'iPhone 4'
333
458
  device: 'smartphone'
334
- - regex: '(?:Apple-)?iPh(?:one)?4[C,]1'
459
+ - regex: '(?:Apple-)?iPh(?:one)?4[C,_]1|1C2%254enohPi'
335
460
  model: 'iPhone 4S'
336
461
  device: 'smartphone'
337
- - regex: '(?:Apple-)?iPh(?:one)?5[C,][12]'
462
+ - regex: '(?:Apple-)?iPh(?:one)?5[C,_][12]'
338
463
  model: 'iPhone 5'
339
464
  device: 'smartphone'
340
- - regex: '(?:Apple-)?iPh(?:one)?5[C,][34]'
465
+ - regex: '(?:Apple-)?iPh(?:one)?5[C,_][34]'
341
466
  model: 'iPhone 5C'
342
467
  device: 'smartphone'
343
- - regex: '(?:Apple-)?iPh(?:one)?6[C,][12]'
468
+ - regex: '(?:Apple-)?iPh(?:one)?6[C,_][12]'
344
469
  model: 'iPhone 5S'
345
470
  device: 'smartphone'
346
- - regex: '(?:Apple-)?iPh(?:one)?7[C,]1'
471
+ - regex: '(?:Apple-)?iPh(?:one)?7[C,_]1|1C2%257enohPi'
347
472
  model: 'iPhone 6 Plus'
348
473
  device: 'phablet'
349
- - regex: '(?:Apple-)?iPh(?:one)?7[C,]2'
474
+ - regex: '(?:Apple-)?iPh(?:one)?7[C,_]2'
350
475
  model: 'iPhone 6'
351
476
  device: 'smartphone'
352
- - regex: '(?:Apple-)?iPh(?:one)?8[C,]1'
353
- model: 'iPhone 6s'
354
- device: 'smartphone'
355
- - regex: '(?:Apple-)?iPh(?:one)?8[C,]2'
477
+ - regex: '(?:Apple-)?iPh(?:one)?8[C,_]2'
356
478
  model: 'iPhone 6s Plus'
357
479
  device: 'phablet'
358
- - regex: '(?:Apple-)?iPh(?:one)?8[C,]4'
480
+ - regex: '(?:Apple-)?iPh(?:one)?8[C,_]1|iPhone 6s'
481
+ model: 'iPhone 6s'
482
+ device: 'smartphone'
483
+ - regex: '(?:Apple-)?iPh(?:one)?8[C,_]4'
359
484
  model: 'iPhone SE'
360
485
  device: 'smartphone'
361
- - regex: '(?:Apple-)?iPh(?:one)?9[C,][13]'
486
+ - regex: '(?:Apple-)?iPh(?:one)?9[C,_][13]'
362
487
  model: 'iPhone 7'
363
488
  device: 'smartphone'
364
- - regex: '(?:Apple-)?iPh(?:one)?9[C,][24]'
489
+ - regex: '(?:Apple-)?iPh(?:one)?9[C,_][24]'
365
490
  model: 'iPhone 7 Plus'
366
491
  device: 'phablet'
367
- - regex: '(?:Apple-)?iPh(?:one)?10[C,][14]'
492
+ - regex: '(?:Apple-)?iPh(?:one)?10[C,_][14]'
368
493
  model: 'iPhone 8'
369
494
  device: 'smartphone'
370
- - regex: '(?:Apple-)?iPh(?:one)?10[C,][25]'
495
+ - regex: '(?:Apple-)?iPh(?:one)?10[C,_][25]'
371
496
  model: 'iPhone 8 Plus'
372
497
  device: 'phablet'
373
- - regex: '(?:Apple-)?iPh(?:one)?10[C,][36]'
498
+ - regex: '(?:Apple-)?iPh(?:one)?10[C,_][36]|iPhone X'
374
499
  model: 'iPhone X'
375
500
  device: 'phablet'
501
+ - regex: '(?:Apple-)?iPh(?:one)?11[C,_][2]'
502
+ model: 'iPhone XS'
503
+ device: 'smartphone'
504
+ - regex: '(?:Apple-)?iPh(?:one)?11[C,_][46]'
505
+ model: 'iPhone XS Max'
506
+ device: 'phablet'
507
+ - regex: '(?:Apple-)?iPh(?:one)?11[C,_][8]'
508
+ model: 'iPhone XR'
509
+ device: 'smartphone'
510
+ - regex: '(?:Apple-)?iPh(?:one)?12[C,_][1]'
511
+ model: 'iPhone 11'
512
+ device: 'smartphone'
513
+ - regex: '(?:Apple-)?iPh(?:one)?12[C,_][3]'
514
+ model: 'iPhone 11 Pro'
515
+ device: 'phablet'
516
+ - regex: '(?:Apple-)?iPh(?:one)?12[C,_][5]'
517
+ model: 'iPhone 11 Pro Max'
518
+ device: 'phablet'
376
519
 
377
520
  # specific tablet devices
378
- - regex: '(?:Apple-)?iPad1[C,]1'
521
+ - regex: '(?:Apple-)?iPad1[C,_]1'
379
522
  model: 'iPad'
380
523
  device: 'tablet'
381
- - regex: '(?:Apple-)?iPad2[C,][1234]'
524
+ - regex: '(?:Apple-)?iPad2[C,_][1234]'
382
525
  model: 'iPad 2'
383
526
  device: 'tablet'
384
- - regex: '(?:Apple-)?iPad2[C,][567]'
527
+ - regex: '(?:Apple-)?iPad2[C,_][567]'
385
528
  model: 'iPad Mini'
386
529
  device: 'tablet'
387
- - regex: '(?:Apple-)?iPad3[C,][123]'
530
+ - regex: '(?:Apple-)?iPad3[C,_][123]'
388
531
  model: 'iPad 3'
389
532
  device: 'tablet'
390
- - regex: '(?:Apple-)?iPad3[C,][456]'
533
+ - regex: '(?:Apple-)?iPad3[C,_][456]'
391
534
  model: 'iPad 4'
392
535
  device: 'tablet'
393
- - regex: '(?:Apple-)?iPad4[C,][123]'
536
+ - regex: '(?:Apple-)?iPad4[C,_][123]'
394
537
  model: 'iPad Air'
395
538
  device: 'tablet'
396
- - regex: '(?:Apple-)?iPad4[C,][456]'
539
+ - regex: '(?:Apple-)?iPad4[C,_][456]'
397
540
  model: 'iPad Mini 2'
398
541
  device: 'tablet'
399
- - regex: '(?:Apple-)?iPad4[C,][789]'
542
+ - regex: '(?:Apple-)?iPad4[C,_][789]'
400
543
  model: 'iPad Mini 3'
401
544
  device: 'tablet'
402
- - regex: '(?:Apple-)?iPad5[C,][12]'
545
+ - regex: '(?:Apple-)?iPad5[C,_][12]'
403
546
  model: 'iPad Mini 4'
404
547
  device: 'tablet'
405
- - regex: '(?:Apple-)?iPad5[C,][34]'
548
+ - regex: '(?:Apple-)?iPad5[C,_][34]'
406
549
  model: 'iPad Air 2'
407
550
  device: 'tablet'
408
- - regex: '(?:Apple-)?iPad6[C,][34]'
551
+ - regex: '(?:Apple-)?iPad6[C,_][34]'
409
552
  model: 'iPad Pro 9.7'
410
553
  device: 'tablet'
411
- - regex: '(?:Apple-)?iPad6[C,][78]'
554
+ - regex: '(?:Apple-)?iPad6[C,_][78]'
412
555
  model: 'iPad Pro 12.9'
413
556
  device: 'tablet'
414
- - regex: '(?:Apple-)?iPad6[C,](?:11|12)'
415
- model: 'iPad 5'
557
+ - regex: '(?:Apple-)?iPad6[C,_](?:11|12)'
558
+ model: 'iPad 5 9.7'
416
559
  device: 'tablet'
417
- - regex: '(?:Apple-)?iPad7[C,][12]'
560
+ - regex: '(?:Apple-)?iPad7[C,_][12]'
418
561
  model: 'iPad Pro 2 12.9'
419
562
  device: 'tablet'
420
- - regex: '(?:Apple-)?iPad7[C,][34]'
563
+ - regex: '(?:Apple-)?iPad7[C,_][34]'
421
564
  model: 'iPad Pro 10.5'
422
565
  device: 'tablet'
423
- - regex: '(?:Apple-)?iPad7[C,][56]'
424
- model: 'iPad 6'
566
+ - regex: '(?:Apple-)?iPad7[C,_][56]'
567
+ model: 'iPad 6 9.7'
568
+ device: 'tablet'
569
+ - regex: '(?:Apple-)?iPad7[C,_](?:11|12)'
570
+ model: 'iPad 7 10.2'
571
+ device: 'tablet'
572
+ - regex: '(?:Apple-)?iPad8[C,_][1-4]'
573
+ model: 'iPad Pro 3 11.0'
574
+ device: 'tablet'
575
+ - regex: '(?:Apple-)?iPad8[C,_][5-8]'
576
+ model: 'iPad Pro 3 12.9'
425
577
  device: 'tablet'
426
578
 
579
+ - regex: 'Apple-?TV2[C,_]1'
580
+ model: 'Apple TV 2'
581
+ device: 'tv'
582
+ - regex: 'Apple-?TV3[C,_][12]'
583
+ model: 'Apple TV 3'
584
+ device: 'tv'
585
+ - regex: 'Apple-?TV5[C,_]3'
586
+ model: 'Apple TV 4'
587
+ device: 'tv'
588
+ - regex: 'Apple-?TV6[C,_]2'
589
+ model: 'Apple TV 4K'
590
+ device: 'tv'
591
+
427
592
  - regex: '(?:iTunes-)?Apple[ _]?TV'
428
593
  model: 'Apple TV'
429
594
  device: 'tv'
595
+ - regex: 'HomePod'
596
+ model: 'HomePod'
597
+ device: 'smart speaker'
430
598
  - regex: 'iTunes-iPad/[0-9]+(?:\.[0-9]+)* \(([^;]+);'
431
599
  model: 'iPad $1'
432
600
  device: 'tablet'
@@ -442,7 +610,7 @@ Apple:
442
610
 
443
611
  # micromax
444
612
  MicroMax:
445
- regex: '(?:MicroMax[ \-\_]?[a-z0-9]+|Q327)|P70221 Build'
613
+ regex: '(?:MicroMax[ \-\_]?[a-z0-9]+|Q327)|P70221 Build|YU(5040|5530)[);/ ]'
446
614
  device: 'smartphone'
447
615
  models:
448
616
  - regex: 'AQ5001'
@@ -456,6 +624,10 @@ MicroMax:
456
624
  model: 'Bolt'
457
625
  - regex: 'Q417'
458
626
  model: 'Canvas Mega'
627
+ - regex: 'YU5040[);/ ]'
628
+ model: 'YU Yureka YU5040'
629
+ - regex: 'YU5530[);/ ]'
630
+ model: 'YU Yureka S YU5530'
459
631
  - regex: 'Q424'
460
632
  model: 'Bolt Selfie'
461
633
  - regex: 'Q426'
@@ -468,9 +640,23 @@ MicroMax:
468
640
 
469
641
  # 3Q
470
642
  3Q:
471
- regex: '(AC0731B|AC1024C|AC7803C|BC9710AM|EL72B|LC0720C|LC0723B|LC0725B|LC0804B|LC0808B|LC0809B|LC0810C|LC0816C|LC0901D|LC1016C|MT0724B|MT0729B|MT0729D|MT0811B|OC1020A|RC0709B|RC0710B|RC0718C|RC0719H|RC0721B|RC0722C|RC0726B|RC0734H|RC0743H|RC0817C|RC1018C|RC1019G|RC1025F|RC1301C|RC7802F|RC9711B|RC9712C|RC9716B|RC9717B|RC9724C|RC9726C|RC9727F|RC9730C|RC9731C|TS0807B|TS1013B|VM0711A|VM1017A|RC0813C|QS9719D|QS9718C|QS9715F|QS1023H|QS0815C|QS0730C|QS0728C|QS0717D|QS0716D|QS0715C|MT7801C)'
643
+ regex: 'AC0731B|AC1024C|AC7803C|BC9710AM|EL72B|LC0720C|LC0723B|LC0725B|LC0804B|LC0808B|LC0809B|LC0810C|LC0816C|LC0901D|LC1016C|MT0724B|MT0729[BD]|MT0811B|OC1020A|RC0709B|RC0710B|RC0718C|RC0719H|RC0721B|RC0722C|RC0726B|RC0734H|RC0743H|RC0817C|RC1018C|RC1019G|RC1025F|RC1301C|RC7802F|RC9711B|RC9712C|RC9716B|RC9717B|RC9724C|RC9726C|RC9727F|RC9730C|RC9731C|TS0807B|TS1013B|VM0711A|VM1017A|RC0813C|QS9719D|QS9718C|QS9715F|QS1023H|QS0815C|QS0730C|QS0728C|QS0717D|QS0716D|QS0715C|MT7801C|TS9708B|AC0732C|MT0739D|MT0812E|(?:3Q_)?ER71B'
472
644
  device: 'tablet'
473
- model: '$1'
645
+ models:
646
+ - regex: 'MT0724B|LC0901D|LC0816C|LC0810C|LC0809B|LC0808B|LC0804B|LC0725B|LC0723B'
647
+ model: 'Qoo! P-Pad'
648
+ - regex: 'VM1017A|TS1013B|TS0807B|RC9731C|RC9730C|RC9727F|RC9726C|RC9724C|RC9717B|RC9716B|RC9712C|RC9711B|RC1301C|RC1025F|RC1019G|RC1018C|RC0817C|RC0813C|RC0743H|RC0734H|RC0726B|RC0722C|RC0721B|RC0719H|RC0718C|RC0710B|RC0709B|QS9715F|QS1023H|QS0815C|QS0730C|QS0728C|QS0717D|QS0716D|QS0715C|MT0811B|MT0739D|MT0729[BD]|LC1016C|LC0720C|BC9710AM|AC1024C|AC0731B'
649
+ model: 'Qoo! Q-Pad'
650
+ - regex: 'MT7801C|QS9718C|QS9719D|VM0711A|OC1020A'
651
+ model: 'Qoo! Surf'
652
+ - regex: 'TS9708B'
653
+ model: 'Surf TS1009B'
654
+ - regex: 'AC7803C|AC0732C'
655
+ model: 'Qoo! Lite'
656
+ - regex: 'MT0812E|RC7802F'
657
+ model: 'Qoo! Meta'
658
+ - regex: 'EL72B|(?:3Q_)?ER71B'
659
+ model: 'Qoo! Q-Book'
474
660
 
475
661
  # 4Good
476
662
  4Good:
@@ -480,7 +666,9 @@ MicroMax:
480
666
  - regex: 'T700i_3G'
481
667
  model: 'T700i 3G'
482
668
  device: 'tablet'
483
- - regex: '(S(?:450m|555m|501m)[_ ][43]G|Light A103)'
669
+ - regex: 'S555m[_ ]4G'
670
+ model: 'People'
671
+ - regex: '(S(?:450m|501m)[_ ][43]G|Light A103)'
484
672
  model: '$1'
485
673
  - regex: '4Good[ _]([^;/]+) Build'
486
674
  model: '$1'
@@ -511,7 +699,7 @@ AllCall:
511
699
 
512
700
  # Bravis
513
701
  Bravis:
514
- regex: 'Bravis[ _]|A501 Bright|NB(?:106M|10[1-8]|751|7[145]|8[57]1|76)|NP101|NP 104 3G|B501'
702
+ regex: 'Bravis[ _]|A501 Bright|NB(?:106M|10[1-8]|751|7[145]|8[57]1|76)|NP101|NP 104 3G|B501|N1-570 Space'
515
703
  device: 'smartphone'
516
704
  models:
517
705
  - regex: 'A501 Bright'
@@ -530,6 +718,8 @@ Bravis:
530
718
  model: 'Trend'
531
719
  - regex: 'B501'
532
720
  model: 'Easy'
721
+ - regex: 'N1-570'
722
+ model: 'Space'
533
723
  - regex: 'BRAVIS[ ]A554'
534
724
  model: 'A554 Grand'
535
725
  - regex: 'BRAVIS[ _]SLIM[ _]3G'
@@ -546,7 +736,7 @@ Bravis:
546
736
 
547
737
  # Acer
548
738
  Acer:
549
- regex: 'acer|(?<!ZTE BLADE )a(?:101|110|2[10]0|211|50[10]|51[10]|70[10])[);/ ]|Android.*V3[67]0[);/ ]|Android.*Z1[23456]0 Build|Android.*Z5\d{2} Build|Android.*T0[234678] Build|A1-830|A1-81[01]|A3-A[1234][01]|B1-7[1235678][01]|B1-7[23]3|B1-8[1235]0|B1-A71|B3-A[12]0|B3-A3[02]|E39 Build|S5[12]0 Build|DA[0-9]+HQ?L[);/ ]'
739
+ regex: 'acer|(?<!ZTE BLADE )a(?:101|110|2[10]0|211|50[10]|51[10]|70[10])[);/ ]|Android.*V3[67]0[);/ ]|Android.*Z1[23456]0 Build|Android.*Z5\d{2} Build|Android.*T0[234678] Build|Android.*S55[);/ ]|A1-830|A1-81[01]|A1-7[23]4|A3-A[1234][01]|B1-7[1235678][01]|B1-7[23]3|B1-8[1235]0|B1-A71|B3-A[12]0|B3-A3[02]|E39[);/ ]|S5[12]0 Build|DA[0-9]+HQ?L[);/ ]|Aspire V5-121|Predator G9-793|GT-810'
550
740
  device: 'smartphone'
551
741
  models:
552
742
  # smart displays
@@ -567,60 +757,121 @@ Acer:
567
757
  - regex: 'A1-830'
568
758
  model: 'Iconia A1'
569
759
  device: 'tablet'
760
+ - regex: 'A1-7[23]4'
761
+ model: 'Iconia Talk S'
762
+ device: 'tablet'
570
763
  - regex: 'A3-A[12][01]'
571
764
  model: 'Iconia A3'
572
765
  device: 'tablet'
573
766
  - regex: 'A3-A[34]0'
574
767
  model: 'Iconia Tab 10'
575
768
  device: 'tablet'
576
- - regex: 'B1-7[1235][01]|B1-A71'
769
+ - regex: 'B1-7[5678]0|B1-730HD'
770
+ model: 'Iconia One 7'
771
+ device: 'tablet'
772
+ - regex: 'B1-7[123][01]|B1-A71'
577
773
  model: 'Iconia B1'
578
774
  device: 'tablet'
579
775
  - regex: 'B1-7[23]3'
580
776
  model: 'Iconia Talk 7'
581
777
  device: 'tablet'
582
- - regex: 'B1-7[678]0'
583
- model: 'Iconia One 7'
584
- device: 'tablet'
585
778
  - regex: 'B1-8[1235]0'
586
779
  model: 'Iconia One 8'
587
780
  device: 'tablet'
588
781
  - regex: 'B3-A[12]0|B3-A3[02]'
589
782
  model: 'Iconia One 10'
590
783
  device: 'tablet'
784
+ - regex: 'A101'
785
+ model: 'Vangogh'
786
+ device: 'tablet'
787
+ - regex: 'A200'
788
+ model: 'Picasso E'
789
+ device: 'tablet'
790
+ - regex: 'A50[01]'
791
+ model: 'Picasso'
792
+ device: 'tablet'
793
+ - regex: 'Acer One 7'
794
+ model: 'One 7'
795
+ device: 'tablet'
796
+ - regex: 'GT-810'
797
+ model: 'Predator 8'
798
+ device: 'tablet'
591
799
 
592
800
  # explicit smartphone models
593
- - regex: 'E39 Build'
801
+ - regex: 'E39[);/ ]'
594
802
  model: 'Liquid E700'
803
+ - regex: 'E310[);/ ]'
804
+ model: 'Liquid Mini'
805
+ - regex: 'E320(?:-orange)?[);/ ]'
806
+ model: 'Liquid Express'
807
+ - regex: 'E310[);/ ]'
808
+ model: 'beTouch E210'
595
809
  - regex: 'Android.*V360[);/ ]'
596
- model: 'Liquid E1'
810
+ model: 'Liquid E1 Duo'
597
811
  - regex: 'Android.*V370[);/ ]'
598
- model: 'Liquid E2'
599
- - regex: 'S510 Build'
812
+ model: 'Liquid E2 Duo'
813
+ - regex: 'S510[);/ ]'
600
814
  model: 'Liquid S1'
601
- - regex: 'S520 Build'
815
+ - regex: 'S520[);/ ]'
602
816
  model: 'Liquid S2'
603
- - regex: 'Android.*Z1([2345])0 Build'
817
+ - regex: '(?:Acer_)?P400[);/ ]'
818
+ model: 'neoTouch P400'
819
+ - regex: '(?:Acer_)?P300[);/ ]'
820
+ model: 'neoTouch P300'
821
+ - regex: '(?:Acer_)?S200[);/ ]'
822
+ model: 'neoTouch S200'
823
+ - regex: '(?:Acer_)?E100[);/ ]'
824
+ model: 'beTouch E100'
825
+ - regex: 'Android.*Z1([234])0[);/ ]'
604
826
  model: 'Liquid Z$1'
605
- - regex: 'Android.*Z160 Build'
606
- model: 'Liquid Z4'
607
- - regex: 'Android.*Z(5\d{2}) Build'
827
+ - regex: 'Android.*Z110[);/ ]'
828
+ model: 'Liquid Z110'
829
+ - regex: 'Android.*Z150[);/ ]'
830
+ model: 'Liquid Z5 Duo'
831
+ - regex: 'Android.*Z160[);/ ]'
832
+ model: 'Liquid Z4 Duo'
833
+ - regex: 'Android.*Z(5\d{2})[);/ ]'
608
834
  model: 'Liquid Z$1'
609
- - regex: 'Android.*T02 Build'
835
+ - regex: 'Android.*S57[);/ ]'
836
+ model: 'Liquid Jade Z'
837
+ - regex: 'Android.*T02[);/ ]'
610
838
  model: 'Liquid Z530'
611
- - regex: 'Android.*T03 Build'
839
+ - regex: 'Android.*T03[);/ ]'
612
840
  model: 'Liquid Z630'
613
- - regex: 'Android.*T04 Build'
841
+ - regex: 'Android.*T04[);/ ]'
614
842
  model: 'Liquid Z630S'
615
- - regex: 'Android.*T06 Build'
843
+ - regex: 'Android.*T06[);/ ]'
616
844
  model: 'Liquid Zest'
617
- - regex: 'Android.*T07 Build'
845
+ - regex: 'Android.*T07[);/ ]'
618
846
  model: 'Liquid Zest 4G'
619
- - regex: 'Android.*T08 Build'
847
+ - regex: 'Android.*T08[);/ ]'
620
848
  model: 'Liquid Zest Plus'
621
- - regex: 'Acer; ?([^;\)]+)'
849
+ - regex: 'TM01[);/ ]'
850
+ model: 'Liquid M330'
851
+ - regex: 'M220[);/ ]'
852
+ model: 'Liquid M220'
853
+ - regex: 'AcerTD600'
854
+ model: 'TD600'
855
+ - regex: 'Android.*S55[);/ ]'
856
+ model: 'Liquid Jade'
857
+
858
+ # desktop models
859
+ - regex: '(?:Acer )?(Chromebook R1[13])'
860
+ model: '$1'
861
+ device: 'desktop'
862
+ - regex: '(?:Acer )?(Chromebook 14)'
863
+ model: '$1'
864
+ device: 'desktop'
865
+ - regex: '(Aspire V5-121)'
866
+ model: '$1'
867
+ device: 'desktop'
868
+ - regex: '(Predator G9-793)'
869
+ model: '$1'
870
+ device: 'desktop'
871
+
872
+ - regex: 'Acer; ?([^;\(\)/]+)'
622
873
  model: '$1'
623
- - regex: 'Acer[ _\-]?([^;\)]+) Build'
874
+ - regex: 'Acer(?! ?inc)[ _\-]?([^;\(\)/]+)[();/ ]'
624
875
  model: '$1'
625
876
  - regex: 'acer[\-_]([a-z0-9]+)'
626
877
  model: '$1'
@@ -721,7 +972,7 @@ Arian Space:
721
972
 
722
973
  # Alcatel
723
974
  Alcatel:
724
- regex: 'Alcatel|Alc[a-z0-9]+|One[ _]?Touch|idol3|(?:4003[AJ]|4009[ADEFIKMSX]|4013[DEJKMX]|4014[ADEKMX]|4015[ADNTX]|4016[ADX]|4017[ADEFSX]|4018[ADEFMX]|4024[EDX]|4027[ADNX]|4028[AEJS]|4032[ADEX]|4034[ADEFGX]|4035[ADXY]|4045[ADEX]|4047[ADFGNX]|4049[DEGMX]|4060[SW]|4114E|5009[AD]|5010[DEGSUX]|5011A|5012[DFG]|5015[ADEX]|5016[AXJ]|5017[ABDEOX]|5019D|5022[EDX]|5023[EF]|5024A|5025[DG]|5026[AD]|5027B|5033[AX]|5033D[ _]RU|5038[ADEX]|5041C|5042[ADEFGWX]|5044[ADGIKOPSTY]|5045[ADFGIJTXY]|5046[ADGIJSTUY]|5047[DIUY]|5049[EGSWZ]|5050[ASXY]|5051[ADEJMTWX]|5052[AD]|5054[ADNSWX]|5056[ADEGIJMNTUWX]|5057M|5058[AIY]|5059[ADXYZ]|5065[ADNWX]|5070D|5080[ADFQUX]|5085[ABCDGHIJNOQY]|5086[ADY]|5090[AIY]|5095[IKY]|5098[OS]|5099[ADYUI]|5116J|5145A|6016[ADEX]|6036[AXY]|6037[BKY]|6039[AHJKY]|6043[AD]|6044D|6045[BFIKOY]|6050[AFY]|6055[ABDHIKPUYZ]|6058[ADX]|6060S|6062W|6070K|7040[ADEFKRT]|7041[DX]|7043[AEKY]|7044[AX]|7045Y|7048[ASWX]|7055A|7070X|8030Y|8050[DEGX]|8063|9001[DIX]|9002X|9003[AX]|9024O|9005X|9007[ATX]|9008[ADIJNTUX]|9010X|9022X|9203A|A570BL|I213|I216X)[);/ ]|TIMXL'
975
+ regex: 'Alcatel|Alc(?!or )[a-z0-9]+|One[ _]?Touch|idol3|(?:4003[AJ]|4009[ADEFIKMSX]|4013[DEJKMX]|4014[ADEKMX]|4015[ADNTX]|4016[ADX]|4017[ADEFSX]|4018[ADEFMX]|4024[EDX]|4027[ADNX]|4028[AEJS]|4032[ADEX]|4034[ADEFGX]|4035[ADXY]|4045[ADEX]|4047[ADFGNX]|4049[DEGMX]|4060[SW]|4114E|5009[AD]|5010[DEGSUX]|5011A|5012[DFG]|5015[ADEX]|5016[AXJ]|5017[ABDEOX]|5019D|5022[EDX]|5023[EF]|5024A|5025[DEG]|5026[AD]|5027B|5033[AX]|5033D[ _]RU|5034D|5038[ADEX]|5041C|5042[ADEFGWX]|5044[ADGIKOPSTY]|5045[ADFGIJTXY]|5046[ADGIJSTUY]|5047[DIUY]|5049[EGSWZ]|5050[ASXY]|5051[ADEJMTWX]|5052[AD]|5054[ADNSTWX]|5056[ADEGIJMNTUWX]|5057M|5058[AIY]|5059[ADXYZ]|5065[ADNWX]|5070D|5080[ADFQUX]|5085[ABCDGHIJNOQY]|5086[ADY]|5090[AIY]|5095[IKY]|5098[OS]|5099[ADYUI]|5116J|5145A|6016[ADEX]|6036[AXY]|6037[BKY]|6039[AHJKY]|6043[AD]|6044D|6045[BFIKOY]|6050[AFY]|6055[ABDHIKPUYZ]|6058[ADX]|6060S|6062W|6070K|7040[ADEFKRT]|7041[DX]|7043[AEKY]|7044[AX]|7045Y|7048[ASWX]|7055A|7070X|8030Y|8050[DEGX]|8063|9001[DIX]|9002X|9003[AX]|9024O|9005X|9007[ATX]|9008[ADIJNTUX]|9010X|9022X|9203A|A570BL|I213|I216X)[);/ ]|TIMXL'
725
976
  device: 'smartphone'
726
977
  models:
727
978
  - regex: '(?:5022[EDX]|5070D)[);/ ]'
@@ -762,7 +1013,7 @@ Alcatel:
762
1013
  model: 'One Touch Pop 3'
763
1014
  - regex: '(?:5015[AE]|5016[AJ]|5065[ADWX]|5116J)[);/ ]'
764
1015
  model: 'One Touch Pop 3 5"'
765
- - regex: '(?:5025[DG]|5054[ADSX])[);/ ]'
1016
+ - regex: '(?:5025[DEG]|5054[ADSTX])[);/ ]'
766
1017
  model: 'One Touch Pop 3 5.5"'
767
1018
  - regex: '5015D[);/ ]'
768
1019
  model: 'One Touch Pop 3 Dual SIM'
@@ -790,6 +1041,8 @@ Alcatel:
790
1041
  model: 'One Touch Dawn'
791
1042
  - regex: '5024A[);/ ]'
792
1043
  model: '1S'
1044
+ - regex: '5034D[);/ ]'
1045
+ model: '3L'
793
1046
  - regex: '7040[RT][);/ ]'
794
1047
  model: 'One Touch Fierce 2'
795
1048
  - regex: '5056[NW]'
@@ -932,6 +1185,22 @@ Alcatel:
932
1185
  device: 'tablet'
933
1186
  - regex: '7048[ASWX][);/ ]'
934
1187
  model: 'One Touch Go Play'
1188
+ - regex: '(?:Alcatel-)?OT-802[);/ ]'
1189
+ model: 'Wave'
1190
+ - regex: 'ALCATEL_ONE_TOUCH_768T[);/ ]'
1191
+ model: 'Island'
1192
+ - regex: '(?:TRIBE_)?3075A[);/ ]'
1193
+ model: 'One Touch Tribe'
1194
+ - regex: 'ALCATEL_one_touch_585[);/ ]'
1195
+ model: 'One Touch 585'
1196
+ - regex: 'ALCATEL_ONE_TOUCH_838[);/ ]'
1197
+ model: 'One Touch 838'
1198
+ - regex: 'ALCATEL_one_touch_813d[);/ ]'
1199
+ model: 'One Touch 813D'
1200
+ - regex: 'ALCATEL_one_touch_813[);/ ]'
1201
+ model: 'One Touch 813'
1202
+ - regex: 'OT871A'
1203
+ model: 'One Touch 871A'
935
1204
  - regex: '(?:Alcatel[ _])?One[ _]?Touch[ _]((?:T[0-9]+|TAB[^/;]+|EVO[78](?:HD)?)) Build'
936
1205
  device: 'tablet'
937
1206
  model: 'One Touch $1'
@@ -957,6 +1226,12 @@ Alcatel:
957
1226
  model: 'U5 Lite'
958
1227
  - regex: '4047A[);/ ]'
959
1228
  model: 'U5 Plus'
1229
+ - regex: '4044[CV][);/ ]'
1230
+ model: 'Quick Flip'
1231
+ - regex: '4044O[);/ ]'
1232
+ model: 'Cingular Flip 2'
1233
+ - regex: '4044[MNT][);/ ]'
1234
+ model: 'Go Flip'
960
1235
  - regex: '5044[GS][);/ ]'
961
1236
  model: 'U50'
962
1237
  - regex: '5033[AX][);/ ]'
@@ -979,6 +1254,8 @@ Alcatel:
979
1254
  model: '7'
980
1255
  - regex: 'Alcatel UP'
981
1256
  model: ''
1257
+ - regex: '(?:ALCATEL_)?A383G[);/ ]'
1258
+ model: 'Big Easy Plus'
982
1259
  - regex: '5041C'
983
1260
  model: 'TETRA'
984
1261
  - regex: 'ALCATEL([^/;]+) Build'
@@ -992,13 +1269,19 @@ Alcatel:
992
1269
 
993
1270
  # Allview
994
1271
  Allview:
995
- regex: 'Allview|A4You|A5_(?:Easy(?:_TM)?|Ready(?:_TM)?|Quad|Quad_Plus_TM)|A[56789]_Lite|A5Smiley|A6_Duo|AX4Nano|C6_Duo|E[23]_Living|E3_(?:Jump|Sign)|E4_Lite|M9_Connect|P(?:43_Easy|[5689]_Energy|6_Energy_Lite|[68]_Energy_Mini(?:_TM)?|(41|[458])_eMagic(?:_TM)?|[589](?:_)?Life(?:_TM)?|[567]_Lite(?:_TM)?|6_plus|[45678]_Pro|7_Seon|10_Style|7_Xtreme|6_Qmax|4_Quad)|V(?:[13]_Viper|1_Viper_I|2_Viper_(?:E|I|S|X|X_plus|Xe))|X(?:[1234]_Soul_Xtreme|[12345]_Soul|3_Soul_Lite|[24]Soul_Mini(?:_TM)?|4_Soul_Mini_S(?:_TM)?|[234]_Soul_Style(?:_TM)?|2_Soul_Style_Plus|2_Twin)|Viva_H801'
1272
+ regex: 'Allview|A4You|A5_(?:Easy(?:_TM)?|Ready(?:_TM)?|Quad|Quad_Plus_TM)|A[56789]_Lite|A5Smiley|A6_Duo|AX2_Frenzy|AX4Nano|AX5NanoQ|C6_Duo|E[23]_Living|E3_(?:Jump|Sign)|E4_Lite|M9_Connect|P(?:43_Easy|[5689]_Energy|6_Energy_Lite|[68]_Energy_Mini(?:_TM)?|(41|[458])_eMagic(?:_TM)?|[589](?:_)?Life(?:_TM)?|[567]_Lite(?:_TM)?|6_plus|[45678]_Pro|7_Seon|10_Style|7_Xtreme|6_Qmax|4_Quad)|V(?:[13]_Viper|1_Viper_I|2_Viper_(?:E|I|S|X|X_plus|Xe))|X(?:[1234]_Soul_Xtreme|[12345]_Soul|3_Soul_Lite|[24]Soul_Mini(?:_TM)?|4_Soul_Mini_S(?:_TM)?|[234]_Soul_Style(?:_TM)?|2_Soul_Style_Plus|2_Twin)|Viva_H801'
996
1273
  device: 'smartphone'
997
1274
  models:
998
1275
  - regex: 'A4You'
999
1276
  model: 'A4 You'
1277
+ - regex: 'AX2_Frenzy'
1278
+ model: 'AX2 Frenzy'
1279
+ device: 'tablet'
1000
1280
  - regex: 'AX4Nano'
1001
1281
  model: 'AX4 Nano'
1282
+ - regex: 'AX5NanoQ'
1283
+ model: 'AX5 Nano Q'
1284
+ device: 'tablet'
1002
1285
  - regex: 'C6_Duo'
1003
1286
  model: 'C6 Duo'
1004
1287
  - regex: 'E([23])_Living'
@@ -1091,10 +1374,12 @@ Allview:
1091
1374
  model: 'A5 Quad'
1092
1375
  - regex: 'A6_Duo'
1093
1376
  model: 'A6 Duo'
1094
- - regex: 'Allview[ _-]([^;/]+) Build'
1095
- model: '$1'
1096
- - regex: 'Allview[ _-]([^;/]+)[;/)]'
1097
- model: '$1'
1377
+ - regex: 'Impera S'
1378
+ model: 'Impera S'
1379
+ - regex: 'ALLVIEW P4i'
1380
+ model: 'AllDro P4'
1381
+ - regex: 'Allview_P2'
1382
+ model: 'AllDro'
1098
1383
 
1099
1384
  # explicit tablet models
1100
1385
  - regex: 'AllviewCityPlus'
@@ -1115,6 +1400,32 @@ Allview:
1115
1400
  - regex: 'Viva_H801'
1116
1401
  device: 'tablet'
1117
1402
  model: 'Viva H801'
1403
+ - regex: 'ALLVIEW ?SPEEDI'
1404
+ device: 'tablet'
1405
+ model: 'Speed I'
1406
+ - regex: 'ALLVIEW ?SPEED'
1407
+ device: 'tablet'
1408
+ model: 'Speed'
1409
+ - regex: 'ALLVIEWSPEED'
1410
+ device: 'tablet'
1411
+ model: 'Speed'
1412
+ - regex: 'AX4Nano'
1413
+ device: 'tablet'
1414
+ model: 'AX4 Nano'
1415
+ - regex: 'ALLVIEW_TX1_Quasar'
1416
+ device: 'tablet'
1417
+ model: 'TX1 Quasar'
1418
+
1419
+ - regex: 'Allview[ _-]([^;/]+) Build'
1420
+ model: '$1'
1421
+ - regex: 'Allview[ _-]([^;/]+)[;/)]'
1422
+ model: '$1'
1423
+
1424
+ # Allwinner
1425
+ Allwinner:
1426
+ regex: 'QUAD-CORE A64 p3'
1427
+ device: 'tablet'
1428
+ model: 'A64 QUAD-CORE p3'
1118
1429
 
1119
1430
  # altron
1120
1431
  altron:
@@ -1181,6 +1492,13 @@ Ainol:
1181
1492
  regex: 'Numy|novo[0-9]'
1182
1493
  device: 'tablet'
1183
1494
  models:
1495
+ - regex: 'Numy 3G AX1'
1496
+ model: 'Novo 7 Numy AX1 3G'
1497
+ - regex: 'Numy_3G_AX3'
1498
+ model: 'Numy AX3 Sword'
1499
+ - regex: 'Numy_3G_BW1'
1500
+ model: 'Numy 3G Talos 2'
1501
+
1184
1502
  - regex: 'Numy[ _]([^;/]+) Build'
1185
1503
  model: 'Numy $1'
1186
1504
  - regex: 'Novo([0-9]+)[ \-]([^;/]+) Build'
@@ -1191,6 +1509,8 @@ Archos:
1191
1509
  regex: '(?:YL-)?Archos'
1192
1510
  device: 'smartphone'
1193
1511
  models:
1512
+ - regex: 'Archos (Oxygen 63)[);/ ]'
1513
+ model: '$1'
1194
1514
  - regex: 'Archos ?5[);/ ]'
1195
1515
  device: 'tablet'
1196
1516
  model: '5'
@@ -1351,7 +1671,7 @@ Assistant:
1351
1671
 
1352
1672
  # Ark
1353
1673
  Ark:
1354
- regex: '(ARK[_ -])?Benefit[_ -]([^/;]*) Build|EDGE A5HD|ICON (R40\+|R45)|Impulse[ _](P[12])'
1674
+ regex: '(ARK[_ -])?Benefit[_ -]([^/;]*) Build|EDGE A5HD|ICON (R40\+|R45)|Impulse[ _](P[12])|Wizard_1[/;) ]'
1355
1675
  device: 'smartphone'
1356
1676
  models:
1357
1677
  - regex: '(?:ARK[_ -])?Benefit[_ -]([^/;]*) Build'
@@ -1364,6 +1684,8 @@ Ark:
1364
1684
  model: 'Edge $1'
1365
1685
  - regex: 'ICON (R40\+|R45)'
1366
1686
  model: 'Icon $1'
1687
+ - regex: 'Wizard_1'
1688
+ model: 'Wizard 1'
1367
1689
 
1368
1690
  # Garmin-Asus
1369
1691
  Garmin-Asus:
@@ -1379,7 +1701,7 @@ Garmin-Asus:
1379
1701
 
1380
1702
  # Asus
1381
1703
  Asus:
1382
- regex: 'Asus|Transformer|TF300T|Slider SL101|PadFone|ME302(?:C|KL)|ME301T|ME371MG|ME17(?:1|2V|3X)|(?:K0[01][0-9a-z]|P(?:00[18ACIL]|01[MTVWYZ]|01MA|01T_1|02[13478])(?: Build|\))|X015D|X018D|X003|X00[7ABT]D|Z00D|Z00[MTY]D|Z01[7FGHKMR]D)[);/ ]|ZB(631|602|633|55[135]|50[01])KL|ZC(55[134]|520|600)KL|ZA550KL|ZE(520|620|55[2345])KL|ZD55[23]KL|ZS6[23]0KL|ZB500KG'
1704
+ regex: 'Asus|Transformer|TF300T|Slider SL101|PadFone|ME302(?:C|KL)|ME301T|ME371MG|ME17(?:1|2V|3X)|(?:K0[01][0-9a-z]|P(?:00[18ACIL]|01[MTVWYZ]|01MA|01T_1|02[13478])(?: Build|\))|X015D|X018D|X003|X00[7ABT]D|Z00D|Z00[MTY]D|Z01[7FGHKMR]D)[);/ ]|ZB(631|602|633|55[135]|50[01])KL|ZC(55[134]|520|600)KL|ZA550KL|ZE(520|620|55[2345])KL|ZD55[23]KL|ZS6[23]0KL|ZB(500KG|601KL)'
1383
1705
  device: 'smartphone'
1384
1706
  models:
1385
1707
  # explicit tablet models
@@ -1501,6 +1823,8 @@ Asus:
1501
1823
  model: 'ZenFone C'
1502
1824
  - regex: '(?:ASUS_)?(X00PD|ZB555KL)'
1503
1825
  model: 'ZenFone Max M1'
1826
+ - regex: '(?:ASUS_)?(ZB601KL)'
1827
+ model: 'ZenFone Max Pro M1'
1504
1828
  - regex: '(?:ASUS_)?(X01AD|ZB633KL)'
1505
1829
  model: 'ZenFone Max M2'
1506
1830
  - regex: '(?:ASUS_)?(?:Z00[AD]|Z008D|Z008|Z00AD[AB]?)'
@@ -1583,6 +1907,8 @@ Asus:
1583
1907
  model: 'ZenFone Zoom'
1584
1908
  - regex: '(?:ASUS_)?Z01QD'
1585
1909
  model: 'ROG Phone'
1910
+ - regex: '(?:ASUS_)?I001DA'
1911
+ model: 'ROG Phone 2'
1586
1912
 
1587
1913
  # general detections
1588
1914
  - regex: 'Asus(?:-|;)?([a-z0-9]+)'
@@ -1751,11 +2077,13 @@ Bluegood:
1751
2077
 
1752
2078
  # Blackview
1753
2079
  Blackview:
1754
- regex: '(BV([2456789]000|(5[58]|9[56])00)(?:[ _](?:PRO))?|(P10000(?:[ _](?:PRO))?)|omega[ _]pro|Alife[ _][PS]1|Heatwave|DM550)'
2080
+ regex: '(BV([2456789]000|(5[58]|9[56])00)(?:[ _](?:PRO))?|(P10000(?:[ _](?:PRO))?)|omega[ _]pro|Alife[ _][PS]1|Heatwave|DM550|BV9700Pro)'
1755
2081
  device: 'smartphone'
1756
2082
  models:
1757
2083
  - regex: '(BV6000S)'
1758
2084
  model: '$1'
2085
+ - regex: '(BV9700)Pro'
2086
+ model: '$1 Pro'
1759
2087
  - regex: 'BV9000Pro-F'
1760
2088
  model: 'BV9000 Pro F'
1761
2089
  - regex: '(BV([48]000|9[56]00))Pro'
@@ -1860,27 +2188,91 @@ Brondi:
1860
2188
  model: 'SURFING TAB $1'
1861
2189
  device: 'tablet'
1862
2190
 
2191
+ # VGO TEL
2192
+ VGO TEL:
2193
+ regex: 'Venture V8'
2194
+ device: 'smartphone'
2195
+ models:
2196
+ - regex: 'Venture V8'
2197
+ model: 'Venture V8'
2198
+
1863
2199
  # Vivo
1864
2200
  Vivo:
1865
- regex: '((?:VIV-|BBG-)?vivo)|V1813BA|V1818T|V1731CA|V1809T|V1813T'
2201
+ regex: '((?:VIV-|BBG-)?vivo)|V1813BA|V1818T|V1731CA|V1809T|V1813T|V1818A'
1866
2202
  device: 'smartphone'
1867
2203
  models:
1868
- - regex: '(?:VIV-|BBG-)?vivo[ _]1601 Build'
2204
+ - regex: '(?:VIV-|BBG-)?vivo[ _]1601[);/ ]'
1869
2205
  model: 'V5'
1870
2206
  - regex: 'V1813BA'
1871
2207
  model: 'Z3'
2208
+ - regex: 'Vivo ONE'
2209
+ model: 'One'
2210
+ - regex: 'X9Plus'
2211
+ model: 'X9 Plus'
2212
+ - regex: 'X20Plus'
2213
+ model: 'X20 Plus'
1872
2214
  - regex: 'V1809T'
1873
2215
  model: 'X23'
1874
- - regex: 'V1818T'
2216
+ - regex: 'V1818[AT]|vivo 181[45]'
1875
2217
  model: 'Y93'
1876
2218
  - regex: 'V1813T'
1877
2219
  model: 'Y97'
1878
2220
  - regex: 'V1731CA'
1879
2221
  model: 'Y73'
1880
- - regex: 'vivo 1816'
2222
+ - regex: 'vivo 18(16|20)'
1881
2223
  model: 'Y91i'
1882
- - regex: 'vivo 1817'
2224
+ - regex: 'vivo 1606'
2225
+ model: 'Y53i'
2226
+ - regex: 'vivo 1603'
2227
+ model: 'Y55l'
2228
+ - regex: 'vivo 1609'
2229
+ model: 'V5 Lite'
2230
+ - regex: 'vivo 1610'
2231
+ model: 'Y55s'
2232
+ - regex: 'vivo 1611'
2233
+ model: 'V5 Plus'
2234
+ - regex: 'vivo 181[17]'
1883
2235
  model: 'Y91'
2236
+ - regex: 'vivo (1713|1612)'
2237
+ model: 'V5s'
2238
+ - regex: 'vivo 1714'
2239
+ model: 'Y69'
2240
+ - regex: 'vivo 1716'
2241
+ model: 'V7 Plus'
2242
+ - regex: 'vivo 1718'
2243
+ model: 'V7'
2244
+ - regex: 'vivo 1719'
2245
+ model: 'Y65'
2246
+ - regex: 'vivo 1723'
2247
+ model: 'V9'
2248
+ - regex: 'vivo 1726'
2249
+ model: 'Y83 Pro'
2250
+ - regex: 'vivo 1721'
2251
+ model: 'X20'
2252
+ - regex: 'vivo 1724'
2253
+ model: 'Y71'
2254
+ - regex: 'vivo 1725'
2255
+ model: 'X21'
2256
+ - regex: 'vivo 1727'
2257
+ model: 'V9 Youth'
2258
+ - regex: 'vivo 1801'
2259
+ model: 'Y71i'
2260
+ - regex: 'vivo 1804'
2261
+ model: 'V11 Pro'
2262
+ - regex: 'vivo 1805'
2263
+ model: 'Nex'
2264
+ - regex: 'vivo 1806'
2265
+ model: 'V11i'
2266
+ - regex: 'vivo 1807'
2267
+ model: 'Y95'
2268
+ - regex: 'vivo 180([38]|8i)'
2269
+ model: 'Y81'
2270
+ - regex: 'vivo 1818'
2271
+ model: 'V15 Pro'
2272
+ - regex: 'vivo 1902'
2273
+ model: 'Y17'
2274
+ - regex: 'vivo 1909'
2275
+ model: 'V17 Pro'
1884
2276
  - regex: 'vivo 1812'
1885
2277
  model: 'Y81i'
1886
2278
  - regex: '(?:VIV-|BBG-)?vivo[ _]([^/;]+) Build'
@@ -1915,8 +2307,8 @@ Beeline:
1915
2307
  regex: 'Beeline'
1916
2308
  device: 'smartphone'
1917
2309
  models:
1918
- - regex: 'Beeline_Pro_6'
1919
- model: 'Pro 6'
2310
+ - regex: 'Beeline[_ ]Pro[_ ]([26])'
2311
+ model: 'Pro $1'
1920
2312
  - regex: 'Tab (Fast|Pro)'
1921
2313
  model: 'Tab $1'
1922
2314
  device: 'tablet'
@@ -1995,230 +2387,297 @@ bq:
1995
2387
  regex: 'Aquaris|bq [^/;]+ Build|BQS-([0-9]{4})|(BQ(ru)?[_ -][0-9]{3,4})'
1996
2388
  device: 'smartphone'
1997
2389
  models:
1998
- - regex: 'BQ-5594'
1999
- model: 'Strike Power Max'
2000
- - regex: 'BQ(ru)?-5054'
2001
- model: 'Crystal'
2002
- - regex: 'BQ(ru)?-5503'
2003
- model: 'Nice 2'
2004
- - regex: 'BQ-5056'
2005
- model: 'Fresh'
2006
- - regex: 'BQ-5507L'
2007
- model: 'Iron Max'
2008
- - regex: 'BQ-5508L'
2009
- model: 'Next LTE'
2010
- - regex: 'BQ-5010G'
2011
- model: 'Spot'
2012
- - regex: 'BQ-5500L'
2013
- model: 'Advance'
2014
- - regex: 'BQ-5012L'
2015
- model: 'Rich'
2016
- - regex: 'BQ(ru)?-5022'
2017
- model: 'Bond'
2018
- - regex: 'BQ-5002G'
2019
- model: 'Fun'
2020
- - regex: 'BQ(S)?-(5701L|5060)'
2021
- model: 'Slim'
2022
- - regex: 'BQ-5511L'
2023
- model: 'Bliss'
2024
- - regex: 'BQ-5520L'
2025
- model: 'Silk'
2026
- - regex: 'BQ-5071'
2027
- model: 'Belief'
2028
- - regex: 'BQ-5301'
2029
- model: 'Strike View'
2030
- - regex: 'BQS-4007'
2031
- model: 'Valencia'
2032
- - regex: 'BQ-4501G'
2033
- model: 'Fox Easy'
2034
- - regex: 'BQ-5515(L)?'
2035
- model: 'Fast'
2036
- - regex: 'BQ(S)?-5045'
2037
- model: 'Fast'
2038
- - regex: 'BQ-5015L'
2039
- model: 'First'
2040
- - regex: 'BQ-5519L'
2041
- model: 'Fast Plus'
2042
- - regex: 'BQ(S)?-(6016L|5520)'
2043
- model: 'Mercury'
2390
+ - regex: 'BQ(ru)?-(5209L|5044)'
2391
+ model: 'Strike LTE'
2392
+ - regex: 'BQ(S|ru)?-(5070|6040L)'
2393
+ model: 'Magic'
2394
+ - regex: 'BQ-9011(G)?'
2395
+ model: 'Vision'
2396
+ device: 'tablet'
2397
+ - regex: 'BQ-8068L'
2398
+ model: 'Hornet Plus Pro'
2399
+ - regex: 'BQ-8067L'
2400
+ model: 'Hornet Plus'
2401
+ device: 'tablet'
2402
+ - regex: 'BQ-8052G'
2403
+ model: 'BQ-8052G'
2404
+ device: 'tablet'
2405
+ - regex: 'BQ-8041L'
2406
+ model: 'Art'
2407
+ device: 'tablet'
2408
+ - regex: 'BQ-7084G'
2409
+ model: 'Simple'
2410
+ device: 'tablet'
2411
+ - regex: 'BQ-7061G'
2412
+ model: 'Andros'
2413
+ device: 'tablet'
2414
+ - regex: 'BQ-7051G'
2415
+ model: 'Elba'
2416
+ device: 'tablet'
2417
+ - regex: 'BQ-7036L'
2418
+ model: 'Hornet'
2419
+ device: 'tablet'
2420
+ - regex: 'BQ-7022(G)?'
2421
+ model: 'Canion'
2422
+ device: 'tablet'
2423
+ - regex: 'BQ-7021G'
2424
+ model: 'Hit'
2425
+ device: 'tablet'
2426
+ - regex: 'BQ-7010G'
2427
+ model: 'Max'
2428
+ device: 'tablet'
2429
+ - regex: 'BQ-7006G'
2430
+ model: 'Union'
2431
+ device: 'tablet'
2432
+ - regex: 'BQ-7003'
2433
+ model: 'Jamaica'
2434
+ device: 'tablet'
2435
+ - regex: 'BQ-6200L|BQ-6000L'
2436
+ model: 'Aurora'
2044
2437
  - regex: 'BQ(ru)?[ -]6015L'
2045
2438
  model: 'Universe'
2439
+ - regex: 'BQ-6010G'
2440
+ model: 'Practic'
2046
2441
  - regex: 'BQ-6001L|BQ-6050'
2047
2442
  model: 'Jumbo'
2048
- - regex: 'BQ-5700L'
2049
- model: 'Space X'
2050
- - regex: 'BQ(ru)?-5201'
2051
- model: 'Space'
2052
- - regex: 'BQ(ru)?-(5209L|5044)'
2053
- model: 'Strike LTE'
2054
- - regex: 'BQ-4526|BQ-5004G'
2055
- model: 'Fox'
2056
- - regex: 'BQ(ru)?[- ]402[68]'
2057
- model: 'Up!'
2058
- - regex: 'BQ-(4585|5011G)'
2059
- model: 'Fox View'
2060
- - regex: 'BQS-5025'
2061
- model: 'High Way'
2062
- - regex: 'BQ-5008L'
2063
- model: 'Brave'
2064
- - regex: 'BQ-5052'
2065
- model: 'Sense'
2066
- - regex: 'BQ-5512L|BQ-5528L'
2067
- model: 'Strike Forward'
2068
- - regex: 'BQ-5003L'
2069
- model: 'Shark Pro'
2070
- - regex: 'BQ-5005L'
2071
- model: 'Intense'
2072
- - regex: 'BQ-5522'
2073
- model: 'Next'
2074
2443
  - regex: 'BQ-5707G'
2075
2444
  model: 'Next Music'
2445
+ - regex: 'BQ-5702'
2446
+ model: 'Spring'
2447
+ - regex: 'BQ-5700L'
2448
+ model: 'Space X'
2449
+ - regex: 'BQ-5594'
2450
+ model: 'Strike Power Max'
2076
2451
  - regex: 'BQ-5591'
2077
2452
  model: 'Jeans'
2078
- - regex: 'BQ-5009L'
2079
- model: 'Trend'
2080
- - regex: 'BQ-5300G'
2081
- model: 'Velvet View'
2082
- - regex: 'BQS-4701'
2083
- model: 'Venice'
2084
- - regex: 'BQS-4003'
2085
- model: 'Verona'
2453
+ - regex: 'BQ-5522'
2454
+ model: 'Next'
2455
+ - regex: 'BQ(ru)?-5521'
2456
+ model: 'Strike Power Max'
2457
+ - regex: 'BQ-5520L'
2458
+ model: 'Silk'
2459
+ - regex: 'BQ-5519L'
2460
+ model: 'Fast Plus'
2461
+ - regex: 'BQ-5517L'
2462
+ model: 'Twin Pro'
2463
+ - regex: 'BQ-5516L'
2464
+ model: 'Twin'
2086
2465
  - regex: 'BQS-5515'
2087
2466
  model: 'Wide'
2088
- - regex: 'BQS-5055'
2089
- model: 'Turbo Plus'
2467
+ - regex: 'BQ-5515(L)?'
2468
+ model: 'Fast'
2469
+ - regex: 'BQ-5512L|BQ-5528L'
2470
+ model: 'Strike Forward'
2471
+ - regex: 'BQ-5511L'
2472
+ model: 'Bliss'
2473
+ - regex: 'BQ(ru)?-5510'
2474
+ model: 'Strike Power Max 4G'
2475
+ - regex: 'BQ-5508L'
2476
+ model: 'Next LTE'
2477
+ - regex: 'BQ-5507L'
2478
+ model: 'Iron Max'
2479
+ - regex: 'BQ(ru)?-5504'
2480
+ model: 'Strike Selfie Max'
2481
+ - regex: 'BQ(ru)?-5503'
2482
+ model: 'Nice 2'
2483
+ - regex: 'BQS-5502'
2484
+ model: 'Hammer'
2485
+ - regex: 'BQS-5501'
2486
+ model: 'Kawasaki'
2090
2487
  - regex: 'BQS-5500'
2091
2488
  model: 'Vancouver'
2092
- - regex: 'BQ(ru)?[_ ]5590'
2093
- model: 'Spring'
2094
- - regex: 'BQ(ru)?-5035'
2095
- model: 'Velvet'
2096
- - regex: 'BQ(S|ru)?-(5070|6040L)'
2097
- model: 'Magic'
2098
- - regex: 'BQ-4001G'
2099
- model: 'Cool'
2489
+ - regex: 'BQ-5500L'
2490
+ model: 'Advance'
2491
+ - regex: 'BQ-5302G'
2492
+ model: 'Velvet 2'
2493
+ - regex: 'BQ-5301'
2494
+ model: 'Strike View'
2495
+ - regex: 'BQ-5300G'
2496
+ model: 'Velvet View'
2497
+ - regex: 'BQ(ru)?-5211|BQS-5020'
2498
+ model: 'Strike'
2499
+ - regex: 'BQ-5206L'
2500
+ model: 'Balance'
2501
+ - regex: 'BQ(ru)?-5204|BQS-5050'
2502
+ model: 'Strike Selfie'
2503
+ - regex: 'BQ(ru)?-5203'
2504
+ model: 'Vision'
2100
2505
  - regex: 'BQ(ru)?-5202'
2101
2506
  model: 'Space Lite'
2102
- - regex: 'BQ(ru)?-5037|BQ-5514L'
2103
- model: 'Strike Power 4G'
2104
- - regex: 'BQ(ru)?-5510'
2105
- model: 'Strike Power Max 4G'
2507
+ - regex: 'BQ(ru)?-5201'
2508
+ model: 'Space'
2509
+ - regex: 'BQ-5082'
2510
+ model: 'Sense 2'
2511
+ - regex: 'BQ-5071'
2512
+ model: 'Belief'
2513
+ - regex: 'BQS-5065|BQ-5340'
2514
+ model: 'Choice'
2106
2515
  - regex: 'BQ(ru)?-5059|BQ-5514G'
2107
2516
  model: 'Strike Power'
2108
- - regex: 'BQ(ru)?-4072'
2109
- model: 'Strike Mini'
2110
- - regex: 'BQ(ru)?-5521'
2111
- model: 'Strike Power Max'
2112
2517
  - regex: 'BQ-5058'
2113
2518
  model: 'Strike Power Easy'
2114
- - regex: 'BQ-6200L|BQ-6000L'
2115
- model: 'Aurora'
2116
- - regex: 'BQ(ru)?-5000'
2117
- model: 'Tokyo'
2118
- - regex: 'BQ-6010G'
2119
- model: 'Practic'
2120
- - regex: 'BQ(ru)?-5204|BQS-5050'
2121
- model: 'Strike Selfie'
2122
- - regex: 'BQ(ru)?-5504'
2123
- model: 'Strike Selfie Max'
2124
2519
  - regex: 'BQ(ru)?-5057'
2125
2520
  model: 'Strike 2'
2126
- - regex: 'BQ(ru)?-5203'
2127
- model: 'Vision'
2128
- - regex: 'BQ(ru)?-5211|BQS-5020'
2129
- model: 'Strike'
2521
+ - regex: 'BQ-5056|BQS-5030'
2522
+ model: 'Fresh'
2523
+ - regex: 'BQS-5055'
2524
+ model: 'Turbo Plus'
2525
+ - regex: 'BQ(ru)?-5054'
2526
+ model: 'Crystal'
2527
+ - regex: 'BQ-5052'
2528
+ model: 'Sense'
2529
+ - regex: 'BQ(S)?-5045'
2530
+ model: 'Fast'
2531
+ - regex: 'BQ(ru)?-5037|BQ-5514L'
2532
+ model: 'Strike Power 4G'
2533
+ - regex: 'BQ(ru)?-5035'
2534
+ model: 'Velvet'
2130
2535
  - regex: 'BQ(ru)?-5033'
2131
2536
  model: 'Shark'
2132
- - regex: 'BQ-4077'
2133
- model: 'Shark Mini'
2134
2537
  - regex: 'BQ-5032'
2135
2538
  model: 'Element'
2136
- - regex: 'BQ-5082'
2137
- model: 'Sense 2'
2138
- - regex: 'BQS-5065|BQ-5340'
2139
- model: 'Choice'
2140
- - regex: 'BQ-5702'
2141
- model: 'Spring'
2142
- - regex: 'BQ-5302G'
2143
- model: 'Velvet 2'
2144
- - regex: 'BQ-5001L'
2145
- model: 'Contact'
2539
+ - regex: 'BQS-5025'
2540
+ model: 'High Way'
2541
+ - regex: 'BQ(ru)?-5022'
2542
+ model: 'Bond'
2543
+ - regex: 'BQ-5015L'
2544
+ model: 'First'
2545
+ - regex: 'BQ-5012L'
2546
+ model: 'Rich'
2547
+ - regex: 'BQS-5011'
2548
+ model: 'Monte Carlo'
2549
+ - regex: 'BQ-5010G'
2550
+ model: 'Spot'
2551
+ - regex: 'BQS-5010'
2552
+ model: 'Prague'
2553
+ - regex: 'BQ-5009L'
2554
+ model: 'Trend'
2555
+ - regex: 'BQS-500[59]'
2556
+ model: 'Sydney'
2557
+ - regex: 'BQ-5008L'
2558
+ model: 'Brave'
2146
2559
  - regex: 'BQ-5007L'
2147
2560
  model: 'Iron'
2148
- - regex: 'BQ-5516L'
2149
- model: 'Twin'
2150
- - regex: 'BQ-5517L'
2151
- model: 'Twin Pro'
2152
- - regex: 'BQ-5206L'
2153
- model: 'Balance'
2154
- - regex: 'Aquaris M8'
2155
- model: 'Aquaris M8'
2156
- device: 'tablet'
2157
- - regex: 'BQ-7084G'
2158
- model: 'Simple'
2159
- device: 'tablet'
2160
- - regex: 'BQ-7021G'
2161
- model: 'Hit'
2162
- device: 'tablet'
2163
- - regex: 'BQ-8067L'
2164
- model: 'Hornet Plus'
2165
- device: 'tablet'
2166
- - regex: 'BQ-7036L'
2167
- model: 'Hornet'
2168
- device: 'tablet'
2169
- - regex: 'BQ-9011(G)?'
2170
- model: 'Vision'
2171
- device: 'tablet'
2172
- - regex: 'BQ-7061G'
2173
- model: 'Andros'
2174
- device: 'tablet'
2561
+ - regex: 'BQS-5006'
2562
+ model: 'Los Angeles'
2563
+ - regex: 'BQ-5005L'
2564
+ model: 'Intense'
2565
+ - regex: 'BQS-5004'
2566
+ model: 'Paris'
2567
+ - regex: 'BQ-5003L'
2568
+ model: 'Shark Pro'
2569
+ - regex: 'BQ-5002G'
2570
+ model: 'Fun'
2571
+ - regex: 'BQS-5002'
2572
+ model: 'Colombo'
2573
+ - regex: 'BQ-5001L'
2574
+ model: 'Contact'
2575
+ - regex: 'BQS-5001'
2576
+ model: 'Milan'
2577
+ - regex: 'BQ(ru|S)?-5000'
2578
+ model: 'Tokyo'
2579
+ - regex: 'BQS-4800'
2580
+ model: 'Blade'
2581
+ - regex: 'BQS-4707'
2582
+ model: 'Montreal'
2583
+ - regex: 'BQS-4702'
2584
+ model: 'Оsaka'
2585
+ - regex: 'BQS-4701'
2586
+ model: 'Venice'
2587
+ - regex: 'BQ-(?:4585|5011G)'
2588
+ model: 'Fox View'
2589
+ - regex: 'BQS-4570'
2590
+ model: 'Drive'
2591
+ - regex: 'BQS-4560'
2592
+ model: 'Golf'
2593
+ - regex: 'BQS-4555'
2594
+ model: 'Turbo'
2595
+ - regex: 'BQS-4550'
2596
+ model: 'Richmond'
2597
+ - regex: 'BQ-(?:4526|5004G)'
2598
+ model: 'Fox'
2599
+ - regex: 'BQS-4525'
2600
+ model: 'Vienna'
2601
+ - regex: 'BQS-4516'
2602
+ model: 'Singapore'
2603
+ - regex: 'BQS-4515'
2604
+ model: 'Moscow'
2605
+ - regex: 'BQS-4510'
2606
+ model: 'Florence'
2607
+ - regex: 'BQS-4505'
2608
+ model: 'Santiago'
2609
+ - regex: 'BQS-4503'
2610
+ model: 'Dubai'
2611
+ - regex: 'BQS-4502'
2612
+ model: 'Kingston'
2613
+ - regex: 'BQS-4501 Bristol'
2614
+ model: 'Bristol'
2615
+ - regex: 'BQ-4501G'
2616
+ model: 'Fox Easy'
2617
+ - regex: 'BQ-4077'
2618
+ model: 'Shark Mini'
2619
+ - regex: 'BQ(ru)?-4072'
2620
+ model: 'Strike Mini'
2621
+ - regex: 'BQ(ru)?[- ]402[68]'
2622
+ model: 'Up!'
2623
+ - regex: 'BQS-4010'
2624
+ model: 'Aspen'
2625
+ - regex: 'BQS-4009'
2626
+ model: 'Orleans'
2627
+ - regex: 'BQS-4008'
2628
+ model: 'Shanghai'
2629
+ - regex: 'BQS-4007'
2630
+ model: 'Valencia'
2631
+ - regex: 'BQS-4005'
2632
+ model: 'Seoul'
2633
+ - regex: 'BQS-4004'
2634
+ model: 'Dusseldorf'
2635
+ - regex: 'BQS-4003'
2636
+ model: 'Verona'
2637
+ - regex: 'BQ-4001G'
2638
+ model: 'Cool'
2639
+ - regex: 'BQS-4001'
2640
+ model: 'Oxford'
2641
+ - regex: 'BQS-3510'
2642
+ model: 'Aspen Mini'
2643
+ - regex: 'BQS-3503'
2644
+ model: 'Bombay'
2175
2645
  - regex: 'BQ-1085L'
2176
2646
  model: 'Hornet Max Pro'
2177
2647
  device: 'tablet'
2178
2648
  - regex: 'BQ-1084L'
2179
2649
  model: 'Hornet Max'
2180
2650
  device: 'tablet'
2181
- - regex: 'BQ-8068L'
2182
- model: 'Hornet Plus Pro'
2183
- - regex: 'BQ-7010G'
2184
- model: 'Max'
2185
- device: 'tablet'
2186
- - regex: 'BQ-7051G'
2187
- model: 'Elba'
2651
+ - regex: 'BQ-1083G'
2652
+ model: 'Armor Pro Plus'
2188
2653
  device: 'tablet'
2189
2654
  - regex: 'BQ-1082G'
2190
2655
  model: 'Armor Pro'
2191
2656
  device: 'tablet'
2192
- - regex: 'BQ-1083G'
2193
- model: 'Armor Pro Plus'
2194
- device: 'tablet'
2195
2657
  - regex: 'BQ-1077L'
2196
2658
  model: 'Armor Pro LTE'
2197
2659
  device: 'tablet'
2198
- - regex: 'BQ-7022(G)?'
2199
- model: 'Canion'
2200
- device: 'tablet'
2201
- - regex: 'BQ-8041L'
2202
- model: 'Art'
2203
- device: 'tablet'
2204
- - regex: 'BQ-7006G'
2205
- model: 'Union'
2660
+ - regex: 'BQ(ru)?-1057L'
2661
+ model: 'Passion'
2206
2662
  device: 'tablet'
2207
2663
  - regex: 'BQ-1051G'
2208
2664
  model: 'Corsika'
2209
2665
  device: 'tablet'
2210
- - regex: 'BQ-8052G'
2211
- model: 'BQ-8052G'
2212
- device: 'tablet'
2213
2666
  - regex: 'BQ-1050G'
2214
2667
  model: 'Hawaii'
2215
2668
  device: 'tablet'
2216
2669
  - regex: 'BQ-1008G'
2217
2670
  model: 'Grace'
2218
2671
  device: 'tablet'
2219
- - regex: 'BQ-7003'
2220
- model: 'Jamaica'
2672
+ - regex: 'Aquaris M8'
2673
+ model: 'Aquaris M8'
2221
2674
  device: 'tablet'
2675
+ - regex: 'BQ(ru)?[_ ]5590'
2676
+ model: 'Spring'
2677
+ - regex: 'BQ(S)?-(6016L|5520)'
2678
+ model: 'Mercury'
2679
+ - regex: 'BQ(S)?-(5701L|5060)'
2680
+ model: 'Slim'
2222
2681
  - regex: '(BQ-7850|BQ-700[12]G|BQ-8002G|BQ-905[12]G|BQ-9702G|BQ-7056G)'
2223
2682
  model: '$1'
2224
2683
  device: 'tablet'
@@ -2243,9 +2702,15 @@ bq:
2243
2702
  - regex: 'BQ-7050G'
2244
2703
  model: 'Malta'
2245
2704
  device: 'tablet'
2705
+ - regex: 'BQ-7000G'
2706
+ model: 'Сharm'
2707
+ device: 'tablet'
2246
2708
  - regex: 'BQ-7005G'
2247
2709
  model: 'Maui'
2248
2710
  device: 'tablet'
2711
+ - regex: 'BQ-7098G'
2712
+ model: 'Armor Power'
2713
+ device: 'tablet'
2249
2714
  - regex: 'BQ-1007'
2250
2715
  model: 'Necker'
2251
2716
  device: 'tablet'
@@ -2314,6 +2779,16 @@ Casio:
2314
2779
  - regex: 'C811 4G[);/ ]'
2315
2780
  model: "G'zOne Commando 4G LTE"
2316
2781
 
2782
+ # Casper
2783
+ Casper:
2784
+ regex: 'CASPER_|VIA_(G4|M4|P2|V8C)'
2785
+ device: 'smartphone'
2786
+ models:
2787
+ - regex: 'CASPER_VIA_(E2|M[13]|V[69])'
2788
+ model: 'VIA $1'
2789
+ - regex: 'VIA_(G4|M4|P2|V8C)'
2790
+ model: 'VIA $1'
2791
+
2317
2792
  # Cat
2318
2793
  Cat:
2319
2794
  regex: 'Cat ?(tablet|stargate|nova)|B15Q'
@@ -2518,7 +2993,7 @@ ConCorde:
2518
2993
 
2519
2994
  # Condor
2520
2995
  Condor:
2521
- regex: '(?:PGN\-?[456][012][0-9]|PHS\-601|Plume L1)[;/) ]|CTAB[^/;]+ Build'
2996
+ regex: 'Allure M3|(?:PGN\-?[456][012][0-9]|PHS\-601|Plume L1)[;/) ]|CTAB[^/;]+ Build'
2522
2997
  device: 'smartphone'
2523
2998
  models:
2524
2999
  - regex: 'CTAB([^/;]+) Build'
@@ -2539,6 +3014,8 @@ Condor:
2539
3014
  model: 'C8S'
2540
3015
  - regex: 'PGN\-?506'
2541
3016
  model: 'C7'
3017
+ - regex: 'Allure M3'
3018
+ model: 'Allure M3'
2542
3019
  - regex: 'PGN\-?507'
2543
3020
  model: 'Allure A9'
2544
3021
  - regex: 'PGN\-?508'
@@ -2617,6 +3094,14 @@ Coolpad:
2617
3094
  - regex: '(?:YL-)?Coolpad[ _\-]?([a-z0-9\-]+)'
2618
3095
  model: '$1'
2619
3096
 
3097
+ # Clarmin
3098
+ Clarmin:
3099
+ regex: 'Clarmin'
3100
+ device: 'smartphone'
3101
+ models:
3102
+ - regex: 'Clarmin_B6'
3103
+ model: 'B6'
3104
+
2620
3105
  # Cricket
2621
3106
  Cricket:
2622
3107
  regex: 'Cricket-([a-z0-9]+)'
@@ -2647,11 +3132,13 @@ Crosscall:
2647
3132
 
2648
3133
  # Cube
2649
3134
  Cube:
2650
- regex: '(<!myPhone ?)Cube|(U[0-9]+GT|K8GT)'
3135
+ regex: '(<!myPhone ?)Cube|(U[0-9]+GT|K8GT)|(T8-PLUSM?S?)[);/ ]'
2651
3136
  device: 'tablet'
2652
3137
  models:
2653
3138
  - regex: 'U27GT'
2654
3139
  model: 'Talk 8'
3140
+ - regex: 'T8-PLUSM?S?[);/ ]'
3141
+ model: 'T8 Ultimate'
2655
3142
  - regex: 'U55GT'
2656
3143
  model: 'Talk 79'
2657
3144
  - regex: 'U65GT'
@@ -2689,7 +3176,7 @@ CUBOT:
2689
3176
  model: 'Power'
2690
3177
  - regex: 'CUBOT_X18_Plus'
2691
3178
  model: 'X18 Plus'
2692
- - regex: 'CUBOT[ _](H3|J3|P7|P20|C6W|X18)'
3179
+ - regex: 'CUBOT[ _](A5|C6W|H3|J3|P7|P20|R9|R11|X18)'
2693
3180
  model: '$1'
2694
3181
  - regex: 'CUBOT ([^;/]+) Build'
2695
3182
  model: '$1'
@@ -2774,6 +3261,12 @@ Dell:
2774
3261
  models:
2775
3262
  - regex: 'XCD35'
2776
3263
  model: 'XCD35'
3264
+ - regex: '(?:Dell )?Venue Build'
3265
+ model: 'Venue'
3266
+ device: 'smartphone'
3267
+ - regex: 'Dell; Venue Pro'
3268
+ model: 'Venue Pro'
3269
+ device: 'smartphone'
2777
3270
  - regex: '(?:Dell )?(Streak|Venue) ?([^/;]*) Build'
2778
3271
  model: '$1 $2'
2779
3272
  device: 'tablet'
@@ -2797,7 +3290,7 @@ Desay:
2797
3290
 
2798
3291
  # DEXP
2799
3292
  DEXP:
2800
- regex: 'DEXP|(?:Ursus|Ixion)[ _]([^;/)]+)|H135[ _]Build'
3293
+ regex: 'DEXP|(?:Ursus|Ixion)[ _]([^;/)]+)|H135[ _]Build|(BL150|BS155|BS160|BS550|BS650)[);/ ]'
2801
3294
  device: 'smartphone'
2802
3295
  models:
2803
3296
 
@@ -2811,7 +3304,8 @@ DEXP:
2811
3304
  - regex: 'H135[ _]Build'
2812
3305
  model: 'Atlas'
2813
3306
  device: 'desktop'
2814
-
3307
+ - regex: '(BL150|BS155|BS160|BS550|BS650)[);/ ]'
3308
+ model: '$1'
2815
3309
  - regex: 'DEXP[ _]([^;/]+) Build'
2816
3310
  model: '$1'
2817
3311
  - regex: 'DEXP[ _]([^);/]+)[);/ ]'
@@ -2862,7 +3356,7 @@ Digiland:
2862
3356
 
2863
3357
  # Digma
2864
3358
  Digma:
2865
- regex: 'Digma[_ ]([^;/]+) Build|HIT HT707[10]MG|CITI 1902 3G|(CITI (?:[A-Z0-9]+) 3G) C[ST]500[67]PG|iDrQ10 3G|iDxD8 3G|iDnD7|HIT 4G HT7074ML|IDX5|(iDx10|iDx7)|MVM900H(?:WZ|C)|MVM908HCZ|iDxD10 3G|(iDxD[45]|iDxQ5)|iDxD7[_ ]3G|PS604M|PT452E|Linx A400 3G LT4001PG|Linx C500 3G LT5001PG|Linx PS474S|NS6902QL|NS9797MG|((?:Optima|Platina|Plane)[ _](?:[EM])?(?:[0-9\.ST]+|Prime)(?:[ _][43]G)?)|(VOX[ _](?:[0-9\.A-Z]+)[_ ][43]G)'
3359
+ regex: 'Digma[_ ]([^;/]+) Build|HIT HT707[10]MG|CITI 1902 3G|(CITI (?:[A-Z0-9]+) 3G) C[ST]500[67]PG|iDrQ10 3G|iDxD8 3G|iDnD7|HIT 4G HT7074ML|IDX5|(iDx10|iDx7)|MVM900H(?:WZ|C)|MVM908HCZ|iDxD10 3G|(iDxD[45]|iDxQ5)|iDxD7[_ ]3G|PS604M|PT452E|Linx A400 3G LT4001PG|Linx C500 3G LT5001PG|Linx PS474S|LS504[01]PL|LT40(47|54)MG|LS405[01]MG|LS5053ML|LT5048MG|LT5052ML|LT4049PG|NS6902QL|NS9797MG|((?:Optima|Platina|Plane)[ _](?:[EM])?(?:[0-9\.ST]+|Prime)(?:[ _][43]G)?)|(VOX[ _](?:[0-9\.A-Z]+)[_ ][43]G)'
2866
3360
  device: 'smartphone'
2867
3361
  models:
2868
3362
  - regex: 'HIT HT707[10]MG'
@@ -2877,6 +3371,26 @@ Digma:
2877
3371
  model: '$1'
2878
3372
  - regex: 'PS604M'
2879
3373
  model: 'Linx 6.0'
3374
+ - regex: 'LT4049PG'
3375
+ model: 'Linx Atom 3G'
3376
+ - regex: 'LT5048MG'
3377
+ model: 'Linx Joy 3G'
3378
+ - regex: 'LT5052ML'
3379
+ model: 'Linx Base 4G'
3380
+ - regex: 'LT4047MG'
3381
+ model: 'Linx Alfa 3G'
3382
+ - regex: 'LS4050MG'
3383
+ model: 'Linx X1 3G'
3384
+ - regex: 'LS4051MG'
3385
+ model: 'Linx X1 Pro 3G'
3386
+ - regex: 'LT4054MG'
3387
+ model: 'Linx Argo 3G'
3388
+ - regex: 'LS5041PL'
3389
+ model: 'Linx Trix 4G'
3390
+ - regex: 'LS5040PL'
3391
+ model: 'Linx Rage 4G'
3392
+ - regex: 'LS5053ML'
3393
+ model: 'Linx Pay 4G'
2880
3394
  - regex: '(Linx A400 3G) LT4001PG'
2881
3395
  model: '$1'
2882
3396
  - regex: '(Linx C500 3G) LT5001PG'
@@ -2940,7 +3454,7 @@ DoCoMo:
2940
3454
 
2941
3455
  # Doogee
2942
3456
  Doogee:
2943
- regex: 'DOOGEE[ _-]|Valencia2_Y100pro|X5max(?:[_ ]PRO)?|(BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS2?)[ -_](DG[0-9]+C?)[);/ ]|BL[579]000[);/ ]|BL12000|BL5500[_ ]Lite'
3457
+ regex: 'DOOGEE[ _-]|Valencia2_Y100pro|X5max(?:[_ ]PRO)?|(KISSME|BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|VOYAGER2?|TITANS2?)[ -_](DG[0-9]+C?)[);/ ]|BL[579]000[);/ ]|BL12000|BL5500[_ ]Lite'
2944
3458
  device: 'smartphone'
2945
3459
  models:
2946
3460
  - regex: 'Valencia2_Y100pro'
@@ -2953,6 +3467,8 @@ Doogee:
2953
3467
  model: 'BL5500 Lite'
2954
3468
  - regex: 'BL12000'
2955
3469
  model: 'BL12000'
3470
+ - regex: 'KISSME-DG580'
3471
+ model: 'Kissme DG580'
2956
3472
  - regex: '(X5max(?:[_ ]PRO)?)'
2957
3473
  model: '$1'
2958
3474
  - regex: '(?:DOOGEE[ _-])?(BIGBOY|COLLO[23]?|DAGGER|DISCOVERY2?|FIND|HOTWIND|LATTE|MAX|MINT|MOON|PIXELS|RAINBOX|TURBO|VALENCIA|Valencia2_Y100pro|VOYAGER2?|TITANS2?)[ -_](DG[0-9]+C?)[);/ ]'
@@ -3147,6 +3663,17 @@ Evercoss:
3147
3663
  - regex: 'A75A\*'
3148
3664
  model: 'A75A Star'
3149
3665
 
3666
+ # Eurostar
3667
+ Eurostar:
3668
+ regex: '(ET7002C-H12|Onyx-[13]S)[/;) ]'
3669
+ device: 'smartphone'
3670
+ models:
3671
+ - regex: 'Onyx-([13]S)[/;) ]'
3672
+ model: 'Onyx $1'
3673
+ - regex: 'ET7002C-H12[/;) ]'
3674
+ model: 'ePad 4S'
3675
+ device: 'tablet'
3676
+
3150
3677
  # Eton
3151
3678
  Eton:
3152
3679
  regex: 'Eton'
@@ -3169,6 +3696,12 @@ Rikomagic:
3169
3696
  device: 'tv'
3170
3697
  model: 'MK$1'
3171
3698
 
3699
+ # Rinno
3700
+ Rinno:
3701
+ regex: 'Rinno (R(?:400|505))'
3702
+ device: 'smartphone'
3703
+ model: '$1'
3704
+
3172
3705
  # Riviera
3173
3706
  Riviera:
3174
3707
  regex: 'RIVIERA '
@@ -3185,7 +3718,7 @@ Senseit:
3185
3718
 
3186
3719
  # Sony & Sony Ericsson (combined as they are mixed up)
3187
3720
  Sony:
3188
- regex: 'Sony(?: ?Ericsson)?|SGP|Xperia|([456]0[12]|701)SO|C1[569]0[45]|C2[01]0[45]|C230[45]|C530[236]|C550[23]|C6[56]0[236]|C6616|C68(?:0[26]|[34]3)|C69(?:0[236]|16|43)|D200[45]|D21(?:0[45]|14)|D22(?:0[236]|12|43)|D230[2356]|D240[36]|D25(?:02|33)|D510[236]|D530[36]|D5316|D5322|D5503|D58[03]3|D65(?:0[23]|43|63)|D66[03458]3|D66[14]6|D6708|E(?:20[0345]3|2006|210[45]|2115|2124|230[36]|2312|23[356]3|530[36]|53[3456]3|5506|55[356]3|56[46305][36]|58[02]3|65[35]3|66[0358]3|68[358]3)|F311[12356]|F331[13]|F321[12356]|F5[13]21|F5122|F813[12]|F833[12]|G312[135]|G311[26]|G322[136]|G3212|G331[123]|G3412|G3416|G342[136]|G823[12]|G834[123]|G8[14]4[12]|H(?:3113|3123|3133|3213|3223|3311|3321|4113|4133|4213|4233|4311|4331|4413|4433|82[167]6|83[12]4|8416|9436)|(?:WT|LT|SO|ST|SK|MK)[0-9]+[a-z]+[0-9]*(?: Build|\))|X?L39H|XM50[ht]|W960|portalmmm/2\.0 K|S3[69]h|SOL2[246]|SOV3[1234567]|X10[ia]v?|E1[05][ai]v?|MT[0-9]{2}[a-z]? Build|SO-0(?:[12]C|[345]D|[234]E|[1235]F|[1234]G|[134]H|[1234]J|2K)|R800[aix]|J9110|I4293|H9493|H8296|H8166|H4493|LiveWithWalkman'
3721
+ regex: 'Sony(?: ?Ericsson)?|SGP|Xperia|([456]0[12]|701)SO|C1[569]0[45]|C2[01]0[45]|C230[45]|C530[236]|C550[23]|C6[56]0[236]|C6616|C68(?:0[26]|[34]3)|C69(?:0[236]|16|43)|D200[45]|D21(?:0[45]|14)|D22(?:0[236]|12|43)|D230[2356]|D240[36]|D25(?:02|33)|D510[236]|D530[36]|D5316|D5322|D5503|D58[03]3|D65(?:0[23]|43|63)|D66[03458]3|D66[14]6|D6708|E(?:20[0345]3|2006|210[45]|2115|2124|230[36]|2312|23[356]3|530[36]|53[3456]3|5506|55[356]3|56[46305][36]|58[02]3|65[35]3|66[0358]3|68[358]3)|I[34]312|I4332|F311[12356]|F331[13]|F321[12356]|F5[13]21|F5122|F813[12]|F833[12]|G312[135]|G311[26]|G322[136]|G3212|G331[123]|G3412|G3416|G342[136]|G823[12]|G834[123]|G8[14]4[12]|H(?:3113|3123|3133|3213|3223|3311|3321|4113|4133|4213|4233|4311|4331|4413|4433|82[167]6|83[12]4|8416|9436)|(?:WT|LT|SO|ST|SK|MK)[0-9]+[a-z]+[0-9]*(?: Build|\))|X?L39H|XM50[ht]|W960|portalmmm/2\.0 K|S3[69]h|SOL2[246]|SOV3[1234567]|X10[ia]v?|E1[05][ai]v?|MT[0-9]{2}[a-z]? Build|SO-0(?:[12]C|[345]D|[234]E|[1235]F|[1234]G|[134]H|[1234]J|[12]K)|R800[aix]|J9110|J81[17]0|I[34]113|I3[12]23|I42[19]3|H9493|H8296|H8166|H4493|LiveWithWalkman'
3189
3722
  device: 'smartphone'
3190
3723
  models:
3191
3724
  # SONY ERICSSON: explicit smartphone models
@@ -3314,9 +3847,11 @@ Sony:
3314
3847
  # SONY: explicit smartphone models
3315
3848
  - regex: 'SO-04G'
3316
3849
  model: 'Xperia A4'
3317
- - regex: '(?:Sony(?:Ericsson)?)?I4293'
3850
+ - regex: '(?:Sony(?:Ericsson)?)?I(?:4113|31[12]3)'
3851
+ model: 'Xperia 10'
3852
+ - regex: '(?:Sony(?:Ericsson)?)?I(?:42[19]3|3223)'
3318
3853
  model: 'Xperia 10 Plus'
3319
- - regex: '(?:Sony(?:Ericsson)?)?J9110'
3854
+ - regex: '(?:Sony(?:Ericsson)?)?J(?:9110|81[17]0)'
3320
3855
  model: 'Xperia 1'
3321
3856
  - regex: '(?:Sony(?:Ericsson)?)?LT22i'
3322
3857
  model: 'Xperia P'
@@ -3397,6 +3932,10 @@ Sony:
3397
3932
  model: 'Xperia L2'
3398
3933
  - regex: 'H43[13]1'
3399
3934
  model: 'Xperia L2 Dual'
3935
+ - regex: 'I3312'
3936
+ model: 'Xperia L3'
3937
+ - regex: 'I43[13]2'
3938
+ model: 'Xperia L3 Dual'
3400
3939
  - regex: '(?:Sony(?:Ericsson)?)?D2302'
3401
3940
  model: 'Xperia M2 Dual'
3402
3941
  - regex: '(?:Sony(?:Ericsson)?)?D230[356]'
@@ -3469,7 +4008,7 @@ Sony:
3469
4008
  model: 'Xperia XA Ultra Dual'
3470
4009
  - regex: '(?:Sony(?:Ericsson)?)?F833[12]|SOV34|601SO|SO-01J'
3471
4010
  model: 'Xperia XZ'
3472
- - regex: '(?:Sony(?:Ericsson)?)?(?:701SO|SOV36|G834[123])'
4011
+ - regex: '(?:Sony(?:Ericsson)?)?(?:701SO|SOV36|G834[123]|SO-01K)'
3473
4012
  model: 'Xperia XZ1'
3474
4013
  - regex: '(?:Sony(?:Ericsson)?)?G8441|SO-02K'
3475
4014
  model: 'Xperia XZ1 Compact'
@@ -3658,6 +4197,17 @@ eTouch:
3658
4197
  device: 'smartphone'
3659
4198
  model: '$1'
3660
4199
 
4200
+ # Etuline
4201
+ Etuline:
4202
+ regex: '(ETL-S(?:3520|4521|5042|5084|6022)|ETL-T(?:752G|882G|9[78]0))[/); ]'
4203
+ device: 'smartphone'
4204
+ models:
4205
+ - regex: '(ETL-S(?:[^/); ]+))'
4206
+ model: '$1'
4207
+ - regex: '(ETL-T(?:[^/); ]+))'
4208
+ device: 'tablet'
4209
+ model: '$1'
4210
+
3661
4211
  # Storex
3662
4212
  Storex:
3663
4213
  regex: "eZee[^a-z]*Tab ?([^;/]*) Build|STOREX LinkBox"
@@ -3687,6 +4237,8 @@ Evolio:
3687
4237
  models:
3688
4238
  - regex: 'M4MAGIC'
3689
4239
  model: 'M4 Magic'
4240
+ - regex: 'Evolio_M5Pro'
4241
+ model: 'M5 Pro'
3690
4242
  - regex: 'Evolio[ _](M6|S4 Cobalt|S5|X10|Yuppi)'
3691
4243
  model: '$1'
3692
4244
 
@@ -3811,6 +4363,12 @@ Fairphone:
3811
4363
  device: 'smartphone'
3812
4364
  model: '$1'
3813
4365
 
4366
+ # Famoco
4367
+ Famoco:
4368
+ regex: '(FX[123]00)'
4369
+ device: 'smartphone'
4370
+ model: '$1'
4371
+
3814
4372
  # FiGO
3815
4373
  FiGO:
3816
4374
  regex: 'ATRIUM II F55L2|TRIO F40LT|EPIC F50G|Gravity X55L|Orion M50L|ULTRA M50G|M405B|VIRTUE3|F55L Build'
@@ -3930,8 +4488,10 @@ G-TiDE:
3930
4488
  models:
3931
4489
  - regex: 'Shining7'
3932
4490
  model: 'Shining 7'
3933
- - regex: 'G-TiDE_(A1|S3)'
4491
+ - regex: 'G-TiDE_(A1|S[34])'
3934
4492
  model: '$1'
4493
+ - regex: 'G-TiDE V6'
4494
+ model: 'V6'
3935
4495
  - regex: 'E(57|60|66|72|77)'
3936
4496
  model: '$1'
3937
4497
 
@@ -3992,6 +4552,9 @@ Ginzzu:
3992
4552
  models:
3993
4553
  - regex: 'GINZZU[_ ]?(S40[17]0|S4710|ST6040)'
3994
4554
  model: '$1'
4555
+ - regex: 'GINZZU[_ ]?(GT-7105)'
4556
+ model: '$1'
4557
+ device: 'tablet'
3995
4558
  - regex: '(RS6[12]D) ULTIMATE'
3996
4559
  model: '$1 Ultimate'
3997
4560
  - regex: '((?:RS(?:7[14]|81|9[67])D)|S50[45]0|S5120|S40[23]0|RS8502|RS9602|RS94D)[);/ ]'
@@ -3999,7 +4562,7 @@ Ginzzu:
3999
4562
 
4000
4563
  # Gionee
4001
4564
  Gionee:
4002
- regex: '(?:GIO-)?GIONEE[ _-]?[a-z0-9]+|(?:Dream_D1|V188S?|GN[0-9]{3,4}[a-z]?)[);/ ]|F103(?: Pro)? Build|P5 mini Build|M7 Power '
4565
+ regex: '(?:GIO-)?GIONEE[ _-]?[a-z0-9]+|(?:Dream_D1|V188S?|GN[0-9]{3,4}[a-z]?)[);/ ]|F103(?: Pro)? Build|P5 mini Build|P7 Max Build|M7 Power '
4003
4566
  device: 'smartphone'
4004
4567
  models:
4005
4568
  - regex: 'GN810[);/ ]'
@@ -4017,6 +4580,8 @@ Gionee:
4017
4580
  model: 'M7 Power'
4018
4581
  - regex: 'P5 mini Build'
4019
4582
  model: 'P5 mini'
4583
+ - regex: 'P7 Max Build'
4584
+ model: 'P7 Max'
4020
4585
  - regex: '(?:(?:GIO-)?GIONEE[ _-])?Dream_D1[);/ ]'
4021
4586
  model: 'Dream D1'
4022
4587
  - regex: '(?:GIO-)?GIONEE[ _-]([a-z0-9_-]+).*Android'
@@ -4104,7 +4669,7 @@ Goly:
4104
4669
 
4105
4670
  # Google
4106
4671
  Google:
4107
- regex: 'Nexus|GoogleTV|Glass|CrKey[^a-z0-9]|Pixel Build|Pixel (?:XL|C|[23]|[23] XL)'
4672
+ regex: 'Nexus|GoogleTV|Glass|CrKey[^a-z0-9]|Pixel(?: Build|\))|Pixel (?:XL|C|[23]|[23] XL)'
4108
4673
  device: 'smartphone'
4109
4674
  models:
4110
4675
  - regex: 'Glass'
@@ -4125,7 +4690,7 @@ Google:
4125
4690
  - regex: 'GoogleTV'
4126
4691
  device: 'tv'
4127
4692
  model: 'GoogleTV'
4128
- - regex: 'Pixel Build'
4693
+ - regex: 'Pixel(?: Build|\))'
4129
4694
  model: 'Pixel'
4130
4695
  - regex: 'Pixel XL'
4131
4696
  model: 'Pixel XL'
@@ -4257,6 +4822,17 @@ Hi-Level:
4257
4822
  device: 'tablet'
4258
4823
  model: 'HLV-T$1'
4259
4824
 
4825
+ # Hoffmann
4826
+ Hoffmann:
4827
+ regex: '(HOFFMANN|Neo[_ ]A[139]00)[);/ ]'
4828
+ device: 'smartphone'
4829
+ models:
4830
+ - regex: 'Neo[_ ](A[139]00)'
4831
+ model: 'Neo $1'
4832
+ - regex: 'HOFFMANN[ _]X[-_ ](Prime|Twist)'
4833
+ model: 'X $1'
4834
+
4835
+
4260
4836
  # Homtom
4261
4837
  Homtom:
4262
4838
  regex: 'Homtom|(?:HT[0-9]{1,2})(?: ?Pro)?[);/ ]'
@@ -4285,23 +4861,33 @@ Hoozo:
4285
4861
 
4286
4862
  # Huawei
4287
4863
  Huawei:
4288
- regex: '(HW-)?(?:Huawei|Ideos|Honor[ _]?|(?:(?:AGS|AGS2|ALE|ALP|AMN|ANE|ARE|ATH|ATU|AUM|BAC|BAH|BG2|BGO|BKK|BKL|BLA|BLL|BLN|BND|BTV|CAG|CAM|CAN|CAZ|CHC|CHE[12]?|CHM|CLT|CMR|COL|COR|CPN|CRO|CRR|CUN|DIG|DIG|DLI|DRA|DUA|DUB|DUK|EDI|ELE|EML|EVA|EVR|FDR|FIG|FLA|FRD|GRA|HMA|HRY|HWI|H[36]0|INE|JAT|JDN2|JKM|JMM|JSN|KIW|KOB|KSA|LDN|LLD|LND|LON|LUA|LYA|MAR|MHA|MRD|MYA|NEM|NEO|NXT|PAR|PCT|PIC|PLE|PLK|POT|PRA|RIO|RNE|RVL|SCC|SCL|SEA|SHT|SLA|SNE|STF|STK|TAG|TIT|TNY|TRT|VCE|VEN|VIE|VKY|VNS|VOG|VTR|WAS|YAL|G(?:527|620S|621|630|735)|Y(?:221|330|550|6[23]5))-(?:[A-Z]{0,2}[0-9]{1,4}[A-Z]{0,2}?)|H1711|U(?:8230|8500|8661|8665|8667|8800|8818|8860|9200|9508))[);/ ])|hi6210sft|HRY-LX1MEB'
4864
+ regex: '(HW-)?(?:Huawei|Ideos|Honor[ _]?|(?:(?:AGS|AGS2|ALE|ALP|AMN|ANE|ARE|ARS|ATH|ATU|AUM|BAC|BAH|BAH2|BG2|BGO|BKK|BKL|BLA|BLL|BLN|BND|BTV|CAG|CAM|CAN|CAZ|CHC|CHE[12]?|CHM|CLT|CMR|COL|COR|CPN|CRO|CRR|CUN|DIG|DIG|DLI|DRA|DUA|DUB|DUK|EDI|ELE|EML|EVA|EVR|FDR|FIG|FLA|FRD|GRA|HLK|HMA|HRY|HWI|H[36]0|INE|JAT|JDN|JDN2|JKM|JMM|JSN|KIW|KNT|KOB|KSA|LDN|LLD|LND|LON|LUA|LY[AO]|MAR|MHA|MRD|MYA|NCE|NEM|NEO|NXT|PAR|PCT|PIC|PLE|PLK|POT|PRA|RIO|RNE|RVL|SCC|SCL|SEA|SHT|SLA|SNE|STF|STK|TAG|TIT|TNY|TRT|VCE|VEN|VIE|VKY|VNS|VOG|VRD|VTR|WAS|YAL|G(?:527|620S|621|630|735)|Y(?:221|330|550|6[23]5))-(?:[A-Z]{0,2}[0-9]{1,4}[A-Z]{0,2}?)|H1711|U(?:8230|8500|8661|8665|8667|8800|8818|8860|9200|9508))[);/ ])|hi6210sft|HRY-LX1MEB|GEM-70[1-3]L|PE-UL00|VRD-W09'
4289
4865
  device: 'smartphone'
4290
4866
  models:
4867
+ - regex: 'ARS-([AT]L00|L22)[);/ ]'
4868
+ model: 'Y Max'
4291
4869
  - regex: 'U(8230|8661|8667)[);/ ]'
4292
4870
  model: 'U$1'
4293
4871
  - regex: 'TAG-[ACT]L00'
4294
4872
  model: 'Enjoy 5S'
4295
- - regex: 'DUA-AL00'
4296
- model: 'Enjoy 7'
4297
- - regex: 'FIG-AL10'
4873
+ - regex: 'DIG-(?:TL10|AL00)'
4874
+ model: 'Enjoy 6S'
4875
+ - regex: 'NCE-AL[10]0'
4876
+ model: 'Enjoy 6'
4877
+ - regex: 'SLA-(?:AL00|TL10)'
4878
+ model: 'Enjoy 7' # Nova Lite (2017)
4879
+ - regex: 'DUA-[TA]L00'
4880
+ model: 'Honor Play 7'
4881
+ - regex: 'FIG-(?:AL[10]0|TL10)'
4298
4882
  model: 'Enjoy 7S'
4299
- - regex: 'LDN-(?:AL20|TL20)'
4883
+ - regex: 'LDN-(?:AL[12]0|TL20)'
4300
4884
  model: 'Enjoy 8'
4301
- - regex: 'ATU-AL1'
4885
+ - regex: 'ATU-(?:AL1|TL10)'
4302
4886
  model: 'Enjoy 8e'
4303
4887
  - regex: 'FLA-AL10'
4304
4888
  model: 'Enjoy 8 Plus'
4889
+ - regex: 'MRD-[TA]L00'
4890
+ model: 'Enjoy 9e'
4305
4891
  - regex: 'U8500[);/ ]'
4306
4892
  model: 'Ideos X2'
4307
4893
  - regex: 'U8510[);/ ]'
@@ -4342,21 +4928,30 @@ Huawei:
4342
4928
  model: 'Ascend Y550'
4343
4929
  - regex: 'U9508[);/ ]'
4344
4930
  model: 'Honor 2'
4345
- - regex: 'YAL-L21[);/ ]'
4931
+ - regex: 'YAL-(?:L21|AL00)'
4346
4932
  model: 'Honor 20'
4933
+ - regex: 'YAL-L41[);/ ]'
4934
+ model: 'Honor 20 Pro'
4347
4935
  - regex: 'VOG-AL00[);/ ]'
4348
4936
  model: 'Honor P30 Pro'
4349
- - regex: 'CHE2?-[UT]L00[HM]?|CHE1-CL[12]0|CHE2-L(?:11|23)|Che1-L04|CHE-TL00'
4937
+ - regex: 'CHE2?-[UT]L00[HM]?|CHE1-CL[12]0|CHE2-L(?:1[12]|23)|Che1-L04|CHE-TL00'
4350
4938
  model: 'Honor 4X'
4351
4939
  - regex: 'CHM-[CUT]L00[HM]?'
4352
4940
  model: 'Honor Play 4C'
4941
+ - regex: 'JDN-AL00'
4942
+ model: 'Honor Pad 2'
4943
+ device: 'tablet'
4944
+ - regex: 'JAT-AL00'
4945
+ model: 'Honor Play 8A'
4946
+ - regex: 'KNT-(?:AL[12]0|[TU]L10)'
4947
+ model: 'Honor V8'
4353
4948
  - regex: 'DUK-AL20'
4354
4949
  model: 'Honor V9'
4355
4950
  - regex: 'JMM-AL[10]0'
4356
4951
  model: 'Honor V9 Play'
4357
4952
  - regex: 'BKL-(?:AL00|AL20|AL30|L09|TL10)'
4358
4953
  model: 'Honor V10'
4359
- - regex: 'PCT-AL10'
4954
+ - regex: 'PCT-[TA]L10'
4360
4955
  model: 'Honor V20'
4361
4956
  - regex: 'BKL-L04'
4362
4957
  model: 'Honor View 10'
@@ -4370,7 +4965,7 @@ Huawei:
4370
4965
  model: 'Honor 4A'
4371
4966
  - regex: '(?:Honor_|HW-)?CAM-(?:AL00|TL00H|TL00)(?:_TD)?[);/ ]'
4372
4967
  model: 'Honor 5A'
4373
- - regex: '(?:Honor_|HW-)?KIW-(?:AL10|TL00H|L2[124]|UL00)(?:_TD)?[);/ ]'
4968
+ - regex: '(?:Honor_|HW-)?KIW-(?:AL10|TL00H|[TC]L00|L2[124]|UL00)(?:_TD)?[);/ ]'
4374
4969
  model: 'Honor 5X'
4375
4970
  - regex: '(?:Honor_|HW-)?CHM-U01(?:_TD)?[);/ ]'
4376
4971
  model: 'Honor 4C'
@@ -4378,21 +4973,23 @@ Huawei:
4378
4973
  model: 'Honor 6'
4379
4974
  - regex: 'MYA-TL10'
4380
4975
  model: 'Honor 6 Play'
4976
+ - regex: 'PE-UL00'
4977
+ model: 'Honor 6 Plus'
4381
4978
  - regex: '(?:Honor_|HW-)?SCL-L01(?:_TD)?[);/ ]'
4382
4979
  model: 'Honor Y6'
4383
4980
  - regex: '(?:Honor_|HW-)?LYO-L21'
4384
- model: 'Honor Y6 II Compact'
4981
+ model: 'Honor Y6 II Compact' # Honor 5A
4385
4982
  - regex: '(?:Honor_|HW-)?PLK-(?:AL10|CL00|TL00|TL01H?|UL00|L01)[);/ ]'
4386
4983
  model: 'Honor 7'
4387
- - regex: 'AUM-(?:AL[20]0|L33)'
4984
+ - regex: 'AUM-(?:AL[20]0|L33[A]?|TL20)'
4388
4985
  model: 'Honor 7A'
4389
4986
  - regex: 'AUM-L29'
4390
4987
  model: 'Honor 7A Pro'
4391
- - regex: '(?:Honor_|HW-)?(?:LND-AL[34]0|LND-L29|AUM-L41)[);/ ]'
4988
+ - regex: '(?:Honor_|HW-)?(?:LND-(?:AL[34]0|L29|TL40)|AUM-L41)[);/ ]'
4392
4989
  model: 'Honor 7C'
4393
- - regex: '(?:Honor_|HW-)?DUA-L22[);/ ]'
4990
+ - regex: '(?:Honor_|HW-)?DUA-(?:L22|LX3)[);/ ]'
4394
4991
  model: 'Honor 7S'
4395
- - regex: '(?:Honor_|HW-)?NEM-(?:AL10|L51|UL10)[);/ ]'
4992
+ - regex: '(?:Honor_|HW-)?NEM-(?:AL10|L51|UL10|TL00)[);/ ]'
4396
4993
  model: 'Honor 5C'
4397
4994
  - regex: '(?:Honor_|HW-)?NEM-(?:L22|TL00H)[);/ ]'
4398
4995
  model: 'Honor 5C Dual SIM'
@@ -4404,7 +5001,7 @@ Huawei:
4404
5001
  model: 'Honor 6C Pro'
4405
5002
  - regex: '(?:HONOR[ _]?)?BLN-(?:L2[124]|AL[1234]0|TL[01]0)'
4406
5003
  model: 'Honor 6X'
4407
- - regex: 'ATH-AL00'
5004
+ - regex: 'ATH-(?:AL00|UL00|TL00H)'
4408
5005
  model: 'Honor 7i'
4409
5006
  - regex: '(?:HONOR[ _]?)?BND-(?:AL[01]0|TL10|L2[14]|L31)'
4410
5007
  model: 'Honor 7X'
@@ -4418,21 +5015,23 @@ Huawei:
4418
5015
  model: 'Honor 8X'
4419
5016
  - regex: 'KSA-LX9'
4420
5017
  model: 'Honor 8S'
4421
- - regex: 'ARE-AL[10]0|ARE-L22HN'
5018
+ - regex: 'ARE-(?:AL[10]0|L22HN|TL00)'
4422
5019
  model: 'Honor 8X Max'
4423
5020
  - regex: 'PRA-(?:AL00X|AL00|TL10)'
4424
5021
  model: 'Honor 8 Lite'
4425
- - regex: 'DUK-L09'
5022
+ - regex: 'DUK-(?:L09|TL30)'
4426
5023
  model: 'Honor 8 Pro'
4427
5024
  - regex: 'JAT-L41'
4428
5025
  model: 'Honor 8A Pro'
4429
5026
  - regex: 'VEN-L22'
4430
5027
  model: 'Honor 8 Smart'
4431
- - regex: 'STF-(?:AL[10]0|L09)'
5028
+ - regex: 'STF-(?:AL[10]0|L09|TL10)'
4432
5029
  model: 'Honor 9'
5030
+ - regex: 'HLK-AL00'
5031
+ model: 'Honor 9X'
4433
5032
  - regex: 'LLD-AL[23]0'
4434
5033
  model: 'Honor 9i'
4435
- - regex: 'LLD-(?:AL[01]0|L[23]1)'
5034
+ - regex: 'LLD-(?:AL[01]0|L[23]1|TL10)'
4436
5035
  model: 'Honor 9 Lite'
4437
5036
  - regex: 'COL-(?:AL[01]0|TL[01]0|L29)'
4438
5037
  model: 'Honor 10'
@@ -4446,7 +5045,7 @@ Huawei:
4446
5045
  model: 'Honor Holly 4 Plus'
4447
5046
  - regex: 'TNY-AL00'
4448
5047
  model: 'Honor Magic 2'
4449
- - regex: 'COR-(?:AL[01]0|L29)'
5048
+ - regex: 'COR-(?:AL[01]0|L29|TL10)'
4450
5049
  model: 'Honor Play'
4451
5050
  - regex: 'EDI-AL10'
4452
5051
  model: 'Honor Note 8'
@@ -4454,7 +5053,7 @@ Huawei:
4454
5053
  model: 'Honor Note 10'
4455
5054
  - regex: 'GRA-(?:L09|UL00)'
4456
5055
  model: 'P8'
4457
- - regex: 'ALE-L(?:02|21|23)|ALE-UL00'
5056
+ - regex: 'ALE-L(?:02|21|23)|ALE-UL00|ALE-TL00'
4458
5057
  model: 'P8 Lite (2015)'
4459
5058
  - regex: 'PRA-L(?:A1|X2|X1|X3)|hi6210sft'
4460
5059
  model: 'P8 Lite (2017)'
@@ -4466,13 +5065,13 @@ Huawei:
4466
5065
  model: 'Nova 2'
4467
5066
  - regex: 'HWI-[AT]L00'
4468
5067
  model: 'Nova 2S'
4469
- - regex: 'BAC-L01'
5068
+ - regex: 'BAC-(?:L01|TL00)'
4470
5069
  model: 'Nova 2 Plus'
4471
5070
  - regex: 'BAC-(?:AL00|L2[12])'
4472
5071
  model: 'Nova 2 Plus Dual SIM'
4473
5072
  - regex: 'RNE-L[02]2'
4474
5073
  model: 'Nova 2I'
4475
- - regex: 'PAR-(?:AL00|LX[19])'
5074
+ - regex: 'PAR-(?:[AT]L00|LX[19]|TL20)'
4476
5075
  model: 'Nova 3'
4477
5076
  - regex: 'ANE-AL00'
4478
5077
  model: 'Nova 3e'
@@ -4480,7 +5079,7 @@ Huawei:
4480
5079
  model: 'Nova 3i'
4481
5080
  - regex: 'SEA-AL10'
4482
5081
  model: 'Nova 5 Pro'
4483
- - regex: 'VCE-L22'
5082
+ - regex: 'VCE-(L22|[AT]L00)'
4484
5083
  model: 'Nova 4'
4485
5084
  - regex: 'MAR-AL00'
4486
5085
  model: 'Nova 4e'
@@ -4490,7 +5089,7 @@ Huawei:
4490
5089
  model: 'Nova Smart'
4491
5090
  - regex: 'RIO-L03'
4492
5091
  model: 'GX8'
4493
- - regex: 'EVA-(?:AL10|L[012]9|TL00)'
5092
+ - regex: 'EVA-(?:AL[10]0|L[012]9|[TCD]L00)'
4494
5093
  model: 'P9'
4495
5094
  - regex: 'VNS-L(?:[23]1|62)'
4496
5095
  model: 'P9 Lite'
@@ -4508,15 +5107,15 @@ Huawei:
4508
5107
  model: 'P10 Selfie'
4509
5108
  - regex: 'VKY-(?:AL00|L09|L29)'
4510
5109
  model: 'P10 Plus'
4511
- - regex: 'EML-(?:AL00|L09|L29)'
5110
+ - regex: 'EML-(?:[TA]L00|L[02]9)'
4512
5111
  model: 'P20'
4513
- - regex: 'ANE-LX[123]'
5112
+ - regex: 'ANE-(?:LX[123]|TL00)'
4514
5113
  model: 'P20 Lite'
4515
- - regex: 'CLT-(?:AL0[01]|L(?:04|[02]9))'
5114
+ - regex: 'CLT-(?:AL0[01]|TL00|L(?:04|[02]9))'
4516
5115
  model: 'P20 Pro'
4517
5116
  - regex: 'ELE-L(?:04|09|29)|ELE-AL00'
4518
5117
  model: 'P30'
4519
- - regex: 'VOG-L(?:04|09|29)'
5118
+ - regex: 'VOG-L(?:04|09|29)|VOG-TL00'
4520
5119
  model: 'P30 Pro'
4521
5120
  - regex: 'MAR-LX(1M|2)'
4522
5121
  model: 'P30 Lite'
@@ -4542,13 +5141,13 @@ Huawei:
4542
5141
  model: 'Y5II'
4543
5142
  - regex: 'MYA-(?:L(?:02|03|2[23])|U29)'
4544
5143
  model: 'Y5 (2017)'
4545
- - regex: 'AMN-LX[19]'
5144
+ - regex: 'AMN-LX[129]'
4546
5145
  model: 'Y5 (2019)'
4547
5146
  - regex: 'CRO-L[02]3'
4548
5147
  model: 'Y5 Lite (2017)'
4549
5148
  - regex: 'CAG-L[02]3'
4550
5149
  model: 'Y5 Lite (2018)'
4551
- - regex: 'DRA-LX2'
5150
+ - regex: 'DRA-(?:LX2|AL00)'
4552
5151
  model: 'Y5 Prime (2018)'
4553
5152
  - regex: 'DRA-LX5'
4554
5153
  model: 'Y5 lite'
@@ -4564,7 +5163,7 @@ Huawei:
4564
5163
  model: 'Y6II'
4565
5164
  - regex: 'ATU-L(?:11|21|22|X3)'
4566
5165
  model: 'Y6 (2018)'
4567
- - regex: 'MRD-LX1[F]?'
5166
+ - regex: 'MRD-L(?:X1[F]?|X3)'
4568
5167
  model: 'Y6 (2019)'
4569
5168
  - regex: 'TIT-(?:AL00|L01)'
4570
5169
  model: 'Y6 Pro'
@@ -4576,17 +5175,19 @@ Huawei:
4576
5175
  model: 'Y7 (2017)'
4577
5176
  - regex: 'LDN-L(?:01|X3)'
4578
5177
  model: 'Y7 (2018)'
4579
- - regex: 'DUB-LX[13]'
5178
+ - regex: 'DUB-(?:LX[13]|TL00)'
4580
5179
  model: 'Y7 (2019)'
4581
- - regex: 'LDN-(?:AL00|L21)'
5180
+ - regex: 'DUB-AL20'
5181
+ model: 'Y7 Pro (2019)'
5182
+ - regex: 'LDN-(?:AL00|L21)|TRT-TL10'
4582
5183
  model: 'Y7 Prime'
4583
5184
  - regex: 'LDN-(?:LX2|TL10)|TRT-(?:L21A|L53)'
4584
5185
  model: 'Y7 Prime (2018)'
4585
- - regex: 'DUB-LX2'
5186
+ - regex: 'DUB-(?:LX2|AL00)'
4586
5187
  model: 'Y7 Pro (2019)'
4587
- - regex: 'FLA-LX[123]'
5188
+ - regex: 'FLA-(LX[123]|AL20|TL10)'
4588
5189
  model: 'Y9 (2018)'
4589
- - regex: 'JKM-(?:AL00|LX[123])'
5190
+ - regex: 'JKM-(?:[TA]L00|LX[123])'
4590
5191
  model: 'Y9 (2019)'
4591
5192
  - regex: 'STK-(L2[12]|LX3)'
4592
5193
  model: 'Y9 Prime (2019)'
@@ -4598,17 +5199,17 @@ Huawei:
4598
5199
  model: 'Y635 Dual SIM'
4599
5200
  - regex: 'NXT-(?:AL10|L29)'
4600
5201
  model: 'Mate 8'
4601
- - regex: 'MHA-(?:L[02]9|AL00)'
5202
+ - regex: 'MHA-(?:L[02]9|[AT]L00)'
4602
5203
  model: 'Mate 9'
4603
5204
  - regex: 'BLL-L23'
4604
5205
  model: 'Mate 9 Lite'
4605
5206
  - regex: 'LON-(?:AL00|L29)'
4606
5207
  model: 'Mate 9 Pro'
4607
- - regex: 'ALP-(?:AL00|L[02]9)'
5208
+ - regex: 'ALP-(?:[TA]L00|L[02]9)'
4608
5209
  model: 'Mate 10'
4609
5210
  - regex: 'RNE-(?:AL00|L(?:01|03|21|23))'
4610
5211
  model: 'Mate 10 Lite'
4611
- - regex: 'BLA-(?:A09|L[02]9|AL00)'
5212
+ - regex: 'BLA-(?:A09|L[02]9|[TA]L00)'
4612
5213
  model: 'Mate 10 Pro'
4613
5214
  - regex: 'HMA-(?:[AT]L00|L[02]9)'
4614
5215
  model: 'Mate 20'
@@ -4616,11 +5217,11 @@ Huawei:
4616
5217
  model: 'P30 Pro'
4617
5218
  - regex: 'LYA-AL00P'
4618
5219
  model: 'Mate 20 RS'
4619
- - regex: 'LYA-(?:AL[01]0|L[02]9)'
5220
+ - regex: 'LYA-(?:AL[01]0|L[02]9|L0C|TL00)'
4620
5221
  model: 'Mate 20 Pro'
4621
5222
  - regex: 'SNE-(?:AL00|LX[0-3])'
4622
5223
  model: 'Mate 20 Lite'
4623
- - regex: 'EVR-(?:AL00|L29)'
5224
+ - regex: 'EVR-(?:[TA]L00|L29)'
4624
5225
  model: 'Mate 20 X'
4625
5226
  - regex: 'CRR-(?:L09|UL00)'
4626
5227
  model: 'Mate S'
@@ -4642,25 +5243,31 @@ Huawei:
4642
5243
  - regex: 'CMR-(?:AL[01]9|W09)'
4643
5244
  device: 'tablet'
4644
5245
  model: 'MediaPad M5 10.8'
4645
- - regex: 'JDN2-L09'
5246
+ - regex: 'GEM-70[1-3]L'
5247
+ device: 'tablet'
5248
+ model: 'MediaPad X2'
5249
+ - regex: 'JDN2-(:?L09|AL00)|BAH2-(?:L09|W19)'
4646
5250
  device: 'tablet'
4647
5251
  model: 'MediaPad M5 lite'
4648
5252
  - regex: 'SHT-(?:AL|W)09'
4649
5253
  device: 'tablet'
4650
5254
  model: 'MediaPad M5 8.4'
5255
+ - regex: 'VRD-(AL|W)09'
5256
+ device: 'tablet'
5257
+ model: 'MediaPad M6 8.4'
4651
5258
  - regex: 'BTV-W09'
4652
5259
  device: 'tablet'
4653
5260
  model: 'MediaPad M3 8'
4654
- - regex: 'BAH-W09|CPN-(?:L|W)09'
5261
+ - regex: 'BAH-W09|CPN-(?:L|W)09|CPN-AL00'
4655
5262
  device: 'tablet'
4656
5263
  model: 'MediaPad M3 Lite'
4657
- - regex: 'BAH-L09'
5264
+ - regex: 'BAH-(?:L09|AL00)'
4658
5265
  device: 'tablet'
4659
5266
  model: 'MediaPad M3 Lite 10'
4660
5267
  - regex: 'BTV-DL09'
4661
5268
  device: 'tablet'
4662
5269
  model: 'MediaPad M3'
4663
- - regex: 'AGS2-(?:L|W)09'
5270
+ - regex: 'AGS2-(?:[LW]09|L03)'
4664
5271
  device: 'tablet'
4665
5272
  model: 'MediaPad T5 10'
4666
5273
  - regex: 'AGS-(?:L0[39]|W09)'
@@ -4678,6 +5285,9 @@ Huawei:
4678
5285
  - regex: '(?:BGO-DL09|PLE-70[13]L)'
4679
5286
  device: 'tablet'
4680
5287
  model: 'MediaPad T2 7.0 Pro'
5288
+ - regex: 'JDN-L01'
5289
+ device: 'tablet'
5290
+ model: 'MediaPad T2 8.0 Pro'
4681
5291
  - regex: 'FDR-A01(?:L|w)'
4682
5292
  device: 'tablet'
4683
5293
  model: 'MediaPad T2 10.0 Pro'
@@ -4773,10 +5383,10 @@ iRola:
4773
5383
 
4774
5384
  # Irbis
4775
5385
  Irbis:
4776
- regex: 'TZ(753|85[47]|86[45]|88[124]|89[12]|49)|T(?:Zone|Zart)|(SP(?:0[56]|2[01]|4[1-36]|45[45]|50))[;)\ ]'
5386
+ regex: 'TZ(150|165|17[5-8]|77[17]|753|794|8[34]1|85[47]|86[45]|88[124]|89[12]|49|716|772)|T(?:Zone|Zart)|(SP(?:0[56]|2[01]|4[1-36]|45[45]|50))[;)\ ]'
4777
5387
  device: 'tablet'
4778
5388
  models:
4779
- - regex: '(TZ(?:753|85[47]|86[45]|88[124]|89[12]|49)|T(?:Zone|Zart))[;)\ ]'
5389
+ - regex: '(TZ(?:150|165|17[5-8]|77[17]|753|794|8[34]1|85[47]|86[45]|88[124]|89[12]|49|716|772)|T(?:Zone|Zart))[;)\ ]'
4780
5390
  model: '$1'
4781
5391
  - regex: '(SP(?:0[56]|2[01]|4[1-36]|45[45]|50))[;)\ ]'
4782
5392
  device: 'smartphone'
@@ -4794,11 +5404,13 @@ iBerry:
4794
5404
 
4795
5405
  # iHunt
4796
5406
  iHunt:
4797
- regex: 'iHunt|One_ Love_|TITAN_P11000_PRO|Like_(3|4U|3_Pro)|X300 Elite'
5407
+ regex: 'iHunt|One_ Love_|TITAN_P11000_PRO|Like_(3|4U|3_Pro)|X300 Elite|S10_Tank_2019'
4798
5408
  device: 'smartphone'
4799
5409
  models:
4800
5410
  - regex: 'iHunt_Like'
4801
5411
  model: 'Like'
5412
+ - regex: 'S10_Tank_2019'
5413
+ model: 'S10 Tank 2019'
4802
5414
  - regex: 'One_ Love_'
4803
5415
  model: 'One Love'
4804
5416
  - regex: 'TITAN_P11000_PRO'
@@ -4924,6 +5536,12 @@ LYF:
4924
5536
  - regex: 'LYF/([^/]+)/'
4925
5537
  model: '$1'
4926
5538
 
5539
+ # Lumus
5540
+ Lumus:
5541
+ regex: 'NEOSR620[;)/ ]'
5542
+ device: 'smartphone'
5543
+ model: 'Neo SR620'
5544
+
4927
5545
  # M4tel
4928
5546
  M4tel:
4929
5547
  regex: 'M4 SS[0-9]{4}(?:-R)?|M4_B[23]'
@@ -4982,6 +5600,12 @@ IMO Mobile:
4982
5600
  - regex: 'IMO Q2'
4983
5601
  model: 'Q2'
4984
5602
 
5603
+ # iLA
5604
+ iLA:
5605
+ regex: 'iLA[-_ ](Silk|X)[);/ ]'
5606
+ device: 'smartphone'
5607
+ model: '$1'
5608
+
4985
5609
  # iNew
4986
5610
  iNew:
4987
5611
  regex: 'iNew|(?:V7A|V3 Plus|V3-?E|V3C)(?: Build|[;/\)])'
@@ -5130,11 +5754,17 @@ Infinix:
5130
5754
 
5131
5755
  # InFocus
5132
5756
  InFocus:
5133
- regex: '(IF9007) Build'
5757
+ regex: 'IF(9001|9007|9021|9035) Build'
5134
5758
  device: 'smartphone'
5135
5759
  models:
5136
- - regex: '(IF9007)'
5137
- model: '$1'
5760
+ - regex: 'IF9001'
5761
+ model: 'Turbo 5'
5762
+ - regex: 'IF9007'
5763
+ model: 'A3'
5764
+ - regex: 'IF9021'
5765
+ model: 'Turbo 5 Plus'
5766
+ - regex: 'IF9035'
5767
+ model: 'A2'
5138
5768
 
5139
5769
  # InnJoo
5140
5770
  InnJoo:
@@ -5156,6 +5786,24 @@ Innostream:
5156
5786
  device: 'feature phone'
5157
5787
  model: 'INNO$1'
5158
5788
 
5789
+ # Insignia
5790
+ Insignia:
5791
+ regex: 'NS-(P11A8100|P10A8100|P10A6100|P16AT08|P16AT10|P16AT785HD|P08A7100|P10A7100)[);/ ]'
5792
+ device: 'tablet'
5793
+ models:
5794
+ - regex: 'NS-P11A8100'
5795
+ model: '11.6"'
5796
+ - regex: 'NS-(P10A6100|P16AT10)'
5797
+ model: 'Flex 10.1"'
5798
+ - regex: 'NS-P16AT08'
5799
+ model: 'Flex 8"'
5800
+ - regex: 'NS-P08A7100'
5801
+ model: '8"'
5802
+ - regex: 'NS-(P10A8100|P10A7100)'
5803
+ model: '10.1"'
5804
+ - regex: 'NS-P16AT785HD'
5805
+ model: 'Flex Elite 7.85"'
5806
+
5159
5807
  # Inq
5160
5808
  INQ:
5161
5809
  regex: 'INQ[/ ]'
@@ -5169,11 +5817,13 @@ INQ:
5169
5817
 
5170
5818
  # Intex
5171
5819
  Intex:
5172
- regex: 'Intex|(Aqua|Cloud[ _][XY][0-9]{1})'
5820
+ regex: 'Intex|(Aqua|Cloud[ _][XY][0-9]{1}|Cloud (?:Fame|Glory) 4G)'
5173
5821
  device: 'smartphone'
5174
5822
  models:
5175
5823
  - regex: 'Intex[ _]([^/;]*)[ _]Build'
5176
5824
  model: '$1'
5825
+ - regex: '(Cloud (?:Fame|Glory) 4G)'
5826
+ model: '$1'
5177
5827
  - regex: '(Aqua|Cloud)[ _\.]([^/;\)]+)(?:[ _]Build|(?<!Build)/|\))'
5178
5828
  model: '$1 $2'
5179
5829
  - regex: 'Intex[ _]([a-z0-9_+\-]+)'
@@ -5277,11 +5927,13 @@ iTel:
5277
5927
 
5278
5928
  # JAY-Tech
5279
5929
  JAY-Tech:
5280
- regex: 'TPC-[A-Z0-9]+'
5930
+ regex: 'TPC-[A-Z0-9]+|TPCY-TX[TE][^);/ ]+'
5281
5931
  device: 'tablet'
5282
5932
  models:
5283
5933
  - regex: 'TPC-([A-Z0-9]+)'
5284
5934
  model: 'Tablet PC $1'
5935
+ - regex: '(TPCY-TX[TE][^);/ ]+)'
5936
+ model: '$1'
5285
5937
 
5286
5938
  # Jiayu
5287
5939
  Jiayu:
@@ -5325,6 +5977,12 @@ Kalley:
5325
5977
  - regex: 'ELEMENT Q'
5326
5978
  model: 'Element Q'
5327
5979
 
5980
+ # Kaan
5981
+ Kaan:
5982
+ regex: 'KAAN[ _](N[12]|A1)[);/ ]'
5983
+ device: 'smartphone'
5984
+ model: '$1'
5985
+
5328
5986
  # Kazam
5329
5987
  Kazam:
5330
5988
  regex: 'Kazam ([^;/]+) Build|Trooper_X[0-9][0-9][);/ ]|Tornado 348'
@@ -5493,13 +6151,18 @@ KDDI:
5493
6151
 
5494
6152
  # Kodak
5495
6153
  Kodak:
5496
- regex: 'KODAK'
6154
+ regex: 'KODAK|IM5[);/ ]'
5497
6155
  device: 'smartphone'
5498
6156
  models:
6157
+ - regex: 'IM5'
6158
+ model: 'IM5'
5499
6159
  - regex: 'KODAK_SMARTWAY_((M|T)1)'
5500
6160
  model: 'Smartway $1'
5501
6161
  - regex: 'SMARTWAY X1'
5502
6162
  model: 'Smartway X1'
6163
+ - regex: 'Tablet (7|10)'
6164
+ device: 'tablet'
6165
+ model: 'Tablet $1'
5503
6166
 
5504
6167
  # KOPO
5505
6168
  KOPO:
@@ -5537,7 +6200,7 @@ K-Touch:
5537
6200
 
5538
6201
  # kyocera
5539
6202
  Kyocera:
5540
- regex: 'Kyocera|KWC-|QC-|C5120|C5170|C5155|C5215|C6730|C6750|C6522N?|C6530N|C6740|C6743|E6810|KYL21|KYY23|S2151|KC-S701'
6203
+ regex: 'Kyocera|KWC-|QC-|C5120|C5170|C5155|C5215|C6730|C6750|C6522N?|C6530N|C6740|C6743|E6[89]10|KYL21|KYY23|S2151|KC-S701'
5541
6204
  device: 'smartphone'
5542
6205
  models:
5543
6206
  # explicit smartphone models
@@ -5563,12 +6226,16 @@ Kyocera:
5563
6226
  model: 'Hydro Reach'
5564
6227
  - regex: 'E6810'
5565
6228
  model: 'DuraForce Pro'
6229
+ - regex: 'E6910'
6230
+ model: 'DuraForce Pro 2'
5566
6231
  - regex: 'KC-S701'
5567
6232
  model: 'Torque'
5568
6233
  - regex: 'KYL21'
5569
6234
  model: 'Digno S'
5570
6235
  - regex: 'KYY23'
5571
6236
  model: 'Urbano L03'
6237
+ - regex: '(?:Kyocera-)?E6790'
6238
+ model: 'DuraForce XD'
5572
6239
 
5573
6240
  # explicit feature phone models
5574
6241
  - regex: 'S2151'
@@ -5602,6 +6269,14 @@ LAIQ:
5602
6269
  - regex: '(Glam|New York)'
5603
6270
  model: '$1'
5604
6271
 
6272
+ # AIS
6273
+ AIS:
6274
+ regex: 'iris708'
6275
+ device: 'smartphone'
6276
+ models:
6277
+ - regex: 'iris708'
6278
+ model: 'LAVA PRO 4.5'
6279
+
5605
6280
  # Lava
5606
6281
  Lava:
5607
6282
  regex: 'Lava[ _]|iris[ _]?([^/;]+)(?:\)| Build)|A(?:67|76) Build|X1 Selfie Build|X41 Plus Build|Flair Z1|PixelV1|Z61_2GB'
@@ -5656,7 +6331,7 @@ Lanix:
5656
6331
  device: 'tablet'
5657
6332
  - regex: 'X120C'
5658
6333
  model: 'Ilium X120C'
5659
- - regex: 'Ilium[ _](Alpha 3|L(?:200|6[12]0|9[125]0|1[0124]00|1050|1120)|LT5[012]0|M[139]|S(?:106|520|6[27]0)|X(?:1[12]0|2[0126]0|5[12]0|500B|710))'
6334
+ - regex: 'Ilium[ _](Alpha 3|L(?:200|6[12]0|9[125]0|1[0124]00|1050|1120)|LT5[012]0|M[1379]|S(?:106|520|6[27]0)|X(?:1[12]0|2[0126]0|5[12]0|500B|710))'
5660
6335
  model: 'Ilium $1'
5661
6336
  - regex: 'ILIUM[ _]([^;/]+) Build'
5662
6337
  model: 'Ilium $1'
@@ -5784,6 +6459,19 @@ Leotec:
5784
6459
  - regex: 'LESPH5014'
5785
6460
  model: 'Krypton K150'
5786
6461
 
6462
+ # Lephone
6463
+ Lephone:
6464
+ regex: 'lephone[ _]'
6465
+ device: 'smartphone'
6466
+ models:
6467
+ - regex: 'lephone[ _](K7|K10)'
6468
+ device: 'feature phone'
6469
+ model: '$1'
6470
+ - regex: 'lephone[ _](W(1[0125]|[279])|T2)[/;) ]'
6471
+ model: '$1'
6472
+ - regex: 'lephone_W7_plus'
6473
+ model: 'W7 Plus'
6474
+
5787
6475
  # lenco
5788
6476
  Lenco:
5789
6477
  regex: 'Lenco ([^/;]*) Build'
@@ -5877,6 +6565,12 @@ Lenovo:
5877
6565
  - regex: 'TB-X304F'
5878
6566
  model: 'TAB 4 10'
5879
6567
  device: 'tablet'
6568
+ - regex: 'Lenovo TB-X505F'
6569
+ model: 'M10'
6570
+ device: 'tablet'
6571
+ - regex: 'Lenovo TB-X104[FXL]'
6572
+ model: 'E10'
6573
+ device: 'tablet'
5880
6574
  - regex: 'Tab2A([0-9]-[0-9]{2}[a-z]?)'
5881
6575
  model: 'TAB 2 A$1'
5882
6576
  device: 'tablet'
@@ -5908,6 +6602,8 @@ Lenovo:
5908
6602
  model: 'K3 Note'
5909
6603
  - regex: 'A7010a48 Build'
5910
6604
  model: 'K4 Note'
6605
+ - regex: 'A7010a48(?: Build|\))'
6606
+ model: 'K4 Vibe'
5911
6607
  - regex: 'A7020a4[08](?: Build|\))'
5912
6608
  model: 'K5 Note'
5913
6609
  - regex: '(?:Lenovo-)?A6020(?:a40|l36)(?: Build|\))'
@@ -6026,7 +6722,7 @@ Lexibook:
6026
6722
 
6027
6723
  # LG
6028
6724
  LG:
6029
- regex: 'LG|portalmmm/2\.0 (?:KE|KG|KP|L3)|(?:VX[0-9]+|L-0[12]D|L-07C|P713|LM-(V350|V409N|X510WM|X525|Q815[SL]|X410([KL]|UM|PM)|X510[KLS]|X415[KLS]|Q850|Q925L|Q725[KL]|Q710(?:FGN|\(FGN\)|\.FGN?)?|X2[12]0(?:APM|\(G\)|CM|G)?|G710N?|V405|V500N|G820(N|QM[0127]|UMB)?|(X410|Q610)(?:\(FGN?\)|\.FN|\.F(?:GN?)?)))[);/ ]|NetCast|RS987|RS500|VS(?:501|988|99[56]|(410|415|425|500)PP)|Nexsus 5|LML211BL|LML212VL|LM-X625N'
6725
+ regex: 'LG|portalmmm/2\.0 (?:KE|KG|KP|L3)|(?:VX[0-9]+|L-0[12]D|L-07C|P713|LM-(Q910|V350[N]?|V409N|X510WM|X525|Q815[SL]|X410([KL]|UM|PM)|X420N|X510[KLS]|X415[KLS]|Q850|Q925L|Q725[KL]|Q710(?:FGN|\(FGN\)|\.FGN?)?|X2[12]0(?:APM|\(G\)|CM|G)?|G710(N|VM)?|V405|V500N|G820(N|QM[0127]|UMB)?|(X410|Q610)(?:\(FGN?\)|\.FN|\.F(?:GN?)?)))[);/ ]|NetCast|RS987|RS500|VS(?:50[01]|835|98[78]|99[56]|(410|415|425|500)PP)|Nexsus 5|LML(414D|211B|713D|212V)L|LM-X(625N|210K|212\(G\)|410S)|VK810 4G|VK815'
6030
6726
  device: 'smartphone'
6031
6727
  models:
6032
6728
  - regex: 'LG-D325'
@@ -6045,7 +6741,7 @@ LG:
6045
6741
  model: 'G4 Stylus'
6046
6742
  - regex: 'LG-H735'
6047
6743
  model: 'G4 Beat'
6048
- - regex: 'LG-H8(?:20|30|5[08]|60)'
6744
+ - regex: 'LG-H8(?:20|30|5[08]|60)|VS987'
6049
6745
  model: 'G5'
6050
6746
  - regex: 'LG-H84[05]'
6051
6747
  model: 'G5 SE'
@@ -6053,6 +6749,8 @@ LG:
6053
6749
  model: 'G6'
6054
6750
  - regex: 'LM-Q850'
6055
6751
  model: 'G7 Fit'
6752
+ - regex: 'LM-Q910'
6753
+ model: 'G7 One'
6056
6754
  - regex: 'LM-G820(N|QM[0127]|UMB)?'
6057
6755
  model: 'G8'
6058
6756
  - regex: 'VS501'
@@ -6087,21 +6785,27 @@ LG:
6087
6785
  model: 'Q8+'
6088
6786
  - regex: 'LM-Q925L'
6089
6787
  model: 'Q9'
6090
- - regex: 'LM-Q710'
6788
+ - regex: 'VS835'
6789
+ model: 'Stylo 2 V'
6790
+ - regex: 'LM-Q710|LML713DL'
6091
6791
  model: 'Stylo 4'
6092
- - regex: 'LM-G710N?'
6792
+ - regex: 'LM-G710(N|VM)?'
6093
6793
  model: 'G7 ThinQ'
6094
6794
  - regex: 'LM-X210CM'
6095
6795
  model: 'Fortune 2'
6096
6796
  - regex: 'LM-X410\.F[);/ ]'
6097
6797
  model: 'Premier Pro'
6798
+ - regex: 'LML414DL[);/ ]'
6799
+ model: 'Premier Pro LTE'
6098
6800
  - regex: 'LM-X525'
6099
6801
  model: 'Q60'
6802
+ - regex: 'LM-X210K'
6803
+ model: 'X2'
6100
6804
  - regex: 'LM-X510WM'
6101
6805
  model: 'X Power 3'
6102
- - regex: 'LM-X41[05]K'
6806
+ - regex: 'LM-X(?:41[05]K|410S)'
6103
6807
  model: 'X4'
6104
- - regex: 'LM-(X415[LS]|X410L)'
6808
+ - regex: 'LM-X(415[LS]|410L)'
6105
6809
  model: 'X4+'
6106
6810
  - regex: 'LM-X410\.FN'
6107
6811
  model: 'K11'
@@ -6109,8 +6813,8 @@ LG:
6109
6813
  model: 'K30'
6110
6814
  - regex: 'LM-X410'
6111
6815
  model: 'LM-X410'
6112
- - regex: 'LM-V350'
6113
- model: 'V35'
6816
+ - regex: 'LM-X420N'
6817
+ model: 'X4 (2019)'
6114
6818
  - regex: 'LM-X510[KLS]'
6115
6819
  model: 'X5'
6116
6820
  - regex: 'LM-X625N1'
@@ -6123,10 +6827,14 @@ LG:
6123
6827
  model: 'V40 ThinQ'
6124
6828
  - regex: 'LM-V500N'
6125
6829
  model: 'V50'
6126
- - regex: '(?:LG-)?(?:RS987|H901)'
6830
+ - regex: '(?:LG-)?(?:RS987|H901|H96[0128]|VS990)'
6127
6831
  model: 'V10'
6128
6832
  - regex: '(?:LG-)?RS500'
6129
6833
  model: 'K8 4G'
6834
+ - regex: '(?:LG-)?VS500'
6835
+ model: 'K8 V'
6836
+ - regex: 'LM-X212\(G\)'
6837
+ model: 'K8 (2018)'
6130
6838
  - regex: '(?:LG-)?H91[058]'
6131
6839
  model: 'V20'
6132
6840
  - regex: '(?:LG-)?H990(?:DS|N|T)?'
@@ -6141,6 +6849,8 @@ LG:
6141
6849
  model: 'V30'
6142
6850
  - regex: '(?:LG-)?VS410PP'
6143
6851
  model: 'Optimus Zone'
6852
+ - regex: 'LM-V350[N]?'
6853
+ model: 'V35'
6144
6854
  - regex: '(?:LG-)?VS415PP'
6145
6855
  model: 'Optimus Zone 2'
6146
6856
  - regex: '(?:LG-)?VS425PP'
@@ -6181,6 +6891,8 @@ LG:
6181
6891
  model: 'Optimus 4X HD'
6182
6892
  - regex: '(?:LG-)?H340n?'
6183
6893
  model: 'Leon'
6894
+ - regex: '(?:LG-)?H422'
6895
+ model: 'Spirit'
6184
6896
  - regex: '(?:LG)?C660'
6185
6897
  model: 'Optimus Pro'
6186
6898
  - regex: 'LML211BL|LML212VL'
@@ -6201,6 +6913,12 @@ LG:
6201
6913
  - regex: 'LG-V521'
6202
6914
  model: 'G Pad X 8.0'
6203
6915
  device: 'tablet'
6916
+ - regex: 'VK810'
6917
+ model: 'G Pad 8.3 LTE'
6918
+ device: 'tablet'
6919
+ - regex: 'VK815'
6920
+ model: 'G Pad X 8.3'
6921
+ device: 'tablet'
6204
6922
 
6205
6923
  - regex: 'webOS.TV'
6206
6924
  device: 'tv'
@@ -6393,9 +7111,38 @@ Majestic:
6393
7111
 
6394
7112
  # Manta Multimedia
6395
7113
  Manta Multimedia:
6396
- regex: '((?<!/)MID713|MID(?:06[SN]|08[S]?|12|13|14|15|701|702|703|704|705(?:DC)?|706[AS]?|707|708|709|711|712|714|717|781|801|802|901|1001|1002|1003|1004(?: 3G)?|1005|1009|1010|7802|9701|9702))[);/ ]'
6397
- device: 'tablet'
6398
- model: '$1'
7114
+ regex: 'MSP950(1[45]|2[01])|MSP96017|((?<!/)MID713|MID(?:06[SN]|08[S]?|12|13|14|15|701|702|703|704|705(?:DC)?|706[AS]?|707|708|709|711|712|714|717|781|801|802|901|1001|1002|1003|1004(?: 3G)?|1005|1009|1010|7802|9701|9702))[);/ ]'
7115
+ device: 'smartphone'
7116
+ models:
7117
+ - regex: '((?<!/)MID713|MID(?:06[SN]|08[S]?|12|13|14|15|701|702|703|704|705(?:DC)?|706[AS]?|707|708|709|711|712|714|717|781|801|802|901|1001|1002|1003|1004(?: 3G)?|1005|1009|1010|7802|9701|9702))[);/ ]'
7118
+ device: 'tablet'
7119
+ model: '$1'
7120
+ - regex: 'MSP95014'
7121
+ model: 'Titano 3'
7122
+ - regex: 'MSP95015'
7123
+ model: 'Mezo 2'
7124
+ - regex: 'MSP95020'
7125
+ model: 'Rocky 2'
7126
+ - regex: 'MSP95021'
7127
+ model: 'Rocky 3 Pro'
7128
+ - regex: 'MSP96017'
7129
+ model: 'Forto 2'
7130
+
7131
+ # Masstel
7132
+ Masstel:
7133
+ regex: 'Masstel'
7134
+ device: 'smartphone'
7135
+ models:
7136
+ - regex: 'Masstel[_ ](Juno[_ ]Q3|X9|N4[56]0|N5[2458]0|N536|M05|M1[29]0|M1[125]|M250|M25)[);/ ]'
7137
+ model: '$1'
7138
+ - regex: 'Masstel[_ ]\((M18)\)'
7139
+ model: '$1'
7140
+ - regex: 'Masstel_Tab7LTE[);/ ]'
7141
+ model: 'Tab 7 LTE'
7142
+ device: 'tablet'
7143
+ - regex: 'Masstel Tab (840|700i)[);/ ]'
7144
+ model: 'Tab $1'
7145
+ device: 'tablet'
6399
7146
 
6400
7147
  # Maxwest
6401
7148
  Maxwest:
@@ -6521,7 +7268,7 @@ Mediacom:
6521
7268
 
6522
7269
  # Medion
6523
7270
  Medion:
6524
- regex: 'Medion|(?:MD_)?LIFETAB|X5001[);/ ]|[SPX]10[0-9]{2}X[);/ ]'
7271
+ regex: 'Medion|(?:MD_)?LIFETAB|X5001[);/ ]|([SPX]10[0-9]{2}X|E10[45]1X)[);/ ]'
6525
7272
  device: 'smartphone'
6526
7273
  models:
6527
7274
  - regex: '(?:MD_)?LIFETAB_([a-z0-9]+)'
@@ -6529,6 +7276,9 @@ Medion:
6529
7276
  model: 'Lifetab $1'
6530
7277
  - regex: 'X5001'
6531
7278
  model: 'Life X5001'
7279
+ - regex: '(E10[45]1X)[);/ ]'
7280
+ device: 'tablet'
7281
+ model: '$1'
6532
7282
  - regex: '([SPX]10[0-9]{2}X)[);/ ]'
6533
7283
  model: 'Lifetab $1'
6534
7284
  device: 'tablet'
@@ -6597,6 +7347,28 @@ Meizu:
6597
7347
  - regex: 'MZ-([^/;]+) Build'
6598
7348
  model: '$1'
6599
7349
 
7350
+ # Meitu
7351
+ Meitu:
7352
+ regex: '(Meitu[2]?|MP1503|MP1512|MP160[23]|MP170[19])[ ;/)]'
7353
+ device: 'smartphone'
7354
+ models:
7355
+ - regex: 'MP1503[ ;/)]'
7356
+ model: 'M6'
7357
+ - regex: 'MP1512[ ;/)]'
7358
+ model: 'M6s'
7359
+ - regex: 'MP1602[ ;/)]'
7360
+ model: 'T8'
7361
+ - regex: 'MP1701[ ;/)]'
7362
+ model: 'T8s'
7363
+ - regex: 'MP1603[ ;/)]'
7364
+ model: 'M8'
7365
+ - regex: 'MP1709[ ;/)]'
7366
+ model: 'M8s'
7367
+ - regex: 'Meitu2[ ;/)]'
7368
+ model: '2'
7369
+ - regex: 'Meitu (Kiss|M4)[ ;/)]'
7370
+ model: '$1'
7371
+
6600
7372
  # Memup
6601
7373
  Memup:
6602
7374
  regex: 'SlidePad ?([^;/]*) Build|SPNG?[0-9]{2,4}[a-z]{0,2}[ ;/)]|SP704CE?'
@@ -6700,6 +7472,12 @@ Mobiola:
6700
7472
  - regex: 'Wave5'
6701
7473
  model: 'Wave 5'
6702
7474
 
7475
+ # Mobicel
7476
+ Mobicel:
7477
+ regex: 'Mobicel_(R1)'
7478
+ device: 'smartphone'
7479
+ model: '$1'
7480
+
6703
7481
  # Mobiistar
6704
7482
  Mobiistar:
6705
7483
  regex: 'Mobiistar|Zumbo_|PRIME X MAX'
@@ -6719,6 +7497,8 @@ Mobiistar:
6719
7497
  model: 'Lai Zumbo J (2017)'
6720
7498
  - regex: 'Mobiistar_Zumbo_J2'
6721
7499
  model: 'Lai Zumbo J2'
7500
+ - regex: 'Mobiistar[_ ]Zumbo[_ ]S2'
7501
+ model: 'Zumbo S2'
6722
7502
  - regex: 'mobiistar ZUMBO Power'
6723
7503
  model: 'Zumbo Power'
6724
7504
  - regex: 'mobiistar[ _]LAI[ _]YUNA[ _]([1XCS])'
@@ -6783,6 +7563,18 @@ Mobistel:
6783
7563
  device: 'smartphone'
6784
7564
  model: '$1'
6785
7565
 
7566
+ # Mecool
7567
+ Mecool:
7568
+ regex: '(KM9PRO|BB2 PRO|KII PRO)[);/ ]'
7569
+ device: 'tv'
7570
+ models:
7571
+ - regex: 'KM9PRO'
7572
+ model: 'KM9 Pro'
7573
+ - regex: 'BB2 PRO'
7574
+ model: 'BB2 Pro'
7575
+ - regex: 'KII PRO'
7576
+ model: 'KII Pro'
7577
+
6786
7578
  # Modecom
6787
7579
  Modecom:
6788
7580
  regex: 'Modecom|Free(?:Way )?Tab|xino z[\d]+ x[\d]+'
@@ -6813,7 +7605,7 @@ Mofut:
6813
7605
 
6814
7606
  # motorola
6815
7607
  Motorola:
6816
- regex: 'MOT|(?<!AN)DROID ?(?:Build|[a-z0-9]+)|portalmmm/2.0 (?:E378i|L6|L7|v3)|XOOM [^;/]*Build|XT1021|(?:XT|MZ|MB|ME)[0-9]{3,4}[a-z]?(?:\(Defy\)|-0[1-5])?(?: Build|\))'
7608
+ regex: 'MOT(?!TO)|(?<!AN)DROID ?(?:Build|[a-z0-9]+)|portalmmm/2.0 (?:E378i|L6|L7|v3)|XOOM [^;/]*Build|XT1021|XT180[3-5]|(?:XT|MZ|MB|ME)[0-9]{3,4}[a-z]?(?:\(Defy\)|-0[1-5])?(?: Build|\))'
6817
7609
  device: 'smartphone'
6818
7610
  models:
6819
7611
  # Explicit feature phone models
@@ -6898,6 +7690,12 @@ Motorola:
6898
7690
  model: 'Droid Turbo'
6899
7691
  - regex: '(?:MOT-|Motorola-)?XT10(?:28|3[1234]|68|69)'
6900
7692
  model: 'Moto G'
7693
+ - regex: '(?:MOT-|Motorola-)?XT180[3-5]'
7694
+ model: 'Moto G5s Plus'
7695
+ - regex: '(?:MOT-|Motorola-)?XT168[57]'
7696
+ model: 'Moto G5 Plus'
7697
+ - regex: '(?:MOT-|Motorola-)?XT1670' #XT1671 XT1677
7698
+ model: 'Moto G5'
6901
7699
  - regex: '(?:MOT-|Motorola-)?XT10(?:49|5[23568]|60|9[23457])'
6902
7700
  model: 'Moto X'
6903
7701
  - regex: '(?:MOT-|Motorola-)?XT1562'
@@ -7039,7 +7837,7 @@ Navon:
7039
7837
 
7040
7838
  # NOA
7041
7839
  NOA:
7042
- regex: 'NOA[ _]|HummerLE'
7840
+ regex: 'NOA[ _]|HummerLE|NextSE'
7043
7841
  device: 'smartphone'
7044
7842
  models:
7045
7843
  - regex: 'NOA[_ ]CORE[_ ]FORTE'
@@ -7050,6 +7848,8 @@ NOA:
7050
7848
  model: 'Hummer Lite'
7051
7849
  - regex: 'NOA[_ ]MOVEse'
7052
7850
  model: 'Move SE'
7851
+ - regex: 'NextSE'
7852
+ model: 'Next SE'
7053
7853
  - regex: 'NOA[_ ]NEXT'
7054
7854
  model: 'Next'
7055
7855
  - regex: 'NOA[_ ]VISION[_ ]H3SE'
@@ -7069,6 +7869,11 @@ NOA:
7069
7869
  - regex: 'NOA[_ ]([^;)/ ]+)'
7070
7870
  model: '$1'
7071
7871
 
7872
+ Nobby:
7873
+ regex: 'Nobby[ ]S500[;/) ]'
7874
+ device: 'smartphone'
7875
+ model: 'S500'
7876
+
7072
7877
  # nec
7073
7878
  NEC:
7074
7879
  regex: 'NEC[ _\-]|KGT/2\.0|portalmmm/1\.0 (?:DB|N)|(?:portalmmm|o2imode)/2.0[ ,]N'
@@ -7186,9 +7991,12 @@ Noblex:
7186
7991
 
7187
7992
  # Nomi
7188
7993
  Nomi:
7189
- regex: 'Nomi[ _-]'
7994
+ regex: 'Nomi[ _-]|C101010 Ultra2[;/) ]'
7190
7995
  device: 'smartphone'
7191
7996
  models:
7997
+ - regex: 'C101010 Ultra2'
7998
+ model: 'Ultra 2'
7999
+ device: 'tablet'
7192
8000
  - regex: 'Nomi[ _-]([^;/]+) Build'
7193
8001
  model: '$1'
7194
8002
  - regex: 'Nomi[ _-]([^;/)]+)[;/)]'
@@ -7445,19 +8253,23 @@ OnePlus:
7445
8253
 
7446
8254
  # oppo
7447
8255
  OPPO:
7448
- regex: '(?:OB-)?OPPO[ _]?([a-z0-9]+)|N1T|(?:X90[07][0679]|U707T?|X909T?|R(?:10[01]1|2001|201[07]|6007|7005|7007|80[13579]|81[13579]|82[01379]|83[013]|800[067]|8015|810[679]|811[13]|820[057])[KLSTW]?|N520[79]|N5117|A33f|A33fw|A37fw?|PAAM00|PAC[T|M]00|PBAM00)[);/ ]|R7kf|R7plusf|R7Plusm|A1601|CPH[0-9]{4}|PCAM10|PADM00|RMX18(0[1579]|11|3[13]|2[15]|[45]1|45)|CPH19(69|79|23|1[179])|RMX194[15]|PCCM00|PBAT00|PBCM30|PBEM00|PBFM00|PAFM00'
8256
+ regex: '(?:OB-)?OPPO[ _]?([a-z0-9]+)|N1T|(?:X90[07][0679]|U707T?|X909T?|R(?:10[01]1|2001|201[07]|6007|7005|7007|80[13579]|81[13579]|82[01379]|83[013]|800[067]|8015|810[679]|811[13]|820[057])[KLSTW]?|N520[79]|N5117|A33f|A33fw|A37fw?|PAAM00|PAC[T|M]00|PBAM00)[);/ ]|R7kf|R7plusf|R7Plusm|A1601|CPH[0-9]{4}|PCAM10|PADM00|PBBT00|PBBM[03]0|RMX18(0[1579]|11|3[13]|2[15]|[45]1|45)|CPH19(69|79|23|1[179])|RMX(1827|194[135]|19[01]1|1971)|PC[CD]M00|PBAT00|PBCM[13]0|PBE[MT]00|PBFM00|PAFM00'
7449
8257
  device: 'smartphone'
7450
8258
  models:
7451
8259
  - regex: '(?:OPPO[ _]?)?U707T?[);/ ]'
7452
8260
  model: 'Find Way S'
7453
8261
  - regex: '(?:OPPO[ _]?)?CPH1979[);/ ]'
7454
8262
  model: 'Reno Z'
8263
+ - regex: 'CPH1945'
8264
+ model: 'Reno2 Z'
7455
8265
  - regex: 'CPH1969'
7456
8266
  model: 'F11 Pro'
7457
8267
  - regex: 'CPH1911'
7458
8268
  model: 'F11'
7459
8269
  - regex: 'CPH1917'
7460
8270
  model: 'Reno'
8271
+ - regex: 'CPH1921'
8272
+ model: 'Reno 5G'
7461
8273
  - regex: 'PCCM00'
7462
8274
  model: 'Reno 10X'
7463
8275
  - regex: 'CPH1919'
@@ -7546,6 +8358,12 @@ OPPO:
7546
8358
  model: 'A3s'
7547
8359
  - regex: '(?:OPPO[ _]?)?(?:CPH1809|PBAT00)[);/ ]'
7548
8360
  model: 'A5'
8361
+ - regex: 'CPH1933'
8362
+ model: 'A5 (2020)'
8363
+ - regex: '(?:OPPO[ _]?)?CPH1938[);/ ]'
8364
+ model: 'A9 (EN)'
8365
+ - regex: 'CPH1937'
8366
+ model: 'A9 (2020)'
7549
8367
  - regex: '(?:OPPO[ _]?)?CPH18(19|21)[);/ ]'
7550
8368
  model: 'F7'
7551
8369
  - regex: '(?:OPPO[ _]?)?CPH1823[);/ ]'
@@ -7560,6 +8378,8 @@ OPPO:
7560
8378
  model: 'A3'
7561
8379
  - regex: '(?:OPPO[ _]?)?CPH1851[);/ ]'
7562
8380
  model: 'AX5'
8381
+ - regex: 'CPH1920'
8382
+ model: 'AX5s'
7563
8383
  - regex: '(?:OPPO[ _]?)?CPH1859[);/ ]'
7564
8384
  model: 'F7'
7565
8385
  - regex: '(?:OPPO[ _]?)?CPH1861[);/ ]'
@@ -7568,7 +8388,7 @@ OPPO:
7568
8388
  model: 'K1'
7569
8389
  - regex: 'RMX1811'
7570
8390
  model: 'RealMe C1'
7571
- - regex: 'RMX194[15]'
8391
+ - regex: 'RMX194[135]'
7572
8392
  model: 'RealMe C2'
7573
8393
  - regex: 'RMX1831'
7574
8394
  model: 'RealMe U1'
@@ -7576,9 +8396,9 @@ OPPO:
7576
8396
  model: 'Find X'
7577
8397
  - regex: '(?:OPPO[ _]?)?CPH1877[);/ ]'
7578
8398
  model: 'R17 Pro'
7579
- - regex: '(?:OPPO[ _]?)?(?:CPH1879|PBEM00)[);/ ]'
8399
+ - regex: '(?:OPPO[ _]?)?(?:CPH1879|PBE[MT]00)[);/ ]'
7580
8400
  model: 'R17'
7581
- - regex: '(?:OPPO[ _]?)?CPH1881[);/ ]'
8401
+ - regex: '(?:OPPO[ _]?)?(?:CPH1825|CPH1881)[);/ ]'
7582
8402
  model: 'F9'
7583
8403
  - regex: '(?:OPPO[ _]?)?CPH1893[);/ ]'
7584
8404
  model: 'R17 Neo'
@@ -7586,26 +8406,42 @@ OPPO:
7586
8406
  model: 'A7'
7587
8407
  - regex: '(?:OPPO[ _]?)?CPH1903[);/ ]'
7588
8408
  model: 'AX7'
7589
- - regex: '(?:OPPO[ _]?)?A37f(w)? Build'
8409
+ - regex: '(?:OPPO[ _]?)?A37f(w)?(?: Build|\))'
7590
8410
  model: 'A37f$1'
7591
8411
  - regex: '(?:OPPO[ _]?)?PADM00'
7592
8412
  model: 'A3'
7593
8413
  - regex: '(?:OPPO[ _]?)?PBAM00'
7594
8414
  model: 'A5'
7595
- - regex: '(?:OPPO[ _]?)?A1601 Build'
8415
+ - regex: '(?:OPPO[ _]?)?A1601[);/ ]'
7596
8416
  model: 'F1s'
7597
8417
  - regex: '(?:OPPO[ _]?)?R1011 Build'
7598
8418
  model: 'Joy Plus'
7599
- - regex: '(?:OPPO[ _]?)?(?:PAC[TM]00|PAAM00) Build'
8419
+ - regex: '(?:OPPO[ _]?)?(?:PAC[TM]00|PAAM00)[);/ ]'
7600
8420
  model: 'R15'
8421
+ - regex: 'PBCM10[);/ ]'
8422
+ model: 'R15x'
7601
8423
  - regex: 'RMX180[59]'
7602
8424
  model: 'Realme 2'
7603
8425
  - regex: 'RMX180[17]'
7604
8426
  model: 'Realme 2 Pro'
7605
8427
  - regex: 'RMX1833|RMX182[15]'
7606
8428
  model: 'Realme 3'
8429
+ - regex: 'RMX1827'
8430
+ model: 'Realme 3i'
7607
8431
  - regex: 'RMX1851'
7608
8432
  model: 'Realme 3 Pro'
8433
+ - regex: 'RMX1901'
8434
+ model: 'Realme X'
8435
+ - regex: 'RMX1911'
8436
+ model: 'Realme 5'
8437
+ - regex: 'RMX1971'
8438
+ model: 'Realme 5 Pro'
8439
+ - regex: '(PBBT00|PBBM00)[);/ ]'
8440
+ model: 'A7x'
8441
+ - regex: 'PCDM00[);/ ]'
8442
+ model: 'A7n'
8443
+ - regex: 'PBBM30[);/ ]'
8444
+ model: 'A3s'
7609
8445
  - regex: 'N1T?[);/ ]'
7610
8446
  model: 'N1T'
7611
8447
  device: 'phablet'
@@ -7633,7 +8469,7 @@ Opsson:
7633
8469
 
7634
8470
  # orange
7635
8471
  Orange:
7636
- regex: 'SPV[ \-]?([a-z0-9]+)|Orange[ _-]([^/;]+) Build|SC/IHD92|FunTab ([^/;]+) Build'
8472
+ regex: 'SPV[ \-]?([a-z0-9]+)|Orange[ _-](?!Tahiti-LS\))([^/;]+)( Build|\))(?<!Tahiti-LS\))|SC/IHD92|FunTab ([^/;]+) Build'
7637
8473
  device: 'smartphone'
7638
8474
  models:
7639
8475
  - regex: 'SC/IHD92'
@@ -7645,7 +8481,11 @@ Orange:
7645
8481
  - regex: 'FunTab ([^/;]+) Build'
7646
8482
  model: 'FunTab $1'
7647
8483
  device: 'tablet'
7648
- - regex: 'Orange[ _-]([^/;]+) Build'
8484
+ - regex: 'Orange[ _-](Rise)(3[12]|5[12])[ ;/)]'
8485
+ model: '$1 $2'
8486
+ - regex: 'Orange[ _-](Dive)72[ ;/)]'
8487
+ model: '$1 72'
8488
+ - regex: 'Orange[ _-](Daytona|Dive (30|7[13])|Dublin|Fova|Gova|Hi 4G|Hiro|Kivo|Monte Carlo|Neva 80|Neva play|Nura|Reyo|Rise[_ ](3[034]|40|5[34])|Rono|Roya|San Francisco|Tactile internet 2|Tado|Yomi|Yumo|Zali)[ ;/)]'
7649
8489
  model: '$1'
7650
8490
  - regex: 'SPV[ \-]?([a-z0-9]+)'
7651
8491
  model: 'SPV $1'
@@ -7806,7 +8646,7 @@ Pentagram:
7806
8646
 
7807
8647
  # philips
7808
8648
  Philips:
7809
- regex: 'Philips|AND1E[);/ ]|NETTV/|PI3210G|TLE821L'
8649
+ regex: 'Philips|AND1E[);/ ]|NETTV/|PI3210G|TLE(821L|722G)'
7810
8650
  device: 'smartphone'
7811
8651
  models:
7812
8652
  - regex: 'AND1E(?: TV)?[);/ ]'
@@ -7818,6 +8658,9 @@ Philips:
7818
8658
  - regex: '(TLE821L)[);/ ]'
7819
8659
  model: '$1 4G LTE'
7820
8660
  device: 'tablet'
8661
+ - regex: '(TLE722G)[);/ ]'
8662
+ model: '$1'
8663
+ device: 'tablet'
7821
8664
  - regex: 'Philips, BDP([0-9]{4})'
7822
8665
  model: 'Blu-ray Player (BDP$1)'
7823
8666
  device: 'tv'
@@ -7972,6 +8815,12 @@ Rokit:
7972
8815
  - regex: 'IO Pro'
7973
8816
  model: 'IO Pro'
7974
8817
 
8818
+ # Rombica
8819
+ Rombica:
8820
+ regex: 'SSQ-A0500[);/ ]'
8821
+ device: 'tv'
8822
+ model: 'Smart Stick 4K'
8823
+
7975
8824
  # Rover
7976
8825
  Rover:
7977
8826
  regex: 'Rover ([0-9]+)'
@@ -8012,7 +8861,7 @@ Siemens:
8012
8861
  model: '$1'
8013
8862
  - regex: 'SIE(?:MENS )?[\-]?([a-z0-9]+)'
8014
8863
  model: '$1'
8015
- - regex: '(S55|SL45i)'
8864
+ - regex: '(?:SIE-)?(S55|SL45i)'
8016
8865
  model: '$1'
8017
8866
  - regex: 'portalmmm/2.0 (SI[a-z0-9]+)'
8018
8867
  model: '$1'
@@ -8205,10 +9054,10 @@ Samsung:
8205
9054
  - regex: '(?:SAMSUNG-)?SM-T285'
8206
9055
  device: 'tablet'
8207
9056
  model: 'GALAXY Tab A 7.0" LTE'
8208
- - regex: '(?:SAMSUNG-)?SM-T350'
9057
+ - regex: '(?:SAMSUNG-)?SM-T3[58]0'
8209
9058
  device: 'tablet'
8210
9059
  model: 'GALAXY Tab A 8.0" WiFi'
8211
- - regex: '(?:SAMSUNG-)?SM-(?:P350|T3[58]5(?:Y)?)'
9060
+ - regex: '(?:SAMSUNG-)?SM-(?:P350|T3[58]5)'
8212
9061
  device: 'tablet'
8213
9062
  model: 'GALAXY Tab A 8.0" LTE'
8214
9063
  - regex: '(?:SAMSUNG-)?SM-T295'
@@ -8241,6 +9090,12 @@ Samsung:
8241
9090
  - regex: '(?:SAMSUNG-)?SM-T39[57]'
8242
9091
  device: 'tablet'
8243
9092
  model: 'GALAXY Tab Active 2'
9093
+ - regex: '(?:SAMSUNG-)?SM-M305'
9094
+ device: 'tablet'
9095
+ model: 'GALAXY M30'
9096
+ - regex: '(?:SAMSUNG-)?SM-M405'
9097
+ device: 'tablet'
9098
+ model: 'GALAXY M40'
8244
9099
 
8245
9100
  # explicit smartphone models
8246
9101
  - regex: '(?:SAMSUNG-)?SM-G850[AMSWY]'
@@ -8509,6 +9364,8 @@ Samsung:
8509
9364
  model: 'GALAXY A9 Pro'
8510
9365
  - regex: '(?:SAMSUNG-)?SM-A105[FGM]'
8511
9366
  model: 'GALAXY A10'
9367
+ - regex: '(?:SAMSUNG-)?SM-A107[FM]'
9368
+ model: 'GALAXY A10s'
8512
9369
  - regex: '(?:SAMSUNG-)?SM-A205[FG]'
8513
9370
  model: 'GALAXY A20'
8514
9371
  - regex: '(?:SAMSUNG-)?SM-A202[FG]'
@@ -8517,6 +9374,8 @@ Samsung:
8517
9374
  model: 'GALAXY A30'
8518
9375
  - regex: '(?:SAMSUNG-)?SM-A405FN'
8519
9376
  model: 'GALAXY A40'
9377
+ - regex: '(?:SAMSUNG-)?SM-A3051'
9378
+ model: 'GALAXY A40s'
8520
9379
  - regex: '(?:SAMSUNG-)?SM-A505(?:FN|[FG])'
8521
9380
  model: 'GALAXY A50'
8522
9381
  - regex: '(?:SAMSUNG-)?SM-A705(?:FN|[FG])'
@@ -8537,6 +9396,10 @@ Samsung:
8537
9396
  model: 'GALAXY J1 Ace'
8538
9397
  - regex: '(?:SAMSUNG-)?SM-J200[FGHY]'
8539
9398
  model: 'GALAXY J2'
9399
+ - regex: '(?:SAMSUNG-)?SM-J260AZ'
9400
+ model: 'GALAXY J2 Pure'
9401
+ - regex: '(?:SAMSUNG-)?SM-J260([AFGM]|T1)'
9402
+ model: 'GALAXY J2 Core'
8540
9403
  - regex: '(?:SAMSUNG-)?SM-J(?:210F|250[FM])'
8541
9404
  model: 'GALAXY J2 Pro'
8542
9405
  - regex: '(?:SAMSUNG-)?SM-J320(?:FN|[AFGHMNPV])'
@@ -8561,7 +9424,7 @@ Samsung:
8561
9424
  model: 'GALAXY J6+'
8562
9425
  - regex: '(?:SAMSUNG-)?SM-J410F'
8563
9426
  model: 'GALAXY J4 Core'
8564
- - regex: '(?:SAMSUNG-)?SM-J415FN'
9427
+ - regex: '(?:SAMSUNG-)?SM-J415(?:F|FN)'
8565
9428
  model: 'GALAXY J4+'
8566
9429
  - regex: '(?:SAMSUNG-)?SM-J7[01]0(?:8|F|FN|H|K|M|MN)'
8567
9430
  model: 'GALAXY J7'
@@ -8599,6 +9462,8 @@ Samsung:
8599
9462
  model: 'GALAXY M10'
8600
9463
  - regex: '(?:SAMSUNG-)?SM-M205[FG]'
8601
9464
  model: 'GALAXY M20'
9465
+ - regex: '(?:SAMSUNG-)?SM-M307(F|FN)'
9466
+ model: 'GALAXY M30s'
8602
9467
  - regex: '(?:SAMSUNG-)?SM-G850F'
8603
9468
  model: 'GALAXY Alpha'
8604
9469
  - regex: '(?:SAMSUNG-)?SM-G910S'
@@ -8711,7 +9576,7 @@ Samsung:
8711
9576
  - regex: '(?:SAMSUNG-)?GT-I920[05]'
8712
9577
  model: 'GALAXY Mega 6.3'
8713
9578
  device: 'phablet'
8714
- - regex: '(?:SAMSUNG-)?SM-N930F|SCV34'
9579
+ - regex: '(?:SAMSUNG-)?(?:SM-N930F|SCV34)'
8715
9580
  model: 'GALAXY Note 7'
8716
9581
  device: 'phablet'
8717
9582
  - regex: '(?:SAMSUNG[- ])?SM-N950|SCV37'
@@ -8720,6 +9585,12 @@ Samsung:
8720
9585
  - regex: '(?:SAMSUNG[- ])?SM-N960'
8721
9586
  model: 'GALAXY Note 9'
8722
9587
  device: 'phablet'
9588
+ - regex: '(?:SAMSUNG[- ])?SM-N970(?:0|8|9|D|F|J|K|L|S|U1|U|W8|X)'
9589
+ model: 'GALAXY Note 10'
9590
+ device: 'phablet'
9591
+ - regex: '(?:SAMSUNG[- ])?(?:SM-N975(?:0|F|U|U1|W|X|Xu)|SM-N976[BV])'
9592
+ model: 'GALAXY Note 10+'
9593
+ device: 'phablet'
8723
9594
 
8724
9595
  # explicit feature phones
8725
9596
  - regex: '(?:SAMSUNG-)?GT-E2152'
@@ -9232,9 +10103,14 @@ Prestigio:
9232
10103
  models:
9233
10104
  - regex: 'PMT3277_3G'
9234
10105
  model: 'MultiPad Ranger 7.0 3G'
10106
+ - regex: 'PMT3201_4G'
10107
+ model: 'Grace 4G'
9235
10108
  - regex: 'PMT3287_3G'
9236
10109
  model: 'MultiPad Ranger 8.0 3G'
9237
-
10110
+ - regex: 'PSP7546DUO([ _][A-Z]{2})?'
10111
+ model: 'X Pro'
10112
+ - regex: 'PSP7610DUO([ _][A-Z]{2})?'
10113
+ model: 'S Max'
9238
10114
  - regex: '(PM[PT][0-9]+[a-z0-9_]+)[);/ ]'
9239
10115
  model: '$1'
9240
10116
  - regex: '((?:PAP|PSP)[0-9]+[a-z0-9_]+(?: DUO)?)[);/ ]'
@@ -9259,13 +10135,24 @@ Sanyo:
9259
10135
  - regex: 'MobilePhone ([a-z0-9\-]+)'
9260
10136
  model: '$1'
9261
10137
 
9262
- # Qilive
10138
+ # Qilive (Auchan)
9263
10139
  Qilive:
9264
- regex: 'Qilive [0-9][^;/]*|Q8S55IN4G2'
10140
+ regex: 'Qilive [0-9][^;/]*|Q(8S55IN4G2|10S5[37]IN4G|10S5IN4GR|10S6IN4G|6T7IN)'
9265
10141
  device: 'smartphone'
9266
10142
  models:
9267
10143
  - regex: 'Q8S55IN4G2'
9268
- model: 'Q8S55IN4G2'
10144
+ model: 'Q8 5.5" 4G'
10145
+ - regex: 'Q10S53IN4G'
10146
+ model: 'Q10 5.3" 4G'
10147
+ - regex: 'Q10S57IN4G'
10148
+ model: 'Q10 5.7" 4G'
10149
+ - regex: 'Q10S5IN4GR'
10150
+ model: 'Q10 5.0" 4G'
10151
+ - regex: 'Q10S6IN4G'
10152
+ model: 'Q10 6.0" 4G'
10153
+ - regex: 'Q6T7IN'
10154
+ model: 'Q6'
10155
+ device: 'tablet'
9269
10156
  - regex: 'Qilive ([0-5][^;/]*) Build'
9270
10157
  model: '$1'
9271
10158
  - regex: 'Qilive ([0-5][^;/]*)/'
@@ -9453,7 +10340,7 @@ Star:
9453
10340
 
9454
10341
  # Kindle
9455
10342
  Amazon:
9456
- regex: 'KF(?:OT|TT|JWI|JWA|[DFS]OWI|A[PRSU]WI|T[BH]WI|SAW[IA]|GIWI|SUWI)[);/ ]|Kindle|Silk/\d+\.\d+|Amazon (?:Tate|Jem)|AFT[BMST]|SD4930UR'
10343
+ regex: 'KF(?:OT|TT|JWI|JWA|[DFS]OWI|A[PRSU]WI|T[BH]WI|SAW[IA]|GIWI|SUWI)[);/ ]|Kindle|Silk/\d+\.\d+|Amazon (?:Tate|Jem)|AFT[BMST]|SD4930UR|AEO(BC|KN)[);/ ]'
9457
10344
  device: 'tablet'
9458
10345
  models:
9459
10346
  - regex: 'AFTB'
@@ -9508,10 +10395,26 @@ Amazon:
9508
10395
  - regex: 'Kindle'
9509
10396
  model: 'Kindle'
9510
10397
 
10398
+ - regex: 'AEO(BC|KN)[);/ ]'
10399
+ model: 'Echo'
10400
+ device: 'smart speaker'
10401
+
9511
10402
  # Symphony
9512
10403
  Symphony:
9513
- regex: 'SYMPHONY[ \_]([a-z0-9]+)'
10404
+ regex: 'SYMPHONY[ \_]([a-z0-9]+)|roar (V20|E80)'
9514
10405
  device: 'smartphone'
10406
+ models:
10407
+ - regex: 'roar V20'
10408
+ model: 'Roar V20'
10409
+ - regex: 'roar E80'
10410
+ model: 'Roar E80'
10411
+ - regex: 'SYMPHONY[ \_]([a-z0-9]+)'
10412
+ model: '$1'
10413
+
10414
+ # Syrox
10415
+ Syrox:
10416
+ regex: '(SYX-(?:T70[04]|T10[12]))[;)/ ]'
10417
+ device: 'tablet'
9515
10418
  model: '$1'
9516
10419
 
9517
10420
  # Qtek
@@ -9548,14 +10451,14 @@ T-Mobile:
9548
10451
 
9549
10452
  # Tcl
9550
10453
  TCL:
9551
- regex: 'TCL[ -][a-z0-9]+|(TCL[_ -][^;/]+|7040N) Build|TCLGalaG60|A502DL'
10454
+ regex: 'TCL[_ -][a-z0-9]+|(TCL[_ -][^;/]+|7040N) Build|TCLGalaG60|A502DL'
9552
10455
  device: 'smartphone'
9553
10456
  models:
9554
10457
  - regex: 'TCLGalaG60'
9555
10458
  model: 'Gala G60'
9556
10459
  - regex: 'TCL[_ -]([^;/]+) Build'
9557
10460
  model: '$1'
9558
- - regex: 'TCL[ -]([a-z0-9]+)'
10461
+ - regex: 'TCL[_ -]([a-z0-9]+)'
9559
10462
  model: '$1'
9560
10463
  - regex: '(7040N)'
9561
10464
  model: '$1'
@@ -9574,13 +10477,34 @@ Teclast:
9574
10477
 
9575
10478
  # Tecno Mobile
9576
10479
  Tecno Mobile:
9577
- regex: 'Tecno|Phantom6|Phantom6-Plus'
10480
+ regex: 'Tecno|Phantom6|Phantom6-Plus|DP7C Pro-SGA1'
9578
10481
  device: 'smartphone'
9579
10482
  models:
9580
10483
  - regex: 'Phantom6-Plus'
9581
10484
  model: 'Phantom 6 Plus'
9582
10485
  - regex: 'Phantom6'
9583
10486
  model: 'Phantom 6'
10487
+ - regex: 'TECNO[ _]ID6[);/ ]'
10488
+ model: 'Camon iClick 2'
10489
+ - regex: 'Tecno[ _]7C[);/ ]'
10490
+ model: 'DroidPad 7C'
10491
+ device: 'tablet'
10492
+ - regex: 'DP7C Pro-SGA1[);/ ]'
10493
+ model: 'DroidPad 7C Pro'
10494
+ device: 'tablet'
10495
+ - regex: 'TECNO[ _]DP10A Pro[);/ ]'
10496
+ model: 'DroidPad 10A Pro'
10497
+ device: 'tablet'
10498
+ - regex: 'TECNO[ _]P904[);/ ]'
10499
+ model: 'DroidPad 10D 4G'
10500
+ device: 'tablet'
10501
+ - regex: 'Tecno[ _]CB7[j]?'
10502
+ model: 'Camon i4'
10503
+ - regex: 'Tecno[ _]DP8D[);/ ]'
10504
+ model: 'DroidPad 8D'
10505
+ device: 'tablet'
10506
+ - regex: 'Tecno[ _]LB8'
10507
+ model: 'Pouvoir 3 Plus'
9584
10508
  - regex: 'Tecno ([^;/]+) Build'
9585
10509
  model: '$1'
9586
10510
  - regex: 'Tecno[ _]?([a-z0-9_\-]+)'
@@ -9613,7 +10537,7 @@ Tesco:
9613
10537
 
9614
10538
  # teXet
9615
10539
  teXet:
9616
- regex: 'Texet|(NaviPad [^/;]*) Build|TM-(?:1046|1058|1057|1067|3000|3200R|3500|4003|4071|450[34]|451[30]|4377|4082R|550[83]|5010|5017|5075|5[23]77|6003|6906|702[13]|7055HD|709[69]|9747BT|9758|9751HD|9767|5513|520[410]|5505|507[13]|5581|7859|8044|9748[ _]3G|9720|7047HD[ _]3G|9757|9740|4982|4515|4083|500[3567]|5571|3204R|5016|8043|7047HD[ _]3G|8041HD|8066|705[23]|7041|8041HD|8051|8048|974[96]|973[78]W|974[10]|9743W|9750HD|7043XD|7049|7887|7037W|702[46])|TB-(771A|711A)|X-Force[\(-]?TM-5009\)?|X-Plus[\(-]?TM-5577\)?|X-pad (?:AIR 8|iX 7) 3G'
10540
+ regex: 'Texet|(NaviPad [^/;]*) Build|TM-(?:1046|1058|1057|1067|3000|3200R|3500|4003|4071|450[34]|451[30]|4377|4082R|550[83]|5010|5017|507[4-7]|5[23]77|6003|6906|702[13]|7055HD|709[69]|9747BT|9758|9751HD|9767|5513|520[410]|5505|507[13]|5581|7859|8044|9748[ _]3G|9720|7047HD[ _]3G|9757|9740|4982|4515|4083|500[3567]|5571|3204R|5016|8043|7047HD[ _]3G|8041HD|8066|705[23]|7041|8041HD|8051|8048|974[96]|973[78]W|974[10]|9743W|9750HD|7043XD|7049|7887|7037W|702[46])|TB-(771A|711A)|X-Force[\(-]?TM-5009\)?|X-Plus[\(-]?TM-5577\)?|X-pad (?:AIR 8|iX 7) 3G'
9617
10541
  device: 'tablet'
9618
10542
  models:
9619
10543
  - regex: 'TM-9749'
@@ -9653,7 +10577,7 @@ teXet:
9653
10577
  - regex: 'TM-4503'
9654
10578
  device: 'smartphone'
9655
10579
  model: 'X-Quad'
9656
- - regex: '(TM-(?:3000|3200R|4003|4083|4377|4504|451[30]|500[35]|5[23]77|5571|3204R|520[04]|5581|5505|5075|507[13]|5017|6003|5513))'
10580
+ - regex: '(TM-(?:3000|3200R|4003|4083|4377|4504|451[30]|500[35]|5[23]77|5571|3204R|520[04]|5581|5505|507[13]|5017|507[4-7]|6003|5513))'
9657
10581
  device: 'smartphone'
9658
10582
  model: '$1'
9659
10583
  - regex: 'TM-5006'
@@ -9771,6 +10695,16 @@ Timovi:
9771
10695
  - regex: 'Infinit_Lite_2'
9772
10696
  model: 'Infinit Lite 2'
9773
10697
 
10698
+ # Tooky
10699
+ Tooky:
10700
+ regex: 'TOOKY'
10701
+ device: 'smartphone'
10702
+ models:
10703
+ - regex: 'TOOKY (A19|W1|T8[368]|T1982)[);/ ]'
10704
+ model: '$1'
10705
+ - regex: 'TOOKY A9PLUS[);/ ]'
10706
+ model: 'A9 Plus'
10707
+
9774
10708
  # Tolino
9775
10709
  Tolino:
9776
10710
  regex: 'Tolino Tab ([^/;]+) Build'
@@ -9902,9 +10836,9 @@ Uhappy:
9902
10836
 
9903
10837
  # Unimax
9904
10838
  Unimax:
9905
- regex: 'U(67[013]|680)C'
10839
+ regex: 'U((?:67[013]|680)C|(?:452|504)TL|683CL)[);/ ]'
9906
10840
  device: 'smartphone'
9907
- model: 'U$1C'
10841
+ model: 'U$1'
9908
10842
 
9909
10843
  # Unowhy
9910
10844
  Unowhy:
@@ -10009,6 +10943,11 @@ Unonu:
10009
10943
  - regex: 'Unonu[ _-]?([^;/)]+)[);/ ]'
10010
10944
  model: '$1'
10011
10945
 
10946
+ # UTOK
10947
+ UTOK:
10948
+ regex: 'UTOK (45[01]D)'
10949
+ device: 'smartphone'
10950
+ model: '$1'
10012
10951
 
10013
10952
  # Vastking
10014
10953
  Vastking:
@@ -10045,9 +10984,15 @@ Vitelcom:
10045
10984
  - regex: 'portalmmm/[12].0 (TSM[a-z0-9 ]+)'
10046
10985
  model: '$1'
10047
10986
 
10987
+ # Fengxiang
10988
+ Fengxiang:
10989
+ regex: '(vKB011B|vKB004L)'
10990
+ device: 'tablet'
10991
+ model: '$1'
10992
+
10048
10993
  # VK Mobile
10049
10994
  VK Mobile:
10050
- regex: 'VK(?!share)[\-]?([a-z0-9 ]+)[ ;\)/]'
10995
+ regex: 'VK(?!share)[\-]?([a-z0-9 ]+)([;\)/ ]| Build)'
10051
10996
  device: 'feature phone'
10052
10997
  model: '$1'
10053
10998
 
@@ -10079,6 +11024,12 @@ Vertu:
10079
11024
  device: 'feature phone'
10080
11025
  model: '$1'
10081
11026
 
11027
+ # Venso mobile
11028
+ Venso:
11029
+ regex: '(CX-508)[/;) ]'
11030
+ device: 'smartphone'
11031
+ model: '$1'
11032
+
10082
11033
  # Verizon
10083
11034
  Verizon:
10084
11035
  regex: 'QTA(SUN[12]|XIA1|QZ3|QZ3KID|IR7)|QMV7B'
@@ -10175,8 +11126,12 @@ Vodafone:
10175
11126
  model: 'Smart X9'
10176
11127
  - regex: 'VFD 610'
10177
11128
  model: 'Smart N8'
11129
+ - regex: 'Smart ultra 6'
11130
+ model: 'Smart Ultra 6'
10178
11131
  - regex: 'VFD 700'
10179
11132
  model: 'Smart Ultra 7'
11133
+ - regex: 'VFD 720'
11134
+ model: 'Smart N9'
10180
11135
  - regex: 'VFD 900'
10181
11136
  model: 'Smart Platinum 7'
10182
11137
  - regex: 'Vodafone[ _]875[);/ ]'
@@ -10210,6 +11165,9 @@ Vodafone:
10210
11165
  - regex: 'Smart ?Tab ?4G'
10211
11166
  device: 'tablet'
10212
11167
  model: 'Smart Tab 4G' # Alcatel
11168
+ - regex: 'Smart ?Tab ?4'
11169
+ model: 'Smart Tab 4' # ZTE
11170
+ device: 'tablet'
10213
11171
  - regex: 'SmartTab7[);/ -]'
10214
11172
  model: 'Smart Tab 7' # ZTE
10215
11173
  device: 'tablet'
@@ -10238,7 +11196,7 @@ Vodafone:
10238
11196
 
10239
11197
  # Vonino
10240
11198
  Vonino:
10241
- regex: 'Vonino|Zun[ _]X[OS]?|Xylo[ _][XSP]|Volt[ _][XS]|Gyga[ _](?:X|S|QS|XS)|Pluri[ _](?:[BCMQ]7|[CQ]8)|Magnet[ _]M[19]|Jax[ _](?:Q|QS|S|X|Mini)|Navo_QS|Xavy_T7'
11199
+ regex: 'Vonino|Epic (?:E8|P7)|Gyga[ _](?:X|S|QS|XS)|Jax[ _](?:Q|QS|S|X|Mini)|Magnet[ _]M[19]|Navo_QS|Onyx_(QS|Z)|Orin_QS|Pluri[ _](?:[BCMQ]7|[CQ]8)|Sirius_QS|Volt[ _][XS]|Xavy_T7|Xylo[ _][XSP]|Zun[ _]X[OS]?'
10242
11200
  device: 'smartphone'
10243
11201
  models:
10244
11202
  - regex: 'Zun[ _]XO'
@@ -10269,6 +11227,9 @@ Vonino:
10269
11227
  model: 'Jax $1'
10270
11228
  - regex: 'Jax[ _]Mini'
10271
11229
  model: 'Jax Mini'
11230
+ - regex: 'Epic (E8|P7)'
11231
+ model: 'Epic $1'
11232
+ device: 'tablet'
10272
11233
  - regex: 'Pluri[ _](B|C|M|Q)7'
10273
11234
  model: 'Pluri $17'
10274
11235
  device: 'tablet'
@@ -10281,6 +11242,15 @@ Vonino:
10281
11242
  - regex: 'Navo_QS'
10282
11243
  model: 'Navo QS'
10283
11244
  device: 'tablet'
11245
+ - regex: 'Onyx_(QS|Z)'
11246
+ model: 'Onyx $1'
11247
+ device: 'tablet'
11248
+ - regex: 'Orin_QS'
11249
+ model: 'Orin QS'
11250
+ device: 'tablet'
11251
+ - regex: 'Sirius_QS'
11252
+ model: 'Sirius QS'
11253
+ device: 'tablet'
10284
11254
  - regex: 'Xavy_T7'
10285
11255
  model: 'Xavy T7'
10286
11256
  device: 'tablet'
@@ -10582,13 +11552,13 @@ X-View:
10582
11552
 
10583
11553
  # Xiaomi
10584
11554
  Xiaomi:
10585
- regex: 'Xiaomi(?!/MiuiBrowser)|(?:MI [a-z0-9]+|Mi-4c|MI-One[ _]?[a-z0-9]+|MIX(?: 2S?)?)[);/ ]|HM (?:[^/;]+) (?:Build|MIUI)|(?:2014501|2014011|201481[138]|201302[23]|2013061) Build|Redmi|POCOPHONE|SKR-[AH]0|SKW-H0'
11555
+ regex: 'Xiaomi(?!/MiuiBrowser)|(?:MI [a-z0-9]+|Mi-4c|MI-One[ _]?[a-z0-9]+|MIX(?: 2S?)?)[);/ ]|HM (?:[^/;]+) (?:Build|MIUI)|(?:2014501|2014011|201481[12378]|201302[23]|2013061) Build|Redmi|POCOPHONE|SKR-[AH]0|SKW-[AH]0|POCO F1'
10586
11556
  device: 'smartphone'
10587
11557
  models:
10588
11558
  # specific smartphone models
10589
11559
  - regex: 'SKR-[AH]0'
10590
11560
  model: 'Black Shark'
10591
- - regex: 'SKW-H0'
11561
+ - regex: 'SKW-[AH]0'
10592
11562
  model: 'Black Shark 2'
10593
11563
  - regex: 'Xiaomi_2014501|2014501 Build'
10594
11564
  model: 'Hongmi 4G'
@@ -10596,27 +11566,86 @@ Xiaomi:
10596
11566
  model: 'Hongmi 1S'
10597
11567
  - regex: 'Xiaomi_201302[23]|201302[23] Build'
10598
11568
  model: 'Hongmi'
10599
- - regex: 'Xiaomi_201481[138]|201481[138] Build'
11569
+ - regex: 'Xiaomi_2014818|2014818 Build'
11570
+ model: 'Hongmi 2 3G'
11571
+ - regex: 'Xiaomi_2014817|2014817 Build'
10600
11572
  model: 'Hongmi 2'
11573
+ - regex: 'Xiaomi_201481[123]|201481[123] Build'
11574
+ model: 'Hongmi 2 4G'
11575
+ - regex: 'Mi 9 SE[);/ ]'
11576
+ model: 'MI 9 SE'
11577
+ - regex: 'MI 8 Lite[);/ ]'
11578
+ model: 'MI 8 Lite'
11579
+ - regex: 'MI 5s Plus[);/ ]'
11580
+ model: 'MI 5s Plus'
10601
11581
  - regex: 'Xiaomi_2013061|2013061 Build'
10602
11582
  model: 'MI 3'
10603
11583
  - regex: 'Mi-4c[);/ ]'
10604
11584
  model: 'MI 4C'
11585
+ - regex: 'MI MAX 3[);/ ]'
11586
+ model: 'MI MAX 3'
11587
+ - regex: 'MI MAX 2[);/ ]'
11588
+ model: 'MI MAX 2'
11589
+ - regex: 'Mi A2 Lite[);/ ]'
11590
+ model: 'MI A2 Lite'
11591
+ - regex: 'MIX 3[);/ ]'
11592
+ model: 'MI MIX 3'
10605
11593
  - regex: 'MIX 2S[);/ ]'
10606
11594
  model: 'MI MIX 2S'
10607
11595
  - regex: 'MIX 2[);/ ]'
10608
11596
  model: 'MI MIX 2'
10609
11597
  - regex: 'MIX[);/ ]'
10610
11598
  model: 'MI MIX'
10611
- - regex: 'POCOPHONE F1'
11599
+ - regex: 'POCOPHONE F1|POCO F1'
10612
11600
  model: 'Pocophone F1'
11601
+ - regex: 'Redmi 5 Plus'
11602
+ model: 'Redmi 5 Plus'
11603
+ - regex: 'HM 2A[);/ ]'
11604
+ model: 'Redmi 2A'
11605
+ - regex: 'HM 1S[CW]?[);/ ]'
11606
+ model: 'Redmi 1S'
11607
+ - regex: 'HM 1[);/ ]'
11608
+ model: 'Redmi 1'
11609
+ - regex: 'MI PAD 4 PLUS[);/ ]'
11610
+ model: 'Mi Pad 4 Plus'
11611
+ device: 'tablet'
11612
+ - regex: 'MI PAD 4[);/ ]'
11613
+ model: 'Mi Pad 4'
11614
+ device: 'tablet'
11615
+ - regex: 'MI PAD 3[);/ ]'
11616
+ model: 'Mi Pad 3'
11617
+ device: 'tablet'
11618
+ - regex: 'MI PAD 2[);/ ]'
11619
+ model: 'Mi Pad 2'
11620
+ device: 'tablet'
11621
+ - regex: 'MI PAD[);/ ]'
11622
+ model: 'Mi Pad'
11623
+ device: 'tablet'
11624
+ - regex: 'HM NOTE 1W (?:Build|MIUI)'
11625
+ device: 'phablet'
11626
+ model: 'Redmi Note'
11627
+ - regex: 'HM NOTE 1TD (?:Build|MIUI)'
11628
+ device: 'phablet'
11629
+ model: 'Hongmi Note 1TD'
11630
+ - regex: 'HM NOTE 1(?:LTE|S)(?:W|GLOBAL|TD)? (?:Build|MIUI)'
11631
+ device: 'phablet'
11632
+ model: 'Redmi Note 4G'
11633
+ - regex: 'Redmi Note 6 Pro'
11634
+ model: 'Redmi Note 6 Pro'
11635
+ device: 'phablet'
11636
+ - regex: 'Redmi Note 5 Pro'
11637
+ model: 'Redmi Note 5 Pro'
11638
+ device: 'phablet'
11639
+ - regex: 'Redmi Note 5A Prime'
11640
+ model: 'Redmi Note 5A Prime'
11641
+ device: 'phablet'
10613
11642
 
10614
- - regex: 'Redmi Note ([^;/) ]+)?'
11643
+ - regex: 'Redmi[ _]Note[ _]([^;/) ]+)?'
10615
11644
  model: 'Redmi Note $1'
10616
11645
  device: 'phablet'
10617
- - regex: 'Redmi ([^;/) ]+)?'
11646
+ - regex: 'Redmi[ _]([^;/) ]+)?'
10618
11647
  model: 'Redmi $1'
10619
- - regex: 'MI Note ([^;/) ]+)?'
11648
+ - regex: 'MI[ _]Note[ _]([^;/) ]+)?'
10620
11649
  model: 'MI Note $1'
10621
11650
  device: 'phablet'
10622
11651
  - regex: '(MI(?:-One)?[ _](?:[^;/]*))Build'
@@ -10646,7 +11675,7 @@ Xolo:
10646
11675
  models:
10647
11676
  - regex: 'BLACK-1XM'
10648
11677
  model: 'Black 1X'
10649
- - regex: '(Q600|Q700s?|Q800|Q1000s|Q1000[ _]Opus|Q1010i|Q2000|Omega[ _]5.[05])[);/ ]'
11678
+ - regex: '(Q600 Club|Q600|Q700s?|Q800|Q1000s Plus|Q1000s|Q1000[ _]Opus|Q1010i|Q2000|Omega[ _]5.[05])[);/ ]'
10650
11679
  model: '$1'
10651
11680
  - regex: 'Xolo[ _]?([^;/]+) Build'
10652
11681
  model: '$1'
@@ -10915,6 +11944,18 @@ Toshiba:
10915
11944
  - regex: 'portalmmm/[12].0 (TS[a-z0-9 ]+)'
10916
11945
  model: '$1'
10917
11946
 
11947
+ # Vivax
11948
+ Vivax:
11949
+ regex: 'VIVAX|(Fly5[_ ]Lite)[;)/ ]'
11950
+ device: 'smartphone'
11951
+ models:
11952
+ - regex: 'Fly5[_ ]Lite'
11953
+ model: 'Fly 5 Lite'
11954
+ - regex: 'VIVAX[ _]Fly3'
11955
+ model: 'Fly 3'
11956
+ - regex: 'SMART Point X5010'
11957
+ model: 'Smart Point X5010'
11958
+
10918
11959
  # Fly
10919
11960
  Fly:
10920
11961
  regex: 'Fly(?!Flow|touch)|FS50[1-9]|FS51[0-8]|FS52[0-9]|FS530|FS55[134]|FS40[1-9]|FS45[1-9]|4FS06|MERIDIAN-|(?:IQ[0-9]{3,})[ _]?(?:Quad|Firebird|Quattro|Turbo|Magic)?(?: Build|[;/\)])'
@@ -11184,22 +12225,53 @@ Zenek:
11184
12225
  Zopo:
11185
12226
  regex: '(?:ZOPO[_ ])?(Flash X3|ZP[0-9]{2,}[^/;]+) Build'
11186
12227
  device: 'smartphone'
11187
- model: '$1'
12228
+ models:
12229
+ - regex: 'ZP998[);/ ]'
12230
+ model: 'C2 II'
12231
+ - regex: '(?:ZOPO_)?ZP980[+][);/ ]'
12232
+ model: 'ZP980+'
12233
+ - regex: '(?:ZOPO_)?ZP980[);/ ]'
12234
+ model: 'Scorpio'
12235
+ - regex: 'ZP952[);/ ]'
12236
+ model: 'Speed 7 Plus'
12237
+ - regex: 'ZP951[);/ ]'
12238
+ model: 'Speed 7'
12239
+ - regex: 'ZP950[+h]?[);/ ]'
12240
+ model: 'Leader Max'
12241
+ - regex: 'ZP(?:900H?|910)[);/ ]'
12242
+ model: 'Leader'
12243
+ - regex: 'ZP(?:800H|810)[);/ ]'
12244
+ model: 'Libero HD'
12245
+ - regex: 'ZP500[+]?[);/ ]'
12246
+ model: 'Libero'
12247
+ - regex: 'ZP330[);/ ]'
12248
+ model: 'Color C'
12249
+ - regex: 'ZP300[S+]?[);/ ]'
12250
+ model: 'Field'
12251
+ - regex: 'ZP200[+]?[);/ ]'
12252
+ model: 'Shining'
12253
+ - regex: 'ZP100[);/ ]'
12254
+ model: 'Pilot'
12255
+
12256
+ - regex: '(Flash X3|ZP[0-9]{2,}[^/;]+) Build'
12257
+ model: '$1'
11188
12258
 
11189
12259
  # ZTE
11190
12260
  ZTE:
11191
- regex: 'ZTE|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade (?:L110|L[2357]|L7A|S6|V[6789]|V8Q|V8 SE|V9 VITA|X7|A(310|460|465|475|520|530|602)|V580)|N9[15]8St|NX(?:403A|404H|406E|40[X2]|507J|503A|505J|506J|508J|510J|512J|511J|513J|521J|523J_V1|529J|531J|541J|549J|551J|563J|569[HJ]|573J|575J|591J|595J|597J|601J|907J|616J)|N951[0579]|N9180|N9101|N913[67]|N952[01]|N9560|N9810|N799D|[UV]9180|[UV]9815|Z(?:233V|331|667T|768G|792|81[25]|82[08]|83[12359]|85[125]|851M|(557|717|798|836|861|916)BL|986DL|(232|718|828)TL|(233|353|558|717|799|837|862|899|917|963)VL|955A|95[678]|965|97[018]|98[1237]|986U|999)|Apex2|G (LTE|Lux)|Vec)[);/ ]|KIS II Max|Kis 3'
12261
+ regex: 'ZTE|AxonPhone|([a-z0-9]+)_USA_Cricket|(?:Blade (?:L110|L[2357]|L7A|S6|V[6789]|V8Q|V8 SE|V9 VITA|X7|A(310|460|465|475|520|530|602)|V580)|N9[15]8St|NX(?:403A|404H|406E|40[X2]|507J|503A|505J|506J|508J|510J|512J|511J|513J|521J|523J_V1|529J|531J|541J|549J|551J|563J|569[HJ]|573J|575J|591J|595J|597J|601J|907J|616J)|N951[0579]|N9180|N9101|N913[67]|N952[01]|N9560|N9810|N799D|[UV]9180|[UV]9815|Z(?:233V|331|667T|768G|792|81[25]|82[08]|83[12359]|85[125]|851M|(557|71[67]|798|836|861|916)BL|986DL|(232|718|828)TL|(233|353|558|717|799|837|862|899|917|963)VL|955A|95[678]|965|97[018]|98[1237]|986U|999)|Apex2|G (LTE|Lux)|Vec)[);/ ]|KIS II Max|Kis 3|Z930L'
11192
12262
  device: 'smartphone'
11193
12263
  models:
11194
12264
  # explicit smartphone models
11195
12265
  - regex: 'N799D[);/ ]'
11196
- model: 'MTS Blaze 4'
12266
+ model: 'Blade Eg'
11197
12267
  - regex: 'N918St[);/ ]'
11198
12268
  model: 'V5S'
11199
12269
  - regex: 'N958St[);/ ]'
11200
12270
  model: 'V5 Max'
11201
12271
  - regex: 'N9101[);/ ]'
11202
12272
  model: 'Imperial'
12273
+ - regex: 'N9120[);/ ]'
12274
+ model: 'Avid'
11203
12275
  - regex: 'N9136[);/ ]'
11204
12276
  model: 'Prestige 2'
11205
12277
  - regex: 'N9137[);/ ]'
@@ -11207,11 +12279,11 @@ ZTE:
11207
12279
  - regex: 'N9180[);/ ]'
11208
12280
  model: 'V5'
11209
12281
  - regex: 'N9510[);/ ]'
11210
- model: 'Wrap 4G'
12282
+ model: 'Warp 4G'
11211
12283
  - regex: 'N9517[);/ ]'
11212
12284
  model: 'Blade Force'
11213
12285
  - regex: 'N9515[);/ ]'
11214
- model: 'Wrap Sync'
12286
+ model: 'Warp Sync'
11215
12287
  - regex: 'N9519[);/ ]'
11216
12288
  model: 'Warp 7'
11217
12289
  - regex: 'N9520[);/ ]'
@@ -11224,8 +12296,8 @@ ZTE:
11224
12296
  model: 'Vital'
11225
12297
  - regex: 'NX40[X2][);/ ]'
11226
12298
  model: 'Nubia Z5 mini'
11227
- - regex: 'NX(403A|404H)[);/ ]'
11228
- model: 'Nubia Z5S mini'
12299
+ - regex: 'NX(403[AE]|406E|404H)[);/ ]'
12300
+ model: 'Nubia Z5S Mini'
11229
12301
  - regex: 'NX503A[);/ ]'
11230
12302
  model: 'Nubia Z5S'
11231
12303
  - regex: 'NX506J[);/ ]'
@@ -11254,8 +12326,10 @@ ZTE:
11254
12326
  model: 'Nubia Z18S'
11255
12327
  - regex: 'NX551J[);/ ]'
11256
12328
  model: 'Nubia M2'
11257
- - regex: '(?:NX569H|NX563J)[);/ ]'
12329
+ - regex: 'NX563J[);/ ]'
11258
12330
  model: 'Nubia Z17'
12331
+ - regex: 'NX569H[);/ ]'
12332
+ model: 'Nubia Z17 Mini'
11259
12333
  - regex: 'NX595J'
11260
12334
  model: 'Nubia Z17S'
11261
12335
  - regex: 'NX513J[);/ ]'
@@ -11279,12 +12353,34 @@ ZTE:
11279
12353
  - regex: '[UV]9180[);/ ]'
11280
12354
  model: 'V5 Red Bull'
11281
12355
  - regex: '[UV]9815[);/ ]'
11282
- model: 'Grand Memo'
12356
+ model: 'Grand Memo LTE'
12357
+ - regex: 'V779M'
12358
+ model: 'Joey Jump 2'
12359
+ - regex: 'V807'
12360
+ model: 'Blade C'
12361
+ - regex: 'V809'
12362
+ model: 'Blade C2'
12363
+ - regex: '(?:ZTE_)?V829'
12364
+ model: 'Blade G Pro'
12365
+ - regex: 'V882'
12366
+ model: 'Lord'
12367
+ - regex: 'V967S'
12368
+ model: 'Grand X2'
12369
+ - regex: 'V970M?|V987'
12370
+ model: 'Grand X'
12371
+ - regex: 'V8000'
12372
+ model: 'Nova 4'
12373
+ - regex: 'Z95[67]'
12374
+ model: 'Grand X4'
11283
12375
  - regex: 'Z987'
11284
12376
  model: 'Grand X Max+'
12377
+ - regex: '(?:ZTE_)?Grand[ _]Era'
12378
+ model: 'Grand Era'
12379
+ - regex: 'V788D'
12380
+ model: 'Kis Plus'
11285
12381
  - regex: 'Z331[);/ ]'
11286
12382
  model: 'Z331'
11287
- - regex: 'Blade (A(310|460|465|475|520|530|602)|L110|V580)[);/ ]'
12383
+ - regex: 'Blade (A(0620|310|452|460|462|465|475|510|512|520|530|602|612|910)|L110|V0730|V0800|V580|V1000)[);/ ]'
11288
12384
  model: 'Blade $1'
11289
12385
  - regex: 'Blade L2 Plus[);/ ]'
11290
12386
  model: 'Blade L2 Plus'
@@ -11292,24 +12388,36 @@ ZTE:
11292
12388
  model: 'Blade L2'
11293
12389
  - regex: 'Blade L3 Plus[);/ ]'
11294
12390
  model: 'Blade L3 Plus'
12391
+ - regex: 'Blade L3 Apex[);/ ]'
12392
+ model: 'Blade L3 Apex'
11295
12393
  - regex: 'Blade L3[);/ ]'
11296
12394
  model: 'Blade L3'
12395
+ - regex: 'Blade L5 Plus[);/ ]'
12396
+ model: 'Blade L5 Plus'
11297
12397
  - regex: 'Blade L5[);/ ]'
11298
12398
  model: 'Blade L5'
12399
+ - regex: 'Blade L6[);/ ]'
12400
+ model: 'Blade L6'
12401
+ - regex: 'Blade L7A[);/ ]'
12402
+ model: 'Blade L7A'
12403
+ - regex: 'Blade L7[);/ ]'
12404
+ model: 'Blade L7'
11299
12405
  - regex: 'Blade L8[);/ ]'
11300
12406
  model: 'Blade L8'
12407
+ - regex: 'Blade S6 Plus[);/ ]'
12408
+ model: 'Blade S6 Plus'
11301
12409
  - regex: 'Blade S6[);/ ]'
11302
12410
  model: 'Blade S6'
12411
+ - regex: 'T920[);/ ]'
12412
+ model: 'Blade S7'
11303
12413
  - regex: 'Blade V6 MAX[);/ ]'
11304
12414
  model: 'Blade V6 Max'
11305
12415
  - regex: 'Blade V6 Plus[);/ ]'
11306
12416
  model: 'Blade V6 Plus'
11307
12417
  - regex: 'Blade V6[);/ ]'
11308
12418
  model: 'Blade V6'
11309
- - regex: 'Blade L7A[);/ ]'
11310
- model: 'Blade L7A'
11311
- - regex: 'Blade L7[);/ ]'
11312
- model: 'Blade L7'
12419
+ - regex: 'Blade (?:V7 Lite|V0720)[);/ ]'
12420
+ model: 'Blade V7 Lite'
11313
12421
  - regex: 'Blade V7[);/ ]'
11314
12422
  model: 'Blade V7'
11315
12423
  - regex: 'Blade X7[);/ ]'
@@ -11322,6 +12430,12 @@ ZTE:
11322
12430
  model: 'Blade V9 Vita'
11323
12431
  - regex: 'Blade V9[);/ ]'
11324
12432
  model: 'Blade V9'
12433
+ - regex: 'Blade V10 Vita[);/ ]'
12434
+ model: 'Blade V10 Vita'
12435
+ - regex: 'BLADE V0820[);/ ]'
12436
+ model: 'Blade V8 Lite'
12437
+ - regex: 'BLADE V0850[);/ ]'
12438
+ model: 'Blade V8 Mini'
11325
12439
  - regex: '(Apex2|G (LTE|Lux)|Vec)'
11326
12440
  model: 'Blade $1'
11327
12441
  - regex: 'Z768G[);/ ]'
@@ -11336,6 +12450,8 @@ ZTE:
11336
12450
  model: 'Blade V8 Pro'
11337
12451
  - regex: 'Z839'
11338
12452
  model: 'Blade Vantage'
12453
+ - regex: 'Z930L'
12454
+ model: 'Unico LTE'
11339
12455
  - regex: 'Z965'
11340
12456
  model: 'Blade X'
11341
12457
  - regex: 'Z981'
@@ -11346,16 +12462,14 @@ ZTE:
11346
12462
  model: 'Blade X Max'
11347
12463
  - regex: 'Z717[BV]L[);/ ]'
11348
12464
  model: 'Citrine LTE'
11349
- - regex: 'Z233V'
11350
- model: 'Cymbal LTE'
11351
12465
  - regex: 'Z233VL'
11352
12466
  model: 'Cymbal-C LTE'
12467
+ - regex: 'Z233V'
12468
+ model: 'Cymbal LTE'
11353
12469
  - regex: 'Z232TL'
11354
12470
  model: 'Cymbal-G LTE'
11355
12471
  - regex: 'Z353VL'
11356
12472
  model: 'Cymbal-T LTE'
11357
- - regex: 'Z95[67]'
11358
- model: 'Grand X 4'
11359
12473
  - regex: 'Z718TL'
11360
12474
  model: 'Jasper LTE'
11361
12475
  - regex: 'KIS II Max'
@@ -11368,8 +12482,6 @@ ZTE:
11368
12482
  model: 'Majesty Pro Plus LTE'
11369
12483
  - regex: 'Z828TL'
11370
12484
  model: 'Midnight Pro LTE'
11371
- - regex: 'NX406E[);/ ]'
11372
- model: 'Nubia Z5S'
11373
12485
  - regex: 'Z792'
11374
12486
  model: 'Fanfare'
11375
12487
  - regex: 'Z812'
@@ -11383,7 +12495,7 @@ ZTE:
11383
12495
  - regex: 'Z835'
11384
12496
  model: 'Maven 3'
11385
12497
  - regex: 'Z851[);/ ]'
11386
- model: 'Prelude+'
12498
+ model: 'Prelude Plus'
11387
12499
  - regex: 'Z851M'
11388
12500
  model: 'Overture 3'
11389
12501
  - regex: 'Z852'
@@ -11414,15 +12526,37 @@ ZTE:
11414
12526
  model: 'ZMax Z970'
11415
12527
  - regex: 'Z986DL'
11416
12528
  model: 'MAX Blue LTE'
12529
+ - regex: 'Z992'
12530
+ model: 'Avail 2'
11417
12531
  - regex: 'Z999'
11418
12532
  model: 'Axon M'
11419
- - regex: 'A2017U'
12533
+ - regex: 'B2016'
12534
+ model: 'Axon Mini'
12535
+ - regex: 'A2015'
12536
+ model: 'Axon Tianji'
12537
+ - regex: 'A2017[GU]?'
11420
12538
  model: 'Axon 7'
12539
+ - regex: 'A2019G Pro'
12540
+ model: 'Axon Pro'
11421
12541
  - regex: 'B2017G'
11422
12542
  model: 'Axon 7 Mini'
12543
+ - regex: 'A2020G? Pro[);/ ]'
12544
+ model: 'Axon 10 Pro'
11423
12545
  - regex: 'Z667T'
11424
12546
  model: 'Zinger'
11425
-
12547
+ - regex: 'V?975|geek'
12548
+ model: 'Geek'
12549
+ - regex: 'Z716BL'
12550
+ model: 'Citrine LTE'
12551
+ - regex: 'X500'
12552
+ model: 'Score'
12553
+ - regex: 'X501'
12554
+ model: 'Groove'
12555
+ - regex: 'G-X991'
12556
+ model: 'Rio'
12557
+ - regex: 'F-450'
12558
+ model: 'Adamant'
12559
+
11426
12560
  - regex: 'AxonPhone ([^;/]+) Build'
11427
12561
  model: 'AxonPhone $1'
11428
12562
  - regex: '([a-z0-9]+)_USA_Cricket'
@@ -11504,11 +12638,19 @@ MTC:
11504
12638
 
11505
12639
  # MegaFon
11506
12640
  MegaFon:
11507
- regex: 'MFLoginPh'
12641
+ regex: 'MFLoginPh|(MFLogin4|MS3B|SP-A5|SP-A20i)[)\; ]'
11508
12642
  device: 'smartphone'
11509
12643
  models:
11510
12644
  - regex: 'MFLoginPh'
11511
12645
  model: 'Login+'
12646
+ - regex: 'MFLogin4'
12647
+ model: 'Login 4 LTE'
12648
+ - regex: 'MS3B'
12649
+ model: 'Optima'
12650
+ - regex: 'SP-A20i'
12651
+ model: 'Mint'
12652
+ - regex: '(SP-A5)'
12653
+ model: '$1'
11512
12654
 
11513
12655
  # Inoi
11514
12656
  Inoi:
@@ -11569,6 +12711,12 @@ Simbans:
11569
12711
  - regex: 'SX2W'
11570
12712
  model: 'SX2W'
11571
12713
 
12714
+ # MYFON
12715
+ MYFON:
12716
+ regex: 'MYPAD7s'
12717
+ device: 'tablet'
12718
+ model: 'My Pad 7s'
12719
+
11572
12720
  # X-TIGI
11573
12721
  X-TIGI:
11574
12722
  regex: 'X[-_]TIGI'
@@ -11585,6 +12733,24 @@ X-TIGI:
11585
12733
  - regex: 'X[-_]TIGI[ _-]([^/;)]+) Build'
11586
12734
  model: '$1'
11587
12735
 
12736
+ # Xiaolajiao
12737
+ Xiaolajiao:
12738
+ regex: '(LA2-(?:L|S[N]?))[);/ ]'
12739
+ device: 'smartphone'
12740
+ model: '$1'
12741
+
12742
+ # Ritmix
12743
+ Ritmix:
12744
+ regex: 'RMD[-_](10(?:2[68]|5[89])|726)[);/ ]'
12745
+ device: 'tablet'
12746
+ model: 'RMD-$1'
12747
+
12748
+ # Ross&Moor
12749
+ 'Ross&Moor':
12750
+ regex: 'RMD[-_](974R|600)[);/ ]'
12751
+ device: 'tablet'
12752
+ model: 'RMD-$1'
12753
+
11588
12754
  # R-TV
11589
12755
  R-TV:
11590
12756
  regex: 'R-TV BOX[ _]?(MINI\+|X99|X10 PRO|[RXS]10)'
@@ -11618,7 +12784,17 @@ Yandex:
11618
12784
  device: 'smartphone'
11619
12785
  model: '$1'
11620
12786
 
12787
+ # FORME
12788
+ FORME:
12789
+ regex: 'FORME[ _-]'
12790
+ device: 'smartphone'
12791
+ models:
12792
+ - regex: 'FORME[ _-]F520[;)\ ]'
12793
+ model: 'Forever'
12794
+ - regex: 'FORME[ _-](A37|R7S)[;)\ ]'
12795
+ model: '$1'
12796
+
11621
12797
  Shuttle:
11622
12798
  regex: '(PNT-704[025])[;)/ ]'
11623
12799
  device: 'tablet'
11624
- model: '$1'
12800
+ model: '$1'