@myinterview/widget-react 1.1.34-development-2caedc5 → 1.1.34-development-976900f

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.
package/dist/esm/index.js CHANGED
@@ -406,14 +406,14 @@ function requireReactPropTypesSecret () {
406
406
  return ReactPropTypesSecret_1;
407
407
  }
408
408
 
409
- var has$1;
409
+ var has$2;
410
410
  var hasRequiredHas;
411
411
 
412
412
  function requireHas () {
413
- if (hasRequiredHas) return has$1;
413
+ if (hasRequiredHas) return has$2;
414
414
  hasRequiredHas = 1;
415
- has$1 = Function.call.bind(Object.prototype.hasOwnProperty);
416
- return has$1;
415
+ has$2 = Function.call.bind(Object.prototype.hasOwnProperty);
416
+ return has$2;
417
417
  }
418
418
 
419
419
  /**
@@ -3980,7 +3980,7 @@ function getValue(rootNode, configuration) {
3980
3980
  var config = getConfiguration([rootNode], configuration);
3981
3981
  return getValueFromAdj(rootNode, getAdjList(config));
3982
3982
  }
3983
- function has(iterable, item) {
3983
+ function has$1(iterable, item) {
3984
3984
  if (Array.isArray(iterable)) {
3985
3985
  return iterable.some(function (member) {
3986
3986
  return member === item;
@@ -4001,7 +4001,7 @@ function nextEvents(configuration) {
4001
4001
  function isInFinalState(configuration, stateNode) {
4002
4002
  if (stateNode.type === 'compound') {
4003
4003
  return getChildren(stateNode).some(function (s) {
4004
- return s.type === 'final' && has(configuration, s);
4004
+ return s.type === 'final' && has$1(configuration, s);
4005
4005
  });
4006
4006
  }
4007
4007
 
@@ -6682,7 +6682,7 @@ function () {
6682
6682
  })), _d = _c.next(); !_d.done; _d = _c.next()) {
6683
6683
  var sn = _d.value;
6684
6684
 
6685
- if (!has(prevConfig, sn) || has(transition.exitSet, sn) || sn.parent && entrySet.has(sn.parent)) {
6685
+ if (!has$1(prevConfig, sn) || has$1(transition.exitSet, sn) || sn.parent && entrySet.has(sn.parent)) {
6686
6686
  entrySet.add(sn);
6687
6687
  }
6688
6688
  }
@@ -6702,7 +6702,7 @@ function () {
6702
6702
  for (var prevConfig_1 = __values$1(prevConfig), prevConfig_1_1 = prevConfig_1.next(); !prevConfig_1_1.done; prevConfig_1_1 = prevConfig_1.next()) {
6703
6703
  var sn = prevConfig_1_1.value;
6704
6704
 
6705
- if (!has(resolvedConfig, sn) || has(transition.exitSet, sn.parent)) {
6705
+ if (!has$1(resolvedConfig, sn) || has$1(transition.exitSet, sn.parent)) {
6706
6706
  transition.exitSet.push(sn);
6707
6707
  }
6708
6708
  }
@@ -12836,935 +12836,1209 @@ var platform$1 = {exports: {}};
12836
12836
 
12837
12837
  var platform = platform$1.exports;
12838
12838
 
12839
- var uaParser = {exports: {}};
12839
+ // Generated ESM version of ua-parser-js
12840
+ // DO NOT EDIT THIS FILE!
12841
+ // Source: /src/main/ua-parser.js
12842
+
12843
+ /////////////////////////////////////////////////////////////////////////////////
12844
+ /* UAParser.js v2.0.0-beta.1
12845
+ Copyright © 2012-2023 Faisal Salman <f@faisalman.com>
12846
+ AGPLv3 License *//*
12847
+ Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
12848
+ Supports browser & node.js environment.
12849
+ Demo : https://faisalman.github.io/ua-parser-js
12850
+ Source : https://github.com/faisalman/ua-parser-js */
12851
+ /////////////////////////////////////////////////////////////////////////////////
12852
+
12853
+ /* jshint esversion: 6 */
12854
+ /* globals window */
12855
+
12856
+
12857
+
12858
+ //////////////
12859
+ // Constants
12860
+ /////////////
12861
+
12862
+
12863
+ var LIBVERSION = '2.0.0-beta.1',
12864
+ EMPTY = '',
12865
+ UNKNOWN = '?',
12866
+ FUNC_TYPE = 'function',
12867
+ UNDEF_TYPE = 'undefined',
12868
+ OBJ_TYPE = 'object',
12869
+ STR_TYPE = 'string',
12870
+ MAJOR = 'major',
12871
+ MODEL = 'model',
12872
+ NAME = 'name',
12873
+ TYPE = 'type',
12874
+ VENDOR = 'vendor',
12875
+ VERSION$1 = 'version',
12876
+ ARCHITECTURE= 'architecture',
12877
+ CONSOLE = 'console',
12878
+ MOBILE = 'mobile',
12879
+ TABLET = 'tablet',
12880
+ SMARTTV = 'smarttv',
12881
+ WEARABLE = 'wearable',
12882
+ EMBEDDED = 'embedded',
12883
+ USER_AGENT = 'user-agent',
12884
+ UA_MAX_LENGTH = 350,
12885
+ BRANDS = 'brands',
12886
+ FORMFACTOR = 'formFactor',
12887
+ FULLVERLIST = 'fullVersionList',
12888
+ PLATFORM = 'platform',
12889
+ PLATFORMVER = 'platformVersion',
12890
+ BITNESS = 'bitness',
12891
+ CH_HEADER = 'sec-ch-ua',
12892
+ CH_HEADER_FULL_VER_LIST = CH_HEADER + '-full-version-list',
12893
+ CH_HEADER_ARCH = CH_HEADER + '-arch',
12894
+ CH_HEADER_BITNESS = CH_HEADER + '-' + BITNESS,
12895
+ CH_HEADER_FORM_FACTOR = CH_HEADER + '-form-factor',
12896
+ CH_HEADER_MOBILE = CH_HEADER + '-' + MOBILE,
12897
+ CH_HEADER_MODEL = CH_HEADER + '-' + MODEL,
12898
+ CH_HEADER_PLATFORM = CH_HEADER + '-' + PLATFORM,
12899
+ CH_HEADER_PLATFORM_VER = CH_HEADER_PLATFORM + '-version',
12900
+ CH_ALL_VALUES = [BRANDS, FULLVERLIST, MOBILE, MODEL, PLATFORM, PLATFORMVER, ARCHITECTURE, FORMFACTOR, BITNESS],
12901
+ UA_BROWSER = 'browser',
12902
+ UA_CPU = 'cpu',
12903
+ UA_DEVICE = 'device',
12904
+ UA_ENGINE = 'engine',
12905
+ UA_OS = 'os',
12906
+ UA_RESULT = 'result',
12907
+ AMAZON = 'Amazon',
12908
+ APPLE = 'Apple',
12909
+ ASUS = 'ASUS',
12910
+ BLACKBERRY = 'BlackBerry',
12911
+ GOOGLE = 'Google',
12912
+ HUAWEI = 'Huawei',
12913
+ LG = 'LG',
12914
+ MICROSOFT = 'Microsoft',
12915
+ MOTOROLA = 'Motorola',
12916
+ SAMSUNG = 'Samsung',
12917
+ SHARP = 'Sharp',
12918
+ SONY = 'Sony',
12919
+ XIAOMI = 'Xiaomi',
12920
+ ZEBRA = 'Zebra',
12921
+ PREFIX_MOBILE = 'Mobile ',
12922
+ SUFFIX_BROWSER = ' Browser',
12923
+ CHROME = 'Chrome',
12924
+ EDGE = 'Edge',
12925
+ FIREFOX = 'Firefox',
12926
+ OPERA = 'Opera',
12927
+ FACEBOOK = 'Facebook',
12928
+ WINDOWS = 'Windows';
12929
+
12930
+ var NAVIGATOR = (typeof window !== UNDEF_TYPE && window.navigator) ?
12931
+ window.navigator :
12932
+ undefined,
12933
+ NAVIGATOR_UADATA = (NAVIGATOR && NAVIGATOR.userAgentData) ?
12934
+ NAVIGATOR.userAgentData :
12935
+ undefined;
12936
+
12937
+ ///////////
12938
+ // Helper
12939
+ //////////
12940
+
12941
+ var extend$1 = function (regexes, extensions) {
12942
+ var mergedRegexes = {};
12943
+ for (var i in regexes) {
12944
+ mergedRegexes[i] = extensions[i] && extensions[i].length % 2 === 0 ? extensions[i].concat(regexes[i]) : regexes[i];
12945
+ }
12946
+ return mergedRegexes;
12947
+ },
12948
+ enumerize = function (arr) {
12949
+ var enums = {};
12950
+ for (var i=0; i<arr.length; i++) {
12951
+ enums[arr[i].toUpperCase()] = arr[i];
12952
+ }
12953
+ return enums;
12954
+ },
12955
+ has = function (str1, str2) {
12956
+ if (typeof str1 === OBJ_TYPE && str1.length > 0) {
12957
+ for (var i in str1) {
12958
+ if (lowerize(str1[i]) == lowerize(str2)) return true;
12959
+ }
12960
+ return false;
12961
+ }
12962
+ return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;
12963
+ },
12964
+ isExtensions = function (obj) {
12965
+ for (var prop in obj) {
12966
+ return /^(browser|cpu|device|engine|os)$/.test(prop);
12967
+ }
12968
+ },
12969
+ itemListToArray = function (header) {
12970
+ if (!header) return undefined;
12971
+ var arr = [];
12972
+ var tokens = strip(/\\?\"/g, header).split(',');
12973
+ for (var i = 0; i < tokens.length; i++) {
12974
+ if (tokens[i].indexOf(';') > -1) {
12975
+ var token = trim$1(tokens[i]).split(';v=');
12976
+ arr[i] = { brand : token[0], version : token[1] };
12977
+ } else {
12978
+ arr[i] = tokens[i];
12979
+ }
12980
+ }
12981
+ return arr;
12982
+ },
12983
+ lowerize = function (str) {
12984
+ return typeof(str) === STR_TYPE ? str.toLowerCase() : str;
12985
+ },
12986
+ majorize = function (version) {
12987
+ return typeof(version) === STR_TYPE ? strip(/[^\d\.]/g, version).split('.')[0] : undefined;
12988
+ },
12989
+ setProps = function (arr) {
12990
+ for (var i in arr) {
12991
+ var propName = arr[i];
12992
+ if (typeof propName == OBJ_TYPE && propName.length == 2) {
12993
+ this[propName[0]] = propName[1];
12994
+ } else {
12995
+ this[propName] = undefined;
12996
+ }
12997
+ }
12998
+ return this;
12999
+ },
13000
+ strip = function (pattern, str) {
13001
+ return str.replace(pattern, EMPTY);
13002
+ },
13003
+ stripQuotes = function (val) {
13004
+ return typeof val === STR_TYPE ? strip(/\\?\"/g, val) : val;
13005
+ },
13006
+ trim$1 = function (str, len) {
13007
+ if (typeof(str) === STR_TYPE) {
13008
+ str = strip(/^\s\s*/, str);
13009
+ return typeof(len) === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);
13010
+ }
13011
+ };
12840
13012
 
12841
- (function (module, exports) {
12842
- /////////////////////////////////////////////////////////////////////////////////
12843
- /* UAParser.js v1.0.36
12844
- Copyright © 2012-2021 Faisal Salman <f@faisalman.com>
12845
- MIT License *//*
12846
- Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
12847
- Supports browser & node.js environment.
12848
- Demo : https://faisalman.github.io/ua-parser-js
12849
- Source : https://github.com/faisalman/ua-parser-js */
12850
- /////////////////////////////////////////////////////////////////////////////////
12851
-
12852
- (function (window, undefined$1) {
12853
-
12854
- //////////////
12855
- // Constants
12856
- /////////////
12857
-
12858
-
12859
- var LIBVERSION = '1.0.36',
12860
- EMPTY = '',
12861
- UNKNOWN = '?',
12862
- FUNC_TYPE = 'function',
12863
- UNDEF_TYPE = 'undefined',
12864
- OBJ_TYPE = 'object',
12865
- STR_TYPE = 'string',
12866
- MAJOR = 'major',
12867
- MODEL = 'model',
12868
- NAME = 'name',
12869
- TYPE = 'type',
12870
- VENDOR = 'vendor',
12871
- VERSION = 'version',
12872
- ARCHITECTURE= 'architecture',
12873
- CONSOLE = 'console',
12874
- MOBILE = 'mobile',
12875
- TABLET = 'tablet',
12876
- SMARTTV = 'smarttv',
12877
- WEARABLE = 'wearable',
12878
- EMBEDDED = 'embedded',
12879
- UA_MAX_LENGTH = 350;
12880
-
12881
- var AMAZON = 'Amazon',
12882
- APPLE = 'Apple',
12883
- ASUS = 'ASUS',
12884
- BLACKBERRY = 'BlackBerry',
12885
- BROWSER = 'Browser',
12886
- CHROME = 'Chrome',
12887
- EDGE = 'Edge',
12888
- FIREFOX = 'Firefox',
12889
- GOOGLE = 'Google',
12890
- HUAWEI = 'Huawei',
12891
- LG = 'LG',
12892
- MICROSOFT = 'Microsoft',
12893
- MOTOROLA = 'Motorola',
12894
- OPERA = 'Opera',
12895
- SAMSUNG = 'Samsung',
12896
- SHARP = 'Sharp',
12897
- SONY = 'Sony',
12898
- XIAOMI = 'Xiaomi',
12899
- ZEBRA = 'Zebra',
12900
- FACEBOOK = 'Facebook',
12901
- CHROMIUM_OS = 'Chromium OS',
12902
- MAC_OS = 'Mac OS';
12903
-
12904
- ///////////
12905
- // Helper
12906
- //////////
12907
-
12908
- var extend = function (regexes, extensions) {
12909
- var mergedRegexes = {};
12910
- for (var i in regexes) {
12911
- if (extensions[i] && extensions[i].length % 2 === 0) {
12912
- mergedRegexes[i] = extensions[i].concat(regexes[i]);
12913
- } else {
12914
- mergedRegexes[i] = regexes[i];
12915
- }
12916
- }
12917
- return mergedRegexes;
12918
- },
12919
- enumerize = function (arr) {
12920
- var enums = {};
12921
- for (var i=0; i<arr.length; i++) {
12922
- enums[arr[i].toUpperCase()] = arr[i];
12923
- }
12924
- return enums;
12925
- },
12926
- has = function (str1, str2) {
12927
- return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;
12928
- },
12929
- lowerize = function (str) {
12930
- return str.toLowerCase();
12931
- },
12932
- majorize = function (version) {
12933
- return typeof(version) === STR_TYPE ? version.replace(/[^\d\.]/g, EMPTY).split('.')[0] : undefined$1;
12934
- },
12935
- trim = function (str, len) {
12936
- if (typeof(str) === STR_TYPE) {
12937
- str = str.replace(/^\s\s*/, EMPTY);
12938
- return typeof(len) === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);
12939
- }
12940
- };
13013
+ ///////////////
13014
+ // Map helper
13015
+ //////////////
12941
13016
 
12942
- ///////////////
12943
- // Map helper
12944
- //////////////
12945
-
12946
- var rgxMapper = function (ua, arrays) {
12947
-
12948
- var i = 0, j, k, p, q, matches, match;
12949
-
12950
- // loop through all regexes maps
12951
- while (i < arrays.length && !matches) {
12952
-
12953
- var regex = arrays[i], // even sequence (0,2,4,..)
12954
- props = arrays[i + 1]; // odd sequence (1,3,5,..)
12955
- j = k = 0;
12956
-
12957
- // try matching uastring with regexes
12958
- while (j < regex.length && !matches) {
12959
-
12960
- if (!regex[j]) { break; }
12961
- matches = regex[j++].exec(ua);
12962
-
12963
- if (!!matches) {
12964
- for (p = 0; p < props.length; p++) {
12965
- match = matches[++k];
12966
- q = props[p];
12967
- // check if given property is actually array
12968
- if (typeof q === OBJ_TYPE && q.length > 0) {
12969
- if (q.length === 2) {
12970
- if (typeof q[1] == FUNC_TYPE) {
12971
- // assign modified match
12972
- this[q[0]] = q[1].call(this, match);
12973
- } else {
12974
- // assign given value, ignore regex match
12975
- this[q[0]] = q[1];
12976
- }
12977
- } else if (q.length === 3) {
12978
- // check whether function or regex
12979
- if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {
12980
- // call function (usually string mapper)
12981
- this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined$1;
12982
- } else {
12983
- // sanitize match using given regex
12984
- this[q[0]] = match ? match.replace(q[1], q[2]) : undefined$1;
12985
- }
12986
- } else if (q.length === 4) {
12987
- this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined$1;
12988
- }
12989
- } else {
12990
- this[q] = match ? match : undefined$1;
12991
- }
12992
- }
12993
- }
12994
- }
12995
- i += 2;
12996
- }
12997
- },
13017
+ var rgxMapper = function (ua, arrays) {
12998
13018
 
12999
- strMapper = function (str, map) {
13000
-
13001
- for (var i in map) {
13002
- // check if current value is array
13003
- if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {
13004
- for (var j = 0; j < map[i].length; j++) {
13005
- if (has(map[i][j], str)) {
13006
- return (i === UNKNOWN) ? undefined$1 : i;
13007
- }
13008
- }
13009
- } else if (has(map[i], str)) {
13010
- return (i === UNKNOWN) ? undefined$1 : i;
13011
- }
13012
- }
13013
- return str;
13014
- };
13019
+ if(!ua || !arrays) return;
13015
13020
 
13016
- ///////////////
13017
- // String map
13018
- //////////////
13019
-
13020
- // Safari < 3.0
13021
- var oldSafariMap = {
13022
- '1.0' : '/8',
13023
- '1.2' : '/1',
13024
- '1.3' : '/3',
13025
- '2.0' : '/412',
13026
- '2.0.2' : '/416',
13027
- '2.0.3' : '/417',
13028
- '2.0.4' : '/419',
13029
- '?' : '/'
13030
- },
13031
- windowsVersionMap = {
13032
- 'ME' : '4.90',
13033
- 'NT 3.11' : 'NT3.51',
13034
- 'NT 4.0' : 'NT4.0',
13035
- '2000' : 'NT 5.0',
13036
- 'XP' : ['NT 5.1', 'NT 5.2'],
13037
- 'Vista' : 'NT 6.0',
13038
- '7' : 'NT 6.1',
13039
- '8' : 'NT 6.2',
13040
- '8.1' : 'NT 6.3',
13041
- '10' : ['NT 6.4', 'NT 10.0'],
13042
- 'RT' : 'ARM'
13043
- };
13021
+ var i = 0, j, k, p, q, matches, match;
13044
13022
 
13045
- //////////////
13046
- // Regex map
13047
- /////////////
13048
-
13049
- var regexes = {
13050
-
13051
- browser : [[
13052
-
13053
- /\b(?:crmo|crios)\/([\w\.]+)/i // Chrome for Android/iOS
13054
- ], [VERSION, [NAME, 'Chrome']], [
13055
- /edg(?:e|ios|a)?\/([\w\.]+)/i // Microsoft Edge
13056
- ], [VERSION, [NAME, 'Edge']], [
13057
-
13058
- // Presto based
13059
- /(opera mini)\/([-\w\.]+)/i, // Opera Mini
13060
- /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i, // Opera Mobi/Tablet
13061
- /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i // Opera
13062
- ], [NAME, VERSION], [
13063
- /opios[\/ ]+([\w\.]+)/i // Opera mini on iphone >= 8.0
13064
- ], [VERSION, [NAME, OPERA+' Mini']], [
13065
- /\bopr\/([\w\.]+)/i // Opera Webkit
13066
- ], [VERSION, [NAME, OPERA]], [
13067
-
13068
- // Mixed
13069
- /(kindle)\/([\w\.]+)/i, // Kindle
13070
- /(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer
13071
- // Trident based
13072
- /(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i, // Avant/IEMobile/SlimBrowser
13073
- /(ba?idubrowser)[\/ ]?([\w\.]+)/i, // Baidu Browser
13074
- /(?:ms|\()(ie) ([\w\.]+)/i, // Internet Explorer
13075
-
13076
- // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
13077
- /(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,
13078
- // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ, aka ShouQ
13079
- /(heytap|ovi)browser\/([\d\.]+)/i, // Heytap/Ovi
13080
- /(weibo)__([\d\.]+)/i // Weibo
13081
- ], [NAME, VERSION], [
13082
- /(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i // UCBrowser
13083
- ], [VERSION, [NAME, 'UC'+BROWSER]], [
13084
- /microm.+\bqbcore\/([\w\.]+)/i, // WeChat Desktop for Windows Built-in Browser
13085
- /\bqbcore\/([\w\.]+).+microm/i
13086
- ], [VERSION, [NAME, 'WeChat(Win) Desktop']], [
13087
- /micromessenger\/([\w\.]+)/i // WeChat
13088
- ], [VERSION, [NAME, 'WeChat']], [
13089
- /konqueror\/([\w\.]+)/i // Konqueror
13090
- ], [VERSION, [NAME, 'Konqueror']], [
13091
- /trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i // IE11
13092
- ], [VERSION, [NAME, 'IE']], [
13093
- /ya(?:search)?browser\/([\w\.]+)/i // Yandex
13094
- ], [VERSION, [NAME, 'Yandex']], [
13095
- /(avast|avg)\/([\w\.]+)/i // Avast/AVG Secure Browser
13096
- ], [[NAME, /(.+)/, '$1 Secure '+BROWSER], VERSION], [
13097
- /\bfocus\/([\w\.]+)/i // Firefox Focus
13098
- ], [VERSION, [NAME, FIREFOX+' Focus']], [
13099
- /\bopt\/([\w\.]+)/i // Opera Touch
13100
- ], [VERSION, [NAME, OPERA+' Touch']], [
13101
- /coc_coc\w+\/([\w\.]+)/i // Coc Coc Browser
13102
- ], [VERSION, [NAME, 'Coc Coc']], [
13103
- /dolfin\/([\w\.]+)/i // Dolphin
13104
- ], [VERSION, [NAME, 'Dolphin']], [
13105
- /coast\/([\w\.]+)/i // Opera Coast
13106
- ], [VERSION, [NAME, OPERA+' Coast']], [
13107
- /miuibrowser\/([\w\.]+)/i // MIUI Browser
13108
- ], [VERSION, [NAME, 'MIUI '+BROWSER]], [
13109
- /fxios\/([-\w\.]+)/i // Firefox for iOS
13110
- ], [VERSION, [NAME, FIREFOX]], [
13111
- /\bqihu|(qi?ho?o?|360)browser/i // 360
13112
- ], [[NAME, '360 '+BROWSER]], [
13113
- /(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i
13114
- ], [[NAME, /(.+)/, '$1 '+BROWSER], VERSION], [ // Oculus/Samsung/Sailfish/Huawei Browser
13115
- /(comodo_dragon)\/([\w\.]+)/i // Comodo Dragon
13116
- ], [[NAME, /_/g, ' '], VERSION], [
13117
- /(electron)\/([\w\.]+) safari/i, // Electron-based App
13118
- /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i, // Tesla
13119
- /m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i // QQBrowser/Baidu App/2345 Browser
13120
- ], [NAME, VERSION], [
13121
- /(metasr)[\/ ]?([\w\.]+)/i, // SouGouBrowser
13122
- /(lbbrowser)/i, // LieBao Browser
13123
- /\[(linkedin)app\]/i // LinkedIn App for iOS & Android
13124
- ], [NAME], [
13125
-
13126
- // WebView
13127
- /((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i // Facebook App for iOS & Android
13128
- ], [[NAME, FACEBOOK], VERSION], [
13129
- /(kakao(?:talk|story))[\/ ]([\w\.]+)/i, // Kakao App
13130
- /(naver)\(.*?(\d+\.[\w\.]+).*\)/i, // Naver InApp
13131
- /safari (line)\/([\w\.]+)/i, // Line App for iOS
13132
- /\b(line)\/([\w\.]+)\/iab/i, // Line App for Android
13133
- /(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i // Chromium/Instagram/Snapchat
13134
- ], [NAME, VERSION], [
13135
- /\bgsa\/([\w\.]+) .*safari\//i // Google Search Appliance on iOS
13136
- ], [VERSION, [NAME, 'GSA']], [
13137
- /musical_ly(?:.+app_?version\/|_)([\w\.]+)/i // TikTok
13138
- ], [VERSION, [NAME, 'TikTok']], [
13139
-
13140
- /headlesschrome(?:\/([\w\.]+)| )/i // Chrome Headless
13141
- ], [VERSION, [NAME, CHROME+' Headless']], [
13142
-
13143
- / wv\).+(chrome)\/([\w\.]+)/i // Chrome WebView
13144
- ], [[NAME, CHROME+' WebView'], VERSION], [
13145
-
13146
- /droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i // Android Browser
13147
- ], [VERSION, [NAME, 'Android '+BROWSER]], [
13148
-
13149
- /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia
13150
- ], [NAME, VERSION], [
13151
-
13152
- /version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i // Mobile Safari
13153
- ], [VERSION, [NAME, 'Mobile Safari']], [
13154
- /version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile
13155
- ], [VERSION, NAME], [
13156
- /webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i // Safari < 3.0
13157
- ], [NAME, [VERSION, strMapper, oldSafariMap]], [
13158
-
13159
- /(webkit|khtml)\/([\w\.]+)/i
13160
- ], [NAME, VERSION], [
13161
-
13162
- // Gecko based
13163
- /(navigator|netscape\d?)\/([-\w\.]+)/i // Netscape
13164
- ], [[NAME, 'Netscape'], VERSION], [
13165
- /mobile vr; rv:([\w\.]+)\).+firefox/i // Firefox Reality
13166
- ], [VERSION, [NAME, FIREFOX+' Reality']], [
13167
- /ekiohf.+(flow)\/([\w\.]+)/i, // Flow
13168
- /(swiftfox)/i, // Swiftfox
13169
- /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,
13170
- // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar
13171
- /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,
13172
- // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix
13173
- /(firefox)\/([\w\.]+)/i, // Other Firefox-based
13174
- /(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i, // Mozilla
13175
-
13176
- // Other
13177
- /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,
13178
- // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser
13179
- /(links) \(([\w\.]+)/i, // Links
13180
- /panasonic;(viera)/i // Panasonic Viera
13181
- ], [NAME, VERSION], [
13182
-
13183
- /(cobalt)\/([\w\.]+)/i // Cobalt
13184
- ], [NAME, [VERSION, /master.|lts./, ""]]
13185
- ],
13186
-
13187
- cpu : [[
13188
-
13189
- /(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i // AMD64 (x64)
13190
- ], [[ARCHITECTURE, 'amd64']], [
13191
-
13192
- /(ia32(?=;))/i // IA32 (quicktime)
13193
- ], [[ARCHITECTURE, lowerize]], [
13194
-
13195
- /((?:i[346]|x)86)[;\)]/i // IA32 (x86)
13196
- ], [[ARCHITECTURE, 'ia32']], [
13197
-
13198
- /\b(aarch64|arm(v?8e?l?|_?64))\b/i // ARM64
13199
- ], [[ARCHITECTURE, 'arm64']], [
13200
-
13201
- /\b(arm(?:v[67])?ht?n?[fl]p?)\b/i // ARMHF
13202
- ], [[ARCHITECTURE, 'armhf']], [
13203
-
13204
- // PocketPC mistakenly identified as PowerPC
13205
- /windows (ce|mobile); ppc;/i
13206
- ], [[ARCHITECTURE, 'arm']], [
13207
-
13208
- /((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i // PowerPC
13209
- ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [
13210
-
13211
- /(sun4\w)[;\)]/i // SPARC
13212
- ], [[ARCHITECTURE, 'sparc']], [
13213
-
13214
- /((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i
13215
- // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC
13216
- ], [[ARCHITECTURE, lowerize]]
13217
- ],
13218
-
13219
- device : [[
13220
-
13221
- //////////////////////////
13222
- // MOBILES & TABLETS
13223
- /////////////////////////
13224
-
13225
- // Samsung
13226
- /\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i
13227
- ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [
13228
- /\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,
13229
- /samsung[- ]([-\w]+)/i,
13230
- /sec-(sgh\w+)/i
13231
- ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [
13232
-
13233
- // Apple
13234
- /(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i // iPod/iPhone
13235
- ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [
13236
- /\((ipad);[-\w\),; ]+apple/i, // iPad
13237
- /applecoremedia\/[\w\.]+ \((ipad)/i,
13238
- /\b(ipad)\d\d?,\d\d?[;\]].+ios/i
13239
- ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [
13240
- /(macintosh);/i
13241
- ], [MODEL, [VENDOR, APPLE]], [
13242
-
13243
- // Sharp
13244
- /\b(sh-?[altvz]?\d\d[a-ekm]?)/i
13245
- ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [
13246
-
13247
- // Huawei
13248
- /\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i
13249
- ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [
13250
- /(?:huawei|honor)([-\w ]+)[;\)]/i,
13251
- /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i
13252
- ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [
13253
-
13254
- // Xiaomi
13255
- /\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i, // Xiaomi POCO
13256
- /\b; (\w+) build\/hm\1/i, // Xiaomi Hongmi 'numeric' models
13257
- /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, // Xiaomi Hongmi
13258
- /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i, // Xiaomi Redmi
13259
- /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i // Xiaomi Mi
13260
- ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [
13261
- /\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i // Mi Pad tablets
13262
- ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [
13263
-
13264
- // OPPO
13265
- /; (\w+) bui.+ oppo/i,
13266
- /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i
13267
- ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [
13268
-
13269
- // Vivo
13270
- /vivo (\w+)(?: bui|\))/i,
13271
- /\b(v[12]\d{3}\w?[at])(?: bui|;)/i
13272
- ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [
13273
-
13274
- // Realme
13275
- /\b(rmx[12]\d{3})(?: bui|;|\))/i
13276
- ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [
13277
-
13278
- // Motorola
13279
- /\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,
13280
- /\bmot(?:orola)?[- ](\w*)/i,
13281
- /((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i
13282
- ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [
13283
- /\b(mz60\d|xoom[2 ]{0,2}) build\//i
13284
- ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [
13285
-
13286
- // LG
13287
- /((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i
13288
- ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [
13289
- /(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,
13290
- /\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,
13291
- /\blg-?([\d\w]+) bui/i
13292
- ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [
13293
-
13294
- // Lenovo
13295
- /(ideatab[-\w ]+)/i,
13296
- /lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i
13297
- ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [
13298
-
13299
- // Nokia
13300
- /(?:maemo|nokia).*(n900|lumia \d+)/i,
13301
- /nokia[-_ ]?([-\w\.]*)/i
13302
- ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [
13303
-
13304
- // Google
13305
- /(pixel c)\b/i // Google Pixel C
13306
- ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [
13307
- /droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i // Google Pixel
13308
- ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [
13309
-
13310
- // Sony
13311
- /droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i
13312
- ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [
13313
- /sony tablet [ps]/i,
13314
- /\b(?:sony)?sgp\w+(?: bui|\))/i
13315
- ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [
13316
-
13317
- // OnePlus
13318
- / (kb2005|in20[12]5|be20[12][59])\b/i,
13319
- /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i
13320
- ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [
13321
-
13322
- // Amazon
13323
- /(alexa)webm/i,
13324
- /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i, // Kindle Fire without Silk / Echo Show
13325
- /(kf[a-z]+)( bui|\)).+silk\//i // Kindle Fire HD
13326
- ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [
13327
- /((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i // Fire Phone
13328
- ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [
13329
-
13330
- // BlackBerry
13331
- /(playbook);[-\w\),; ]+(rim)/i // BlackBerry PlayBook
13332
- ], [MODEL, VENDOR, [TYPE, TABLET]], [
13333
- /\b((?:bb[a-f]|st[hv])100-\d)/i,
13334
- /\(bb10; (\w+)/i // BlackBerry 10
13335
- ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [
13336
-
13337
- // Asus
13338
- /(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i
13339
- ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [
13340
- / (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i
13341
- ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [
13342
-
13343
- // HTC
13344
- /(nexus 9)/i // HTC Nexus 9
13345
- ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [
13346
- /(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i, // HTC
13347
-
13348
- // ZTE
13349
- /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,
13350
- /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
13351
- ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [
13352
-
13353
- // Acer
13354
- /droid.+; ([ab][1-7]-?[0178a]\d\d?)/i
13355
- ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [
13356
-
13357
- // Meizu
13358
- /droid.+; (m[1-5] note) bui/i,
13359
- /\bmz-([-\w]{2,})/i
13360
- ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [
13361
-
13362
- // MIXED
13363
- /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,
13364
- // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
13365
- /(hp) ([\w ]+\w)/i, // HP iPAQ
13366
- /(asus)-?(\w+)/i, // Asus
13367
- /(microsoft); (lumia[\w ]+)/i, // Microsoft Lumia
13368
- /(lenovo)[-_ ]?([-\w]+)/i, // Lenovo
13369
- /(jolla)/i, // Jolla
13370
- /(oppo) ?([\w ]+) bui/i // OPPO
13371
- ], [VENDOR, MODEL, [TYPE, MOBILE]], [
13372
-
13373
- /(kobo)\s(ereader|touch)/i, // Kobo
13374
- /(archos) (gamepad2?)/i, // Archos
13375
- /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad
13376
- /(kindle)\/([\w\.]+)/i, // Kindle
13377
- /(nook)[\w ]+build\/(\w+)/i, // Nook
13378
- /(dell) (strea[kpr\d ]*[\dko])/i, // Dell Streak
13379
- /(le[- ]+pan)[- ]+(\w{1,9}) bui/i, // Le Pan Tablets
13380
- /(trinity)[- ]*(t\d{3}) bui/i, // Trinity Tablets
13381
- /(gigaset)[- ]+(q\w{1,9}) bui/i, // Gigaset Tablets
13382
- /(vodafone) ([\w ]+)(?:\)| bui)/i // Vodafone
13383
- ], [VENDOR, MODEL, [TYPE, TABLET]], [
13384
-
13385
- /(surface duo)/i // Surface Duo
13386
- ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [
13387
- /droid [\d\.]+; (fp\du?)(?: b|\))/i // Fairphone
13388
- ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [
13389
- /(u304aa)/i // AT&T
13390
- ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [
13391
- /\bsie-(\w*)/i // Siemens
13392
- ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [
13393
- /\b(rct\w+) b/i // RCA Tablets
13394
- ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [
13395
- /\b(venue[\d ]{2,7}) b/i // Dell Venue Tablets
13396
- ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [
13397
- /\b(q(?:mv|ta)\w+) b/i // Verizon Tablet
13398
- ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [
13399
- /\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i // Barnes & Noble Tablet
13400
- ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [
13401
- /\b(tm\d{3}\w+) b/i
13402
- ], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [
13403
- /\b(k88) b/i // ZTE K Series Tablet
13404
- ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [
13405
- /\b(nx\d{3}j) b/i // ZTE Nubia
13406
- ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [
13407
- /\b(gen\d{3}) b.+49h/i // Swiss GEN Mobile
13408
- ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [
13409
- /\b(zur\d{3}) b/i // Swiss ZUR Tablet
13410
- ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [
13411
- /\b((zeki)?tb.*\b) b/i // Zeki Tablets
13412
- ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [
13413
- /\b([yr]\d{2}) b/i,
13414
- /\b(dragon[- ]+touch |dt)(\w{5}) b/i // Dragon Touch Tablet
13415
- ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [
13416
- /\b(ns-?\w{0,9}) b/i // Insignia Tablets
13417
- ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [
13418
- /\b((nxa|next)-?\w{0,9}) b/i // NextBook Tablets
13419
- ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [
13420
- /\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones
13421
- ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [
13422
- /\b(lvtel\-)?(v1[12]) b/i // LvTel Phones
13423
- ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [
13424
- /\b(ph-1) /i // Essential PH-1
13425
- ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [
13426
- /\b(v(100md|700na|7011|917g).*\b) b/i // Envizen Tablets
13427
- ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [
13428
- /\b(trio[-\w\. ]+) b/i // MachSpeed Tablets
13429
- ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [
13430
- /\btu_(1491) b/i // Rotor Tablets
13431
- ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [
13432
- /(shield[\w ]+) b/i // Nvidia Shield Tablets
13433
- ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [
13434
- /(sprint) (\w+)/i // Sprint Phones
13435
- ], [VENDOR, MODEL, [TYPE, MOBILE]], [
13436
- /(kin\.[onetw]{3})/i // Microsoft Kin
13437
- ], [[MODEL, /\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [
13438
- /droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i // Zebra
13439
- ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [
13440
- /droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i
13441
- ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [
13442
-
13443
- ///////////////////
13444
- // SMARTTVS
13445
- ///////////////////
13446
-
13447
- /smart-tv.+(samsung)/i // Samsung
13448
- ], [VENDOR, [TYPE, SMARTTV]], [
13449
- /hbbtv.+maple;(\d+)/i
13450
- ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [
13451
- /(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i // LG SmartTV
13452
- ], [[VENDOR, LG], [TYPE, SMARTTV]], [
13453
- /(apple) ?tv/i // Apple TV
13454
- ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [
13455
- /crkey/i // Google Chromecast
13456
- ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [
13457
- /droid.+aft(\w+)( bui|\))/i // Fire TV
13458
- ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [
13459
- /\(dtv[\);].+(aquos)/i,
13460
- /(aquos-tv[\w ]+)\)/i // Sharp
13461
- ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[
13462
- /(bravia[\w ]+)( bui|\))/i // Sony
13463
- ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [
13464
- /(mitv-\w{5}) bui/i // Xiaomi
13465
- ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [
13466
- /Hbbtv.*(technisat) (.*);/i // TechniSAT
13467
- ], [VENDOR, MODEL, [TYPE, SMARTTV]], [
13468
- /\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i, // Roku
13469
- /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i // HbbTV devices
13470
- ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [
13471
- /\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i // SmartTV from Unidentified Vendors
13472
- ], [[TYPE, SMARTTV]], [
13473
-
13474
- ///////////////////
13475
- // CONSOLES
13476
- ///////////////////
13477
-
13478
- /(ouya)/i, // Ouya
13479
- /(nintendo) ([wids3utch]+)/i // Nintendo
13480
- ], [VENDOR, MODEL, [TYPE, CONSOLE]], [
13481
- /droid.+; (shield) bui/i // Nvidia
13482
- ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [
13483
- /(playstation [345portablevi]+)/i // Playstation
13484
- ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [
13485
- /\b(xbox(?: one)?(?!; xbox))[\); ]/i // Microsoft Xbox
13486
- ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [
13487
-
13488
- ///////////////////
13489
- // WEARABLES
13490
- ///////////////////
13491
-
13492
- /((pebble))app/i // Pebble
13493
- ], [VENDOR, MODEL, [TYPE, WEARABLE]], [
13494
- /(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i // Apple Watch
13495
- ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [
13496
- /droid.+; (glass) \d/i // Google Glass
13497
- ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [
13498
- /droid.+; (wt63?0{2,3})\)/i
13499
- ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [
13500
- /(quest( 2| pro)?)/i // Oculus Quest
13501
- ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [
13502
-
13503
- ///////////////////
13504
- // EMBEDDED
13505
- ///////////////////
13506
-
13507
- /(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i // Tesla
13508
- ], [VENDOR, [TYPE, EMBEDDED]], [
13509
- /(aeobc)\b/i // Echo Dot
13510
- ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [
13511
-
13512
- ////////////////////
13513
- // MIXED (GENERIC)
13514
- ///////////////////
13515
-
13516
- /droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors
13517
- ], [MODEL, [TYPE, MOBILE]], [
13518
- /droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors
13519
- ], [MODEL, [TYPE, TABLET]], [
13520
- /\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i // Unidentifiable Tablet
13521
- ], [[TYPE, TABLET]], [
13522
- /(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile
13523
- ], [[TYPE, MOBILE]], [
13524
- /(android[-\w\. ]{0,9});.+buil/i // Generic Android Device
13525
- ], [MODEL, [VENDOR, 'Generic']]
13526
- ],
13527
-
13528
- engine : [[
13529
-
13530
- /windows.+ edge\/([\w\.]+)/i // EdgeHTML
13531
- ], [VERSION, [NAME, EDGE+'HTML']], [
13532
-
13533
- /webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i // Blink
13534
- ], [VERSION, [NAME, 'Blink']], [
13535
-
13536
- /(presto)\/([\w\.]+)/i, // Presto
13537
- /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna
13538
- /ekioh(flow)\/([\w\.]+)/i, // Flow
13539
- /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i, // KHTML/Tasman/Links
13540
- /(icab)[\/ ]([23]\.[\d\.]+)/i, // iCab
13541
- /\b(libweb)/i
13542
- ], [NAME, VERSION], [
13543
-
13544
- /rv\:([\w\.]{1,9})\b.+(gecko)/i // Gecko
13545
- ], [VERSION, NAME]
13546
- ],
13547
-
13548
- os : [[
13549
-
13550
- // Windows
13551
- /microsoft (windows) (vista|xp)/i // Windows (iTunes)
13552
- ], [NAME, VERSION], [
13553
- /(windows) nt 6\.2; (arm)/i, // Windows RT
13554
- /(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i, // Windows Phone
13555
- /(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i
13556
- ], [NAME, [VERSION, strMapper, windowsVersionMap]], [
13557
- /(win(?=3|9|n)|win 9x )([nt\d\.]+)/i
13558
- ], [[NAME, 'Windows'], [VERSION, strMapper, windowsVersionMap]], [
13559
-
13560
- // iOS/macOS
13561
- /ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i, // iOS
13562
- /(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,
13563
- /cfnetwork\/.+darwin/i
13564
- ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [
13565
- /(mac os x) ?([\w\. ]*)/i,
13566
- /(macintosh|mac_powerpc\b)(?!.+haiku)/i // Mac OS
13567
- ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [
13568
-
13569
- // Mobile OSes
13570
- /droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS
13571
- ], [VERSION, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS
13572
- /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,
13573
- /(blackberry)\w*\/([\w\.]*)/i, // Blackberry
13574
- /(tizen|kaios)[\/ ]([\w\.]+)/i, // Tizen/KaiOS
13575
- /\((series40);/i // Series 40
13576
- ], [NAME, VERSION], [
13577
- /\(bb(10);/i // BlackBerry 10
13578
- ], [VERSION, [NAME, BLACKBERRY]], [
13579
- /(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i // Symbian
13580
- ], [VERSION, [NAME, 'Symbian']], [
13581
- /mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i // Firefox OS
13582
- ], [VERSION, [NAME, FIREFOX+' OS']], [
13583
- /web0s;.+rt(tv)/i,
13584
- /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i // WebOS
13585
- ], [VERSION, [NAME, 'webOS']], [
13586
- /watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i // watchOS
13587
- ], [VERSION, [NAME, 'watchOS']], [
13588
-
13589
- // Google Chromecast
13590
- /crkey\/([\d\.]+)/i // Google Chromecast
13591
- ], [VERSION, [NAME, CHROME+'cast']], [
13592
- /(cros) [\w]+(?:\)| ([\w\.]+)\b)/i // Chromium OS
13593
- ], [[NAME, CHROMIUM_OS], VERSION],[
13594
-
13595
- // Smart TVs
13596
- /panasonic;(viera)/i, // Panasonic Viera
13597
- /(netrange)mmh/i, // Netrange
13598
- /(nettv)\/(\d+\.[\w\.]+)/i, // NetTV
13599
-
13600
- // Console
13601
- /(nintendo|playstation) ([wids345portablevuch]+)/i, // Nintendo/Playstation
13602
- /(xbox); +xbox ([^\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)
13603
-
13604
- // Other
13605
- /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i, // Joli/Palm
13606
- /(mint)[\/\(\) ]?(\w*)/i, // Mint
13607
- /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux
13608
- /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,
13609
- // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire
13610
- /(hurd|linux) ?([\w\.]*)/i, // Hurd/Linux
13611
- /(gnu) ?([\w\.]*)/i, // GNU
13612
- /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly
13613
- /(haiku) (\w+)/i // Haiku
13614
- ], [NAME, VERSION], [
13615
- /(sunos) ?([\w\.\d]*)/i // Solaris
13616
- ], [[NAME, 'Solaris'], VERSION], [
13617
- /((?:open)?solaris)[-\/ ]?([\w\.]*)/i, // Solaris
13618
- /(aix) ((\d)(?=\.|\)| )[\w\.])*/i, // AIX
13619
- /\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS
13620
- /(unix) ?([\w\.]*)/i // UNIX
13621
- ], [NAME, VERSION]
13622
- ]
13623
- };
13023
+ // loop through all regexes maps
13024
+ while (i < arrays.length && !matches) {
13624
13025
 
13625
- /////////////////
13626
- // Constructor
13627
- ////////////////
13026
+ var regex = arrays[i], // even sequence (0,2,4,..)
13027
+ props = arrays[i + 1]; // odd sequence (1,3,5,..)
13028
+ j = k = 0;
13628
13029
 
13629
- var UAParser = function (ua, extensions) {
13030
+ // try matching uastring with regexes
13031
+ while (j < regex.length && !matches) {
13630
13032
 
13631
- if (typeof ua === OBJ_TYPE) {
13632
- extensions = ua;
13633
- ua = undefined$1;
13634
- }
13033
+ if (!regex[j]) { break; }
13034
+ matches = regex[j++].exec(ua);
13635
13035
 
13636
- if (!(this instanceof UAParser)) {
13637
- return new UAParser(ua, extensions).getResult();
13638
- }
13036
+ if (!!matches) {
13037
+ for (p = 0; p < props.length; p++) {
13038
+ match = matches[++k];
13039
+ q = props[p];
13040
+ // check if given property is actually array
13041
+ if (typeof q === OBJ_TYPE && q.length > 0) {
13042
+ if (q.length === 2) {
13043
+ if (typeof q[1] == FUNC_TYPE) {
13044
+ // assign modified match
13045
+ this[q[0]] = q[1].call(this, match);
13046
+ } else {
13047
+ // assign given value, ignore regex match
13048
+ this[q[0]] = q[1];
13049
+ }
13050
+ } else if (q.length === 3) {
13051
+ // check whether function or regex
13052
+ if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {
13053
+ // call function (usually string mapper)
13054
+ this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;
13055
+ } else {
13056
+ // sanitize match using given regex
13057
+ this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;
13058
+ }
13059
+ } else if (q.length === 4) {
13060
+ this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;
13061
+ }
13062
+ } else {
13063
+ this[q] = match ? match : undefined;
13064
+ }
13065
+ }
13066
+ }
13067
+ }
13068
+ i += 2;
13069
+ }
13070
+ },
13639
13071
 
13640
- var _navigator = (typeof window !== UNDEF_TYPE && window.navigator) ? window.navigator : undefined$1;
13641
- var _ua = ua || ((_navigator && _navigator.userAgent) ? _navigator.userAgent : EMPTY);
13642
- var _uach = (_navigator && _navigator.userAgentData) ? _navigator.userAgentData : undefined$1;
13643
- var _rgxmap = extensions ? extend(regexes, extensions) : regexes;
13644
- var _isSelfNav = _navigator && _navigator.userAgent == _ua;
13645
-
13646
- this.getBrowser = function () {
13647
- var _browser = {};
13648
- _browser[NAME] = undefined$1;
13649
- _browser[VERSION] = undefined$1;
13650
- rgxMapper.call(_browser, _ua, _rgxmap.browser);
13651
- _browser[MAJOR] = majorize(_browser[VERSION]);
13652
- // Brave-specific detection
13653
- if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {
13654
- _browser[NAME] = 'Brave';
13655
- }
13656
- return _browser;
13657
- };
13658
- this.getCPU = function () {
13659
- var _cpu = {};
13660
- _cpu[ARCHITECTURE] = undefined$1;
13661
- rgxMapper.call(_cpu, _ua, _rgxmap.cpu);
13662
- return _cpu;
13663
- };
13664
- this.getDevice = function () {
13665
- var _device = {};
13666
- _device[VENDOR] = undefined$1;
13667
- _device[MODEL] = undefined$1;
13668
- _device[TYPE] = undefined$1;
13669
- rgxMapper.call(_device, _ua, _rgxmap.device);
13670
- if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {
13671
- _device[TYPE] = MOBILE;
13672
- }
13673
- // iPadOS-specific detection: identified as Mac, but has some iOS-only properties
13674
- if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {
13675
- _device[MODEL] = 'iPad';
13676
- _device[TYPE] = TABLET;
13677
- }
13678
- return _device;
13679
- };
13680
- this.getEngine = function () {
13681
- var _engine = {};
13682
- _engine[NAME] = undefined$1;
13683
- _engine[VERSION] = undefined$1;
13684
- rgxMapper.call(_engine, _ua, _rgxmap.engine);
13685
- return _engine;
13686
- };
13687
- this.getOS = function () {
13688
- var _os = {};
13689
- _os[NAME] = undefined$1;
13690
- _os[VERSION] = undefined$1;
13691
- rgxMapper.call(_os, _ua, _rgxmap.os);
13692
- if (_isSelfNav && !_os[NAME] && _uach && _uach.platform != 'Unknown') {
13693
- _os[NAME] = _uach.platform
13694
- .replace(/chrome os/i, CHROMIUM_OS)
13695
- .replace(/macos/i, MAC_OS); // backward compatibility
13696
- }
13697
- return _os;
13698
- };
13699
- this.getResult = function () {
13700
- return {
13701
- ua : this.getUA(),
13702
- browser : this.getBrowser(),
13703
- engine : this.getEngine(),
13704
- os : this.getOS(),
13705
- device : this.getDevice(),
13706
- cpu : this.getCPU()
13707
- };
13708
- };
13709
- this.getUA = function () {
13710
- return _ua;
13711
- };
13712
- this.setUA = function (ua) {
13713
- _ua = (typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH) ? trim(ua, UA_MAX_LENGTH) : ua;
13714
- return this;
13715
- };
13716
- this.setUA(_ua);
13717
- return this;
13718
- };
13072
+ strMapper = function (str, map) {
13719
13073
 
13720
- UAParser.VERSION = LIBVERSION;
13721
- UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);
13722
- UAParser.CPU = enumerize([ARCHITECTURE]);
13723
- UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);
13724
- UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);
13074
+ for (var i in map) {
13075
+ // check if current value is array
13076
+ if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {
13077
+ for (var j = 0; j < map[i].length; j++) {
13078
+ if (has(map[i][j], str)) {
13079
+ return (i === UNKNOWN) ? undefined : i;
13080
+ }
13081
+ }
13082
+ } else if (has(map[i], str)) {
13083
+ return (i === UNKNOWN) ? undefined : i;
13084
+ }
13085
+ }
13086
+ return map.hasOwnProperty('*') ? map['*'] : str;
13087
+ };
13088
+
13089
+ ///////////////
13090
+ // String map
13091
+ //////////////
13092
+
13093
+ var windowsVersionMap = {
13094
+ 'ME' : '4.90',
13095
+ 'NT 3.11' : 'NT3.51',
13096
+ 'NT 4.0' : 'NT4.0',
13097
+ '2000' : 'NT 5.0',
13098
+ 'XP' : ['NT 5.1', 'NT 5.2'],
13099
+ 'Vista' : 'NT 6.0',
13100
+ '7' : 'NT 6.1',
13101
+ '8' : 'NT 6.2',
13102
+ '8.1' : 'NT 6.3',
13103
+ '10' : ['NT 6.4', 'NT 10.0'],
13104
+ 'RT' : 'ARM'
13105
+ },
13106
+
13107
+ formFactorMap = {
13108
+ 'embedded' : 'Automotive',
13109
+ 'mobile' : 'Mobile',
13110
+ 'tablet' : ['Tablet', 'EInk'],
13111
+ 'smarttv' : 'TV',
13112
+ 'wearable' : ['VR', 'XR', 'Watch'],
13113
+ '?' : ['Desktop', 'Unknown'],
13114
+ '*' : undefined
13115
+ };
13116
+
13117
+ //////////////
13118
+ // Regex map
13119
+ /////////////
13120
+
13121
+ var defaultRegexes = {
13122
+
13123
+ browser : [[
13124
+
13125
+ // Most common regardless engine
13126
+ /\b(?:crmo|crios)\/([\w\.]+)/i // Chrome for Android/iOS
13127
+ ], [VERSION$1, [NAME, PREFIX_MOBILE + 'Chrome']], [
13128
+ /edg(?:e|ios|a)?\/([\w\.]+)/i // Microsoft Edge
13129
+ ], [VERSION$1, [NAME, 'Edge']], [
13130
+
13131
+ // Presto based
13132
+ /(opera mini)\/([-\w\.]+)/i, // Opera Mini
13133
+ /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i, // Opera Mobi/Tablet
13134
+ /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i // Opera
13135
+ ], [NAME, VERSION$1], [
13136
+ /opios[\/ ]+([\w\.]+)/i // Opera mini on iphone >= 8.0
13137
+ ], [VERSION$1, [NAME, OPERA+' Mini']], [
13138
+ /\bopr\/([\w\.]+)/i // Opera Webkit
13139
+ ], [VERSION$1, [NAME, OPERA]], [
13140
+
13141
+ // Mixed
13142
+ /(kindle)\/([\w\.]+)/i, // Kindle
13143
+ /(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i, // Lunascape/Maxthon/Netfront/Jasmine/Blazer
13144
+ // Trident based
13145
+ /(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i, // Avant/IEMobile/SlimBrowser
13146
+ /(ba?idubrowser)[\/ ]?([\w\.]+)/i, // Baidu Browser
13147
+ /(?:ms|\()(ie) ([\w\.]+)/i, // Internet Explorer
13148
+
13149
+ // Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
13150
+ /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,
13151
+ // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo
13152
+ /(heytap|ovi)browser\/([\d\.]+)/i, // HeyTap/Ovi
13153
+ /(weibo)__([\d\.]+)/i // Weibo
13154
+ ], [NAME, VERSION$1], [
13155
+ /(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i // UCBrowser
13156
+ ], [VERSION$1, [NAME, 'UCBrowser']], [
13157
+ /microm.+\bqbcore\/([\w\.]+)/i, // WeChat Desktop for Windows Built-in Browser
13158
+ /\bqbcore\/([\w\.]+).+microm/i
13159
+ ], [VERSION$1, [NAME, 'WeChat(Win) Desktop']], [
13160
+ /micromessenger\/([\w\.]+)/i // WeChat
13161
+ ], [VERSION$1, [NAME, 'WeChat']], [
13162
+ /konqueror\/([\w\.]+)/i // Konqueror
13163
+ ], [VERSION$1, [NAME, 'Konqueror']], [
13164
+ /trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i // IE11
13165
+ ], [VERSION$1, [NAME, 'IE']], [
13166
+ /ya(?:search)?browser\/([\w\.]+)/i // Yandex
13167
+ ], [VERSION$1, [NAME, 'Yandex']], [
13168
+ /(avast|avg)\/([\w\.]+)/i // Avast/AVG Secure Browser
13169
+ ], [[NAME, /(.+)/, '$1 Secure' + SUFFIX_BROWSER], VERSION$1], [
13170
+ /\bfocus\/([\w\.]+)/i // Firefox Focus
13171
+ ], [VERSION$1, [NAME, FIREFOX+' Focus']], [
13172
+ /\bopt\/([\w\.]+)/i // Opera Touch
13173
+ ], [VERSION$1, [NAME, OPERA+' Touch']], [
13174
+ /coc_coc\w+\/([\w\.]+)/i // Coc Coc Browser
13175
+ ], [VERSION$1, [NAME, 'Coc Coc']], [
13176
+ /dolfin\/([\w\.]+)/i // Dolphin
13177
+ ], [VERSION$1, [NAME, 'Dolphin']], [
13178
+ /coast\/([\w\.]+)/i // Opera Coast
13179
+ ], [VERSION$1, [NAME, OPERA+' Coast']], [
13180
+ /miuibrowser\/([\w\.]+)/i // MIUI Browser
13181
+ ], [VERSION$1, [NAME, 'MIUI' + SUFFIX_BROWSER]], [
13182
+ /fxios\/([\w\.-]+)/i // Firefox for iOS
13183
+ ], [VERSION$1, [NAME, PREFIX_MOBILE + FIREFOX]], [
13184
+ /\bqihu|(qi?ho?o?|360)browser/i // 360
13185
+ ], [[NAME, '360' + SUFFIX_BROWSER]], [
13186
+ /(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i
13187
+ ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION$1], [ // Oculus/Samsung/Sailfish/Huawei Browser
13188
+ /(comodo_dragon)\/([\w\.]+)/i // Comodo Dragon
13189
+ ], [[NAME, /_/g, ' '], VERSION$1], [
13190
+ /(electron)\/([\w\.]+) safari/i, // Electron-based App
13191
+ /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i, // Tesla
13192
+ /m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i // QQBrowser/Baidu App/2345 Browser
13193
+ ], [NAME, VERSION$1], [
13194
+ /(metasr)[\/ ]?([\w\.]+)/i, // SouGouBrowser
13195
+ /(lbbrowser)/i, // LieBao Browser
13196
+ /\[(linkedin)app\]/i // LinkedIn App for iOS & Android
13197
+ ], [NAME], [
13198
+
13199
+ // WebView
13200
+ /((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i // Facebook App for iOS & Android
13201
+ ], [[NAME, FACEBOOK], VERSION$1], [
13202
+ /(kakao(?:talk|story))[\/ ]([\w\.]+)/i, // Kakao App
13203
+ /(naver)\(.*?(\d+\.[\w\.]+).*\)/i, // Naver InApp
13204
+ /safari (line)\/([\w\.]+)/i, // Line App for iOS
13205
+ /\b(line)\/([\w\.]+)\/iab/i, // Line App for Android
13206
+ /(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i // Chromium/Instagram/Snapchat
13207
+ ], [NAME, VERSION$1], [
13208
+ /\bgsa\/([\w\.]+) .*safari\//i // Google Search Appliance on iOS
13209
+ ], [VERSION$1, [NAME, 'GSA']], [
13210
+ /musical_ly(?:.+app_?version\/|_)([\w\.]+)/i // TikTok
13211
+ ], [VERSION$1, [NAME, 'TikTok']], [
13212
+
13213
+ /headlesschrome(?:\/([\w\.]+)| )/i // Chrome Headless
13214
+ ], [VERSION$1, [NAME, CHROME+' Headless']], [
13215
+
13216
+ / wv\).+(chrome)\/([\w\.]+)/i // Chrome WebView
13217
+ ], [[NAME, CHROME+' WebView'], VERSION$1], [
13218
+
13219
+ /droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i // Android Browser
13220
+ ], [VERSION$1, [NAME, 'Android' + SUFFIX_BROWSER]], [
13221
+
13222
+ /chrome\/([\w\.]+) mobile/i // Chrome Mobile
13223
+ ], [VERSION$1, [NAME, PREFIX_MOBILE + 'Chrome']], [
13224
+
13225
+ /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia
13226
+ ], [NAME, VERSION$1], [
13227
+
13228
+ /version\/([\w\.\,]+) .*mobile(?:\/\w+ | ?)safari/i // Safari Mobile
13229
+ ], [VERSION$1, [NAME, PREFIX_MOBILE + 'Safari']], [
13230
+ /iphone .*mobile(?:\/\w+ | ?)safari/i
13231
+ ], [[NAME, PREFIX_MOBILE + 'Safari']], [
13232
+ /version\/([\w\.\,]+) .*(safari)/i // Safari
13233
+ ], [VERSION$1, NAME], [
13234
+ /webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i // Safari < 3.0
13235
+ ], [NAME, [VERSION$1, '1']], [
13236
+
13237
+ /(webkit|khtml)\/([\w\.]+)/i
13238
+ ], [NAME, VERSION$1], [
13239
+
13240
+ // Gecko based
13241
+ /(?:mobile|tablet);.*(firefox)\/([\w\.-]+)/i // Firefox Mobile
13242
+ ], [[NAME, PREFIX_MOBILE + FIREFOX], VERSION$1], [
13243
+ /(navigator|netscape\d?)\/([-\w\.]+)/i // Netscape
13244
+ ], [[NAME, 'Netscape'], VERSION$1], [
13245
+ /mobile vr; rv:([\w\.]+)\).+firefox/i // Firefox Reality
13246
+ ], [VERSION$1, [NAME, FIREFOX+' Reality']], [
13247
+ /ekiohf.+(flow)\/([\w\.]+)/i, // Flow
13248
+ /(swiftfox)/i, // Swiftfox
13249
+ /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,
13250
+ // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror/Klar
13251
+ /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,
13252
+ // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix
13253
+ /(firefox)\/([\w\.]+)/i, // Other Firefox-based
13254
+ /(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i, // Mozilla
13255
+
13256
+ // Other
13257
+ /(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,
13258
+ // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Sleipnir/Obigo/Mosaic/Go/ICE/UP.Browser
13259
+ /(links) \(([\w\.]+)/i, // Links
13260
+ /panasonic;(viera)/i // Panasonic Viera
13261
+ ], [NAME, VERSION$1], [
13262
+
13263
+ /(cobalt)\/([\w\.]+)/i // Cobalt
13264
+ ], [NAME, [VERSION$1, /[^\d\.]+./, EMPTY]]
13265
+ ],
13725
13266
 
13726
- ///////////
13727
- // Export
13728
- //////////
13267
+ cpu : [[
13729
13268
 
13730
- // check js environment
13731
- {
13732
- // nodejs env
13733
- if (module.exports) {
13734
- exports = module.exports = UAParser;
13735
- }
13736
- exports.UAParser = UAParser;
13737
- }
13269
+ /\b(?:(amd|x|x86[-_]?|wow|win)64)\b/i // AMD64 (x64)
13270
+ ], [[ARCHITECTURE, 'amd64']], [
13738
13271
 
13739
- // jQuery/Zepto specific (optional)
13740
- // Note:
13741
- // In AMD env the global scope should be kept clean, but jQuery is an exception.
13742
- // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,
13743
- // and we should catch that.
13744
- var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);
13745
- if ($ && !$.ua) {
13746
- var parser = new UAParser();
13747
- $.ua = parser.getResult();
13748
- $.ua.get = function () {
13749
- return parser.getUA();
13750
- };
13751
- $.ua.set = function (ua) {
13752
- parser.setUA(ua);
13753
- var result = parser.getResult();
13754
- for (var prop in result) {
13755
- $.ua[prop] = result[prop];
13756
- }
13757
- };
13758
- }
13272
+ /(ia32(?=;))/i, // IA32 (quicktime)
13273
+ /((?:i[346]|x)86)[;\)]/i // IA32 (x86)
13274
+ ], [[ARCHITECTURE, 'ia32']], [
13275
+
13276
+ /\b(aarch64|arm(v?8e?l?|_?64))\b/i // ARM64
13277
+ ], [[ARCHITECTURE, 'arm64']], [
13278
+
13279
+ /\b(arm(?:v[67])?ht?n?[fl]p?)\b/i // ARMHF
13280
+ ], [[ARCHITECTURE, 'armhf']], [
13281
+
13282
+ // PocketPC mistakenly identified as PowerPC
13283
+ /windows (ce|mobile); ppc;/i
13284
+ ], [[ARCHITECTURE, 'arm']], [
13285
+
13286
+ /((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i // PowerPC
13287
+ ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [
13288
+
13289
+ /(sun4\w)[;\)]/i // SPARC
13290
+ ], [[ARCHITECTURE, 'sparc']], [
13291
+
13292
+ /((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i
13293
+ // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC
13294
+ ], [[ARCHITECTURE, lowerize]]
13295
+ ],
13296
+
13297
+ device : [[
13298
+
13299
+ //////////////////////////
13300
+ // MOBILES & TABLETS
13301
+ /////////////////////////
13302
+
13303
+ // Samsung
13304
+ /\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i
13305
+ ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [
13306
+ /\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,
13307
+ /samsung[- ]([-\w]+)/i,
13308
+ /sec-(sgh\w+)/i
13309
+ ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [
13310
+
13311
+ // Apple
13312
+ /(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i // iPod/iPhone
13313
+ ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [
13314
+ /\((ipad);[-\w\),; ]+apple/i, // iPad
13315
+ /applecoremedia\/[\w\.]+ \((ipad)/i,
13316
+ /\b(ipad)\d\d?,\d\d?[;\]].+ios/i
13317
+ ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [
13318
+ /(macintosh);/i
13319
+ ], [MODEL, [VENDOR, APPLE]], [
13320
+
13321
+ // Sharp
13322
+ /\b(sh-?[altvz]?\d\d[a-ekm]?)/i
13323
+ ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [
13324
+
13325
+ // Huawei
13326
+ /\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i
13327
+ ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [
13328
+ /(?:huawei|honor)([-\w ]+)[;\)]/i,
13329
+ /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i
13330
+ ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [
13331
+
13332
+ // Xiaomi
13333
+ /\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i, // Xiaomi POCO
13334
+ /\b; (\w+) build\/hm\1/i, // Xiaomi Hongmi 'numeric' models
13335
+ /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i, // Xiaomi Hongmi
13336
+ /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i, // Xiaomi Redmi
13337
+ /oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|\))/i, // Xiaomi Redmi 'numeric' models
13338
+ /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i // Xiaomi Mi
13339
+ ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [
13340
+ /oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i, // Redmi Pad
13341
+ /\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i // Mi Pad tablets
13342
+ ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [
13343
+
13344
+ // OPPO
13345
+ /; (\w+) bui.+ oppo/i,
13346
+ /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i
13347
+ ], [MODEL, [VENDOR, 'OPPO'], [TYPE, MOBILE]], [
13348
+
13349
+ // Vivo
13350
+ /vivo (\w+)(?: bui|\))/i,
13351
+ /\b(v[12]\d{3}\w?[at])(?: bui|;)/i
13352
+ ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [
13353
+
13354
+ // Realme
13355
+ /\b(rmx[1-3]\d{3})(?: bui|;|\))/i
13356
+ ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [
13357
+
13358
+ // Motorola
13359
+ /\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,
13360
+ /\bmot(?:orola)?[- ](\w*)/i,
13361
+ /((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i
13362
+ ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [
13363
+ /\b(mz60\d|xoom[2 ]{0,2}) build\//i
13364
+ ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [
13365
+
13366
+ // LG
13367
+ /((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i
13368
+ ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [
13369
+ /(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,
13370
+ /\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,
13371
+ /\blg-?([\d\w]+) bui/i
13372
+ ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [
13373
+
13374
+ // Lenovo
13375
+ /(ideatab[-\w ]+)/i,
13376
+ /lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i
13377
+ ], [MODEL, [VENDOR, 'Lenovo'], [TYPE, TABLET]], [
13378
+
13379
+ // Nokia
13380
+ /(?:maemo|nokia).*(n900|lumia \d+)/i,
13381
+ /nokia[-_ ]?([-\w\.]*)/i
13382
+ ], [[MODEL, /_/g, ' '], [VENDOR, 'Nokia'], [TYPE, MOBILE]], [
13383
+
13384
+ // Google
13385
+ /(pixel c)\b/i // Google Pixel C
13386
+ ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [
13387
+ /droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i // Google Pixel
13388
+ ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [
13389
+
13390
+ // Sony
13391
+ /droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i
13392
+ ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [
13393
+ /sony tablet [ps]/i,
13394
+ /\b(?:sony)?sgp\w+(?: bui|\))/i
13395
+ ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [
13396
+
13397
+ // OnePlus
13398
+ / (kb2005|in20[12]5|be20[12][59])\b/i,
13399
+ /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i
13400
+ ], [MODEL, [VENDOR, 'OnePlus'], [TYPE, MOBILE]], [
13401
+
13402
+ // Amazon
13403
+ /(alexa)webm/i,
13404
+ /(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i, // Kindle Fire without Silk / Echo Show
13405
+ /(kf[a-z]+)( bui|\)).+silk\//i // Kindle Fire HD
13406
+ ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [
13407
+ /((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i // Fire Phone
13408
+ ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [
13409
+
13410
+ // BlackBerry
13411
+ /(playbook);[-\w\),; ]+(rim)/i // BlackBerry PlayBook
13412
+ ], [MODEL, VENDOR, [TYPE, TABLET]], [
13413
+ /\b((?:bb[a-f]|st[hv])100-\d)/i,
13414
+ /\(bb10; (\w+)/i // BlackBerry 10
13415
+ ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [
13416
+
13417
+ // Asus
13418
+ /(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i
13419
+ ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [
13420
+ / (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i
13421
+ ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [
13422
+
13423
+ // HTC
13424
+ /(nexus 9)/i // HTC Nexus 9
13425
+ ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [
13426
+ /(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i, // HTC
13427
+
13428
+ // ZTE
13429
+ /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,
13430
+ /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
13431
+ ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [
13432
+
13433
+ // Acer
13434
+ /droid.+; ([ab][1-7]-?[0178a]\d\d?)/i
13435
+ ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [
13436
+
13437
+ // Meizu
13438
+ /droid.+; (m[1-5] note) bui/i,
13439
+ /\bmz-([-\w]{2,})/i
13440
+ ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [
13441
+
13442
+ // Ulefone
13443
+ /; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i
13444
+ ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [
13445
+
13446
+ // MIXED
13447
+ /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,
13448
+ // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron
13449
+ /(hp) ([\w ]+\w)/i, // HP iPAQ
13450
+ /(asus)-?(\w+)/i, // Asus
13451
+ /(microsoft); (lumia[\w ]+)/i, // Microsoft Lumia
13452
+ /(lenovo)[-_ ]?([-\w]+)/i, // Lenovo
13453
+ /(jolla)/i, // Jolla
13454
+ /(oppo) ?([\w ]+) bui/i // OPPO
13455
+ ], [VENDOR, MODEL, [TYPE, MOBILE]], [
13456
+
13457
+ /(kobo)\s(ereader|touch)/i, // Kobo
13458
+ /(archos) (gamepad2?)/i, // Archos
13459
+ /(hp).+(touchpad(?!.+tablet)|tablet)/i, // HP TouchPad
13460
+ /(kindle)\/([\w\.]+)/i // Kindle
13461
+ ], [VENDOR, MODEL, [TYPE, TABLET]], [
13462
+
13463
+ /(surface duo)/i // Surface Duo
13464
+ ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [
13465
+ /droid [\d\.]+; (fp\du?)(?: b|\))/i // Fairphone
13466
+ ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [
13467
+ /(shield[\w ]+) b/i // Nvidia Shield Tablets
13468
+ ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, TABLET]], [
13469
+ /(sprint) (\w+)/i // Sprint Phones
13470
+ ], [VENDOR, MODEL, [TYPE, MOBILE]], [
13471
+ /(kin\.[onetw]{3})/i // Microsoft Kin
13472
+ ], [[MODEL, /\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [
13473
+ /droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i // Zebra
13474
+ ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [
13475
+ /droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i
13476
+ ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [
13477
+
13478
+ ///////////////////
13479
+ // SMARTTVS
13480
+ ///////////////////
13481
+
13482
+ /smart-tv.+(samsung)/i // Samsung
13483
+ ], [VENDOR, [TYPE, SMARTTV]], [
13484
+ /hbbtv.+maple;(\d+)/i
13485
+ ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [
13486
+ /(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i // LG SmartTV
13487
+ ], [[VENDOR, LG], [TYPE, SMARTTV]], [
13488
+ /(apple) ?tv/i // Apple TV
13489
+ ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [
13490
+ /crkey/i // Google Chromecast
13491
+ ], [[MODEL, CHROME+'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [
13492
+ /droid.+aft(\w+)( bui|\))/i // Fire TV
13493
+ ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [
13494
+ /\(dtv[\);].+(aquos)/i,
13495
+ /(aquos-tv[\w ]+)\)/i // Sharp
13496
+ ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[
13497
+ /(bravia[\w ]+)( bui|\))/i // Sony
13498
+ ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [
13499
+ /(mitv-\w{5}) bui/i // Xiaomi
13500
+ ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [
13501
+ /Hbbtv.*(technisat) (.*);/i // TechniSAT
13502
+ ], [VENDOR, MODEL, [TYPE, SMARTTV]], [
13503
+ /\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i, // Roku
13504
+ /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i // HbbTV devices
13505
+ ], [[VENDOR, trim$1], [MODEL, trim$1], [TYPE, SMARTTV]], [
13506
+ /\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i // SmartTV from Unidentified Vendors
13507
+ ], [[TYPE, SMARTTV]], [
13508
+
13509
+ ///////////////////
13510
+ // CONSOLES
13511
+ ///////////////////
13512
+
13513
+ /(ouya)/i, // Ouya
13514
+ /(nintendo) (\w+)/i // Nintendo
13515
+ ], [VENDOR, MODEL, [TYPE, CONSOLE]], [
13516
+ /droid.+; (shield) bui/i // Nvidia
13517
+ ], [MODEL, [VENDOR, 'Nvidia'], [TYPE, CONSOLE]], [
13518
+ /(playstation \w+)/i // Playstation
13519
+ ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [
13520
+ /\b(xbox(?: one)?(?!; xbox))[\); ]/i // Microsoft Xbox
13521
+ ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [
13522
+
13523
+ ///////////////////
13524
+ // WEARABLES
13525
+ ///////////////////
13526
+
13527
+ /((pebble))app/i // Pebble
13528
+ ], [VENDOR, MODEL, [TYPE, WEARABLE]], [
13529
+ /(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i // Apple Watch
13530
+ ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [
13531
+ /droid.+; (glass) \d/i // Google Glass
13532
+ ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [
13533
+ /droid.+; (wt63?0{2,3})\)/i
13534
+ ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [
13535
+ /(quest( 2| pro)?)/i // Oculus Quest
13536
+ ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [
13537
+
13538
+ ///////////////////
13539
+ // EMBEDDED
13540
+ ///////////////////
13541
+
13542
+ /(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i // Tesla
13543
+ ], [VENDOR, [TYPE, EMBEDDED]], [
13544
+ /(aeobc)\b/i // Echo Dot
13545
+ ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [
13546
+
13547
+ ////////////////////
13548
+ // MIXED (GENERIC)
13549
+ ///////////////////
13550
+
13551
+ /droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors
13552
+ ], [MODEL, [TYPE, MOBILE]], [
13553
+ /droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors
13554
+ ], [MODEL, [TYPE, TABLET]], [
13555
+ /\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i // Unidentifiable Tablet
13556
+ ], [[TYPE, TABLET]], [
13557
+ /(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile
13558
+ ], [[TYPE, MOBILE]], [
13559
+ /(android[-\w\. ]{0,9});.+buil/i // Generic Android Device
13560
+ ], [MODEL, [VENDOR, 'Generic']]
13561
+ ],
13562
+
13563
+ engine : [[
13564
+
13565
+ /windows.+ edge\/([\w\.]+)/i // EdgeHTML
13566
+ ], [VERSION$1, [NAME, EDGE+'HTML']], [
13567
+
13568
+ /webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i // Blink
13569
+ ], [VERSION$1, [NAME, 'Blink']], [
13570
+
13571
+ /(presto)\/([\w\.]+)/i, // Presto
13572
+ /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna
13573
+ /ekioh(flow)\/([\w\.]+)/i, // Flow
13574
+ /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i, // KHTML/Tasman/Links
13575
+ /(icab)[\/ ]([23]\.[\d\.]+)/i, // iCab
13576
+ /\b(libweb)/i
13577
+ ], [NAME, VERSION$1], [
13578
+
13579
+ /rv\:([\w\.]{1,9})\b.+(gecko)/i // Gecko
13580
+ ], [VERSION$1, NAME]
13581
+ ],
13582
+
13583
+ os : [[
13584
+
13585
+ // Windows
13586
+ /microsoft (windows) (vista|xp)/i // Windows (iTunes)
13587
+ ], [NAME, VERSION$1], [
13588
+ /(windows) nt 6\.2; (arm)/i, // Windows RT
13589
+ /(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i, // Windows Phone
13590
+ /(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i
13591
+ ], [NAME, [VERSION$1, strMapper, windowsVersionMap]], [
13592
+ /(win(?=3|9|n)|win 9x )([nt\d\.]+)/i
13593
+ ], [[NAME, WINDOWS], [VERSION$1, strMapper, windowsVersionMap]], [
13594
+
13595
+ // iOS/macOS
13596
+ /ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i, // iOS
13597
+ /(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,
13598
+ /cfnetwork\/.+darwin/i
13599
+ ], [[VERSION$1, /_/g, '.'], [NAME, 'iOS']], [
13600
+ /(mac os x) ?([\w\. ]*)/i,
13601
+ /(macintosh|mac_powerpc\b)(?!.+haiku)/i // Mac OS
13602
+ ], [[NAME, 'macOS'], [VERSION$1, /_/g, '.']], [
13603
+
13604
+ // Mobile OSes
13605
+ /droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS
13606
+ ], [VERSION$1, NAME], [ // Android/WebOS/QNX/Bada/RIM/Maemo/MeeGo/Sailfish OS
13607
+ /(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,
13608
+ /(blackberry)\w*\/([\w\.]*)/i, // Blackberry
13609
+ /(tizen|kaios)[\/ ]([\w\.]+)/i, // Tizen/KaiOS
13610
+ /\((series40);/i // Series 40
13611
+ ], [NAME, VERSION$1], [
13612
+ /\(bb(10);/i // BlackBerry 10
13613
+ ], [VERSION$1, [NAME, BLACKBERRY]], [
13614
+ /(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i // Symbian
13615
+ ], [VERSION$1, [NAME, 'Symbian']], [
13616
+ /mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i // Firefox OS
13617
+ ], [VERSION$1, [NAME, FIREFOX+' OS']], [
13618
+ /web0s;.+rt(tv)/i,
13619
+ /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i // WebOS
13620
+ ], [VERSION$1, [NAME, 'webOS']], [
13621
+ /watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i // watchOS
13622
+ ], [VERSION$1, [NAME, 'watchOS']], [
13623
+
13624
+ // Google Chromecast
13625
+ /crkey\/([\d\.]+)/i // Google Chromecast
13626
+ ], [VERSION$1, [NAME, CHROME+'cast']], [
13627
+ /(cros) [\w]+(?:\)| ([\w\.]+)\b)/i // Chromium OS
13628
+ ], [[NAME, "Chrome OS"], VERSION$1],[
13629
+
13630
+ // Smart TVs
13631
+ /panasonic;(viera)/i, // Panasonic Viera
13632
+ /(netrange)mmh/i, // Netrange
13633
+ /(nettv)\/(\d+\.[\w\.]+)/i, // NetTV
13634
+
13635
+ // Console
13636
+ /(nintendo|playstation) (\w+)/i, // Nintendo/Playstation
13637
+ /(xbox); +xbox ([^\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)
13638
+
13639
+ // Other
13640
+ /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i, // Joli/Palm
13641
+ /(mint)[\/\(\) ]?(\w*)/i, // Mint
13642
+ /(mageia|vectorlinux)[; ]/i, // Mageia/VectorLinux
13643
+ /([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,
13644
+ // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire
13645
+ /(hurd|linux) ?([\w\.]*)/i, // Hurd/Linux
13646
+ /(gnu) ?([\w\.]*)/i, // GNU
13647
+ /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly
13648
+ /(haiku) (\w+)/i // Haiku
13649
+ ], [NAME, VERSION$1], [
13650
+ /(sunos) ?([\w\.\d]*)/i // Solaris
13651
+ ], [[NAME, 'Solaris'], VERSION$1], [
13652
+ /((?:open)?solaris)[-\/ ]?([\w\.]*)/i, // Solaris
13653
+ /(aix) ((\d)(?=\.|\)| )[\w\.])*/i, // AIX
13654
+ /\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS
13655
+ /(unix) ?([\w\.]*)/i // UNIX
13656
+ ], [NAME, VERSION$1]
13657
+ ]
13658
+ };
13659
+
13660
+ /////////////////
13661
+ // Factories
13662
+ ////////////////
13663
+
13664
+ var defaultProps$1 = (function () {
13665
+ var props = { init : {}, isIgnore : {}, isIgnoreRgx : {}, toString : {}};
13666
+ setProps.call(props.init, [
13667
+ [UA_BROWSER, [NAME, VERSION$1, MAJOR]],
13668
+ [UA_CPU, [ARCHITECTURE]],
13669
+ [UA_DEVICE, [TYPE, MODEL, VENDOR]],
13670
+ [UA_ENGINE, [NAME, VERSION$1]],
13671
+ [UA_OS, [NAME, VERSION$1]]
13672
+ ]);
13673
+ setProps.call(props.isIgnore, [
13674
+ [UA_BROWSER, [VERSION$1, MAJOR]],
13675
+ [UA_ENGINE, [VERSION$1]],
13676
+ [UA_OS, [VERSION$1]]
13677
+ ]);
13678
+ setProps.call(props.isIgnoreRgx, [
13679
+ [UA_BROWSER, / ?browser$/i],
13680
+ [UA_OS, / ?os$/i]
13681
+ ]);
13682
+ setProps.call(props.toString, [
13683
+ [UA_BROWSER, [NAME, VERSION$1]],
13684
+ [UA_CPU, [ARCHITECTURE]],
13685
+ [UA_DEVICE, [VENDOR, MODEL]],
13686
+ [UA_ENGINE, [NAME, VERSION$1]],
13687
+ [UA_OS, [NAME, VERSION$1]]
13688
+ ]);
13689
+ return props;
13690
+ })();
13759
13691
 
13760
- })(typeof window === 'object' ? window : commonjsGlobal);
13761
- } (uaParser, uaParser.exports));
13692
+ var createIData = function (item, itemType) {
13762
13693
 
13763
- var UAParser = uaParser.exports;
13694
+ var init_props = defaultProps$1.init[itemType],
13695
+ is_ignoreProps = defaultProps$1.isIgnore[itemType] || 0,
13696
+ is_ignoreRgx = defaultProps$1.isIgnoreRgx[itemType] || 0,
13697
+ toString_props = defaultProps$1.toString[itemType] || 0;
13698
+
13699
+ function IData () {
13700
+ setProps.call(this, init_props);
13701
+ }
13702
+
13703
+ IData.prototype.getItem = function () {
13704
+ return item;
13705
+ };
13706
+
13707
+ IData.prototype.withClientHints = function () {
13708
+
13709
+ // nodejs / non-client-hints browsers
13710
+ if (!NAVIGATOR_UADATA) {
13711
+ return item
13712
+ .parseCH()
13713
+ .get();
13714
+ }
13715
+
13716
+ // browsers based on chromium 85+
13717
+ return NAVIGATOR_UADATA
13718
+ .getHighEntropyValues(CH_ALL_VALUES)
13719
+ .then(function (res) {
13720
+ return item
13721
+ .setCH(new UACHData(res, false))
13722
+ .parseCH()
13723
+ .get();
13724
+ });
13725
+ };
13726
+
13727
+ IData.prototype.withFeatureCheck = function () {
13728
+ return item.detectFeature().get();
13729
+ };
13730
+
13731
+ if (itemType != UA_RESULT) {
13732
+ IData.prototype.is = function (strToCheck) {
13733
+ var is = false;
13734
+ for (var i in this) {
13735
+ if (this.hasOwnProperty(i) && !has(is_ignoreProps, i) && lowerize(is_ignoreRgx ? strip(is_ignoreRgx, this[i]) : this[i]) == lowerize(is_ignoreRgx ? strip(is_ignoreRgx, strToCheck) : strToCheck)) {
13736
+ is = true;
13737
+ if (strToCheck != UNDEF_TYPE) break;
13738
+ } else if (strToCheck == UNDEF_TYPE && is) {
13739
+ is = !is;
13740
+ break;
13741
+ }
13742
+ }
13743
+ return is;
13744
+ };
13745
+ IData.prototype.toString = function () {
13746
+ var str = EMPTY;
13747
+ for (var i in toString_props) {
13748
+ if (typeof(this[toString_props[i]]) !== UNDEF_TYPE) {
13749
+ str += (str ? ' ' : EMPTY) + this[toString_props[i]];
13750
+ }
13751
+ }
13752
+ return str || UNDEF_TYPE;
13753
+ };
13754
+ }
13755
+
13756
+ if (!NAVIGATOR_UADATA) {
13757
+ IData.prototype.then = function (cb) {
13758
+ var that = this;
13759
+ var IDataResolve = function () {
13760
+ for (var prop in that) {
13761
+ if (that.hasOwnProperty(prop)) {
13762
+ this[prop] = that[prop];
13763
+ }
13764
+ }
13765
+ };
13766
+ IDataResolve.prototype = {
13767
+ is : IData.prototype.is,
13768
+ toString : IData.prototype.toString
13769
+ };
13770
+ var resolveData = new IDataResolve();
13771
+ cb(resolveData);
13772
+ return resolveData;
13773
+ };
13774
+ }
13775
+
13776
+ return new IData();
13777
+ };
13778
+
13779
+ /////////////////
13780
+ // Constructor
13781
+ ////////////////
13782
+
13783
+ function UACHData (uach, isHttpUACH) {
13784
+ uach = uach || {};
13785
+ setProps.call(this, CH_ALL_VALUES);
13786
+ if (isHttpUACH) {
13787
+ setProps.call(this, [
13788
+ [BRANDS, itemListToArray(uach[CH_HEADER])],
13789
+ [FULLVERLIST, itemListToArray(uach[CH_HEADER_FULL_VER_LIST])],
13790
+ [MOBILE, /\?1/.test(uach[CH_HEADER_MOBILE])],
13791
+ [MODEL, stripQuotes(uach[CH_HEADER_MODEL])],
13792
+ [PLATFORM, stripQuotes(uach[CH_HEADER_PLATFORM])],
13793
+ [PLATFORMVER, stripQuotes(uach[CH_HEADER_PLATFORM_VER])],
13794
+ [ARCHITECTURE, stripQuotes(uach[CH_HEADER_ARCH])],
13795
+ [FORMFACTOR, itemListToArray(uach[CH_HEADER_FORM_FACTOR])],
13796
+ [BITNESS, stripQuotes(uach[CH_HEADER_BITNESS])]
13797
+ ]);
13798
+ } else {
13799
+ for (var prop in uach) {
13800
+ if(this.hasOwnProperty(prop) && typeof uach[prop] !== UNDEF_TYPE) this[prop] = uach[prop];
13801
+ }
13802
+ }
13803
+ }
13804
+
13805
+ function UAItem (itemType, ua, rgxMap, uaCH) {
13806
+
13807
+ this.get = function (prop) {
13808
+ if (!prop) return this.data;
13809
+ return this.data.hasOwnProperty(prop) ? this.data[prop] : undefined;
13810
+ };
13811
+
13812
+ this.set = function (prop, val) {
13813
+ this.data[prop] = val;
13814
+ return this;
13815
+ };
13816
+
13817
+ this.setCH = function (ch) {
13818
+ this.uaCH = ch;
13819
+ return this;
13820
+ };
13821
+
13822
+ this.detectFeature = function () {
13823
+ if (NAVIGATOR && NAVIGATOR.userAgent == this.ua) {
13824
+ switch (this.itemType) {
13825
+ case UA_BROWSER:
13826
+ // Brave-specific detection
13827
+ if (NAVIGATOR.brave && typeof NAVIGATOR.brave.isBrave == FUNC_TYPE) {
13828
+ this.set(NAME, 'Brave');
13829
+ }
13830
+ break;
13831
+ case UA_DEVICE:
13832
+ // Chrome-specific detection: check for 'mobile' value of navigator.userAgentData
13833
+ if (!this.get(TYPE) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[MOBILE]) {
13834
+ this.set(TYPE, MOBILE);
13835
+ }
13836
+ // iPadOS-specific detection: identified as Mac, but has some iOS-only properties
13837
+ if (this.get(MODEL) == 'Macintosh' && NAVIGATOR && typeof NAVIGATOR.standalone !== UNDEF_TYPE && NAVIGATOR.maxTouchPoints && NAVIGATOR.maxTouchPoints > 2) {
13838
+ this.set(MODEL, 'iPad')
13839
+ .set(TYPE, TABLET);
13840
+ }
13841
+ break;
13842
+ case UA_OS:
13843
+ // Chrome-specific detection: check for 'platform' value of navigator.userAgentData
13844
+ if (!this.get(NAME) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[PLATFORM]) {
13845
+ this.set(NAME, NAVIGATOR_UADATA[PLATFORM]);
13846
+ }
13847
+ break;
13848
+ case UA_RESULT:
13849
+ var data = this.data;
13850
+ var detect = function (itemType) {
13851
+ return data[itemType]
13852
+ .getItem()
13853
+ .detectFeature()
13854
+ .get();
13855
+ };
13856
+ this.set(UA_BROWSER, detect(UA_BROWSER))
13857
+ .set(UA_CPU, detect(UA_CPU))
13858
+ .set(UA_DEVICE, detect(UA_DEVICE))
13859
+ .set(UA_ENGINE, detect(UA_ENGINE))
13860
+ .set(UA_OS, detect(UA_OS));
13861
+ }
13862
+ }
13863
+ return this;
13864
+ };
13865
+
13866
+ this.parseUA = function () {
13867
+ if (this.itemType != UA_RESULT) {
13868
+ rgxMapper.call(this.data, this.ua, this.rgxMap);
13869
+ }
13870
+ if (this.itemType == UA_BROWSER) {
13871
+ this.set(MAJOR, majorize(this.get(VERSION$1)));
13872
+ }
13873
+ return this;
13874
+ };
13875
+
13876
+ this.parseCH = function () {
13877
+ var uaCH = this.uaCH,
13878
+ rgxMap = this.rgxMap;
13879
+
13880
+ switch (this.itemType) {
13881
+ case UA_BROWSER:
13882
+ var brands = uaCH[FULLVERLIST] || uaCH[BRANDS];
13883
+ if (brands) {
13884
+ for (var i in brands) {
13885
+ var brandName = brands[i].brand,
13886
+ brandVersion = brands[i].version;
13887
+ if (!/not.a.brand/i.test(brandName) && (i < 1 || /chromi/i.test(this.get(NAME)))) {
13888
+ this.set(NAME, strip(GOOGLE+' ', brandName))
13889
+ .set(VERSION$1, brandVersion)
13890
+ .set(MAJOR, majorize(brandVersion));
13891
+ }
13892
+ }
13893
+ }
13894
+ break;
13895
+ case UA_CPU:
13896
+ var archName = uaCH[ARCHITECTURE];
13897
+ if (archName) {
13898
+ if (archName && uaCH[BITNESS] == '64') archName += '64';
13899
+ rgxMapper.call(this.data, archName + ';', rgxMap);
13900
+ }
13901
+ break;
13902
+ case UA_DEVICE:
13903
+ if (uaCH[MOBILE]) {
13904
+ this.set(TYPE, MOBILE);
13905
+ }
13906
+ if (uaCH[MODEL]) {
13907
+ this.set(MODEL, uaCH[MODEL]);
13908
+ }
13909
+ if (uaCH[FORMFACTOR]) {
13910
+ var ff;
13911
+ if (typeof uaCH[FORMFACTOR] !== 'string') {
13912
+ var idx = 0;
13913
+ while (!ff && idx < uaCH[FORMFACTOR].length) {
13914
+ ff = strMapper(uaCH[FORMFACTOR][idx++], formFactorMap);
13915
+ }
13916
+ } else {
13917
+ ff = strMapper(uaCH[FORMFACTOR], formFactorMap);
13918
+ }
13919
+ this.set(TYPE, ff);
13920
+ }
13921
+ break;
13922
+ case UA_OS:
13923
+ var osName = uaCH[PLATFORM];
13924
+ if(osName) {
13925
+ var osVersion = uaCH[PLATFORMVER];
13926
+ if (osName == WINDOWS) osVersion = (parseInt(majorize(osVersion), 10) >= 13 ? '11' : '10');
13927
+ this.set(NAME, osName)
13928
+ .set(VERSION$1, osVersion);
13929
+ }
13930
+ break;
13931
+ case UA_RESULT:
13932
+ var data = this.data;
13933
+ var parse = function (itemType) {
13934
+ return data[itemType]
13935
+ .getItem()
13936
+ .setCH(uaCH)
13937
+ .parseCH()
13938
+ .get();
13939
+ };
13940
+ this.set(UA_BROWSER, parse(UA_BROWSER))
13941
+ .set(UA_CPU, parse(UA_CPU))
13942
+ .set(UA_DEVICE, parse(UA_DEVICE))
13943
+ .set(UA_ENGINE, parse(UA_ENGINE))
13944
+ .set(UA_OS, parse(UA_OS));
13945
+ }
13946
+ return this;
13947
+ };
13948
+
13949
+ setProps.call(this, [
13950
+ ['itemType', itemType],
13951
+ ['ua', ua],
13952
+ ['uaCH', uaCH],
13953
+ ['rgxMap', rgxMap],
13954
+ ['data', createIData(this, itemType)]
13955
+ ]);
13956
+
13957
+ return this;
13958
+ }
13959
+
13960
+ function UAParser (ua, extensions, headers) {
13961
+
13962
+ if (typeof ua === OBJ_TYPE) {
13963
+ if (isExtensions(ua)) {
13964
+ if (typeof extensions === OBJ_TYPE) {
13965
+ headers = extensions; // case UAParser(extensions, headers)
13966
+ }
13967
+ extensions = ua; // case UAParser(extensions)
13968
+ } else {
13969
+ headers = ua; // case UAParser(headers)
13970
+ extensions = undefined;
13971
+ }
13972
+ ua = undefined;
13973
+ } else if (typeof ua === STR_TYPE && !isExtensions(extensions)) {
13974
+ headers = extensions; // case UAParser(ua, headers)
13975
+ extensions = undefined;
13976
+ }
13977
+
13978
+ if (!(this instanceof UAParser)) {
13979
+ return new UAParser(ua, extensions, headers).getResult();
13980
+ }
13981
+
13982
+ var userAgent = typeof ua === STR_TYPE ? ua : // Passed user-agent string
13983
+ ((NAVIGATOR && NAVIGATOR.userAgent) ? NAVIGATOR.userAgent : // navigator.userAgent
13984
+ (headers && headers[USER_AGENT] ? headers[USER_AGENT] : // User-Agent from passed headers
13985
+ EMPTY)), // empty string
13986
+
13987
+ httpUACH = new UACHData(headers, true),
13988
+ regexMap = extensions ?
13989
+ extend$1(defaultRegexes, extensions) :
13990
+ defaultRegexes,
13991
+
13992
+ createItemFunc = function (itemType) {
13993
+ if (itemType == UA_RESULT) {
13994
+ return function () {
13995
+ return new UAItem(itemType, userAgent, regexMap, httpUACH)
13996
+ .set('ua', userAgent)
13997
+ .set(UA_BROWSER, this.getBrowser())
13998
+ .set(UA_CPU, this.getCPU())
13999
+ .set(UA_DEVICE, this.getDevice())
14000
+ .set(UA_ENGINE, this.getEngine())
14001
+ .set(UA_OS, this.getOS())
14002
+ .get();
14003
+ };
14004
+ } else {
14005
+ return function () {
14006
+ return new UAItem(itemType, userAgent, regexMap[itemType], httpUACH)
14007
+ .parseUA()
14008
+ .get();
14009
+ };
14010
+ }
14011
+ };
14012
+
14013
+ // public methods
14014
+ setProps.call(this, [
14015
+ ['getBrowser', createItemFunc(UA_BROWSER)],
14016
+ ['getCPU', createItemFunc(UA_CPU)],
14017
+ ['getDevice', createItemFunc(UA_DEVICE)],
14018
+ ['getEngine', createItemFunc(UA_ENGINE)],
14019
+ ['getOS', createItemFunc(UA_OS)],
14020
+ ['getResult', createItemFunc(UA_RESULT)],
14021
+ ['getUA', function () { return userAgent; }],
14022
+ ['setUA', function (ua) {
14023
+ if (typeof ua === STR_TYPE)
14024
+ userAgent = ua.length > UA_MAX_LENGTH ? trim$1(ua, UA_MAX_LENGTH) : ua;
14025
+ return this;
14026
+ }]
14027
+ ])
14028
+ .setUA(userAgent);
14029
+
14030
+ return this;
14031
+ }
14032
+
14033
+ UAParser.VERSION = LIBVERSION;
14034
+ UAParser.BROWSER = enumerize([NAME, VERSION$1, MAJOR]);
14035
+ UAParser.CPU = enumerize([ARCHITECTURE]);
14036
+ UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);
14037
+ UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION$1]);
13764
14038
 
13765
14039
  var _a, _b, _c, _d, _e;
13766
14040
  const getUAParserData = (userAgent) => {
13767
- var _a, _b;
14041
+ var _a;
13768
14042
  if (userAgent) {
13769
14043
  const uaParserData = new UAParser(userAgent);
13770
14044
  const Parser = uaParserData.getResult();
@@ -13773,13 +14047,15 @@ const getUAParserData = (userAgent) => {
13773
14047
  const browserVersion = Parser.browser.version;
13774
14048
  const osName = Parser.os.name;
13775
14049
  const osVersion = Parser.os.version;
14050
+ const hints = Parser.withFeatureCheck();
13776
14051
  return {
13777
14052
  description: `${browserName} ${browserVersion} on ${osName} ${osVersion}`,
13778
14053
  layout: (_a = Parser === null || Parser === void 0 ? void 0 : Parser.engine) === null || _a === void 0 ? void 0 : _a.name,
13779
14054
  manufacturer: null,
13780
14055
  name: browserName,
13781
14056
  prerelease: null,
13782
- product: (_b = Parser === null || Parser === void 0 ? void 0 : Parser.device) === null || _b === void 0 ? void 0 : _b.model,
14057
+ device: hints.device,
14058
+ browser: hints.browser,
13783
14059
  ua: ua.replace(/Macintosh;/, 'Linux;').replace(/Intel Mac OS X (\d+_\d+_\d+)/, 'Android $1').replace(/ AppleWebKit/, ' Mobile AppleWebKit'),
13784
14060
  version: browserVersion,
13785
14061
  os: {