{"version":3,"file":"notifications-settings.mjs","sources":["../node_modules/ua-parser-js/src/main/ua-parser.mjs","../src/views/UserSettings.vue","../src/settings.js"],"sourcesContent":["// Generated ESM version of ua-parser-js\n// DO NOT EDIT THIS FILE!\n// Source: /src/main/ua-parser.js\n\n/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v2.0.3\n   Copyright © 2012-2025 Faisal Salman <f@faisalman.com>\n   AGPLv3 License *//*\n   Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n   Supports browser & node.js environment. \n   Demo   : https://uaparser.dev\n   Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n/* jshint esversion: 6 */ \n/* globals window */\n\n\n    \n    //////////////\n    // Constants\n    /////////////\n\n    var LIBVERSION  = '2.0.3',\n        UA_MAX_LENGTH = 500,\n        USER_AGENT  = 'user-agent',\n        EMPTY       = '',\n        UNKNOWN     = '?',\n\n        // typeof\n        FUNC_TYPE   = 'function',\n        UNDEF_TYPE  = 'undefined',\n        OBJ_TYPE    = 'object',\n        STR_TYPE    = 'string',\n\n        // properties\n        UA_BROWSER  = 'browser',\n        UA_CPU      = 'cpu',\n        UA_DEVICE   = 'device',\n        UA_ENGINE   = 'engine',\n        UA_OS       = 'os',\n        UA_RESULT   = 'result',\n        \n        NAME        = 'name',\n        TYPE        = 'type',\n        VENDOR      = 'vendor',\n        VERSION     = 'version',\n        ARCHITECTURE= 'architecture',\n        MAJOR       = 'major',\n        MODEL       = 'model',\n\n        // device types\n        CONSOLE     = 'console',\n        MOBILE      = 'mobile',\n        TABLET      = 'tablet',\n        SMARTTV     = 'smarttv',\n        WEARABLE    = 'wearable',\n        XR          = 'xr',\n        EMBEDDED    = 'embedded',\n\n        // browser types\n        INAPP       = 'inapp',\n\n        // client hints\n        BRANDS      = 'brands',\n        FORMFACTORS = 'formFactors',\n        FULLVERLIST = 'fullVersionList',\n        PLATFORM    = 'platform',\n        PLATFORMVER = 'platformVersion',\n        BITNESS     = 'bitness',\n        CH_HEADER   = 'sec-ch-ua',\n        CH_HEADER_FULL_VER_LIST = CH_HEADER + '-full-version-list',\n        CH_HEADER_ARCH      = CH_HEADER + '-arch',\n        CH_HEADER_BITNESS   = CH_HEADER + '-' + BITNESS,\n        CH_HEADER_FORM_FACTORS = CH_HEADER + '-form-factors',\n        CH_HEADER_MOBILE    = CH_HEADER + '-' + MOBILE,\n        CH_HEADER_MODEL     = CH_HEADER + '-' + MODEL,\n        CH_HEADER_PLATFORM  = CH_HEADER + '-' + PLATFORM,\n        CH_HEADER_PLATFORM_VER = CH_HEADER_PLATFORM + '-version',\n        CH_ALL_VALUES       = [BRANDS, FULLVERLIST, MOBILE, MODEL, PLATFORM, PLATFORMVER, ARCHITECTURE, FORMFACTORS, BITNESS],\n\n        // device vendors\n        AMAZON      = 'Amazon',\n        APPLE       = 'Apple',\n        ASUS        = 'ASUS',\n        BLACKBERRY  = 'BlackBerry',\n        GOOGLE      = 'Google',\n        HUAWEI      = 'Huawei',\n        LENOVO      = 'Lenovo',\n        HONOR       = 'Honor',\n        LG          = 'LG',\n        MICROSOFT   = 'Microsoft',\n        MOTOROLA    = 'Motorola',\n        NVIDIA      = 'Nvidia',\n        ONEPLUS     = 'OnePlus',\n        OPPO        = 'OPPO',\n        SAMSUNG     = 'Samsung',\n        SHARP       = 'Sharp',\n        SONY        = 'Sony',\n        XIAOMI      = 'Xiaomi',\n        ZEBRA       = 'Zebra',\n\n        // browsers\n        CHROME      = 'Chrome',\n        CHROMIUM    = 'Chromium',\n        CHROMECAST  = 'Chromecast',\n        EDGE        = 'Edge',\n        FIREFOX     = 'Firefox',\n        OPERA       = 'Opera',\n        FACEBOOK    = 'Facebook',\n        SOGOU       = 'Sogou',\n\n        PREFIX_MOBILE  = 'Mobile ',\n        SUFFIX_BROWSER = ' Browser',\n\n        // os\n        WINDOWS     = 'Windows';\n   \n    var isWindow            = typeof window !== UNDEF_TYPE,\n        NAVIGATOR           = (isWindow && window.navigator) ? \n                                window.navigator : \n                                undefined,\n        NAVIGATOR_UADATA    = (NAVIGATOR && NAVIGATOR.userAgentData) ? \n                                NAVIGATOR.userAgentData : \n                                undefined;\n\n    ///////////\n    // Helper\n    //////////\n\n    var extend = function (defaultRgx, extensions) {\n            var mergedRgx = {};\n            var extraRgx = extensions;\n            if (!isExtensions(extensions)) {\n                extraRgx = {};\n                for (var i in extensions) {\n                    for (var j in extensions[i]) {\n                        extraRgx[j] = extensions[i][j].concat(extraRgx[j] ? extraRgx[j] : []);\n                    }\n                }\n            }\n            for (var k in defaultRgx) {\n                mergedRgx[k] = extraRgx[k] && extraRgx[k].length % 2 === 0 ? extraRgx[k].concat(defaultRgx[k]) : defaultRgx[k];\n            }\n            return mergedRgx;\n        },\n        enumerize = function (arr) {\n            var enums = {};\n            for (var i=0; i<arr.length; i++) {\n                enums[arr[i].toUpperCase()] = arr[i];\n            }\n            return enums;\n        },\n        has = function (str1, str2) {\n            if (typeof str1 === OBJ_TYPE && str1.length > 0) {\n                for (var i in str1) {\n                    if (lowerize(str1[i]) == lowerize(str2)) return true;\n                }\n                return false;\n            }\n            return isString(str1) ? lowerize(str2).indexOf(lowerize(str1)) !== -1 : false;\n        },\n        isExtensions = function (obj, deep) {\n            for (var prop in obj) {\n                return /^(browser|cpu|device|engine|os)$/.test(prop) || (deep ? isExtensions(obj[prop]) : false);\n            }\n        },\n        isString = function (val) {\n            return typeof val === STR_TYPE;\n        },\n        itemListToArray = function (header) {\n            if (!header) return undefined;\n            var arr = [];\n            var tokens = strip(/\\\\?\\\"/g, header).split(',');\n            for (var i = 0; i < tokens.length; i++) {\n                if (tokens[i].indexOf(';') > -1) {\n                    var token = trim(tokens[i]).split(';v=');\n                    arr[i] = { brand : token[0], version : token[1] };\n                } else {\n                    arr[i] = trim(tokens[i]);\n                }\n            }\n            return arr;\n        },\n        lowerize = function (str) {\n            return isString(str) ? str.toLowerCase() : str;\n        },\n        majorize = function (version) {\n            return isString(version) ? strip(/[^\\d\\.]/g, version).split('.')[0] : undefined;\n        },\n        setProps = function (arr) {\n            for (var i in arr) {\n                var propName = arr[i];\n                if (typeof propName == OBJ_TYPE && propName.length == 2) {\n                    this[propName[0]] = propName[1];\n                } else {\n                    this[propName] = undefined;\n                }\n            }\n            return this;\n        },\n        strip = function (pattern, str) {\n            return isString(str) ? str.replace(pattern, EMPTY) : str;\n        },\n        stripQuotes = function (str) {\n            return strip(/\\\\?\\\"/g, str); \n        },\n        trim = function (str, len) {\n            if (isString(str)) {\n                str = strip(/^\\s\\s*/, str);\n                return typeof len === UNDEF_TYPE ? str : str.substring(0, UA_MAX_LENGTH);\n            }\n    };\n\n    ///////////////\n    // Map helper\n    //////////////\n\n    var rgxMapper = function (ua, arrays) {\n\n            if(!ua || !arrays) return;\n\n            var i = 0, j, k, p, q, matches, match;\n\n            // loop through all regexes maps\n            while (i < arrays.length && !matches) {\n\n                var regex = arrays[i],       // even sequence (0,2,4,..)\n                    props = arrays[i + 1];   // odd sequence (1,3,5,..)\n                j = k = 0;\n\n                // try matching uastring with regexes\n                while (j < regex.length && !matches) {\n\n                    if (!regex[j]) { break; }\n                    matches = regex[j++].exec(ua);\n\n                    if (!!matches) {\n                        for (p = 0; p < props.length; p++) {\n                            match = matches[++k];\n                            q = props[p];\n                            // check if given property is actually array\n                            if (typeof q === OBJ_TYPE && q.length > 0) {\n                                if (q.length === 2) {\n                                    if (typeof q[1] == FUNC_TYPE) {\n                                        // assign modified match\n                                        this[q[0]] = q[1].call(this, match);\n                                    } else {\n                                        // assign given value, ignore regex match\n                                        this[q[0]] = q[1];\n                                    }\n                                } else if (q.length === 3) {\n                                    // check whether function or regex\n                                    if (typeof q[1] === FUNC_TYPE && !(q[1].exec && q[1].test)) {\n                                        // call function (usually string mapper)\n                                        this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n                                    } else {\n                                        // sanitize match using given regex\n                                        this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n                                    }\n                                } else if (q.length === 4) {\n                                        this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n                                }\n                            } else {\n                                this[q] = match ? match : undefined;\n                            }\n                        }\n                    }\n                }\n                i += 2;\n            }\n        },\n\n        strMapper = function (str, map) {\n\n            for (var i in map) {\n                // check if current value is array\n                if (typeof map[i] === OBJ_TYPE && map[i].length > 0) {\n                    for (var j = 0; j < map[i].length; j++) {\n                        if (has(map[i][j], str)) {\n                            return (i === UNKNOWN) ? undefined : i;\n                        }\n                    }\n                } else if (has(map[i], str)) {\n                    return (i === UNKNOWN) ? undefined : i;\n                }\n            }\n            return map.hasOwnProperty('*') ? map['*'] : str;\n    };\n\n    ///////////////\n    // String map\n    //////////////\n\n    var windowsVersionMap = {\n            'ME'        : '4.90',\n            'NT 3.11'   : 'NT3.51',\n            'NT 4.0'    : 'NT4.0',\n            '2000'      : 'NT 5.0',\n            'XP'        : ['NT 5.1', 'NT 5.2'],\n            'Vista'     : 'NT 6.0',\n            '7'         : 'NT 6.1',\n            '8'         : 'NT 6.2',\n            '8.1'       : 'NT 6.3',\n            '10'        : ['NT 6.4', 'NT 10.0'],\n            'RT'        : 'ARM'\n        },\n        \n        formFactorsMap = {\n            'embedded'  : 'Automotive',\n            'mobile'    : 'Mobile',\n            'tablet'    : ['Tablet', 'EInk'],\n            'smarttv'   : 'TV',\n            'wearable'  : 'Watch',\n            'xr'        : ['VR', 'XR'],\n            '?'         : ['Desktop', 'Unknown'],\n            '*'         : undefined\n    };\n\n    //////////////\n    // Regex map\n    /////////////\n\n    var defaultRegexes = {\n\n        browser : [[\n\n            // Most common regardless engine\n            /\\b(?:crmo|crios)\\/([\\w\\.]+)/i                                      // Chrome for Android/iOS\n            ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n            /edg(?:e|ios|a)?\\/([\\w\\.]+)/i                                       // Microsoft Edge\n            ], [VERSION, [NAME, 'Edge']], [\n\n            // Presto based\n            /(opera mini)\\/([-\\w\\.]+)/i,                                        // Opera Mini\n            /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i,                 // Opera Mobi/Tablet\n            /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i                           // Opera\n            ], [NAME, VERSION], [\n            /opios[\\/ ]+([\\w\\.]+)/i                                             // Opera mini on iphone >= 8.0\n            ], [VERSION, [NAME, OPERA+' Mini']], [\n            /\\bop(?:rg)?x\\/([\\w\\.]+)/i                                          // Opera GX\n            ], [VERSION, [NAME, OPERA+' GX']], [\n            /\\bopr\\/([\\w\\.]+)/i                                                 // Opera Webkit\n            ], [VERSION, [NAME, OPERA]], [\n\n            // Mixed\n            /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i            // Baidu\n            ], [VERSION, [NAME, 'Baidu']], [\n            /\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i                       // Maxthon\n            ], [VERSION, [NAME, 'Maxthon']], [\n            /(kindle)\\/([\\w\\.]+)/i,                                             // Kindle\n            /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i,      \n                                                                                // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir\n            // Trident based\n            /(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i,        // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet\n            /(?:ms|\\()(ie) ([\\w\\.]+)/i,                                         // Internet Explorer\n\n            // Blink/Webkit/KHTML based                                         // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon/LG Browser/Otter/qutebrowser/Dooble\n            /(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|otter|dooble|(?:lg |qute)browser)\\/([-\\w\\.]+)/i,\n                                                                                // Rekonq/Puffin/Brave/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon\n            /(heytap|ovi|115|surf)browser\\/([\\d\\.]+)/i,                         // HeyTap/Ovi/115/Surf\n            /(ecosia|weibo)(?:__| \\w+@)([\\d\\.]+)/i                              // Ecosia/Weibo\n            ], [NAME, VERSION], [\n            /quark(?:pc)?\\/([-\\w\\.]+)/i                                         // Quark\n            ], [VERSION, [NAME, 'Quark']], [\n            /\\bddg\\/([\\w\\.]+)/i                                                 // DuckDuckGo\n            ], [VERSION, [NAME, 'DuckDuckGo']], [\n            /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i                 // UCBrowser\n            ], [VERSION, [NAME, 'UCBrowser']], [\n            /microm.+\\bqbcore\\/([\\w\\.]+)/i,                                     // WeChat Desktop for Windows Built-in Browser\n            /\\bqbcore\\/([\\w\\.]+).+microm/i,\n            /micromessenger\\/([\\w\\.]+)/i                                        // WeChat\n            ], [VERSION, [NAME, 'WeChat']], [\n            /konqueror\\/([\\w\\.]+)/i                                             // Konqueror\n            ], [VERSION, [NAME, 'Konqueror']], [\n            /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i                       // IE11\n            ], [VERSION, [NAME, 'IE']], [\n            /ya(?:search)?browser\\/([\\w\\.]+)/i                                  // Yandex\n            ], [VERSION, [NAME, 'Yandex']], [\n            /slbrowser\\/([\\w\\.]+)/i                                             // Smart Lenovo Browser\n            ], [VERSION, [NAME, 'Smart ' + LENOVO + SUFFIX_BROWSER]], [\n            /(avast|avg)\\/([\\w\\.]+)/i                                           // Avast/AVG Secure Browser\n            ], [[NAME, /(.+)/, '$1 Secure' + SUFFIX_BROWSER], VERSION], [\n            /\\bfocus\\/([\\w\\.]+)/i                                               // Firefox Focus\n            ], [VERSION, [NAME, FIREFOX+' Focus']], [\n            /\\bopt\\/([\\w\\.]+)/i                                                 // Opera Touch\n            ], [VERSION, [NAME, OPERA+' Touch']], [\n            /coc_coc\\w+\\/([\\w\\.]+)/i                                            // Coc Coc Browser\n            ], [VERSION, [NAME, 'Coc Coc']], [\n            /dolfin\\/([\\w\\.]+)/i                                                // Dolphin\n            ], [VERSION, [NAME, 'Dolphin']], [\n            /coast\\/([\\w\\.]+)/i                                                 // Opera Coast\n            ], [VERSION, [NAME, OPERA+' Coast']], [\n            /miuibrowser\\/([\\w\\.]+)/i                                           // MIUI Browser\n            ], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [\n            /fxios\\/([\\w\\.-]+)/i                                                // Firefox for iOS\n            ], [VERSION, [NAME, PREFIX_MOBILE + FIREFOX]], [\n            /\\bqihoobrowser\\/?([\\w\\.]*)/i                                       // 360\n            ], [VERSION, [NAME, '360']], [\n            /\\b(qq)\\/([\\w\\.]+)/i                                                // QQ\n            ], [[NAME, /(.+)/, '$1Browser'], VERSION], [\n            /(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i\n            ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [              // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser\n            /samsungbrowser\\/([\\w\\.]+)/i                                        // Samsung Internet\n            ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n            /metasr[\\/ ]?([\\d\\.]+)/i                                            // Sogou Explorer\n            ], [VERSION, [NAME, SOGOU + ' Explorer']], [\n            /(sogou)mo\\w+\\/([\\d\\.]+)/i                                          // Sogou Mobile\n            ], [[NAME, SOGOU + ' Mobile'], VERSION], [\n            /(electron)\\/([\\w\\.]+) safari/i,                                    // Electron-based App\n            /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i,                   // Tesla\n            /m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i   // QQ/2345\n            ], [NAME, VERSION], [\n            /(lbbrowser|rekonq)/i                                               // LieBao Browser/Rekonq\n            ], [NAME], [\n            /ome\\/([\\w\\.]+) \\w* ?(iron) saf/i,                                  // Iron\n            /ome\\/([\\w\\.]+).+qihu (360)[es]e/i                                  // 360\n            ], [VERSION, NAME], [\n\n            // WebView\n            /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i       // Facebook App for iOS & Android\n            ], [[NAME, FACEBOOK], VERSION, [TYPE, INAPP]], [\n            /(Klarna)\\/([\\w\\.]+)/i,                                             // Klarna Shopping Browser for iOS & Android\n            /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i,                             // Kakao App\n            /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i,                                  // Naver InApp\n            /(daum)apps[\\/ ]([\\w\\.]+)/i,                                        // Daum App\n            /safari (line)\\/([\\w\\.]+)/i,                                        // Line App for iOS\n            /\\b(line)\\/([\\w\\.]+)\\/iab/i,                                        // Line App for Android\n            /(alipay)client\\/([\\w\\.]+)/i,                                       // Alipay\n            /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i,                               // Twitter\n            /(instagram|snapchat)[\\/ ]([-\\w\\.]+)/i                              // Instagram/Snapchat\n            ], [NAME, VERSION, [TYPE, INAPP]], [\n            /\\bgsa\\/([\\w\\.]+) .*safari\\//i                                      // Google Search Appliance on iOS\n            ], [VERSION, [NAME, 'GSA'], [TYPE, INAPP]], [\n            /musical_ly(?:.+app_?version\\/|_)([\\w\\.]+)/i                        // TikTok\n            ], [VERSION, [NAME, 'TikTok'], [TYPE, INAPP]], [\n            /\\[(linkedin)app\\]/i                                                // LinkedIn App for iOS & Android\n            ], [NAME, [TYPE, INAPP]], [\n\n            /(chromium)[\\/ ]([-\\w\\.]+)/i                                        // Chromium\n            ], [NAME, VERSION], [\n\n            /headlesschrome(?:\\/([\\w\\.]+)| )/i                                  // Chrome Headless\n            ], [VERSION, [NAME, CHROME+' Headless']], [\n\n            / wv\\).+(chrome)\\/([\\w\\.]+)/i                                       // Chrome WebView\n            ], [[NAME, CHROME+' WebView'], VERSION], [\n\n            /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i           // Android Browser\n            ], [VERSION, [NAME, 'Android' + SUFFIX_BROWSER]], [\n\n            /chrome\\/([\\w\\.]+) mobile/i                                         // Chrome Mobile\n            ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n\n            /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i       // Chrome/OmniWeb/Arora/Tizen/Nokia\n            ], [NAME, VERSION], [\n\n            /version\\/([\\w\\.\\,]+) .*mobile(?:\\/\\w+ | ?)safari/i                 // Safari Mobile\n            ], [VERSION, [NAME, PREFIX_MOBILE + 'Safari']], [\n            /iphone .*mobile(?:\\/\\w+ | ?)safari/i\n            ], [[NAME, PREFIX_MOBILE + 'Safari']], [\n            /version\\/([\\w\\.\\,]+) .*(safari)/i                                  // Safari\n            ], [VERSION, NAME], [\n            /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i                      // Safari < 3.0\n            ], [NAME, [VERSION, '1']], [\n\n            /(webkit|khtml)\\/([\\w\\.]+)/i\n            ], [NAME, VERSION], [\n\n            // Gecko based\n            /(?:mobile|tablet);.*(firefox)\\/([\\w\\.-]+)/i                        // Firefox Mobile\n            ], [[NAME, PREFIX_MOBILE + FIREFOX], VERSION], [\n            /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i                              // Netscape\n            ], [[NAME, 'Netscape'], VERSION], [\n            /(wolvic|librewolf)\\/([\\w\\.]+)/i                                    // Wolvic/LibreWolf\n            ], [NAME, VERSION], [\n            /mobile vr; rv:([\\w\\.]+)\\).+firefox/i                               // Firefox Reality\n            ], [VERSION, [NAME, FIREFOX+' Reality']], [\n            /ekiohf.+(flow)\\/([\\w\\.]+)/i,                                       // Flow\n            /(swiftfox)/i,                                                      // Swiftfox\n            /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i,\n                                                                                // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n            /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n                                                                                // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n            /(firefox)\\/([\\w\\.]+)/i,                                            // Other Firefox-based\n            /(mozilla)\\/([\\w\\.]+) .+rv\\:.+gecko\\/\\d+/i,                         // Mozilla\n\n            // Other\n            /(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n                                                                                // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser/Ladybird\n            /\\b(links) \\(([\\w\\.]+)/i                                            // Links\n            ], [NAME, [VERSION, /_/g, '.']], [\n            \n            /(cobalt)\\/([\\w\\.]+)/i                                              // Cobalt\n            ], [NAME, [VERSION, /[^\\d\\.]+./, EMPTY]]\n        ],\n\n        cpu : [[\n\n            /\\b((amd|x|x86[-_]?|wow|win)64)\\b/i                                 // AMD64 (x64)\n            ], [[ARCHITECTURE, 'amd64']], [\n\n            /(ia32(?=;))/i,                                                     // IA32 (quicktime)\n            /\\b((i[346]|x)86)(pc)?\\b/i                                          // IA32 (x86)\n            ], [[ARCHITECTURE, 'ia32']], [\n\n            /\\b(aarch64|arm(v?[89]e?l?|_?64))\\b/i                               // ARM64\n            ], [[ARCHITECTURE, 'arm64']], [\n\n            /\\b(arm(v[67])?ht?n?[fl]p?)\\b/i                                     // ARMHF\n            ], [[ARCHITECTURE, 'armhf']], [\n\n            // PocketPC mistakenly identified as PowerPC\n            /( (ce|mobile); ppc;|\\/[\\w\\.]+arm\\b)/i\n            ], [[ARCHITECTURE, 'arm']], [\n\n            /((ppc|powerpc)(64)?)( mac|;|\\))/i                                  // PowerPC\n            ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n\n            / sun4\\w[;\\)]/i                                                     // SPARC\n            ], [[ARCHITECTURE, 'sparc']], [\n\n            /\\b(avr32|ia64(?=;)|68k(?=\\))|\\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\\b|pa-risc)/i\n                                                                                // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n            ], [[ARCHITECTURE, lowerize]]\n        ],\n\n        device : [[\n\n            //////////////////////////\n            // MOBILES & TABLETS\n            /////////////////////////\n\n            // Samsung\n            /\\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\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n            /\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n            /samsung[- ]((?!sm-[lr])[-\\w]+)/i,\n            /sec-(sgh\\w+)/i\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n            // Apple\n            /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)(?:\\/|;)/i                          // iPod/iPhone\n            ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n            /\\((ipad);[-\\w\\),; ]+apple/i,                                       // iPad\n            /applecoremedia\\/[\\w\\.]+ \\((ipad)/i,\n            /\\b(ipad)\\d\\d?,\\d\\d?[;\\]].+ios/i\n            ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n            /(macintosh);/i\n            ], [MODEL, [VENDOR, APPLE]], [\n\n            // Sharp\n            /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n            ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n            // Honor\n            /\\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\\)|;)/i\n            ], [MODEL, [VENDOR, HONOR], [TYPE, TABLET]], [\n            /honor([-\\w ]+)[;\\)]/i\n            ], [MODEL, [VENDOR, HONOR], [TYPE, MOBILE]], [\n\n            // Huawei\n            /\\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\n            ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n            /(?:huawei)([-\\w ]+)[;\\)]/i,\n            /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][012359c][adn]?)\\b(?!.+d\\/s)/i\n            ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n            // Xiaomi\n            /oid[^\\)]+; (2[\\dbc]{4}(182|283|rp\\w{2})[cgl]|m2105k81a?c)(?: bui|\\))/i,\n            /\\b((?:red)?mi[-_ ]?pad[\\w- ]*)(?: bui|\\))/i                                // Mi Pad tablets\n            ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n            /\\b(poco[\\w ]+|m2\\d{3}j\\d\\d[a-z]{2})(?: bui|\\))/i,                  // Xiaomi POCO\n            /\\b; (\\w+) build\\/hm\\1/i,                                           // Xiaomi Hongmi 'numeric' models\n            /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i,                             // Xiaomi Hongmi\n            /\\b(redmi[\\-_ ]?(?:note|k)?[\\w_ ]+)(?: bui|\\))/i,                   // Xiaomi Redmi\n            /oid[^\\)]+; (m?[12][0-389][01]\\w{3,6}[c-y])( bui|; wv|\\))/i,        // Xiaomi Redmi 'numeric' models\n            /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\\d?\\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\\))/i, // Xiaomi Mi\n            / ([\\w ]+) miui\\/v?\\d/i\n            ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n\n            // OPPO\n            /; (\\w+) bui.+ oppo/i,\n            /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n            ], [MODEL, [VENDOR, OPPO], [TYPE, MOBILE]], [\n            /\\b(opd2(\\d{3}a?))(?: bui|\\))/i\n            ], [MODEL, [VENDOR, strMapper, { 'OnePlus' : ['304', '403', '203'], '*' : OPPO }], [TYPE, TABLET]], [\n\n            // BLU Vivo Series\n            /(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\\w\\+ ]*)(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'BLU'], [TYPE, MOBILE]], [            \n            // Vivo\n            /; vivo (\\w+)(?: bui|\\))/i,\n            /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n            ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n            // Realme\n            /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n            ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n            // Motorola\n            /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n            /\\bmot(?:orola)?[- ](\\w*)/i,\n            /((?:moto(?! 360)[\\w\\(\\) ]+|xt\\d{3,4}|nexus 6)(?= bui|\\)))/i\n            ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n            /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n            ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n            // LG\n            /((?=lg)?[vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n            ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n            /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n            /\\blg[-e;\\/ ]+(?!.*(?:browser|netcast|android tv|watch))(\\w+)/i,\n            /\\blg-?([\\d\\w]+) bui/i\n            ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n            // Lenovo\n            /(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,\n            /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\\w- ]+?)|tb[\\w-]{6,7})( bui|;|\\)|\\/)/i\n            ], [MODEL, [VENDOR, LENOVO], [TYPE, TABLET]], [\n\n            // Nokia\n            /(nokia) (t[12][01])/i\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n            /(?:maemo|nokia).*(n900|lumia \\d+|rm-\\d+)/i,\n            /nokia[-_ ]?(([-\\w\\. ]*))/i\n            ], [[MODEL, /_/g, ' '], [TYPE, MOBILE], [VENDOR, 'Nokia']], [\n\n            // Google\n            /(pixel (c|tablet))\\b/i                                             // Google Pixel C/Tablet\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n            /droid.+; (pixel[\\daxl ]{0,6})(?: bui|\\))/i                         // Google Pixel\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n\n            // Sony\n            /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\n            ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n            /sony tablet [ps]/i,\n            /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n            ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n            // OnePlus\n            / (kb2005|in20[12]5|be20[12][59])\\b/i,\n            /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n            ], [MODEL, [VENDOR, ONEPLUS], [TYPE, MOBILE]], [\n\n            // Amazon\n            /(alexa)webm/i,\n            /(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i,                           // Kindle Fire without Silk / Echo Show\n            /(kf[a-z]+)( bui|\\)).+silk\\//i                                      // Kindle Fire HD\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n            /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i                     // Fire Phone\n            ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n            // BlackBerry\n            /(playbook);[-\\w\\),; ]+(rim)/i                                      // BlackBerry PlayBook\n            ], [MODEL, VENDOR, [TYPE, TABLET]], [\n            /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n            /\\(bb10; (\\w+)/i                                                    // BlackBerry 10\n            ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n            // Asus\n            /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n            ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n            / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n            ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n            // HTC\n            /(nexus 9)/i                                                        // HTC Nexus 9\n            ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n            /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i,                         // HTC\n\n            // ZTE\n            /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n            /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i         // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n            ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n            // TCL\n            /tcl (xess p17aa)/i,\n            /droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n            ], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [\n            /droid [\\w\\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n            ], [MODEL, [VENDOR, 'TCL'], [TYPE, MOBILE]], [\n\n            // itel\n            /(itel) ((\\w+))/i\n            ], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : 'mobile' }]], [\n\n            // Acer\n            /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n            ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n            // Meizu\n            /droid.+; (m[1-5] note) bui/i,\n            /\\bmz-([-\\w]{2,})/i\n            ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n                \n            // Ulefone\n            /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n            // Energizer\n            /; (energy ?\\w+)(?: bui|\\))/i,\n            /; energizer ([\\w ]+)(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [\n\n            // Cat\n            /; cat (b35);/i,\n            /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [\n\n            // Smartfren\n            /((?:new )?andromax[\\w- ]+)(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [\n\n            // Nothing\n            /droid.+; (a(?:015|06[35]|142p?))/i\n            ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [\n\n            // Archos\n            /; (x67 5g|tikeasy \\w+|ac[1789]\\d\\w+)( b|\\))/i,\n            /archos ?(5|gamepad2?|([\\w ]*[t1789]|hello) ?\\d+[\\w ]*)( b|\\))/i\n            ], [MODEL, [VENDOR, 'Archos'], [TYPE, TABLET]], [\n            /archos ([\\w ]+)( b|\\))/i,\n            /; (ac[3-6]\\d\\w{2,8})( b|\\))/i \n            ], [MODEL, [VENDOR, 'Archos'], [TYPE, MOBILE]], [\n\n            // MIXED\n            /(imo) (tab \\w+)/i,                                                 // IMO\n            /(infinix) (x1101b?)/i                                              // Infinix XPad\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|infinix|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,\n                                                                                // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Infinix/Tecno/Micromax/Advan\n            /; (blu|hmd|imo|tcl)[_ ]([\\w\\+ ]+?)(?: bui|\\)|; r)/i,               // BLU/HMD/IMO/TCL\n            /(hp) ([\\w ]+\\w)/i,                                                 // HP iPAQ\n            /(microsoft); (lumia[\\w ]+)/i,                                      // Microsoft Lumia\n            /(lenovo)[-_ ]?([-\\w ]+?)(?: bui|\\)|\\/)/i,                          // Lenovo\n            /(oppo) ?([\\w ]+) bui/i                                             // OPPO\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n            /(kobo)\\s(ereader|touch)/i,                                         // Kobo\n            /(hp).+(touchpad(?!.+tablet)|tablet)/i,                             // HP TouchPad\n            /(kindle)\\/([\\w\\.]+)/i                                              // Kindle\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /(surface duo)/i                                                    // Surface Duo\n            ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n            /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i                                 // Fairphone\n            ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n            /((?:tegranote|shield t(?!.+d tv))[\\w- ]*?)(?: b|\\))/i              // Nvidia Tablets\n            ], [MODEL, [VENDOR, NVIDIA], [TYPE, TABLET]], [\n            /(sprint) (\\w+)/i                                                   // Sprint Phones\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n            /(kin\\.[onetw]{3})/i                                                // Microsoft Kin\n            ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n            /droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i               // Zebra\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n            /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n            ///////////////////\n            // SMARTTVS\n            ///////////////////\n\n            /smart-tv.+(samsung)/i                                              // Samsung\n            ], [VENDOR, [TYPE, SMARTTV]], [\n            /hbbtv.+maple;(\\d+)/i\n            ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n            /tcast.+(lg)e?. ([-\\w]+)/i                                          // LG SmartTV\n            ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n            /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i\n            ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n            /(apple) ?tv/i                                                      // Apple TV\n            ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n            /crkey.*devicetype\\/chromecast/i                                    // Google Chromecast Third Generation\n            ], [[MODEL, CHROMECAST+' Third Generation'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n            /crkey.*devicetype\\/([^/]*)/i                                       // Google Chromecast with specific device type\n            ], [[MODEL, /^/, 'Chromecast '], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n            /fuchsia.*crkey/i                                                   // Google Chromecast Nest Hub\n            ], [[MODEL, CHROMECAST+' Nest Hub'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n            /crkey/i                                                            // Google Chromecast, Linux-based or unknown\n            ], [[MODEL, CHROMECAST], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n            /(portaltv)/i                                                       // Facebook Portal TV\n            ], [MODEL, [VENDOR, FACEBOOK], [TYPE, SMARTTV]], [\n            /droid.+aft(\\w+)( bui|\\))/i                                         // Fire TV\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n            /(shield \\w+ tv)/i                                                  // Nvidia Shield TV\n            ], [MODEL, [VENDOR, NVIDIA], [TYPE, SMARTTV]], [\n            /\\(dtv[\\);].+(aquos)/i,\n            /(aquos-tv[\\w ]+)\\)/i                                               // Sharp\n            ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n            /(bravia[\\w ]+)( bui|\\))/i                                          // Sony\n            ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n            /(mi(tv|box)-?\\w+) bui/i                                            // Xiaomi\n            ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n            /Hbbtv.*(technisat) (.*);/i                                         // TechniSAT\n            ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n            /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i,                          // Roku\n            /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i         // HbbTV devices\n            ], [[VENDOR, trim], [MODEL, trim], [TYPE, SMARTTV]], [\n                                                                                // SmartTV from Unidentified Vendors\n            /droid.+; ([\\w- ]+) (?:android tv|smart[- ]?tv)/i\n            ], [MODEL, [TYPE, SMARTTV]], [\n            /\\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\\b/i\n            ], [[TYPE, SMARTTV]], [\n\n            ///////////////////\n            // CONSOLES\n            ///////////////////\n\n            /(ouya)/i,                                                          // Ouya\n            /(nintendo) (\\w+)/i                                                 // Nintendo\n            ], [VENDOR, MODEL, [TYPE, CONSOLE]], [\n            /droid.+; (shield)( bui|\\))/i                                       // Nvidia Portable\n            ], [MODEL, [VENDOR, NVIDIA], [TYPE, CONSOLE]], [\n            /(playstation \\w+)/i                                                // Playstation\n            ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n            /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i                                // Microsoft Xbox\n            ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n\n            ///////////////////\n            // WEARABLES\n            ///////////////////\n\n            /\\b(sm-[lr]\\d\\d[0156][fnuw]?s?|gear live)\\b/i                       // Samsung Galaxy Watch\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [\n            /((pebble))app/i,                                                   // Pebble\n            /(asus|google|lg|oppo) ((pixel |zen)?watch[\\w ]*)( bui|\\))/i        // Asus ZenWatch / LG Watch / Pixel Watch\n            ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n            /(ow(?:19|20)?we?[1-3]{1,3})/i                                      // Oppo Watch\n            ], [MODEL, [VENDOR, OPPO], [TYPE, WEARABLE]], [\n            /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i                              // Apple Watch\n            ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n            /(opwwe\\d{3})/i                                                     // OnePlus Watch\n            ], [MODEL, [VENDOR, ONEPLUS], [TYPE, WEARABLE]], [\n            /(moto 360)/i                                                       // Motorola 360\n            ], [MODEL, [VENDOR, MOTOROLA], [TYPE, WEARABLE]], [\n            /(smartwatch 3)/i                                                   // Sony SmartWatch\n            ], [MODEL, [VENDOR, SONY], [TYPE, WEARABLE]], [\n            /(g watch r)/i                                                      // LG G Watch R\n            ], [MODEL, [VENDOR, LG], [TYPE, WEARABLE]], [\n            /droid.+; (wt63?0{2,3})\\)/i\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n\n            ///////////////////\n            // XR\n            ///////////////////\n\n            /droid.+; (glass) \\d/i                                              // Google Glass\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, XR]], [\n            /(pico) (4|neo3(?: link|pro)?)/i                                    // Pico\n            ], [VENDOR, MODEL, [TYPE, XR]], [\n            /(quest( \\d| pro)?s?).+vr/i                                         // Meta Quest\n            ], [MODEL, [VENDOR, FACEBOOK], [TYPE, XR]], [\n\n            ///////////////////\n            // EMBEDDED\n            ///////////////////\n\n            /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i                              // Tesla\n            ], [VENDOR, [TYPE, EMBEDDED]], [\n            /(aeobc)\\b/i                                                        // Echo Dot\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n            /(homepod).+mac os/i                                                // Apple HomePod\n            ], [MODEL, [VENDOR, APPLE], [TYPE, EMBEDDED]], [\n            /windows iot/i\n            ], [[TYPE, EMBEDDED]], [\n\n            ////////////////////\n            // MIXED (GENERIC)\n            ///////////////////\n\n            /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew).+?(mobile|vr|\\d) safari/i\n            ], [MODEL, [TYPE, strMapper, { 'mobile' : 'Mobile', 'xr' : 'VR', '*' : TABLET }]], [\n            /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i                      // Unidentifiable Tablet\n            ], [[TYPE, TABLET]], [\n            /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i    // Unidentifiable Mobile\n            ], [[TYPE, MOBILE]], [\n            /droid .+?; ([\\w\\. -]+)( bui|\\))/i                                  // Generic Android Device\n            ], [MODEL, [VENDOR, 'Generic']]\n        ],\n\n        engine : [[\n\n            /windows.+ edge\\/([\\w\\.]+)/i                                       // EdgeHTML\n            ], [VERSION, [NAME, EDGE+'HTML']], [\n\n            /(arkweb)\\/([\\w\\.]+)/i                                              // ArkWeb\n            ], [NAME, VERSION], [\n\n            /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i                         // Blink\n            ], [VERSION, [NAME, 'Blink']], [\n\n            /(presto)\\/([\\w\\.]+)/i,                                             // Presto\n            /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo\n            /ekioh(flow)\\/([\\w\\.]+)/i,                                          // Flow\n            /(khtml|tasman|links)[\\/ ]\\(?([\\w\\.]+)/i,                           // KHTML/Tasman/Links\n            /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i,                                      // iCab\n\n            /\\b(libweb)/i                                                       // LibWeb\n            ], [NAME, VERSION], [\n            /ladybird\\//i\n            ], [[NAME, 'LibWeb']], [\n\n            /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i                                     // Gecko\n            ], [VERSION, NAME]\n        ],\n\n        os : [[\n\n            // Windows\n            /microsoft (windows) (vista|xp)/i                                   // Windows (iTunes)\n            ], [NAME, VERSION], [\n            /(windows (?:phone(?: os)?|mobile|iot))[\\/ ]?([\\d\\.\\w ]*)/i         // Windows Phone\n            ], [NAME, [VERSION, strMapper, windowsVersionMap]], [\n            /windows nt 6\\.2; (arm)/i,                                          // Windows RT\n            /windows[\\/ ]([ntce\\d\\. ]+\\w)(?!.+xbox)/i,\n            /(?:win(?=3|9|n)|win 9x )([nt\\d\\.]+)/i\n            ], [[VERSION, strMapper, windowsVersionMap], [NAME, WINDOWS]], [\n\n            // iOS/macOS\n            /[adehimnop]{4,7}\\b(?:.*os ([\\w]+) like mac|; opera)/i,             // iOS\n            /(?:ios;fbsv\\/|iphone.+ios[\\/ ])([\\d\\.]+)/i,\n            /cfnetwork\\/.+darwin/i\n            ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n            /(mac os x) ?([\\w\\. ]*)/i,\n            /(macintosh|mac_powerpc\\b)(?!.+haiku)/i                             // Mac OS\n            ], [[NAME, 'macOS'], [VERSION, /_/g, '.']], [\n\n            // Google Chromecast\n            /android ([\\d\\.]+).*crkey/i                                         // Google Chromecast, Android-based\n            ], [VERSION, [NAME, CHROMECAST + ' Android']], [\n            /fuchsia.*crkey\\/([\\d\\.]+)/i                                        // Google Chromecast, Fuchsia-based\n            ], [VERSION, [NAME, CHROMECAST + ' Fuchsia']], [\n            /crkey\\/([\\d\\.]+).*devicetype\\/smartspeaker/i                       // Google Chromecast, Linux-based Smart Speaker\n            ], [VERSION, [NAME, CHROMECAST + ' SmartSpeaker']], [\n            /linux.*crkey\\/([\\d\\.]+)/i                                          // Google Chromecast, Legacy Linux-based\n            ], [VERSION, [NAME, CHROMECAST + ' Linux']], [\n            /crkey\\/([\\d\\.]+)/i                                                 // Google Chromecast, unknown\n            ], [VERSION, [NAME, CHROMECAST]], [\n\n            // Mobile OSes\n            /droid ([\\w\\.]+)\\b.+(android[- ]x86|harmonyos)/i                    // Android-x86/HarmonyOS\n            ], [VERSION, NAME], [                                               \n            /(ubuntu) ([\\w\\.]+) like android/i                                  // Ubuntu Touch\n            ], [[NAME, /(.+)/, '$1 Touch'], VERSION], [\n                                                                                // Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen\n            /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen|webos)\\w*[-\\/\\.; ]?([\\d\\.]*)/i\n            ], [NAME, VERSION], [\n            /\\(bb(10);/i                                                        // BlackBerry 10\n            ], [VERSION, [NAME, BLACKBERRY]], [\n            /(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\\/ ]?([\\w\\.]*)/i       // Symbian\n            ], [VERSION, [NAME, 'Symbian']], [\n            /mozilla\\/[\\d\\.]+ \\((?:mobile|tablet|tv|mobile; [\\w ]+); rv:.+ gecko\\/([\\w\\.]+)/i // Firefox OS\n            ], [VERSION, [NAME, FIREFOX+' OS']], [\n            /web0s;.+rt(tv)/i,\n            /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i                              // WebOS\n            ], [VERSION, [NAME, 'webOS']], [\n            /watch(?: ?os[,\\/]|\\d,\\d\\/)([\\d\\.]+)/i                              // watchOS\n            ], [VERSION, [NAME, 'watchOS']], [\n\n            // Google ChromeOS\n            /(cros) [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i                                  // Chromium OS\n            ], [[NAME, \"Chrome OS\"], VERSION],[\n\n            // Smart TVs\n            /panasonic;(viera)/i,                                               // Panasonic Viera\n            /(netrange)mmh/i,                                                   // Netrange\n            /(nettv)\\/(\\d+\\.[\\w\\.]+)/i,                                         // NetTV\n\n            // Console\n            /(nintendo|playstation) (\\w+)/i,                                    // Nintendo/Playstation\n            /(xbox); +xbox ([^\\);]+)/i,                                         // Microsoft Xbox (360, One, X, S, Series X, Series S)\n            /(pico) .+os([\\w\\.]+)/i,                                            // Pico\n\n            // Other\n            /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i,                            // Joli/Palm\n            /(mint)[\\/\\(\\) ]?(\\w*)/i,                                           // Mint\n            /(mageia|vectorlinux)[; ]/i,                                        // Mageia/VectorLinux\n            /([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,\n                                                                                // Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire\n            /(hurd|linux)(?: arm\\w*| x86\\w*| ?)([\\w\\.]*)/i,                     // Hurd/Linux\n            /(gnu) ?([\\w\\.]*)/i,                                                // GNU\n            /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n            /(haiku) (\\w+)/i                                                    // Haiku\n            ], [NAME, VERSION], [\n            /(sunos) ?([\\w\\.\\d]*)/i                                             // Solaris\n            ], [[NAME, 'Solaris'], VERSION], [\n            /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i,                              // Solaris\n            /(aix) ((\\d)(?=\\.|\\)| )[\\w\\.])*/i,                                  // AIX\n            /\\b(beos|os\\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i, // BeOS/OS2/AmigaOS/MorphOS/OpenVMS/Fuchsia/HP-UX/SerenityOS\n            /(unix) ?([\\w\\.]*)/i                                                // UNIX\n            ], [NAME, VERSION]\n        ]\n    };\n\n    /////////////////\n    // Factories\n    ////////////////\n\n    var defaultProps = (function () {\n            var props = { init : {}, isIgnore : {}, isIgnoreRgx : {}, toString : {}};\n            setProps.call(props.init, [\n                [UA_BROWSER, [NAME, VERSION, MAJOR, TYPE]],\n                [UA_CPU, [ARCHITECTURE]],\n                [UA_DEVICE, [TYPE, MODEL, VENDOR]],\n                [UA_ENGINE, [NAME, VERSION]],\n                [UA_OS, [NAME, VERSION]]\n            ]);\n            setProps.call(props.isIgnore, [\n                [UA_BROWSER, [VERSION, MAJOR]],\n                [UA_ENGINE, [VERSION]],\n                [UA_OS, [VERSION]]\n            ]);\n            setProps.call(props.isIgnoreRgx, [\n                [UA_BROWSER, / ?browser$/i],\n                [UA_OS, / ?os$/i]\n            ]);\n            setProps.call(props.toString, [\n                [UA_BROWSER, [NAME, VERSION]],\n                [UA_CPU, [ARCHITECTURE]],\n                [UA_DEVICE, [VENDOR, MODEL]],\n                [UA_ENGINE, [NAME, VERSION]],\n                [UA_OS, [NAME, VERSION]]\n            ]);\n            return props;\n    })();\n\n    var createIData = function (item, itemType) {\n\n        var init_props = defaultProps.init[itemType],\n            is_ignoreProps = defaultProps.isIgnore[itemType] || 0,\n            is_ignoreRgx = defaultProps.isIgnoreRgx[itemType] || 0,\n            toString_props = defaultProps.toString[itemType] || 0;\n\n        function IData () {\n            setProps.call(this, init_props);\n        }\n\n        IData.prototype.getItem = function () {\n            return item;\n        };\n\n        IData.prototype.withClientHints = function () {\n\n            // nodejs / non-client-hints browsers\n            if (!NAVIGATOR_UADATA) {\n                return item\n                        .parseCH()\n                        .get();\n            }\n\n            // browsers based on chromium 85+\n            return NAVIGATOR_UADATA\n                    .getHighEntropyValues(CH_ALL_VALUES)\n                    .then(function (res) {\n                        return item\n                                .setCH(new UACHData(res, false))\n                                .parseCH()\n                                .get();\n            });\n        };\n\n        IData.prototype.withFeatureCheck = function () {\n            return item.detectFeature().get();\n        };\n\n        if (itemType != UA_RESULT) {\n            IData.prototype.is = function (strToCheck) {\n                var is = false;\n                for (var i in this) {\n                    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)) {\n                        is = true;\n                        if (strToCheck != UNDEF_TYPE) break;\n                    } else if (strToCheck == UNDEF_TYPE && is) {\n                        is = !is;\n                        break;\n                    }\n                }\n                return is;\n            };\n            IData.prototype.toString = function () {\n                var str = EMPTY;\n                for (var i in toString_props) {\n                    if (typeof(this[toString_props[i]]) !== UNDEF_TYPE) {\n                        str += (str ? ' ' : EMPTY) + this[toString_props[i]];\n                    }\n                }\n                return str || UNDEF_TYPE;\n            };\n        }\n\n        if (!NAVIGATOR_UADATA) {\n            IData.prototype.then = function (cb) { \n                var that = this;\n                var IDataResolve = function () {\n                    for (var prop in that) {\n                        if (that.hasOwnProperty(prop)) {\n                            this[prop] = that[prop];\n                        }\n                    }\n                };\n                IDataResolve.prototype = {\n                    is : IData.prototype.is,\n                    toString : IData.prototype.toString\n                };\n                var resolveData = new IDataResolve();\n                cb(resolveData);\n                return resolveData;\n            };\n        }\n\n        return new IData();\n    };\n\n    /////////////////\n    // Constructor\n    ////////////////\n\n    function UACHData (uach, isHttpUACH) {\n        uach = uach || {};\n        setProps.call(this, CH_ALL_VALUES);\n        if (isHttpUACH) {\n            setProps.call(this, [\n                [BRANDS, itemListToArray(uach[CH_HEADER])],\n                [FULLVERLIST, itemListToArray(uach[CH_HEADER_FULL_VER_LIST])],\n                [MOBILE, /\\?1/.test(uach[CH_HEADER_MOBILE])],\n                [MODEL, stripQuotes(uach[CH_HEADER_MODEL])],\n                [PLATFORM, stripQuotes(uach[CH_HEADER_PLATFORM])],\n                [PLATFORMVER, stripQuotes(uach[CH_HEADER_PLATFORM_VER])],\n                [ARCHITECTURE, stripQuotes(uach[CH_HEADER_ARCH])],\n                [FORMFACTORS, itemListToArray(uach[CH_HEADER_FORM_FACTORS])],\n                [BITNESS, stripQuotes(uach[CH_HEADER_BITNESS])]\n            ]);\n        } else {\n            for (var prop in uach) {\n                if(this.hasOwnProperty(prop) && typeof uach[prop] !== UNDEF_TYPE) this[prop] = uach[prop];\n            }\n        }\n    }\n\n    function UAItem (itemType, ua, rgxMap, uaCH) {\n\n        this.get = function (prop) {\n            if (!prop) return this.data;\n            return this.data.hasOwnProperty(prop) ? this.data[prop] : undefined;\n        };\n\n        this.set = function (prop, val) {\n            this.data[prop] = val;\n            return this;\n        };\n\n        this.setCH = function (ch) {\n            this.uaCH = ch;\n            return this;\n        };\n\n        this.detectFeature = function () {\n            if (NAVIGATOR && NAVIGATOR.userAgent == this.ua) {\n                switch (this.itemType) {\n                    case UA_BROWSER:\n                        // Brave-specific detection\n                        if (NAVIGATOR.brave && typeof NAVIGATOR.brave.isBrave == FUNC_TYPE) {\n                            this.set(NAME, 'Brave');\n                        }\n                        break;\n                    case UA_DEVICE:\n                        // Chrome-specific detection: check for 'mobile' value of navigator.userAgentData\n                        if (!this.get(TYPE) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[MOBILE]) {\n                            this.set(TYPE, MOBILE);\n                        }\n                        // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n                        if (this.get(MODEL) == 'Macintosh' && NAVIGATOR && typeof NAVIGATOR.standalone !== UNDEF_TYPE && NAVIGATOR.maxTouchPoints && NAVIGATOR.maxTouchPoints > 2) {\n                            this.set(MODEL, 'iPad')\n                                .set(TYPE, TABLET);\n                        }\n                        break;\n                    case UA_OS:\n                        // Chrome-specific detection: check for 'platform' value of navigator.userAgentData\n                        if (!this.get(NAME) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[PLATFORM]) {\n                            this.set(NAME, NAVIGATOR_UADATA[PLATFORM]);\n                        }\n                        break;\n                    case UA_RESULT:\n                        var data = this.data;\n                        var detect = function (itemType) {\n                            return data[itemType]\n                                    .getItem()\n                                    .detectFeature()\n                                    .get();\n                        };\n                        this.set(UA_BROWSER, detect(UA_BROWSER))\n                            .set(UA_CPU, detect(UA_CPU))\n                            .set(UA_DEVICE, detect(UA_DEVICE))\n                            .set(UA_ENGINE, detect(UA_ENGINE))\n                            .set(UA_OS, detect(UA_OS));\n                }\n            }\n            return this;\n        };\n\n        this.parseUA = function () {\n            if (this.itemType != UA_RESULT) {\n                rgxMapper.call(this.data, this.ua, this.rgxMap);\n            }\n            if (this.itemType == UA_BROWSER) {\n                this.set(MAJOR, majorize(this.get(VERSION)));\n            }\n            return this;\n        };\n\n        this.parseCH = function () {\n            var uaCH = this.uaCH,\n                rgxMap = this.rgxMap;\n    \n            switch (this.itemType) {\n                case UA_BROWSER:\n                case UA_ENGINE:\n                    var brands = uaCH[FULLVERLIST] || uaCH[BRANDS], prevName;\n                    if (brands) {\n                        for (var i in brands) {\n                            var brandName = brands[i].brand || brands[i],\n                                brandVersion = brands[i].version;\n                            if (this.itemType == UA_BROWSER && !/not.a.brand/i.test(brandName) && (!prevName || (/chrom/i.test(prevName) && brandName != CHROMIUM))) {\n                                brandName = strMapper(brandName, {\n                                    'Chrome' : 'Google Chrome',\n                                    'Edge' : 'Microsoft Edge',\n                                    'Chrome WebView' : 'Android WebView',\n                                    'Chrome Headless' : 'HeadlessChrome',\n                                    'Huawei Browser' : 'HuaweiBrowser',\n                                    'MIUI Browser' : 'Miui Browser',\n                                    'Opera Mobi' : 'OperaMobile',\n                                    'Yandex' : 'YaBrowser'\n                                });\n                                this.set(NAME, brandName)\n                                    .set(VERSION, brandVersion)\n                                    .set(MAJOR, majorize(brandVersion));\n                                prevName = brandName;\n                            }\n                            if (this.itemType == UA_ENGINE && brandName == CHROMIUM) {\n                                this.set(VERSION, brandVersion);\n                            }\n                        }\n                    }\n                    break;\n                case UA_CPU:\n                    var archName = uaCH[ARCHITECTURE];\n                    if (archName) {\n                        if (archName && uaCH[BITNESS] == '64') archName += '64';\n                        rgxMapper.call(this.data, archName + ';', rgxMap);\n                    }\n                    break;\n                case UA_DEVICE:\n                    if (uaCH[MOBILE]) {\n                        this.set(TYPE, MOBILE);\n                    }\n                    if (uaCH[MODEL]) {\n                        this.set(MODEL, uaCH[MODEL]);\n                        if (!this.get(TYPE) || !this.get(VENDOR)) {\n                            var reParse = {};\n                            rgxMapper.call(reParse, 'droid 9; ' + uaCH[MODEL] + ')', rgxMap);\n                            if (!this.get(TYPE) && !!reParse.type) {\n                                this.set(TYPE, reParse.type);\n                            }\n                            if (!this.get(VENDOR) && !!reParse.vendor) {\n                                this.set(VENDOR, reParse.vendor);\n                            }\n                        }\n                    }\n                    if (uaCH[FORMFACTORS]) {\n                        var ff;\n                        if (typeof uaCH[FORMFACTORS] !== 'string') {\n                            var idx = 0;\n                            while (!ff && idx < uaCH[FORMFACTORS].length) {\n                                ff = strMapper(uaCH[FORMFACTORS][idx++], formFactorsMap);\n                            }\n                        } else {\n                            ff = strMapper(uaCH[FORMFACTORS], formFactorsMap);\n                        }\n                        this.set(TYPE, ff);\n                    }\n                    break;\n                case UA_OS:\n                    var osName = uaCH[PLATFORM];\n                    if(osName) {\n                        var osVersion = uaCH[PLATFORMVER];\n                        if (osName == WINDOWS) osVersion = (parseInt(majorize(osVersion), 10) >= 13 ? '11' : '10');\n                        this.set(NAME, osName)\n                            .set(VERSION, osVersion);\n                    }\n                    // Xbox-Specific Detection\n                    if (this.get(NAME) == WINDOWS && uaCH[MODEL] == 'Xbox') {\n                        this.set(NAME, 'Xbox')\n                            .set(VERSION, undefined);\n                    }           \n                    break;\n                case UA_RESULT:\n                    var data = this.data;\n                    var parse = function (itemType) {\n                        return data[itemType]\n                                .getItem()\n                                .setCH(uaCH)\n                                .parseCH()\n                                .get();\n                    };\n                    this.set(UA_BROWSER, parse(UA_BROWSER))\n                        .set(UA_CPU, parse(UA_CPU))\n                        .set(UA_DEVICE, parse(UA_DEVICE))\n                        .set(UA_ENGINE, parse(UA_ENGINE))\n                        .set(UA_OS, parse(UA_OS));\n            }\n            return this;\n        };\n\n        setProps.call(this, [\n            ['itemType', itemType],\n            ['ua', ua],\n            ['uaCH', uaCH],\n            ['rgxMap', rgxMap],\n            ['data', createIData(this, itemType)]\n        ]);\n\n        return this;\n    }\n\n    function UAParser (ua, extensions, headers) {\n\n        if (typeof ua === OBJ_TYPE) {\n            if (isExtensions(ua, true)) {\n                if (typeof extensions === OBJ_TYPE) {\n                    headers = extensions;               // case UAParser(extensions, headers)           \n                }\n                extensions = ua;                        // case UAParser(extensions)\n            } else {\n                headers = ua;                           // case UAParser(headers)\n                extensions = undefined;\n            }\n            ua = undefined;\n        } else if (typeof ua === STR_TYPE && !isExtensions(extensions, true)) {\n            headers = extensions;                       // case UAParser(ua, headers)\n            extensions = undefined;\n        }\n\n        // Convert Headers object into a plain object\n        if (headers && typeof headers.append === FUNC_TYPE) {\n            var kv = {};\n            headers.forEach(function (v, k) { kv[k] = v; });\n            headers = kv;\n        }\n        \n        if (!(this instanceof UAParser)) {\n            return new UAParser(ua, extensions, headers).getResult();\n        }\n\n        var userAgent = typeof ua === STR_TYPE ? ua :                                       // Passed user-agent string\n                                (headers && headers[USER_AGENT] ? headers[USER_AGENT] :     // User-Agent from passed headers\n                                ((NAVIGATOR && NAVIGATOR.userAgent) ? NAVIGATOR.userAgent : // navigator.userAgent\n                                    EMPTY)),                                                // empty string\n\n            httpUACH = new UACHData(headers, true),\n            regexMap = extensions ? \n                        extend(defaultRegexes, extensions) : \n                        defaultRegexes,\n\n            createItemFunc = function (itemType) {\n                if (itemType == UA_RESULT) {\n                    return function () {\n                        return new UAItem(itemType, userAgent, regexMap, httpUACH)\n                                    .set('ua', userAgent)\n                                    .set(UA_BROWSER, this.getBrowser())\n                                    .set(UA_CPU, this.getCPU())\n                                    .set(UA_DEVICE, this.getDevice())\n                                    .set(UA_ENGINE, this.getEngine())\n                                    .set(UA_OS, this.getOS())\n                                    .get();\n                    };\n                } else {\n                    return function () {\n                        return new UAItem(itemType, userAgent, regexMap[itemType], httpUACH)\n                                    .parseUA()\n                                    .get();\n                    };\n                }\n            };\n            \n        // public methods\n        setProps.call(this, [\n            ['getBrowser', createItemFunc(UA_BROWSER)],\n            ['getCPU', createItemFunc(UA_CPU)],\n            ['getDevice', createItemFunc(UA_DEVICE)],\n            ['getEngine', createItemFunc(UA_ENGINE)],\n            ['getOS', createItemFunc(UA_OS)],\n            ['getResult', createItemFunc(UA_RESULT)],\n            ['getUA', function () { return userAgent; }],\n            ['setUA', function (ua) {\n                if (isString(ua))\n                    userAgent = ua.length > UA_MAX_LENGTH ? trim(ua, UA_MAX_LENGTH) : ua;\n                return this;\n            }]\n        ])\n        .setUA(userAgent);\n\n        return this;\n    }\n\n    UAParser.VERSION = LIBVERSION;\n    UAParser.BROWSER =  enumerize([NAME, VERSION, MAJOR, TYPE]);\n    UAParser.CPU = enumerize([ARCHITECTURE]);\n    UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n    UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n    export {UAParser};","<!--\n  - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n  - SPDX-License-Identifier: AGPL-3.0-or-later\n-->\n\n<template>\n\t<NcSettingsSection :name=\"t('notifications', 'Notifications')\">\n\t\t<div class=\"notification-frequency__warning\">\n\t\t\t<strong v-if=\"!config.is_email_set\">{{ t('notifications', 'You need to set up your email address before you can receive notification emails.') }}</strong>\n\t\t</div>\n\t\t<p>\n\t\t\t<label for=\"notification_reminder_batchtime\" class=\"notification-frequency__label\">\n\t\t\t\t{{ t('notifications', 'Send email reminders about unhandled notifications after:') }}\n\t\t\t</label>\n\t\t\t<select id=\"notification_reminder_batchtime\"\n\t\t\t\tv-model=\"config.setting_batchtime\"\n\t\t\t\tname=\"notification_reminder_batchtime\"\n\t\t\t\tclass=\"notification-frequency__select\"\n\t\t\t\t@change=\"updateSettings()\">\n\t\t\t\t<option v-for=\"option in BATCHTIME_OPTIONS\" :key=\"option.value\" :value=\"option.value\">\n\t\t\t\t\t{{ option.text }}\n\t\t\t\t</option>\n\t\t\t</select>\n\t\t</p>\n\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"config.sound_notification\"\n\t\t\t@update:checked=\"updateSettings\">\n\t\t\t{{ t('notifications', 'Play sound when a new notification arrives') }}\n\t\t</NcCheckboxRadioSwitch>\n\t\t<NcCheckboxRadioSwitch :checked.sync=\"config.sound_talk\"\n\t\t\t@update:checked=\"updateSettings\">\n\t\t\t{{ t('notifications', 'Play sound when a call started (requires Nextcloud Talk)') }}\n\t\t</NcCheckboxRadioSwitch>\n\n\t\t<template v-if=\"config.sound_talk\">\n\t\t\t<NcCheckboxRadioSwitch class=\"additional-margin-top\"\n\t\t\t\t:checked.sync=\"storage.secondary_speaker\"\n\t\t\t\t:disabled=\"isSafari\"\n\t\t\t\t@update:checked=\"updateLocalSettings\">\n\t\t\t\t{{ t('notifications', 'Also repeat sound on a secondary speaker') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t\t<div v-if=\"isSafari\" class=\"notification-frequency__warning\">\n\t\t\t\t<strong>{{ t('notifications', 'Selection of the speaker device is currently not supported by Safari') }}</strong>\n\t\t\t</div>\n\t\t\t<NcSelect v-if=\"!isSafari && storage.secondary_speaker\"\n\t\t\t\tv-model=\"storage.secondary_speaker_device\"\n\t\t\t\tinput-id=\"device-selector-audio-output\"\n\t\t\t\t:options=\"devices\"\n\t\t\t\tlabel=\"label\"\n\t\t\t\t:aria-label-combobox=\"t('notifications', 'Select a device')\"\n\t\t\t\t:clearable=\"false\"\n\t\t\t\t:placeholder=\"t('notifications', 'Select a device')\"\n\t\t\t\t@open=\"initializeDevices\"\n\t\t\t\t@input=\"updateLocalSettings\" />\n\t\t</template>\n\t</NcSettingsSection>\n</template>\n\n<script>\nimport { UAParser } from 'ua-parser-js'\nimport { reactive, ref } from 'vue'\nimport axios from '@nextcloud/axios'\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport { showSuccess, showError } from '@nextcloud/dialogs'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport NcSelect from '@nextcloud/vue/dist/Components/NcSelect.js'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.js'\nimport BrowserStorage from '../services/BrowserStorage.js'\n\nconst EmailFrequency = {\n\tEMAIL_SEND_OFF: 0,\n\tEMAIL_SEND_HOURLY: 1,\n\tEMAIL_SEND_3HOURLY: 2,\n\tEMAIL_SEND_DAILY: 3,\n\tEMAIL_SEND_WEEKLY: 4,\n}\nconst BATCHTIME_OPTIONS = [\n\t{ text: t('notifications', 'Never'), value: EmailFrequency.EMAIL_SEND_OFF },\n\t{ text: t('notifications', '1 hour'), value: EmailFrequency.EMAIL_SEND_HOURLY },\n\t{ text: t('notifications', '3 hours'), value: EmailFrequency.EMAIL_SEND_3HOURLY },\n\t{ text: t('notifications', '1 day'), value: EmailFrequency.EMAIL_SEND_DAILY },\n\t{ text: t('notifications', '1 week'), value: EmailFrequency.EMAIL_SEND_WEEKLY },\n]\nconst EMPTY_DEVICE_OPTION = { id: null, label: t('notifications', 'None') }\nconst parser = new UAParser()\nconst browser = parser.getBrowser()\nconst isSafari = browser.name === 'Safari' || browser.name === 'Mobile Safari'\n\nexport default {\n\tname: 'UserSettings',\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t\tNcSelect,\n\t\tNcSettingsSection,\n\t},\n\n\tsetup() {\n\t\tconst config = reactive(loadState('notifications', 'config'))\n\t\tconst storage = reactive({\n\t\t\tsecondary_speaker: BrowserStorage.getItem('secondary_speaker') === 'true',\n\t\t\tsecondary_speaker_device: JSON.parse(BrowserStorage.getItem('secondary_speaker_device')) ?? EMPTY_DEVICE_OPTION,\n\t\t})\n\t\tconst devices = ref([])\n\n\t\treturn {\n\t\t\tBATCHTIME_OPTIONS,\n\t\t\tisSafari,\n\t\t\tconfig,\n\t\t\tstorage,\n\t\t\tdevices,\n\t\t}\n\t},\n\n\tmethods: {\n\t\tasync updateSettings() {\n\t\t\ttry {\n\t\t\t\tconst form = new FormData()\n\t\t\t\tform.append('batchSetting', this.config.setting_batchtime)\n\t\t\t\tform.append('soundNotification', this.config.sound_notification ? 'yes' : 'no')\n\t\t\t\tform.append('soundTalk', this.config.sound_talk ? 'yes' : 'no')\n\t\t\t\tawait axios.post(generateOcsUrl('apps/notifications/api/v2/settings'), form)\n\t\t\t\tshowSuccess(t('notifications', 'Your settings have been updated.'))\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('notifications', 'An error occurred while updating your settings.'))\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t},\n\n\t\tupdateLocalSettings() {\n\t\t\ttry {\n\t\t\t\tBrowserStorage.setItem('secondary_speaker', this.storage.secondary_speaker)\n\t\t\t\tif (this.storage.secondary_speaker && this.storage.secondary_speaker_device.id) {\n\t\t\t\t\tBrowserStorage.setItem('secondary_speaker_device', JSON.stringify(this.storage.secondary_speaker_device))\n\t\t\t\t} else {\n\t\t\t\t\tBrowserStorage.removeItem('secondary_speaker_device')\n\t\t\t\t}\n\t\t\t\tshowSuccess(t('notifications', 'Your settings have been updated.'))\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('notifications', 'An error occurred while updating your settings.'))\n\t\t\t\tconsole.error(error)\n\t\t\t}\n\t\t},\n\n\t\tasync initializeDevices() {\n\t\t\tconst isAudioSupported = !isSafari && navigator?.mediaDevices?.getUserMedia && navigator?.mediaDevices?.enumerateDevices\n\t\t\tif (!isAudioSupported || this.devices.length > 0) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tlet stream = null\n\t\t\ttry {\n\t\t\t\t// Request permissions to get audio devices\n\t\t\t\tstream = await navigator.mediaDevices.getUserMedia({ audio: true })\n\t\t\t\t// Enumerate devices and populate NcSelect options\n\t\t\t\tthis.devices = (await navigator.mediaDevices.enumerateDevices() ?? [])\n\t\t\t\t\t.filter(device => device.kind === 'audiooutput')\n\t\t\t\t\t.map(device => ({\n\t\t\t\t\t\tid: device.deviceId,\n\t\t\t\t\t\tlabel: device.label ? device.label : device.fallbackLabel,\n\t\t\t\t\t}))\n\t\t\t\t\t.concat([EMPTY_DEVICE_OPTION])\n\t\t\t} catch (error) {\n\t\t\t\tshowError(t('notifications', 'An error occurred while updating your settings.'))\n\t\t\t\tconsole.error('Error while requesting or initializing audio devices: ', error)\n\t\t\t} finally {\n\t\t\t\tif (stream) {\n\t\t\t\t\tstream.getTracks().forEach(track => track.stop())\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t},\n}\n\n</script>\n\n<style lang=\"scss\" scoped>\n.additional-margin-top {\n\tmargin-top: 12px;\n}\n</style>\n","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport Vue from 'vue'\nimport UserSettings from './views/UserSettings.vue'\n\n// Styles\nimport '@nextcloud/dialogs/style.css'\n\nVue.prototype.t = t\nVue.prototype.n = n\n\nexport default new Vue({\n\tel: '#notifications-user-settings',\n\trender: h => h(UserSettings),\n})\n"],"names":["LIBVERSION","UA_MAX_LENGTH","USER_AGENT","EMPTY","UNKNOWN","FUNC_TYPE","UNDEF_TYPE","OBJ_TYPE","STR_TYPE","UA_BROWSER","UA_CPU","UA_DEVICE","UA_ENGINE","UA_OS","UA_RESULT","NAME","TYPE","VENDOR","VERSION","ARCHITECTURE","MAJOR","MODEL","CONSOLE","MOBILE","TABLET","SMARTTV","WEARABLE","XR","EMBEDDED","INAPP","BRANDS","FORMFACTORS","FULLVERLIST","PLATFORM","PLATFORMVER","BITNESS","CH_HEADER","CH_HEADER_FULL_VER_LIST","CH_HEADER_ARCH","CH_HEADER_BITNESS","CH_HEADER_FORM_FACTORS","CH_HEADER_MOBILE","CH_HEADER_MODEL","CH_HEADER_PLATFORM","CH_HEADER_PLATFORM_VER","CH_ALL_VALUES","AMAZON","APPLE","ASUS","BLACKBERRY","GOOGLE","HUAWEI","LENOVO","HONOR","LG","MICROSOFT","MOTOROLA","NVIDIA","ONEPLUS","OPPO","SAMSUNG","SHARP","SONY","XIAOMI","ZEBRA","CHROME","CHROMIUM","CHROMECAST","EDGE","FIREFOX","OPERA","FACEBOOK","SOGOU","PREFIX_MOBILE","SUFFIX_BROWSER","WINDOWS","isWindow","NAVIGATOR","NAVIGATOR_UADATA","extend","defaultRgx","extensions","mergedRgx","extraRgx","isExtensions","i","j","k","enumerize","arr","enums","has","str1","str2","lowerize","isString","obj","deep","prop","val","itemListToArray","header","tokens","strip","token","trim","str","majorize","version","setProps","propName","pattern","stripQuotes","len","rgxMapper","ua","arrays","p","q","matches","match","regex","props","strMapper","map","windowsVersionMap","formFactorsMap","defaultRegexes","defaultProps","createIData","item","itemType","init_props","is_ignoreProps","is_ignoreRgx","toString_props","IData","res","UACHData","strToCheck","is","cb","that","IDataResolve","resolveData","uach","isHttpUACH","UAItem","rgxMap","uaCH","ch","data","detect","brands","prevName","brandName","brandVersion","archName","reParse","ff","idx","osName","osVersion","parse","UAParser","headers","kv","v","userAgent","httpUACH","regexMap","createItemFunc","EmailFrequency","BATCHTIME_OPTIONS","EMPTY_DEVICE_OPTION","parser","browser","isSafari","_sfc_main","NcCheckboxRadioSwitch","NcSelect","NcSettingsSection","config","reactive","loadState","storage","BrowserStorage","devices","ref","form","axios","generateOcsUrl","showSuccess","error","showError","stream","device","track","Vue","h","UserSettings"],"mappings":"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","x_google_ignoreList":[0]}