cakeinpanic-shared 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/dist/cjs/_virtual/_commonjsHelpers.js +10 -0
  2. package/dist/cjs/_virtual/_commonjsHelpers.js.map +1 -0
  3. package/dist/cjs/_virtual/index.js +10 -0
  4. package/dist/cjs/_virtual/index.js.map +1 -0
  5. package/dist/cjs/_virtual/index2.js +8 -0
  6. package/dist/cjs/_virtual/index2.js.map +1 -0
  7. package/dist/cjs/_virtual/ua-parser.js +10 -0
  8. package/dist/cjs/_virtual/ua-parser.js.map +1 -0
  9. package/dist/cjs/_virtual/ua-parser2.js +8 -0
  10. package/dist/cjs/_virtual/ua-parser2.js.map +1 -0
  11. package/dist/cjs/index.css +1 -0
  12. package/dist/cjs/index.js +39 -0
  13. package/dist/cjs/index.js.map +1 -0
  14. package/dist/cjs/node_modules/classnames/index.js +74 -0
  15. package/dist/cjs/node_modules/classnames/index.js.map +1 -0
  16. package/dist/cjs/node_modules/ua-parser-js/src/ua-parser.js +811 -0
  17. package/dist/cjs/node_modules/ua-parser-js/src/ua-parser.js.map +1 -0
  18. package/dist/cjs/theme-css/constants.js +21 -0
  19. package/dist/cjs/theme-css/constants.js.map +1 -0
  20. package/dist/cjs/theme-css/content-theme/content-theme.js +30 -0
  21. package/dist/cjs/theme-css/content-theme/content-theme.js.map +1 -0
  22. package/dist/cjs/theme-css/content-theme/content-theme.module.css.js +6 -0
  23. package/dist/cjs/theme-css/content-theme/content-theme.module.css.js.map +1 -0
  24. package/dist/cjs/theme-css/cookie-theme-provider.js +129 -0
  25. package/dist/cjs/theme-css/cookie-theme-provider.js.map +1 -0
  26. package/dist/cjs/theme-css/document-head-contents/element-theme-script.js +73 -0
  27. package/dist/cjs/theme-css/document-head-contents/element-theme-script.js.map +1 -0
  28. package/dist/cjs/theme-css/theme-provider/theme-provider.js +48 -0
  29. package/dist/cjs/theme-css/theme-provider/theme-provider.js.map +1 -0
  30. package/dist/cjs/theme-css/theme-toggler/theme-toggler.js +72 -0
  31. package/dist/cjs/theme-css/theme-toggler/theme-toggler.js.map +1 -0
  32. package/dist/cjs/theme-css/theme-toggler/theme-toggler.module.css.js +6 -0
  33. package/dist/cjs/theme-css/theme-toggler/theme-toggler.module.css.js.map +1 -0
  34. package/dist/cjs/theme-css/use-theme-toggle.js +13 -0
  35. package/dist/cjs/theme-css/use-theme-toggle.js.map +1 -0
  36. package/dist/cjs/theme-css/utils/cookies.js +21 -0
  37. package/dist/cjs/theme-css/utils/cookies.js.map +1 -0
  38. package/dist/cjs/theme-css/utils/set-theme-cookie.js +37 -0
  39. package/dist/cjs/theme-css/utils/set-theme-cookie.js.map +1 -0
  40. package/dist/cjs/utils/cookies-client-side.js +63 -0
  41. package/dist/cjs/utils/cookies-client-side.js.map +1 -0
  42. package/dist/cjs/utils/get-top-level-domain.js +18 -0
  43. package/dist/cjs/utils/get-top-level-domain.js.map +1 -0
  44. package/dist/cjs/utils/index.js +18 -0
  45. package/dist/cjs/utils/index.js.map +1 -0
  46. package/dist/cjs/utils/modalRoot.js +19 -0
  47. package/dist/cjs/utils/modalRoot.js.map +1 -0
  48. package/dist/esm/_virtual/_commonjsHelpers.mjs +6 -0
  49. package/dist/esm/_virtual/_commonjsHelpers.mjs.map +1 -0
  50. package/dist/esm/_virtual/index.mjs +8 -0
  51. package/dist/esm/_virtual/index.mjs.map +1 -0
  52. package/dist/esm/_virtual/index2.mjs +4 -0
  53. package/dist/esm/_virtual/index2.mjs.map +1 -0
  54. package/dist/esm/_virtual/ua-parser.mjs +6 -0
  55. package/dist/esm/_virtual/ua-parser.mjs.map +1 -0
  56. package/dist/esm/_virtual/ua-parser2.mjs +4 -0
  57. package/dist/esm/_virtual/ua-parser2.mjs.map +1 -0
  58. package/dist/esm/index.css +1 -0
  59. package/dist/esm/index.mjs +11 -0
  60. package/dist/esm/index.mjs.map +1 -0
  61. package/dist/esm/node_modules/classnames/index.mjs +70 -0
  62. package/dist/esm/node_modules/classnames/index.mjs.map +1 -0
  63. package/dist/esm/node_modules/ua-parser-js/src/ua-parser.mjs +807 -0
  64. package/dist/esm/node_modules/ua-parser-js/src/ua-parser.mjs.map +1 -0
  65. package/dist/esm/theme-css/constants.mjs +13 -0
  66. package/dist/esm/theme-css/constants.mjs.map +1 -0
  67. package/dist/esm/theme-css/content-theme/content-theme.mjs +26 -0
  68. package/dist/esm/theme-css/content-theme/content-theme.mjs.map +1 -0
  69. package/dist/esm/theme-css/content-theme/content-theme.module.css.mjs +4 -0
  70. package/dist/esm/theme-css/content-theme/content-theme.module.css.mjs.map +1 -0
  71. package/dist/esm/theme-css/cookie-theme-provider.mjs +124 -0
  72. package/dist/esm/theme-css/cookie-theme-provider.mjs.map +1 -0
  73. package/dist/esm/theme-css/document-head-contents/element-theme-script.mjs +69 -0
  74. package/dist/esm/theme-css/document-head-contents/element-theme-script.mjs.map +1 -0
  75. package/dist/esm/theme-css/theme-provider/theme-provider.mjs +42 -0
  76. package/dist/esm/theme-css/theme-provider/theme-provider.mjs.map +1 -0
  77. package/dist/esm/theme-css/theme-toggler/theme-toggler.mjs +68 -0
  78. package/dist/esm/theme-css/theme-toggler/theme-toggler.mjs.map +1 -0
  79. package/dist/esm/theme-css/theme-toggler/theme-toggler.module.css.mjs +4 -0
  80. package/dist/esm/theme-css/theme-toggler/theme-toggler.module.css.mjs.map +1 -0
  81. package/dist/esm/theme-css/use-theme-toggle.mjs +9 -0
  82. package/dist/esm/theme-css/use-theme-toggle.mjs.map +1 -0
  83. package/dist/esm/theme-css/utils/cookies.mjs +17 -0
  84. package/dist/esm/theme-css/utils/cookies.mjs.map +1 -0
  85. package/dist/esm/theme-css/utils/set-theme-cookie.mjs +33 -0
  86. package/dist/esm/theme-css/utils/set-theme-cookie.mjs.map +1 -0
  87. package/dist/esm/utils/cookies-client-side.mjs +55 -0
  88. package/dist/esm/utils/cookies-client-side.mjs.map +1 -0
  89. package/dist/esm/utils/get-top-level-domain.mjs +14 -0
  90. package/dist/esm/utils/get-top-level-domain.mjs.map +1 -0
  91. package/dist/esm/utils/index.mjs +8 -0
  92. package/dist/esm/utils/index.mjs.map +1 -0
  93. package/dist/esm/utils/modalRoot.mjs +17 -0
  94. package/dist/esm/utils/modalRoot.mjs.map +1 -0
  95. package/dist/types/hooks/index.d.ts +1 -0
  96. package/dist/types/hooks/index.d.ts.map +1 -0
  97. package/dist/types/index.d.ts +3 -0
  98. package/dist/types/index.d.ts.map +1 -0
  99. package/dist/types/theme-css/block/Block.d.ts +2 -0
  100. package/dist/types/theme-css/block/Block.d.ts.map +1 -0
  101. package/dist/types/theme-css/block/index.d.ts +2 -0
  102. package/dist/types/theme-css/block/index.d.ts.map +1 -0
  103. package/dist/types/theme-css/constants.d.ts +9 -0
  104. package/dist/types/theme-css/constants.d.ts.map +1 -0
  105. package/dist/types/theme-css/content-theme/content-theme.d.ts +7 -0
  106. package/dist/types/theme-css/content-theme/content-theme.d.ts.map +1 -0
  107. package/dist/types/theme-css/content-theme/index.d.ts +2 -0
  108. package/dist/types/theme-css/content-theme/index.d.ts.map +1 -0
  109. package/dist/types/theme-css/cookie-theme-provider.d.ts +20 -0
  110. package/dist/types/theme-css/cookie-theme-provider.d.ts.map +1 -0
  111. package/dist/types/theme-css/document-head-contents/element-theme-script.d.ts +6 -0
  112. package/dist/types/theme-css/document-head-contents/element-theme-script.d.ts.map +1 -0
  113. package/dist/types/theme-css/document-head-contents/index.d.ts +2 -0
  114. package/dist/types/theme-css/document-head-contents/index.d.ts.map +1 -0
  115. package/dist/types/theme-css/index.d.ts +7 -0
  116. package/dist/types/theme-css/index.d.ts.map +1 -0
  117. package/dist/types/theme-css/theme-provider/index.d.ts +2 -0
  118. package/dist/types/theme-css/theme-provider/index.d.ts.map +1 -0
  119. package/dist/types/theme-css/theme-provider/theme-provider.d.ts +10 -0
  120. package/dist/types/theme-css/theme-provider/theme-provider.d.ts.map +1 -0
  121. package/dist/types/theme-css/theme-toggler/index.d.ts +2 -0
  122. package/dist/types/theme-css/theme-toggler/index.d.ts.map +1 -0
  123. package/dist/types/theme-css/theme-toggler/theme-toggler.d.ts +5 -0
  124. package/dist/types/theme-css/theme-toggler/theme-toggler.d.ts.map +1 -0
  125. package/dist/types/theme-css/use-theme-toggle.d.ts +3 -0
  126. package/dist/types/theme-css/use-theme-toggle.d.ts.map +1 -0
  127. package/dist/types/theme-css/utils/cookies.d.ts +3 -0
  128. package/dist/types/theme-css/utils/cookies.d.ts.map +1 -0
  129. package/dist/types/theme-css/utils/set-theme-cookie.d.ts +3 -0
  130. package/dist/types/theme-css/utils/set-theme-cookie.d.ts.map +1 -0
  131. package/dist/types/types/index.d.ts +1 -0
  132. package/dist/types/types/index.d.ts.map +1 -0
  133. package/dist/types/utils/__tests__/get-top-level-domain.test.d.ts +2 -0
  134. package/dist/types/utils/__tests__/get-top-level-domain.test.d.ts.map +1 -0
  135. package/dist/types/utils/cookies-client-side.d.ts +6 -0
  136. package/dist/types/utils/cookies-client-side.d.ts.map +1 -0
  137. package/dist/types/utils/get-top-level-domain.d.ts +2 -0
  138. package/dist/types/utils/get-top-level-domain.d.ts.map +1 -0
  139. package/dist/types/utils/index.d.ts +6 -0
  140. package/dist/types/utils/index.d.ts.map +1 -0
  141. package/dist/types/utils/modalRoot.d.ts +3 -0
  142. package/dist/types/utils/modalRoot.d.ts.map +1 -0
  143. package/dist/types/utils/types.d.ts +11 -0
  144. package/dist/types/utils/types.d.ts.map +1 -0
  145. package/package.json +68 -0
