helpers.php 51 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918
  1. <?php
  2. /**
  3. * 助手函数
  4. *
  5. * @author mybsdc <[email protected]>
  6. * @date 2019/3/3
  7. * @time 16:34
  8. */
  9. use Luolongfei\App\Exceptions\LlfException;
  10. use Luolongfei\Libs\Argv;
  11. use Luolongfei\Libs\Config;
  12. use Luolongfei\Libs\Log;
  13. use Luolongfei\Libs\Env;
  14. use Luolongfei\Libs\Lang;
  15. use Luolongfei\Libs\PhpColor;
  16. use Luolongfei\App\Console\MigrateEnvFile;
  17. use Luolongfei\App\Console\Upgrade;
  18. if (!function_exists('config')) {
  19. /**
  20. * 获取配置
  21. *
  22. * @param string $key 键,支持点式访问
  23. * @param string $default 默认值
  24. *
  25. * @return array|mixed
  26. */
  27. function config($key = '', $default = null)
  28. {
  29. return Config::getInstance()->get($key, $default);
  30. }
  31. }
  32. if (!function_exists('lang')) {
  33. /**
  34. * 读取语言包
  35. *
  36. * @param string $key 键,支持点式访问
  37. *
  38. * @return array|mixed|null
  39. */
  40. function lang($key = '')
  41. {
  42. return Lang::getInstance()->get($key);
  43. }
  44. }
  45. if (!function_exists('system_log')) {
  46. /**
  47. * 写日志
  48. *
  49. * @param $content
  50. * @param array $response
  51. * @param string $fileName
  52. * @description 受支持的着色标签
  53. * 'reset', 'bold', 'dark', 'italic', 'underline', 'blink', 'reverse', 'concealed', 'default', 'black', 'red',
  54. * 'green', 'yellow', 'blue', 'magenta', 'cyan', 'light_gray', 'dark_gray', 'light_red', 'light_green',
  55. * 'light_yellow', 'light_blue', 'light_magenta', 'light_cyan', 'white', 'bg_default', 'bg_black', 'bg_red',
  56. * 'bg_green', 'bg_yellow', 'bg_blue', 'bg_magenta', 'bg_cyan', 'bg_light_gray', 'bg_dark_gray', 'bg_light_red',
  57. * 'bg_light_green','bg_light_yellow', 'bg_light_blue', 'bg_light_magenta', 'bg_light_cyan', 'bg_white'
  58. *
  59. * system_log('<light_magenta>颜色 light_magenta</light_magenta>');
  60. */
  61. function system_log($content, array $response = [], $fileName = '')
  62. {
  63. try {
  64. # 云函数只有 /tmp 目录可写
  65. $path = IS_SCF ? '/tmp/' : sprintf('%s/logs/%s/', ROOT_PATH, date('Y-m'));
  66. $file = $path . ($fileName ?: date('d')) . '.log';
  67. if (!is_dir($path)) {
  68. mkdir($path, 0777, true);
  69. chmod($path, 0777);
  70. }
  71. $handle = fopen($file, 'a'); // 追加而非覆盖
  72. if (!filesize($file)) {
  73. chmod($file, 0666);
  74. }
  75. $msg = sprintf(
  76. "[%s] %s %s\n",
  77. date('Y-m-d H:i:s'),
  78. is_string($content) ? $content : json_encode($content),
  79. $response ? json_encode($response, JSON_UNESCAPED_UNICODE) : '');
  80. // 在 Github Actions 上运行,过滤敏感信息
  81. if (env('ON_GITHUB_ACTIONS')) {
  82. $msg = preg_replace_callback('/(?P<secret>[\w-.]{1,4}?)(?=@[\w-.]+)/i', function ($m) {
  83. return str_ireplace($m['secret'], str_repeat('*', strlen($m['secret'])), $m['secret']);
  84. }, $msg);
  85. }
  86. // 尝试为消息着色
  87. $c = PhpColor::getInstance()->getColorInstance();
  88. echo $c($msg)->colorize();
  89. // 干掉着色标签
  90. $msg = strip_tags($msg); // 不完整或者破损标签将导致更多的数据被删除
  91. fwrite($handle, $msg);
  92. fclose($handle);
  93. flush();
  94. } catch (\Exception $e) {
  95. // do nothing
  96. }
  97. }
  98. }
  99. if (!function_exists('is_locked')) {
  100. /**
  101. * 检查任务是否已被锁定
  102. *
  103. * @param string $taskName
  104. * @param bool $always 是否被永久锁定
  105. *
  106. * @return bool
  107. * @throws Exception
  108. */
  109. function is_locked($taskName = '', $always = false)
  110. {
  111. try {
  112. $lock = sprintf(
  113. '%s/num_limit/%s/%s.lock',
  114. APP_PATH,
  115. $always ? 'always' : date('Y-m-d'),
  116. $taskName
  117. );
  118. return file_exists($lock);
  119. } catch (\Exception $e) {
  120. system_log(sprintf('检查任务%s是否锁定时出错,错误原因:%s', $taskName, $e->getMessage()));
  121. }
  122. return false;
  123. }
  124. }
  125. if (!function_exists('lock_task')) {
  126. /**
  127. * 锁定任务
  128. *
  129. * 防止重复执行
  130. *
  131. * @param string $taskName
  132. * @param bool $always 是否永久锁定
  133. *
  134. * @return bool
  135. */
  136. function lock_task($taskName = '', $always = false)
  137. {
  138. try {
  139. $lock = sprintf(
  140. '%s/num_limit/%s/%s.lock',
  141. APP_PATH,
  142. $always ? 'always' : date('Y-m-d'),
  143. $taskName
  144. );
  145. $path = dirname($lock);
  146. if (!is_dir($path)) {
  147. mkdir($path, 0777, true);
  148. chmod($path, 0777);
  149. }
  150. if (file_exists($lock)) {
  151. return true;
  152. }
  153. $handle = fopen($lock, 'a'); // 追加而非覆盖
  154. if (!filesize($lock)) {
  155. chmod($lock, 0666);
  156. }
  157. fwrite($handle, sprintf(
  158. "Locked at %s.\n",
  159. date('Y-m-d H:i:s')
  160. )
  161. );
  162. fclose($handle);
  163. Log::info(sprintf('%s已被锁定,此任务%s已不会再执行,请知悉', $taskName, $always ? '' : '今天内'));
  164. } catch (\Exception $e) {
  165. system_log(sprintf('创建锁定任务文件%s时出错,错误原因:%s', $lock, $e->getMessage()));
  166. return false;
  167. }
  168. return true;
  169. }
  170. }
  171. if (!function_exists('env')) {
  172. /**
  173. * 获取环境变量值
  174. *
  175. * @param string $key
  176. * @param string $default 默认值
  177. *
  178. * @return array | bool | false | null | string
  179. */
  180. function env($key = '', $default = null)
  181. {
  182. return Env::getInstance()->get($key, $default);
  183. }
  184. }
  185. if (!function_exists('get_argv')) {
  186. /**
  187. * 获取命令行传参
  188. *
  189. * @param string $name
  190. * @param string $default 默认值
  191. *
  192. * @return mixed|string
  193. */
  194. function get_argv(string $name, string $default = '')
  195. {
  196. return Argv::getInstance()->get($name, $default);
  197. }
  198. }
  199. if (!function_exists('system_check')) {
  200. /**
  201. * 检查环境是否满足要求
  202. *
  203. * @throws LlfException
  204. */
  205. function system_check()
  206. {
  207. // 由于各种云函数目前支持的最大的 PHP 版本为 7.2,故此处暂时不强制要求升级 PHP 7.3 以获得更好的兼容性
  208. if (version_compare(PHP_VERSION, '7.2.0') < 0) {
  209. throw new LlfException(34520006, ['7.3', PHP_VERSION]);
  210. }
  211. // 如果是在 云函数 或 Heroku 部署,则不需要检查这几项
  212. if (IS_SCF || (int)env('IS_HEROKU') === 1) {
  213. system_log(lang('100009'));
  214. system_log(lang('100010'));
  215. system_log(lang('100011'));
  216. } else {
  217. if (!function_exists('putenv')) {
  218. throw new LlfException(34520005);
  219. }
  220. $envFile = ROOT_PATH . '/.env';
  221. if (!file_exists($envFile)) {
  222. throw new LlfException(copy(ROOT_PATH . '/.env.example', $envFile) ? 34520007 : 34520008);
  223. }
  224. // 检查当前 .env 文件版本是否过低,过低自动升级
  225. MigrateEnvFile::getInstance()->handle();
  226. }
  227. // 是否有新版可用
  228. if (config('new_version_detection')) {
  229. Upgrade::getInstance()->handle();
  230. } else {
  231. system_log(lang('100012'));
  232. }
  233. if (!extension_loaded('curl')) {
  234. throw new LlfException(34520010);
  235. }
  236. }
  237. }
  238. if (!function_exists('get_local_num')) {
  239. /**
  240. * 获取当地数字
  241. *
  242. * @param string|int $num
  243. *
  244. * @return string
  245. */
  246. function get_local_num($num)
  247. {
  248. $num = (string)$num;
  249. if (is_chinese()) {
  250. return $num;
  251. }
  252. // 英文数字规则
  253. $lastDigit = substr($num, -1);
  254. switch ($lastDigit) {
  255. case '1':
  256. return $num . 'st';
  257. case '2':
  258. return $num . 'nd';
  259. case '3':
  260. return $num . 'rd';
  261. default:
  262. return $num . 'th';
  263. }
  264. }
  265. }
  266. if (!function_exists('is_chinese')) {
  267. /**
  268. * 判断当前语言环境
  269. *
  270. * @return bool
  271. */
  272. function is_chinese()
  273. {
  274. return config('custom_language', 'zh') === 'zh';
  275. }
  276. }
  277. if (!function_exists('get_ip_info')) {
  278. /**
  279. * 获取 ip 信息
  280. *
  281. * @return string
  282. */
  283. function get_ip_info()
  284. {
  285. return \Luolongfei\Libs\IP::getInstance()->get();
  286. }
  287. }
  288. if (!function_exists('get_random_user_agent')) {
  289. /**
  290. * 获取随机 user-agent
  291. *
  292. * @return string
  293. */
  294. function get_random_user_agent()
  295. {
  296. $chromeVersions = [
  297. '103.0.0.0',
  298. '74.0.3729.129',
  299. '76.0.3780.3',
  300. '76.0.3780.2',
  301. '74.0.3729.128',
  302. '76.0.3780.1',
  303. '76.0.3780.0',
  304. '75.0.3770.15',
  305. '74.0.3729.127',
  306. '74.0.3729.126',
  307. '76.0.3779.1',
  308. '76.0.3779.0',
  309. '75.0.3770.14',
  310. '74.0.3729.125',
  311. '76.0.3778.1',
  312. '76.0.3778.0',
  313. '75.0.3770.13',
  314. '74.0.3729.124',
  315. '74.0.3729.123',
  316. '73.0.3683.121',
  317. '76.0.3777.1',
  318. '76.0.3777.0',
  319. '75.0.3770.12',
  320. '74.0.3729.122',
  321. '76.0.3776.4',
  322. '75.0.3770.11',
  323. '74.0.3729.121',
  324. '76.0.3776.3',
  325. '76.0.3776.2',
  326. '73.0.3683.120',
  327. '74.0.3729.120',
  328. '74.0.3729.119',
  329. '74.0.3729.118',
  330. '76.0.3776.1',
  331. '76.0.3776.0',
  332. '76.0.3775.5',
  333. '75.0.3770.10',
  334. '74.0.3729.117',
  335. '76.0.3775.4',
  336. '76.0.3775.3',
  337. '74.0.3729.116',
  338. '75.0.3770.9',
  339. '76.0.3775.2',
  340. '76.0.3775.1',
  341. '76.0.3775.0',
  342. '75.0.3770.8',
  343. '74.0.3729.115',
  344. '74.0.3729.114',
  345. '76.0.3774.1',
  346. '76.0.3774.0',
  347. '75.0.3770.7',
  348. '74.0.3729.113',
  349. '74.0.3729.112',
  350. '74.0.3729.111',
  351. '76.0.3773.1',
  352. '76.0.3773.0',
  353. '75.0.3770.6',
  354. '74.0.3729.110',
  355. '74.0.3729.109',
  356. '76.0.3772.1',
  357. '76.0.3772.0',
  358. '75.0.3770.5',
  359. '74.0.3729.108',
  360. '74.0.3729.107',
  361. '76.0.3771.1',
  362. '76.0.3771.0',
  363. '75.0.3770.4',
  364. '74.0.3729.106',
  365. '74.0.3729.105',
  366. '75.0.3770.3',
  367. '74.0.3729.104',
  368. '74.0.3729.103',
  369. '74.0.3729.102',
  370. '75.0.3770.2',
  371. '74.0.3729.101',
  372. '75.0.3770.1',
  373. '75.0.3770.0',
  374. '74.0.3729.100',
  375. '75.0.3769.5',
  376. '75.0.3769.4',
  377. '74.0.3729.99',
  378. '75.0.3769.3',
  379. '75.0.3769.2',
  380. '75.0.3768.6',
  381. '74.0.3729.98',
  382. '75.0.3769.1',
  383. '75.0.3769.0',
  384. '74.0.3729.97',
  385. '73.0.3683.119',
  386. '73.0.3683.118',
  387. '74.0.3729.96',
  388. '75.0.3768.5',
  389. '75.0.3768.4',
  390. '75.0.3768.3',
  391. '75.0.3768.2',
  392. '74.0.3729.95',
  393. '74.0.3729.94',
  394. '75.0.3768.1',
  395. '75.0.3768.0',
  396. '74.0.3729.93',
  397. '74.0.3729.92',
  398. '73.0.3683.117',
  399. '74.0.3729.91',
  400. '75.0.3766.3',
  401. '74.0.3729.90',
  402. '75.0.3767.2',
  403. '75.0.3767.1',
  404. '75.0.3767.0',
  405. '74.0.3729.89',
  406. '73.0.3683.116',
  407. '75.0.3766.2',
  408. '74.0.3729.88',
  409. '75.0.3766.1',
  410. '75.0.3766.0',
  411. '74.0.3729.87',
  412. '73.0.3683.115',
  413. '74.0.3729.86',
  414. '75.0.3765.1',
  415. '75.0.3765.0',
  416. '74.0.3729.85',
  417. '73.0.3683.114',
  418. '74.0.3729.84',
  419. '75.0.3764.1',
  420. '75.0.3764.0',
  421. '74.0.3729.83',
  422. '73.0.3683.113',
  423. '75.0.3763.2',
  424. '75.0.3761.4',
  425. '74.0.3729.82',
  426. '75.0.3763.1',
  427. '75.0.3763.0',
  428. '74.0.3729.81',
  429. '73.0.3683.112',
  430. '75.0.3762.1',
  431. '75.0.3762.0',
  432. '74.0.3729.80',
  433. '75.0.3761.3',
  434. '74.0.3729.79',
  435. '73.0.3683.111',
  436. '75.0.3761.2',
  437. '74.0.3729.78',
  438. '74.0.3729.77',
  439. '75.0.3761.1',
  440. '75.0.3761.0',
  441. '73.0.3683.110',
  442. '74.0.3729.76',
  443. '74.0.3729.75',
  444. '75.0.3760.0',
  445. '74.0.3729.74',
  446. '75.0.3759.8',
  447. '75.0.3759.7',
  448. '75.0.3759.6',
  449. '74.0.3729.73',
  450. '75.0.3759.5',
  451. '74.0.3729.72',
  452. '73.0.3683.109',
  453. '75.0.3759.4',
  454. '75.0.3759.3',
  455. '74.0.3729.71',
  456. '75.0.3759.2',
  457. '74.0.3729.70',
  458. '73.0.3683.108',
  459. '74.0.3729.69',
  460. '75.0.3759.1',
  461. '75.0.3759.0',
  462. '74.0.3729.68',
  463. '73.0.3683.107',
  464. '74.0.3729.67',
  465. '75.0.3758.1',
  466. '75.0.3758.0',
  467. '74.0.3729.66',
  468. '73.0.3683.106',
  469. '74.0.3729.65',
  470. '75.0.3757.1',
  471. '75.0.3757.0',
  472. '74.0.3729.64',
  473. '73.0.3683.105',
  474. '74.0.3729.63',
  475. '75.0.3756.1',
  476. '75.0.3756.0',
  477. '74.0.3729.62',
  478. '73.0.3683.104',
  479. '75.0.3755.3',
  480. '75.0.3755.2',
  481. '73.0.3683.103',
  482. '75.0.3755.1',
  483. '75.0.3755.0',
  484. '74.0.3729.61',
  485. '73.0.3683.102',
  486. '74.0.3729.60',
  487. '75.0.3754.2',
  488. '74.0.3729.59',
  489. '75.0.3753.4',
  490. '74.0.3729.58',
  491. '75.0.3754.1',
  492. '75.0.3754.0',
  493. '74.0.3729.57',
  494. '73.0.3683.101',
  495. '75.0.3753.3',
  496. '75.0.3752.2',
  497. '75.0.3753.2',
  498. '74.0.3729.56',
  499. '75.0.3753.1',
  500. '75.0.3753.0',
  501. '74.0.3729.55',
  502. '73.0.3683.100',
  503. '74.0.3729.54',
  504. '75.0.3752.1',
  505. '75.0.3752.0',
  506. '74.0.3729.53',
  507. '73.0.3683.99',
  508. '74.0.3729.52',
  509. '75.0.3751.1',
  510. '75.0.3751.0',
  511. '74.0.3729.51',
  512. '73.0.3683.98',
  513. '74.0.3729.50',
  514. '75.0.3750.0',
  515. '74.0.3729.49',
  516. '74.0.3729.48',
  517. '74.0.3729.47',
  518. '75.0.3749.3',
  519. '74.0.3729.46',
  520. '73.0.3683.97',
  521. '75.0.3749.2',
  522. '74.0.3729.45',
  523. '75.0.3749.1',
  524. '75.0.3749.0',
  525. '74.0.3729.44',
  526. '73.0.3683.96',
  527. '74.0.3729.43',
  528. '74.0.3729.42',
  529. '75.0.3748.1',
  530. '75.0.3748.0',
  531. '74.0.3729.41',
  532. '75.0.3747.1',
  533. '73.0.3683.95',
  534. '75.0.3746.4',
  535. '74.0.3729.40',
  536. '74.0.3729.39',
  537. '75.0.3747.0',
  538. '75.0.3746.3',
  539. '75.0.3746.2',
  540. '74.0.3729.38',
  541. '75.0.3746.1',
  542. '75.0.3746.0',
  543. '74.0.3729.37',
  544. '73.0.3683.94',
  545. '75.0.3745.5',
  546. '75.0.3745.4',
  547. '75.0.3745.3',
  548. '75.0.3745.2',
  549. '74.0.3729.36',
  550. '75.0.3745.1',
  551. '75.0.3745.0',
  552. '75.0.3744.2',
  553. '74.0.3729.35',
  554. '73.0.3683.93',
  555. '74.0.3729.34',
  556. '75.0.3744.1',
  557. '75.0.3744.0',
  558. '74.0.3729.33',
  559. '73.0.3683.92',
  560. '74.0.3729.32',
  561. '74.0.3729.31',
  562. '73.0.3683.91',
  563. '75.0.3741.2',
  564. '75.0.3740.5',
  565. '74.0.3729.30',
  566. '75.0.3741.1',
  567. '75.0.3741.0',
  568. '74.0.3729.29',
  569. '75.0.3740.4',
  570. '73.0.3683.90',
  571. '74.0.3729.28',
  572. '75.0.3740.3',
  573. '73.0.3683.89',
  574. '75.0.3740.2',
  575. '74.0.3729.27',
  576. '75.0.3740.1',
  577. '75.0.3740.0',
  578. '74.0.3729.26',
  579. '73.0.3683.88',
  580. '73.0.3683.87',
  581. '74.0.3729.25',
  582. '75.0.3739.1',
  583. '75.0.3739.0',
  584. '73.0.3683.86',
  585. '74.0.3729.24',
  586. '73.0.3683.85',
  587. '75.0.3738.4',
  588. '75.0.3738.3',
  589. '75.0.3738.2',
  590. '75.0.3738.1',
  591. '75.0.3738.0',
  592. '74.0.3729.23',
  593. '73.0.3683.84',
  594. '74.0.3729.22',
  595. '74.0.3729.21',
  596. '75.0.3737.1',
  597. '75.0.3737.0',
  598. '74.0.3729.20',
  599. '73.0.3683.83',
  600. '74.0.3729.19',
  601. '75.0.3736.1',
  602. '75.0.3736.0',
  603. '74.0.3729.18',
  604. '73.0.3683.82',
  605. '74.0.3729.17',
  606. '75.0.3735.1',
  607. '75.0.3735.0',
  608. '74.0.3729.16',
  609. '73.0.3683.81',
  610. '75.0.3734.1',
  611. '75.0.3734.0',
  612. '74.0.3729.15',
  613. '73.0.3683.80',
  614. '74.0.3729.14',
  615. '75.0.3733.1',
  616. '75.0.3733.0',
  617. '75.0.3732.1',
  618. '74.0.3729.13',
  619. '74.0.3729.12',
  620. '73.0.3683.79',
  621. '74.0.3729.11',
  622. '75.0.3732.0',
  623. '74.0.3729.10',
  624. '73.0.3683.78',
  625. '74.0.3729.9',
  626. '74.0.3729.8',
  627. '74.0.3729.7',
  628. '75.0.3731.3',
  629. '75.0.3731.2',
  630. '75.0.3731.0',
  631. '74.0.3729.6',
  632. '73.0.3683.77',
  633. '73.0.3683.76',
  634. '75.0.3730.5',
  635. '75.0.3730.4',
  636. '73.0.3683.75',
  637. '74.0.3729.5',
  638. '73.0.3683.74',
  639. '75.0.3730.3',
  640. '75.0.3730.2',
  641. '74.0.3729.4',
  642. '73.0.3683.73',
  643. '73.0.3683.72',
  644. '75.0.3730.1',
  645. '75.0.3730.0',
  646. '74.0.3729.3',
  647. '73.0.3683.71',
  648. '74.0.3729.2',
  649. '73.0.3683.70',
  650. '74.0.3729.1',
  651. '74.0.3729.0',
  652. '74.0.3726.4',
  653. '73.0.3683.69',
  654. '74.0.3726.3',
  655. '74.0.3728.0',
  656. '74.0.3726.2',
  657. '73.0.3683.68',
  658. '74.0.3726.1',
  659. '74.0.3726.0',
  660. '74.0.3725.4',
  661. '73.0.3683.67',
  662. '73.0.3683.66',
  663. '74.0.3725.3',
  664. '74.0.3725.2',
  665. '74.0.3725.1',
  666. '74.0.3724.8',
  667. '74.0.3725.0',
  668. '73.0.3683.65',
  669. '74.0.3724.7',
  670. '74.0.3724.6',
  671. '74.0.3724.5',
  672. '74.0.3724.4',
  673. '74.0.3724.3',
  674. '74.0.3724.2',
  675. '74.0.3724.1',
  676. '74.0.3724.0',
  677. '73.0.3683.64',
  678. '74.0.3723.1',
  679. '74.0.3723.0',
  680. '73.0.3683.63',
  681. '74.0.3722.1',
  682. '74.0.3722.0',
  683. '73.0.3683.62',
  684. '74.0.3718.9',
  685. '74.0.3702.3',
  686. '74.0.3721.3',
  687. '74.0.3721.2',
  688. '74.0.3721.1',
  689. '74.0.3721.0',
  690. '74.0.3720.6',
  691. '73.0.3683.61',
  692. '72.0.3626.122',
  693. '73.0.3683.60',
  694. '74.0.3720.5',
  695. '72.0.3626.121',
  696. '74.0.3718.8',
  697. '74.0.3720.4',
  698. '74.0.3720.3',
  699. '74.0.3718.7',
  700. '74.0.3720.2',
  701. '74.0.3720.1',
  702. '74.0.3720.0',
  703. '74.0.3718.6',
  704. '74.0.3719.5',
  705. '73.0.3683.59',
  706. '74.0.3718.5',
  707. '74.0.3718.4',
  708. '74.0.3719.4',
  709. '74.0.3719.3',
  710. '74.0.3719.2',
  711. '74.0.3719.1',
  712. '73.0.3683.58',
  713. '74.0.3719.0',
  714. '73.0.3683.57',
  715. '73.0.3683.56',
  716. '74.0.3718.3',
  717. '73.0.3683.55',
  718. '74.0.3718.2',
  719. '74.0.3718.1',
  720. '74.0.3718.0',
  721. '73.0.3683.54',
  722. '74.0.3717.2',
  723. '73.0.3683.53',
  724. '74.0.3717.1',
  725. '74.0.3717.0',
  726. '73.0.3683.52',
  727. '74.0.3716.1',
  728. '74.0.3716.0',
  729. '73.0.3683.51',
  730. '74.0.3715.1',
  731. '74.0.3715.0',
  732. '73.0.3683.50',
  733. '74.0.3711.2',
  734. '74.0.3714.2',
  735. '74.0.3713.3',
  736. '74.0.3714.1',
  737. '74.0.3714.0',
  738. '73.0.3683.49',
  739. '74.0.3713.1',
  740. '74.0.3713.0',
  741. '72.0.3626.120',
  742. '73.0.3683.48',
  743. '74.0.3712.2',
  744. '74.0.3712.1',
  745. '74.0.3712.0',
  746. '73.0.3683.47',
  747. '72.0.3626.119',
  748. '73.0.3683.46',
  749. '74.0.3710.2',
  750. '72.0.3626.118',
  751. '74.0.3711.1',
  752. '74.0.3711.0',
  753. '73.0.3683.45',
  754. '72.0.3626.117',
  755. '74.0.3710.1',
  756. '74.0.3710.0',
  757. '73.0.3683.44',
  758. '72.0.3626.116',
  759. '74.0.3709.1',
  760. '74.0.3709.0',
  761. '74.0.3704.9',
  762. '73.0.3683.43',
  763. '72.0.3626.115',
  764. '74.0.3704.8',
  765. '74.0.3704.7',
  766. '74.0.3708.0',
  767. '74.0.3706.7',
  768. '74.0.3704.6',
  769. '73.0.3683.42',
  770. '72.0.3626.114',
  771. '74.0.3706.6',
  772. '72.0.3626.113',
  773. '74.0.3704.5',
  774. '74.0.3706.5',
  775. '74.0.3706.4',
  776. '74.0.3706.3',
  777. '74.0.3706.2',
  778. '74.0.3706.1',
  779. '74.0.3706.0',
  780. '73.0.3683.41',
  781. '72.0.3626.112',
  782. '74.0.3705.1',
  783. '74.0.3705.0',
  784. '73.0.3683.40',
  785. '72.0.3626.111',
  786. '73.0.3683.39',
  787. '74.0.3704.4',
  788. '73.0.3683.38',
  789. '74.0.3704.3',
  790. '74.0.3704.2',
  791. '74.0.3704.1',
  792. '74.0.3704.0',
  793. '73.0.3683.37',
  794. '72.0.3626.110',
  795. '72.0.3626.109',
  796. '74.0.3703.3',
  797. '74.0.3703.2',
  798. '73.0.3683.36',
  799. '74.0.3703.1',
  800. '74.0.3703.0',
  801. '73.0.3683.35',
  802. '72.0.3626.108',
  803. '74.0.3702.2',
  804. '74.0.3699.3',
  805. '74.0.3702.1',
  806. '74.0.3702.0',
  807. '73.0.3683.34',
  808. '72.0.3626.107',
  809. '73.0.3683.33',
  810. '74.0.3701.1',
  811. '74.0.3701.0',
  812. '73.0.3683.32',
  813. '73.0.3683.31',
  814. '72.0.3626.105',
  815. '74.0.3700.1',
  816. '74.0.3700.0',
  817. '73.0.3683.29',
  818. '72.0.3626.103',
  819. '74.0.3699.2',
  820. '74.0.3699.1',
  821. '74.0.3699.0',
  822. '73.0.3683.28',
  823. '72.0.3626.102',
  824. '73.0.3683.27',
  825. '73.0.3683.26',
  826. '74.0.3698.0',
  827. '74.0.3696.2',
  828. '72.0.3626.101',
  829. '73.0.3683.25',
  830. '74.0.3696.1',
  831. '74.0.3696.0',
  832. '74.0.3694.8',
  833. '72.0.3626.100',
  834. '74.0.3694.7',
  835. '74.0.3694.6',
  836. '74.0.3694.5',
  837. '74.0.3694.4',
  838. '72.0.3626.99',
  839. '72.0.3626.98',
  840. '74.0.3694.3',
  841. '73.0.3683.24',
  842. '72.0.3626.97',
  843. '72.0.3626.96',
  844. '72.0.3626.95',
  845. '73.0.3683.23',
  846. '72.0.3626.94',
  847. '73.0.3683.22',
  848. '73.0.3683.21',
  849. '72.0.3626.93',
  850. '74.0.3694.2',
  851. '72.0.3626.92',
  852. '74.0.3694.1',
  853. '74.0.3694.0',
  854. '74.0.3693.6',
  855. '73.0.3683.20',
  856. '72.0.3626.91',
  857. '74.0.3693.5',
  858. '74.0.3693.4',
  859. '74.0.3693.3',
  860. '74.0.3693.2',
  861. '73.0.3683.19',
  862. '74.0.3693.1',
  863. '74.0.3693.0',
  864. '73.0.3683.18',
  865. '72.0.3626.90',
  866. '74.0.3692.1',
  867. '74.0.3692.0',
  868. '73.0.3683.17',
  869. '72.0.3626.89',
  870. '74.0.3687.3',
  871. '74.0.3691.1',
  872. '74.0.3691.0',
  873. '73.0.3683.16',
  874. '72.0.3626.88',
  875. '72.0.3626.87',
  876. '73.0.3683.15',
  877. '74.0.3690.1',
  878. '74.0.3690.0',
  879. '73.0.3683.14',
  880. '72.0.3626.86',
  881. '73.0.3683.13',
  882. '73.0.3683.12',
  883. '74.0.3689.1',
  884. '74.0.3689.0',
  885. '73.0.3683.11',
  886. '72.0.3626.85',
  887. '73.0.3683.10',
  888. '72.0.3626.84',
  889. '73.0.3683.9',
  890. '74.0.3688.1',
  891. '74.0.3688.0',
  892. '73.0.3683.8',
  893. '72.0.3626.83',
  894. '74.0.3687.2',
  895. '74.0.3687.1',
  896. '74.0.3687.0',
  897. '73.0.3683.7',
  898. '72.0.3626.82',
  899. '74.0.3686.4',
  900. '72.0.3626.81',
  901. '74.0.3686.3',
  902. '74.0.3686.2',
  903. '74.0.3686.1',
  904. '74.0.3686.0',
  905. '73.0.3683.6',
  906. '72.0.3626.80',
  907. '74.0.3685.1',
  908. '74.0.3685.0',
  909. '73.0.3683.5',
  910. '72.0.3626.79',
  911. '74.0.3684.1',
  912. '74.0.3684.0',
  913. '73.0.3683.4',
  914. '72.0.3626.78',
  915. '72.0.3626.77',
  916. '73.0.3683.3',
  917. '73.0.3683.2',
  918. '72.0.3626.76',
  919. '73.0.3683.1',
  920. '73.0.3683.0',
  921. '72.0.3626.75',
  922. '71.0.3578.141',
  923. '73.0.3682.1',
  924. '73.0.3682.0',
  925. '72.0.3626.74',
  926. '71.0.3578.140',
  927. '73.0.3681.4',
  928. '73.0.3681.3',
  929. '73.0.3681.2',
  930. '73.0.3681.1',
  931. '73.0.3681.0',
  932. '72.0.3626.73',
  933. '71.0.3578.139',
  934. '72.0.3626.72',
  935. '72.0.3626.71',
  936. '73.0.3680.1',
  937. '73.0.3680.0',
  938. '72.0.3626.70',
  939. '71.0.3578.138',
  940. '73.0.3678.2',
  941. '73.0.3679.1',
  942. '73.0.3679.0',
  943. '72.0.3626.69',
  944. '71.0.3578.137',
  945. '73.0.3678.1',
  946. '73.0.3678.0',
  947. '71.0.3578.136',
  948. '73.0.3677.1',
  949. '73.0.3677.0',
  950. '72.0.3626.68',
  951. '72.0.3626.67',
  952. '71.0.3578.135',
  953. '73.0.3676.1',
  954. '73.0.3676.0',
  955. '73.0.3674.2',
  956. '72.0.3626.66',
  957. '71.0.3578.134',
  958. '73.0.3674.1',
  959. '73.0.3674.0',
  960. '72.0.3626.65',
  961. '71.0.3578.133',
  962. '73.0.3673.2',
  963. '73.0.3673.1',
  964. '73.0.3673.0',
  965. '72.0.3626.64',
  966. '71.0.3578.132',
  967. '72.0.3626.63',
  968. '72.0.3626.62',
  969. '72.0.3626.61',
  970. '72.0.3626.60',
  971. '73.0.3672.1',
  972. '73.0.3672.0',
  973. '72.0.3626.59',
  974. '71.0.3578.131',
  975. '73.0.3671.3',
  976. '73.0.3671.2',
  977. '73.0.3671.1',
  978. '73.0.3671.0',
  979. '72.0.3626.58',
  980. '71.0.3578.130',
  981. '73.0.3670.1',
  982. '73.0.3670.0',
  983. '72.0.3626.57',
  984. '71.0.3578.129',
  985. '73.0.3669.1',
  986. '73.0.3669.0',
  987. '72.0.3626.56',
  988. '71.0.3578.128',
  989. '73.0.3668.2',
  990. '73.0.3668.1',
  991. '73.0.3668.0',
  992. '72.0.3626.55',
  993. '71.0.3578.127',
  994. '73.0.3667.2',
  995. '73.0.3667.1',
  996. '73.0.3667.0',
  997. '72.0.3626.54',
  998. '71.0.3578.126',
  999. '73.0.3666.1',
  1000. '73.0.3666.0',
  1001. '72.0.3626.53',
  1002. '71.0.3578.125',
  1003. '73.0.3665.4',
  1004. '73.0.3665.3',
  1005. '72.0.3626.52',
  1006. '73.0.3665.2',
  1007. '73.0.3664.4',
  1008. '73.0.3665.1',
  1009. '73.0.3665.0',
  1010. '72.0.3626.51',
  1011. '71.0.3578.124',
  1012. '72.0.3626.50',
  1013. '73.0.3664.3',
  1014. '73.0.3664.2',
  1015. '73.0.3664.1',
  1016. '73.0.3664.0',
  1017. '73.0.3663.2',
  1018. '72.0.3626.49',
  1019. '71.0.3578.123',
  1020. '73.0.3663.1',
  1021. '73.0.3663.0',
  1022. '72.0.3626.48',
  1023. '71.0.3578.122',
  1024. '73.0.3662.1',
  1025. '73.0.3662.0',
  1026. '72.0.3626.47',
  1027. '71.0.3578.121',
  1028. '73.0.3661.1',
  1029. '72.0.3626.46',
  1030. '73.0.3661.0',
  1031. '72.0.3626.45',
  1032. '71.0.3578.120',
  1033. '73.0.3660.2',
  1034. '73.0.3660.1',
  1035. '73.0.3660.0',
  1036. '72.0.3626.44',
  1037. '71.0.3578.119',
  1038. '73.0.3659.1',
  1039. '73.0.3659.0',
  1040. '72.0.3626.43',
  1041. '71.0.3578.118',
  1042. '73.0.3658.1',
  1043. '73.0.3658.0',
  1044. '72.0.3626.42',
  1045. '71.0.3578.117',
  1046. '73.0.3657.1',
  1047. '73.0.3657.0',
  1048. '72.0.3626.41',
  1049. '71.0.3578.116',
  1050. '73.0.3656.1',
  1051. '73.0.3656.0',
  1052. '72.0.3626.40',
  1053. '71.0.3578.115',
  1054. '73.0.3655.1',
  1055. '73.0.3655.0',
  1056. '72.0.3626.39',
  1057. '71.0.3578.114',
  1058. '73.0.3654.1',
  1059. '73.0.3654.0',
  1060. '72.0.3626.38',
  1061. '71.0.3578.113',
  1062. '73.0.3653.1',
  1063. '73.0.3653.0',
  1064. '72.0.3626.37',
  1065. '71.0.3578.112',
  1066. '73.0.3652.1',
  1067. '73.0.3652.0',
  1068. '72.0.3626.36',
  1069. '71.0.3578.111',
  1070. '73.0.3651.1',
  1071. '73.0.3651.0',
  1072. '72.0.3626.35',
  1073. '71.0.3578.110',
  1074. '73.0.3650.1',
  1075. '73.0.3650.0',
  1076. '72.0.3626.34',
  1077. '71.0.3578.109',
  1078. '73.0.3649.1',
  1079. '73.0.3649.0',
  1080. '72.0.3626.33',
  1081. '71.0.3578.108',
  1082. '73.0.3648.2',
  1083. '73.0.3648.1',
  1084. '73.0.3648.0',
  1085. '72.0.3626.32',
  1086. '71.0.3578.107',
  1087. '73.0.3647.2',
  1088. '73.0.3647.1',
  1089. '73.0.3647.0',
  1090. '72.0.3626.31',
  1091. '71.0.3578.106',
  1092. '73.0.3635.3',
  1093. '73.0.3646.2',
  1094. '73.0.3646.1',
  1095. '73.0.3646.0',
  1096. '72.0.3626.30',
  1097. '71.0.3578.105',
  1098. '72.0.3626.29',
  1099. '73.0.3645.2',
  1100. '73.0.3645.1',
  1101. '73.0.3645.0',
  1102. '72.0.3626.28',
  1103. '71.0.3578.104',
  1104. '72.0.3626.27',
  1105. '72.0.3626.26',
  1106. '72.0.3626.25',
  1107. '72.0.3626.24',
  1108. '73.0.3644.0',
  1109. '73.0.3643.2',
  1110. '72.0.3626.23',
  1111. '71.0.3578.103',
  1112. '73.0.3643.1',
  1113. '73.0.3643.0',
  1114. '72.0.3626.22',
  1115. '71.0.3578.102',
  1116. '73.0.3642.1',
  1117. '73.0.3642.0',
  1118. '72.0.3626.21',
  1119. '71.0.3578.101',
  1120. '73.0.3641.1',
  1121. '73.0.3641.0',
  1122. '72.0.3626.20',
  1123. '71.0.3578.100',
  1124. '72.0.3626.19',
  1125. '73.0.3640.1',
  1126. '73.0.3640.0',
  1127. '72.0.3626.18',
  1128. '73.0.3639.1',
  1129. '71.0.3578.99',
  1130. '73.0.3639.0',
  1131. '72.0.3626.17',
  1132. '73.0.3638.2',
  1133. '72.0.3626.16',
  1134. '73.0.3638.1',
  1135. '73.0.3638.0',
  1136. '72.0.3626.15',
  1137. '71.0.3578.98',
  1138. '73.0.3635.2',
  1139. '71.0.3578.97',
  1140. '73.0.3637.1',
  1141. '73.0.3637.0',
  1142. '72.0.3626.14',
  1143. '71.0.3578.96',
  1144. '71.0.3578.95',
  1145. '72.0.3626.13',
  1146. '71.0.3578.94',
  1147. '73.0.3636.2',
  1148. '71.0.3578.93',
  1149. '73.0.3636.1',
  1150. '73.0.3636.0',
  1151. '72.0.3626.12',
  1152. '71.0.3578.92',
  1153. '73.0.3635.1',
  1154. '73.0.3635.0',
  1155. '72.0.3626.11',
  1156. '71.0.3578.91',
  1157. '73.0.3634.2',
  1158. '73.0.3634.1',
  1159. '73.0.3634.0',
  1160. '72.0.3626.10',
  1161. '71.0.3578.90',
  1162. '71.0.3578.89',
  1163. '73.0.3633.2',
  1164. '73.0.3633.1',
  1165. '73.0.3633.0',
  1166. '72.0.3610.4',
  1167. '72.0.3626.9',
  1168. '71.0.3578.88',
  1169. '73.0.3632.5',
  1170. '73.0.3632.4',
  1171. '73.0.3632.3',
  1172. '73.0.3632.2',
  1173. '73.0.3632.1',
  1174. '73.0.3632.0',
  1175. '72.0.3626.8',
  1176. '71.0.3578.87',
  1177. '73.0.3631.2',
  1178. '73.0.3631.1',
  1179. '73.0.3631.0',
  1180. '72.0.3626.7',
  1181. '71.0.3578.86',
  1182. '72.0.3626.6',
  1183. '73.0.3630.1',
  1184. '73.0.3630.0',
  1185. '72.0.3626.5',
  1186. '71.0.3578.85',
  1187. '72.0.3626.4',
  1188. '73.0.3628.3',
  1189. '73.0.3628.2',
  1190. '73.0.3629.1',
  1191. '73.0.3629.0',
  1192. '72.0.3626.3',
  1193. '71.0.3578.84',
  1194. '73.0.3628.1',
  1195. '73.0.3628.0',
  1196. '71.0.3578.83',
  1197. '73.0.3627.1',
  1198. '73.0.3627.0',
  1199. '72.0.3626.2',
  1200. '71.0.3578.82',
  1201. '71.0.3578.81',
  1202. '71.0.3578.80',
  1203. '72.0.3626.1',
  1204. '72.0.3626.0',
  1205. '71.0.3578.79',
  1206. '70.0.3538.124',
  1207. '71.0.3578.78',
  1208. '72.0.3623.4',
  1209. '72.0.3625.2',
  1210. '72.0.3625.1',
  1211. '72.0.3625.0',
  1212. '71.0.3578.77',
  1213. '70.0.3538.123',
  1214. '72.0.3624.4',
  1215. '72.0.3624.3',
  1216. '72.0.3624.2',
  1217. '71.0.3578.76',
  1218. '72.0.3624.1',
  1219. '72.0.3624.0',
  1220. '72.0.3623.3',
  1221. '71.0.3578.75',
  1222. '70.0.3538.122',
  1223. '71.0.3578.74',
  1224. '72.0.3623.2',
  1225. '72.0.3610.3',
  1226. '72.0.3623.1',
  1227. '72.0.3623.0',
  1228. '72.0.3622.3',
  1229. '72.0.3622.2',
  1230. '71.0.3578.73',
  1231. '70.0.3538.121',
  1232. '72.0.3622.1',
  1233. '72.0.3622.0',
  1234. '71.0.3578.72',
  1235. '70.0.3538.120',
  1236. '72.0.3621.1',
  1237. '72.0.3621.0',
  1238. '71.0.3578.71',
  1239. '70.0.3538.119',
  1240. '72.0.3620.1',
  1241. '72.0.3620.0',
  1242. '71.0.3578.70',
  1243. '70.0.3538.118',
  1244. '71.0.3578.69',
  1245. '72.0.3619.1',
  1246. '72.0.3619.0',
  1247. '71.0.3578.68',
  1248. '70.0.3538.117',
  1249. '71.0.3578.67',
  1250. '72.0.3618.1',
  1251. '72.0.3618.0',
  1252. '71.0.3578.66',
  1253. '70.0.3538.116',
  1254. '72.0.3617.1',
  1255. '72.0.3617.0',
  1256. '71.0.3578.65',
  1257. '70.0.3538.115',
  1258. '72.0.3602.3',
  1259. '71.0.3578.64',
  1260. '72.0.3616.1',
  1261. '72.0.3616.0',
  1262. '71.0.3578.63',
  1263. '70.0.3538.114',
  1264. '71.0.3578.62',
  1265. '72.0.3615.1',
  1266. '72.0.3615.0',
  1267. '71.0.3578.61',
  1268. '70.0.3538.113',
  1269. '72.0.3614.1',
  1270. '72.0.3614.0',
  1271. '71.0.3578.60',
  1272. '70.0.3538.112',
  1273. '72.0.3613.1',
  1274. '72.0.3613.0',
  1275. '71.0.3578.59',
  1276. '70.0.3538.111',
  1277. '72.0.3612.2',
  1278. '72.0.3612.1',
  1279. '72.0.3612.0',
  1280. '70.0.3538.110',
  1281. '71.0.3578.58',
  1282. '70.0.3538.109',
  1283. '72.0.3611.2',
  1284. '72.0.3611.1',
  1285. '72.0.3611.0',
  1286. '71.0.3578.57',
  1287. '70.0.3538.108',
  1288. '72.0.3610.2',
  1289. '71.0.3578.56',
  1290. '71.0.3578.55',
  1291. '72.0.3610.1',
  1292. '72.0.3610.0',
  1293. '71.0.3578.54',
  1294. '70.0.3538.107',
  1295. '71.0.3578.53',
  1296. '72.0.3609.3',
  1297. '71.0.3578.52',
  1298. '72.0.3609.2',
  1299. '71.0.3578.51',
  1300. '72.0.3608.5',
  1301. '72.0.3609.1',
  1302. '72.0.3609.0',
  1303. '71.0.3578.50',
  1304. '70.0.3538.106',
  1305. '72.0.3608.4',
  1306. '72.0.3608.3',
  1307. '72.0.3608.2',
  1308. '71.0.3578.49',
  1309. '72.0.3608.1',
  1310. '72.0.3608.0',
  1311. '70.0.3538.105',
  1312. '71.0.3578.48',
  1313. '72.0.3607.1',
  1314. '72.0.3607.0',
  1315. '71.0.3578.47',
  1316. '70.0.3538.104',
  1317. '72.0.3606.2',
  1318. '72.0.3606.1',
  1319. '72.0.3606.0',
  1320. '71.0.3578.46',
  1321. '70.0.3538.103',
  1322. '70.0.3538.102',
  1323. '72.0.3605.3',
  1324. '72.0.3605.2',
  1325. '72.0.3605.1',
  1326. '72.0.3605.0',
  1327. '71.0.3578.45',
  1328. '70.0.3538.101',
  1329. '71.0.3578.44',
  1330. '71.0.3578.43',
  1331. '70.0.3538.100',
  1332. '70.0.3538.99',
  1333. '71.0.3578.42',
  1334. '72.0.3604.1',
  1335. '72.0.3604.0',
  1336. '71.0.3578.41',
  1337. '70.0.3538.98',
  1338. '71.0.3578.40',
  1339. '72.0.3603.2',
  1340. '72.0.3603.1',
  1341. '72.0.3603.0',
  1342. '71.0.3578.39',
  1343. '70.0.3538.97',
  1344. '72.0.3602.2',
  1345. '71.0.3578.38',
  1346. '71.0.3578.37',
  1347. '72.0.3602.1',
  1348. '72.0.3602.0',
  1349. '71.0.3578.36',
  1350. '70.0.3538.96',
  1351. '72.0.3601.1',
  1352. '72.0.3601.0',
  1353. '71.0.3578.35',
  1354. '70.0.3538.95',
  1355. '72.0.3600.1',
  1356. '72.0.3600.0',
  1357. '71.0.3578.34',
  1358. '70.0.3538.94',
  1359. '72.0.3599.3',
  1360. '72.0.3599.2',
  1361. '72.0.3599.1',
  1362. '72.0.3599.0',
  1363. '71.0.3578.33',
  1364. '70.0.3538.93',
  1365. '72.0.3598.1',
  1366. '72.0.3598.0',
  1367. '71.0.3578.32',
  1368. '70.0.3538.87',
  1369. '72.0.3597.1',
  1370. '72.0.3597.0',
  1371. '72.0.3596.2',
  1372. '71.0.3578.31',
  1373. '70.0.3538.86',
  1374. '71.0.3578.30',
  1375. '71.0.3578.29',
  1376. '72.0.3596.1',
  1377. '72.0.3596.0',
  1378. '71.0.3578.28',
  1379. '70.0.3538.85',
  1380. '72.0.3595.2',
  1381. '72.0.3591.3',
  1382. '72.0.3595.1',
  1383. '72.0.3595.0',
  1384. '71.0.3578.27',
  1385. '70.0.3538.84',
  1386. '72.0.3594.1',
  1387. '72.0.3594.0',
  1388. '71.0.3578.26',
  1389. '70.0.3538.83',
  1390. '72.0.3593.2',
  1391. '72.0.3593.1',
  1392. '72.0.3593.0',
  1393. '71.0.3578.25',
  1394. '70.0.3538.82',
  1395. '72.0.3589.3',
  1396. '72.0.3592.2',
  1397. '72.0.3592.1',
  1398. '72.0.3592.0',
  1399. '71.0.3578.24',
  1400. '72.0.3589.2',
  1401. '70.0.3538.81',
  1402. '70.0.3538.80',
  1403. '72.0.3591.2',
  1404. '72.0.3591.1',
  1405. '72.0.3591.0',
  1406. '71.0.3578.23',
  1407. '70.0.3538.79',
  1408. '71.0.3578.22',
  1409. '72.0.3590.1',
  1410. '72.0.3590.0',
  1411. '71.0.3578.21',
  1412. '70.0.3538.78',
  1413. '70.0.3538.77',
  1414. '72.0.3589.1',
  1415. '72.0.3589.0',
  1416. '71.0.3578.20',
  1417. '70.0.3538.76',
  1418. '71.0.3578.19',
  1419. '70.0.3538.75',
  1420. '72.0.3588.1',
  1421. '72.0.3588.0',
  1422. '71.0.3578.18',
  1423. '70.0.3538.74',
  1424. '72.0.3586.2',
  1425. '72.0.3587.0',
  1426. '71.0.3578.17',
  1427. '70.0.3538.73',
  1428. '72.0.3586.1',
  1429. '72.0.3586.0',
  1430. '71.0.3578.16',
  1431. '70.0.3538.72',
  1432. '72.0.3585.1',
  1433. '72.0.3585.0',
  1434. '71.0.3578.15',
  1435. '70.0.3538.71',
  1436. '71.0.3578.14',
  1437. '72.0.3584.1',
  1438. '72.0.3584.0',
  1439. '71.0.3578.13',
  1440. '70.0.3538.70',
  1441. '72.0.3583.2',
  1442. '71.0.3578.12',
  1443. '72.0.3583.1',
  1444. '72.0.3583.0',
  1445. '71.0.3578.11',
  1446. '70.0.3538.69',
  1447. '71.0.3578.10',
  1448. '72.0.3582.0',
  1449. '72.0.3581.4',
  1450. '71.0.3578.9',
  1451. '70.0.3538.67',
  1452. '72.0.3581.3',
  1453. '72.0.3581.2',
  1454. '72.0.3581.1',
  1455. '72.0.3581.0',
  1456. '71.0.3578.8',
  1457. '70.0.3538.66',
  1458. '72.0.3580.1',
  1459. '72.0.3580.0',
  1460. '71.0.3578.7',
  1461. '70.0.3538.65',
  1462. '71.0.3578.6',
  1463. '72.0.3579.1',
  1464. '72.0.3579.0',
  1465. '71.0.3578.5',
  1466. '70.0.3538.64',
  1467. '71.0.3578.4',
  1468. '71.0.3578.3',
  1469. '71.0.3578.2',
  1470. '71.0.3578.1',
  1471. '71.0.3578.0',
  1472. '70.0.3538.63',
  1473. '69.0.3497.128',
  1474. '70.0.3538.62',
  1475. '70.0.3538.61',
  1476. '70.0.3538.60',
  1477. '70.0.3538.59',
  1478. '71.0.3577.1',
  1479. '71.0.3577.0',
  1480. '70.0.3538.58',
  1481. '69.0.3497.127',
  1482. '71.0.3576.2',
  1483. '71.0.3576.1',
  1484. '71.0.3576.0',
  1485. '70.0.3538.57',
  1486. '70.0.3538.56',
  1487. '71.0.3575.2',
  1488. '70.0.3538.55',
  1489. '69.0.3497.126',
  1490. '70.0.3538.54',
  1491. '71.0.3575.1',
  1492. '71.0.3575.0',
  1493. '71.0.3574.1',
  1494. '71.0.3574.0',
  1495. '70.0.3538.53',
  1496. '69.0.3497.125',
  1497. '70.0.3538.52',
  1498. '71.0.3573.1',
  1499. '71.0.3573.0',
  1500. '70.0.3538.51',
  1501. '69.0.3497.124',
  1502. '71.0.3572.1',
  1503. '71.0.3572.0',
  1504. '70.0.3538.50',
  1505. '69.0.3497.123',
  1506. '71.0.3571.2',
  1507. '70.0.3538.49',
  1508. '69.0.3497.122',
  1509. '71.0.3571.1',
  1510. '71.0.3571.0',
  1511. '70.0.3538.48',
  1512. '69.0.3497.121',
  1513. '71.0.3570.1',
  1514. '71.0.3570.0',
  1515. '70.0.3538.47',
  1516. '69.0.3497.120',
  1517. '71.0.3568.2',
  1518. '71.0.3569.1',
  1519. '71.0.3569.0',
  1520. '70.0.3538.46',
  1521. '69.0.3497.119',
  1522. '70.0.3538.45',
  1523. '71.0.3568.1',
  1524. '71.0.3568.0',
  1525. '70.0.3538.44',
  1526. '69.0.3497.118',
  1527. '70.0.3538.43',
  1528. '70.0.3538.42',
  1529. '71.0.3567.1',
  1530. '71.0.3567.0',
  1531. '70.0.3538.41',
  1532. '69.0.3497.117',
  1533. '71.0.3566.1',
  1534. '71.0.3566.0',
  1535. '70.0.3538.40',
  1536. '69.0.3497.116',
  1537. '71.0.3565.1',
  1538. '71.0.3565.0',
  1539. '70.0.3538.39',
  1540. '69.0.3497.115',
  1541. '71.0.3564.1',
  1542. '71.0.3564.0',
  1543. '70.0.3538.38',
  1544. '69.0.3497.114',
  1545. '71.0.3563.0',
  1546. '71.0.3562.2',
  1547. '70.0.3538.37',
  1548. '69.0.3497.113',
  1549. '70.0.3538.36',
  1550. '70.0.3538.35',
  1551. '71.0.3562.1',
  1552. '71.0.3562.0',
  1553. '70.0.3538.34',
  1554. '69.0.3497.112',
  1555. '70.0.3538.33',
  1556. '71.0.3561.1',
  1557. '71.0.3561.0',
  1558. '70.0.3538.32',
  1559. '69.0.3497.111',
  1560. '71.0.3559.6',
  1561. '71.0.3560.1',
  1562. '71.0.3560.0',
  1563. '71.0.3559.5',
  1564. '71.0.3559.4',
  1565. '70.0.3538.31',
  1566. '69.0.3497.110',
  1567. '71.0.3559.3',
  1568. '70.0.3538.30',
  1569. '69.0.3497.109',
  1570. '71.0.3559.2',
  1571. '71.0.3559.1',
  1572. '71.0.3559.0',
  1573. '70.0.3538.29',
  1574. '69.0.3497.108',
  1575. '71.0.3558.2',
  1576. '71.0.3558.1',
  1577. '71.0.3558.0',
  1578. '70.0.3538.28',
  1579. '69.0.3497.107',
  1580. '71.0.3557.2',
  1581. '71.0.3557.1',
  1582. '71.0.3557.0',
  1583. '70.0.3538.27',
  1584. '69.0.3497.106',
  1585. '71.0.3554.4',
  1586. '70.0.3538.26',
  1587. '71.0.3556.1',
  1588. '71.0.3556.0',
  1589. '70.0.3538.25',
  1590. '71.0.3554.3',
  1591. '69.0.3497.105',
  1592. '71.0.3554.2',
  1593. '70.0.3538.24',
  1594. '69.0.3497.104',
  1595. '71.0.3555.2',
  1596. '70.0.3538.23',
  1597. '71.0.3555.1',
  1598. '71.0.3555.0',
  1599. '70.0.3538.22',
  1600. '69.0.3497.103',
  1601. '71.0.3554.1',
  1602. '71.0.3554.0',
  1603. '70.0.3538.21',
  1604. '69.0.3497.102',
  1605. '71.0.3553.3',
  1606. '70.0.3538.20',
  1607. '69.0.3497.101',
  1608. '71.0.3553.2',
  1609. '69.0.3497.100',
  1610. '71.0.3553.1',
  1611. '71.0.3553.0',
  1612. '70.0.3538.19',
  1613. '69.0.3497.99',
  1614. '69.0.3497.98',
  1615. '69.0.3497.97',
  1616. '71.0.3552.6',
  1617. '71.0.3552.5',
  1618. '71.0.3552.4',
  1619. '71.0.3552.3',
  1620. '71.0.3552.2',
  1621. '71.0.3552.1',
  1622. '71.0.3552.0',
  1623. '70.0.3538.18',
  1624. '69.0.3497.96',
  1625. '71.0.3551.3',
  1626. '71.0.3551.2',
  1627. '71.0.3551.1',
  1628. '71.0.3551.0',
  1629. '70.0.3538.17',
  1630. '69.0.3497.95',
  1631. '71.0.3550.3',
  1632. '71.0.3550.2',
  1633. '71.0.3550.1',
  1634. '71.0.3550.0',
  1635. '70.0.3538.16',
  1636. '69.0.3497.94',
  1637. '71.0.3549.1',
  1638. '71.0.3549.0',
  1639. '70.0.3538.15',
  1640. '69.0.3497.93',
  1641. '69.0.3497.92',
  1642. '71.0.3548.1',
  1643. '71.0.3548.0',
  1644. '70.0.3538.14',
  1645. '69.0.3497.91',
  1646. '71.0.3547.1',
  1647. '71.0.3547.0',
  1648. '70.0.3538.13',
  1649. '69.0.3497.90',
  1650. '71.0.3546.2',
  1651. '69.0.3497.89',
  1652. '71.0.3546.1',
  1653. '71.0.3546.0',
  1654. '70.0.3538.12',
  1655. '69.0.3497.88',
  1656. '71.0.3545.4',
  1657. '71.0.3545.3',
  1658. '71.0.3545.2',
  1659. '71.0.3545.1',
  1660. '71.0.3545.0',
  1661. '70.0.3538.11',
  1662. '69.0.3497.87',
  1663. '71.0.3544.5',
  1664. '71.0.3544.4',
  1665. '71.0.3544.3',
  1666. '71.0.3544.2',
  1667. '71.0.3544.1',
  1668. '71.0.3544.0',
  1669. '69.0.3497.86',
  1670. '70.0.3538.10',
  1671. '69.0.3497.85',
  1672. '70.0.3538.9',
  1673. '69.0.3497.84',
  1674. '71.0.3543.4',
  1675. '70.0.3538.8',
  1676. '71.0.3543.3',
  1677. '71.0.3543.2',
  1678. '71.0.3543.1',
  1679. '71.0.3543.0',
  1680. '70.0.3538.7',
  1681. '69.0.3497.83',
  1682. '71.0.3542.2',
  1683. '71.0.3542.1',
  1684. '71.0.3542.0',
  1685. '70.0.3538.6',
  1686. '69.0.3497.82',
  1687. '69.0.3497.81',
  1688. '71.0.3541.1',
  1689. '71.0.3541.0',
  1690. '70.0.3538.5',
  1691. '69.0.3497.80',
  1692. '71.0.3540.1',
  1693. '71.0.3540.0',
  1694. '70.0.3538.4',
  1695. '69.0.3497.79',
  1696. '70.0.3538.3',
  1697. '71.0.3539.1',
  1698. '71.0.3539.0',
  1699. '69.0.3497.78',
  1700. '68.0.3440.134',
  1701. '69.0.3497.77',
  1702. '70.0.3538.2',
  1703. '70.0.3538.1',
  1704. '70.0.3538.0',
  1705. '69.0.3497.76',
  1706. '68.0.3440.133',
  1707. '69.0.3497.75',
  1708. '70.0.3537.2',
  1709. '70.0.3537.1',
  1710. '70.0.3537.0',
  1711. '69.0.3497.74',
  1712. '68.0.3440.132',
  1713. '70.0.3536.0',
  1714. '70.0.3535.5',
  1715. '70.0.3535.4',
  1716. '70.0.3535.3',
  1717. '69.0.3497.73',
  1718. '68.0.3440.131',
  1719. '70.0.3532.8',
  1720. '70.0.3532.7',
  1721. '69.0.3497.72',
  1722. '69.0.3497.71',
  1723. '70.0.3535.2',
  1724. '70.0.3535.1',
  1725. '70.0.3535.0',
  1726. '69.0.3497.70',
  1727. '68.0.3440.130',
  1728. '69.0.3497.69',
  1729. '68.0.3440.129',
  1730. '70.0.3534.4',
  1731. '70.0.3534.3',
  1732. '70.0.3534.2',
  1733. '70.0.3534.1',
  1734. '70.0.3534.0',
  1735. '69.0.3497.68',
  1736. '68.0.3440.128',
  1737. '70.0.3533.2',
  1738. '70.0.3533.1',
  1739. '70.0.3533.0',
  1740. '69.0.3497.67',
  1741. '68.0.3440.127',
  1742. '70.0.3532.6',
  1743. '70.0.3532.5',
  1744. '70.0.3532.4',
  1745. '69.0.3497.66',
  1746. '68.0.3440.126',
  1747. '70.0.3532.3',
  1748. '70.0.3532.2',
  1749. '70.0.3532.1',
  1750. '69.0.3497.60',
  1751. '69.0.3497.65',
  1752. '69.0.3497.64',
  1753. '70.0.3532.0',
  1754. '70.0.3531.0',
  1755. '70.0.3530.4',
  1756. '70.0.3530.3',
  1757. '70.0.3530.2',
  1758. '69.0.3497.58',
  1759. '68.0.3440.125',
  1760. '69.0.3497.57',
  1761. '69.0.3497.56',
  1762. '69.0.3497.55',
  1763. '69.0.3497.54',
  1764. '70.0.3530.1',
  1765. '70.0.3530.0',
  1766. '69.0.3497.53',
  1767. '68.0.3440.124',
  1768. '69.0.3497.52',
  1769. '70.0.3529.3',
  1770. '70.0.3529.2',
  1771. '70.0.3529.1',
  1772. '70.0.3529.0',
  1773. '69.0.3497.51',
  1774. '70.0.3528.4',
  1775. '68.0.3440.123',
  1776. '70.0.3528.3',
  1777. '70.0.3528.2',
  1778. '70.0.3528.1',
  1779. '70.0.3528.0',
  1780. '69.0.3497.50',
  1781. '68.0.3440.122',
  1782. '70.0.3527.1',
  1783. '70.0.3527.0',
  1784. '69.0.3497.49',
  1785. '68.0.3440.121',
  1786. '70.0.3526.1',
  1787. '70.0.3526.0',
  1788. '68.0.3440.120',
  1789. '69.0.3497.48',
  1790. '69.0.3497.47',
  1791. '68.0.3440.119',
  1792. '68.0.3440.118',
  1793. '70.0.3525.5',
  1794. '70.0.3525.4',
  1795. '70.0.3525.3',
  1796. '68.0.3440.117',
  1797. '69.0.3497.46',
  1798. '70.0.3525.2',
  1799. '70.0.3525.1',
  1800. '70.0.3525.0',
  1801. '69.0.3497.45',
  1802. '68.0.3440.116',
  1803. '70.0.3524.4',
  1804. '70.0.3524.3',
  1805. '69.0.3497.44',
  1806. '70.0.3524.2',
  1807. '70.0.3524.1',
  1808. '70.0.3524.0',
  1809. '70.0.3523.2',
  1810. '69.0.3497.43',
  1811. '68.0.3440.115',
  1812. '70.0.3505.9',
  1813. '69.0.3497.42',
  1814. '70.0.3505.8',
  1815. '70.0.3523.1',
  1816. '70.0.3523.0',
  1817. '69.0.3497.41',
  1818. '68.0.3440.114',
  1819. '70.0.3505.7',
  1820. '69.0.3497.40',
  1821. '70.0.3522.1',
  1822. '70.0.3522.0',
  1823. '70.0.3521.2',
  1824. '69.0.3497.39',
  1825. '68.0.3440.113',
  1826. '70.0.3505.6',
  1827. '70.0.3521.1',
  1828. '70.0.3521.0',
  1829. '69.0.3497.38',
  1830. '68.0.3440.112',
  1831. '70.0.3520.1',
  1832. '70.0.3520.0',
  1833. '69.0.3497.37',
  1834. '68.0.3440.111',
  1835. '70.0.3519.3',
  1836. '70.0.3519.2',
  1837. '70.0.3519.1',
  1838. '70.0.3519.0',
  1839. '69.0.3497.36',
  1840. '68.0.3440.110',
  1841. '70.0.3518.1',
  1842. '70.0.3518.0',
  1843. '69.0.3497.35',
  1844. '69.0.3497.34',
  1845. '68.0.3440.109',
  1846. '70.0.3517.1',
  1847. '70.0.3517.0',
  1848. '69.0.3497.33',
  1849. '68.0.3440.108',
  1850. '69.0.3497.32',
  1851. '70.0.3516.3',
  1852. '70.0.3516.2',
  1853. '70.0.3516.1',
  1854. '70.0.3516.0',
  1855. '69.0.3497.31',
  1856. '68.0.3440.107',
  1857. '70.0.3515.4',
  1858. '68.0.3440.106',
  1859. '70.0.3515.3',
  1860. '70.0.3515.2',
  1861. '70.0.3515.1',
  1862. '70.0.3515.0',
  1863. '69.0.3497.30',
  1864. '68.0.3440.105',
  1865. '68.0.3440.104',
  1866. '70.0.3514.2',
  1867. '70.0.3514.1',
  1868. '70.0.3514.0',
  1869. '69.0.3497.29',
  1870. '68.0.3440.103',
  1871. '70.0.3513.1',
  1872. '70.0.3513.0',
  1873. '69.0.3497.28',
  1874. ];
  1875. return $chromeVersions[array_rand($chromeVersions)];
  1876. }
  1877. }