{"version":3,"sources":["webpack:///./node_modules/device-detector-js/dist/parsers/vendor-fragment/index.js","webpack:///./node_modules/device-detector-js/dist/utils/trim.js","webpack:///./node_modules/device-detector-js/dist/index.js","webpack:///./node_modules/device-detector-js/dist/parsers/client/index.js","webpack:///./node_modules/device-detector-js/dist/utils/version.js","webpack:///./node_modules/device-detector-js/dist/parsers/device/consoles.js","webpack:///./node_modules/device-detector-js/dist/parsers/client/personal-information-managers.js","webpack:///./node_modules/device-detector-js/dist/parsers/bot/index.js","webpack:///./node_modules/device-detector-js/dist/parsers/device/televisions.js","webpack:///./node_modules/device-detector-js/dist/utils/user-agent.js","webpack:///./node_modules/device-detector-js/dist/utils/memory-cache.js","webpack:///./node_modules/device-detector-js/dist/parsers/client/mobile-apps.js","webpack:///./node_modules/device-detector-js/dist/parsers/device/index.js","webpack:///./node_modules/device-detector-js/dist/parsers/client/feed-readers.js","webpack:///./node_modules/device-detector-js/dist/parsers/device/cameras.js","webpack:///./node_modules/device-detector-js/dist/parsers/client/browser.js","webpack:///./node_modules/device-detector-js/dist/parsers/operating-system/index.js","webpack:///./node_modules/device-detector-js/dist/parsers/device/portable-media-players.js","webpack:///./src/views/Activity.vue?ccbd","webpack:///src/views/Activity.vue","webpack:///./src/views/Activity.vue?7ab1","webpack:///./src/views/Activity.vue","webpack:///./node_modules/device-detector-js/dist/parsers/client/media-players.js","webpack:///./node_modules/device-detector-js/dist/parsers/device/mobiles.js","webpack:///./node_modules/device-detector-js/dist/parsers/device/cars.js","webpack:///./node_modules/device-detector-js/dist/utils/model.js","webpack:///./node_modules/device-detector-js/dist/utils/version-compare.js","webpack:///./node_modules/device-detector-js/dist/utils/variable-replacement.js","webpack:///./node_modules/device-detector-js/dist/parsers/client/libraries.js"],"names":["__importDefault","this","mod","__esModule","Object","defineProperty","exports","value","vendorfragments_json_1","user_agent_1","VendorFragmentParser","parse","userAgent","brand","vendorFragment","entries","default","regex","match","userAgentParser","trim","str","char","replace","RegExp","client_1","device_1","operating_system_1","vendor_fragment_1","browser_1","BotParser","version_compare_1","DeviceDetector","options","skipBotDetection","versionTruncation","_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","getOsFamily","vendorFragmentParser","createDeviceObject","includes","type","getBrowserFamily","hasAndroidTabletFragment","hasAndroidMobileFragment","versionCompare","isToucheEnabled","isDesktop","usesMobileBrowser","getDesktopOsArray","isMobileOnlyBrowser","model","assign","module","mobile_apps_1","feed_readers_1","libraries_1","media_players_1","personal_information_managers_1","clientParsers","ClientParser","Parser","parser","trim_1","formatVersion","undefined","versionString","versionParts","split","test","join","Number","isInteger","parseFloat","parseInt","toFixed","length","slice","parseBrowserEngineVersion","engine","pop","consoles_json_1","variable_replacement_1","ConsoleParser","gameConsole","variableReplacement","models","modelMatch","pim_json_1","version_1","PersonalInformationManagerParser","personalInformationManager","bots_json_1","category","url","producer","televisions_json_1","model_1","TelevisionParser","isHbbTv","television","buildModel","memory_cache_1","cache","memoryCache","getRegexInstance","rawRegex","cachedRegexInstance","get","regexInstance","set","exec","memoryCacheBucket","key","hasOwnProperty","mobile_apps_json_1","MobileAppParser","mobileApp","cameras_1","mobiles_1","televisions_1","cars_1","consoles_1","portable_media_players_1","deviceParsers","feed_readers_json_1","FeedReaderParser","feedReader","cameras_json_1","CameraParser","camera","browsers_json_1","browser_engine_json_1","available_browsers_json_1","browser_families_json_1","mobile_only_browsers_json_1","BrowserParser","engineVersion","browser","vrpVersion","shortVersion","versions","sortedEngineVersions","sort","a","b","versionThreshold","engineByVersion","browserEngine","getBrowserShortName","browserName","shortName","browserShortName","browserFamily","browserLabels","oss_json_1","desktopOsArray","shortOsNames","osFamilies","OperatingSystemParser","platform","parsePlatform","operatingSystem","osShortName","getOsShortName","shortNames","portable_media_player_json_1","PortableMediaPlayersParser","portableMediaPlayer","render","_vm","$createElement","_self","staticClass","staticRenderFns","components","GameDownloadBar","data","methods","mounted","deviceInfo","$store","commit","beforeDestroy","component","mediaplayers_json_1","MediaPlayerParser","mediaPlayer","mobiles_json_1","MobileParser","mobile","car_browsers_json_1","CarParser","car","v1","v2","operator","i","x","compare","vm","prepVersion","v","numVersion","isNaN","Math","max","template","variables","index","substr","variable","libraries_json_1","LibraryParser","library"],"mappings":"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","file":"js/chunk-b63706ae.1699258740020.js","sourcesContent":["\"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.trim = (str, char) => {\n return str.replace(new RegExp(\"^[\" + char + \"]+|[\" + char + \"]+$\", \"g\"), \"\");\n};\n","\"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\", \"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 */\n if (!((_e = result.device) === null || _e === void 0 ? void 0 : _e.type) && osFamily === \"Android\" && browser_1.default.getBrowserFamily(((_f = result.client) === null || _f === void 0 ? void 0 : _f.name) || \"\") === \"Chrome\") {\n if (user_agent_1.userAgentParser(\"Chrome/[.0-9]* Mobile\", 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 (!((_g = result.device) === null || _g === void 0 ? void 0 : _g.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 (!((_h = result.device) === null || _h === void 0 ? void 0 : _h.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 (!((_j = result.device) === null || _j === void 0 ? void 0 : _j.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 (result.device && ((_k = result.device) === null || _k === void 0 ? void 0 : _k.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 (!((_l = result.device) === null || _l === void 0 ? void 0 : _l.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 * Devices running Kylo or Espital TV Browsers are assumed to be televisions\n */\n if (!((_m = result.device) === null || _m === void 0 ? void 0 : _m.type) && [\"Kylo\", \"Espial TV Browser\"].includes(((_o = result.client) === null || _o === void 0 ? void 0 : _o.name) || \"\")) {\n if (!result.device) {\n result.device = this.createDeviceObject();\n }\n result.device.type = \"television\";\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.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};\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\";\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 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","\"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 (gameConsole.model) {\n result.model = variable_replacement_1.variableReplacement(gameConsole.model, match).trim();\n }\n else if (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 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};\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 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 (television.model) {\n result.model = model_1.buildModel(variable_replacement_1.variableReplacement(television.model, match)).trim();\n }\n else if (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\";\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.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\";\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 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 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];\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 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 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 (camera.model) {\n result.model = variable_replacement_1.variableReplacement(camera.model, match).trim();\n }\n else if (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 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 browser_families_json_1 = __importDefault(require(\"./fixtures/browser-families.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.getBrowserFamily = (browserName) => {\n const browserShortName = BrowserParser.getBrowserShortName(browserName);\n for (const [browserFamily, browserLabels] of Object.entries(browser_families_json_1.default)) {\n if (browserLabels.includes(browserShortName))\n return browserFamily;\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 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 desktopOsArray = [\"AmigaOS\", \"IBM\", \"GNU/Linux\", \"Mac\", \"Unix\", \"Windows\", \"BeOS\", \"Chrome OS\"];\nconst shortOsNames = { \"AIX\": \"AIX\", \"AND\": \"Android\", \"AMG\": \"AmigaOS\", \"ATV\": \"Apple TV\", \"ARL\": \"Arch Linux\", \"BTR\": \"BackTrack\", \"SBA\": \"Bada\", \"BEO\": \"BeOS\", \"BLB\": \"BlackBerry OS\", \"QNX\": \"BlackBerry Tablet OS\", \"BMP\": \"Brew\", \"CES\": \"CentOS\", \"COS\": \"Chrome OS\", \"CYN\": \"CyanogenMod\", \"DEB\": \"Debian\", \"DFB\": \"DragonFly\", \"FED\": \"Fedora\", \"FOS\": \"Firefox OS\", \"FIR\": \"Fire OS\", \"BSD\": \"FreeBSD\", \"GNT\": \"Gentoo\", \"GTV\": \"Google TV\", \"HPX\": \"HP-UX\", \"HAI\": \"Haiku OS\", \"IRI\": \"IRIX\", \"INF\": \"Inferno\", \"KOS\": \"KaiOS\", \"KNO\": \"Knoppix\", \"KBT\": \"Kubuntu\", \"LIN\": \"GNU\\/Linux\", \"LBT\": \"Lubuntu\", \"VLN\": \"VectorLinux\", \"MAC\": \"Mac\", \"MAE\": \"Maemo\", \"MDR\": \"Mandriva\", \"SMG\": \"MeeGo\", \"MCD\": \"MocorDroid\", \"MIN\": \"Mint\", \"MLD\": \"MildWild\", \"MOR\": \"MorphOS\", \"NBS\": \"NetBSD\", \"MTK\": \"MTK \\/ Nucleus\", \"WII\": \"Nintendo\", \"NDS\": \"Nintendo Mobile\", \"OS2\": \"OS\\/2\", \"T64\": \"OSF1\", \"OBS\": \"OpenBSD\", \"ORD\": \"Ordissimo\", \"PSP\": \"PlayStation Portable\", \"PS3\": \"PlayStation\", \"RHT\": \"Red Hat\", \"ROS\": \"RISC OS\", \"REM\": \"Remix OS\", \"RZD\": \"RazoDroiD\", \"SAB\": \"Sabayon\", \"SSE\": \"SUSE\", \"SAF\": \"Sailfish OS\", \"SLW\": \"Slackware\", \"SOS\": \"Solaris\", \"SYL\": \"Syllable\", \"SYM\": \"Symbian\", \"SYS\": \"Symbian OS\", \"S40\": \"Symbian OS Series 40\", \"S60\": \"Symbian OS Series 60\", \"SY3\": \"Symbian^3\", \"TDX\": \"ThreadX\", \"TIZ\": \"Tizen\", \"UBT\": \"Ubuntu\", \"WTV\": \"WebTV\", \"WIN\": \"Windows\", \"WCE\": \"Windows CE\", \"WIO\": \"Windows IoT\", \"WMO\": \"Windows Mobile\", \"WPH\": \"Windows Phone\", \"WRT\": \"Windows RT\", \"XBX\": \"Xbox\", \"XBT\": \"Xubuntu\", \"YNS\": \"YunOs\", \"IOS\": \"iOS\", \"POS\": \"palmOS\", \"WOS\": \"webOS\" };\nconst osFamilies = { \"Android\": [\"AND\", \"CYN\", \"FIR\", \"REM\", \"RZD\", \"MLD\", \"MCD\", \"YNS\"], \"AmigaOS\": [\"AMG\", \"MOR\"], \"Apple TV\": [\"ATV\"], \"BlackBerry\": [\"BLB\", \"QNX\"], \"Brew\": [\"BMP\"], \"BeOS\": [\"BEO\", \"HAI\"], \"Chrome OS\": [\"COS\"], \"Firefox OS\": [\"FOS\", \"KOS\"], \"Gaming Console\": [\"WII\", \"PS3\"], \"Google TV\": [\"GTV\"], \"IBM\": [\"OS2\"], \"iOS\": [\"IOS\"], \"RISC OS\": [\"ROS\"], \"GNU\\/Linux\": [\"LIN\", \"ARL\", \"DEB\", \"KNO\", \"MIN\", \"UBT\", \"KBT\", \"XBT\", \"LBT\", \"FED\", \"RHT\", \"VLN\", \"MDR\", \"GNT\", \"SAB\", \"SLW\", \"SSE\", \"CES\", \"BTR\", \"SAF\", \"ORD\"], \"Mac\": [\"MAC\"], \"Mobile Gaming Console\": [\"PSP\", \"NDS\", \"XBX\"], \"Real-time OS\": [\"MTK\", \"TDX\"], \"Other Mobile\": [\"WOS\", \"POS\", \"SBA\", \"TIZ\", \"SMG\", \"MAE\"], \"Symbian\": [\"SYM\", \"SYS\", \"SY3\", \"S60\", \"S40\"], \"Unix\": [\"SOS\", \"AIX\", \"HPX\", \"BSD\", \"NBS\", \"OBS\", \"DFB\", \"SYL\", \"IRI\", \"T64\", \"INF\"], \"WebTV\": [\"WTV\"], \"Windows\": [\"WIN\"], \"Windows Mobile\": [\"WPH\", \"WMO\", \"WCE\", \"WRT\", \"WIO\"] };\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\", userAgent)) {\n return \"ARM\";\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]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 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 (portableMediaPlayer.model) {\n result.model = variable_replacement_1.variableReplacement(portableMediaPlayer.model, match).trim();\n }\n else if (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","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('router-view'),_c('GameDownloadBar',{staticClass:\"d-none d-lg-block\"})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Activity.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Activity.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Activity.vue?vue&type=template&id=744e3a19&scoped=true&\"\nimport script from \"./Activity.vue?vue&type=script&lang=js&\"\nexport * from \"./Activity.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"744e3a19\",\n null\n \n)\n\nexport default component.exports","\"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 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 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 result.type = mobile.device || \"\";\n result.brand = brand;\n if (mobile.model) {\n result.model = model_1.buildModel(variable_replacement_1.variableReplacement(mobile.model, match)).trim();\n }\n else if (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 (model.device) {\n result.type = 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 (result.type === \"tv\") {\n result.type = \"television\";\n }\n if (result.type === \"car browser\") {\n result.type = \"car\";\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 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\";\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.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 });\nexports.variableReplacement = (template, variables) => {\n const regex = new RegExp(`\\\\$\\\\d`, \"g\");\n if (template === null)\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\";\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"],"sourceRoot":""}