@@ -0,0 +1,811 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
+
5
+ const uaParser$1 = require('../../../_virtual/ua-parser2.js');
6
+
7
+ var uaParser = uaParser$1.__module.exports;
8
+ var hasRequiredUaParser;
9
+ function requireUaParser() {
10
+ if (hasRequiredUaParser) return uaParser$1.__module.exports;
11
+ hasRequiredUaParser = 1;
12
+ (function (module, exports) {
13
+ /////////////////////////////////////////////////////////////////////////////////
14
+ /* UAParser.js v1.0.41
15
+ Copyright © 2012-2025 Faisal Salman <f@faisalman.com>
16
+ MIT License */ /*
17
+ Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.
18
+ Supports browser & node.js environment.
19
+ Demo : https://faisalman.github.io/ua-parser-js
20
+ Source : https://github.com/faisalman/ua-parser-js */
21
+ /////////////////////////////////////////////////////////////////////////////////
22
+
23
+ (function (window, undefined$1) {
24
+
25
+ //////////////
26
+ // Constants
27
+ /////////////
28
+ var LIBVERSION = '1.0.41',
29
+ EMPTY = '',
30
+ UNKNOWN = '?',
31
+ FUNC_TYPE = 'function',
32
+ UNDEF_TYPE = 'undefined',
33
+ OBJ_TYPE = 'object',
34
+ STR_TYPE = 'string',
35
+ MAJOR = 'major',
36
+ MODEL = 'model',
37
+ NAME = 'name',
38
+ TYPE = 'type',
39
+ VENDOR = 'vendor',
40
+ VERSION = 'version',
41
+ ARCHITECTURE = 'architecture',
42
+ CONSOLE = 'console',
43
+ MOBILE = 'mobile',
44
+ TABLET = 'tablet',
45
+ SMARTTV = 'smarttv',
46
+ WEARABLE = 'wearable',
47
+ EMBEDDED = 'embedded',
48
+ UA_MAX_LENGTH = 500;
49
+ var AMAZON = 'Amazon',
50
+ APPLE = 'Apple',
51
+ ASUS = 'ASUS',
52
+ BLACKBERRY = 'BlackBerry',
53
+ BROWSER = 'Browser',
54
+ CHROME = 'Chrome',
55
+ EDGE = 'Edge',
56
+ FIREFOX = 'Firefox',
57
+ GOOGLE = 'Google',
58
+ HONOR = 'Honor',
59
+ HUAWEI = 'Huawei',
60
+ LENOVO = 'Lenovo',
61
+ LG = 'LG',
62
+ MICROSOFT = 'Microsoft',
63
+ MOTOROLA = 'Motorola',
64
+ NVIDIA = 'Nvidia',
65
+ ONEPLUS = 'OnePlus',
66
+ OPERA = 'Opera',
67
+ OPPO = 'OPPO',
68
+ SAMSUNG = 'Samsung',
69
+ SHARP = 'Sharp',
70
+ SONY = 'Sony',
71
+ XIAOMI = 'Xiaomi',
72
+ ZEBRA = 'Zebra',
73
+ FACEBOOK = 'Facebook',
74
+ CHROMIUM_OS = 'Chromium OS',
75
+ MAC_OS = 'Mac OS',
76
+ SUFFIX_BROWSER = ' Browser';
77
+
78
+ ///////////
79
+ // Helper
80
+ //////////
81
+
82
+ var extend = function (regexes, extensions) {
83
+ var mergedRegexes = {};
84
+ for (var i in regexes) {
85
+ if (extensions[i] && extensions[i].length % 2 === 0) {
86
+ mergedRegexes[i] = extensions[i].concat(regexes[i]);
87
+ } else {
88
+ mergedRegexes[i] = regexes[i];
89
+ }
90
+ }
91
+ return mergedRegexes;
92
+ },
93
+ enumerize = function (arr) {
94
+ var enums = {};
95
+ for (var i = 0; i < arr.length; i++) {
96
+ enums[arr[i].toUpperCase()] = arr[i];
97
+ }
98
+ return enums;
99
+ },
100
+ has = function (str1, str2) {
101
+ return typeof str1 === STR_TYPE ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;
102
+ },
103
+ lowerize = function (str) {
104
+ return str.toLowerCase();
105
+ },
106
+ majorize = function (version) {
107
+ return typeof version === STR_TYPE ? version.replace(/[^\d\.]/g, EMPTY).split('.')[0] : undefined$1;
108
+ },
109
+ trim = function (str, len) {
110
+ if (typeof str === STR_TYPE) {
111
+ str = str.replace(/^\s\s*/, EMPTY);
112
+ return typeof len === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);
113
+ }
114
+ };
115
+
116
+ ///////////////
117
+ // Map helper
118
+ //////////////
119
+
120
+ var rgxMapper = function (ua, arrays) {
121
+ var i = 0,
122
+ j,
123
+ k,
124
+ p,
125
+ q,
126
+ matches,
127
+ match;
128
+
129
+ // loop through all regexes maps
130
+ while (i < arrays.length && !matches) {
131
+ var regex = arrays[i],
132
+ // even sequence (0,2,4,..)
133
+ props = arrays[i + 1]; // odd sequence (1,3,5,..)
134
+ j = k = 0;
135
+
136
+ // try matching uastring with regexes
137
+ while (j < regex.length && !matches) {
138
+ if (!regex[j]) {
139
+ break;
140
+ }
141
+ matches = regex[j++].exec(ua);
142
+ if (!!matches) {
143
+ for (p = 0; p < props.length; p++) {
144
+ match = matches[++k];
145
+ q = props[p];
146
+ // check if given property is actually array
147
+ if (typeof q === OBJ_TYPE && q.length > 0) {
148
+ if (q.length === 2) {
149
+ if (typeof q[1] == FUNC_TYPE) {
150
+ // assign modified match
151
+ this[q[0]] = q[1].call(this, match);
152
+ } else {
153
+ // assign given value, ignore regex match
154
+ this[q[0]] = q[1];
155
+ }
156
+ } else if (q.length === 3) {
157
+ // check whether function or regex
158
+ if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {
159
+ // call function (usually string mapper)
160
+ this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined$1;
161
+ } else {
162
+ // sanitize match using given regex
163
+ this[q[0]] = match ? match.replace(q[1], q[2]) : undefined$1;
164
+ }
165
+ } else if (q.length === 4) {
166
+ this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined$1;
167
+ }
168
+ } else {
169
+ this[q] = match ? match : undefined$1;
170
+ }
171
+ }
172
+ }
173
+ }
174
+ i += 2;
175
+ }
176
+ },
177
+ strMapper = function (str, map) {
178
+ for (var i in map) {
179
+ // check if current value is array
180
+ if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {
181
+ for (var j = 0; j < map[i].length; j++) {
182
+ if (has(map[i][j], str)) {
183
+ return i === UNKNOWN ? undefined$1 : i;
184
+ }
185
+ }
186
+ } else if (has(map[i], str)) {
187
+ return i === UNKNOWN ? undefined$1 : i;
188
+ }
189
+ }
190
+ return map.hasOwnProperty('*') ? map['*'] : str;
191
+ };
192
+
193
+ ///////////////
194
+ // String map
195
+ //////////////
196
+
197
+ // Safari < 3.0
198
+ var oldSafariMap = {
199
+ '1.0': '/8',
200
+ '1.2': '/1',
201
+ '1.3': '/3',
202
+ '2.0': '/412',
203
+ '2.0.2': '/416',
204
+ '2.0.3': '/417',
205
+ '2.0.4': '/419',
206
+ '?': '/'
207
+ },
208
+ windowsVersionMap = {
209
+ 'ME': '4.90',
210
+ 'NT 3.11': 'NT3.51',
211
+ 'NT 4.0': 'NT4.0',
212
+ '2000': 'NT 5.0',
213
+ 'XP': ['NT 5.1', 'NT 5.2'],
214
+ 'Vista': 'NT 6.0',
215
+ '7': 'NT 6.1',
216
+ '8': 'NT 6.2',
217
+ '8.1': 'NT 6.3',
218
+ '10': ['NT 6.4', 'NT 10.0'],
219
+ 'RT': 'ARM'
220
+ };
221
+
222
+ //////////////
223
+ // Regex map
224
+ /////////////
225
+
226
+ var regexes = {
227
+ browser: [[/\b(?:crmo|crios)\/([\w\.]+)/i // Chrome for Android/iOS
228
+ ], [VERSION, [NAME, 'Chrome']], [/edg(?:e|ios|a)?\/([\w\.]+)/i // Microsoft Edge
229
+ ], [VERSION, [NAME, 'Edge']], [
230
+ // Presto based
231
+ /(opera mini)\/([-\w\.]+)/i,
232
+ // Opera Mini
233
+ /(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,
234
+ // Opera Mobi/Tablet
235
+ /(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i // Opera
236
+ ], [NAME, VERSION], [/opios[\/ ]+([\w\.]+)/i // Opera mini on iphone >= 8.0
237
+ ], [VERSION, [NAME, OPERA + ' Mini']], [/\bop(?:rg)?x\/([\w\.]+)/i // Opera GX
238
+ ], [VERSION, [NAME, OPERA + ' GX']], [/\bopr\/([\w\.]+)/i // Opera Webkit
239
+ ], [VERSION, [NAME, OPERA]], [
240
+ // Mixed
241
+ /\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i // Baidu
242
+ ], [VERSION, [NAME, 'Baidu']], [/\b(?:mxbrowser|mxios|myie2)\/?([-\w\.]*)\b/i // Maxthon
243
+ ], [VERSION, [NAME, 'Maxthon']], [/(kindle)\/([\w\.]+)/i,
244
+ // Kindle
245
+ /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,
246
+ // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir
247
+ // Trident based
248
+ /(avant|iemobile|slim(?:browser|boat|jet))[\/ ]?([\d\.]*)/i,
249
+ // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet
250
+ /(?:ms|\()(ie) ([\w\.]+)/i,
251
+ // Internet Explorer
252
+
253
+ // Blink/Webkit/KHTML based // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon
254
+ /(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon)\/([-\w\.]+)/i,
255
+ // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon
256
+ /(heytap|ovi|115)browser\/([\d\.]+)/i,
257
+ // HeyTap/Ovi/115
258
+ /(weibo)__([\d\.]+)/i // Weibo
259
+ ], [NAME, VERSION], [/quark(?:pc)?\/([-\w\.]+)/i // Quark
260
+ ], [VERSION, [NAME, 'Quark']], [/\bddg\/([\w\.]+)/i // DuckDuckGo
261
+ ], [VERSION, [NAME, 'DuckDuckGo']], [/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i // UCBrowser
262
+ ], [VERSION, [NAME, 'UC' + BROWSER]], [/microm.+\bqbcore\/([\w\.]+)/i,
263
+ // WeChat Desktop for Windows Built-in Browser
264
+ /\bqbcore\/([\w\.]+).+microm/i, /micromessenger\/([\w\.]+)/i // WeChat
265
+ ], [VERSION, [NAME, 'WeChat']], [/konqueror\/([\w\.]+)/i // Konqueror
266
+ ], [VERSION, [NAME, 'Konqueror']], [/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i // IE11
267
+ ], [VERSION, [NAME, 'IE']], [/ya(?:search)?browser\/([\w\.]+)/i // Yandex
268
+ ], [VERSION, [NAME, 'Yandex']], [/slbrowser\/([\w\.]+)/i // Smart Lenovo Browser
269
+ ], [VERSION, [NAME, 'Smart Lenovo ' + BROWSER]], [/(avast|avg)\/([\w\.]+)/i // Avast/AVG Secure Browser
270
+ ], [[NAME, /(.+)/, '$1 Secure ' + BROWSER], VERSION], [/\bfocus\/([\w\.]+)/i // Firefox Focus
271
+ ], [VERSION, [NAME, FIREFOX + ' Focus']], [/\bopt\/([\w\.]+)/i // Opera Touch
272
+ ], [VERSION, [NAME, OPERA + ' Touch']], [/coc_coc\w+\/([\w\.]+)/i // Coc Coc Browser
273
+ ], [VERSION, [NAME, 'Coc Coc']], [/dolfin\/([\w\.]+)/i // Dolphin
274
+ ], [VERSION, [NAME, 'Dolphin']], [/coast\/([\w\.]+)/i // Opera Coast
275
+ ], [VERSION, [NAME, OPERA + ' Coast']], [/miuibrowser\/([\w\.]+)/i // MIUI Browser
276
+ ], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [/fxios\/([\w\.-]+)/i // Firefox for iOS
277
+ ], [VERSION, [NAME, FIREFOX]], [/\bqihoobrowser\/?([\w\.]*)/i // 360
278
+ ], [VERSION, [NAME, '360']], [/\b(qq)\/([\w\.]+)/i // QQ
279
+ ], [[NAME, /(.+)/, '$1Browser'], VERSION], [/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [
280
+ // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser
281
+ /samsungbrowser\/([\w\.]+)/i // Samsung Internet
282
+ ], [VERSION, [NAME, SAMSUNG + ' Internet']], [/metasr[\/ ]?([\d\.]+)/i // Sogou Explorer
283
+ ], [VERSION, [NAME, 'Sogou Explorer']], [/(sogou)mo\w+\/([\d\.]+)/i // Sogou Mobile
284
+ ], [[NAME, 'Sogou Mobile'], VERSION], [/(electron)\/([\w\.]+) safari/i,
285
+ // Electron-based App
286
+ /(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,
287
+ // Tesla
288
+ /m?(qqbrowser|2345(?=browser|chrome|explorer))\w*[\/ ]?v?([\w\.]+)/i // QQ/2345
289
+ ], [NAME, VERSION], [/(lbbrowser|rekonq)/i,
290
+ // LieBao Browser/Rekonq
291
+ /\[(linkedin)app\]/i // LinkedIn App for iOS & Android
292
+ ], [NAME], [/ome\/([\w\.]+) \w* ?(iron) saf/i,
293
+ // Iron
294
+ /ome\/([\w\.]+).+qihu (360)[es]e/i // 360
295
+ ], [VERSION, NAME], [
296
+ // WebView
297
+ /((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i // Facebook App for iOS & Android
298
+ ], [[NAME, FACEBOOK], VERSION], [/(Klarna)\/([\w\.]+)/i,
299
+ // Klarna Shopping Browser for iOS & Android
300
+ /(kakao(?:talk|story))[\/ ]([\w\.]+)/i,
301
+ // Kakao App
302
+ /(naver)\(.*?(\d+\.[\w\.]+).*\)/i,
303
+ // Naver InApp
304
+ /(daum)apps[\/ ]([\w\.]+)/i,
305
+ // Daum App
306
+ /safari (line)\/([\w\.]+)/i,
307
+ // Line App for iOS
308
+ /\b(line)\/([\w\.]+)\/iab/i,
309
+ // Line App for Android
310
+ /(alipay)client\/([\w\.]+)/i,
311
+ // Alipay
312
+ /(twitter)(?:and| f.+e\/([\w\.]+))/i,
313
+ // Twitter
314
+ /(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i // Chromium/Instagram/Snapchat
315
+ ], [NAME, VERSION], [/\bgsa\/([\w\.]+) .*safari\//i // Google Search Appliance on iOS
316
+ ], [VERSION, [NAME, 'GSA']], [/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i // TikTok
317
+ ], [VERSION, [NAME, 'TikTok']], [/headlesschrome(?:\/([\w\.]+)| )/i // Chrome Headless
318
+ ], [VERSION, [NAME, CHROME + ' Headless']], [/ wv\).+(chrome)\/([\w\.]+)/i // Chrome WebView
319
+ ], [[NAME, CHROME + ' WebView'], VERSION], [/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i // Android Browser
320
+ ], [VERSION, [NAME, 'Android ' + BROWSER]], [/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i // Chrome/OmniWeb/Arora/Tizen/Nokia
321
+ ], [NAME, VERSION], [/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i // Mobile Safari
322
+ ], [VERSION, [NAME, 'Mobile Safari']], [/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i // Safari & Safari Mobile
323
+ ], [VERSION, NAME], [/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i // Safari < 3.0
324
+ ], [NAME, [VERSION, strMapper, oldSafariMap]], [/(webkit|khtml)\/([\w\.]+)/i], [NAME, VERSION], [
325
+ // Gecko based
326
+ /(navigator|netscape\d?)\/([-\w\.]+)/i // Netscape
327
+ ], [[NAME, 'Netscape'], VERSION], [/(wolvic|librewolf)\/([\w\.]+)/i // Wolvic/LibreWolf
328
+ ], [NAME, VERSION], [/mobile vr; rv:([\w\.]+)\).+firefox/i // Firefox Reality
329
+ ], [VERSION, [NAME, FIREFOX + ' Reality']], [/ekiohf.+(flow)\/([\w\.]+)/i,
330
+ // Flow
331
+ /(swiftfox)/i,
332
+ // Swiftfox
333
+ /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,
334
+ // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror
335
+ /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,
336
+ // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix
337
+ /(firefox)\/([\w\.]+)/i,
338
+ // Other Firefox-based
339
+ /(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,
340
+ // Mozilla
341
+
342
+ // Other
343
+ /(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,
344
+ // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser/Ladybird
345
+ /\b(links) \(([\w\.]+)/i // Links
346
+ ], [NAME, [VERSION, /_/g, '.']], [/(cobalt)\/([\w\.]+)/i // Cobalt
347
+ ], [NAME, [VERSION, /master.|lts./, ""]]],
348
+ cpu: [[/\b((amd|x|x86[-_]?|wow|win)64)\b/i // AMD64 (x64)
349
+ ], [[ARCHITECTURE, 'amd64']], [/(ia32(?=;))/i,
350
+ // IA32 (quicktime)
351
+ /\b((i[346]|x)86)(pc)?\b/i // IA32 (x86)
352
+ ], [[ARCHITECTURE, 'ia32']], [/\b(aarch64|arm(v?[89]e?l?|_?64))\b/i // ARM64
353
+ ], [[ARCHITECTURE, 'arm64']], [/\b(arm(v[67])?ht?n?[fl]p?)\b/i // ARMHF
354
+ ], [[ARCHITECTURE, 'armhf']], [
355
+ // PocketPC mistakenly identified as PowerPC
356
+ /( (ce|mobile); ppc;|\/[\w\.]+arm\b)/i], [[ARCHITECTURE, 'arm']], [/((ppc|powerpc)(64)?)( mac|;|\))/i // PowerPC
357
+ ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [/ sun4\w[;\)]/i // SPARC
358
+ ], [[ARCHITECTURE, 'sparc']], [/\b(avr32|ia64(?=;)|68k(?=\))|\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\b|pa-risc)/i
359
+ // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC
360
+ ], [[ARCHITECTURE, lowerize]]],
361
+ device: [[
362
+ //////////////////////////
363
+ // MOBILES & TABLETS
364
+ /////////////////////////
365
+
366
+ // Samsung
367
+ /\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], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i, /samsung[- ]((?!sm-[lr])[-\w]+)/i, /sec-(sgh\w+)/i], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [
368
+ // Apple
369
+ /(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i // iPod/iPhone
370
+ ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [/\((ipad);[-\w\),; ]+apple/i,
371
+ // iPad
372
+ /applecoremedia\/[\w\.]+ \((ipad)/i, /\b(ipad)\d\d?,\d\d?[;\]].+ios/i], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [/(macintosh);/i], [MODEL, [VENDOR, APPLE]], [
373
+ // Sharp
374
+ /\b(sh-?[altvz]?\d\d[a-ekm]?)/i], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [
375
+ // Honor
376
+ /\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\)|;)/i], [MODEL, [VENDOR, HONOR], [TYPE, TABLET]], [/honor([-\w ]+)[;\)]/i], [MODEL, [VENDOR, HONOR], [TYPE, MOBILE]], [
377
+ // Huawei
378
+ /\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\w\. ]*(?= bui|\)))\b(?!.+d\/s)/i], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [/(?:huawei)([-\w ]+)[;\)]/i, /\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [
379
+ // Xiaomi
380
+ /oid[^\)]+; (2[\dbc]{4}(182|283|rp\w{2})[cgl]|m2105k81a?c)(?: bui|\))/i, /\b((?:red)?mi[-_ ]?pad[\w- ]*)(?: bui|\))/i // Mi Pad tablets
381
+ ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,
382
+ // Xiaomi POCO
383
+ /\b; (\w+) build\/hm\1/i,
384
+ // Xiaomi Hongmi 'numeric' models
385
+ /\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,
386
+ // Xiaomi Hongmi
387
+ /\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,
388
+ // Xiaomi Redmi
389
+ /oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,
390
+ // Xiaomi Redmi 'numeric' models
391
+ /\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\))/i,
392
+ // Xiaomi Mi
393
+ / ([\w ]+) miui\/v?\d/i], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [
394
+ // OPPO
395
+ /; (\w+) bui.+ oppo/i, /\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i], [MODEL, [VENDOR, OPPO], [TYPE, MOBILE]], [/\b(opd2(\d{3}a?))(?: bui|\))/i], [MODEL, [VENDOR, strMapper, {
396
+ 'OnePlus': ['304', '403', '203'],
397
+ '*': OPPO
398
+ }], [TYPE, TABLET]], [
399
+ // Vivo
400
+ /vivo (\w+)(?: bui|\))/i, /\b(v[12]\d{3}\w?[at])(?: bui|;)/i], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [
401
+ // Realme
402
+ /\b(rmx[1-3]\d{3})(?: bui|;|\))/i], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [
403
+ // Motorola
404
+ /\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i, /\bmot(?:orola)?[- ](\w*)/i, /((?:moto(?! 360)[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [/\b(mz60\d|xoom[2 ]{0,2}) build\//i], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [
405
+ // LG
406
+ /((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i, /\blg[-e;\/ ]+((?!browser|netcast|android tv|watch)\w+)/i, /\blg-?([\d\w]+) bui/i], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [
407
+ // Lenovo
408
+ /(ideatab[-\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\d{3,4}(?:f[cu]|xu|[av])|yt\d?-[jx]?\d+[lfmx])( bui|;|\)|\/)/i, /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\w- ]+?)|tb[\w-]{6,7})( bui|;|\)|\/)/i], [MODEL, [VENDOR, LENOVO], [TYPE, TABLET]], [
409
+ // Nokia
410
+ /(nokia) (t[12][01])/i], [VENDOR, MODEL, [TYPE, TABLET]], [/(?:maemo|nokia).*(n900|lumia \d+|rm-\d+)/i, /nokia[-_ ]?(([-\w\. ]*))/i], [[MODEL, /_/g, ' '], [TYPE, MOBILE], [VENDOR, 'Nokia']], [
411
+ // Google
412
+ /(pixel (c|tablet))\b/i // Google Pixel C/Tablet
413
+ ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i // Google Pixel
414
+ ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [
415
+ // Sony
416
+ /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], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [/sony tablet [ps]/i, /\b(?:sony)?sgp\w+(?: bui|\))/i], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [
417
+ // OnePlus
418
+ / (kb2005|in20[12]5|be20[12][59])\b/i, /(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i], [MODEL, [VENDOR, ONEPLUS], [TYPE, MOBILE]], [
419
+ // Amazon
420
+ /(alexa)webm/i, /(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,
421
+ // Kindle Fire without Silk / Echo Show
422
+ /(kf[a-z]+)( bui|\)).+silk\//i // Kindle Fire HD
423
+ ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i // Fire Phone
424
+ ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [
425
+ // BlackBerry
426
+ /(playbook);[-\w\),; ]+(rim)/i // BlackBerry PlayBook
427
+ ], [MODEL, VENDOR, [TYPE, TABLET]], [/\b((?:bb[a-f]|st[hv])100-\d)/i, /\(bb10; (\w+)/i // BlackBerry 10
428
+ ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [
429
+ // Asus
430
+ /(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [
431
+ // HTC
432
+ /(nexus 9)/i // HTC Nexus 9
433
+ ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,
434
+ // HTC
435
+
436
+ // ZTE
437
+ /(zte)[- ]([\w ]+?)(?: bui|\/|\))/i, /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i // Alcatel/GeeksPhone/Nexian/Panasonic/Sony
438
+ ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [
439
+ // TCL
440
+ /droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])\w*(\)| bui)/i], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [
441
+ // itel
442
+ /(itel) ((\w+))/i], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, {
443
+ 'tablet': ['p10001l', 'w7001'],
444
+ '*': 'mobile'
445
+ }]], [
446
+ // Acer
447
+ /droid.+; ([ab][1-7]-?[0178a]\d\d?)/i], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [
448
+ // Meizu
449
+ /droid.+; (m[1-5] note) bui/i, /\bmz-([-\w]{2,})/i], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [
450
+ // Ulefone
451
+ /; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [
452
+ // Energizer
453
+ /; (energy ?\w+)(?: bui|\))/i, /; energizer ([\w ]+)(?: bui|\))/i], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [
454
+ // Cat
455
+ /; cat (b35);/i, /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\))/i], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [
456
+ // Smartfren
457
+ /((?:new )?andromax[\w- ]+)(?: bui|\))/i], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [
458
+ // Nothing
459
+ /droid.+; (a(?:015|06[35]|142p?))/i], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [
460
+ // Archos
461
+ /; (x67 5g|tikeasy \w+|ac[1789]\d\w+)( b|\))/i, /archos ?(5|gamepad2?|([\w ]*[t1789]|hello) ?\d+[\w ]*)( b|\))/i], [MODEL, [VENDOR, 'Archos'], [TYPE, TABLET]], [/archos ([\w ]+)( b|\))/i, /; (ac[3-6]\d\w{2,8})( b|\))/i], [MODEL, [VENDOR, 'Archos'], [TYPE, MOBILE]], [
462
+ // MIXED
463
+ /(imo) (tab \w+)/i,
464
+ // IMO
465
+ /(infinix) (x1101b?)/i // Infinix XPad
466
+ ], [VENDOR, MODEL, [TYPE, TABLET]], [/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\w]*)/i,
467
+ // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan
468
+ /; (hmd|imo) ([\w ]+?)(?: bui|\))/i,
469
+ // HMD/IMO
470
+ /(hp) ([\w ]+\w)/i,
471
+ // HP iPAQ
472
+ /(microsoft); (lumia[\w ]+)/i,
473
+ // Microsoft Lumia
474
+ /(lenovo)[-_ ]?([-\w ]+?)(?: bui|\)|\/)/i,
475
+ // Lenovo
476
+ /(oppo) ?([\w ]+) bui/i // OPPO
477
+ ], [VENDOR, MODEL, [TYPE, MOBILE]], [/(kobo)\s(ereader|touch)/i,
478
+ // Kobo
479
+ /(hp).+(touchpad(?!.+tablet)|tablet)/i,
480
+ // HP TouchPad
481
+ /(kindle)\/([\w\.]+)/i,
482
+ // Kindle
483
+ /(nook)[\w ]+build\/(\w+)/i,
484
+ // Nook
485
+ /(dell) (strea[kpr\d ]*[\dko])/i,
486
+ // Dell Streak
487
+ /(le[- ]+pan)[- ]+(\w{1,9}) bui/i,
488
+ // Le Pan Tablets
489
+ /(trinity)[- ]*(t\d{3}) bui/i,
490
+ // Trinity Tablets
491
+ /(gigaset)[- ]+(q\w{1,9}) bui/i,
492
+ // Gigaset Tablets
493
+ /(vodafone) ([\w ]+)(?:\)| bui)/i // Vodafone
494
+ ], [VENDOR, MODEL, [TYPE, TABLET]], [/(surface duo)/i // Surface Duo
495
+ ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [/droid [\d\.]+; (fp\du?)(?: b|\))/i // Fairphone
496
+ ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [/(u304aa)/i // AT&T
497
+ ], [MODEL, [VENDOR, 'AT&T'], [TYPE, MOBILE]], [/\bsie-(\w*)/i // Siemens
498
+ ], [MODEL, [VENDOR, 'Siemens'], [TYPE, MOBILE]], [/\b(rct\w+) b/i // RCA Tablets
499
+ ], [MODEL, [VENDOR, 'RCA'], [TYPE, TABLET]], [/\b(venue[\d ]{2,7}) b/i // Dell Venue Tablets
500
+ ], [MODEL, [VENDOR, 'Dell'], [TYPE, TABLET]], [/\b(q(?:mv|ta)\w+) b/i // Verizon Tablet
501
+ ], [MODEL, [VENDOR, 'Verizon'], [TYPE, TABLET]], [/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i // Barnes & Noble Tablet
502
+ ], [MODEL, [VENDOR, 'Barnes & Noble'], [TYPE, TABLET]], [/\b(tm\d{3}\w+) b/i], [MODEL, [VENDOR, 'NuVision'], [TYPE, TABLET]], [/\b(k88) b/i // ZTE K Series Tablet
503
+ ], [MODEL, [VENDOR, 'ZTE'], [TYPE, TABLET]], [/\b(nx\d{3}j) b/i // ZTE Nubia
504
+ ], [MODEL, [VENDOR, 'ZTE'], [TYPE, MOBILE]], [/\b(gen\d{3}) b.+49h/i // Swiss GEN Mobile
505
+ ], [MODEL, [VENDOR, 'Swiss'], [TYPE, MOBILE]], [/\b(zur\d{3}) b/i // Swiss ZUR Tablet
506
+ ], [MODEL, [VENDOR, 'Swiss'], [TYPE, TABLET]], [/\b((zeki)?tb.*\b) b/i // Zeki Tablets
507
+ ], [MODEL, [VENDOR, 'Zeki'], [TYPE, TABLET]], [/\b([yr]\d{2}) b/i, /\b(dragon[- ]+touch |dt)(\w{5}) b/i // Dragon Touch Tablet
508
+ ], [[VENDOR, 'Dragon Touch'], MODEL, [TYPE, TABLET]], [/\b(ns-?\w{0,9}) b/i // Insignia Tablets
509
+ ], [MODEL, [VENDOR, 'Insignia'], [TYPE, TABLET]], [/\b((nxa|next)-?\w{0,9}) b/i // NextBook Tablets
510
+ ], [MODEL, [VENDOR, 'NextBook'], [TYPE, TABLET]], [/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i // Voice Xtreme Phones
511
+ ], [[VENDOR, 'Voice'], MODEL, [TYPE, MOBILE]], [/\b(lvtel\-)?(v1[12]) b/i // LvTel Phones
512
+ ], [[VENDOR, 'LvTel'], MODEL, [TYPE, MOBILE]], [/\b(ph-1) /i // Essential PH-1
513
+ ], [MODEL, [VENDOR, 'Essential'], [TYPE, MOBILE]], [/\b(v(100md|700na|7011|917g).*\b) b/i // Envizen Tablets
514
+ ], [MODEL, [VENDOR, 'Envizen'], [TYPE, TABLET]], [/\b(trio[-\w\. ]+) b/i // MachSpeed Tablets
515
+ ], [MODEL, [VENDOR, 'MachSpeed'], [TYPE, TABLET]], [/\btu_(1491) b/i // Rotor Tablets
516
+ ], [MODEL, [VENDOR, 'Rotor'], [TYPE, TABLET]], [/((?:tegranote|shield t(?!.+d tv))[\w- ]*?)(?: b|\))/i // Nvidia Tablets
517
+ ], [MODEL, [VENDOR, NVIDIA], [TYPE, TABLET]], [/(sprint) (\w+)/i // Sprint Phones
518
+ ], [VENDOR, MODEL, [TYPE, MOBILE]], [/(kin\.[onetw]{3})/i // Microsoft Kin
519
+ ], [[MODEL, /\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i // Zebra
520
+ ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [
521
+ ///////////////////
522
+ // SMARTTVS
523
+ ///////////////////
524
+
525
+ /smart-tv.+(samsung)/i // Samsung
526
+ ], [VENDOR, [TYPE, SMARTTV]], [/hbbtv.+maple;(\d+)/i], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i // LG SmartTV
527
+ ], [[VENDOR, LG], [TYPE, SMARTTV]], [/(apple) ?tv/i // Apple TV
528
+ ], [VENDOR, [MODEL, APPLE + ' TV'], [TYPE, SMARTTV]], [/crkey/i // Google Chromecast
529
+ ], [[MODEL, CHROME + 'cast'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [/droid.+aft(\w+)( bui|\))/i // Fire TV
530
+ ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [/(shield \w+ tv)/i // Nvidia Shield TV
531
+ ], [MODEL, [VENDOR, NVIDIA], [TYPE, SMARTTV]], [/\(dtv[\);].+(aquos)/i, /(aquos-tv[\w ]+)\)/i // Sharp
532
+ ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]], [/(bravia[\w ]+)( bui|\))/i // Sony
533
+ ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [/(mi(tv|box)-?\w+) bui/i // Xiaomi
534
+ ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [/Hbbtv.*(technisat) (.*);/i // TechniSAT
535
+ ], [VENDOR, MODEL, [TYPE, SMARTTV]], [/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,
536
+ // Roku
537
+ /hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i // HbbTV devices
538
+ ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [
539
+ // SmartTV from Unidentified Vendors
540
+ /droid.+; ([\w- ]+) (?:android tv|smart[- ]?tv)/i], [MODEL, [TYPE, SMARTTV]], [/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i], [[TYPE, SMARTTV]], [
541
+ ///////////////////
542
+ // CONSOLES
543
+ ///////////////////
544
+
545
+ /(ouya)/i,
546
+ // Ouya
547
+ /(nintendo) ([wids3utch]+)/i // Nintendo
548
+ ], [VENDOR, MODEL, [TYPE, CONSOLE]], [/droid.+; (shield)( bui|\))/i // Nvidia Portable
549
+ ], [MODEL, [VENDOR, NVIDIA], [TYPE, CONSOLE]], [/(playstation \w+)/i // Playstation
550
+ ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [/\b(xbox(?: one)?(?!; xbox))[\); ]/i // Microsoft Xbox
551
+ ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [
552
+ ///////////////////
553
+ // WEARABLES
554
+ ///////////////////
555
+
556
+ /\b(sm-[lr]\d\d[0156][fnuw]?s?|gear live)\b/i // Samsung Galaxy Watch
557
+ ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [/((pebble))app/i,
558
+ // Pebble
559
+ /(asus|google|lg|oppo) ((pixel |zen)?watch[\w ]*)( bui|\))/i // Asus ZenWatch / LG Watch / Pixel Watch
560
+ ], [VENDOR, MODEL, [TYPE, WEARABLE]], [/(ow(?:19|20)?we?[1-3]{1,3})/i // Oppo Watch
561
+ ], [MODEL, [VENDOR, OPPO], [TYPE, WEARABLE]], [/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i // Apple Watch
562
+ ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [/(opwwe\d{3})/i // OnePlus Watch
563
+ ], [MODEL, [VENDOR, ONEPLUS], [TYPE, WEARABLE]], [/(moto 360)/i // Motorola 360
564
+ ], [MODEL, [VENDOR, MOTOROLA], [TYPE, WEARABLE]], [/(smartwatch 3)/i // Sony SmartWatch
565
+ ], [MODEL, [VENDOR, SONY], [TYPE, WEARABLE]], [/(g watch r)/i // LG G Watch R
566
+ ], [MODEL, [VENDOR, LG], [TYPE, WEARABLE]], [/droid.+; (wt63?0{2,3})\)/i], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [
567
+ ///////////////////
568
+ // XR
569
+ ///////////////////
570
+
571
+ /droid.+; (glass) \d/i // Google Glass
572
+ ], [MODEL, [VENDOR, GOOGLE], [TYPE, WEARABLE]], [/(pico) (4|neo3(?: link|pro)?)/i // Pico
573
+ ], [VENDOR, MODEL, [TYPE, WEARABLE]], [/; (quest( \d| pro)?)/i // Oculus Quest
574
+ ], [MODEL, [VENDOR, FACEBOOK], [TYPE, WEARABLE]], [
575
+ ///////////////////
576
+ // EMBEDDED
577
+ ///////////////////
578
+
579
+ /(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i // Tesla
580
+ ], [VENDOR, [TYPE, EMBEDDED]], [/(aeobc)\b/i // Echo Dot
581
+ ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [/(homepod).+mac os/i // Apple HomePod
582
+ ], [MODEL, [VENDOR, APPLE], [TYPE, EMBEDDED]], [/windows iot/i], [[TYPE, EMBEDDED]], [
583
+ ////////////////////
584
+ // MIXED (GENERIC)
585
+ ///////////////////
586
+
587
+ /droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i // Android Phones from Unidentified Vendors
588
+ ], [MODEL, [TYPE, MOBILE]], [/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i // Android Tablets from Unidentified Vendors
589
+ ], [MODEL, [TYPE, TABLET]], [/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i // Unidentifiable Tablet
590
+ ], [[TYPE, TABLET]], [/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i // Unidentifiable Mobile
591
+ ], [[TYPE, MOBILE]], [/droid .+?; ([\w\. -]+)( bui|\))/i // Generic Android Device
592
+ ], [MODEL, [VENDOR, 'Generic']]],
593
+ engine: [[/windows.+ edge\/([\w\.]+)/i // EdgeHTML
594
+ ], [VERSION, [NAME, EDGE + 'HTML']], [/(arkweb)\/([\w\.]+)/i // ArkWeb
595
+ ], [NAME, VERSION], [/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i // Blink
596
+ ], [VERSION, [NAME, 'Blink']], [/(presto)\/([\w\.]+)/i,
597
+ // Presto
598
+ /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\/([\w\.]+)/i,
599
+ // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo
600
+ /ekioh(flow)\/([\w\.]+)/i,
601
+ // Flow
602
+ /(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,
603
+ // KHTML/Tasman/Links
604
+ /(icab)[\/ ]([23]\.[\d\.]+)/i,
605
+ // iCab
606
+
607
+ /\b(libweb)/i // LibWeb
608
+ ], [NAME, VERSION], [/ladybird\//i], [[NAME, 'LibWeb']], [/rv\:([\w\.]{1,9})\b.+(gecko)/i // Gecko
609
+ ], [VERSION, NAME]],
610
+ os: [[
611
+ // Windows
612
+ /microsoft (windows) (vista|xp)/i // Windows (iTunes)
613
+ ], [NAME, VERSION], [/(windows (?:phone(?: os)?|mobile|iot))[\/ ]?([\d\.\w ]*)/i // Windows Phone
614
+ ], [NAME, [VERSION, strMapper, windowsVersionMap]], [/windows nt 6\.2; (arm)/i,
615
+ // Windows RT
616
+ /windows[\/ ]([ntce\d\. ]+\w)(?!.+xbox)/i, /(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i], [[VERSION, strMapper, windowsVersionMap], [NAME, 'Windows']], [
617
+ // iOS/macOS
618
+ /[adehimnop]{4,7}\b(?:.*os ([\w]+) like mac|; opera)/i,
619
+ // iOS
620
+ /(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i, /cfnetwork\/.+darwin/i], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [/(mac os x) ?([\w\. ]*)/i, /(macintosh|mac_powerpc\b)(?!.+haiku)/i // Mac OS
621
+ ], [[NAME, MAC_OS], [VERSION, /_/g, '.']], [
622
+ // Mobile OSes
623
+ /droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i // Android-x86/HarmonyOS
624
+ ], [VERSION, NAME], [/(ubuntu) ([\w\.]+) like android/i // Ubuntu Touch
625
+ ], [[NAME, /(.+)/, '$1 Touch'], VERSION], [
626
+ // Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen
627
+ /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\w*[-\/; ]?([\d\.]*)/i], [NAME, VERSION], [/\(bb(10);/i // BlackBerry 10
628
+ ], [VERSION, [NAME, BLACKBERRY]], [/(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\/ ]?([\w\.]*)/i // Symbian
629
+ ], [VERSION, [NAME, 'Symbian']], [/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i // Firefox OS
630
+ ], [VERSION, [NAME, FIREFOX + ' OS']], [/web0s;.+rt(tv)/i, /\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i // WebOS
631
+ ], [VERSION, [NAME, 'webOS']], [/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i // watchOS
632
+ ], [VERSION, [NAME, 'watchOS']], [
633
+ // Google Chromecast
634
+ /crkey\/([\d\.]+)/i // Google Chromecast
635
+ ], [VERSION, [NAME, CHROME + 'cast']], [/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i // Chromium OS
636
+ ], [[NAME, CHROMIUM_OS], VERSION], [
637
+ // Smart TVs
638
+ /panasonic;(viera)/i,
639
+ // Panasonic Viera
640
+ /(netrange)mmh/i,
641
+ // Netrange
642
+ /(nettv)\/(\d+\.[\w\.]+)/i,
643
+ // NetTV
644
+
645
+ // Console
646
+ /(nintendo|playstation) ([wids345portablevuch]+)/i,
647
+ // Nintendo/Playstation
648
+ /(xbox); +xbox ([^\);]+)/i,
649
+ // Microsoft Xbox (360, One, X, S, Series X, Series S)
650
+
651
+ // Other
652
+ /\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,
653
+ // Joli/Palm
654
+ /(mint)[\/\(\) ]?(\w*)/i,
655
+ // Mint
656
+ /(mageia|vectorlinux)[; ]/i,
657
+ // Mageia/VectorLinux
658
+ /([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,
659
+ // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire
660
+ /(hurd|linux)(?: arm\w*| x86\w*| ?)([\w\.]*)/i,
661
+ // Hurd/Linux
662
+ /(gnu) ?([\w\.]*)/i,
663
+ // GNU
664
+ /\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,
665
+ // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly
666
+ /(haiku) (\w+)/i // Haiku
667
+ ], [NAME, VERSION], [/(sunos) ?([\w\.\d]*)/i // Solaris
668
+ ], [[NAME, 'Solaris'], VERSION], [/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,
669
+ // Solaris
670
+ /(aix) ((\d)(?=\.|\)| )[\w\.])*/i,
671
+ // AIX
672
+ /\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,
673
+ // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS
674
+ /(unix) ?([\w\.]*)/i // UNIX
675
+ ], [NAME, VERSION]]
676
+ };
677
+
678
+ /////////////////
679
+ // Constructor
680
+ ////////////////
681
+
682
+ var UAParser = function (ua, extensions) {
683
+ if (typeof ua === OBJ_TYPE) {
684
+ extensions = ua;
685
+ ua = undefined$1;
686
+ }
687
+ if (!(this instanceof UAParser)) {
688
+ return new UAParser(ua, extensions).getResult();
689
+ }
690
+ var _navigator = typeof window !== UNDEF_TYPE && window.navigator ? window.navigator : undefined$1;
691
+ var _ua = ua || (_navigator && _navigator.userAgent ? _navigator.userAgent : EMPTY);
692
+ var _uach = _navigator && _navigator.userAgentData ? _navigator.userAgentData : undefined$1;
693
+ var _rgxmap = extensions ? extend(regexes, extensions) : regexes;
694
+ var _isSelfNav = _navigator && _navigator.userAgent == _ua;
695
+ this.getBrowser = function () {
696
+ var _browser = {};
697
+ _browser[NAME] = undefined$1;
698
+ _browser[VERSION] = undefined$1;
699
+ rgxMapper.call(_browser, _ua, _rgxmap.browser);
700
+ _browser[MAJOR] = majorize(_browser[VERSION]);
701
+ // Brave-specific detection
702
+ if (_isSelfNav && _navigator && _navigator.brave && typeof _navigator.brave.isBrave == FUNC_TYPE) {
703
+ _browser[NAME] = 'Brave';
704
+ }
705
+ return _browser;
706
+ };
707
+ this.getCPU = function () {
708
+ var _cpu = {};
709
+ _cpu[ARCHITECTURE] = undefined$1;
710
+ rgxMapper.call(_cpu, _ua, _rgxmap.cpu);
711
+ return _cpu;
712
+ };
713
+ this.getDevice = function () {
714
+ var _device = {};
715
+ _device[VENDOR] = undefined$1;
716
+ _device[MODEL] = undefined$1;
717
+ _device[TYPE] = undefined$1;
718
+ rgxMapper.call(_device, _ua, _rgxmap.device);
719
+ if (_isSelfNav && !_device[TYPE] && _uach && _uach.mobile) {
720
+ _device[TYPE] = MOBILE;
721
+ }
722
+ // iPadOS-specific detection: identified as Mac, but has some iOS-only properties
723
+ if (_isSelfNav && _device[MODEL] == 'Macintosh' && _navigator && typeof _navigator.standalone !== UNDEF_TYPE && _navigator.maxTouchPoints && _navigator.maxTouchPoints > 2) {
724
+ _device[MODEL] = 'iPad';
725
+ _device[TYPE] = TABLET;
726
+ }
727
+ return _device;
728
+ };
729
+ this.getEngine = function () {
730
+ var _engine = {};
731
+ _engine[NAME] = undefined$1;
732
+ _engine[VERSION] = undefined$1;
733
+ rgxMapper.call(_engine, _ua, _rgxmap.engine);
734
+ return _engine;
735
+ };
736
+ this.getOS = function () {
737
+ var _os = {};
738
+ _os[NAME] = undefined$1;
739
+ _os[VERSION] = undefined$1;
740
+ rgxMapper.call(_os, _ua, _rgxmap.os);
741
+ if (_isSelfNav && !_os[NAME] && _uach && _uach.platform && _uach.platform != 'Unknown') {
742
+ _os[NAME] = _uach.platform.replace(/chrome os/i, CHROMIUM_OS).replace(/macos/i, MAC_OS); // backward compatibility
743
+ }
744
+ return _os;
745
+ };
746
+ this.getResult = function () {
747
+ return {
748
+ ua: this.getUA(),
749
+ browser: this.getBrowser(),
750
+ engine: this.getEngine(),
751
+ os: this.getOS(),
752
+ device: this.getDevice(),
753
+ cpu: this.getCPU()
754
+ };
755
+ };
756
+ this.getUA = function () {
757
+ return _ua;
758
+ };
759
+ this.setUA = function (ua) {
760
+ _ua = typeof ua === STR_TYPE && ua.length > UA_MAX_LENGTH ? trim(ua, UA_MAX_LENGTH) : ua;
761
+ return this;
762
+ };
763
+ this.setUA(_ua);
764
+ return this;
765
+ };
766
+ UAParser.VERSION = LIBVERSION;
767
+ UAParser.BROWSER = enumerize([NAME, VERSION, MAJOR]);
768
+ UAParser.CPU = enumerize([ARCHITECTURE]);
769
+ UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);
770
+ UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);
771
+
772
+ ///////////
773
+ // Export
774
+ //////////
775
+
776
+ // check js environment
777
+ {
778
+ // nodejs env
779
+ if (module.exports) {
780
+ exports = module.exports = UAParser;
781
+ }
782
+ exports.UAParser = UAParser;
783
+ }
784
+
785
+ // jQuery/Zepto specific (optional)
786
+ // Note:
787
+ // In AMD env the global scope should be kept clean, but jQuery is an exception.
788
+ // jQuery always exports to global scope, unless jQuery.noConflict(true) is used,
789
+ // and we should catch that.
790
+ var $ = typeof window !== UNDEF_TYPE && (window.jQuery || window.Zepto);
791
+ if ($ && !$.ua) {
792
+ var parser = new UAParser();
793
+ $.ua = parser.getResult();
794
+ $.ua.get = function () {
795
+ return parser.getUA();
796
+ };
797
+ $.ua.set = function (ua) {
798
+ parser.setUA(ua);
799
+ var result = parser.getResult();
800
+ for (var prop in result) {
801
+ $.ua[prop] = result[prop];
802
+ }
803
+ };
804
+ }
805
+ })(typeof window === 'object' ? window : uaParser);
806
+ })(uaParser$1.__module, uaParser$1.__module.exports);
807
+ return uaParser$1.__module.exports;
808
+ }
809
+
810
+ exports.__require = requireUaParser;
811
+ //# sourceMappingURL=ua-parser.js.map