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