{"version":3,"file":"js/npm.device-detector-js.6bbdb6b7.js","mappings":"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","sources":["webpack://kkpam_www/./node_modules/device-detector-js/dist/index.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/parsers/bot/index.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/parsers/client/browser.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/parsers/client/feed-readers.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/parsers/client/index.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/parsers/client/libraries.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/parsers/client/media-players.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/parsers/client/mobile-apps.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/parsers/client/personal-information-managers.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/parsers/device/cameras.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/parsers/device/cars.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/parsers/device/consoles.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/parsers/device/index.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/parsers/device/mobiles.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/parsers/device/notebooks.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/parsers/device/portable-media-players.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/parsers/device/televisions.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/parsers/operating-system/index.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/parsers/vendor-fragment/index.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/utils/memory-cache.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/utils/model.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/utils/trim.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/utils/user-agent.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/utils/variable-replacement.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/utils/version-compare.js","webpack://kkpam_www/./node_modules/device-detector-js/dist/utils/version.js"],"sourcesContent":["\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nconst client_1 = __importDefault(require(\"./parsers/client\"));\nconst device_1 = __importDefault(require(\"./parsers/device\"));\nconst operating_system_1 = __importDefault(require(\"./parsers/operating-system\"));\nconst vendor_fragment_1 = __importDefault(require(\"./parsers/vendor-fragment\"));\nconst browser_1 = __importDefault(require(\"./parsers/client/browser\"));\nconst BotParser = require(\"./parsers/bot\");\nconst user_agent_1 = require(\"./utils/user-agent\");\nconst version_compare_1 = require(\"./utils/version-compare\");\nclass DeviceDetector {\n constructor(options) {\n // Default options\n this.options = {\n skipBotDetection: false,\n versionTruncation: 1\n };\n this.parse = (userAgent) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;\n const result = {\n client: this.clientParser.parse(userAgent),\n os: this.operatingSystemParser.parse(userAgent),\n device: this.deviceParser.parse(userAgent),\n bot: this.options.skipBotDetection ? null : this.botParser.parse(userAgent)\n };\n const osName = (_a = result.os) === null || _a === void 0 ? void 0 : _a.name;\n const osVersion = (_b = result.os) === null || _b === void 0 ? void 0 : _b.version;\n const osFamily = operating_system_1.default.getOsFamily(osName || \"\");\n if (!((_c = result.device) === null || _c === void 0 ? void 0 : _c.brand)) {\n const brand = this.vendorFragmentParser.parse(userAgent);\n if (brand) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.brand = brand;\n }\n }\n /**\n * Assume all devices running iOS / Mac OS are from Apple\n */\n if (!((_d = result.device) === null || _d === void 0 ? void 0 : _d.brand) && [\"Apple TV\", \"watchOS\", \"iOS\", \"Mac\"].includes(osName || \"\")) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.brand = \"Apple\";\n }\n /**\n * Chrome on Android passes the device type based on the keyword 'Mobile'\n * If it is present the device should be a smartphone, otherwise it's a tablet\n * See https://developer.chrome.com/multidevice/user-agent#chrome_for_android_user_agent\n * Note: We do not check for browser (family) here, as there might be mobile apps using Chrome, that won't have\n * a detected browser, but can still be detected. So we check the useragent for Chrome instead.\n */\n if (!((_e = result.device) === null || _e === void 0 ? void 0 : _e.type) && osFamily === \"Android\" && user_agent_1.userAgentParser(\"Chrome/[\\\\.0-9]*\", userAgent)) {\n if (user_agent_1.userAgentParser(\"Chrome/[.0-9]* (?:Mobile|eliboM)\", userAgent)) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"smartphone\";\n }\n else if (user_agent_1.userAgentParser(\"Chrome/[.0-9]* (?!Mobile)\", userAgent)) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"tablet\";\n }\n }\n /**\n * Some user agents simply contain the fragment 'Android; Tablet;' or 'Opera Tablet', so we assume those devices are tablets\n */\n if (!((_f = result.device) === null || _f === void 0 ? void 0 : _f.type) && this.hasAndroidTabletFragment(userAgent) || user_agent_1.userAgentParser(\"Opera Tablet\", userAgent)) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"tablet\";\n }\n /**\n * Some user agents simply contain the fragment 'Android; Mobile;', so we assume those devices are smartphones\n */\n if (!((_g = result.device) === null || _g === void 0 ? void 0 : _g.type) && this.hasAndroidMobileFragment(userAgent)) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"smartphone\";\n }\n /**\n * Android up to 3.0 was designed for smartphones only. But as 3.0, which was tablet only, was published\n * too late, there were a bunch of tablets running with 2.x\n * With 4.0 the two trees were merged and it is for smartphones and tablets\n *\n * So were are expecting that all devices running Android < 2 are smartphones\n * Devices running Android 3.X are tablets. Device type of Android 2.X and 4.X+ are unknown\n */\n if (!((_h = result.device) === null || _h === void 0 ? void 0 : _h.type) && osName === \"Android\" && osVersion !== \"\") {\n if (version_compare_1.versionCompare(osVersion, \"2.0\") === -1) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"smartphone\";\n }\n else if (version_compare_1.versionCompare(osVersion, \"3.0\") >= 0 && version_compare_1.versionCompare(osVersion, \"4.0\") === -1) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"tablet\";\n }\n }\n /**\n * All detected feature phones running android are more likely smartphones\n */\n if (((_j = result.device) === null || _j === void 0 ? void 0 : _j.type) === \"feature phone\" && osFamily === \"Android\") {\n result.device.type = \"smartphone\";\n }\n /**\n * According to http://msdn.microsoft.com/en-us/library/ie/hh920767(v=vs.85).aspx\n * Internet Explorer 10 introduces the \"Touch\" UA string token. If this token is present at the end of the\n * UA string, the computer has touch capability, and is running Windows 8 (or later).\n * This UA string will be transmitted on a touch-enabled system running Windows 8 (RT)\n *\n * As most touch enabled devices are tablets and only a smaller part are desktops/notebooks we assume that\n * all Windows 8 touch devices are tablets.\n */\n if (!((_k = result.device) === null || _k === void 0 ? void 0 : _k.type)\n && this.isToucheEnabled(userAgent)\n && (osName === \"Windows RT\"\n || (osName === \"Windows\"\n && version_compare_1.versionCompare(osVersion, \"8.0\") >= 0))) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"tablet\";\n }\n /**\n * All devices running Opera TV Store are assumed to be televisions\n */\n if (user_agent_1.userAgentParser(\"Opera TV Store\", userAgent)) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"television\";\n }\n /**\n * All devices running Tizen TV or SmartTV are assumed to be televisions\n */\n if (user_agent_1.userAgentParser(\"SmartTV|Tizen.+ TV .+$\", userAgent)) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"television\";\n }\n /**\n * Devices running Kylo or Espital TV Browsers are assumed to be televisions\n */\n if (!((_l = result.device) === null || _l === void 0 ? void 0 : _l.type) && [\"Kylo\", \"Espial TV Browser\"].includes(((_m = result.client) === null || _m === void 0 ? void 0 : _m.name) || \"\")) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"television\";\n }\n /**\n * Set device type to desktop if string ua contains desktop\n */\n const hasDesktop = \"desktop\" !== ((_o = result.device) === null || _o === void 0 ? void 0 : _o.type)\n && null !== user_agent_1.userAgentParser(\"Desktop\", userAgent)\n && this.hasDesktopFragment(userAgent);\n if (hasDesktop) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"desktop\";\n }\n // set device type to desktop for all devices running a desktop os that were not detected as an other device type\n if (!((_p = result.device) === null || _p === void 0 ? void 0 : _p.type) && this.isDesktop(result, osFamily)) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"desktop\";\n }\n return result;\n };\n this.hasAndroidMobileFragment = (userAgent) => {\n return user_agent_1.userAgentParser(\"Android( [\\.0-9]+)?; Mobile;\", userAgent);\n };\n this.hasAndroidTabletFragment = (userAgent) => {\n return user_agent_1.userAgentParser(\"Android( [\\.0-9]+)?; Tablet;\", userAgent);\n };\n this.hasDesktopFragment = (userAgent) => {\n return user_agent_1.userAgentParser(\"Desktop (x(?:32|64)|WOW64);\", userAgent);\n };\n this.isDesktop = (result, osFamily) => {\n if (!result.os) {\n return false;\n }\n // Check for browsers available for mobile devices only\n if (this.usesMobileBrowser(result.client)) {\n return false;\n }\n return operating_system_1.default.getDesktopOsArray().includes(osFamily);\n };\n this.usesMobileBrowser = (client) => {\n var _a, _b;\n if (!client)\n return false;\n return ((_a = client) === null || _a === void 0 ? void 0 : _a.type) === \"browser\" && browser_1.default.isMobileOnlyBrowser((_b = client) === null || _b === void 0 ? void 0 : _b.name);\n };\n this.isToucheEnabled = (userAgent) => {\n return user_agent_1.userAgentParser(\"Touch\", userAgent);\n };\n this.createDeviceObject = () => ({\n type: \"\",\n brand: \"\",\n model: \"\"\n });\n this.options = Object.assign(Object.assign({}, this.options), options);\n this.clientParser = new client_1.default(this.options);\n this.deviceParser = new device_1.default();\n this.operatingSystemParser = new operating_system_1.default(this.options);\n this.vendorFragmentParser = new vendor_fragment_1.default();\n this.botParser = new BotParser();\n }\n}\nmodule.exports = DeviceDetector;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nconst bots_json_1 = __importDefault(require(\"../../fixtures/regexes/bots.json\"));\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass BotParser {\n constructor() {\n this.parse = (userAgent) => {\n var _a, _b, _c, _d;\n for (const bot of bots_json_1.default) {\n const match = user_agent_1.userAgentParser(bot.regex, userAgent);\n if (!match)\n continue;\n return {\n name: bot.name,\n category: bot.category || \"\",\n url: bot.url || \"\",\n producer: {\n name: ((_b = (_a = bot) === null || _a === void 0 ? void 0 : _a.producer) === null || _b === void 0 ? void 0 : _b.name) || \"\",\n url: ((_d = (_c = bot) === null || _c === void 0 ? void 0 : _c.producer) === null || _d === void 0 ? void 0 : _d.url) || \"\"\n }\n };\n }\n return null;\n };\n }\n}\nmodule.exports = BotParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst version_1 = require(\"../../utils/version\");\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nconst browsers_json_1 = __importDefault(require(\"../../fixtures/regexes/client/browsers.json\"));\nconst browser_engine_json_1 = __importDefault(require(\"../../fixtures/regexes/client/browser_engine.json\"));\nconst available_browsers_json_1 = __importDefault(require(\"./fixtures/available-browsers.json\"));\nconst mobile_only_browsers_json_1 = __importDefault(require(\"./fixtures/mobile-only-browsers.json\"));\nclass BrowserParser {\n constructor(options) {\n this.options = {\n versionTruncation: 1\n };\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n name: \"\",\n version: \"\",\n engine: \"\",\n engineVersion: \"\"\n };\n for (const browser of browsers_json_1.default) {\n const match = user_agent_1.userAgentParser(browser.regex, userAgent);\n if (!match)\n continue;\n const vrpVersion = variable_replacement_1.variableReplacement(browser.version, match);\n const version = version_1.formatVersion(vrpVersion, this.options.versionTruncation);\n const shortVersion = version && parseFloat(version_1.formatVersion(vrpVersion, 1)) || \"\";\n if (browser.engine) {\n result.engine = browser.engine.default;\n if (browser.engine && browser.engine.versions && shortVersion) {\n const sortedEngineVersions = Object.entries(browser.engine.versions).sort((a, b) => {\n return parseFloat(a[0]) > parseFloat(b[0]) ? 1 : -1;\n });\n for (const [versionThreshold, engineByVersion] of sortedEngineVersions) {\n if (parseFloat(versionThreshold) <= shortVersion) {\n result.engine = engineByVersion || \"\";\n }\n }\n }\n }\n result.type = \"browser\";\n result.name = variable_replacement_1.variableReplacement(browser.name, match);\n result.version = version;\n break;\n }\n if (!result.engine) {\n for (const browserEngine of browser_engine_json_1.default) {\n let match = null;\n try {\n match = RegExp(browserEngine.regex, \"i\").exec(userAgent);\n }\n catch (_a) {\n // TODO: find out why it fails in some browsers\n }\n if (!match)\n continue;\n result.engine = browserEngine.name;\n break;\n }\n }\n result.engineVersion = version_1.formatVersion(version_1.parseBrowserEngineVersion(userAgent, result.engine), this.options.versionTruncation);\n return result;\n };\n this.options = Object.assign(Object.assign({}, this.options), options);\n }\n}\nexports.default = BrowserParser;\nBrowserParser.getBrowserShortName = (browserName) => {\n for (const [shortName, name] of Object.entries(available_browsers_json_1.default)) {\n if (name === browserName) {\n return shortName;\n }\n }\n return \"\";\n};\nBrowserParser.isMobileOnlyBrowser = (browserName) => {\n return mobile_only_browsers_json_1.default.includes(BrowserParser.getBrowserShortName(browserName));\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst feed_readers_json_1 = __importDefault(require(\"../../fixtures/regexes/client/feed_readers.json\"));\nconst version_1 = require(\"../../utils/version\");\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass FeedReaderParser {\n constructor(options) {\n this.options = {\n versionTruncation: 1\n };\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n name: \"\",\n version: \"\",\n url: \"\"\n };\n for (const feedReader of feed_readers_json_1.default) {\n const match = user_agent_1.userAgentParser(feedReader.regex, userAgent);\n if (!match)\n continue;\n result.type = \"feed reader\";\n result.name = variable_replacement_1.variableReplacement(feedReader.name, match);\n result.version = version_1.formatVersion(variable_replacement_1.variableReplacement(feedReader.version, match), this.options.versionTruncation);\n result.url = feedReader.url;\n break;\n }\n return result;\n };\n this.options = Object.assign(Object.assign({}, this.options), options);\n }\n}\nexports.default = FeedReaderParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst browser_1 = __importDefault(require(\"./browser\"));\nconst mobile_apps_1 = __importDefault(require(\"./mobile-apps\"));\nconst feed_readers_1 = __importDefault(require(\"./feed-readers\"));\nconst libraries_1 = __importDefault(require(\"./libraries\"));\nconst media_players_1 = __importDefault(require(\"./media-players\"));\nconst personal_information_managers_1 = __importDefault(require(\"./personal-information-managers\"));\nconst clientParsers = [\n feed_readers_1.default,\n mobile_apps_1.default,\n media_players_1.default,\n personal_information_managers_1.default,\n browser_1.default,\n libraries_1.default\n];\nclass ClientParser {\n constructor(options) {\n this.options = {\n versionTruncation: 1\n };\n this.parse = (userAgent) => {\n for (const Parser of clientParsers) {\n const parser = new Parser(this.options);\n const client = parser.parse(userAgent);\n if (client.type !== \"\")\n return client;\n }\n return null;\n };\n this.options = Object.assign(Object.assign({}, this.options), options);\n }\n}\nexports.default = ClientParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst libraries_json_1 = __importDefault(require(\"../../fixtures/regexes/client/libraries.json\"));\nconst version_1 = require(\"../../utils/version\");\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass LibraryParser {\n constructor(options) {\n this.options = {\n versionTruncation: 1\n };\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n name: \"\",\n version: \"\",\n url: \"\"\n };\n for (const library of libraries_json_1.default) {\n const match = user_agent_1.userAgentParser(library.regex, userAgent);\n if (!match)\n continue;\n result.type = \"library\";\n result.name = variable_replacement_1.variableReplacement(library.name, match);\n result.version = version_1.formatVersion(variable_replacement_1.variableReplacement(library.version, match), this.options.versionTruncation);\n result.url = library.url || \"\";\n break;\n }\n return result;\n };\n this.options = Object.assign(Object.assign({}, this.options), options);\n }\n}\nexports.default = LibraryParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst mediaplayers_json_1 = __importDefault(require(\"../../fixtures/regexes/client/mediaplayers.json\"));\nconst version_1 = require(\"../../utils/version\");\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass MediaPlayerParser {\n constructor(options) {\n this.options = {\n versionTruncation: 1\n };\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n name: \"\",\n version: \"\"\n };\n for (const mediaPlayer of mediaplayers_json_1.default) {\n const match = user_agent_1.userAgentParser(mediaPlayer.regex, userAgent);\n if (!match)\n continue;\n result.type = \"media player\";\n result.name = variable_replacement_1.variableReplacement(mediaPlayer.name, match);\n result.version = version_1.formatVersion(variable_replacement_1.variableReplacement(mediaPlayer.version, match), this.options.versionTruncation);\n break;\n }\n return result;\n };\n this.options = Object.assign(Object.assign({}, this.options), options);\n }\n}\nexports.default = MediaPlayerParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst mobile_apps_json_1 = __importDefault(require(\"../../fixtures/regexes/client/mobile_apps.json\"));\nconst version_1 = require(\"../../utils/version\");\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass MobileAppParser {\n constructor(options) {\n this.options = {\n versionTruncation: 1\n };\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n name: \"\",\n version: \"\"\n };\n for (const mobileApp of mobile_apps_json_1.default) {\n const match = user_agent_1.userAgentParser(mobileApp.regex, userAgent);\n if (!match)\n continue;\n result.type = \"mobile app\";\n result.name = variable_replacement_1.variableReplacement(mobileApp.name, match);\n result.version = version_1.formatVersion(variable_replacement_1.variableReplacement(mobileApp.version, match), this.options.versionTruncation);\n break;\n }\n return result;\n };\n this.options = Object.assign(Object.assign({}, this.options), options);\n }\n}\nexports.default = MobileAppParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst pim_json_1 = __importDefault(require(\"../../fixtures/regexes/client/pim.json\"));\nconst version_1 = require(\"../../utils/version\");\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass PersonalInformationManagerParser {\n constructor(options) {\n this.options = {\n versionTruncation: 1\n };\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n name: \"\",\n version: \"\"\n };\n for (const personalInformationManager of pim_json_1.default) {\n const match = user_agent_1.userAgentParser(personalInformationManager.regex, userAgent);\n if (!match)\n continue;\n result.type = \"personal information manager\";\n result.name = variable_replacement_1.variableReplacement(personalInformationManager.name, match);\n result.version = version_1.formatVersion(variable_replacement_1.variableReplacement(personalInformationManager.version, match), this.options.versionTruncation);\n break;\n }\n return result;\n };\n this.options = Object.assign(Object.assign({}, this.options), options);\n }\n}\nexports.default = PersonalInformationManagerParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst cameras_json_1 = __importDefault(require(\"../../fixtures/regexes/device/cameras.json\"));\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass CameraParser {\n constructor() {\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n brand: \"\",\n model: \"\"\n };\n for (const [brand, camera] of Object.entries(cameras_json_1.default)) {\n const match = user_agent_1.userAgentParser(camera.regex, userAgent);\n if (!match)\n continue;\n result.type = \"camera\";\n result.brand = brand;\n if (\"model\" in camera && camera.model) {\n result.model = variable_replacement_1.variableReplacement(camera.model, match).trim();\n }\n else if (\"models\" in camera && camera.models) {\n for (const model of camera.models) {\n const modelMatch = user_agent_1.userAgentParser(model.regex, userAgent);\n if (!modelMatch)\n continue;\n result.model = variable_replacement_1.variableReplacement(model.model, modelMatch).trim();\n break;\n }\n }\n break;\n }\n return result;\n };\n }\n}\nexports.default = CameraParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst car_browsers_json_1 = __importDefault(require(\"../../fixtures/regexes/device/car_browsers.json\"));\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass CarParser {\n constructor() {\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n brand: \"\",\n model: \"\"\n };\n for (const [brand, car] of Object.entries(car_browsers_json_1.default)) {\n const match = user_agent_1.userAgentParser(car.regex, userAgent);\n if (!match)\n continue;\n result.type = \"car\";\n result.brand = brand;\n for (const model of car.models) {\n const match = user_agent_1.userAgentParser(model.regex, userAgent);\n if (!match)\n continue;\n result.model = variable_replacement_1.variableReplacement(model.model, match).trim();\n }\n break;\n }\n return result;\n };\n }\n}\nexports.default = CarParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst consoles_json_1 = __importDefault(require(\"../../fixtures/regexes/device/consoles.json\"));\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass ConsoleParser {\n constructor() {\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n brand: \"\",\n model: \"\"\n };\n for (const [brand, gameConsole] of Object.entries(consoles_json_1.default)) {\n const match = user_agent_1.userAgentParser(gameConsole.regex, userAgent);\n if (!match)\n continue;\n result.type = gameConsole.device;\n result.brand = brand;\n if (\"model\" in gameConsole && gameConsole.model) {\n result.model = variable_replacement_1.variableReplacement(gameConsole.model, match).trim();\n }\n else if (\"models\" in gameConsole && gameConsole.models) {\n for (const model of gameConsole.models) {\n const modelMatch = user_agent_1.userAgentParser(model.regex, userAgent);\n if (!modelMatch)\n continue;\n result.model = variable_replacement_1.variableReplacement(model.model, modelMatch).trim();\n break;\n }\n }\n break;\n }\n return result;\n };\n }\n}\nexports.default = ConsoleParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst cameras_1 = __importDefault(require(\"./cameras\"));\nconst mobiles_1 = __importDefault(require(\"./mobiles\"));\nconst televisions_1 = __importDefault(require(\"./televisions\"));\nconst cars_1 = __importDefault(require(\"./cars\"));\nconst consoles_1 = __importDefault(require(\"./consoles\"));\nconst notebooks_1 = __importDefault(require(\"./notebooks\"));\nconst portable_media_players_1 = __importDefault(require(\"./portable-media-players\"));\nconst deviceParsers = [\n consoles_1.default,\n cars_1.default,\n cameras_1.default,\n televisions_1.default,\n portable_media_players_1.default,\n mobiles_1.default,\n notebooks_1.default\n];\nclass ClientParser {\n constructor() {\n this.parse = (userAgent) => {\n for (const Parser of deviceParsers) {\n const parser = new Parser();\n const device = parser.parse(userAgent);\n if (device.type !== \"\") {\n return device;\n }\n }\n return null;\n };\n }\n}\nexports.default = ClientParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst mobiles_json_1 = __importDefault(require(\"../../fixtures/regexes/device/mobiles.json\"));\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nconst model_1 = require(\"../../utils/model\");\nclass MobileParser {\n constructor() {\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n brand: \"\",\n model: \"\"\n };\n let resultType = \"\";\n for (const [brand, mobile] of Object.entries(mobiles_json_1.default)) {\n const match = user_agent_1.userAgentParser(mobile.regex, userAgent);\n if (!match)\n continue;\n resultType = \"device\" in mobile && mobile.device || \"\";\n result.brand = brand;\n if (\"model\" in mobile && mobile.model) {\n result.model = model_1.buildModel(variable_replacement_1.variableReplacement(mobile.model, match)).trim();\n }\n else if (\"models\" in mobile && mobile.models) {\n for (const model of mobile.models) {\n const modelMatch = user_agent_1.userAgentParser(model.regex, userAgent);\n if (!modelMatch)\n continue;\n result.model = model_1.buildModel(variable_replacement_1.variableReplacement(model.model, modelMatch)).trim();\n if (\"device\" in model && model.device) {\n resultType = model.device;\n }\n if (\"brand\" in model) {\n result.brand = model.brand || \"\";\n }\n break;\n }\n }\n break;\n }\n // Sanitize device type\n if (resultType === \"tv\") {\n result.type = \"television\";\n }\n else if (resultType === \"car browser\") {\n result.type = \"car\";\n }\n else {\n result.type = resultType;\n }\n // Sanitize device brand\n if (result.brand === \"Unknown\") {\n result.brand = \"\";\n }\n return result;\n };\n }\n}\nexports.default = MobileParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst notebooks_json_1 = __importDefault(require(\"../../fixtures/regexes/device/notebooks.json\"));\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nconst model_1 = require(\"../../utils/model\");\nclass NotebooksParser {\n constructor() {\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n brand: \"\",\n model: \"\"\n };\n if (!user_agent_1.userAgentParser(\"FBMD/\", userAgent)) {\n return result;\n }\n for (const [brand, notebook] of Object.entries(notebooks_json_1.default)) {\n const match = user_agent_1.userAgentParser(notebook.regex, userAgent);\n if (!match)\n continue;\n result.type = \"desktop\";\n result.brand = brand;\n if (\"model\" in notebook && notebook.model) {\n result.model = model_1.buildModel(variable_replacement_1.variableReplacement(notebook.model, match)).trim();\n }\n else if (\"models\" in notebook && notebook.models) {\n for (const model of notebook.models) {\n const match = user_agent_1.userAgentParser(model.regex, userAgent);\n if (!match)\n continue;\n result.model = variable_replacement_1.variableReplacement(model.model, match).trim();\n }\n }\n break;\n }\n return result;\n };\n }\n}\nexports.default = NotebooksParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst portable_media_player_json_1 = __importDefault(require(\"../../fixtures/regexes/device/portable_media_player.json\"));\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass PortableMediaPlayersParser {\n constructor() {\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n brand: \"\",\n model: \"\"\n };\n for (const [brand, portableMediaPlayer] of Object.entries(portable_media_player_json_1.default)) {\n const match = user_agent_1.userAgentParser(portableMediaPlayer.regex, userAgent);\n if (!match)\n continue;\n result.type = portableMediaPlayer.device;\n result.brand = brand;\n if (\"model\" in portableMediaPlayer && portableMediaPlayer.model) {\n result.model = variable_replacement_1.variableReplacement(portableMediaPlayer.model, match).trim();\n }\n else if (\"models\" in portableMediaPlayer && portableMediaPlayer.models) {\n for (const model of portableMediaPlayer.models) {\n const modelMatch = user_agent_1.userAgentParser(model.regex, userAgent);\n if (!modelMatch)\n continue;\n result.model = variable_replacement_1.variableReplacement(model.model, modelMatch).trim();\n break;\n }\n }\n break;\n }\n return result;\n };\n }\n}\nexports.default = PortableMediaPlayersParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst televisions_json_1 = __importDefault(require(\"../../fixtures/regexes/device/televisions.json\"));\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nconst model_1 = require(\"../../utils/model\");\nclass TelevisionParser {\n constructor() {\n this.parse = (userAgent) => {\n const result = {\n type: \"\",\n brand: \"\",\n model: \"\"\n };\n if (!this.isHbbTv(userAgent))\n return result;\n result.type = \"television\";\n for (const [brand, television] of Object.entries(televisions_json_1.default)) {\n const match = user_agent_1.userAgentParser(television.regex, userAgent);\n if (!match)\n continue;\n result.brand = brand;\n if (\"model\" in television && television.model) {\n result.model = model_1.buildModel(variable_replacement_1.variableReplacement(television.model, match)).trim();\n }\n else if (\"models\" in television && television.models) {\n for (const model of television.models) {\n const modelMatch = user_agent_1.userAgentParser(model.regex, userAgent);\n if (!modelMatch)\n continue;\n result.model = model_1.buildModel(variable_replacement_1.variableReplacement(model.model, modelMatch)).trim();\n break;\n }\n }\n break;\n }\n return result;\n };\n this.isHbbTv = (userAgent) => {\n return user_agent_1.userAgentParser(\"HbbTV\\/([1-9]{1}(?:\\.[0-9]{1}){1,2})\", userAgent);\n };\n }\n}\nexports.default = TelevisionParser;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst oss_json_1 = __importDefault(require(\"../../fixtures/regexes/oss.json\"));\nconst version_1 = require(\"../../utils/version\");\nconst variable_replacement_1 = require(\"../../utils/variable-replacement\");\nconst user_agent_1 = require(\"../../utils/user-agent\");\nconst operating_system_json_1 = __importDefault(require(\"./fixtures/operating-system.json\"));\nconst desktopOsArray = [\"AmigaOS\", \"IBM\", \"GNU/Linux\", \"Mac\", \"Unix\", \"Windows\", \"BeOS\", \"Chrome OS\"];\nconst shortOsNames = operating_system_json_1.default.operatingSystem;\nconst osFamilies = operating_system_json_1.default.osFamilies;\nclass OperatingSystemParser {\n constructor(options) {\n this.options = {\n versionTruncation: 1\n };\n this.parse = (userAgent) => {\n const result = {\n name: \"\",\n version: \"\",\n platform: this.parsePlatform(userAgent)\n };\n for (const operatingSystem of oss_json_1.default) {\n const match = user_agent_1.userAgentParser(operatingSystem.regex, userAgent);\n if (!match)\n continue;\n result.name = variable_replacement_1.variableReplacement(operatingSystem.name, match);\n result.version = version_1.formatVersion(variable_replacement_1.variableReplacement(operatingSystem.version, match), this.options.versionTruncation);\n if (result.name === \"lubuntu\") {\n result.name = \"Lubuntu\";\n }\n if (result.name === \"debian\") {\n result.name = \"Debian\";\n }\n if (result.name === \"YunOS\") {\n result.name = \"YunOs\";\n }\n return result;\n }\n return null;\n };\n this.parsePlatform = (userAgent) => {\n if (user_agent_1.userAgentParser(\"arm|aarch64|Watch ?OS|Watch1,[12]\", userAgent)) {\n return \"ARM\";\n }\n if (user_agent_1.userAgentParser(\"mips\", userAgent)) {\n return \"MIPS\";\n }\n if (user_agent_1.userAgentParser(\"sh4\", userAgent)) {\n return \"SuperH\";\n }\n if (user_agent_1.userAgentParser(\"WOW64|x64|win64|amd64|x86_?64\", userAgent)) {\n return \"x64\";\n }\n if (user_agent_1.userAgentParser(\"(?:i[0-9]|x)86|i86pc\", userAgent)) {\n return \"x86\";\n }\n return \"\";\n };\n this.options = Object.assign(Object.assign({}, this.options), options);\n }\n}\nexports.default = OperatingSystemParser;\nOperatingSystemParser.getDesktopOsArray = () => desktopOsArray;\nOperatingSystemParser.getOsFamily = (osName) => {\n const osShortName = OperatingSystemParser.getOsShortName(osName);\n for (const [osFamily, shortNames] of Object.entries(osFamilies)) {\n if (shortNames.includes(osShortName)) {\n return osFamily;\n }\n }\n return \"\";\n};\nOperatingSystemParser.getOsShortName = (osName) => {\n for (const [shortName, name] of Object.entries(shortOsNames)) {\n if (name === osName)\n return shortName;\n }\n return \"\";\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst vendorfragments_json_1 = __importDefault(require(\"../../fixtures/regexes/vendorfragments.json\"));\nconst user_agent_1 = require(\"../../utils/user-agent\");\nclass VendorFragmentParser {\n constructor() {\n this.parse = (userAgent) => {\n for (const [brand, vendorFragment] of Object.entries(vendorfragments_json_1.default)) {\n for (const regex of vendorFragment) {\n const match = user_agent_1.userAgentParser(regex, userAgent);\n if (!match)\n continue;\n return brand;\n }\n }\n return \"\";\n };\n }\n}\nexports.default = VendorFragmentParser;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.memoryCache = () => {\n const memoryCacheBucket = {};\n const set = (key, value) => {\n memoryCacheBucket[key] = value;\n };\n const get = (key) => {\n if (memoryCacheBucket.hasOwnProperty(key)) {\n return memoryCacheBucket[key];\n }\n };\n return {\n set,\n get\n };\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildModel = (model) => {\n model = model.replace(/_/g, \" \");\n model = model.replace(RegExp(\" TD$\", \"i\"), \"\");\n if (model === \"Build\")\n return \"\";\n return model;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.trim = (str, char) => {\n return str.replace(new RegExp(\"^[\" + char + \"]+|[\" + char + \"]+$\", \"g\"), \"\");\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst memory_cache_1 = require(\"./memory-cache\");\nconst cache = memory_cache_1.memoryCache();\nconst getRegexInstance = (rawRegex) => {\n const cachedRegexInstance = cache.get(rawRegex);\n if (cachedRegexInstance)\n return cachedRegexInstance.value;\n const regexInstance = RegExp(`(?:^|[^A-Z0-9\\-_]|[^A-Z0-9\\-]_|sprd-)(?:${rawRegex})`, \"i\");\n cache.set(rawRegex, {\n value: regexInstance\n });\n return regexInstance;\n};\nexports.userAgentParser = (rawRegex, userAgent) => {\n // TODO: find out why it fails in some browsers\n try {\n const regexInstance = getRegexInstance(rawRegex);\n const match = regexInstance.exec(userAgent);\n return match ? match.slice(1) : null;\n }\n catch (_a) {\n return null;\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.variableReplacement = (template, variables) => {\n const regex = new RegExp(`\\\\$\\\\d`, \"g\");\n if (template === null || template === undefined)\n return \"\";\n return template.replace(regex, (match) => {\n const index = parseInt(match.substr(1), 10);\n const variable = variables[index - 1];\n return variable || \"\";\n });\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.versionCompare = (v1, v2, operator) => {\n // discuss at: http://locutus.io/php/version_compare/\n // original by: Philippe Jausions (http://pear.php.net/user/jausions)\n // original by: Aidan Lister (http://aidanlister.com/)\n // reimplemented by: Kankrelune (http://www.webfaktory.info/)\n // improved by: Brett Zamir (http://brett-zamir.me)\n // improved by: Scott Baker\n // improved by: Theriault (https://github.com/Theriault)\n // example 1: version_compare('8.2.5rc', '8.2.5a')\n // returns 1: 1\n // example 2: version_compare('8.2.50', '8.2.52', '<')\n // returns 2: true\n // example 3: version_compare('5.3.0-dev', '5.3.0')\n // returns 3: -1\n // example 4: version_compare('4.1.0.52','4.01.0.51')\n // returns 4: 1\n // Important: compare must be initialized at 0.\n let i;\n let x;\n let compare = 0;\n // vm maps textual PHP versions to negatives so they're less than 0.\n // PHP currently defines these as CASE-SENSITIVE. It is important to\n // leave these as negatives so that they can come before numerical versions\n // and as if no letters were there to begin with.\n // (1alpha is < 1 and < 1.1 but > 1dev1)\n // If a non-numerical value can't be mapped to this table, it receives\n // -7 as its value.\n const vm = {\n \"dev\": -6,\n \"alpha\": -5,\n \"a\": -5,\n \"beta\": -4,\n \"b\": -4,\n \"RC\": -3,\n \"rc\": -3,\n \"#\": -2,\n \"p\": 1,\n \"pl\": 1\n };\n // This function will be called to prepare each version argument.\n // It replaces every _, -, and + with a dot.\n // It surrounds any nonsequence of numbers/dots with dots.\n // It replaces sequences of dots with a single dot.\n // version_compare('4..0', '4.0') === 0\n // Important: A string of 0 length needs to be converted into a value\n // even less than an unexisting value in vm (-7), hence [-8].\n // It's also important to not strip spaces because of this.\n // version_compare('', ' ') === 1\n const prepVersion = (v) => {\n v = (\"\" + v).replace(/[_\\-+]/g, \".\");\n v = v.replace(/([^.\\d]+)/g, \".$1.\").replace(/\\.{2,}/g, \".\");\n return (!v.length ? [-8] : v.split(\".\"));\n };\n // This converts a version component to a number.\n // Empty component becomes 0.\n // Non-numerical component becomes a negative number.\n // Numerical component becomes itself as an integer.\n const numVersion = (v) => {\n return !v ? 0 : (isNaN(v) ? vm[v] || -7 : parseInt(v, 10));\n };\n v1 = prepVersion(v1);\n v2 = prepVersion(v2);\n x = Math.max(v1.length, v2.length);\n for (i = 0; i < x; i++) {\n if (v1[i] === v2[i]) {\n continue;\n }\n v1[i] = numVersion(v1[i]);\n v2[i] = numVersion(v2[i]);\n if (v1[i] < v2[i]) {\n compare = -1;\n break;\n }\n else if (v1[i] > v2[i]) {\n compare = 1;\n break;\n }\n }\n if (!operator) {\n return compare;\n }\n // Important: operator is CASE-SENSITIVE.\n // \"No operator\" seems to be treated as \"<.\"\n // Any other values seem to make the function return null.\n switch (operator) {\n case \">\":\n case \"gt\":\n return (compare > 0);\n case \">=\":\n case \"ge\":\n return (compare >= 0);\n case \"<=\":\n case \"le\":\n return (compare <= 0);\n case \"===\":\n case \"=\":\n case \"eq\":\n return (compare === 0);\n case \"<>\":\n case \"!==\":\n case \"ne\":\n return (compare !== 0);\n case \"\":\n case \"<\":\n case \"lt\":\n return (compare < 0);\n default:\n return null;\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst trim_1 = require(\"./trim\");\nexports.formatVersion = (version, versionTruncation) => {\n if (version === undefined)\n return \"\";\n const versionString = trim_1.trim(version, \". \").replace(new RegExp(\"_\", \"g\"), \".\");\n const versionParts = versionString.split(\".\");\n // Return if the string is not only digits once we removed the dots\n if (!/^\\d+$/.test(versionParts.join(\"\"))) {\n return versionString;\n }\n if (versionTruncation !== 0) {\n if (Number.isInteger(parseFloat(versionString))) {\n return parseInt(versionString, 10).toFixed(1);\n }\n }\n if (versionParts.length > 1) {\n if (versionTruncation !== null) {\n return versionParts.slice(0, versionTruncation + 1).join(\".\");\n }\n }\n return versionString;\n};\nexports.parseBrowserEngineVersion = (userAgent, engine) => {\n if (!engine)\n return \"\";\n if (engine === \"Gecko\") {\n const geckoVersionRegex = /[ ](?:rv[: ]([0-9\\.]+)).*gecko\\/[0-9]{8,10}/i;\n const match = userAgent.match(geckoVersionRegex);\n if (match) {\n return match.pop();\n }\n }\n const regex = new RegExp(`${engine}\\\\s*\\\\/?\\\\s*((?:(?=\\\\d+\\\\.\\\\d)\\\\d+[.\\\\d]*|\\\\d{1,7}(?=(?:\\\\D|$))))`, \"i\");\n const match = userAgent.match(regex);\n if (!match)\n return \"\";\n return match.pop();\n};\n"],"names":["__importDefault","this","mod","__esModule","client_1","device_1","operating_system_1","vendor_fragment_1","browser_1","BotParser","user_agent_1","version_compare_1","DeviceDetector","constructor","options","skipBotDetection","versionTruncation","parse","userAgent","_a","_b","_c","_d","_e","_f","_g","_h","_j","_k","_l","_m","_o","_p","result","client","clientParser","os","operatingSystemParser","device","deviceParser","bot","botParser","osName","name","osVersion","version","osFamily","default","getOsFamily","brand","vendorFragmentParser","createDeviceObject","includes","type","userAgentParser","hasAndroidTabletFragment","hasAndroidMobileFragment","versionCompare","isToucheEnabled","hasDesktop","hasDesktopFragment","isDesktop","usesMobileBrowser","getDesktopOsArray","isMobileOnlyBrowser","model","Object","assign","module","exports","bots_json_1","match","regex","category","url","producer","defineProperty","value","version_1","variable_replacement_1","browsers_json_1","browser_engine_json_1","available_browsers_json_1","mobile_only_browsers_json_1","BrowserParser","engine","engineVersion","browser","vrpVersion","variableReplacement","formatVersion","shortVersion","parseFloat","versions","sortedEngineVersions","entries","sort","a","b","versionThreshold","engineByVersion","browserEngine","RegExp","exec","parseBrowserEngineVersion","getBrowserShortName","browserName","shortName","feed_readers_json_1","FeedReaderParser","feedReader","mobile_apps_1","feed_readers_1","libraries_1","media_players_1","personal_information_managers_1","clientParsers","ClientParser","Parser","parser","libraries_json_1","LibraryParser","library","mediaplayers_json_1","MediaPlayerParser","mediaPlayer","mobile_apps_json_1","MobileAppParser","mobileApp","pim_json_1","PersonalInformationManagerParser","personalInformationManager","cameras_json_1","CameraParser","camera","trim","models","modelMatch","car_browsers_json_1","CarParser","car","consoles_json_1","ConsoleParser","gameConsole","cameras_1","mobiles_1","televisions_1","cars_1","consoles_1","notebooks_1","portable_media_players_1","deviceParsers","mobiles_json_1","model_1","MobileParser","resultType","mobile","buildModel","notebooks_json_1","NotebooksParser","notebook","portable_media_player_json_1","PortableMediaPlayersParser","portableMediaPlayer","televisions_json_1","TelevisionParser","isHbbTv","television","oss_json_1","operating_system_json_1","desktopOsArray","shortOsNames","operatingSystem","osFamilies","OperatingSystemParser","platform","parsePlatform","osShortName","getOsShortName","shortNames","vendorfragments_json_1","VendorFragmentParser","vendorFragment","memoryCache","memoryCacheBucket","set","key","get","hasOwnProperty","replace","str","char","memory_cache_1","cache","getRegexInstance","rawRegex","cachedRegexInstance","regexInstance","slice","template","variables","undefined","index","parseInt","substr","variable","v1","v2","operator","i","x","compare","vm","prepVersion","v","length","split","numVersion","isNaN","Math","max","trim_1","versionString","versionParts","test","join","Number","isInteger","toFixed","geckoVersionRegex","pop"],"sourceRoot":""}