edge-useragent
Version:
High performance user agent string parser for modern environments. Part of the Edge Platform.
994 lines (499 loc) • 112 kB
JavaScript
/*! edge-useragent v4.0.0-alpha.4 by Sebastian Software <s.werner@sebastian-software.de> */
import _classCallCheck from 'babel-runtime/helpers/classCallCheck';
import _createClass from 'babel-runtime/helpers/createClass';
import semver from 'semver';
var browser = [];
browser[0] = [new RegExp("(Rival IQ, rivaliq.com)"), "Rival IQ", 0, 0, 0];
browser[1] = [new RegExp("(ESPN)[%20| ]+Radio/(\\d+)\\.(\\d+)\\.(\\d+) CFNetwork"), 0, 0, 0, 0];
browser[2] = [new RegExp("(Antenna)/(\\d+) CFNetwork"), "AntennaPod", 0, 0, 0];
browser[3] = [new RegExp("(TopPodcasts)Pro/(\\d+) CFNetwork"), 0, 0, 0, 0];
browser[4] = [new RegExp("(MusicDownloader)Lite/(\\d+)\\.(\\d+)\\.(\\d+) CFNetwork"), 0, 0, 0, 0];
browser[5] = [new RegExp("^(.*)-iPad/(\\d+)\\.?(\\d+)?.?(\\d+)?.?(\\d+)? CFNetwork"), 0, 0, 0, 0];
browser[6] = [new RegExp("^(.*)-iPhone/(\\d+)\\.?(\\d+)?.?(\\d+)?.?(\\d+)? CFNetwork"), 0, 0, 0, 0];
browser[7] = [new RegExp("^(.*)/(\\d+)\\.?(\\d+)?.?(\\d+)?.?(\\d+)? CFNetwork"), 0, 0, 0, 0];
browser[8] = [new RegExp("(espn\\.go)"), "ESPN", 0, 0, 0];
browser[9] = [new RegExp("(espnradio\\.com)"), "ESPN", 0, 0, 0];
browser[10] = [new RegExp("ESPN APP$"), "ESPN", 0, 0, 0];
browser[11] = [new RegExp("(audioboom\\.com)"), "AudioBoom", 0, 0, 0];
browser[12] = [new RegExp(" (Rivo) RHYTHM"), 0, 0, 0, 0];
browser[13] = [new RegExp("(CFNetwork)(?:/(\\d+)\\.(\\d+)\\.?(\\d+)?)?"), "CFNetwork", 0, 0, 0];
browser[14] = [new RegExp("(Pingdom.com_bot_version_)(\\d+)\\.(\\d+)"), "PingdomBot", 0, 0, 0];
browser[15] = [new RegExp("(PingdomTMS)/(\\d+)\\.(\\d+)\\.(\\d+)"), "PingdomBot", 0, 0, 0];
browser[16] = [new RegExp("(NewRelicPinger)/(\\d+)\\.(\\d+)"), "NewRelicPingerBot", 0, 0, 0];
browser[17] = [new RegExp("(\\(StatusCake\\))"), "StatusCakeBot", 0, 0, 0];
browser[18] = [new RegExp("(facebookexternalhit)/(\\d+)\\.(\\d+)"), "FacebookBot", 0, 0, 0];
browser[19] = [new RegExp("Google.*/\\+/web/snippet"), "GooglePlusBot", 0, 0, 0];
browser[20] = [new RegExp("via ggpht.com GoogleImageProxy"), "GmailImageProxy", 0, 0, 0];
browser[21] = [new RegExp("(Twitterbot)/(\\d+)\\.(\\d+)"), "TwitterBot", 0, 0, 0];
browser[22] = [new RegExp("/((?:Ant-)?Nutch|[A-z]+[Bb]ot|[A-z]+[Ss]pider|Axtaris|fetchurl|Isara|ShopSalad|Tailsweep)[ \\-](\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?"), 0, 0, 0, 0];
browser[23] = [new RegExp("\\b(008|Altresium|Argus|BaiduMobaider|BoardReader|DNSGroup|DataparkSearch|EDI|Goodzer|Grub|INGRID|Infohelfer|LinkedInBot|LOOQ|Nutch|PathDefender|Peew|PostPost|Steeler|Twitterbot|VSE|WebCrunch|WebZIP|Y!J-BR[A-Z]|YahooSeeker|envolk|sproose|wminer)/(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?"), 0, 0, 0, 0];
browser[24] = [new RegExp("(MSIE) (\\d+)\\.(\\d+)([a-z]\\d?)?;.* MSIECrawler"), "MSIECrawler", 0, 0, 0];
browser[25] = [new RegExp("(Google-HTTP-Java-Client|Apache-HttpClient|http%20client|Python-urllib|HttpMonitor|TLSProber|WinHTTP|JNLP|okhttp)(?:[ /](\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?)?"), 0, 0, 0, 0];
browser[26] = [new RegExp("(Pinterest(?:bot)?)/(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?[;\\s\\(]+\\+https://www.pinterest.com/bot.html"), "Pinterestbot", 0, 0, 0];
browser[27] = [new RegExp("(1470\\.net crawler|50\\.nu|8bo Crawler Bot|Aboundex|Accoona-[A-z]+-Agent|AdsBot-Google(?:-[a-z]+)?|altavista|AppEngine-Google|archive.*?\\.org_bot|archiver|Ask Jeeves|[Bb]ai[Dd]u[Ss]pider(?:-[A-Za-z]+)*|bingbot|BingPreview|blitzbot|BlogBridge|Bloglovin|BoardReader(?: [A-Za-z]+)*|boitho.com-dc|BotSeer|\\b\\w*favicon\\w*\\b|\\bYeti(?:-[a-z]+)?|Catchpoint(?: bot)?|[Cc]harlotte|Checklinks|clumboot|Comodo HTTP\\(S\\) Crawler|Comodo-Webinspector-Crawler|ConveraCrawler|CRAWL-E|CrawlConvera|Daumoa(?:-feedfetcher)?|Feed Seeker Bot|Feedbin|findlinks|Flamingo_SearchEngine|FollowSite Bot|furlbot|Genieo|gigabot|GomezAgent|gonzo1|(?:[a-zA-Z]+-)?Googlebot(?:-[a-zA-Z]+)?|Google SketchUp|grub-client|gsa-crawler|heritrix|HiddenMarket|holmes|HooWWWer|htdig|ia_archiver|ICC-Crawler|Icarus6j|ichiro(?:/mobile)?|IconSurf|IlTrovatore(?:-Setaccio)?|InfuzApp|Innovazion Crawler|InternetArchive|IP2[a-z]+Bot|jbot\\b|KaloogaBot|Kraken|Kurzor|larbin|LEIA|LesnikBot|Linguee Bot|LinkAider|LinkedInBot|Lite Bot|Llaut|lycos|Mail\\.RU_Bot|masscan|masidani_bot|Mediapartners-Google|Microsoft .*? Bot|mogimogi|mozDex|MJ12bot|msnbot(?:-media *)?|msrbot|Mtps Feed Aggregation System|netresearch|Netvibes|NewsGator[^/]*|^NING|Nutch[^/]*|Nymesis|ObjectsSearch|Orbiter|OOZBOT|PagePeeker|PagesInventory|PaxleFramework|Peeplo Screenshot Bot|PlantyNet_WebRobot|Pompos|Qwantify|Read%20Later|Reaper|RedCarpet|Retreiver|Riddler|Rival IQ|scooter|Scrapy|Scrubby|searchsight|seekbot|semanticdiscovery|Simpy|SimplePie|SEOstats|SimpleRSS|SiteCon|Slackbot-LinkExpanding|Slack-ImgProxy|Slurp|snappy|Speedy Spider|Squrl Java|Stringer|TheUsefulbot|ThumbShotsBot|Thumbshots\\.ru|Tiny Tiny RSS|TwitterBot|WhatsApp|URL2PNG|Vagabondo|VoilaBot|^vortex|Votay bot|^voyager|WASALive.Bot|Web-sniffer|WebThumb|WeSEE:[A-z]+|WhatWeb|WIRE|WordPress|Wotbox|www\\.almaden\\.ibm\\.com|Xenu(?:.s)? Link Sleuth|Xerka [A-z]+Bot|yacy(?:bot)?|Yahoo[a-z]*Seeker|Yahoo! Slurp|Yandex\\w+|YodaoBot(?:-[A-z]+)?|YottaaMonitor|Yowedo|^Zao|^Zao-Crawler|ZeBot_www\\.ze\\.bz|ZooShot|ZyBorg)(?:[ /]v?(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?)?"), 0, 0, 0, 0];
browser[28] = [new RegExp("(?:\\/[A-Za-z0-9\\.]+)? *([A-Za-z0-9 \\-_\\!\\[\\]:]*(?:[Aa]rchiver|[Ii]ndexer|[Ss]craper|[Bb]ot|[Ss]pider|[Cc]rawl[a-z]*))/(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?"), 0, 0, 0, 0];
browser[29] = [new RegExp("(?:\\/[A-Za-z0-9\\.]+)? *([A-Za-z0-9 _\\!\\[\\]:]*(?:[Aa]rchiver|[Ii]ndexer|[Ss]craper|[Bb]ot|[Ss]pider|[Cc]rawl[a-z]*)) (\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?"), 0, 0, 0, 0];
browser[30] = [new RegExp("((?:[A-z0-9]+|[A-z\\-]+ ?)?(?: the )?(?:[Ss][Pp][Ii][Dd][Ee][Rr]|[Ss]crape|[A-Za-z0-9-]*(?:[^C][^Uu])[Bb]ot|[Cc][Rr][Aa][Ww][Ll])[A-z0-9]*)(?:(?:[ /]| v)(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?)?"), 0, 0, 0, 0];
browser[31] = [new RegExp("(HbbTV)/(\\d+)\\.(\\d+)\\.(\\d+) \\("), 0, 0, 0, 0];
browser[32] = [new RegExp("(Chimera|SeaMonkey|Camino)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+[a-z]*)?"), 0, 0, 0, 0];
browser[33] = [new RegExp("\\[FB.*;(FBAV)/(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?"), "Facebook", 0, 0, 0];
browser[34] = [new RegExp("\\[(Pinterest)/[^\\]]+\\]"), 0, 0, 0, 0];
browser[35] = [new RegExp("(Pinterest)(?: for Android(?: Tablet)?)?/(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?"), 0, 0, 0, 0];
browser[36] = [new RegExp("(PaleMoon)/(\\d+)\\.(\\d+)\\.?(\\d+)?"), "Pale Moon", 0, 0, 0];
browser[37] = [new RegExp("(Fennec)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+[a-z]*)"), "Firefox Mobile", 0, 0, 0];
browser[38] = [new RegExp("(Fennec)/(\\d+)\\.(\\d+)(pre)"), "Firefox Mobile", 0, 0, 0];
browser[39] = [new RegExp("(Fennec)/(\\d+)\\.(\\d+)"), "Firefox Mobile", 0, 0, 0];
browser[40] = [new RegExp("(?:Mobile|Tablet);.*(Firefox)/(\\d+)\\.(\\d+)"), "Firefox Mobile", 0, 0, 0];
browser[41] = [new RegExp("(Namoroka|Shiretoko|Minefield)/(\\d+)\\.(\\d+)\\.(\\d+(?:pre)?)"), "Firefox ($1)", 0, 0, 0];
browser[42] = [new RegExp("(Firefox)/(\\d+)\\.(\\d+)(a\\d+[a-z]*)"), "Firefox Alpha", 0, 0, 0];
browser[43] = [new RegExp("(Firefox)/(\\d+)\\.(\\d+)(b\\d+[a-z]*)"), "Firefox Beta", 0, 0, 0];
browser[44] = [new RegExp("(Firefox)-(?:\\d+\\.\\d+)?/(\\d+)\\.(\\d+)(a\\d+[a-z]*)"), "Firefox Alpha", 0, 0, 0];
browser[45] = [new RegExp("(Firefox)-(?:\\d+\\.\\d+)?/(\\d+)\\.(\\d+)(b\\d+[a-z]*)"), "Firefox Beta", 0, 0, 0];
browser[46] = [new RegExp("(Namoroka|Shiretoko|Minefield)/(\\d+)\\.(\\d+)([ab]\\d+[a-z]*)?"), "Firefox ($1)", 0, 0, 0];
browser[47] = [new RegExp("(Firefox).*Tablet browser (\\d+)\\.(\\d+)\\.(\\d+)"), "MicroB", 0, 0, 0];
browser[48] = [new RegExp("(MozillaDeveloperPreview)/(\\d+)\\.(\\d+)([ab]\\d+[a-z]*)?"), 0, 0, 0, 0];
browser[49] = [new RegExp("(FxiOS)/(\\d+)\\.(\\d+)(\\.(\\d+))?(\\.(\\d+))?"), "Firefox iOS", 0, 0, 0];
browser[50] = [new RegExp("(Flock)/(\\d+)\\.(\\d+)(b\\d+?)"), 0, 0, 0, 0];
browser[51] = [new RegExp("(RockMelt)/(\\d+)\\.(\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[52] = [new RegExp("(Navigator)/(\\d+)\\.(\\d+)\\.(\\d+)"), "Netscape", 0, 0, 0];
browser[53] = [new RegExp("(Navigator)/(\\d+)\\.(\\d+)([ab]\\d+)"), "Netscape", 0, 0, 0];
browser[54] = [new RegExp("(Netscape6)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+)?"), "Netscape", 0, 0, 0];
browser[55] = [new RegExp("(MyIBrow)/(\\d+)\\.(\\d+)"), "My Internet Browser", 0, 0, 0];
browser[56] = [new RegExp("(UC? ?Browser|UCWEB|U3)[ /]?(\\d+)\\.(\\d+)\\.(\\d+)"), "UC Browser", 0, 0, 0];
browser[57] = [new RegExp("(Opera Tablet).*Version/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"), 0, 0, 0, 0];
browser[58] = [new RegExp("(Opera Mini)(?:/att)?/?(\\d+)?(?:\\.(\\d+))?(?:\\.(\\d+))?"), 0, 0, 0, 0];
browser[59] = [new RegExp("(Opera)/.+Opera Mobi.+Version/(\\d+)\\.(\\d+)"), "Opera Mobile", 0, 0, 0];
browser[60] = [new RegExp("(Opera)/(\\d+)\\.(\\d+).+Opera Mobi"), "Opera Mobile", 0, 0, 0];
browser[61] = [new RegExp("Opera Mobi.+(Opera)(?:/|\\s+)(\\d+)\\.(\\d+)"), "Opera Mobile", 0, 0, 0];
browser[62] = [new RegExp("Opera Mobi"), "Opera Mobile", 0, 0, 0];
browser[63] = [new RegExp("(Opera)/9.80.*Version/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"), 0, 0, 0, 0];
browser[64] = [new RegExp("(?:Mobile Safari).*(OPR)/(\\d+)\\.(\\d+)\\.(\\d+)"), "Opera Mobile", 0, 0, 0];
browser[65] = [new RegExp("(?:Chrome).*(OPR)/(\\d+)\\.(\\d+)\\.(\\d+)"), "Opera", 0, 0, 0];
browser[66] = [new RegExp("(Coast)/(\\d+).(\\d+).(\\d+)"), "Opera Coast", 0, 0, 0];
browser[67] = [new RegExp("(OPiOS)/(\\d+).(\\d+).(\\d+)"), "Opera Mini", 0, 0, 0];
browser[68] = [new RegExp("Chrome/.+( MMS)/(\\d+).(\\d+).(\\d+)"), "Opera Neon", 0, 0, 0];
browser[69] = [new RegExp("(hpw|web)OS/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"), "webOS Browser", 0, 0, 0];
browser[70] = [new RegExp("(luakit)"), "LuaKit", 0, 0, 0];
browser[71] = [new RegExp("(Snowshoe)/(\\d+)\\.(\\d+).(\\d+)"), 0, 0, 0, 0];
browser[72] = [new RegExp("Gecko/\\d+ (Lightning)/(\\d+)\\.(\\d+)\\.?((?:[ab]?\\d+[a-z]*)|(?:\\d*))"), 0, 0, 0, 0];
browser[73] = [new RegExp("(Firefox)/(\\d+)\\.(\\d+)\\.(\\d+(?:pre)?) \\(Swiftfox\\)"), "Swiftfox", 0, 0, 0];
browser[74] = [new RegExp("(Firefox)/(\\d+)\\.(\\d+)([ab]\\d+[a-z]*)? \\(Swiftfox\\)"), "Swiftfox", 0, 0, 0];
browser[75] = [new RegExp("(rekonq)/(\\d+)\\.(\\d+)\\.?(\\d+)? Safari"), "Rekonq", 0, 0, 0];
browser[76] = [new RegExp("rekonq"), "Rekonq", 0, 0, 0];
browser[77] = [new RegExp("(conkeror|Conkeror)/(\\d+)\\.(\\d+)\\.?(\\d+)?"), "Conkeror", 0, 0, 0];
browser[78] = [new RegExp("(konqueror)/(\\d+)\\.(\\d+)\\.(\\d+)"), "Konqueror", 0, 0, 0];
browser[79] = [new RegExp("(WeTab)-Browser"), 0, 0, 0, 0];
browser[80] = [new RegExp("(Comodo_Dragon)/(\\d+)\\.(\\d+)\\.(\\d+)"), "Comodo Dragon", 0, 0, 0];
browser[81] = [new RegExp("(Symphony) (\\d+).(\\d+)"), 0, 0, 0, 0];
browser[82] = [new RegExp("PLAYSTATION 3.+WebKit"), "NetFront NX", 0, 0, 0];
browser[83] = [new RegExp("PLAYSTATION 3"), "NetFront", 0, 0, 0];
browser[84] = [new RegExp("(PlayStation Portable)"), "NetFront", 0, 0, 0];
browser[85] = [new RegExp("(PlayStation Vita)"), "NetFront NX", 0, 0, 0];
browser[86] = [new RegExp("AppleWebKit.+ (NX)/(\\d+)\\.(\\d+)\\.(\\d+)"), "NetFront NX", 0, 0, 0];
browser[87] = [new RegExp("(Nintendo 3DS)"), "NetFront NX", 0, 0, 0];
browser[88] = [new RegExp("(Silk)/(\\d+)\\.(\\d+)(?:\\.([0-9\\-]+))?"), "Amazon Silk", 0, 0, 0];
browser[89] = [new RegExp("(Puffin)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"), 0, 0, 0, 0];
browser[90] = [new RegExp("Windows Phone .*(Edge)/(\\d+)\\.(\\d+)"), "Edge Mobile", 0, 0, 0];
browser[91] = [new RegExp("(SamsungBrowser)/(\\d+)\\.(\\d+)"), "Samsung Internet", 0, 0, 0];
browser[92] = [new RegExp("(SznProhlizec)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"), "Seznam.cz", 0, 0, 0];
browser[93] = [new RegExp("(coc_coc_browser)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"), "Coc Coc", 0, 0, 0];
browser[94] = [new RegExp("(baidubrowser)[/\\s](\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?"), "Baidu Browser", 0, 0, 0];
browser[95] = [new RegExp("(FlyFlow)/(\\d+)\\.(\\d+)"), "Baidu Explorer", 0, 0, 0];
browser[96] = [new RegExp("(MxBrowser)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"), "Maxthon", 0, 0, 0];
browser[97] = [new RegExp("(Crosswalk)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[98] = [new RegExp("; wv\\).+(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)"), "Chrome Mobile WebView", 0, 0, 0];
browser[99] = [new RegExp("(CrMo)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)"), "Chrome Mobile", 0, 0, 0];
browser[100] = [new RegExp("(CriOS)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)"), "Chrome Mobile iOS", 0, 0, 0];
browser[101] = [new RegExp("(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+) Mobile(?:[ /]|$)"), "Chrome Mobile", 0, 0, 0];
browser[102] = [new RegExp(" Mobile .*(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)"), "Chrome Mobile", 0, 0, 0];
browser[103] = [new RegExp("(chromeframe)/(\\d+)\\.(\\d+)\\.(\\d+)"), "Chrome Frame", 0, 0, 0];
browser[104] = [new RegExp("(SLP Browser)/(\\d+)\\.(\\d+)"), "Tizen Browser", 0, 0, 0];
browser[105] = [new RegExp("(SE 2\\.X) MetaSr (\\d+)\\.(\\d+)"), "Sogou Explorer", 0, 0, 0];
browser[106] = [new RegExp("(MQQBrowser/Mini)(?:(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?)?"), "QQ Browser Mini", 0, 0, 0];
browser[107] = [new RegExp("(MQQBrowser)(?:/(\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?)?"), "QQ Browser Mobile", 0, 0, 0];
browser[108] = [new RegExp("(QQBrowser)(?:/(\\d+)(?:\\.(\\d+)\\.(\\d+)(?:\\.(\\d+))?)?)?"), "QQ Browser", 0, 0, 0];
browser[109] = [new RegExp("(Rackspace Monitoring)/(\\d+)\\.(\\d+)"), "RackspaceBot", 0, 0, 0];
browser[110] = [new RegExp("(PyAMF)/(\\d+)\\.(\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[111] = [new RegExp("(YaBrowser)/(\\d+)\\.(\\d+)\\.(\\d+)"), "Yandex Browser", 0, 0, 0];
browser[112] = [new RegExp("(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+).* MRCHROME"), "Mail.ru Chromium Browser", 0, 0, 0];
browser[113] = [new RegExp("(AOL) (\\d+)\\.(\\d+); AOLBuild (\\d+)"), 0, 0, 0, 0];
browser[114] = [new RegExp("(PodCruncher|Downcast)[ /]?(\\d+)\\.?(\\d+)?\\.?(\\d+)?\\.?(\\d+)?"), 0, 0, 0, 0];
browser[115] = [new RegExp("(Slack_SSB)/(\\d+)\\.(\\d+)\\.(\\d+)"), "Slack Desktop Client", 0, 0, 0];
browser[116] = [new RegExp("(HipChat)/?(\\d+)?"), "HipChat Desktop Client", 0, 0, 0];
browser[117] = [new RegExp("\\b(MobileIron|FireWeb|Jasmine|ANTGalio|Midori|Fresco|Lobo|PaleMoon|Maxthon|Lynx|OmniWeb|Dillo|Camino|Demeter|Fluid|Fennec|Epiphany|Shiira|Sunrise|Spotify|Flock|Netscape|Lunascape|WebPilot|NetFront|Netfront|Konqueror|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|Opera Mini|iCab|NetNewsWire|ThunderBrowse|Iris|UP\\.Browser|Bunjalloo|Google Earth|Raven for Mac|Openwave|MacOutlook|Electron)/(\\d+)\\.(\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[118] = [new RegExp("Microsoft Office Outlook 12\\.\\d+\\.\\d+|MSOffice 12"), "Outlook", "2007", 0, 0];
browser[119] = [new RegExp("Microsoft Outlook 14\\.\\d+\\.\\d+|MSOffice 14"), "Outlook", "2010", 0, 0];
browser[120] = [new RegExp("Microsoft Outlook 15\\.\\d+\\.\\d+"), "Outlook", "2013", 0, 0];
browser[121] = [new RegExp("Microsoft Outlook (?:Mail )?16\\.\\d+\\.\\d+"), "Outlook", "2016", 0, 0];
browser[122] = [new RegExp("Outlook-Express\\/7\\.0.*"), "Windows Live Mail", 0, 0, 0];
browser[123] = [new RegExp("(Airmail) (\\d+)\\.(\\d+)(?:\\.(\\d+))?"), 0, 0, 0, 0];
browser[124] = [new RegExp("(Thunderbird)/(\\d+)\\.(\\d+)(?:\\.(\\d+(?:pre)?))?"), "Thunderbird", 0, 0, 0];
browser[125] = [new RegExp("(Postbox)/(\\d+)\\.(\\d+)\\.(\\d+)"), "Postbox", 0, 0, 0];
browser[126] = [new RegExp("(Barca(?:Pro)?)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"), "Barca", 0, 0, 0];
browser[127] = [new RegExp("(Lotus-Notes)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"), "Lotus Notes", 0, 0, 0];
browser[128] = [new RegExp("(Vivaldi)/(\\d+)\\.(\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[129] = [new RegExp("(Edge)/(\\d+)(?:\\.(\\d+))?"), 0, 0, 0, 0];
browser[130] = [new RegExp("(brave)/(\\d+)\\.(\\d+)\\.(\\d+) Chrome"), "Brave", 0, 0, 0];
browser[131] = [new RegExp("(Chrome)/(\\d+)\\.(\\d+)\\.(\\d+)[\\d.]* Iron[^/]"), "Iron", 0, 0, 0];
browser[132] = [new RegExp("\\b(Dolphin)(?: |HDCN/|/INT\\-)(\\d+)\\.(\\d+)\\.?(\\d+)?"), 0, 0, 0, 0];
browser[133] = [new RegExp("HeadlessChrome"), "HeadlessChrome", 0, 0, 0];
browser[134] = [new RegExp("(bingbot|Bolt|AdobeAIR|Jasmine|IceCat|Skyfire|Midori|Maxthon|Lynx|Arora|IBrowse|Dillo|Camino|Shiira|Fennec|Phoenix|Flock|Netscape|Lunascape|Epiphany|WebPilot|Opera Mini|Opera|NetFront|Netfront|Konqueror|Googlebot|SeaMonkey|Kazehakase|Vienna|Iceape|Iceweasel|IceWeasel|Iron|K-Meleon|Sleipnir|Galeon|GranParadiso|iCab|iTunes|MacAppStore|NetNewsWire|Space Bison|Stainless|Orca|Dolfin|BOLT|Minimo|Tizen Browser|Polaris|Abrowser|Planetweb|ICE Browser|mDolphin|qutebrowser|Otter|QupZilla|MailBar|kmail2|YahooMobileMail|ExchangeWebServices|ExchangeServicesClient|Dragon|Outlook-iOS-Android)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"), 0, 0, 0, 0];
browser[135] = [new RegExp("(Chromium|Chrome)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"), 0, 0, 0, 0];
browser[136] = [new RegExp("(IEMobile)[ /](\\d+)\\.(\\d+)"), "IE Mobile", 0, 0, 0];
browser[137] = [new RegExp("(BacaBerita App)\\/(\\d+)\\.(\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[138] = [new RegExp("^(bPod|Pocket Casts|Player FM)$"), 0, 0, 0, 0];
browser[139] = [new RegExp("^(AlexaMediaPlayer|VLC)/(\\d+)\\.(\\d+)\\.([^.\\s]+)"), 0, 0, 0, 0];
browser[140] = [new RegExp("^(AntennaPod|WMPlayer|Zune|Podkicker|Radio|ExoPlayerDemo|Overcast|PocketTunes|NSPlayer|okhttp|DoggCatcher|QuickNews|QuickTime|Peapod|Podcasts|GoldenPod|VLC|Spotify|Miro|MediaGo|Juice|iPodder|gPodder|Banshee)/(\\d+)\\.(\\d+)\\.?(\\d+)?\\.?(\\d+)?"), 0, 0, 0, 0];
browser[141] = [new RegExp("^(Peapod|Liferea)/([^.\\s]+)\\.([^.\\s]+)?\\.?([^.\\s]+)?"), 0, 0, 0, 0];
browser[142] = [new RegExp("^(bPod|Player FM) BMID/(\\S+)"), 0, 0, 0, 0];
browser[143] = [new RegExp("^(Podcast ?Addict)/v(\\d+) "), 0, 0, 0, 0];
browser[144] = [new RegExp("^(Podcast ?Addict) "), "PodcastAddict", 0, 0, 0];
browser[145] = [new RegExp("(Replay) AV"), 0, 0, 0, 0];
browser[146] = [new RegExp("(VOX) Music Player"), 0, 0, 0, 0];
browser[147] = [new RegExp("(CITA) RSS Aggregator/(\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[148] = [new RegExp("(Pocket Casts)$"), 0, 0, 0, 0];
browser[149] = [new RegExp("(Player FM)$"), 0, 0, 0, 0];
browser[150] = [new RegExp("(LG Player|Doppler|FancyMusic|MediaMonkey|Clementine) (\\d+)\\.(\\d+)\\.?([^.\\s]+)?\\.?([^.\\s]+)?"), 0, 0, 0, 0];
browser[151] = [new RegExp("(philpodder)/(\\d+)\\.(\\d+)\\.?([^.\\s]+)?\\.?([^.\\s]+)?"), 0, 0, 0, 0];
browser[152] = [new RegExp("(Player FM|Pocket Casts|DoggCatcher|Spotify|MediaMonkey|MediaGo|BashPodder)"), 0, 0, 0, 0];
browser[153] = [new RegExp("(QuickTime)\\.(\\d+)\\.(\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[154] = [new RegExp("(Kinoma)(\\d+)"), 0, 0, 0, 0];
browser[155] = [new RegExp("(Fancy) Cloud Music (\\d+)\\.(\\d+)"), "FancyMusic", 0, 0, 0];
browser[156] = [new RegExp("EspnDownloadManager"), "ESPN", 0, 0, 0];
browser[157] = [new RegExp("(ESPN) Radio (\\d+)\\.(\\d+)\\.?(\\d+)? ?[rv:]?(\\d+)? "), 0, 0, 0, 0];
browser[158] = [new RegExp("(podracer|jPodder) v ?(\\d+)\\.(\\d+)\\.?(\\d+)?"), 0, 0, 0, 0];
browser[159] = [new RegExp("(ZDM)/(\\d+)\\.(\\d+)[; ]?"), 0, 0, 0, 0];
browser[160] = [new RegExp("(Zune|BeyondPod) (\\d+)\\.?(\\d+)?[\\);]"), 0, 0, 0, 0];
browser[161] = [new RegExp("(WMPlayer)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[162] = [new RegExp("^(Lavf)"), "WMPlayer", 0, 0, 0];
browser[163] = [new RegExp("^(RSSRadio)[ /]?(\\d+)?"), 0, 0, 0, 0];
browser[164] = [new RegExp("(RSS_Radio) (\\d+)\\.(\\d+)"), "RSSRadio", 0, 0, 0];
browser[165] = [new RegExp("(Podkicker) \\S+/(\\d+)\\.(\\d+)\\.(\\d+)"), "Podkicker", 0, 0, 0];
browser[166] = [new RegExp("^(HTC) Streaming Player \\S+ / \\S+ / \\S+ / (\\d+)\\.(\\d+)\\.?(\\d+)?"), 0, 0, 0, 0];
browser[167] = [new RegExp("^(Stitcher)/iOS"), 0, 0, 0, 0];
browser[168] = [new RegExp("^(Stitcher)/Android"), 0, 0, 0, 0];
browser[169] = [new RegExp("^(VLC) .*version (\\d+)\\.(\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[170] = [new RegExp(" (VLC) for"), 0, 0, 0, 0];
browser[171] = [new RegExp("(vlc)/(\\d+)\\.(\\d+)\\.(\\d+)"), "VLC", 0, 0, 0];
browser[172] = [new RegExp("^(foobar)\\S+/([^.\\s]+)\\.([^.\\s]+)?\\.?([^.\\s]+)?"), 0, 0, 0, 0];
browser[173] = [new RegExp("^(Clementine)\\S+ ([^.\\s]+)\\.([^.\\s]+)?\\.?([^.\\s]+)?"), 0, 0, 0, 0];
browser[174] = [new RegExp("(amarok)/([^.\\s]+)\\.([^.\\s]+)?\\.?([^.\\s]+)?"), "Amarok", 0, 0, 0];
browser[175] = [new RegExp("(Custom)-Feed Reader"), 0, 0, 0, 0];
browser[176] = [new RegExp("(iRider|Crazy Browser|SkipStone|iCab|Lunascape|Sleipnir|Maemo Browser) (\\d+)\\.(\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[177] = [new RegExp("(iCab|Lunascape|Opera|Android|Jasmine|Polaris|Microsoft SkyDriveSync|The Bat!) (\\d+)\\.(\\d+)\\.?(\\d+)?"), 0, 0, 0, 0];
browser[178] = [new RegExp("(Kindle)/(\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[179] = [new RegExp("(Android) Donut"), 0, "1", "2", 0];
browser[180] = [new RegExp("(Android) Eclair"), 0, "2", "1", 0];
browser[181] = [new RegExp("(Android) Froyo"), 0, "2", "2", 0];
browser[182] = [new RegExp("(Android) Gingerbread"), 0, "2", "3", 0];
browser[183] = [new RegExp("(Android) Honeycomb"), 0, "3", 0, 0];
browser[184] = [new RegExp("(MSIE) (\\d+)\\.(\\d+).*XBLWP7"), "IE Large Screen", 0, 0, 0];
browser[185] = [new RegExp("(Obigo)InternetBrowser"), 0, 0, 0, 0];
browser[186] = [new RegExp("(Obigo)\\-Browser"), 0, 0, 0, 0];
browser[187] = [new RegExp("(Obigo|OBIGO)[^\\d]*(\\d+)(?:.(\\d+))?"), "Obigo", 0, 0, 0];
browser[188] = [new RegExp("(MAXTHON|Maxthon) (\\d+)\\.(\\d+)"), "Maxthon", 0, 0, 0];
browser[189] = [new RegExp("(Maxthon|MyIE2|Uzbl|Shiira)"), 0, "0", 0, 0];
browser[190] = [new RegExp("(BrowseX) \\((\\d+)\\.(\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[191] = [new RegExp("(NCSA_Mosaic)/(\\d+)\\.(\\d+)"), "NCSA Mosaic", 0, 0, 0];
browser[192] = [new RegExp("(POLARIS)/(\\d+)\\.(\\d+)"), "Polaris", 0, 0, 0];
browser[193] = [new RegExp("(Embider)/(\\d+)\\.(\\d+)"), "Polaris", 0, 0, 0];
browser[194] = [new RegExp("(BonEcho)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+)?"), "Bon Echo", 0, 0, 0];
browser[195] = [new RegExp("(iPod|iPhone|iPad).+Version/(\\d+)\\.(\\d+)(?:\\.(\\d+))?.*[ +]Safari"), "Mobile Safari", 0, 0, 0];
browser[196] = [new RegExp("(iPod|iPhone|iPad).+Version/(\\d+)\\.(\\d+)(?:\\.(\\d+))?"), "Mobile Safari UI/WKWebView", 0, 0, 0];
browser[197] = [new RegExp("(iPod|iPod touch|iPhone|iPad);.*CPU.*OS[ +](\\d+)_(\\d+)(?:_(\\d+))?.*Mobile.*[ +]Safari"), "Mobile Safari", 0, 0, 0];
browser[198] = [new RegExp("(iPod|iPod touch|iPhone|iPad);.*CPU.*OS[ +](\\d+)_(\\d+)(?:_(\\d+))?.*Mobile"), "Mobile Safari UI/WKWebView", 0, 0, 0];
browser[199] = [new RegExp("(iPod|iPhone|iPad).* Safari"), "Mobile Safari", 0, 0, 0];
browser[200] = [new RegExp("(iPod|iPhone|iPad)"), "Mobile Safari UI/WKWebView", 0, 0, 0];
browser[201] = [new RegExp("(AvantGo) (\\d+).(\\d+)"), 0, 0, 0, 0];
browser[202] = [new RegExp("(OneBrowser)/(\\d+).(\\d+)"), "ONE Browser", 0, 0, 0];
browser[203] = [new RegExp("(Avant)"), 0, "1", 0, 0];
browser[204] = [new RegExp("(QtCarBrowser)"), 0, "1", 0, 0];
browser[205] = [new RegExp("^(iBrowser/Mini)(\\d+).(\\d+)"), "iBrowser Mini", 0, 0, 0];
browser[206] = [new RegExp("^(iBrowser|iRAPP)/(\\d+).(\\d+)"), 0, 0, 0, 0];
browser[207] = [new RegExp("^(Nokia)"), "Nokia Services (WAP) Browser", 0, 0, 0];
browser[208] = [new RegExp("(NokiaBrowser)/(\\d+)\\.(\\d+).(\\d+)\\.(\\d+)"), "Nokia Browser", 0, 0, 0];
browser[209] = [new RegExp("(NokiaBrowser)/(\\d+)\\.(\\d+).(\\d+)"), "Nokia Browser", 0, 0, 0];
browser[210] = [new RegExp("(NokiaBrowser)/(\\d+)\\.(\\d+)"), "Nokia Browser", 0, 0, 0];
browser[211] = [new RegExp("(BrowserNG)/(\\d+)\\.(\\d+).(\\d+)"), "Nokia Browser", 0, 0, 0];
browser[212] = [new RegExp("(Series60)/5\\.0"), "Nokia Browser", "7", "0", 0];
browser[213] = [new RegExp("(Series60)/(\\d+)\\.(\\d+)"), "Nokia OSS Browser", 0, 0, 0];
browser[214] = [new RegExp("(S40OviBrowser)/(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)"), "Ovi Browser", 0, 0, 0];
browser[215] = [new RegExp("(Nokia)[EN]?(\\d+)"), 0, 0, 0, 0];
browser[216] = [new RegExp("(PlayBook).+RIM Tablet OS (\\d+)\\.(\\d+)\\.(\\d+)"), "BlackBerry WebKit", 0, 0, 0];
browser[217] = [new RegExp("(Black[bB]erry|BB10).+Version/(\\d+)\\.(\\d+)\\.(\\d+)"), "BlackBerry WebKit", 0, 0, 0];
browser[218] = [new RegExp("(Black[bB]erry)\\s?(\\d+)"), "BlackBerry", 0, 0, 0];
browser[219] = [new RegExp("(OmniWeb)/v(\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[220] = [new RegExp("(Blazer)/(\\d+)\\.(\\d+)"), "Palm Blazer", 0, 0, 0];
browser[221] = [new RegExp("(Pre)/(\\d+)\\.(\\d+)"), "Palm Pre", 0, 0, 0];
browser[222] = [new RegExp("(ELinks)/(\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[223] = [new RegExp("(ELinks) \\((\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[224] = [new RegExp("(Links) \\((\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[225] = [new RegExp("(QtWeb) Internet Browser/(\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[226] = [new RegExp("(PhantomJS)/(\\d+)\\.(\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[227] = [new RegExp("(AppleWebKit)/(\\d+)\\.?(\\d+)?\\+ .* Safari"), "WebKit Nightly", 0, 0, 0];
browser[228] = [new RegExp("(Version)/(\\d+)\\.(\\d+)(?:\\.(\\d+))?.*Safari/"), "Safari", 0, 0, 0];
browser[229] = [new RegExp("(Safari)/\\d+"), 0, 0, 0, 0];
browser[230] = [new RegExp("(OLPC)/Update(\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[231] = [new RegExp("(OLPC)/Update()\\.(\\d+)"), 0, "0", 0, 0];
browser[232] = [new RegExp("(SEMC\\-Browser)/(\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[233] = [new RegExp("(Teleca)"), "Teleca Browser", 0, 0, 0];
browser[234] = [new RegExp("(Phantom)/V(\\d+)\\.(\\d+)"), "Phantom Browser", 0, 0, 0];
browser[235] = [new RegExp("Trident(.*)rv.(\\d+)\\.(\\d+)"), "IE", 0, 0, 0];
browser[236] = [new RegExp("(Espial)/(\\d+)(?:\\.(\\d+))?(?:\\.(\\d+))?"), 0, 0, 0, 0];
browser[237] = [new RegExp("(AppleWebKit)/(\\d+)\\.(\\d+)\\.(\\d+)"), "Apple Mail", 0, 0, 0];
browser[238] = [new RegExp("(Firefox)/(\\d+)\\.(\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[239] = [new RegExp("(Firefox)/(\\d+)\\.(\\d+)(pre|[ab]\\d+[a-z]*)?"), 0, 0, 0, 0];
browser[240] = [new RegExp("([MS]?IE) (\\d+)\\.(\\d+)"), "IE", 0, 0, 0];
browser[241] = [new RegExp("(python-requests)/(\\d+)\\.(\\d+)"), "Python Requests", 0, 0, 0];
browser[242] = [new RegExp("\\b(Windows-Update-Agent|Microsoft-CryptoAPI|SophosUpdateManager|SophosAgent|Debian APT-HTTP|Ubuntu APT-HTTP|libcurl-agent|libwww-perl|urlgrabber|curl|Wget|OpenBSD ftp|jupdate)(?:[ /](\\d+)(?:\\.(\\d+)(?:\\.(\\d+))?)?)?"), 0, 0, 0, 0];
browser[243] = [new RegExp("(Java)[/ ]{0,1}\\d+\\.(\\d+)\\.(\\d+)[_-]*([a-zA-Z0-9]+)*"), 0, 0, 0, 0];
browser[244] = [new RegExp("^(Roku)/DVP-(\\d+)\\.(\\d+)"), 0, 0, 0, 0];
browser[245] = [new RegExp("(Kurio)\\/(\\d+)\\.(\\d+)\\.(\\d+)"), "Kurio App", 0, 0, 0];
browser[246] = [new RegExp("(Wget)/(\\d+)\\.(\\d+)\\.?([ab]?\\d+[a-z]*)"), 0, 0, 0, 0];
browser[247] = [new RegExp("(curl)/(\\d+)\\.(\\d+)\\.(\\d+)"), "cURL", 0, 0, 0];
var device = [];
device[0] = [new RegExp("(Rival IQ, rivaliq.com)"), "Spider", 0, 0, 0];
device[1] = [new RegExp("(?:(?:iPhone|Windows CE|Windows Phone|Android).*(?:(?:Bot|Yeti)-Mobile|YRSpider|BingPreview|bots?/\\d|(?:bot|spider)\\.html)|AdsBot-Google-Mobile.*iPhone)"), "Spider", 0, 0, 0];
device[2] = [new RegExp("(?:DoCoMo|\\bMOT\\b|\\bLG\\b|Nokia|Samsung|SonyEricsson).*(?:(?:Bot|Yeti)-Mobile|bots?/\\d|(?:bot|crawler)\\.html|(?:jump|google|Wukong)bot|ichiro/mobile|/spider|YahooSeeker)"), "Spider", 0, 0, 0];
device[3] = [new RegExp("\\bSmartWatch *\\( *([^;]+) *; *([^;]+) *;"), "$1 $2", 0, 0, 0];
device[4] = [new RegExp("Android Application[^\\-]+ - (Sony) ?(Ericsson)? (.+) \\w+ - "), "$1 $2", 0, 0, 0];
device[5] = [new RegExp("Android Application[^\\-]+ - (?:HTC|HUAWEI|LGE|LENOVO|MEDION|TCT) (HTC|HUAWEI|LG|LENOVO|MEDION|ALCATEL)[ _\\-](.+) \\w+ - "), "$1 $2", 0, 0, 0];
device[6] = [new RegExp("Android Application[^\\-]+ - ([^ ]+) (.+) \\w+ - "), "$1 $2", 0, 0, 0];
device[7] = [new RegExp("; *([BLRQ]C\\d{4}[A-Z]+) +Build/"), "3Q $1", 0, 0, 0];
device[8] = [new RegExp("; *(?:3Q_)([^;/]+) +Build"), "3Q $1", 0, 0, 0];
device[9] = [new RegExp("Android [34].*; *(A100|A101|A110|A200|A210|A211|A500|A501|A510|A511|A700(?: Lite| 3G)?|A701|B1-A71|A1-\\d{3}|B1-\\d{3}|V360|V370|W500|W500P|W501|W501P|W510|W511|W700|Slider SL101|DA22[^;/]+) Build"), "$1", 0, 0, 0];
device[10] = [new RegExp("; *Acer Iconia Tab ([^;/]+) Build"), "$1", 0, 0, 0];
device[11] = [new RegExp("; *(Z1[1235]0|E320[^/]*|S500|S510|Liquid[^;/]*|Iconia A\\d+) Build"), "$1", 0, 0, 0];
device[12] = [new RegExp("; *(Acer |ACER )([^;/]+) Build"), "$1$2", 0, 0, 0];
device[13] = [new RegExp("; *(Advent )?(Vega(?:Bean|Comb)?).* Build"), "$1$2", 0, 0, 0];
device[14] = [new RegExp("; *(Ainol )?((?:NOVO|[Nn]ovo)[^;/]+) Build"), "$1$2", 0, 0, 0];
device[15] = [new RegExp("; *AIRIS[ _\\-]?([^/;\\)]+) *(?:;|\\)|Build)"), "$1", 0, 0, 0];
device[16] = [new RegExp("; *(OnePAD[^;/]+) Build"), "$1", 0, 0, 0];
device[17] = [new RegExp("; *Airpad[ \\-]([^;/]+) Build"), "Airpad $1", 0, 0, 0];
device[18] = [new RegExp("; *(one ?touch) (EVO7|T10|T20) Build"), "Alcatel One Touch $2", 0, 0, 0];
device[19] = [new RegExp("; *(?:alcatel[ _])?(?:(?:one[ _]?touch[ _])|ot[ \\-])([^;/]+);? Build"), "Alcatel One Touch $1", 0, 0, 0];
device[20] = [new RegExp("; *(TCL)[ _]([^;/]+) Build"), "$1 $2", 0, 0, 0];
device[21] = [new RegExp("; *(Vodafone Smart II|Optimus_Madrid) Build"), "Alcatel $1", 0, 0, 0];
device[22] = [new RegExp("; *BASE_Lutea_3 Build"), "Alcatel One Touch 998", 0, 0, 0];
device[23] = [new RegExp("; *BASE_Varia Build"), "Alcatel One Touch 918D", 0, 0, 0];
device[24] = [new RegExp("; *((?:FINE|Fine)\\d[^;/]+) Build"), "$1", 0, 0, 0];
device[25] = [new RegExp("; *(ALLVIEW[ _]?|Allview[ _]?)((?:Speed|SPEED).*) Build/"), "$1$2", 0, 0, 0];
device[26] = [new RegExp("; *(ALLVIEW[ _]?|Allview[ _]?)?(AX1_Shine|AX2_Frenzy) Build"), "$1$2", 0, 0, 0];
device[27] = [new RegExp("; *(ALLVIEW[ _]?|Allview[ _]?)([^;/]*) Build"), "$1$2", 0, 0, 0];
device[28] = [new RegExp("; *(A13-MID) Build"), "$1", 0, 0, 0];
device[29] = [new RegExp("; *(Allwinner)[ _\\-]?([^;/]+) Build"), "$1 $2", 0, 0, 0];
device[30] = [new RegExp("; *(A651|A701B?|A702|A703|A705|A706|A707|A711|A712|A713|A717|A722|A785|A801|A802|A803|A901|A902|A1002|A1003|A1006|A1007|A9701|A9703|Q710|Q80) Build"), "$1", 0, 0, 0];
device[31] = [new RegExp("; *(?:AMOI|Amoi)[ _]([^;/]+) Build"), "Amoi $1", 0, 0, 0];
device[32] = [new RegExp("^(?:AMOI|Amoi)[ _]([^;/]+) Linux"), "Amoi $1", 0, 0, 0];
device[33] = [new RegExp("; *(MW(?:0[789]|10)[^;/]+) Build"), "$1", 0, 0, 0];
device[34] = [new RegExp("; *(G7|M1013|M1015G|M11[CG]?|M-?12[B]?|M15|M19[G]?|M30[ACQ]?|M31[GQ]|M32|M33[GQ]|M36|M37|M38|M701T|M710|M712B|M713|M715G|M716G|M71(?:G|GS|T)?|M72[T]?|M73[T]?|M75[GT]?|M77G|M79T|M7L|M7LN|M81|M810|M81T|M82|M92|M92KS|M92S|M717G|M721|M722G|M723|M725G|M739|M785|M791|M92SK|M93D) Build"), "Aoson $1", 0, 0, 0];
device[35] = [new RegExp("; *Aoson ([^;/]+) Build"), "Aoson $1", 0, 0, 0];
device[36] = [new RegExp("; *[Aa]panda[ _\\-]([^;/]+) Build"), "Apanda $1", 0, 0, 0];
device[37] = [new RegExp("; *(?:ARCHOS|Archos) ?(GAMEPAD.*?)(?: Build|[;/\\(\\)\\-])"), "Archos $1", 0, 0, 0];
device[38] = [new RegExp("ARCHOS; GOGI; ([^;]+);"), "Archos $1", 0, 0, 0];
device[39] = [new RegExp("(?:ARCHOS|Archos)[ _]?(.*?)(?: Build|[;/\\(\\)\\-]|$)"), "Archos $1", 0, 0, 0];
device[40] = [new RegExp("; *(AN(?:7|8|9|10|13)[A-Z0-9]{1,4}) Build"), "Archos $1", 0, 0, 0];
device[41] = [new RegExp("; *(A28|A32|A43|A70(?:BHT|CHT|HB|S|X)|A101(?:B|C|IT)|A7EB|A7EB-WK|101G9|80G9) Build"), "Archos $1", 0, 0, 0];
device[42] = [new RegExp("; *(PAD-FMD[^;/]+) Build"), "$1", 0, 0, 0];
device[43] = [new RegExp("; *(BioniQ) ?([^;/]+) Build"), "$1 $2", 0, 0, 0];
device[44] = [new RegExp("; *(AN\\d[^;/]+|ARCHM\\d+) Build"), "Arnova $1", 0, 0, 0];
device[45] = [new RegExp("; *(?:ARNOVA|Arnova) ?([^;/]+) Build"), "Arnova $1", 0, 0, 0];
device[46] = [new RegExp("; *(?:ASSISTANT )?(AP)-?([1789]\\d{2}[A-Z]{0,2}|80104) Build"), "Assistant $1-$2", 0, 0, 0];
device[47] = [new RegExp("; *(ME17\\d[^;/]*|ME3\\d{2}[^;/]+|K00[A-Z]|Nexus 10|Nexus 7(?: 2013)?|PadFone[^;/]*|Transformer[^;/]*|TF\\d{3}[^;/]*|eeepc) Build"), "Asus $1", 0, 0, 0];
device[48] = [new RegExp("; *ASUS[ _]*([^;/]+) Build"), "Asus $1", 0, 0, 0];
device[49] = [new RegExp("; *Garmin-Asus ([^;/]+) Build"), "Garmin-Asus $1", 0, 0, 0];
device[50] = [new RegExp("; *(Garminfone) Build"), "Garmin $1", 0, 0, 0];
device[51] = [new RegExp("; (@TAB-[^;/]+) Build"), "$1", 0, 0, 0];
device[52] = [new RegExp("; *(T-(?:07|[^0]\\d)[^;/]+) Build"), "$1", 0, 0, 0];
device[53] = [new RegExp("; *(?:Axioo[ _\\-]([^;/]+)|(picopad)[ _\\-]([^;/]+)) Build"), "Axioo $1$2 $3", 0, 0, 0];
device[54] = [new RegExp("; *(V(?:100|700|800)[^;/]*) Build"), "$1", 0, 0, 0];
device[55] = [new RegExp("; *(IBAK\\-[^;/]*) Build"), "$1", 0, 0, 0];
device[56] = [new RegExp("; *(HY5001|HY6501|X12|X21|I5) Build"), "Bedove $1", 0, 0, 0];
device[57] = [new RegExp("; *(JC-[^;/]*) Build"), "Benss $1", 0, 0, 0];
device[58] = [new RegExp("; *(BB) ([^;/]+) Build"), "$1 $2", 0, 0, 0];
device[59] = [new RegExp("; *(BlackBird)[ _](I8.*) Build"), "$1 $2", 0, 0, 0];
device[60] = [new RegExp("; *(BlackBird)[ _](.*) Build"), "$1 $2", 0, 0, 0];
device[61] = [new RegExp("; *([0-9]+BP[EM][^;/]*|Endeavour[^;/]+) Build"), "Blaupunkt $1", 0, 0, 0];
device[62] = [new RegExp("; *((?:BLU|Blu)[ _\\-])([^;/]+) Build"), "$1$2", 0, 0, 0];
device[63] = [new RegExp("; *(?:BMOBILE )?(Blu|BLU|DASH [^;/]+|VIVO 4\\.3|TANK 4\\.5) Build"), "$1", 0, 0, 0];
device[64] = [new RegExp("; *(TOUCH\\d[^;/]+) Build"), "$1", 0, 0, 0];
device[65] = [new RegExp("; *(AX5\\d+) Build"), "$1", 0, 0, 0];
device[66] = [new RegExp("; *([Bb]q) ([^;/]+);? Build"), "$1 $2", 0, 0, 0];
device[67] = [new RegExp("; *(Maxwell [^;/]+) Build"), "$1", 0, 0, 0];
device[68] = [new RegExp("; *((?:B-Tab|B-TAB) ?\\d[^;/]+) Build"), "$1", 0, 0, 0];
device[69] = [new RegExp("; *(Broncho) ([^;/]+) Build"), "$1 $2", 0, 0, 0];
device[70] = [new RegExp("; *CAPTIVA ([^;/]+) Build"), "Captiva $1", 0, 0, 0];
device[71] = [new RegExp("; *(C771|CAL21|IS11CA) Build"), "$1", 0, 0, 0];
device[72] = [new RegExp("; *(?:Cat|CAT) ([^;/]+) Build"), "Cat $1", 0, 0, 0];
device[73] = [new RegExp("; *(?:Cat)(Nova.*) Build"), "Cat $1", 0, 0, 0];
device[74] = [new RegExp("; *(INM8002KP|ADM8000KP_[AB]) Build"), "$1", 0, 0, 0];
device[75] = [new RegExp("; *(?:[Cc]elkon[ _\\*]|CELKON[ _\\*])([^;/\\)]+) ?(?:Build|;|\\))"), "$1", 0, 0, 0];
device[76] = [new RegExp("Build/(?:[Cc]elkon)+_?([^;/_\\)]+)"), "$1", 0, 0, 0];
device[77] = [new RegExp("; *(CT)-?(\\d+) Build"), "$1$2", 0, 0, 0];
device[78] = [new RegExp("; *(A19|A19Q|A105|A107[^;/\\)]*) ?(?:Build|;|\\))"), "$1", 0, 0, 0];
device[79] = [new RegExp("; *(TPC[0-9]{4,5}) Build"), "$1", 0, 0, 0];
device[80] = [new RegExp("; *(Cloudfone)[ _](Excite)([^ ][^;/]+) Build"), "$1 $2 $3", 0, 0, 0];
device[81] = [new RegExp("; *(Excite|ICE)[ _](\\d+[^;/]+) Build"), "Cloudfone $1 $2", 0, 0, 0];
device[82] = [new RegExp("; *(Cloudfone|CloudPad)[ _]([^;/]+) Build"), "$1 $2", 0, 0, 0];
device[83] = [new RegExp("; *((?:Aquila|Clanga|Rapax)[^;/]+) Build"), "$1", 0, 0, 0];
device[84] = [new RegExp("; *(?:CFW-|Kyros )?(MID[0-9]{4}(?:[ABC]|SR|TV)?)(\\(3G\\)-4G| GB 8K| 3G| 8K| GB)? *(?:Build|[;\\)])"), "CobyKyros $1$2", 0, 0, 0];
device[85] = [new RegExp("; *([^;/]*)Coolpad[ _]([^;/]+) Build"), "$1$2", 0, 0, 0];
device[86] = [new RegExp("; *(CUBE[ _])?([KU][0-9]+ ?GT.*|A5300) Build"), "$1$2", 0, 0, 0];
device[87] = [new RegExp("; *CUBOT ([^;/]+) Build"), "$1", 0, 0, 0];
device[88] = [new RegExp("; *(BOBBY) Build"), "$1", 0, 0, 0];
device[89] = [new RegExp("; *(Dslide [^;/]+) Build"), "$1", 0, 0, 0];
device[90] = [new RegExp("; *(XCD)[ _]?(28|35) Build"), "Dell $1$2", 0, 0, 0];
device[91] = [new RegExp("; *(001DL) Build"), "Dell $1", 0, 0, 0];
device[92] = [new RegExp("; *(?:Dell|DELL) (Streak) Build"), "Dell $1", 0, 0, 0];
device[93] = [new RegExp("; *(101DL|GS01|Streak Pro[^;/]*) Build"), "Dell $1", 0, 0, 0];
device[94] = [new RegExp("; *([Ss]treak ?7) Build"), "Dell $1", 0, 0, 0];
device[95] = [new RegExp("; *(Mini-3iX) Build"), "Dell $1", 0, 0, 0];
device[96] = [new RegExp("; *(?:Dell|DELL)[ _](Aero|Venue|Thunder|Mini.*|Streak[ _]Pro) Build"), "Dell $1", 0, 0, 0];
device[97] = [new RegExp("; *Dell[ _]([^;/]+) Build"), "Dell $1", 0, 0, 0];
device[98] = [new RegExp("; *Dell ([^;/]+) Build"), "Dell $1", 0, 0, 0];
device[99] = [new RegExp("; *(TA[CD]-\\d+[^;/]*) Build"), "$1", 0, 0, 0];
device[100] = [new RegExp("; *(iP[789]\\d{2}(?:-3G)?|IP10\\d{2}(?:-8GB)?) Build"), "$1", 0, 0, 0];
device[101] = [new RegExp("; *(AirTab)[ _\\-]([^;/]+) Build"), "$1 $2", 0, 0, 0];
device[102] = [new RegExp("; *(F\\-\\d[^;/]+) Build"), "$1", 0, 0, 0];
device[103] = [new RegExp("; *(HT-03A) Build"), "$1", 0, 0, 0];
device[104] = [new RegExp("; *(HT\\-\\d[^;/]+) Build"), "$1", 0, 0, 0];
device[105] = [new RegExp("; *(L\\-\\d[^;/]+) Build"), "$1", 0, 0, 0];
device[106] = [new RegExp("; *(N\\-\\d[^;/]+) Build"), "$1", 0, 0, 0];
device[107] = [new RegExp("; *(P\\-\\d[^;/]+) Build"), "$1", 0, 0, 0];
device[108] = [new RegExp("; *(SC\\-\\d[^;/]+) Build"), "$1", 0, 0, 0];
device[109] = [new RegExp("; *(SH\\-\\d[^;/]+) Build"), "$1", 0, 0, 0];
device[110] = [new RegExp("; *(SO\\-\\d[^;/]+) Build"), "$1", 0, 0, 0];
device[111] = [new RegExp("; *(T\\-0[12][^;/]+) Build"), "$1", 0, 0, 0];
device[112] = [new RegExp("; *(DOOV)[ _]([^;/]+) Build"), "$1 $2", 0, 0, 0];
device[113] = [new RegExp("; *(Enot|ENOT)[ -]?([^;/]+) Build"), "$1 $2", 0, 0, 0];
device[114] = [new RegExp("; *[^;/]+ Build/(?:CROSS|Cross)+[ _\\-]([^\\)]+)"), "CROSS $1", 0, 0, 0];
device[115] = [new RegExp("; *(CROSS|Cross)[ _\\-]([^;/]+) Build"), "$1 $2", 0, 0, 0];
device[116] = [new RegExp("; *Explay[_ ](.+?)(?:[\\)]| Build)"), "$1", 0, 0, 0];
device[117] = [new RegExp("; *(IQ.*) Build"), "$1", 0, 0, 0];
device[118] = [new RegExp("; *(Fly|FLY)[ _](IQ[^;]+|F[34]\\d+[^;]*);? Build"), "$1 $2", 0, 0, 0];
device[119] = [new RegExp("; *(M532|Q572|FJL21) Build/"), "$1", 0, 0, 0];
device[120] = [new RegExp("; *(G1) Build"), "$1", 0, 0, 0];
device[121] = [new RegExp("; *(Geeksphone) ([^;/]+) Build"), "$1 $2", 0, 0, 0];
device[122] = [new RegExp("; *(G[^F]?FIVE) ([^;/]+) Build"), "$1 $2", 0, 0, 0];
device[123] = [new RegExp("; *(Gionee)[ _\\-]([^;/]+)(?:/[^;/]+)? Build"), "$1 $2", 0, 0, 0];
device[124] = [new RegExp("; *(GN\\d+[A-Z]?|INFINITY_PASSION|Ctrl_V1) Build"), "Gionee $1", 0, 0, 0];
device[125] = [new RegExp("; *(E3) Build/JOP40D"), "Gionee $1", 0, 0, 0];
device[126] = [new RegExp("\\sGIONEE[-\\s_](\\w*)"), "Gionee $1", 0, 0, 0];
device[127] = [new RegExp("; *((?:FONE|QUANTUM|INSIGNIA) \\d+[^;/]*|PLAYTAB) Build"), "GoClever $1", 0, 0, 0];
device[128] = [new RegExp("; *GOCLEVER ([^;/]+) Build"), "GoClever $1", 0, 0, 0];
device[129] = [new RegExp("; *(Glass \\d+) Build"), "$1", 0, 0, 0];
device[130] = [new RegExp("; *(Pixel \\w+) Build"), "$1", 0, 0, 0];
device[131] = [new RegExp("; *(GSmart)[ -]([^/]+) Build"), "$1 $2", 0, 0, 0];
device[132] = [new RegExp("; *(imx5[13]_[^/]+) Build"), "Freescale $1", 0, 0, 0];
device[133] = [new RegExp("; *Haier[ _\\-]([^/]+) Build"), "Haier $1", 0, 0, 0];
device[134] = [new RegExp("; *(PAD1016) Build"), "Haipad $1", 0, 0, 0];
device[135] = [new RegExp("; *(M701|M7|M8|M9) Build"), "Haipad $1", 0, 0, 0];
device[136] = [new RegExp("; *(SN\\d+T[^;\\)/]*)(?: Build|[;\\)])"), "Hannspree $1", 0, 0, 0];
device[137] = [new RegExp("Build/HCL ME Tablet ([^;\\)]+)[\\);]"), "HCLme $1", 0, 0, 0];
device[138] = [new RegExp("; *([^;\\/]+) Build/HCL"), "HCLme $1", 0, 0, 0];
device[139] = [new RegExp("; *(MID-?\\d{4}C[EM]) Build"), "Hena $1", 0, 0, 0];
device[140] = [new RegExp("; *(EG\\d{2,}|HS-[^;/]+|MIRA[^;/]+) Build"), "Hisense $1", 0, 0, 0];
device[141] = [new RegExp("; *(andromax[^;/]+) Build"), "Hisense $1", 0, 0, 0];
device[142] = [new RegExp("; *(?:AMAZE[ _](S\\d+)|(S\\d+)[ _]AMAZE) Build"), "AMAZE $1$2", 0, 0, 0];
device[143] = [new RegExp("; *(PlayBook) Build"), "HP $1", 0, 0, 0];
device[144] = [new RegExp("; *HP ([^/]+) Build"), "HP $1", 0, 0, 0];
device[145] = [new RegExp("; *([^/]+_tenderloin) Build"), "HP TouchPad", 0, 0, 0];
device[146] = [new RegExp("; *(HUAWEI |Huawei-)?([UY][^;/]+) Build/(?:Huawei|HUAWEI)([UY][^\\);]+)\\)"), "$1$2", 0, 0, 0];
device[147] = [new RegExp("; *([^;/]+) Build[/ ]Huawei(MT1-U06|[A-Z]+\\d+[^\\);]+)[^\\);]*\\)"), "$1", 0, 0, 0];
device[148] = [new RegExp("; *(S7|M860) Build"), "$1", 0, 0, 0];
device[149] = [new RegExp("; *((?:HUAWEI|Huawei)[ \\-]?)(MediaPad) Build"), "$1$2", 0, 0, 0];
device[150] = [new RegExp("; *((?:HUAWEI[ _]?|Huawei[ _])?Ascend[ _])([^;/]+) Build"), "$1$2", 0, 0, 0];
device[151] = [new RegExp("; *((?:HUAWEI|Huawei)[ _\\-]?)((?:G700-|MT-)[^;/]+) Build"), "$1$2", 0, 0, 0];
device[152] = [new RegExp("; *((?:HUAWEI|Huawei)[ _\\-]?)([^;/]+) Build"), "$1$2", 0, 0, 0];
device[153] = [new RegExp("; *(MediaPad[^;]+|SpringBoard) Build/Huawei"), "$1", 0, 0, 0];
device[154] = [new RegExp("; *([^;]+) Build/(?:Huawei|HUAWEI)"), "$1", 0, 0, 0];
device[155] = [new RegExp("; *([Uu])([89]\\d{3}) Build"), "$1$2", 0, 0, 0];
device[156] = [new RegExp("; *(?:Ideos |IDEOS )(S7) Build"), "Huawei Ideos$1", 0, 0, 0];
device[157] = [new RegExp("; *(?:Ideos |IDEOS )([^;/]+\\s*|\\s*)Build"), "Huawei Ideos$1", 0, 0, 0];
device[158] = [new RegExp("; *(Orange Daytona|Pulse|Pulse Mini|Vodafone 858|C8500|C8600|C8650|C8660|Nexus 6P|ATH-.+?) Build[/ ]"), "Huawei $1", 0, 0, 0];
device[159] = [new RegExp("; *HTC[ _]([^;]+); Windows Phone"), "HTC $1", 0, 0, 0];
device[160] = [new RegExp("; *(?:HTC[ _/])+([^ _/]+)(?:[/\\\\]1\\.0 | V|/| +)\\d+\\.\\d[\\d\\.]*(?: *Build|\\))"), "HTC $1", 0, 0, 0];
device[161] = [new RegExp("; *(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+))?(?:[/\\\\]1\\.0 | V|/| +)\\d+\\.\\d[\\d\\.]*(?: *Build|\\))"), "HTC $1 $2", 0, 0, 0];
device[162] = [new RegExp("; *(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+))?)?(?:[/\\\\]1\\.0 | V|/| +)\\d+\\.\\d[\\d\\.]*(?: *Build|\\))"), "HTC $1 $2 $3", 0, 0, 0];
device[163] = [new RegExp("; *(?:HTC[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+))?)?)?(?:[/\\\\]1\\.0 | V|/| +)\\d+\\.\\d[\\d\\.]*(?: *Build|\\))"), "HTC $1 $2 $3 $4", 0, 0, 0];
device[164] = [new RegExp("; *(?:(?:HTC|htc)(?:_blocked)*[ _/])+([^ _/;]+)(?: *Build|[;\\)]| - )"), "HTC $1", 0, 0, 0];
device[165] = [new RegExp("; *(?:(?:HTC|htc)(?:_blocked)*[ _/])+([^ _/]+)(?:[ _/]([^ _/;\\)]+))?(?: *Build|[;\\)]| - )"), "HTC $1 $2", 0, 0, 0];
device[166] = [new RegExp("; *(?:(?:HTC|htc)(?:_blocked)*[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/;\\)]+))?)?(?: *Build|[;\\)]| - )"), "HTC $1 $2 $3", 0, 0, 0];
device[167] = [new RegExp("; *(?:(?:HTC|htc)(?:_blocked)*[ _/])+([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ _/]+)(?:[ _/]([^ /;]+))?)?)?(?: *Build|[;\\)]| - )"), "HTC $1 $2 $3 $4", 0, 0, 0];
device[168] = [new RegExp("HTC Streaming Player [^\\/]*/[^\\/]*/ htc_([^/]+) /"), "HTC $1", 0, 0, 0];
device[169] = [new RegExp("(?:[;,] *|^)(?:htccn_chs-)?HTC[ _-]?([^;]+?)(?: *Build|clay|Android|-?Mozilla| Opera| Profile| UNTRUSTED|[;/\\(\\)]|$)"), "HTC $1", 0, 0, 0];
device[170] = [new RegExp("; *(A6277|ADR6200|ADR6300|ADR6350|ADR6400[A-Z]*|ADR6425[A-Z]*|APX515CKT|ARIA|Desire[^_ ]*|Dream|EndeavorU|Eris|Evo|Flyer|HD2|Hero|HERO200|Hero CDMA|HTL21|Incredible|Inspire[A-Z0-9]*|Legend|Liberty|Nexus ?(?:One|HD2)|One|One S C2|One[ _]?(?:S|V|X\\+?)\\w*|PC36100|PG06100|PG86100|S31HT|Sensation|Wildfire)(?: Build|[/;\\(\\)])"), "HTC $1", 0, 0, 0];
device[171] = [new RegExp("; *(ADR6200|ADR6400L|ADR6425LVW|Amaze|DesireS?|EndeavorU|Eris|EVO|Evo\\d[A-Z]+|HD2|IncredibleS?|Inspire[A-Z0-9]*|Inspire[A-Z0-9]*|Sensation[A-Z0-9]*|Wildfire)[ _-](.+?)(?:[/;\\)]|Build|MIUI|1\\.0)"), "HTC $1 $2", 0, 0, 0];
device[172] = [new RegExp("; *HYUNDAI (T\\d[^/]*) Build"), "Hyundai $1", 0, 0, 0];
device[173] = [new RegExp("; *HYUNDAI ([^;/]+) Build"), "Hyundai $1", 0, 0, 0];
device[174] = [new RegExp("; *(X700|Hold X|MB-6900) Build"), "Hyundai $1", 0, 0, 0];
device[175] = [new RegExp("; *(?:iBall[ _\\-])?(Andi)[ _]?(\\d[^;/]*) Build"), "$1 $2", 0, 0, 0];
device[176] = [new RegExp("; *(IBall)(?:[ _]([^;/]+)|) Build"), "$1 $2", 0, 0, 0];
device[177] = [new RegExp("; *(NT-\\d+[^ ;/]*|Net[Tt]AB [^;/]+|Mercury [A-Z]+|iconBIT)(?: S/N:[^;/]+)? Build"), "$1", 0, 0, 0];
device[178] = [new RegExp("; *(IMO)[ _]([^;/]+) Build"), "$1 $2", 0, 0, 0];
device[179] = [new RegExp("; *i-?mobile[ _]([^/]+) Build/"), "i-mobile $1", 0, 0, 0];
device[180] = [new RegExp("; *(i-(?:style|note)[^/]*) Build/"), "i-mobile $1", 0, 0, 0];
device[181] = [new RegExp("; *(ImPAD) ?(\\d+(?:.)*) Build"), "$1 $2", 0, 0, 0];
device[182] = [new RegExp("; *(Infinix)[ _]([^;/]+) Build"), "$1 $2", 0, 0, 0];
device[183] = [new RegExp("; *(Informer)[ \\-]([^;/]+) Build"), "$1 $2", 0, 0, 0];
device[184] = [new RegExp("; *(TAB) ?([78][12]4) Build"), "Intenso $1", 0, 0, 0];
device[185] = [new RegExp("; *(?:Intex[ _])?(AQUA|Aqua)([ _\\.\\-])([^;/]+) *(?:Build|;)"), "$1$2$3", 0, 0, 0];
device[186] = [new RegExp("; *(?:INTEX|Intex)(?:[_ ]([^\\ _;/]+))(?:[_ ]([^\\ _;/]+))? *(?:Build|;)"), "$1 $2", 0, 0, 0];
device[187] = [new RegExp("; *([iI]Buddy)[ _]?(Connect)(?:_|\\?_| )?([^;/]*) *(?:Build|;)"), "$1 $2 $3", 0, 0, 0];
device[188] = [new RegExp("; *(I-Buddy)[ _]([^;/]+) *(?:Build|;)"), "$1 $2", 0, 0, 0];
device[189] = [new RegExp("; *(iOCEAN) ([^/]+) Build"), "$1 $2", 0, 0, 0];
device[190] = [new RegExp("; *(TP\\d+(?:\\.\\d+)?\\-\\d[^;/]+) Build"), "ionik $1", 0, 0, 0];
device[191] = [new RegExp("; *(M702pro) Build"), "$1", 0, 0, 0];
device[192] = [new RegExp("; *(DE88Plus|MD70) Build"), "$1", 0, 0, 0];
device[193] = [new RegExp("; *IVIO[_\\-]([^;/]+) Build"), "$1", 0, 0, 0];
device[194] = [new RegExp("; *(TPC-\\d+|JAY-TECH) Build"), "$1", 0, 0, 0];
device[195] = [new RegExp("; *(JY-[^;/]+|G[234]S?) Build"), "$1", 0, 0, 0];
device[196] = [new RegExp("; *(JXD)[ _\\-]([^;/]+) Build"), "$1 $2", 0, 0, 0];
device[197] = [new RegExp("; *Karbonn[ _]?([^;/]+) *(?:Build|;)"), "$1", 0, 0, 0];
device[198] = [new RegExp("; *([^;]+) Build/Karbonn"), "$1", 0, 0, 0];
device[199] = [new RegExp("; *(A11|A39|A37|A34|ST8|ST10|ST7|Smart Tab3|Smart Tab2|Titanium S\\d) +Build"), "$1", 0, 0, 0];
device[200] = [new RegExp("; *(IS01|IS03|IS05|IS\\d{2}SH) Build"), "$1", 0, 0, 0];
device[201] = [new RegExp("; *(IS04) Build"), "$1", 0, 0, 0];
device[202] = [new RegExp("; *(IS06|IS\\d{2}PT) Build"), "$1", 0, 0, 0];
device[203] = [new RegExp("; *(IS11S) Build"), "$1", 0, 0, 0];
device[204] = [new RegExp("; *(IS11CA) Build"), "$1", 0, 0, 0];
device[205] = [new RegExp("; *(IS11LG) Build"), "$1", 0, 0, 0];
device[206] = [new RegExp("; *(IS11N) Build"), "$1", 0, 0, 0];
device[207] = [new RegExp("; *(IS11PT) Build"), "$1", 0, 0, 0];
device[208] = [new RegExp("; *(IS12F) Build"), "$1", 0, 0, 0];
device[209] = [new RegExp("; *(IS12M) Build"), "$1", 0, 0, 0];
device[210] = [new RegExp("; *(IS12S) Build"), "$1", 0, 0, 0];
device[211] = [new RegExp("; *(ISW11F) Build"), "$1", 0, 0, 0];
device[212] = [new RegExp("; *(ISW11HT) Build"), "$1", 0, 0, 0];
device[213] = [new RegExp("; *(ISW11K) Build"), "$1", 0, 0, 0];
device[214] = [new RegExp("; *(ISW11M) Build"), "$1", 0, 0, 0];
device[215] = [new RegExp("; *(ISW11SC) Build"), "$1", 0, 0, 0];
device[216] = [new RegExp("; *(ISW12HT) Build"), "$1", 0, 0, 0];
device[217] = [new RegExp("; *(ISW13HT) Build"), "$1", 0, 0, 0];
device[218] = [new RegExp("; *(ISW?[0-9]{2}[A-Z]{0,2}) Build"), "$1", 0, 0, 0];
device[219] = [new RegExp("; *(INFOBAR [^;/]+) Build"), "$1", 0, 0, 0];
device[220] = [new RegExp("; *(JOYPAD|Joypad)[ _]([^;/]+) Build/"), "$1 $2", 0, 0, 0];
device[221] = [new RegExp("; *(Vox|VOX|Arc|K080) Build/"), "$1", 0, 0, 0];
device[222] = [new RegExp("\\b(Kobo Touch)\\b"), "$1", 0, 0, 0];
device[223] = [new RegExp("; *(K-Touch)[ _]([^;/]+) Build"), "$1 $2", 0, 0, 0];
device[224] = [new RegExp("; *((?:EV|KM)-S\\d+[A-Z]?) Build"), "$1", 0, 0, 0];
device[225] = [new RegExp("; *(Zio|Hydro|Torque|Event|EVENT|Echo|Milano|Rise|URBANO PROGRESSO|WX04K|WX06K|WX10K|KYL21|101K|C5[12]\\d{2}) Build/"), "$1", 0, 0, 0];
device[226] = [new RegExp("; *(?:LAVA[ _])?IRIS[ _\\-]?([^/;\\)]+) *(?:;|\\)|Build)"), "Iris $1", 0, 0, 0];
device[227] = [new RegExp("; *LAVA[ _]([^;/]+) Build"), "$1", 0, 0, 0];
device[228] = [new RegExp("; *(?:(Aspire A1)|(?:LEMON|Lemon)[ _]([^;/]+))_? Build"), "Lemon $1$2", 0, 0, 0];
device[229] = [new RegExp("; *(TAB-1012) Build/"), "Lenco $1", 0, 0, 0];
device[230] = [new RegExp("; Lenco ([^;/]+) Build/"), "Lenco $1", 0, 0, 0];
device[231] = [new RegExp("; *(A1_07|A2107A-H|S2005A-H|S1-37AH0) Build"), "$1", 0, 0, 0];
device[232] = [new RegExp("; *(Idea[Tp]ab)[ _]([^;/]+);? Build"), "Lenovo $1 $2", 0, 0, 0];
device[233] = [new RegExp("; *(Idea(?:Tab|pad)) ?([^;/]+) Build"), "Lenovo $1 $2", 0, 0, 0];
device[234] = [new RegExp("; *(ThinkPad) ?(Tablet) Build/"), "Lenovo $1 $2", 0, 0, 0];
device[235] = [new RegExp("; *(?:LNV-)?(?:=?[Ll]enovo[ _\\-]?|LENOVO[ _])+(.+?)(?:Build|[;/\\)])"), "Lenovo $1", 0, 0, 0];
device[236] = [new RegExp("[;,] (?:Vodafone )?(SmartTab) ?(II) ?(\\d+) Build/"), "Lenovo $1 $2 $3", 0, 0, 0];
device[237] = [new RegExp("; *(?:Ideapad )?K1 Build/"), "Lenovo Ideapad K1", 0, 0, 0];
device[238] = [new RegExp("; *(3GC101|3GW10[01]|A390) Build/"), "$1", 0, 0, 0];
device[239] = [new RegExp("\\b(?:Lenovo|LENOVO)+[ _\\-]?([^,;:/ ]+)"), "Lenovo $1", 0, 0, 0];
device[240] = [new RegExp("; *(MFC\\d+)[A-Z]{2}([^;,/]*),? Build"), "$1$2", 0, 0, 0];
device[241] = [new RegExp("; *(E[34][0-9]{2}|LS[6-8][0-9]{2}|VS[6-9][0-9]+[^;/]+|Nexus 4|Nexus 5X?|GT540f?|Optimus (?:2X|G|4X HD)|OptimusX4HD) *(?:Build|;)"), "$1", 0, 0, 0];
device[242] = [new RegExp("[;:] *(L-\\d+[A-Z]|LGL\\d+[A-Z]?)(?:/V\\d+)? *(?:Build|[;\\)])"), "$1", 0, 0, 0];
device[243] = [new RegExp("; *(LG-)([A-Z]{1,2}\\d{2,}[^,;/\\)\\(]*?)(?:Build| V\\d+|[,;/\\)\\(]|$)"), "$1$2", 0, 0, 0];
device[244] = [new RegExp("; *(LG[ \\-]|LG)([^;/]