- ID scansione:
- 8ea590f0-817b-4e67-8c55-1c055fda0e05Fatto
- URL inviato:
- https://www.pcgamebenchmark.com/factorio-system-requirements
- Report terminato:
Link · 13 trovati
I link in uscita identificati dalla pagina
Link | Testo |
---|---|
https://go.pcgamebenchmark.com/nav-gaming-deals | Gaming Deals |
https://www.network-n.com/ | |
https://go.pcgamebenchmark.com/GCD | Check latest dealsRecommended graphics cards to run this Factorio. |
https://www.pcgamesn.com/best-ssd-for-gaming | best SSD for gaming |
https://go.pcgamebenchmark.com/ssd | check the latest, best prices for SSDs. |
https://mods.factorio.com/mod/space-exploration | Space Exploration mod |
https://go.pcgamebenchmark.com/FPSMonitorSysReqs | FPS tracking app |
https://fave.co/491GquT | Order on Humble Bundle |
https://amzn.to/3sqRama | Deals on compatible laptopsUpgrade your gaming machine today. |
https://www.networknmedia.com/privacy | Privacy |
Variabili JavaScript · 108 trovate
Le variabili JavaScript globali caricate sull'oggetto finestra di una pagina sono variabili dichiarate all'esterno delle funzioni e accessibili da qualsiasi punto del codice nell'ambito corrente
Nome | Tipo |
---|---|
0 | object |
1 | object |
2 | object |
3 | object |
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
AdSlots | object |
$ | function |
jQuery | function |
Messaggi di log della console · 10 trovati
Messaggi registrati nella console Web
Tipo | Categoria | Log |
---|---|---|
log | javascript |
|
error | network |
|
log | other |
|
log | other |
|
log | javascript |
|
info | other |
|
warning | other |
|
warning | other |
|
log | other |
|
warning | other |
|
HTML
Il corpo HTML non elaborato della pagina
<!DOCTYPE html><html lang="en-us" data-previous-scroll-y="-0px" class="sp-message-open"><head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
<meta charset="utf-8">
<link rel="preload" href="https://cdn.privacy-mgmt.com/unified/wrapperMessagingWithoutDetection.js" as="script"><link rel="preload" href="https://static.anonymised.io/light/loader.js" as="script"><link rel="preload" href="https://boot.pbstck.com/v1/tag/d7f7fa8d-5918-4306-834c-b734d9e6f9a7" as="script"><link rel="preload" href="https://00917082-71e9-498e-8343-00c3df06b798.edge.permutive.app/00917082-71e9-498e-8343-00c3df06b798-web.js" as="script"><link rel="preload" href="https://btloader.com/tag?o=5684350990417920&upapi=true" as="script"><link rel="preload" href="https://www.googletagmanager.com/gtag/js?id=G-0CPE0JFSCT" as="script"><link rel="preload" href="https://cdn.pbxai.com/736376db-e1cc-45b9-91e1-f3ccf5a10d38.js" as="script"><link rel="preload" href="https://z.moatads.com/networknheader13924283968/moatheader.js" as="script"><link rel="preload" href="https://securepubads.g.doubleclick.net/tag/js/gpt.js" as="script">
<script src="https://static.anonymised.io/light/loader.js" async="" nnid="nn-482cb016" id="idward-plugin-js" idw_client_id="NTU=" idw_hide_button="true"></script><script src="https://boot.pbstck.com/v1/tag/d7f7fa8d-5918-4306-834c-b734d9e6f9a7" async="" nnid="nn-5abc280b"></script><script async="" src="https://c.amazon-adsystem.com/aax2/apstag.js"></script><script src="https://00917082-71e9-498e-8343-00c3df06b798.edge.permutive.app/00917082-71e9-498e-8343-00c3df06b798-web.js" async="" nnid="nn-15fa89e9"></script><script src="https://btloader.com/tag?o=5684350990417920&upapi=true" async="" nnid="nn-78bf31fb"></script><script src="https://cdn.privacy-mgmt.com/unified/wrapperMessagingWithoutDetection.js" async="" nnid="nn-31ce57da"></script><script async="" type="text/javascript" src="https://static.kueezrtb.com/js/latest.js?_=1734478809319"></script><script src="https://www.googletagmanager.com/gtag/js?id=G-0CPE0JFSCT" async="" nnid="nn-77ed23dc"></script><script src="https://kumo.network-n.com/prebid.php?v=8.51.0&adapters=adagio,triplelift,ix,rubicon,criteo,pubmatic,rise,medianet,kueezrtb,gumgum&with-exact-module=permutiveRtdProvider,priceFloors,kueezRtbBidAdapter,pubxaiAnalyticsAdapter,identityLinkIdSystem,id5IdSystem,sharedIdSystem,unifiedIdSystem,criteoIdSystem" async="" nnid="nn-12fbe082"></script><script src="https://cdn.pbxai.com/736376db-e1cc-45b9-91e1-f3ccf5a10d38.js" nnid="nn-6ba6696"></script><script src="https://scripts.webcontentassessor.com/scripts/65a64e4c44bb1fda06831d6686c29ce690ecd6d5d8c6752a75fc7feed5f1f811" nnid="nn-a52e1f8"></script><script src="https://securepubads.g.doubleclick.net/tag/js/gpt.js" async="" nnid="nn-6a5e7fd8"></script><script src="https://kumo.network-n.com/dist/1.54.6/solar-mobile.js" async="" nnid="nn-65496087"></script><script src="https://kumo.network-n.com/dist/1.54.6/refresh.js" async="" nnid="nn-d444902"></script><script src="https://kumo.network-n.com/dist/1.54.6/request-manager.js" async="" nnid="nn-2462e8ea"></script><script src="https://kumo.network-n.com/dist/1.54.6/quantcast.js" async="" nnid="nn-226e70f7"></script><script src="https://kumo.network-n.com/dist/1.54.6/primis.js" async="" nnid="nn-614637a5"></script><script src="https://kumo.network-n.com/dist/1.54.6/gpt-positions.js" async="" nnid="nn-7185788f"></script><script src="https://kumo.network-n.com/dist/1.54.6/galaxy-board.js" async="" nnid="nn-22dc72ec"></script><script src="https://kumo.network-n.com/dist/1.54.6/celtra-bfab.js" async="" nnid="nn-d065c80"></script><script src="https://kumo.network-n.com/dist/1.54.6/anonymised.js" async="" nnid="nn-339269d4"></script><script src="https://kumo.network-n.com/dist/1.54.6/analytics.js" async="" nnid="nn-3ff01f3"></script><script src="https://kumo.network-n.com/dist/1.54.6/pubstack.js" async="" nnid="nn-6f0d1916"></script><script src="https://kumo.network-n.com/dist/1.54.6/prebid.js" async="" nnid="nn-7ae12a3b"></script><script src="https://kumo.network-n.com/dist/1.54.6/amazon.js" async="" nnid="nn-192d4371"></script><script src="https://kumo.network-n.com/dist/1.54.6/permutive.js" async="" nnid="nn-6a0309b0"></script><script src="https://kumo.network-n.com/dist/1.54.6/gpt.js" async="" nnid="nn-4216a7d2"></script><script src="https://kumo.network-n.com/dist/1.54.6/tagging.js" async="" nnid="nn-4d3a091c"></script><script src="https://kumo.network-n.com/dist/1.54.6/comscore.js" async="" nnid="nn-3bf88124"></script><script src="https://kumo.network-n.com/dist/1.54.6/mediatrust.js" async="" nnid="nn-5b1c5781"></script><script src="https://kumo.network-n.com/dist/1.54.6/blockthrough.js" async="" nnid="nn-675b3cdd"></script><script src="https://kumo.network-n.com/dist/1.54.6/cmp-sourcepoint.js" async="" nnid="nn-45beeeab"></script><script>window.AdSlots = window.AdSlots || {cmd: []};</script>
<script async="" src="https://kumo.network-n.com/dist/app.js" site="pcgamebenchmark"></script>
<!-- Start Permutive -->
<link rel="preconnect" href="https://securepubads.g.doubleclick.net/" crossorigin="">
<script>
window.AdSlots.meta = {"schema":{"page":{"content":{"headline":"Factorio System Requirements","type":"game","hardware":""},"game":{"publisher":"Wube Software LTD.","title":"Factorio","genre":"Strategy","genres":["Strategy","Casual","Indie","Simulation","Early Access"]},"user":{"loginstatus":false},"page_type":"Benchmark"}}};
console.log(window.AdSlots.meta);
</script>
<!-- End Permutive -->
<title>Factorio system requirements - Can I Run It? - PCGameBenchmark</title>
<meta name="description" content="Full Factorio system requirements for PC, including minimum and recommended specs to run the Space Age expansion.">
<meta property="og:type" content="website">
<meta property="og:title" content="Factorio system requirements - Can I Run It? - PCGameBenchmark">
<meta property="og:description" content="Factorio system requirements 2024 - can your PC run Factorio? What is your PCGameBenchmark rating? #pcgaming">
<meta property="og:site_name" content="PCGameBenchmark">
<meta property="og:url" content="https://www.pcgamebenchmark.com/factorio-system-requirements">
<meta property="og:image" content="https://www.pcgamebenchmark.com/factorio-system-requirements-graph.png">
<meta property="og:image:width" content="600">
<meta property="og:image:height" content="480">
<meta property="og:image:type" content="image/png">
<link rel="canonical" href="https://www.pcgamebenchmark.com/factorio-system-requirements">
<meta property="twitter:site" content="@pcgamebenchmark">
<meta property="twitter:creator" content="@pcgamebenchmark">
<meta name="application-name" content="PCGameBenchmark">
<meta name="theme-color" content="#151515">
<style>
body{font-family:Tahoma,sans-serif;font-size:16px;line-height:24px}:root{--primary-color:#212121}#head{position:fixed;top:0;width:100%;height:60px;z-index:100;background-color:#141414;transition:box-shadow .2s ease}#head .container{padding:0}#open-menu,#open-search{color:#eee;height:60px;background:0 0;border:0;font-size:20px;width:60px;display:block}#open-menu{float:left}#open-search{float:right}#head-rate{display:none}@media (min-width:700px){#head{height:70px}#open-menu{height:70px}#open-search{display:none}.system-requirements-aspect-ratio-box-inside .lazy-load{width:200px;height:94px}}@media (min-width:1300px){#head{z-index:102}#head .container{padding:0 20px}#open-menu{display:none}}@media (max-width:1300px){#head-buttons{display:none!important}#mobile-nav{overflow-y:scroll;height:100vh}#mobile-nav li{list-style-type:none}#mobile-nav li.spacer{height:300px}}@media (min-width:1300px){#head-buttons{display:flex;gap:5px;margin:15px 0;top:1px;position:relative;min-height:34px}#head-buttons a{display:inline-flex;font-size:14px;height:33px}#head-buttons .button{padding:5px 10px;border:1px solid #141414}#head-buttons .button.ovwlf{padding:5px 10px 5px 0!important}#head-buttons img{vertical-align:middle;padding-bottom:3px}}@media (min-width:1300px){#search{position:unset!important}}@media (min-width:700px) and (max-width:1300px){header #search{display:block;padding:20px 150px 20px 0;margin-left:330px;position:unset;min-height:60px}#content{padding-top:0}}@media (min-width:700px){#head-rate{margin:-40px 32px}#social{margin-top:-58px}#nav{margin-top:0!important}}#logo{float:left;height:12px}#logo img{height:12px;margin:24px 0}@media (min-width:700px){#logo{height:16px}#logo img{margin:27px 0;height:16px}}#search{display:none;position:fixed;top:0;right:0;left:0;height:60px;z-index:100}#search input{height:60px;font-size:16px}#search.visible{display:block}@media (min-width:700px){#search{display:inline-block;padding:15px 15px}#search input{height:33px;font-size:16px}#search input:not(:focus){border-color:#0d0d0d}}@media (min-width:1300px){#search{padding-top:15px;width:390px;margin:0 auto;left:0;right:0}}#social{line-height:60px;font-size:18px}#social a{text-decoration:none;color:#40c4ff}#social a:not(:last-of-type){margin-right:8px}@media (min-width:700px){#social{display:inline-block;font-size:24px;line-height:70px;margin-right:30px}}@media (min-width:1300px){#social{margin-right:0}}ul.navmenu{display:flex;flex-wrap:wrap}ul.navmenu li{width:auto!important;display:flex;flex-direction:column;line-height:2rem}#nav{position:fixed;top:0;right:20%;bottom:0;left:0;max-width:300px;transform:translateX(-150%);transition:transform .2s ease-in-out;background:#212121;box-shadow:10px 0 110px 0 #212121}#nav.visible{transform:translateX(0);z-index:10}#nav .container{padding:0}#nav ul{list-style:none;padding:0;margin-bottom:0}#nav li{margin-bottom:0}#nav .item{border-bottom:solid 1px #2b2b2b;font-family:"Trebuchet MS",sans-serif;text-transform:uppercase;min-height:32px;flex-grow:1}#nav .item a{display:block;padding:20px 30px;text-decoration:none;color:#ebebeb}#nav .item span.new-icon{height:16px;width:16px}#nav .item span.new-icon.cpu{background-image:url(/img/icons/cpu.svg)}#nav .item span.new-icon.display{background-image:url(/img/icons/display.svg)}#nav .item span.new-icon.computer{background-image:url(/img/icons/computer.svg)}#nav .item span.new-icon.keyboard{background-image:url(/img/icons/keyboard.svg)}#nav .item span.new-icon.controller{background-image:url(/img/icons/videogame.svg)}#nav .item span.new-icon.gpu{background-image:url(/img/icons/graphic-card.svg)}#nav .item span.new-icon.headset{background-image:url(/img/icons/headset_mic.svg)}#nav .item span.new-icon.laptop{background-image:url(/img/icons/laptop_chromebook.svg)}#nav .item span.new-icon.mouse{background-image:url(/img/icons/mouse.svg)}#nav .item span.new-icon.notice{background-image:url(/img/icons/notice.svg)}#nav .item.active{background:#1c1c1c}#close-menu{width:100%;height:60px;background:#353535;color:#ebebeb;border:0;font-family:Tahoma,sans-serif;font-size:14px}#close-menu span{margin-right:8px}@media (min-width:1300px){#nav{position:relative;top:-3px;width:100%;height:auto;max-width:none;background:#121212;transform:translateX(0);transition:none;box-shadow:none;border-top:1px solid #0d0d0d;margin-top:70px;transition:height 1s ease}#nav .item{border:0;width:auto;overflow:hidden}#nav .item a{font-size:16px;padding:0 16px;border:solid 1px #0f0f0f;border-top:0;border-bottom:0;text-transform:none;transition:background .2s ease}#nav .item a,#nav .item a:visited{color:#ebebeb}#nav .item a:hover,#nav .item.active>a{background:#141414;color:#f0f0f0}#close-menu{display:none}}@media (min-width:1300px){#nav-rate{display:none}}@media only screen and (max-width:7698px){#nn_mobile_lb1_wrap{background:#fff;position:fixed;bottom:0;width:100%;z-index:1}#nn_mobile_lb1{bottom:5px;z-index:2}}@media only screen and (min-width:900px){.bfa-mini #nn_lb1{min-height:90px}.bfa-loaded:not(.bfa-mini) header{position:fixed;top:250px;width:100%;z-index:1000;background:#000}.bfa-loaded:not(.bfa-mini) #content{margin-top:140px}}#nn_skinl{width:301px;height:970px;z-index:3;position:fixed;left:50%;margin-left:-787px}#nn_skinr{width:300px;height:970px;z-index:3;position:fixed;left:50%;margin-left:485px}.nn_mobile_mpu1_container{width:336px;height:600px;margin:auto}.nn_mobile_mpu1_container #nn_mobile_mpu1{width:336px;text-align:center;position:sticky;top:65px;bottom:20px}@media only screen and (min-width:769px){#nn_mpu1{display:flex;justify-content:center;margin-bottom:20px;min-height:250px;max-width:100%;overflow:hidden}.nova_wrapper{margin-bottom:20px;width:100%;min-height:244px}#nn_mobile_lb1_wrap{display:none}#nn_skinr{min-width:300px;text-align:left}#nn_skinl{min-width:300px;text-align:right}body.bfa-sticky-leaderboard #content{padding-top:385px}header{position:fixed;width:100%;background:#111;z-index:10}}#nn_mobile_mpu1{text-align:center;margin-bottom:20px}@media only screen and (max-width:900px){.article.home{clear:both}#nn_mobile_mpu1{margin-bottom:20px;min-height:250px}.nova_wrapper{margin-bottom:20px;width:100%;min-height:250px}#nn_mobile_lb1{padding:0 0 5px 0}#nn_mobile_lb1_wrap{text-align:center;background:#fff}#details-meta{width:100%!important}}.cmpwelcomeprps{line-height:1}.mpu_wrapper{height:600px;margin-bottom:20px}.mpu_wrapper.tall{height:900px}.mpu_wrapper.extra_tall{height:1200px}.amazon-disclaimer{line-height:100%!important;color:#616161}@media only screen and (min-width:970px){body.bfa-loaded:not(.bfa-mini) #head{padding-top:250px}body.bfa-loaded:not(.bfa-mini) #content{padding-top:0}#head{position:fixed!important;padding-top:0!important}}.constellation_widget_wrapper{margin-bottom:20px!important}.constellation_deals-title{white-space:nowrap;text-overflow:ellipsis}.basic-lightbox-container{text-align:center;background-color:#212121;padding:30px}.basic-lightbox-container #basic-lightbox-close{height:25px;width:25px;top:-40px;right:-70px;position:absolute;border-radius:50%;font-size:200%;font-family:unset;background:unset;border:none;-webkit-text-decoration:solid;text-decoration:solid}@media (max-width:1300px){.basic-lightbox-container #basic-lightbox-close{right:35px}}.constellation_deals_wrapper.no-filter .constellation_deals_filters{display:none}@media only screen and (min-width:900px){body{padding-top:110px}body.nn-lb-sticky #nn_astro_wrapper{position:fixed;top:134px;left:50%;transform:translate(-50%);z-index:1000}#nn_skinl,#nn_skinr{top:110px}#nn_mobile_mpu1{display:none}}@media only screen and (max-width:1299px){body{padding-top:70px}body.nn-lb-sticky #nn_astro_wrapper{position:fixed;top:70px;left:50%;transform:translate(-50%);z-index:1000}#nn_skinl,#nn_skinr{top:70px}}@media only screen and (min-width:900px){#nn_astro_wrapper{height:250px;box-sizing:content-box;vertical-align:middle;text-align:center;position:relative;width:970px;margin:0 auto;display:flex;justify-content:center;align-items:center}body.bfa-collapsed header,body.bfa-maximum header{padding-top:0!important}body.bfa-collapsed #head,body.bfa-maximum #head{top:0!important}body.bfa-collapsed #nn_astro_wrapper,body.bfa-maximum #nn_astro_wrapper{padding-top:0;height:0}#nn_skinl,#nn_skinr{width:301px;height:970px;z-index:10;position:fixed;left:50%}#nn_skinl{margin-left:-786px}#nn_skinr{margin-left:485px}div.side.home>#nn_mpu1{display:flex;justify-content:center;position:sticky;top:140px}.nn_mobile_mpu1_container{display:none}}@media only screen and (max-width:900px){#nn_mpu1{display:none}}@media only screen and (min-width:769px){.article .placement,.home .placement{min-height:247px}#list-sidebar .placement,#sidebar-content .placement,.four.columns .placement,.side .placement{min-height:255px}.capsule-wrap,.product-list .left{max-width:100%;max-height:100%;display:flex;align-items:center;justify-content:center;background:#fff}.capsule-wrap img{height:auto!important;width:auto;max-height:130px!important}} </style>
<link rel="stylesheet" href="https://www.pcgamebenchmark.com/dist/main.css?v=1.0.32">
<link rel="shortcut icon" href="https://www.pcgamebenchmark.com/favicon.ico">
<link rel="icon" href="https://www.pcgamebenchmark.com/favicon.png">
<meta name="am-api-token" content="SMCRugkPe">
<script type="text/javascript" src="//script.crazyegg.com/pages/scripts/0017/2880.js" async="async"></script>
<link rel="stylesheet" type="text/css" href="https://constellation.networknmedia.com/wp-content/plugins/constellation-widgets/assets/app.css"><meta http-equiv="origin-trial" content="AlK2UR5SkAlj8jjdEc9p3F3xuFYlF6LYjAML3EOqw1g26eCwWPjdmecULvBH5MVPoqKYrOfPhYVL71xAXI1IBQoAAAB8eyJvcmlnaW4iOiJodHRwczovL2RvdWJsZWNsaWNrLm5ldDo0NDMiLCJmZWF0dXJlIjoiV2ViVmlld1hSZXF1ZXN0ZWRXaXRoRGVwcmVjYXRpb24iLCJleHBpcnkiOjE3NTgwNjcxOTksImlzU3ViZG9tYWluIjp0cnVlfQ=="><meta http-equiv="origin-trial" content="Amm8/NmvvQfhwCib6I7ZsmUxiSCfOxWxHayJwyU1r3gRIItzr7bNQid6O8ZYaE1GSQTa69WwhPC9flq/oYkRBwsAAACCeyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXN5bmRpY2F0aW9uLmNvbTo0NDMiLCJmZWF0dXJlIjoiV2ViVmlld1hSZXF1ZXN0ZWRXaXRoRGVwcmVjYXRpb24iLCJleHBpcnkiOjE3NTgwNjcxOTksImlzU3ViZG9tYWluIjp0cnVlfQ=="><meta http-equiv="origin-trial" content="A9wSqI5i0iwGdf6L1CERNdmsTPgVu44ewj8QxTBYgsv1LCPUVF7YmWOvTappqB1139jAymxUW/RO8zmMqo4zlAAAAACNeyJvcmlnaW4iOiJodHRwczovL2RvdWJsZWNsaWNrLm5ldDo0NDMiLCJmZWF0dXJlIjoiRmxlZGdlQmlkZGluZ0FuZEF1Y3Rpb25TZXJ2ZXIiLCJleHBpcnkiOjE3MzY4MTI4MDAsImlzU3ViZG9tYWluIjp0cnVlLCJpc1RoaXJkUGFydHkiOnRydWV9"><meta http-equiv="origin-trial" content="A+d7vJfYtay4OUbdtRPZA3y7bKQLsxaMEPmxgfhBGqKXNrdkCQeJlUwqa6EBbSfjwFtJWTrWIioXeMW+y8bWAgQAAACTeyJvcmlnaW4iOiJodHRwczovL2dvb2dsZXN5bmRpY2F0aW9uLmNvbTo0NDMiLCJmZWF0dXJlIjoiRmxlZGdlQmlkZGluZ0FuZEF1Y3Rpb25TZXJ2ZXIiLCJleHBpcnkiOjE3MzY4MTI4MDAsImlzU3ViZG9tYWluIjp0cnVlLCJpc1RoaXJkUGFydHkiOnRydWV9"><script src="https://securepubads.g.doubleclick.net/pagead/managed/js/gpt/m202412090101/pubads_impl.js" async=""></script><script type="text/javascript" data-cfasync="false" crossorigin="anonymous" src="https://static.kueezrtb.com/latest.js" id="kueezrtb_latest"></script><style>@media only screen and (min-width:900px){.bfa-maximum div[id*=primis_playerSekindoSPlayer][style*="position: fixed"]{top:var(--nnVideoOffsetTop,140px)!important}.bfa-loaded.bfa-collapsed div[id*=primis_playerSekindoSPlayer][style*="position: fixed"]{bottom:100px!important;top:auto!important}}</style><style>.nn-sticky{width:100%;display:flex;justify-content:center;position:fixed;bottom:var(--cmpHeight,0);left:0;right:0;z-index:9999;pointer-events:none}.nn-sticky>div{margin:0;padding:0;position:relative;z-index:9999;pointer-events:auto}.nn-sticky .close-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:block;width:40px;height:40px;position:absolute;right:-5px;top:0;margin-top:-40px;border-radius:40px;cursor:pointer;outline:none;background:#555;z-index:9999;pointer-events:auto}.nn-sticky .close-btn:after{content:"";background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40'%3E%3Cpath d='M10 10l20 20m0-20L10 30' stroke='%23fff' stroke-width='4'/%3E%3C/svg%3E") no-repeat 50% 50%;background-size:25px;width:100%;height:100%;display:block}.nn_sticky_ad>div{position:-webkit-sticky!important;position:sticky!important;top:15px;min-height:0!important}</style><style>[id^=primis_playerSekindoSPlayer]{margin-bottom:var(--cmpHeight)!important}</style><style>@media only screen and (max-width:480px){.solar-loaded div[id*=primis_playerSekindoSPlayer]{bottom:auto!important}.solar-loaded div[id*=primis_playerSekindoSPlayer][style*="overflow: visible; position: fixed"]{bottom:200px!important}.solar-loaded .avp-floating-container.avp-bottom-right{bottom:300px!important}}</style><style>.galaxy-maximum div[id*=primis_playerSekindoSPlayer][style*="position: fixed"]{bottom:510px!important}.galaxy-loaded div[id*=primis_playerSekindoSPlayer][style*="position: fixed"]{bottom:265px!important;top:auto!important}.galaxy-loaded .notranslate.celtra-placement-sticky img{display:none}</style><script charset="utf-8" src="https://cdn.privacy-mgmt.com/unified/4.27.3/gdpr-tcf.00cd3b6a2692e330e4ec.bundle.js"></script><script charset="utf-8" src="https://cdn.privacy-mgmt.com/unified/4.27.3/usnat-uspapi.784cb86039101848d683.bundle.js"></script><script src="https://static.anonymised.io/light/bundle.js?v=0.3.20" async="" nnid="nn-482cb016" id="idward-plugin-js" idw_client_id="NTU=" idw_hide_button="true"></script><script type="text/javascript">(function() { var load = function() {!function(e){"use strict";const t=/pbstck:debug/.test(window.location.href),i=!!window.localStorage.getItem("pbstck"),n=(e,n,...o)=>{(t||i)&&console[e](`[pbstckUserSessions-b6ed2f5] [${performance.now().toFixed(2)}] ${n}`,...o.length?o:"")},o=(e,...t)=>{n("warn",e,...t)},r=(e,...t)=>{n("log",e,...t)},a=(e,...t)=>{n("error",e,...t)},s=["pbstck:","pbstck_context:"],c=()=>{const e=document.getElementsByTagName("meta"),t=Array.from(e).filter((e=>d(s,e.name))),i=new Map;t.forEach((e=>{const t=u(e.name);i.has(t)&&o(`Custom dim ${t} is present many times`),i.size<20?i.set(t,e.content):o(`Skipping custom dim ${t} with ${e.content}: limit of 20 keys exceeded`)}));const n=Object.assign({},...Array.from(i.entries()).map((([e,t])=>({[e]:t}))));return i.size>0&&r("Custom dim found :",n),n},u=e=>e.replace(/^\w+:/,""),d=(e,t)=>e.some((e=>t.startsWith(e)));var l,p;!function(e){e.HISTORY_MUTATION="_pbstck_historyMutation",e.NEW_PAGE="_pbstck_pageView",e.SESSION_TRACKING_AUTHORIZED="_pbstck_sessionTrackingAuthorized",e.SESSION_TRACKING_DECLINED="_pbstck_sessionTrackingDeclined"}(l||(l={})),function(e){e.REPLACE_STATE="replaceState",e.PUSH_STATE="pushState"}(p||(p={}));const w=e=>{window.history[e]=new Proxy(window.history[e],{apply(t,i,n){const o=window.location.href,r=t.apply(i,n),a=new CustomEvent(l.HISTORY_MUTATION,{detail:{referrer:o,stateObj:n[0],title:n[1],url:n[2],type:e}});return dispatchEvent(a),r}})};for(var m,f=[],b=0;b<256;++b)f.push((b+256).toString(16).slice(1));var h=new Uint8Array(16);function g(){if(!m&&!(m="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return m(h)}var v={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function y(e,t,i){if(v.randomUUID&&!t&&!e)return v.randomUUID();var n=(e=e||{}).random||(e.rng||g)();return n[6]=15&n[6]|64,n[8]=63&n[8]|128,function(e,t=0){return(f[e[t+0]]+f[e[t+1]]+f[e[t+2]]+f[e[t+3]]+"-"+f[e[t+4]]+f[e[t+5]]+"-"+f[e[t+6]]+f[e[t+7]]+"-"+f[e[t+8]]+f[e[t+9]]+"-"+f[e[t+10]]+f[e[t+11]]+f[e[t+12]]+f[e[t+13]]+f[e[t+14]]+f[e[t+15]]).toLowerCase()}(n)}const k=e=>{window.__pbstck_consent=e},S=e=>{window.__pbstck_session_tracking=e},T=()=>window.__pbstck_consent,E=()=>window.__pbstck_session_tracking,_=e=>{if("string"==typeof e){const t=e.split(/:\/\/(www.)?/g);return t.length<=1?null:t[t.length-1].split("/")[0]}const t=e.hostname;return t.startsWith("www.")?t.substring(4):t};var x;!function(e){e.DEV="dev",e.BETA="beta",e.PROD="prod"}(x||(x={}));class I extends Error{message="unknown session error"}class C extends I{message="session init error"}class A extends I{message="session parse error"}class N extends I{message="session not found error"}class O extends I{message="session obsolete error"}const D=Array(),P=(e,t)=>{const i=e.env===x.PROD?"":`_${e.env}`;return`_pbstck_session_${t.tagId.substring(0,8)}${i}`},L=e=>Date.now()-e>18e5,R=(e,t)=>{try{const n=localStorage.getItem(P(e,t));if(n){const e=JSON.parse(atob(n));if(i=e,D.every((e=>e in i)))return e;throw new A}throw new N}catch(e){if(e instanceof I)throw e;throw new A}var i},U=(e,t)=>{try{const i=R(e,t);return i.pageCount++,localStorage.setItem(P(e,t),btoa(JSON.stringify(i))),i.pageCount}catch(e){if(e instanceof I)throw e;throw new I}},M=(e,t)=>{const i=new URL(window.location.href),n={id:y(),lastUpdateTimeMs:Date.now(),pageCount:0,lastUrlVisited:window.location.href,utmSource:i.searchParams.get("utm_source")||null,utmCampaign:i.searchParams.get("utm_campaign")||null,utmContent:i.searchParams.get("utm_content")||null,utmTerm:i.searchParams.get("utm_term")||null,utmMedium:i.searchParams.get("utm_medium")||null};try{localStorage.setItem(P(e,t),btoa(JSON.stringify(n)))}catch(e){throw new C}},$=[],q=(e,t)=>{const i=$.map((i=>F(i,e,t)));if(i.length){const n=JSON.stringify(i),o=`${e.gateway}/page?${(()=>{const e=document.querySelector('meta[name="pbstck:kleanads-version"]')?.getAttribute("content")??"none",i=document.querySelector('meta[name="pbstck:config-version"]')?.getAttribute("content")??"none";return`tId=${t.tagId}&v=${e}&s=${i}&c=1`})()}`;navigator.sendBeacon&&navigator.sendBeacon(o,n)||fetch(o,{body:n,method:"POST",keepalive:!0}),r("[page] event queue dispatched",JSON.stringify(i)),$.length=0}},B=(e,t,i)=>{try{const o=V(t,i);try{const i=R(e,t);L(i.lastUpdateTimeMs)&&q(e,t)}catch(e){r("[page] session was not found or invalid, adding the new page to the queue anyway")}(n=o,$.push(n),r("[page] event queued",n),$.length)>=20&&q(e,t)}catch(e){e instanceof I?a(`[page] new page : ${e.message}`):a("[page] unknown error",e)}var n},H=(e,t)=>{B(e,t),window.addEventListener(l.SESSION_TRACKING_AUTHORIZED,(i=>{r(`[page] ${l.SESSION_TRACKING_AUTHORIZED}`,i);try{((e,t)=>{try{const i=R(e,t);if(L(i.lastUpdateTimeMs))throw new O;i.lastUpdateTimeMs=Date.now(),i.lastUrlVisited=window.location.href,localStorage.setItem(P(e,t),btoa(JSON.stringify(i)))}catch(i){if(i instanceof N||i instanceof A)return void M(e,t);if(i instanceof I)throw i;throw new I}})(e,t),q(e,t)}catch(i){i instanceof O&&(M(e,t),q(e,t))}})),window.addEventListener(l.SESSION_TRACKING_DECLINED,(i=>{r(`[page] ${l.SESSION_TRACKING_DECLINED}`,i),((e,t)=>{try{localStorage.removeItem(P(e,t))}catch(e){}})(e,t),q(e,t)})),window.addEventListener(l.HISTORY_MUTATION,(i=>{r(`[page] ${l.HISTORY_MUTATION}`,i),i.detail?.referrer.href!==window.location.href&&B(e,t,i.detail?.referrer)})),window.addEventListener("popstate",(i=>{B(e,t)})),window.document.addEventListener("visibilitychange",(()=>{r(`[page] visibility changed to ${document.visibilityState}`),"visible"!==document.visibilityState&&q(e,t)})),window.addEventListener("pagehide",(()=>{q(e,t)})),window.addEventListener("beforeunload",(()=>{q(e,t)}))},V=(e,t)=>{const i=new URL(window.location.href);return{...e,pageId:z(),pageCount:1,domain:_(window.location)??"",href:(n=window.location,n&&n.protocol&&n.host&&n.pathname?`${n.protocol}//${n.host}${n.pathname}`:"unknown"),referrer:_(t??document.referrer),consent:T(),userSessionId:null,sessionTracking:E(),utmSource:i.searchParams.get("utm_source"),utmCampaign:i.searchParams.get("utm_campaign"),utmContent:i.searchParams.get("utm_content"),utmTerm:i.searchParams.get("utm_term"),utmMedium:i.searchParams.get("utm_medium")};var n},F=(e,t,i)=>{try{const n=E();return{...e,pageCount:n?U(t,i):e.pageCount,userSessionId:n?R(t,i).id:null,consent:T(),sessionTracking:n,utmSource:n?R(t,i).utmSource:e.utmSource,utmCampaign:n?R(t,i).utmCampaign:e.utmCampaign,utmContent:n?R(t,i).utmContent:e.utmContent,utmTerm:n?R(t,i).utmTerm:e.utmTerm,utmMedium:n?R(t,i).utmMedium:e.utmMedium}}catch(t){if(t instanceof N)return e;t instanceof I?a(`[session] ${t.message}`):a("[session] unknown error",t)}return e},z=()=>{const e=y();return window.__pbstck_page_id=e,e};var G;!function(e){e[e.DENIED=0]="DENIED",e[e.GRANTED=1]="GRANTED",e[e.UNAVAILABLE=2]="UNAVAILABLE"}(G||(G={}));const j=async(e,t)=>{k(G.UNAVAILABLE),S(!1);let i=0;try{(await W(e))("addEventListener",2,(n=>{if(n){if("tcloaded"===n.eventStatus||"useractioncomplete"===n.eventStatus){k(X(n));const e=J(n)&&!t.sessionTrackingDisabled;S(e),e?dispatchEvent(new CustomEvent(l.SESSION_TRACKING_AUTHORIZED)):dispatchEvent(new CustomEvent(l.SESSION_TRACKING_DECLINED))}}else r(`[consent] wrong tcdata ${n}, waiting 200ms`),setTimeout((()=>{i++,100===i&&o("[consent] unable to retrieve cmp after 100 tries"),j(e,t)}),200)}))}catch(e){a("[consent] Error while loading tcf api")}},K=(e,t,i)=>{if(e.__tcfapi){const n=e.__tcfapi;(e=>"function"==typeof e)(e.__tcfapi)?t(n):i("__tcfapi is not a function")}else setTimeout((()=>K(e,t,i)),100)},W=e=>new Promise(((t,i)=>K(e,t,i))),X=e=>e.purpose.consents&&e.purpose.consents[1]&&e.purpose.consents[2]&&e.purpose.consents[3]&&e.purpose.consents[4]&&e.purpose.consents[7]?G.GRANTED:G.DENIED,J=e=>e.purpose.consents[1]&&e.purpose.consents[7]&&e.purpose.consents[8]?(r("[consent] SessionTracking obtained"),!0):(r("[consent] SessionTracking declined"),!1);var Y,Z,Q,ee,te,ie=-1,ne=function(e){addEventListener("pageshow",(function(t){t.persisted&&(ie=t.timeStamp,e(t))}),!0)},oe=function(){var e=self.performance&&performance.getEntriesByType&&performance.getEntriesByType("navigation")[0];if(e&&e.responseStart>0&&e.responseStart<performance.now())return e},re=function(){var e=oe();return e&&e.activationStart||0},ae=function(e,t){var i=oe(),n="navigate";return ie>=0?n="back-forward-cache":i&&(document.prerendering||re()>0?n="prerender":document.wasDiscarded?n="restore":i.type&&(n=i.type.replace(/_/g,"-"))),{name:e,value:void 0===t?-1:t,rating:"good",delta:0,entries:[],id:"v4-".concat(Date.now(),"-").concat(Math.floor(8999999999999*Math.random())+1e12),navigationType:n}},se=function(e,t,i){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var n=new PerformanceObserver((function(e){Promise.resolve().then((function(){t(e.getEntries())}))}));return n.observe(Object.assign({type:e,buffered:!0},i||{})),n}}catch(e){}},ce=function(e,t,i,n){var o,r;return function(a){t.value>=0&&(a||n)&&((r=t.value-(o||0))||void 0===o)&&(o=t.value,t.delta=r,t.rating=function(e,t){return e>t[1]?"poor":e>t[0]?"needs-improvement":"good"}(t.value,i),e(t))}},ue=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},de=function(e){document.addEventListener("visibilitychange",(function(){"hidden"===document.visibilityState&&e()}))},le=function(e){var t=!1;return function(){t||(e(),t=!0)}},pe=-1,we=function(){return"hidden"!==document.visibilityState||document.prerendering?1/0:0},me=function(e){"hidden"===document.visibilityState&&pe>-1&&(pe="visibilitychange"===e.type?e.timeStamp:0,be())},fe=function(){addEventListener("visibilitychange",me,!0),addEventListener("prerenderingchange",me,!0)},be=function(){removeEventListener("visibilitychange",me,!0),removeEventListener("prerenderingchange",me,!0)},he=function(){return pe<0&&(pe=we(),fe(),ne((function(){setTimeout((function(){pe=we(),fe()}),0)}))),{get firstHiddenTime(){return pe}}},ge=function(e){document.prerendering?addEventListener("prerenderingchange",(function(){return e()}),!0):e()},ve=[1800,3e3],ye=function(e,t){t=t||{},ge((function(){var i,n=he(),o=ae("FCP"),r=se("paint",(function(e){e.forEach((function(e){"first-contentful-paint"===e.name&&(r.disconnect(),e.startTime<n.firstHiddenTime&&(o.value=Math.max(e.startTime-re(),0),o.entries.push(e),i(!0)))}))}));r&&(i=ce(e,o,ve,t.reportAllChanges),ne((function(n){o=ae("FCP"),i=ce(e,o,ve,t.reportAllChanges),ue((function(){o.value=performance.now()-n.timeStamp,i(!0)}))})))}))},ke=[.1,.25],Se=0,Te=1/0,Ee=0,_e=function(e){e.forEach((function(e){e.interactionId&&(Te=Math.min(Te,e.interactionId),Ee=Math.max(Ee,e.interactionId),Se=Ee?(Ee-Te)/7+1:0)}))},xe=function(){return Y?Se:performance.interactionCount||0},Ie=function(){"interactionCount"in performance||Y||(Y=se("event",_e,{type:"event",buffered:!0,durationThreshold:0}))},Ce=[],Ae=new Map,Ne=0,Oe=[],De=function(e){if(Oe.forEach((function(t){return t(e)})),e.interactionId||"first-input"===e.entryType){var t=Ce[Ce.length-1],i=Ae.get(e.interactionId);if(i||Ce.length<10||e.duration>t.latency){if(i)e.duration>i.latency?(i.entries=[e],i.latency=e.duration):e.duration===i.latency&&e.startTime===i.entries[0].startTime&&i.entries.push(e);else{var n={id:e.interactionId,latency:e.duration,entries:[e]};Ae.set(n.id,n),Ce.push(n)}Ce.sort((function(e,t){return t.latency-e.latency})),Ce.length>10&&Ce.splice(10).forEach((function(e){return Ae.delete(e.id)}))}}},Pe=function(e){var t=self.requestIdleCallback||self.setTimeout,i=-1;return e=le(e),"hidden"===document.visibilityState?e():(i=t(e),de(e)),i},Le=[200,500],Re=function(e,t){"PerformanceEventTiming"in self&&"interactionId"in PerformanceEventTiming.prototype&&(t=t||{},ge((function(){var i;Ie();var n,o=ae("INP"),r=function(e){Pe((function(){e.forEach(De);var t=function(){var e=Math.min(Ce.length-1,Math.floor((xe()-Ne)/50));return Ce[e]}();t&&t.latency!==o.value&&(o.value=t.latency,o.entries=t.entries,n())}))},a=se("event",r,{durationThreshold:null!==(i=t.durationThreshold)&&void 0!==i?i:40});n=ce(e,o,Le,t.reportAllChanges),a&&(a.observe({type:"first-input",buffered:!0}),de((function(){r(a.takeRecords()),n(!0)})),ne((function(){Ne=xe(),Ce.length=0,Ae.clear(),o=ae("INP"),n=ce(e,o,Le,t.reportAllChanges)})))})))},Ue=[2500,4e3],Me={},$e=[800,1800],qe=function e(t){document.prerendering?ge((function(){return e(t)})):"complete"!==document.readyState?addEventListener("load",(function(){return e(t)}),!0):setTimeout(t,0)},Be=function(e,t){t=t||{};var i=ae("TTFB"),n=ce(e,i,$e,t.reportAllChanges);qe((function(){var o=oe();o&&(i.value=Math.max(o.responseStart-re(),0),i.entries=[o],n(!0),ne((function(){i=ae("TTFB",0),(n=ce(e,i,$e,t.reportAllChanges))(!0)})))}))},He={passive:!0,capture:!0},Ve=new Date,Fe=function(e,t){Z||(Z=t,Q=e,ee=new Date,je(removeEventListener),ze())},ze=function(){if(Q>=0&&Q<ee-Ve){var e={entryType:"first-input",name:Z.type,target:Z.target,cancelable:Z.cancelable,startTime:Z.timeStamp,processingStart:Z.timeStamp+Q};te.forEach((function(t){t(e)})),te=[]}},Ge=function(e){if(e.cancelable){var t=(e.timeStamp>1e12?new Date:performance.now())-e.timeStamp;"pointerdown"==e.type?function(e,t){var i=function(){Fe(e,t),o()},n=function(){o()},o=function(){removeEventListener("pointerup",i,He),removeEventListener("pointercancel",n,He)};addEventListener("pointerup",i,He),addEventListener("pointercancel",n,He)}(t,e):Fe(t,e)}},je=function(e){["mousedown","keydown","touchstart","pointerdown"].forEach((function(t){return e(t,Ge,He)}))},Ke=[100,300];function We(e,t,i,n){const o=()=>{const n=document.querySelector('meta[name="pbstck:kleanads-version"]')?.getAttribute("content")??"none",o=document.querySelector('meta[name="pbstck:config-version"]')?.getAttribute("content")??"none";return`${e.toLocaleLowerCase()}=${t.toFixed(3)}&tId=${i.tagId}&v=${n}&s=${o}&c=1`},r=E(),a=JSON.stringify([{...i,href:window.location.href,name:e,value:t,customFields:{...i.customFields,pageId:window.__pbstck_page_id,pageCount:String(r?R(n,i).pageCount:1),userSessionId:r?R(n,i).id:null,sessionTracking:String(r)}}]);navigator.sendBeacon&&navigator.sendBeacon(`${n.gateway}/web-vitals?${o()}`,a)||fetch(`${n.gateway}/web-vitals?${o()}`,{body:a,method:"POST",keepalive:!0})}const Xe=(e,t)=>{!function(e,t){t=t||{},ye(le((function(){var i,n=ae("CLS",0),o=0,r=[],a=function(e){e.forEach((function(e){if(!e.hadRecentInput){var t=r[0],i=r[r.length-1];o&&e.startTime-i.startTime<1e3&&e.startTime-t.startTime<5e3?(o+=e.value,r.push(e)):(o=e.value,r=[e])}})),o>n.value&&(n.value=o,n.entries=r,i())},s=se("layout-shift",a);s&&(i=ce(e,n,ke,t.reportAllChanges),de((function(){a(s.takeRecords()),i(!0)})),ne((function(){o=0,n=ae("CLS",0),i=ce(e,n,ke,t.reportAllChanges),ue((function(){return i()}))})),setTimeout(i,0))})))}((i=>We("CLS",i.value,t,e))),ye((i=>We("FCP",i.value,t,e))),function(e,t){t=t||{},ge((function(){var i,n=he(),o=ae("LCP"),r=function(e){t.reportAllChanges||(e=e.slice(-1)),e.forEach((function(e){e.startTime<n.firstHiddenTime&&(o.value=Math.max(e.startTime-re(),0),o.entries=[e],i())}))},a=se("largest-contentful-paint",r);if(a){i=ce(e,o,Ue,t.reportAllChanges);var s=le((function(){Me[o.id]||(r(a.takeRecords()),a.disconnect(),Me[o.id]=!0,i(!0))}));["keydown","click"].forEach((function(e){addEventListener(e,(function(){return Pe(s)}),!0)})),de(s),ne((function(n){o=ae("LCP"),i=ce(e,o,Ue,t.reportAllChanges),ue((function(){o.value=performance.now()-n.timeStamp,Me[o.id]=!0,i(!0)}))}))}}))}((i=>We("LCP",i.value,t,e))),function(e,t){t=t||{},ge((function(){var i,n=he(),o=ae("FID"),r=function(e){e.startTime<n.firstHiddenTime&&(o.value=e.processingStart-e.startTime,o.entries.push(e),i(!0))},a=function(e){e.forEach(r)},s=se("first-input",a);i=ce(e,o,Ke,t.reportAllChanges),s&&(de(le((function(){a(s.takeRecords()),s.disconnect()}))),ne((function(){var n;o=ae("FID"),i=ce(e,o,Ke,t.reportAllChanges),te=[],Q=-1,Z=null,je(addEventListener),n=r,te.push(n),ze()})))}))}((i=>We("FID",i.value,t,e))),Re((i=>We("INP",i.value,t,e))),Be((i=>We("TTFB",i.value,t,e)))};var Je,Ye="",Ze="function",Qe="undefined",et="object",tt="string",it="major",nt="model",ot="name",rt="type",at="vendor",st="version",ct="architecture",ut="console",dt="mobile",lt="tablet",pt="smarttv",wt="wearable",mt="embedded",ft="user-agent",bt=500,ht="brands",gt="formFactors",vt="fullVersionList",yt="platform",kt="platformVersion",St="bitness",Tt="sec-ch-ua",Et=Tt+"-full-version-list",_t=Tt+"-arch",xt=Tt+"-"+St,It=Tt+"-form-factors",Ct=Tt+"-"+dt,At=Tt+"-"+nt,Nt=Tt+"-"+yt,Ot=Nt+"-version",Dt=[ht,vt,dt,nt,yt,kt,ct,gt,St],Pt="browser",Lt="cpu",Rt="device",Ut="engine",Mt="os",$t="result",qt="Amazon",Bt="Apple",Ht="ASUS",Vt="BlackBerry",Ft="Google",zt="Huawei",Gt="Lenovo",jt="LG",Kt="Microsoft",Wt="Motorola",Xt="Samsung",Jt="Sharp",Yt="Sony",Zt="Xiaomi",Qt="Zebra",ei="Mobile ",ti=" Browser",ii="Chrome",ni="Firefox",oi="Opera",ri="Facebook",ai="Sogou",si="Windows",ci=typeof window!==Qe&&window.navigator?window.navigator:void 0,ui=ci&&ci.userAgentData?ci.userAgentData:void 0,di=function(e,t){var i={},n=t;if(!wi(t))for(var o in n={},t)for(var r in t[o])n[r]=t[o][r].concat(n[r]?n[r]:[]);for(var a in e)i[a]=n[a]&&n[a].length%2==0?n[a].concat(e[a]):e[a];return i},li=function(e){for(var t={},i=0;i<e.length;i++)t[e[i].toUpperCase()]=e[i];return t},pi=function(e,t){if(typeof e===et&&e.length>0){for(var i in e)if(bi(e[i])==bi(t))return!0;return!1}return!!mi(e)&&-1!==bi(t).indexOf(bi(e))},wi=function(e,t){for(var i in e)return/^(browser|cpu|device|engine|os)$/.test(i)||!!t&&wi(e[i])},mi=function(e){return typeof e===tt},fi=function(e){if(e){for(var t=[],i=vi(/\\?\"/g,e).split(","),n=0;n<i.length;n++)if(i[n].indexOf(";")>-1){var o=ki(i[n]).split(";v=");t[n]={brand:o[0],version:o[1]}}else t[n]=ki(i[n]);return t}},bi=function(e){return mi(e)?e.toLowerCase():e},hi=function(e){return mi(e)?vi(/[^\d\.]/g,e).split(".")[0]:void 0},gi=function(e){for(var t in e){var i=e[t];typeof i==et&&2==i.length?this[i[0]]=i[1]:this[i]=void 0}return this},vi=function(e,t){return mi(t)?t.replace(e,Ye):t},yi=function(e){return vi(/\\?\"/g,e)},ki=function(e,t){if(mi(e))return e=vi(/^\s\s*/,e),typeof t===Qe?e:e.substring(0,bt)},Si=function(e,t){if(e&&t)for(var i,n,o,r,a,s,c=0;c<t.length&&!a;){var u=t[c],d=t[c+1];for(i=n=0;i<u.length&&!a&&u[i];)if(a=u[i++].exec(e))for(o=0;o<d.length;o++)s=a[++n],typeof(r=d[o])===et&&r.length>0?2===r.length?typeof r[1]==Ze?this[r[0]]=r[1].call(this,s):this[r[0]]=r[1]:3===r.length?typeof r[1]!==Ze||r[1].exec&&r[1].test?this[r[0]]=s?s.replace(r[1],r[2]):void 0:this[r[0]]=s?r[1].call(this,s,r[2]):void 0:4===r.length&&(this[r[0]]=s?r[3].call(this,s.replace(r[1],r[2])):void 0):this[r]=s||void 0;c+=2}},Ti=function(e,t){for(var i in t)if(typeof t[i]===et&&t[i].length>0){for(var n=0;n<t[i].length;n++)if(pi(t[i][n],e))return"?"===i?void 0:i}else if(pi(t[i],e))return"?"===i?void 0:i;return t.hasOwnProperty("*")?t["*"]:e},Ei={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},_i={embedded:"Automotive",mobile:"Mobile",tablet:["Tablet","EInk"],smarttv:"TV",wearable:"Watch",xr:["VR","XR"],"?":["Desktop","Unknown"],"*":void 0},xi={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[st,[ot,ei+"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[st,[ot,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[ot,st],[/opios[\/ ]+([\w\.]+)/i],[st,[ot,oi+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[st,[ot,oi+" GX"]],[/\bopr\/([\w\.]+)/i],[st,[ot,oi]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[st,[ot,"Baidu"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[ot,st],[/\bddg\/([\w\.]+)/i],[st,[ot,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[st,[ot,"UCBrowser"]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[st,[ot,"WeChat"]],[/konqueror\/([\w\.]+)/i],[st,[ot,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[st,[ot,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[st,[ot,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[st,[ot,"Smart "+Gt+ti]],[/(avast|avg)\/([\w\.]+)/i],[[ot,/(.+)/,"$1 Secure"+ti],st],[/\bfocus\/([\w\.]+)/i],[st,[ot,ni+" Focus"]],[/\bopt\/([\w\.]+)/i],[st,[ot,oi+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[st,[ot,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[st,[ot,"Dolphin"]],[/coast\/([\w\.]+)/i],[st,[ot,oi+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[st,[ot,"MIUI"+ti]],[/fxios\/([\w\.-]+)/i],[st,[ot,ei+ni]],[/\bqihu|(qi?ho?o?|360)browser/i],[[ot,"360"+ti]],[/\b(qq)\/([\w\.]+)/i],[[ot,/(.+)/,"$1Browser"],st],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[ot,/(.+)/,"$1"+ti],st],[/samsungbrowser\/([\w\.]+)/i],[st,[ot,Xt+" Internet"]],[/(comodo_dragon)\/([\w\.]+)/i],[[ot,/_/g," "],st],[/metasr[\/ ]?([\d\.]+)/i],[st,[ot,ai+" Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[ot,ai+" Mobile"],st],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i],[ot,st],[/(lbbrowser|rekonq)/i,/\[(linkedin)app\]/i],[ot],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[ot,ri],st],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(twitter)(?:and| f.+e\/([\w\.]+))/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[ot,st],[/\bgsa\/([\w\.]+) .*safari\//i],[st,[ot,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[st,[ot,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[st,[ot,ii+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[ot,ii+" WebView"],st],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[st,[ot,"Android"+ti]],[/chrome\/([\w\.]+) mobile/i],[st,[ot,ei+"Chrome"]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[ot,st],[/version\/([\w\.\,]+) .*mobile(?:\/\w+ | ?)safari/i],[st,[ot,ei+"Safari"]],[/iphone .*mobile(?:\/\w+ | ?)safari/i],[[ot,ei+"Safari"]],[/version\/([\w\.\,]+) .*(safari)/i],[st,ot],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[ot,[st,"1"]],[/(webkit|khtml)\/([\w\.]+)/i],[ot,st],[/(?:mobile|tablet);.*(firefox)\/([\w\.-]+)/i],[[ot,ei+ni],st],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[ot,"Netscape"],st],[/(wolvic)\/([\w\.]+)/i],[ot,st],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[st,[ot,ni+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i],[ot,[st,/_/g,"."]],[/(cobalt)\/([\w\.]+)/i],[ot,[st,/[^\d\.]+./,Ye]]],cpu:[[/\b(?:(amd|x|x86[-_]?|wow|win)64)\b/i],[[ct,"amd64"]],[/(ia32(?=;))/i,/((?:i[346]|x)86)[;\)]/i],[[ct,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[ct,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[ct,"armhf"]],[/windows (ce|mobile); ppc;/i],[[ct,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[ct,/ower/,Ye,bi]],[/(sun4\w)[;\)]/i],[[ct,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[ct,bi]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[nt,[at,Xt],[rt,lt]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[nt,[at,Xt],[rt,dt]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[nt,[at,Bt],[rt,dt]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[nt,[at,Bt],[rt,lt]],[/(macintosh);/i],[nt,[at,Bt]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[nt,[at,Jt],[rt,dt]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[nt,[at,zt],[rt,lt]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[nt,[at,zt],[rt,dt]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[nt,/_/g," "],[at,Zt],[rt,dt]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[nt,/_/g," "],[at,Zt],[rt,lt]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[nt,[at,"OPPO"],[rt,dt]],[/\b(opd2\d{3}a?) bui/i],[nt,[at,"OPPO"],[rt,lt]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[nt,[at,"Vivo"],[rt,dt]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[nt,[at,"Realme"],[rt,dt]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[nt,[at,Wt],[rt,dt]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[nt,[at,Wt],[rt,lt]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[nt,[at,jt],[rt,lt]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[nt,[at,jt],[rt,dt]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[nt,[at,Gt],[rt,lt]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[nt,/_/g," "],[at,"Nokia"],[rt,dt]],[/(pixel c)\b/i],[nt,[at,Ft],[rt,lt]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[nt,[at,Ft],[rt,dt]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[nt,[at,Yt],[rt,dt]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[nt,"Xperia Tablet"],[at,Yt],[rt,lt]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[nt,[at,"OnePlus"],[rt,dt]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[nt,[at,qt],[rt,lt]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[nt,/(.+)/g,"Fire Phone $1"],[at,qt],[rt,dt]],[/(playbook);[-\w\),; ]+(rim)/i],[nt,at,[rt,lt]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[nt,[at,Vt],[rt,dt]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[nt,[at,Ht],[rt,lt]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[nt,[at,Ht],[rt,dt]],[/(nexus 9)/i],[nt,[at,"HTC"],[rt,lt]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[at,[nt,/_/g," "],[rt,dt]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[nt,[at,"Acer"],[rt,lt]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[nt,[at,"Meizu"],[rt,dt]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[nt,[at,"Ulefone"],[rt,dt]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[at,nt,[rt,dt]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i],[at,nt,[rt,lt]],[/(surface duo)/i],[nt,[at,Kt],[rt,lt]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[nt,[at,"Fairphone"],[rt,dt]],[/(shield[\w ]+) b/i],[nt,[at,"Nvidia"],[rt,lt]],[/(sprint) (\w+)/i],[at,nt,[rt,dt]],[/(kin\.[onetw]{3})/i],[[nt,/\./g," "],[at,Kt],[rt,dt]],[/droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[nt,[at,Qt],[rt,lt]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[nt,[at,Qt],[rt,dt]],[/smart-tv.+(samsung)/i],[at,[rt,pt]],[/hbbtv.+maple;(\d+)/i],[[nt,/^/,"SmartTV"],[at,Xt],[rt,pt]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[at,jt],[rt,pt]],[/(apple) ?tv/i],[at,[nt,Bt+" TV"],[rt,pt]],[/crkey/i],[[nt,ii+"cast"],[at,Ft],[rt,pt]],[/droid.+aft(\w+)( bui|\))/i],[nt,[at,qt],[rt,pt]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[nt,[at,Jt],[rt,pt]],[/(bravia[\w ]+)( bui|\))/i],[nt,[at,Yt],[rt,pt]],[/(mitv-\w{5}) bui/i],[nt,[at,Zt],[rt,pt]],[/Hbbtv.*(technisat) (.*);/i],[at,nt,[rt,pt]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[at,ki],[nt,ki],[rt,pt]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[rt,pt]],[/(ouya)/i,/(nintendo) (\w+)/i],[at,nt,[rt,ut]],[/droid.+; (shield) bui/i],[nt,[at,"Nvidia"],[rt,ut]],[/(playstation \w+)/i],[nt,[at,Yt],[rt,ut]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[nt,[at,Kt],[rt,ut]],[/((pebble))app/i],[at,nt,[rt,wt]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[nt,[at,Bt],[rt,wt]],[/droid.+; (wt63?0{2,3})\)/i],[nt,[at,Qt],[rt,wt]],[/droid.+; (glass) \d/i],[nt,[at,Ft],[rt,"xr"]],[/(quest( \d| pro)?)/i],[nt,[at,ri],[rt,"xr"]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[at,[rt,mt]],[/(aeobc)\b/i],[nt,[at,qt],[rt,mt]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[nt,[rt,dt]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[nt,[rt,lt]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[rt,lt]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[rt,dt]],[/(android[-\w\. ]{0,9});.+buil/i],[nt,[at,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[st,[ot,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[st,[ot,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[ot,st],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[st,ot]],os:[[/microsoft (windows) (vista|xp)/i],[ot,st],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[ot,[st,Ti,Ei]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[st,Ti,Ei],[ot,si]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[st,/_/g,"."],[ot,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[ot,"macOS"],[st,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[st,ot],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[ot,st],[/\(bb(10);/i],[st,[ot,Vt]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[st,[ot,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[st,[ot,ni+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[st,[ot,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[st,[ot,"watchOS"]],[/crkey\/([\d\.]+)/i],[st,[ot,ii+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[ot,"Chrome OS"],st],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) (\w+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[ot,st],[/(sunos) ?([\w\.\d]*)/i],[[ot,"Solaris"],st],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[ot,st]]},Ii=(Je={init:{},isIgnore:{},isIgnoreRgx:{},toString:{}},gi.call(Je.init,[[Pt,[ot,st,it,rt]],[Lt,[ct]],[Rt,[rt,nt,at]],[Ut,[ot,st]],[Mt,[ot,st]]]),gi.call(Je.isIgnore,[[Pt,[st,it]],[Ut,[st]],[Mt,[st]]]),gi.call(Je.isIgnoreRgx,[[Pt,/ ?browser$/i],[Mt,/ ?os$/i]]),gi.call(Je.toString,[[Pt,[ot,st]],[Lt,[ct]],[Rt,[at,nt]],[Ut,[ot,st]],[Mt,[ot,st]]]),Je),Ci=function(e,t){var i=Ii.init[t],n=Ii.isIgnore[t]||0,o=Ii.isIgnoreRgx[t]||0,r=Ii.toString[t]||0;function a(){gi.call(this,i)}return a.prototype.getItem=function(){return e},a.prototype.withClientHints=function(){return ui?ui.getHighEntropyValues(Dt).then((function(t){return e.setCH(new Ai(t,!1)).parseCH().get()})):e.parseCH().get()},a.prototype.withFeatureCheck=function(){return e.detectFeature().get()},t!=$t&&(a.prototype.is=function(e){var t=!1;for(var i in this)if(this.hasOwnProperty(i)&&!pi(n,i)&&bi(o?vi(o,this[i]):this[i])==bi(o?vi(o,e):e)){if(t=!0,e!=Qe)break}else if(e==Qe&&t){t=!t;break}return t},a.prototype.toString=function(){var e=Ye;for(var t in r)typeof this[r[t]]!==Qe&&(e+=(e?" ":Ye)+this[r[t]]);return e||Qe}),ui||(a.prototype.then=function(e){var t=this,i=function(){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e])};i.prototype={is:a.prototype.is,toString:a.prototype.toString};var n=new i;return e(n),n}),new a};function Ai(e,t){if(e=e||{},gi.call(this,Dt),t)gi.call(this,[[ht,fi(e[Tt])],[vt,fi(e[Et])],[dt,/\?1/.test(e[Ct])],[nt,yi(e[At])],[yt,yi(e[Nt])],[kt,yi(e[Ot])],[ct,yi(e[_t])],[gt,fi(e[It])],[St,yi(e[xt])]]);else for(var i in e)this.hasOwnProperty(i)&&typeof e[i]!==Qe&&(this[i]=e[i])}function Ni(e,t,i,n){return this.get=function(e){return e?this.data.hasOwnProperty(e)?this.data[e]:void 0:this.data},this.set=function(e,t){return this.data[e]=t,this},this.setCH=function(e){return this.uaCH=e,this},this.detectFeature=function(){if(ci&&ci.userAgent==this.ua)switch(this.itemType){case Pt:ci.brave&&typeof ci.brave.isBrave==Ze&&this.set(ot,"Brave");break;case Rt:!this.get(rt)&&ui&&ui[dt]&&this.set(rt,dt),"Macintosh"==this.get(nt)&&ci&&typeof ci.standalone!==Qe&&ci.maxTouchPoints&&ci.maxTouchPoints>2&&this.set(nt,"iPad").set(rt,lt);break;case Mt:!this.get(ot)&&ui&&ui[yt]&&this.set(ot,ui[yt]);break;case $t:var e=this.data,t=function(t){return e[t].getItem().detectFeature().get()};this.set(Pt,t(Pt)).set(Lt,t(Lt)).set(Rt,t(Rt)).set(Ut,t(Ut)).set(Mt,t(Mt))}return this},this.parseUA=function(){return this.itemType!=$t&&Si.call(this.data,this.ua,this.rgxMap),this.itemType==Pt&&this.set(it,hi(this.get(st))),this},this.parseCH=function(){var e=this.uaCH,t=this.rgxMap;switch(this.itemType){case Pt:var i,n=e[vt]||e[ht];if(n)for(var o in n){var r=vi(/(Google|Microsoft) /,n[o].brand||n[o]),a=n[o].version;/not.a.brand/i.test(r)||i&&(!/chrom/i.test(i)||/chromi/i.test(r))||(this.set(ot,r).set(st,a).set(it,hi(a)),i=r)}break;case Lt:var s=e[ct];s&&(s&&"64"==e[St]&&(s+="64"),Si.call(this.data,s+";",t));break;case Rt:if(e[dt]&&this.set(rt,dt),e[nt]&&this.set(nt,e[nt]),"Xbox"==e[nt]&&this.set(rt,ut).set(at,Kt),e[gt]){var c;if("string"!=typeof e[gt])for(var u=0;!c&&u<e[gt].length;)c=Ti(e[gt][u++],_i);else c=Ti(e[gt],_i);this.set(rt,c)}break;case Mt:var d=e[yt];if(d){var l=e[kt];d==si&&(l=parseInt(hi(l),10)>=13?"11":"10"),this.set(ot,d).set(st,l)}this.get(ot)==si&&"Xbox"==e[nt]&&this.set(ot,"Xbox").set(st,void 0);break;case $t:var p=this.data,w=function(t){return p[t].getItem().setCH(e).parseCH().get()};this.set(Pt,w(Pt)).set(Lt,w(Lt)).set(Rt,w(Rt)).set(Ut,w(Ut)).set(Mt,w(Mt))}return this},gi.call(this,[["itemType",e],["ua",t],["uaCH",n],["rgxMap",i],["data",Ci(this,e)]]),this}function Oi(e,t,i){if(typeof e===et?(wi(e,!0)?(typeof t===et&&(i=t),t=e):(i=e,t=void 0),e=void 0):typeof e!==tt||wi(t,!0)||(i=t,t=void 0),!(this instanceof Oi))return new Oi(e,t,i).getResult();var n=typeof e===tt?e:ci&&ci.userAgent?ci.userAgent:i&&i[ft]?i[ft]:Ye,o=new Ai(i,!0),r=t?di(xi,t):xi,a=function(e){return e==$t?function(){return new Ni(e,n,r,o).set("ua",n).set(Pt,this.getBrowser()).set(Lt,this.getCPU()).set(Rt,this.getDevice()).set(Ut,this.getEngine()).set(Mt,this.getOS()).get()}:function(){return new Ni(e,n,r[e],o).parseUA().get()}};return gi.call(this,[["getBrowser",a(Pt)],["getCPU",a(Lt)],["getDevice",a(Rt)],["getEngine",a(Ut)],["getOS",a(Mt)],["getResult",a($t)],["getUA",function(){return n}],["setUA",function(e){return mi(e)&&(n=e.length>bt?ki(e,bt):e),this}]]).setUA(n),this}Oi.VERSION="2.0.0-beta.3",Oi.BROWSER=li([ot,st,it,rt]),Oi.CPU=li([ct]),Oi.DEVICE=li([nt,at,rt,ut,dt,pt,lt,wt,mt]),Oi.ENGINE=Oi.OS=li([ot,st]);const Di=()=>{const e=navigator.userAgent;return/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(e)?"tablet":/Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(e)?"mobile":"desktop"};e.pubstackAutoconfig=async function(e){if(void 0===e.endpoint.gateway)return void a("[pbstckAutoconfig] no gateway url found in config");const t={gateway:e.endpoint.gateway,env:(i=e.endpoint.gateway,i.includes(x.DEV)?x.DEV:i.includes(x.BETA)?x.BETA:x.PROD),sessionTrackingDisabled:e.sessionTrackingDisabled??!1};var i;try{const i=window.top||window;i.pbstck=i.pbstck||{lock:{}},i.pbstck.lock=i.pbstck.lock||{};const n=`${e.tagId}@${t.env}@user-sessions`;if(i.pbstck.lock[n])return;i.pbstck.lock[n]=!0}catch(e){a("[pbstckAutoconfig] error while locking the integration",e)}const n=new Oi(navigator.userAgent),o=n.getOS(),s=n.getBrowser(),u={tagId:e.tagId,scopeId:e.scopeId,country:e.country,device:Di(),browserName:s.name||"unknown",browserVersion:s.major||"unknown",osName:o.name||"unknown",osVersion:o.version||"unknown",pbstckVersion:"b6ed2f5",customFields:c()},d=new Promise((e=>{setTimeout((()=>{e()}),300)})),l=(async()=>{try{return await(navigator?.cookieDeprecationLabel?.getValue())}catch(e){r("Error while getting cookie depreciation label",e)}})();await Promise.all([l,d]).then((e=>{const t=e[0]??"";t&&(u.customFields.cdep=t)})),u.tagId&&u.scopeId?(w(p.REPLACE_STATE),w(p.PUSH_STATE),(e=>{j(window,e)})(t),Xe(t,u),H(t,u)):a("[pbstckAutoconfig] no tagId or scopeId found in context")}}(this.userSessions=this.userSessions||{});
;
return this;}.bind({}); var _ = load();_.userSessions.pubstackAutoconfig({"endpoint":{"gateway":"https://intake.pbstck.com/v1/intake"},"scopeId":"f2521fbf-96a6-4b81-8284-15bcd5ddf73b","tagId":"d7f7fa8d-5918-4306-834c-b734d9e6f9a7","sessionTrackingDisabled":false}); })()</script><script type="text/javascript">(function() { var load = function() {!function(e){"use strict";function t(e,t,i,s){return new(i||(i=Promise))((function(n,o){function r(e){try{d(s.next(e))}catch(e){o(e)}}function a(e){try{d(s.throw(e))}catch(e){o(e)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof i?t:new i((function(e){e(t)}))).then(r,a)}d((s=s.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const i=e=>void 0!==e,s=[0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,59],n=e=>{if(!e)throw new Error("IllegalArgumentException");const t={_value:[108,98,39,46,7,187,1,66,98,184,33,117,98,149,197,141],_scratch:new Array(16)};function i(){let e,i;for(i=0;i<16;i++)t._scratch[i]=0;for(i=0;i<16;i++)for(let n=0;n<16-i;n++)e=t._value[15-i]*s[15-n]+(t._scratch[15-(i+n)]||0),e>255&&(i+n+1<16&&(t._scratch[15-(i+n+1)]+=e>>>8),e-=e>>>8<<8),t._scratch[15-(i+n)]=e;const n=t._scratch;t._scratch=t._value,t._value=n}return function(e){let s;if("string"==typeof e){const t=e.replace(/\r\n/g,"\n"),i=[];let n=0;for(s=0;s<t.length;s++){const e=t.charCodeAt(s);e<128?i[n++]=e:e<2048?(i[n++]=e>>6|192,i[n++]=63&e|128):(i[n++]=e>>12|224,i[n++]=e>>6&63|128,i[n++]=63&e|128)}e=i}for(s=0;s<e.length;s++)t._value[15]^=e[s],i()}(e),t._value.reduce(((e,t)=>e+("00"+t.toString(16)).slice(-2)),"")},o=(e,...t)=>{if(0===t.length||""===t.join(""))throw new Error("Failed to create hash");return n(t.join("")).substr(0,e)},r=(...e)=>{try{return o(14,...e)}catch(e){throw new Error("Failed to create an auction Id")}},a=(...e)=>{try{return o(8,...e)}catch(e){throw new Error("Failed to create a bid Id")}},d=()=>n(`${Math.random().toString(36)}${(new Date).getTime()}`);class c{constructor(e){this.subscriptions=[],this.children=[],this.processingChain=e?[...e]:[]}subscribe(e,t){this.subscriptions.push({onEvent:e,onError:t})}unsubscribe(e,t){this.subscriptions=this.subscriptions.filter((i=>!(i.onEvent===e&&i.onError===t)))}pipe(...e){const t=new c([...this.processingChain,...e]);return this.children.push(t),t}next(e){this.subscriptions.forEach((t=>{try{const i=this.processingChain.reduce(((e,t)=>{if(void 0!==e)return t(e)}),e);void 0!==i&&t.onEvent(i)}catch(e){t.onError&&t.onError(e)}})),this.children.forEach((t=>t.next(e)))}}const u=e=>{return[(t=([t])=>e.test(t),e=>{if(t(e))return e}),([,[e,...t]])=>[e,t]];var t};class l extends Error{constructor(e){super(e)}}function b(e,t){if(!Array.isArray(e))throw new l(null!=t?t:"Expected value to be an array, but received "+typeof e)}function p(e){return"number"==typeof e&&!isNaN(e)}function h(e){return"string"==typeof e}function m(e,t){if(!p(e))throw new l(null!=t?t:"Expected value to be a number, but received "+typeof e)}function v(e,t){if(null!=e&&"string"!=typeof e)throw new l("Expected value to be a string, undefined or null, but received "+typeof e)}function f(e,t){if(null!=e&&!function(e){return"boolean"==typeof e}(e))throw new l("Expected value to be a boolean, but received "+typeof e)}function g(e,t){if("string"!=typeof e)throw new l(null!=t?t:"Expected value to be a string, but received "+typeof e)}function w(e,t){if(null==e)throw new l(null!=t?t:`Expected value to be defined, but received ${e}`)}function y(e,t){if(!Array.isArray(e)||0===e.filter((e=>void 0!==e)).length)throw new l(null!=t?t:"Expected array to be not empty")}const I=e=>"object"==typeof e&&null!==e&&!Array.isArray(e);function k(e,t){if(!I(e))throw new l(null!=t?t:`Expected value to be record, but received '${typeof e}'`)}const C=(e,t)=>I(e)&&t in e;const A=[],R=new c;function S(e,t){let i=0;A.push((s=>{i>=t||(i+=1,e(s))}))}function T(e){A.forEach((t=>t({error:e})))}function E(e){var t;T({context:null!==(t=e.context)&&void 0!==t?t:{},message:e.message})}var j,x;const U=/pbstck:debug/.test(window.location.href),N=!!(null===(j=window.localStorage)||void 0===j?void 0:j.getItem)&&null!==window.localStorage.getItem("pbstck"),O=`[pbstck-${null!==(x="01e89e8")?x:"unknown"}]`;function B(){return U||N}function V(...e){B()&&console.log(O,...e)}function q(...e){B()&&console.warn(O,...e)}function $(...e){B()&&console.error(O,...e)}const D=["39216077","6943","8456","1021524","1026508","1030155","2165149","2444258","4708965","5624990","7321515","7687385","17085479","22181265","27416722","46481815","49313688","91083230","127208727","22247219933","22815767462","22702991301","22665197336","22022010600","21866864457","21823883819","21794835430","21734370771","21722279357"],z=e=>{var t,i,s;if(!(null===(t=e.pubstack)||void 0===t?void 0:t.adUnitName)&&e.ortb2Imp)for(const t of D){if(e.ortb2Imp.ext.data.pbadslot.startsWith(`/${t}/`)){const t=e.ortb2Imp.ext.data.pbadslot.replace(/\/$/,"").split("/").pop();return t||e.code}if(e.ortb2Imp.ext.gpid){const t=e.ortb2Imp.ext.gpid.replace(/\/$/,"").split("/").pop();return t||e.code}}return null!==(s=null===(i=e.pubstack)||void 0===i?void 0:i.adUnitName)&&void 0!==s?s:e.code},F=e=>{var t;if(null===(t=e.pubstack)||void 0===t?void 0:t.adUnitPath)return L(e.pubstack.adUnitPath);if(e.ortb2Imp){if(e.ortb2Imp.ext.data.pbadslot)return L(e.ortb2Imp.ext.data.pbadslot);if(e.ortb2Imp.ext.gpid)return L(e.ortb2Imp.ext.gpid)}},_=e=>{const t=[];return e.forEach((e=>{X(e).bids.forEach((e=>{t.some((t=>t.bidder===e.bidder))||t.push(e)}))})),t},M=e=>{const t={};return e.forEach((e=>{const i=X(e);void 0!==i.mediaTypes.native&&(t.native=i.mediaTypes.native),void 0!==i.mediaTypes.video&&i.mediaTypes.video.playerSize&&(t.video?t.video.playerSize=[...t.video.playerSize,...i.mediaTypes.video.playerSize]:t.video=i.mediaTypes.video),void 0!==i.mediaTypes.banner&&(t.banner?(t.banner.sizes=[...t.banner.sizes,...i.mediaTypes.banner.sizes],i.mediaTypes.banner.sizeConfig&&(t.banner.sizeConfig=i.mediaTypes.banner.sizeConfig)):t.banner=i.mediaTypes.banner)})),t},P=e=>{var t,i,s;const n=e=>"string"==typeof e?e:Array.isArray(e)&&2===e.length?`${e[0]}x${e[1]}`:"unknown",o=new Set;return(e=>{var t,i;return(void 0===(null===(t=e.mediaTypes.banner)||void 0===t?void 0:t.sizes)||0===(null===(i=e.mediaTypes.banner)||void 0===i?void 0:i.sizes.length))&&void 0===e.mediaTypes.native&&void 0===e.mediaTypes.video})(e)?[]:((null===(t=e.mediaTypes.banner)||void 0===t?void 0:t.sizes)&&(Array.isArray(e.mediaTypes.banner.sizes[0])?e.mediaTypes.banner.sizes.forEach((e=>o.add(n(e)))):o.add(n(e.mediaTypes.banner.sizes))),(null===(i=e.mediaTypes.video)||void 0===i?void 0:i.playerSize)&&(null===(s=e.mediaTypes.video)||void 0===s||s.playerSize.forEach((e=>o.add((e=>{const t=n(e);return"unknown"===t?"video":`video-${t}`})(e))))),e.mediaTypes.native&&o.add("native"),Array.from(o))},L=e=>e.startsWith("/")?e:`/${e}`,W=e=>{var t,i;const s=/^(adUnitPath)/;return(null!==(i=null===(t=e.pubstack)||void 0===t?void 0:t.tags)&&void 0!==i?i:[]).filter((e=>"string"==typeof e)).filter((e=>e.length>0&&e.length<256||s.test(e)))},G=e=>{const t=(e=>e.placementId||e.zoneId||e.siteId||void 0)(e);if(t)return`slot:${t}`},H=e=>{const t={hasUserId:"notAvailable",userIdProviderList:[]};if(0===e.length)return t;let i=!0;const s=e[0].bids[0];return e.forEach((e=>{e.bids.forEach((e=>{const n=Object.entries(e.userId||{}).flatMap((([e,t])=>{if(Array.isArray(t)){const i=t.filter((e=>Object.prototype.hasOwnProperty.call(e,"source"))).map((t=>`${e}:${t.source}`));return i.length?i:e}return e}));if(t.userIdProviderList=t.userIdProviderList.concat(n),t.userIdProviderList=t.userIdProviderList.concat(Object.keys(e.crumbs||{})),i=i&&typeof s.crumbs==typeof e.crumbs,s.crumbs&&e.crumbs){const t=Object.keys(s.crumbs),n=Object.keys(e.crumbs);i=i&&t.length===n.length&&t.every((e=>n.includes(e)))}if(i=i&&typeof s.userId==typeof e.userId,s.userId&&e.userId){const t=Object.keys(s.userId),n=Object.keys(e.userId);i=i&&t.length===n.length&&t.every((e=>n.includes(e)))}}))})),t.userIdProviderList.length>0&&i?t.hasUserId="available":t.userIdProviderList.length>0&&!i&&(t.hasUserId="notConsistent"),t.userIdProviderList=Array.from(new Set(t.userIdProviderList)),t},J=e=>{let t=e.map((e=>e.gdprConsent)).filter((e=>void 0!==e));return e.length!==t.length&&(t=[]),t},Q=e=>{const t={userConsentState:"notAvailable",userConsentVersion:"notAvailable"};try{if(0===e.length)return t;const i=e.every(((e,t,i)=>e.apiVersion===i[0].apiVersion)),s=e.every(((e,t,i)=>e.consentString===i[0].consentString));if(!i||!s)throw new Error("API version and Consent string must be unique within a bid request array");return(e=>{const t={userConsentState:"notAvailable",userConsentVersion:"notAvailable"};if(void 0===e)return t;let i=!1,s=!1;if(e.apiVersion&&1!==e.apiVersion){if(2!==e.apiVersion)throw e.apiVersion>2?new Error(`API version is not yet supported: ${e.apiVersion}`):new Error(`An issue occured while identifying TCF version: ${e.apiVersion}`);if(t.userConsentVersion="tcf-v2","boolean"==typeof e.gdprApplies&&!e.gdprApplies)return Object.assign(Object.assign({},t),{userConsentState:"notApplicable"});if((e=>{const t=e;return!!(t&&t.purpose&&t.purpose.consents&&t.vendor&&t.vendor.consents)})(e.vendorData)){const n=Object.values(e.vendorData.purpose.consents),o=Object.values(e.vendorData.vendor.consents);if(i=n.filter((e=>e)).length>0,s=o.filter((e=>e)).length>0,0===n.length||0===o.length)return Object.assign(Object.assign({},t),{userConsentState:"notAvailable"})}}else{if(t.userConsentVersion="tcf-v1","boolean"==typeof e.gdprApplies&&!e.gdprApplies)return Object.assign(Object.assign({},t),{userConsentState:"notApplicable"});if((e=>{const t=e;return!(!t||!t.purposeConsents||!t.vendorConsents)})(e.vendorData)){const n=Object.values(e.vendorData.purposeConsents),o=Object.values(e.vendorData.vendorConsents);if(i=n.filter((e=>e)).length>0,s=o.filter((e=>e)).length>0,0===n.length||0===o.length)return Object.assign(Object.assign({},t),{userConsentState:"notAvailable"})}}return t.userConsentState=i&&s?"accepted":"refused",t})(e[0])}catch(e){return e.context=e.context||{},e.context.pbjs={source:"pbjs:helpers"},E(e),t}},X=e=>JSON.parse(JSON.stringify(e));var K,Y;!function(e){e[e.LOADED=0]="LOADED",e[e.FAILED=1]="FAILED",e[e.NOT_READY=2]="NOT_READY"}(K||(K={})),function(e){e.RUNNING="running",e.NO_BID="noBid",e.BID="bidResponse",e.TIMEOUT="bidTimeout"}(Y||(Y={}));const Z=e=>e.state===Y.BID,ee=e=>Z(e)?e.bidResponseId:e.bidId;var te,ie;!function(e){e[e.ON_DONE=0]="ON_DONE",e[e.ON_SMART_MERGED=1]="ON_SMART_MERGED",e[e.NEVER=2]="NEVER"}(te||(te={})),function(e){e[e.PBJS=0]="PBJS",e[e.SMART_RTB=1]="SMART_RTB",e[e.AMAZON=2]="AMAZON",e[e.GAM=3]="GAM"}(ie||(ie={}));const se=400,ne="unknown",oe=new Map;class re{constructor(e,t=!1){this.onBidResponseStream=new c,this.onAuctionEndStream=new c,this.onBidWonStream=new c,this.onBidWonFromSdkStream=new c,e&&(this.pbjsConfig=e),this.admOnboarding=t}getAdServerCurrency(){var e;return null===(e=this.pbjsConfig)||void 0===e?void 0:e.adServerCurrency}onBidResponse(e){const t=r(e.adUnitCode,e.auctionId),i=a(e.requestId),s=a(i,e.adId);oe.set(e.adId,i),this.onBidResponseStream.next({adId:e.adId,auctionId:t,dealId:e.dealId||void 0,bidId:i,bidResponseId:s,cpm:e.cpm,currency:e.currency,size:e.size,mediaType:e.mediaType,tags:[],bidderCode:e.bidderCode,customFields:{},timeToRespond:e.timeToRespond,adapterCode:e.adapterCode,advertiserDomains:e.advertiserDomains})}onAuctionEnd(e,t="prebid"){var s,n;const o=(null===(n=window[(null===(s=this.pbjsConfig)||void 0===s?void 0:s.pbjsVariableName)||"pbjs"])||void 0===n?void 0:n.aliasRegistry)||{};!function(e,t){const i=[];if(e.forEach((e=>{try{t(e)}catch(e){i.push(e)}})),0!==i.length){const e=`forEach: Unexpected (${i.length}) errors\n${i.reduce(((e,t)=>`${e}\t- ${t.message}\n`),"")}`;throw new Error(e)}}(e.adUnits.filter((t=>void 0===e.adUnitCodes||e.adUnitCodes.includes(t.code))).reduce(((e,t)=>(e.find((e=>t.code===e.code))||e.push(t),e)),[]),(s=>{var n,c,u,l;const p=function(e,t){const i=e.adUnits.filter((e=>e.code===t)),s={code:t,bids:_(i),mediaTypes:M(i)},n=(e=>{let t;return e.forEach((e=>{const i=X(e);i.pubstack&&0!=Object.keys(i.pubstack).length?t=i.pubstack:JSON.stringify(i.pubstack)!==JSON.stringify(t)&&q(`Two different pubstack declaration found for a adUnitCode ${i.code}`,i.pubstack,t)})),t})(i);n&&(s.pubstack=n);const o=(e=>{let t;return e.forEach((e=>{const i=X(e);i.ortb2Imp?t=i.ortb2Imp:JSON.stringify(i.ortb2Imp)!==JSON.stringify(t)&&q(`Two different ortb2imp declaration found for a adUnitCode ${i.code}`,i.ortb2Imp,t)})),t})(i);o&&(s.ortb2Imp=o);return s}(e,s.code),h=(e=>({code:e.code,name:z(e),path:F(e)}))(p),m=r(p.code,e.auctionId),v=e.labels||[],f=(b(g=e.bidderRequests),g.length>0&&g.every((e=>w(e.bidderRequestId))),g);var g;const y=e.bidderRequests.flatMap((t=>{var n;const c=r(s.code,e.auctionId),u=t.gdprConsent,l=t.bidderCode,b=null===(n=e.seatNonBids)||void 0===n?void 0:n.find((e=>e.seat===t.bidderCode)),p=null==b?void 0:b.nonbid.find((e=>e.impid===s.code)),h=t.bids.filter((e=>e.adUnitCode===s.code)).map((t=>{const s=a(t.bidId),n=e.bidsReceived.find((e=>e.requestId===t.bidId)),r=e.noBids.find((e=>e.bidId===t.bidId)),d=e.bidsRejected.find((e=>e.requestId===t.bidId));let b={state:Y.TIMEOUT};if(n){const e=a(s,n.adId);b={adId:n.adId,bidResponseId:e,cpm:n.cpm,currency:n.currency,size:n.size,mediaType:n.mediaType,bidNetRevenue:n.netRevenue,state:Y.BID,timeToRespond:n.timeToRespond,dealId:n.dealId||void 0,advertiserDomains:n.advertiserDomains}}else r?b={state:Y.NO_BID}:d&&(b={state:Y.NO_BID,rejectionReason:d.rejectionReason});const p={};return this.admOnboarding&&(p.bidderParams=JSON.stringify(t.params)),Object.assign({auctionId:c,bidId:s,gdprConsent:u,bidderCode:l,adapterCode:o[l],source:t.src,tags:[G(t.params)].filter(i),customFields:p},b)}));return p&&h.push({bidId:a(d()),auctionId:c,gdprConsent:u,bidderCode:l,adapterCode:o[l],source:"s2s",tags:[],customFields:{source:"s2s"},state:101===p.statuscode?Y.TIMEOUT:Y.NO_BID}),h})),I={source:t};if(this.admOnboarding){const e=window[this.pbjsConfig.pbjsVariableName],t=e.installedModules,{userSync:i,fledgeForGpt:n,floors:o,paapi:r,schain:a,realTimeData:d}=e.getConfig();I.config_installedModules=JSON.stringify(t),I.config_userSync=JSON.stringify(i),I.config_fledgeForGpt=JSON.stringify(n),I.config_floors=JSON.stringify(o),I.config_paapi=JSON.stringify(r),I.config_schain=JSON.stringify(a),I.config_realTimeData=JSON.stringify(d),I.adunitcode=s.code}const k={auctionId:m,adUnit:h,refreshIndex:0,sizes:P(p),userId:H(f),pbjsVersion:null!==(c=null===(n=this.pbjsConfig)||void 0===n?void 0:n.version)&&void 0!==c?c:ne,tags:[...W(p)],labels:v,gracePeriod:null!==(l=null===(u=this.pbjsConfig)||void 0===u?void 0:u.gracePeriod)&&void 0!==l?l:se,duration:e.auctionEnd-e.timestamp,bidRequests:y,timeout:e.timeout,customFields:I};this.onAuctionEndStream.next(k)}))}onBidWon(e){var t;const i=(null===(t=window[this.pbjsConfig.pbjsVariableName])||void 0===t?void 0:t.aliasRegistry)||{},s=Object.assign(Object.assign({},e),{pbstckAdapterCode:i[e.bidderCode],bidNetRevenue:e.netRevenue,dealId:e.dealId||void 0,auctionId:r(e.adUnitCode,e.auctionId),tags:[],customFields:{source:"prebid"}});this.onBidWonStream.next(s)}onBidWonFromSdk(e){const t=Object.assign(Object.assign({},e),{customFields:{source:"sdk"}});this.onBidWonFromSdkStream.next(t)}}const ae=(e,t,i)=>{const s=e;s[i]=s[i]||[];const n=s[i];e.pbstck=e.pbstck||{},e.pbstck.sdk=e.pbstck.sdk||{},e.pbstck.sdk[t]=e.pbstck.sdk[t]||{p:[],q:n},e.pbstck.sdk[t].p=e.pbstck.sdk[t].p||[],e.pbstck.sdk[t].q=e.pbstck.sdk[t].q||n,e.pbstck.sdk[t].q!==n&&(e.pbstck.sdk[t].q=e.pbstck.sdk[t].q.concat(n));const o={cmd:(...i)=>{const s=["cmd",i];(e.pbstck.sdk[t].q||[]).push(s),(e.pbstck.sdk[t].p||[]).forEach((e=>e(s)))}};return e.Pubstack=o,o},de=e=>{const t=[];return JSON.parse(JSON.stringify(e,((e,i)=>{if("object"==typeof i&&null!==i){if(t.includes(i))return;t.push(i)}return i})))},ce={AUCTION_INIT:"auctionInit",AUCTION_END:"auctionEnd",BID_TIMEOUT:"bidTimeout",BID_REQUESTED:"bidRequested",BID_RESPONSE:"bidResponse",BID_WON:"bidWon",NO_BID:"noBid"},ue=new c;function le(e,t,i="prebid"){return{on(s,n){V(`[pbjsIntegration] pbjs.dispatcher (${i}) ${s}`,n),"sdk"===i&&function(e){const t=window.pbstck.scopeId,i=window.pbstck.tagId,s=Object.assign(Object.assign({},e),{source:"collector",type:"log",tagId:i,scopeId:t});ue.next(s)}({id:"sdk-usage",level:"info",message:"sdk usage",eventName:s}),s===ce.AUCTION_END&&t.onAuctionEnd(e.toAuctionEnd(n),i),s===ce.BID_RESPONSE&&t.onBidResponse(e.toBidResponse(n)),s===ce.BID_WON&&"prebid"===i&&t.onBidWon(e.toBidWon(n)),s===ce.BID_WON&&"sdk"===i&&t.onBidWonFromSdk(e.toBidWonFromSdk(n))}}}function be(e){let t;if(void 0!==e)if(p(e))t=e;else if(h(e)){const i=Number(e);isNaN(i)||(t=i)}return void 0!==t?Math.trunc(t):t}function pe(e){try{return b(t=e,i),t.every((e=>g(e))),e}catch(e){return}var t,i}function he(e){try{return k(e),e}catch(e){return{}}}function me(e){try{return v(e),e}catch(e){return void V("Error on validator but not throwing since not mandatory",e.message)}}function ve(){const e=e=>{var t,i;k(e,"Auction event's adUnits should all be objects"),g(e.code,'Auction event\'s adUnits should all have a key "code" as a string'),b(e.bids,'Auction event\'s adUnits should all have a key "bids" as an array');const s=e.bids.map((t=>{try{return(e=>{var t;k(e,"Auction event's adUnits bidders should all be objects"),g(e.bidder,'Auction event\'s adUnits bidders should all have a key "bidder" as a string');const i=null!==(t=e.params)&&void 0!==t?t:{};return k(i,'Auction event\'s adUnits bidders should all have a key "params" as an object'),{bidder:e.bidder,params:i}})(t)}catch(t){return void q(`[pbjsIntegration] Discarding bidder from ${e.code}`,t)}})).filter((e=>void 0!==e)),n={};if(e.mediaTypes){if(k(e.mediaTypes,'Auction event\'s adUnits should all have a key "mediaTypes" as an object'),e.mediaTypes.banner){k(e.mediaTypes.banner,'Auction event\'s adUnits mediaTypes can all have a key "banner" that should be an object');const i=null!==(t=e.mediaTypes.banner.sizes)&&void 0!==t?t:[];b(i,'Auction event\'s adUnits mediaTypes banner should all have a key "sizes" that should be an array');const s=i.filter((e=>Array.isArray(e)&&2===e.length)).map((e=>{try{return b(e),[parseInt(e[0]),parseInt(e[1])]}catch(e){return[0,0]}}));n.banner={sizes:s,sizeConfig:e.mediaTypes.banner.sizeConfig}}if(e.mediaTypes.native&&(n.native={sizes:"native"}),e.mediaTypes.video&&(k(e.mediaTypes.video,'Auction event\'s adUnits mediaTypes can all have a key "video" that should be an object'),e.mediaTypes.video.playerSize)){b(e.mediaTypes.video.playerSize,'Auction event\'s adUnits mediaTypes video should all have a key "playerSize" that should be an array');const t=(null!==(i=e.mediaTypes.video.playerSize)&&void 0!==i?i:[]).filter((e=>Array.isArray(e)&&2===e.length));n.video={playerSize:t}}}const o={bids:s,code:e.code,mediaTypes:n},r=e.pubstack;void 0!==r&&(k(r),o.pubstack=r);const a=(e=>{if(!C(e,"ortb2Imp"))return;const t=e.ortb2Imp;if(!C(t,"ext"))return;const i=t.ext;if(!C(i,"data"))return;const s=i.data;return C(s,"pbadslot")&&h(s.pbadslot)?{ext:{data:{pbadslot:s.pbadslot}}}:void 0})(e);return a&&(o.ortb2Imp=a),o},t=e=>{k(e,"Auction event's bidderRequests should all be objects"),g(e.bidderRequestId,'Auction event\'s bidderRequests should all have a key "bidderRequestId" as a string'),g(e.bidderCode,'Auction event\'s bidderRequests should all have a key "bidderCode" as a string'),b(e.bids,'Auction event\'s bidderRequests should all have a key "bids" as an array');const t=e.bids.map((t=>{try{return i(t,"Auction event's bidderRequests")}catch(t){return void q(`[pbjsIntegration] Discarding bid request from ${e.bidderRequestId}`,t)}})).filter((e=>void 0!==e)),s={bidderRequestId:e.bidderRequestId,bids:t,bidderCode:e.bidderCode};return e.gdprConsent&&(s.gdprConsent=e.gdprConsent),s},i=(e,t)=>{var i,s,n;k(e,t+"'s bids should all be objects"),g(e.adUnitCode,t+' bids should all have a key "adUnitCode" as a string'),g(e.bidId,t+' bids should all have a key "bidId" as a string'),g(e.bidder,t+' bids should all have a key "bidder" as a string');const o=null!==(i=e.params)&&void 0!==i?i:{};k(o,t+' bids can all have a key "params" that should be an object');const r=null!==(s=e.userId)&&void 0!==s?s:{};k(r,t+' bids can all have a key "userId" that should be an object');const a=null!==(n=e.crumbs)&&void 0!==n?n:{};return k(a,t+' bids can all have a key "crumbs" that should be an object'),v(e.src),{adUnitCode:e.adUnitCode,bidId:e.bidId,bidder:e.bidder,params:o,userId:r,crumbs:a,src:e.src}};return{toBidRejected:e=>(k(e,"BidRejected event should be an object"),g(e.requestId,'BidRequested event should have a "requestId" key as a string'),g(e.rejectionReason,'BidRejected event should have a "rejectionReason" key as a string'),{requestId:e.requestId,rejectionReason:e.rejectionReason}),toSeatNonBid:function(e){return k(e,"SeatNonBid event should be an object"),g(e.seat,'SeatNonBid event should have a "seat" key as a string'),b(e.nonbid,'SeatNonBid event should have a "seat" key as a string'),e.nonbid.map((t=>{try{return k(t,"Nonbid should be an object"),g(t.impid,'Nonbid should have a "impid" key as a string'),m(t.statuscode,'Nonbid should have a "statuscode" key as a number'),{impid:t.impid,statuscode:t.statuscode}}catch(t){return void q(`[pbjsIntegration] Discarding Nonbid from auction event ${e.auctionId}`,t)}})).filter((e=>void 0!==e)),{seat:e.seat,nonbid:e.nonbid}},toAuctionEnd:function(i){let s,n,o=[];k(i,"Auction event should be an object"),g(i.auctionId,'Auction event should have a "auctionId" key as a string'),b(i.adUnits,'Auction event should have a "adUnits" key as a non-empty array'),y(i.adUnits,'Auction event should have a "adUnits" key as a non-empty array'),void 0!==i.labels&&(b(i.labels,'Auction event can have a "labels" key that should be an array'),n=i.labels),b(i.bidderRequests,'Auction event should have a "bidderRequests" key as a non-empty array'),y(i.bidderRequests,'Auction event should have a "bidderRequests" key as a non-empty array');const r=be(i.timeout);i.timeout&&!r&&q(`[pbjsIntegration] unable to read timeout from auction event ${i.auctionId}`);const a=i.adUnits.map((t=>{try{return e(t)}catch(e){return void q(`[pbjsIntegration] Discarding adUnit from auction event ${i.auctionId}`,e)}})).filter((e=>void 0!==e)),d=i.bidderRequests.map((e=>{try{return t(e)}catch(e){return void q(`[pbjsIntegration] Discarding bidderRequest from auction event ${i.auctionId}`,e)}})).filter((e=>void 0!==e));b(i.bidsReceived,'Auction event should have a "bidsReceived" key as a non-empty array');const c=i.bidsReceived.map((e=>{try{return this.toBidResponse(e)}catch(e){return void q(`[pbjsIntegration] Discarding bidReceived from auction event ${i.auctionId}`,e)}})).filter((e=>void 0!==e));b(i.adUnitCodes,'Auction event should have a "adUnitCodes" key as a non-empty array'),y(i.adUnitCodes,'Auction event should have a "adUnitCodes" key as a non-empty array');try{b(i.bidsRejected,'Auction event should have a "bidsRejected" key as an array'),o=i.bidsRejected.map((e=>{try{return this.toBidRejected(e)}catch(e){return void q(`[pbjsIntegration] Discarding bidRejected from auction event ${i.auctionId}`,e)}})).filter((e=>void 0!==e))}catch(e){V("Error on validator but not throwing since not mandatory",e.message)}b(i.noBids,'Auction event should have a "noBids" key as an array');const u=i.noBids.map((e=>{try{return this.toNoBid(e)}catch(e){return void q(`[pbjsIntegration] Discarding noBid from auction event ${i.auctionId}`,e)}})).filter((e=>void 0!==e));try{b(i.seatNonBids,'Auction event should have a "noBids" key as an array'),s=i.seatNonBids.map((e=>{try{return this.toSeatNonBid(e)}catch(e){return void q(`[pbjsIntegration] Discarding SeatNonBids from auction event ${i.auctionId}`,e)}})).filter((e=>void 0!==e))}catch(e){V("Error on validator but not throwing since not mandatory",e.message)}return function(e,t,i){if(!t.includes(e))throw new l(`Expected values to be one of '${t}', but received ${e}`)}(i.auctionStatus,["completed","inProgress","started"]),m(i.auctionEnd),m(i.timestamp),{auctionId:i.auctionId,bidderRequests:d,adUnits:a,labels:n,timeout:r,auctionEnd:i.auctionEnd,auctionStatus:i.auctionStatus,noBids:u,adUnitCodes:i.adUnitCodes,bidsRejected:o,bidsReceived:c,timestamp:i.timestamp,winningBids:[],seatNonBids:s}},toAuction:function(i){let s;k(i,"Auction event should be an object"),g(i.auctionId,'Auction event should have a "auctionId" key as a string'),b(i.adUnits,'Auction event should have a "adUnits" key as a non-empty array'),y(i.adUnits,'Auction event should have a "adUnits" key as a non-empty array'),void 0!==i.labels&&(b(i.labels,'Auction event can have a "labels" key that should be an array'),s=i.labels),b(i.bidderRequests,'Auction event should have a "bidderRequests" key as a non-empty array'),y(i.bidderRequests,'Auction event should have a "bidderRequests" key as a non-empty array');const n=be(i.timeout);i.timeout&&!n&&q(`[pbjsIntegration] unable to read timeout from auction event ${i.auctionId}`);const o=i.adUnits.map((t=>{try{return e(t)}catch(e){return void q(`[pbjsIntegration] Discarding adUnit from auction event ${i.auctionId}`,e)}})).filter((e=>void 0!==e)),r=i.bidderRequests.map((e=>{try{return t(e)}catch(e){return void q(`[pbjsIntegration] Discarding bidderRequest from auction event ${i.auctionId}`,e)}})).filter((e=>void 0!==e));return{auctionId:i.auctionId,bidderRequests:r,adUnits:o,labels:s,timeout:n}},toBidRequested(e){k(e,"BidRequested event should be an object"),g(e.auctionId,'BidRequested event should have a "auctionId" key as a string'),b(e.bids,'BidRequested event should have a "bids" key as an array');const t=e.bids.map((t=>{try{return i(t,"BidRequested event")}catch(t){return void q(`[pbjsIntegration] Discarding bid request from bid requested event ${e.auctionId}`,t)}})).filter((e=>void 0!==e)),s={auctionId:e.auctionId,bids:t};return e.gdprConsent&&(s.gdprConsent=e.gdprConsent),s},toBidResponse(e){var t;k(e,"BidResponse event should be an object"),g(e.auctionId,'BidRequested event should have a "auctionId" key as a string'),g(e.adUnitCode,'BidRequested event should have a "adUnitCode" key as a string'),g(e.adId,'BidRequested event should have a "adId" key as a string'),g(e.requestId,'BidRequested event should have a "requestId" key as a string');const i=h(e.cpm)?Number.parseFloat(e.cpm):e.cpm;let s;const n=me(e.dealId);m(i,'BidRequested event should have a "cpm" key as a number');let o,r=e.size;"string"!=typeof r&&(r=e.width&&e.height?`${e.width}x${e.height}`:"unknown"),g(e.mediaType,'BidRequested event should have a "mediaType" key as a string'),g(r,'BidRequested event should have a "size" key as a string'),h(e.currency)&&(o=e.currency),g(e.bidderCode,'BidResponse event should have a "bidderCode" key as a string'),function(e,t){if(null!=e&&!p(e))throw new l("Expected value to be a number, but received "+typeof e)}(e.timeToRespond),f(e.netRevenue);const a=pe(he(e.meta).advertiserDomains);try{g(e.adapterCode,'BidWon event should have a "bidderCode" key as a string'),s=e.adapterCode}catch(e){V("Error on validator but not throwing since not mandatory",e.message)}return{adId:e.adId,adUnitCode:e.adUnitCode,auctionId:e.auctionId,cpm:i,currency:o,requestId:e.requestId,size:r,bidderCode:e.bidderCode,mediaType:null!==(t=e.mediaType)&&void 0!==t?t:"banner",timeToRespond:e.timeToRespond,adapterCode:s,netRevenue:e.netRevenue,dealId:n,advertiserDomains:a}},toBidTimeout(e){b(e,"BidTimeout event should be an array");const t=[];return e.forEach((e=>{try{k(e,"BidTimeout events should all be objects"),g(e.adUnitCode,'BidTimeout events should all have a key "adUnitCode" as a string'),g(e.auctionId,'BidTimeout events should all have a key "auctionId" as a string'),g(e.bidId,'BidTimeout events should all have a key "bidId" as a string'),t.push({adUnitCode:e.adUnitCode,auctionId:e.auctionId,bidId:e.bidId})}catch(t){V("Discarding bid timeout event because ",t.message,e)}})),t},toNoBid:e=>(k(e,"NoBid event should be an object"),g(e.auctionId,'NoBid event should have a "auctionId" key as a string'),g(e.bidId,'NoBid event should have a "bidId" key as a string'),g(e.adUnitCode,'NoBid event should have a "adUnitCode" key as a string'),{bidId:e.bidId,adUnitCode:e.adUnitCode,auctionId:e.auctionId}),toBidWon(e){var t;let i,s,n,o,r,a;k(e,"BidWon event should be an object"),g(e.adId,'BidWon event should have a "adId" key as a string'),g(e.requestId,'BidWon event should have a "requestId" key as a string');const d=me(e.dealId);h(e.currency)&&(a=e.currency);const c=h(e.cpm)?Number.parseFloat(e.cpm):e.cpm;m(c,'BidRequested event should have a "cpm" key as a number'),g(e.mediaType,'BidRequested event should have a "mediaType" key as a string'),g(e.size,'BidWon event should have a "size" key as a string'),r=e.size,g(e.auctionId,'BidWon event should have a "auctionId" key as a string'),i=e.auctionId,g(e.adUnitCode,'BidWon event should have a "adUnitCode" key as a string'),s=e.adUnitCode;try{g(e.bidderCode,'BidWon event should have a "bidderCode" key as a string'),n=e.bidderCode}catch(e){V("Error on validator but not throwing since not mandatory for monitoring (only for refresh)",e.message)}try{g(e.adapterCode,'BidWon event should have a "bidderCode" key as a string'),o=e.adapterCode}catch(e){V("Error on validator but not throwing since not mandatory",e.message)}f(e.netRevenue),v(e.source);const u=pe(he(e.meta).advertiserDomains);return{adId:e.adId,adUnitCode:s,auctionId:i,bidderCode:n,adapterCode:o,size:r,requestId:e.requestId,currency:a,cpm:c,mediaType:null!==(t=e.mediaType)&&void 0!==t?t:"banner",dealId:d,netRevenue:e.netRevenue,source:e.source,advertiserDomains:u}},toBidWonFromSdk:e=>(k(e,"BidWon event should be an object"),g(e.adId,'BidWon event should have a "adId" key as a string'),{adId:e.adId})}}const fe=(e,t)=>{const i=ve(),s=new re(void 0),n=le(i,s,"sdk");t.bindIntegration(s),e.subscribe((([e,[t]])=>{try{n.on(e,t)}catch(e){e.context=e.context||{},e.context.pbjs={source:"sdk:pbjs"},E(e)}}))};function ge(e,t,i){const s=new c,n=[];ae(e,i.tagId,i.globalQueue);const o=e[i.globalQueue],r=t=>{!function(e,t){if(void 0!==e)throw new l(null!=t?t:`Expected value to be undefined, but received ${e}`)}(Object.values(e.pbstck.sdk).find((t=>t!==e.pbstck.sdk[i.tagId]&&t.q===o)),`Concurrency on '${i.globalQueue}' globalQueue (more than 1 destination configured)`),s.next([t[0],de(Object.values(t[1]))])};return s.subscribe(((...e)=>n.push(e))),fe(s.pipe(...u(/cmd/)).pipe(...u(/pbjs|prebid/)),t),{debug:()=>({events:n}),dispatchEvents:()=>{e.pbstck.sdk[i.tagId].q.forEach(r),e.pbstck.sdk[i.tagId].p.push(r)}}}const we=(e,t)=>{if(!e||!t)throw new Error("IllegalArgumentException");return`${e}_${t}`};var ye,Ie="",ke="function",Ce="undefined",Ae="object",Re="string",Se="major",Te="model",Ee="name",je="type",xe="vendor",Ue="version",Ne="architecture",Oe="console",Be="mobile",Ve="tablet",qe="smarttv",$e="wearable",De="xr",ze="embedded",Fe="user-agent",_e=500,Me="brands",Pe="formFactors",Le="fullVersionList",We="platform",Ge="platformVersion",He="bitness",Je="sec-ch-ua",Qe=Je+"-full-version-list",Xe=Je+"-arch",Ke=Je+"-"+He,Ye=Je+"-form-factors",Ze=Je+"-"+Be,et=Je+"-"+Te,tt=Je+"-"+We,it=tt+"-version",st=[Me,Le,Be,Te,We,Ge,Ne,Pe,He],nt="browser",ot="cpu",rt="device",at="engine",dt="os",ct="result",ut="Amazon",lt="Apple",bt="ASUS",pt="BlackBerry",ht="Google",mt="Huawei",vt="Lenovo",ft="LG",gt="Microsoft",wt="Motorola",yt="Samsung",It="Sharp",kt="Sony",Ct="Xiaomi",At="Zebra",Rt="Mobile ",St=" Browser",Tt="Chrome",Et="Chromecast",jt="Firefox",xt="Opera",Ut="Facebook",Nt="Sogou",Ot="Windows",Bt=typeof window!==Ce&&window.navigator?window.navigator:void 0,Vt=Bt&&Bt.userAgentData?Bt.userAgentData:void 0,qt=function(e,t){var i={},s=t;if(!zt(t))for(var n in s={},t)for(var o in t[n])s[o]=t[n][o].concat(s[o]?s[o]:[]);for(var r in e)i[r]=s[r]&&s[r].length%2==0?s[r].concat(e[r]):e[r];return i},$t=function(e){for(var t={},i=0;i<e.length;i++)t[e[i].toUpperCase()]=e[i];return t},Dt=function(e,t){if(typeof e===Ae&&e.length>0){for(var i in e)if(Mt(e[i])==Mt(t))return!0;return!1}return!!Ft(e)&&-1!==Mt(t).indexOf(Mt(e))},zt=function(e,t){for(var i in e)return/^(browser|cpu|device|engine|os)$/.test(i)||!!t&&zt(e[i])},Ft=function(e){return typeof e===Re},_t=function(e){if(e){for(var t=[],i=Wt(/\\?\"/g,e).split(","),s=0;s<i.length;s++)if(i[s].indexOf(";")>-1){var n=Ht(i[s]).split(";v=");t[s]={brand:n[0],version:n[1]}}else t[s]=Ht(i[s]);return t}},Mt=function(e){return Ft(e)?e.toLowerCase():e},Pt=function(e){return Ft(e)?Wt(/[^\d\.]/g,e).split(".")[0]:void 0},Lt=function(e){for(var t in e){var i=e[t];typeof i==Ae&&2==i.length?this[i[0]]=i[1]:this[i]=void 0}return this},Wt=function(e,t){return Ft(t)?t.replace(e,Ie):t},Gt=function(e){return Wt(/\\?\"/g,e)},Ht=function(e,t){if(Ft(e))return e=Wt(/^\s\s*/,e),typeof t===Ce?e:e.substring(0,_e)},Jt=function(e,t){if(e&&t)for(var i,s,n,o,r,a,d=0;d<t.length&&!r;){var c=t[d],u=t[d+1];for(i=s=0;i<c.length&&!r&&c[i];)if(r=c[i++].exec(e))for(n=0;n<u.length;n++)a=r[++s],typeof(o=u[n])===Ae&&o.length>0?2===o.length?typeof o[1]==ke?this[o[0]]=o[1].call(this,a):this[o[0]]=o[1]:3===o.length?typeof o[1]!==ke||o[1].exec&&o[1].test?this[o[0]]=a?a.replace(o[1],o[2]):void 0:this[o[0]]=a?o[1].call(this,a,o[2]):void 0:4===o.length&&(this[o[0]]=a?o[3].call(this,a.replace(o[1],o[2])):void 0):this[o]=a||void 0;d+=2}},Qt=function(e,t){for(var i in t)if(typeof t[i]===Ae&&t[i].length>0){for(var s=0;s<t[i].length;s++)if(Dt(t[i][s],e))return"?"===i?void 0:i}else if(Dt(t[i],e))return"?"===i?void 0:i;return t.hasOwnProperty("*")?t["*"]:e},Xt={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},Kt={embedded:"Automotive",mobile:"Mobile",tablet:["Tablet","EInk"],smarttv:"TV",wearable:"Watch",xr:["VR","XR"],"?":["Desktop","Unknown"],"*":void 0},Yt={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[Ue,[Ee,Rt+"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[Ue,[Ee,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[Ee,Ue],[/opios[\/ ]+([\w\.]+)/i],[Ue,[Ee,xt+" Mini"]],[/\bop(?:rg)?x\/([\w\.]+)/i],[Ue,[Ee,xt+" GX"]],[/\bopr\/([\w\.]+)/i],[Ue,[Ee,xt]],[/\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\/ ]?([\w\.]+)/i],[Ue,[Ee,"Baidu"]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\/ ]?([\w\.]*)/i,/(avant|iemobile|slim)\s?(?:browser)?[\/ ]?([\w\.]*)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[Ee,Ue],[/quark(?:pc)?\/([-\w\.]+)/i],[Ue,[Ee,"Quark"]],[/\bddg\/([\w\.]+)/i],[Ue,[Ee,"DuckDuckGo"]],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[Ue,[Ee,"UCBrowser"]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i,/micromessenger\/([\w\.]+)/i],[Ue,[Ee,"WeChat"]],[/konqueror\/([\w\.]+)/i],[Ue,[Ee,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[Ue,[Ee,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[Ue,[Ee,"Yandex"]],[/slbrowser\/([\w\.]+)/i],[Ue,[Ee,"Smart "+vt+St]],[/(avast|avg)\/([\w\.]+)/i],[[Ee,/(.+)/,"$1 Secure"+St],Ue],[/\bfocus\/([\w\.]+)/i],[Ue,[Ee,jt+" Focus"]],[/\bopt\/([\w\.]+)/i],[Ue,[Ee,xt+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[Ue,[Ee,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[Ue,[Ee,"Dolphin"]],[/coast\/([\w\.]+)/i],[Ue,[Ee,xt+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[Ue,[Ee,"MIUI"+St]],[/fxios\/([\w\.-]+)/i],[Ue,[Ee,Rt+jt]],[/\bqihu|(qi?ho?o?|360)browser/i],[[Ee,"360"+St]],[/\b(qq)\/([\w\.]+)/i],[[Ee,/(.+)/,"$1Browser"],Ue],[/(oculus|sailfish|huawei|vivo|pico)browser\/([\w\.]+)/i],[[Ee,/(.+)/,"$1"+St],Ue],[/samsungbrowser\/([\w\.]+)/i],[Ue,[Ee,yt+" Internet"]],[/(comodo_dragon)\/([\w\.]+)/i],[[Ee,/_/g," "],Ue],[/metasr[\/ ]?([\d\.]+)/i],[Ue,[Ee,Nt+" Explorer"]],[/(sogou)mo\w+\/([\d\.]+)/i],[[Ee,Nt+" Mobile"],Ue],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|2345Explorer)[\/ ]?([\w\.]+)/i],[Ee,Ue],[/(lbbrowser|rekonq)/i,/\[(linkedin)app\]/i],[Ee],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[Ee,Ut],Ue],[/(Klarna)\/([\w\.]+)/i,/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(alipay)client\/([\w\.]+)/i,/(twitter)(?:and| f.+e\/([\w\.]+))/i,/(chromium|instagram|snapchat)[\/ ]([-\w\.]+)/i],[Ee,Ue],[/\bgsa\/([\w\.]+) .*safari\//i],[Ue,[Ee,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[Ue,[Ee,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[Ue,[Ee,Tt+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[Ee,Tt+" WebView"],Ue],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[Ue,[Ee,"Android"+St]],[/chrome\/([\w\.]+) mobile/i],[Ue,[Ee,Rt+"Chrome"]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[Ee,Ue],[/version\/([\w\.\,]+) .*mobile(?:\/\w+ | ?)safari/i],[Ue,[Ee,Rt+"Safari"]],[/iphone .*mobile(?:\/\w+ | ?)safari/i],[[Ee,Rt+"Safari"]],[/version\/([\w\.\,]+) .*(safari)/i],[Ue,Ee],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[Ee,[Ue,"1"]],[/(webkit|khtml)\/([\w\.]+)/i],[Ee,Ue],[/(?:mobile|tablet);.*(firefox)\/([\w\.-]+)/i],[[Ee,Rt+jt],Ue],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[Ee,"Netscape"],Ue],[/(wolvic)\/([\w\.]+)/i],[Ee,Ue],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[Ue,[Ee,jt+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i],[Ee,[Ue,/_/g,"."]],[/(cobalt)\/([\w\.]+)/i],[Ee,[Ue,/[^\d\.]+./,Ie]]],cpu:[[/\b(?:(amd|x|x86[-_]?|wow|win)64)\b/i],[[Ne,"amd64"]],[/(ia32(?=;))/i,/((?:i[346]|x)86)[;\)]/i],[[Ne,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[Ne,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[Ne,"armhf"]],[/windows (ce|mobile); ppc;/i],[[Ne,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[Ne,/ower/,Ie,Mt]],[/(sun4\w)[;\)]/i],[[Ne,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[Ne,Mt]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[Te,[xe,yt],[je,Ve]],[/\b((?:s[cgp]h|gt|sm)-(?![lr])\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]((?!sm-[lr])[-\w]+)/i,/sec-(sgh\w+)/i],[Te,[xe,yt],[je,Be]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[Te,[xe,lt],[je,Be]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[Te,[xe,lt],[je,Ve]],[/(macintosh);/i],[Te,[xe,lt]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[Te,[xe,It],[je,Be]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[Te,[xe,mt],[je,Ve]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[Te,[xe,mt],[je,Be]],[/\b(poco[\w ]+|m2\d{3}j\d\d[a-z]{2})(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/oid[^\)]+; (m?[12][0-389][01]\w{3,6}[c-y])( bui|; wv|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite|pro)?)(?: bui|\))/i],[[Te,/_/g," "],[xe,Ct],[je,Be]],[/oid[^\)]+; (2\d{4}(283|rpbf)[cgl])( bui|\))/i,/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[Te,/_/g," "],[xe,Ct],[je,Ve]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[Te,[xe,"OPPO"],[je,Be]],[/\b(opd2\d{3}a?) bui/i],[Te,[xe,"OPPO"],[je,Ve]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[Te,[xe,"Vivo"],[je,Be]],[/\b(rmx[1-3]\d{3})(?: bui|;|\))/i],[Te,[xe,"Realme"],[je,Be]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[Te,[xe,wt],[je,Be]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[Te,[xe,wt],[je,Ve]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[Te,[xe,ft],[je,Ve]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[Te,[xe,ft],[je,Be]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[Te,[xe,vt],[je,Ve]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[Te,/_/g," "],[xe,"Nokia"],[je,Be]],[/(pixel c)\b/i],[Te,[xe,ht],[je,Ve]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[Te,[xe,ht],[je,Be]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[Te,[xe,kt],[je,Be]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[Te,"Xperia Tablet"],[xe,kt],[je,Ve]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[Te,[xe,"OnePlus"],[je,Be]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo(?!bc)\w\w)( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[Te,[xe,ut],[je,Ve]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[Te,/(.+)/g,"Fire Phone $1"],[xe,ut],[je,Be]],[/(playbook);[-\w\),; ]+(rim)/i],[Te,xe,[je,Ve]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[Te,[xe,pt],[je,Be]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[Te,[xe,bt],[je,Ve]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[Te,[xe,bt],[je,Be]],[/(nexus 9)/i],[Te,[xe,"HTC"],[je,Ve]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[xe,[Te,/_/g," "],[je,Be]],[/tcl (xess p17aa)/i,/droid [\w\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\w(\w|\w\w))?(\)| bui)/i],[Te,[xe,"TCL"],[je,Ve]],[/droid [\w\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\w(\w|\w\w))?(\)| bui)/i],[Te,[xe,"TCL"],[je,Be]],[/(itel) ((\w+))/i],[[xe,Mt],Te,[je,Qt,{tablet:["p10001l","w7001"],"*":"mobile"}]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[Te,[xe,"Acer"],[je,Ve]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[Te,[xe,"Meizu"],[je,Be]],[/; ((?:power )?armor(?:[\w ]{0,8}))(?: bui|\))/i],[Te,[xe,"Ulefone"],[je,Be]],[/droid.+; (a(?:015|06[35]|142p?))/i],[Te,[xe,"Nothing"],[je,Be]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron|infinix|tecno)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[xe,Te,[je,Be]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i],[xe,Te,[je,Ve]],[/(surface duo)/i],[Te,[xe,gt],[je,Ve]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[Te,[xe,"Fairphone"],[je,Be]],[/(shield[\w ]+) b/i],[Te,[xe,"Nvidia"],[je,Ve]],[/(sprint) (\w+)/i],[xe,Te,[je,Be]],[/(kin\.[onetw]{3})/i],[[Te,/\./g," "],[xe,gt],[je,Be]],[/droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[Te,[xe,At],[je,Ve]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[Te,[xe,At],[je,Be]],[/smart-tv.+(samsung)/i],[xe,[je,qe]],[/hbbtv.+maple;(\d+)/i],[[Te,/^/,"SmartTV"],[xe,yt],[je,qe]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[xe,ft],[je,qe]],[/(apple) ?tv/i],[xe,[Te,lt+" TV"],[je,qe]],[/crkey.*devicetype\/chromecast/i],[[Te,Et+" Third Generation"],[xe,ht],[je,qe]],[/crkey.*devicetype\/([^/]*)/i],[[Te,/^/,"Chromecast "],[xe,ht],[je,qe]],[/fuchsia.*crkey/i],[[Te,Et+" Nest Hub"],[xe,ht],[je,qe]],[/crkey/i],[[Te,Et],[xe,ht],[je,qe]],[/droid.+aft(\w+)( bui|\))/i],[Te,[xe,ut],[je,qe]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[Te,[xe,It],[je,qe]],[/(bravia[\w ]+)( bui|\))/i],[Te,[xe,kt],[je,qe]],[/(mitv-\w{5}) bui/i],[Te,[xe,Ct],[je,qe]],[/Hbbtv.*(technisat) (.*);/i],[xe,Te,[je,qe]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[xe,Ht],[Te,Ht],[je,qe]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[je,qe]],[/(ouya)/i,/(nintendo) (\w+)/i],[xe,Te,[je,Oe]],[/droid.+; (shield) bui/i],[Te,[xe,"Nvidia"],[je,Oe]],[/(playstation \w+)/i],[Te,[xe,kt],[je,Oe]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[Te,[xe,gt],[je,Oe]],[/\b(sm-[lr]\d\d[05][fnuw]?s?)\b/i],[Te,[xe,yt],[je,$e]],[/((pebble))app/i],[xe,Te,[je,$e]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[Te,[xe,lt],[je,$e]],[/droid.+; (wt63?0{2,3})\)/i],[Te,[xe,At],[je,$e]],[/droid.+; (glass) \d/i],[Te,[xe,ht],[je,De]],[/(pico) (4|neo3(?: link|pro)?)/i],[xe,Te,[je,De]],[/; (quest( \d| pro)?)/i],[Te,[xe,Ut],[je,De]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[xe,[je,ze]],[/(aeobc)\b/i],[Te,[xe,ut],[je,ze]],[/droid .+?; ([^;]+?)(?: bui|; wv\)|\) applew).+? mobile safari/i],[Te,[je,Be]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[Te,[je,Ve]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[je,Ve]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[je,Be]],[/(android[-\w\. ]{0,9});.+buil/i],[Te,[xe,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[Ue,[Ee,"EdgeHTML"]],[/(arkweb)\/([\w\.]+)/i],[Ee,Ue],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[Ue,[Ee,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[Ee,Ue],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[Ue,Ee]],os:[[/microsoft (windows) (vista|xp)/i],[Ee,Ue],[/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i],[Ee,[Ue,Qt,Xt]],[/windows nt 6\.2; (arm)/i,/windows[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i,/(?:win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[Ue,Qt,Xt],[Ee,Ot]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/(?:ios;fbsv\/|iphone.+ios[\/ ])([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[Ue,/_/g,"."],[Ee,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[Ee,"macOS"],[Ue,/_/g,"."]],[/android ([\d\.]+).*crkey/i],[Ue,[Ee,Et+" Android"]],[/fuchsia.*crkey\/([\d\.]+)/i],[Ue,[Ee,Et+" Fuchsia"]],[/crkey\/([\d\.]+).*devicetype\/smartspeaker/i],[Ue,[Ee,Et+" SmartSpeaker"]],[/linux.*crkey\/([\d\.]+)/i],[Ue,[Ee,Et+" Linux"]],[/crkey\/([\d\.]+)/i],[Ue,[Ee,Et]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[Ue,Ee],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish|openharmony)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[Ee,Ue],[/\(bb(10);/i],[Ue,[Ee,pt]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[Ue,[Ee,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[Ue,[Ee,jt+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[Ue,[Ee,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[Ue,[Ee,"watchOS"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[Ee,"Chrome OS"],Ue],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) (\w+)/i,/(xbox); +xbox ([^\);]+)/i,/(pico) .+os([\w\.]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[Ee,Ue],[/(sunos) ?([\w\.\d]*)/i],[[Ee,"Solaris"],Ue],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[Ee,Ue]]},Zt=(ye={init:{},isIgnore:{},isIgnoreRgx:{},toString:{}},Lt.call(ye.init,[[nt,[Ee,Ue,Se,je]],[ot,[Ne]],[rt,[je,Te,xe]],[at,[Ee,Ue]],[dt,[Ee,Ue]]]),Lt.call(ye.isIgnore,[[nt,[Ue,Se]],[at,[Ue]],[dt,[Ue]]]),Lt.call(ye.isIgnoreRgx,[[nt,/ ?browser$/i],[dt,/ ?os$/i]]),Lt.call(ye.toString,[[nt,[Ee,Ue]],[ot,[Ne]],[rt,[xe,Te]],[at,[Ee,Ue]],[dt,[Ee,Ue]]]),ye),ei=function(e,t){var i=Zt.init[t],s=Zt.isIgnore[t]||0,n=Zt.isIgnoreRgx[t]||0,o=Zt.toString[t]||0;function r(){Lt.call(this,i)}return r.prototype.getItem=function(){return e},r.prototype.withClientHints=function(){return Vt?Vt.getHighEntropyValues(st).then((function(t){return e.setCH(new ti(t,!1)).parseCH().get()})):e.parseCH().get()},r.prototype.withFeatureCheck=function(){return e.detectFeature().get()},t!=ct&&(r.prototype.is=function(e){var t=!1;for(var i in this)if(this.hasOwnProperty(i)&&!Dt(s,i)&&Mt(n?Wt(n,this[i]):this[i])==Mt(n?Wt(n,e):e)){if(t=!0,e!=Ce)break}else if(e==Ce&&t){t=!t;break}return t},r.prototype.toString=function(){var e=Ie;for(var t in o)typeof this[o[t]]!==Ce&&(e+=(e?" ":Ie)+this[o[t]]);return e||Ce}),Vt||(r.prototype.then=function(e){var t=this,i=function(){for(var e in t)t.hasOwnProperty(e)&&(this[e]=t[e])};i.prototype={is:r.prototype.is,toString:r.prototype.toString};var s=new i;return e(s),s}),new r};function ti(e,t){if(e=e||{},Lt.call(this,st),t)Lt.call(this,[[Me,_t(e[Je])],[Le,_t(e[Qe])],[Be,/\?1/.test(e[Ze])],[Te,Gt(e[et])],[We,Gt(e[tt])],[Ge,Gt(e[it])],[Ne,Gt(e[Xe])],[Pe,_t(e[Ye])],[He,Gt(e[Ke])]]);else for(var i in e)this.hasOwnProperty(i)&&typeof e[i]!==Ce&&(this[i]=e[i])}function ii(e,t,i,s){return this.get=function(e){return e?this.data.hasOwnProperty(e)?this.data[e]:void 0:this.data},this.set=function(e,t){return this.data[e]=t,this},this.setCH=function(e){return this.uaCH=e,this},this.detectFeature=function(){if(Bt&&Bt.userAgent==this.ua)switch(this.itemType){case nt:Bt.brave&&typeof Bt.brave.isBrave==ke&&this.set(Ee,"Brave");break;case rt:!this.get(je)&&Vt&&Vt[Be]&&this.set(je,Be),"Macintosh"==this.get(Te)&&Bt&&typeof Bt.standalone!==Ce&&Bt.maxTouchPoints&&Bt.maxTouchPoints>2&&this.set(Te,"iPad").set(je,Ve);break;case dt:!this.get(Ee)&&Vt&&Vt[We]&&this.set(Ee,Vt[We]);break;case ct:var e=this.data,t=function(t){return e[t].getItem().detectFeature().get()};this.set(nt,t(nt)).set(ot,t(ot)).set(rt,t(rt)).set(at,t(at)).set(dt,t(dt))}return this},this.parseUA=function(){return this.itemType!=ct&&Jt.call(this.data,this.ua,this.rgxMap),this.itemType==nt&&this.set(Se,Pt(this.get(Ue))),this},this.parseCH=function(){var e=this.uaCH,t=this.rgxMap;switch(this.itemType){case nt:var i,s=e[Le]||e[Me];if(s)for(var n in s){var o=Wt(/(Google|Microsoft) /,s[n].brand||s[n]),r=s[n].version;/not.a.brand/i.test(o)||i&&(!/chrom/i.test(i)||/chromi/i.test(o))||(this.set(Ee,o).set(Ue,r).set(Se,Pt(r)),i=o)}break;case ot:var a=e[Ne];a&&(a&&"64"==e[He]&&(a+="64"),Jt.call(this.data,a+";",t));break;case rt:if(e[Be]&&this.set(je,Be),e[Te]&&this.set(Te,e[Te]),"Xbox"==e[Te]&&this.set(je,Oe).set(xe,gt),e[Pe]){var d;if("string"!=typeof e[Pe])for(var c=0;!d&&c<e[Pe].length;)d=Qt(e[Pe][c++],Kt);else d=Qt(e[Pe],Kt);this.set(je,d)}break;case dt:var u=e[We];if(u){var l=e[Ge];u==Ot&&(l=parseInt(Pt(l),10)>=13?"11":"10"),this.set(Ee,u).set(Ue,l)}this.get(Ee)==Ot&&"Xbox"==e[Te]&&this.set(Ee,"Xbox").set(Ue,void 0);break;case ct:var b=this.data,p=function(t){return b[t].getItem().setCH(e).parseCH().get()};this.set(nt,p(nt)).set(ot,p(ot)).set(rt,p(rt)).set(at,p(at)).set(dt,p(dt))}return this},Lt.call(this,[["itemType",e],["ua",t],["uaCH",s],["rgxMap",i],["data",ei(this,e)]]),this}function si(e,t,i){if(typeof e===Ae?(zt(e,!0)?(typeof t===Ae&&(i=t),t=e):(i=e,t=void 0),e=void 0):typeof e!==Re||zt(t,!0)||(i=t,t=void 0),!(this instanceof si))return new si(e,t,i).getResult();var s=typeof e===Re?e:Bt&&Bt.userAgent?Bt.userAgent:i&&i[Fe]?i[Fe]:Ie,n=new ti(i,!0),o=t?qt(Yt,t):Yt,r=function(e){return e==ct?function(){return new ii(e,s,o,n).set("ua",s).set(nt,this.getBrowser()).set(ot,this.getCPU()).set(rt,this.getDevice()).set(at,this.getEngine()).set(dt,this.getOS()).get()}:function(){return new ii(e,s,o[e],n).parseUA().get()}};return Lt.call(this,[["getBrowser",r(nt)],["getCPU",r(ot)],["getDevice",r(rt)],["getEngine",r(at)],["getOS",r(dt)],["getResult",r(ct)],["getUA",function(){return s}],["setUA",function(e){return Ft(e)&&(s=e.length>_e?Ht(e,_e):e),this}]]).setUA(s),this}si.VERSION="2.0.0-rc.1",si.BROWSER=$t([Ee,Ue,Se,je]),si.CPU=$t([Ne]),si.DEVICE=$t([Te,xe,je,Oe,Be,qe,Ve,$e,ze]),si.ENGINE=si.OS=$t([Ee,Ue]);class ni{constructor(){this.onAdStream=new c}onAd(e){const t=`/${e.formatId}`,i=e.formatId,s={bidderCode:"smart-rtb+",cpm:e.cpm,size:e.size,adUnitName:i,adUnitPathSuffix:t,formatId:e.formatId,customFields:{}};this.onAdStream.next(s)}}function oi(e){if(e.includes("pubstackRefresh")){const t=e.find((e=>e.startsWith("pubstackRefreshRank")));if(void 0!==t&&t.includes(":")){const e=parseInt(t.split(":")[1])||0;return e>0?e:0}}return 0}function ri(e,t){const i=function(e){const t=e.split("?")[1];if(void 0!==t){const e=t.split("=");return{key:e[0],value:e[1]}}return}(e),s=e.split("?")[0].startsWith("/")?e.split("?")[0]:`/${e.split("?")[0]}`,n=function(e){return e.getAdUnitPath().replace("//","/")}(t);return s===(n.startsWith("/")?n:`/${n}`)&&(void 0===i||t.getTargeting(i.key)[0]===i.value)}const ai=(e,t)=>{const i=e.path;if(void 0===t||void 0===i)return;const s=t.pubads().getSlots();if(void 0===s)return;const n=s.filter((e=>ri(i,e)));switch(n.length){case 0:return;case 1:return n[0];default:if(-1!==i.indexOf("?"))return V("[pubstackGoogleTag] retrieve first slot matching the dimension",i),n[0];{const s=t.pubads();try{!function(e){if("object"!=typeof e||null===e||!("getSlotIdMap"in e)||"function"!=typeof e.getSlotIdMap)throw new Error("Missing property getSlotIdMap on googletag")}(s);const t=s.getSlotIdMap();V("[pubstackGoogleTag] get all slot map",t);return t[Object.keys(t).filter((e=>e.startsWith(i)))[function(e){const t=Array.from(document.querySelectorAll(`div[id*='${e.name}']`)).map((e=>e.id));return t.findIndex((t=>t===e.code))}(e)]]}catch(e){return void V(`[pubstackGoogleTag] ${e}`)}}}};const di=e=>{const t=e;if(void 0!==t&&t.apiReady&&void 0!==t.cmd&&void 0!==t.pubads&&"function"==typeof t.pubads){if("function"==typeof t.pubads().refresh)return t}};const ci=e=>{const t=(e=>di(e.googletag))(window);V("[pubstackFindElementById] adUnit ",e);const i=ai(e,t);return V("[pubstackFindElementById] slot ",i),i?document.getElementById(i.getSlotElementId()):ui(e.code)},ui=e=>{const t=document.getElementById(e);return null===t?document.querySelector(`iframe[id*='${e}']`):t};function li(e){const t=document.getElementsByTagName("meta");return Array.from(t).filter((t=>t.name.includes(`${e}:`)))}function bi(e,t){return e.replace(`${t}:`,"")}const pi=(e,t)=>{const i=new Set;return e.tags.forEach((e=>i.add(e))),t.tags.forEach((e=>i.add(e))),i};class hi{constructor(e){this.coreAuctionStream=new c,this.coreImpressionStream=new c,this.state=e}subscribe(e){this.coreAuctionStream.subscribe(e.onAuction),this.coreImpressionStream.subscribe(e.onImpression)}pushNewImpression(e){var t,i,s,n,o;const r=this.state.getAuction(e.auctionId),a=null!==(t=this.state.findLastAuctionId(r.adUnit))&&void 0!==t?t:"",d=this.state.findBidsByAuctionId(r.auctionId).filter((e=>e.state===Y.BID)).map((e=>e)).sort(((e,t)=>t.cpm-e.cpm)),c=(null!==(s=null===(i=d[0])||void 0===i?void 0:i.cpm)&&void 0!==s?s:0)-(null!==(o=null===(n=d[1])||void 0===n?void 0:n.cpm)&&void 0!==o?o:0);return this.state.storeCoreBidResponses.set(e.bidId,e),this.impressionFormatAndForward(r,e,c,a)}pushNewAuction(e){var t,i;e.bidRequests=(t=e.bidRequests,i="adThink",t.filter((e=>e.bidderCode!==i))),0!==e.bidRequests.length&&this.coreAuctionStream.next(e)}checkMeasurability(e){return"IntersectionObserver"in window&&"IntersectionObserverEntry"in window&&"intersectionRatio"in window.IntersectionObserverEntry.prototype&&"isIntersecting"in window.IntersectionObserverEntry.prototype&&!!ci(e)}impressionSasFormatAndForward(e,t){const i={bidId:"smart-"+d(),auctionId:"smart-"+d(),lastAuctionId:"smart-"+d(),adUnit:t,bidderCode:e.bidderCode,cpm:e.cpm,currency:e.currency,refresh:!1,size:e.size,userConsentState:"notAvailable",userConsentVersion:"notAvailable",hasUserId:"notAvailable",userIdProviderList:[],pbjsVersion:"smart-ad-server",tags:new Set,viewabilityMeasurable:!1,cpmUplift:0,pubstackRefresh:!1,pubstackRefreshRank:0,customFields:e.customFields};this.coreImpressionStream.next(i)}impressionFormatAndForward(e,t,i,s){const n=this.state.findBidsByAuctionId(e.auctionId),o=this.state.getAuction(s),r=J(n),a=this.checkMeasurability(e.adUnit),{userConsentState:d,userConsentVersion:c}=Q(r),u={bidId:t.bidResponseId,auctionId:e.auctionId,lastAuctionId:s,adUnit:e.adUnit,bidderCode:t.bidderCode,cpm:t.cpm,currency:t.currency,refresh:!1,size:t.size,userConsentState:d,userConsentVersion:c,hasUserId:e.hasUserId,userIdProviderList:e.userIdProviderList,pbjsVersion:e.pbjsVersion,tags:pi(e,t),viewabilityMeasurable:a,cpmUplift:i,dealId:t.dealId,advertiserDomains:t.advertiserDomains,pubstackRefresh:o.pubstackRefresh,pubstackRefreshRank:o.pubstackRefreshRank,customFields:t.customFields,bidNetRevenue:t.bidNetRevenue,source:t.source,adapterCode:t.adapterCode};this.coreImpressionStream.next(u)}}class mi{constructor(){this.storeAuctions=new Map,this.storeCoreBidResponses=new Map,this.mappingAdUnitNameAuctions=new Map,this.mappingAdUnitCodeLastAuctions=new Map}setAuction(e){var t;this.storeAuctions.set(e.auctionId,e);const i=null!==(t=this.mappingAdUnitNameAuctions.get(e.adUnit.name))&&void 0!==t?t:[];i.find((t=>t===e.auctionId))||(i.push(e.auctionId),this.mappingAdUnitNameAuctions.set(e.adUnit.name,i)),this.mappingAdUnitCodeLastAuctions.set(e.adUnit.code,e.auctionId)}getAuction(e){const t=this.storeAuctions.get(e);return w(t,`auction not found, @auctionId=${e}`),t}findBidsByAuctionId(e){var t;return(null===(t=this.storeAuctions.get(e))||void 0===t?void 0:t.bidRequests)||[]}findLastAuctionId(e){return this.mappingAdUnitCodeLastAuctions.get(e.code)}findAuctionByAdUnitPath(e){return Array.from(this.storeAuctions.values()).find((t=>{var i;return null===(i=t.adUnit.path)||void 0===i?void 0:i.endsWith(e)}))}}class vi{constructor(){this.state=new mi,this.forwarder=new hi(this.state),this.fallbackCurrency=void 0}bindIntegration(e){e instanceof re&&(e.onBidResponseStream.subscribe((e=>this.bidResponse(e)),E),e.onAuctionEndStream.subscribe((e=>this.auctionDone(e)),E),e.onBidWonStream.subscribe((e=>this.impression(e)),E),e.onBidWonFromSdkStream.subscribe((e=>this.impressionFromSdk(e)),E),this.fallbackCurrency=e.getAdServerCurrency()),e instanceof ni&&e.onAdStream.subscribe((e=>this.impressionSas(e)),E)}helperToBidResponse(e,t){var i;const s=Object.assign({},e);s.state=Y.BID,t.tags.forEach((e=>s.tags.add(e)));let n=t.size;return"native"===t.mediaType&&(n="native"),"video"===t.mediaType&&(n=`video-${n}`),s.size=n,s.cpm=t.cpm,s.currency=null!==(i=t.currency)&&void 0!==i?i:this.fallbackCurrency,s.bidResponseId=t.bidResponseId,s.bidderCode=t.bidderCode,s}bidResponse(e){V("[pubstackCoreController] onBidResponse",e),e.bidderCode="nexx360"===e.adapterCode?"nexx360":e.bidderCode;const t={auctionId:e.auctionId,state:Y.BID,tags:new Set(e.tags),customFields:e.customFields};try{const i=this.state.getAuction(e.auctionId);if(i){const s=i.bidRequests.find((t=>t.bidId===e.bidId));s&&(i.bidRequests=i.bidRequests.filter((t=>t.bidId!==e.bidId)),i.bidRequests.push(Object.assign(Object.assign(Object.assign({},s),this.helperToBidResponse(t,e)),{tags:s.tags})))}}catch(e){}}helperAuctionBidToBidResponse(e){var t;const i=Object.assign(Object.assign({},e),{tags:new Set});if(e.state===Y.BID){let s=e.size;"native"===e.mediaType&&(s="native"),"video"===e.mediaType&&(s=`video-${s}`),i.size=s,i.cpm=e.cpm,i.currency=null!==(t=e.currency)&&void 0!==t?t:this.fallbackCurrency,i.bidResponseId=e.bidResponseId,i.timeToRespond=e.timeToRespond,i.dealId=e.dealId,i.advertiserDomains=e.advertiserDomains,i.bidNetRevenue=e.bidNetRevenue}return e.tags.forEach((e=>i.tags.add(e))),i}bidWonToCoreBidResponse(e){var t,i;const s=a(e.requestId);let n=e.size;return"native"===e.mediaType&&(n="native"),"video"===e.mediaType&&(n=`video-${n}`),{adId:e.adId,bidId:s,bidResponseId:a(s,e.adId),bidderCode:"nexx360"===e.adapterCode?"nexx360":null!==(t=e.bidderCode)&&void 0!==t?t:"",adapterCode:e.pbstckAdapterCode,cpm:e.cpm,size:n,state:Y.BID,auctionId:e.auctionId,tags:new Set(e.tags),currency:null!==(i=e.currency)&&void 0!==i?i:this.fallbackCurrency,customFields:e.customFields,dealId:e.dealId,advertiserDomains:e.advertiserDomains,bidNetRevenue:e.bidNetRevenue,source:e.source}}auctionDone(e){V("[pubstackCoreController] onAuctionDone",e.auctionId);try{const t=(e.bidRequests||[]).map(this.helperAuctionBidToBidResponse),i=J(t),{userConsentState:s,userConsentVersion:n}=Q(i),o={auctionId:e.auctionId,adUnit:e.adUnit,tags:new Set(e.tags),sizes:new Set(e.sizes),hasUserId:e.userId.hasUserId,userIdProviderList:e.userId.userIdProviderList,refreshIndex:e.refreshIndex,pbjsVersion:e.pbjsVersion,refresh:!1,pubstackRefresh:e.labels.includes("pubstackRefresh"),pubstackRefreshRank:oi(e.labels),userConsentState:s,userConsentVersion:n,bidRequests:t,customFields:e.customFields,duration:e.duration,timeout:e.timeout,state:"RUNNING"};this.state.setAuction(o);const r=()=>{const t=this.state.getAuction(e.auctionId);"FINISHED"!==t.state?(this.forwarder.pushNewAuction(t),t.state="FINISHED",this.state.setAuction(t)):V("[pubstackCoreController] auction is already finished",t)};void 0===e.gracePeriod?r():setTimeout((()=>r()),e.gracePeriod)}catch(e){V("[pubstackCoreController] error: cannot set auction as done because auction is not running")}}findBidResponseDuplicate(e){const t=this.state.storeCoreBidResponses.get(e.bidId),i=!!t&&t.bidResponseId===e.bidResponseId&&t.bidderCode===e.bidderCode;return i&&V("[pubstackCoreController] duplicate bid response found",e),i}_impression(e){if("FINISHED"===this.state.getAuction(e.auctionId).state)this.findBidResponseDuplicate(e)||this.forwarder.pushNewImpression(e);else{const t=i=>{i.auctionId===e.auctionId&&(this.findBidResponseDuplicate(e)||this.forwarder.pushNewImpression(e),this.forwarder.coreAuctionStream.unsubscribe(t))};this.forwarder.coreAuctionStream.subscribe(t)}}impression(e){V("[pubstackCoreController] onImpression",e);try{const t=this.bidWonToCoreBidResponse(e);this._impression(t)}catch(e){V("[pubstackCoreController] error: cannot create impression",e)}}impressionFromSdk(e){V("[pubstackCoreController] onImpression",e);try{const t=Array.from(this.state.storeAuctions.values()).find((t=>t.bidRequests.filter((e=>e.state===Y.BID)).find((t=>t.adId===e.adId))));if(t){const i=t.bidRequests.filter((e=>e.state===Y.BID)).find((t=>t.adId===e.adId));i.customFields=Object.assign(Object.assign({},i.customFields),e.customFields),this._impression(i)}}catch(e){V("[pubstackCoreController] error: cannot create impression",e)}}impressionSas(e){V("[pubstackCoreController] onImpressionSas",e);try{const t=this.state.findAuctionByAdUnitPath(e.adUnitPathSuffix);w(t,`onSasNewBidResponse: cannot retrieve related auction, @adUnitName=${e.adUnitName}, @adUnitPath=${e.adUnitPathSuffix}`),e.currency=this.fallbackCurrency,this.forwarder.impressionSasFormatAndForward(e,t.adUnit)}catch(e){V("[pubstackCoreController] error: cannot create impression",e)}}subscribe(e){this.forwarder.subscribe(e)}debug(){const e=[];return this.forwarder.subscribe({onAuction:t=>e.push(t),onImpression:t=>e.push(t)}),{auctions:this.state,auctionsDone:void 0,adUnits:void 0,events:e}}}const fi=(e,t)=>Object.entries(t).every((([t,i])=>typeof i==typeof{}&&typeof e[t]==typeof{}?fi(e[t],i):typeof e[t]==typeof i)),gi=(e,t)=>{if(t)for(let i=0;i<1e3;i+=1)try{const s=e([],{},[i]);try{if(fi(s,t))return s}catch(e){}}catch(e){}},wi=400;const yi={CALL:"call",AD_CALLBACK:"pbstck:ad"};const Ii=()=>({toAd(e,t){k(e),w(t,"toAd: id is undefined"),w(e.formatId,"toAd: formatId is undefined"),g(t),function(e,t,i){if(!C(e,t))throw new l(`Expected object to have key '${t}', but not found`)}(e,"formatId");const i="string"==typeof e.size?e.size:"unknown";return{cpm:p(e.cpm)?e.cpm:0,size:i,formatId:p(e.formatId)?e.formatId.toString():e.formatId}}});const ki=new WeakSet;function Ci(e,t,i){const s=e[i.globalName];if(void 0===s||!s.__smartLoaded)return{status:K.NOT_READY};const n=Ii(),o=new ni,r=function(e,t){return{on(i,s,n){V("sas.dispatcher",i,s),i===yi.AD_CALLBACK&&t.onAd(e.toAd(s,n))}}}(n,o);t.bindIntegration(o);const a=[];if(ki.has(s))return{status:K.LOADED};ki.add(s);const d=Object.values(yi);return d.forEach((e=>{s.events.on(e,((t,i)=>{const s=de(t);a.push({eventName:e,data:s,id:i});try{r.on(e,s,i)}catch(e){e.context=e.context||{},e.context.adapter={source:"sas:on"},E(e)}}))})),s.events.history().filter((({eventName:e})=>d.includes(e))).map(de).forEach((({eventName:e,data:t,id:i})=>{const s=de(t);a.push({eventName:e,data:s,id:i});try{r.on(e,t,i)}catch(e){e.context=e.context||{},e.context.adapter={source:"sas:replayed"},E(e)}})),{status:K.LOADED,instance:{debug:()=>({events:a})}}}function Ai(e,t){return"object"==typeof t&&t instanceof Set?Array.from(t):t}function Ri(e,t){return"tags"!==e&&"sizes"!==e||!Array.isArray(t)?t:new Set(t)}class Si{constructor(e){this.coreEvents=[],this.errors=[],e.forwarder.coreAuctionStream.subscribe((e=>this.addEvent(e))),e.forwarder.coreImpressionStream.subscribe((e=>this.addEvent(e)))}addEvent(e){this.coreEvents.push(e)}addError(e){this.errors.push(e)}getEvents(){return this.coreEvents.map((e=>JSON.parse(JSON.stringify(e,Ai),Ri)))}getErrors(){return this.errors}}const Ti=e=>{var t;const i=null!==(t=null==e?void 0:e.host)&&void 0!==t?t:"unknown";return i.startsWith("www.")?i.substring(4):i},Ei=e=>{let t;return t=e&&e.protocol&&e.host&&e.pathname?`${e.protocol}//${e.host}${e.pathname}`:"unknown",t};class ji{constructor(e,t,i){this.url=e,this.context=i,this.sender=t}buildUrl(e){return`${this.url}?sId=${this.context.scopeId.substring(0,8)}&tId=${this.context.tagId}&c=${e}&ctr=${this.context.country}`}send(e){const t=e.map((e=>xi(e,this.context)));this.sender(this.buildUrl(t.length),t)}}const xi=(e,t)=>Object.assign(Object.assign(Object.assign({},e),t),{domain:Ti(window.location),href:Ei(window.location)});function Ui(e){var t;const i="pbstck",s="pbstck_context",n=[...li(i),...li(s)],o=n.find((e=>"pbstck_ab_test"===bi(e.name,i)));if(o)return o.content;{let i=null===(t=n.find((e=>"pbstck_ab_test"===bi(e.name,s))))||void 0===t?void 0:t.content;return i&&!e.includes(i)&&(i=void 0),i}}const Ni=20;function Oi(){const e="pbstck",t=new Map;li(e).forEach((i=>{const s=bi(i.name,e);t.has(s)&&q(`Custom dim ${s} is present many times`),t.size<Ni?t.set(s,i.content):q(`Skipping custom dim ${s} with ${i.content}: limit of ${Ni} keys exceeded`)}));const i=Object.assign({},...Array.from(t.entries()).map((([e,t])=>({[e]:t}))));return t.size>0&&V("Custom dim found :",i),i}class Bi{constructor(e,t,i,s,n){var o;this.items=[],this.url=e,this.buffer=null!==(o=null==n?void 0:n.buffer)&&void 0!==o?o:Bi.defaults.buffer,this.sender=t,this.context=i,this.abTestValues=s}buildUrl(){const e=this.context.customFields["kleanads-version"],t=document.querySelector('meta[name="pbstck:config-version"]'),i=null==t?void 0:t.content,s=this.items.reduce(((e,t)=>e+(t.pubstackRefresh?1:0)),0),n=e?`&v=${e}&s=${i}`:"",o=s>0?`&rc=${s}`:"";return`${this.url}?tId=${this.context.tagId}&c=${this.items.length}${n}${o}`}batchThenSend(e,t=!0){const i=t?Vi(e,this.context,this.abTestValues):e;if(this.items.push(i),0===this.buffer)return this.flush();1===this.items.length&&setTimeout((()=>this.flush()),this.buffer)}flush(){0!==this.items.length&&(this.sender(this.buildUrl(),[...this.items]),this.reset())}reset(){this.items=[]}}Bi.defaults={buffer:150};const Vi=(e,t,i)=>{var s;const{customFields:n}=e,{customFields:o}=t,r=Oi(),a=null===(s=navigator.connection)||void 0===s?void 0:s.effectiveType,d=Object.assign(Object.assign(Object.assign(Object.assign({},n),o),r),{windowWidth:window.innerWidth.toString(),windowHeight:window.innerHeight.toString()});return Object.assign(Object.assign(Object.assign({},e),t),{customFields:d,abTestPopulation:Ui(null!=i?i:[]),domain:Ti(window.location),href:Ei(window.location),networkConnectionEffectiveType:a,pageId:window.__pbstck_page_id||"unknown",kleanAdsStackVersion:d["config-version"],kleanAdsStackId:d["kleanads-stack-id"]})},qi=d();class $i{constructor(e,t,i,s,n){const o=e.slice(0,-7);this.viewabilityGateway=new Bi(`${e}/viewability`,Di,t,n),this.auctionGateway=new Bi(`${e}/auction`,Di,t,n),this.impressionGateway=new Bi(`${e}/impression`,Di,t,n),this.errorGateway=new Bi(`${e}/error`,Di,t,n),this.traceGateway=new Bi(`${o}/trace`,Di,t,void 0,{buffer:5e3}),this.measuredImpressionGateway=new Bi(`${e}/measured`,Di,t,n),this.measuredImpressionBeaconGateway=new ji(`${e}/measured`,zi,t),this.pageGateway=new Bi(`${e}/page`,Di,t,n),this.bindController(i,s)}bindController(e,t){e.forwarder.coreAuctionStream.subscribe((e=>this.formatAndForwardAuction(e))),e.forwarder.coreImpressionStream.subscribe((e=>{this.formatAndForwardImpression(e)})),void 0!==t&&(t.viewabilityStream.subscribe((e=>{this.formatAndForwardViewability(e)})),t.viewedStream.subscribe((e=>{this.formatAndForwardMeasuredImpression(e)})),t.onUnload((e=>this.formatAndForwardMeasuredImpressionForBeacon(e))))}formatAndForwardAuction(e){const t=[];e.bidRequests.forEach((e=>{t.push({bidId:ee(e),bidderCode:e.bidderCode,state:e.state,source:e.source,tags:0===e.tags.size?void 0:Array.from(e.tags),cpm:Z(e)?e.cpm:void 0,currency:Z(e)?e.currency:void 0,size:Z(e)?e.size:void 0,customFields:e.customFields,timeToRespond:e.timeToRespond,rejectionReason:e.rejectionReason,dealId:Z(e)?e.dealId:void 0,advertiserDomains:Z(e)?e.advertiserDomains:void 0,bidNetRevenue:Z(e)?e.bidNetRevenue:void 0,adapterCode:e.adapterCode})}));const i=void 0===e.userConsentState?"notAvailable":e.userConsentState,s=void 0===e.userConsentVersion?"notAvailable":e.userConsentVersion,n={auctionId:e.auctionId,adUnit:e.adUnit.name,adUnitPath:e.adUnit.path,sizes:Array.from(e.sizes),tags:0===e.tags.size?void 0:Array.from(e.tags),refresh:e.refresh,userConsentState:i,userConsentVersion:s,hasUserId:e.hasUserId,userIdProviderList:e.userIdProviderList,pbjsVersion:e.pbjsVersion,bidRequests:t,pubstackManaged:!1,pubstackRefresh:e.pubstackRefresh,pubstackRefreshRank:e.pubstackRefreshRank,customFields:e.customFields,duration:e.duration,timeout:e.timeout};this.auctionGateway.batchThenSend(n)}formatAndForwardImpression(e){const t={bidId:e.bidId,auctionId:e.auctionId,lastAuctionId:e.lastAuctionId,adUnit:e.adUnit.name,adUnitPath:e.adUnit.path,bidderCode:e.bidderCode,cpm:e.cpm,currency:e.currency,refresh:e.refresh,size:e.size,userConsentState:e.userConsentState,userConsentVersion:e.userConsentVersion,hasUserId:e.hasUserId,userIdProviderList:e.userIdProviderList,pbjsVersion:e.pbjsVersion,cpmUplift:e.cpmUplift,dealId:e.dealId,advertiserDomains:e.advertiserDomains,tags:Array.from(e.tags),viewabilityMeasurable:e.viewabilityMeasurable,pubstackManaged:!1,pubstackRefresh:e.pubstackRefresh,pubstackRefreshRank:e.pubstackRefreshRank,customFields:e.customFields,bidNetRevenue:e.bidNetRevenue,source:e.source,adapterCode:e.adapterCode};this.impressionGateway.batchThenSend(t)}formatAndForwardViewability(e){const t={bidId:e.bidId,auctionId:e.auctionId,lastAuctionId:e.lastAuctionId,adUnit:e.adUnit.name,adUnitPath:e.adUnit.path,bidderCode:e.bidderCode,pbjsVersion:e.pbjsVersion,cpm:e.cpm,currency:e.currency,size:e.size,refresh:e.refresh,htmlElementId:e.htmlElementId,mrcViewable:!0,pubstackManaged:!1,pubstackRefresh:e.pubstackRefresh,pubstackRefreshRank:e.pubstackRefreshRank};this.viewabilityGateway.batchThenSend(t)}formatAndForwardMeasuredImpression(e){const t={bidId:e.bidId,auctionId:e.auctionId,lastAuctionId:e.lastAuctionId,adUnit:e.adUnit.name,adUnitPath:e.adUnit.path,bidderCode:e.bidderCode,cpm:e.cpm,currency:e.currency,refresh:e.refresh,size:e.size,pbjsVersion:e.pbjsVersion,viewedTime:e.viewedTime,pubstackManaged:!1,pubstackRefresh:e.pubstackRefresh,pubstackRefreshRank:e.pubstackRefreshRank};this.measuredImpressionGateway.batchThenSend(t)}formatAndForwardMeasuredImpressionForBeacon(e){const t=e.map((e=>({bidId:e.bidId,auctionId:e.auctionId,lastAuctionId:e.lastAuctionId,adUnit:e.adUnit.name,adUnitPath:e.adUnit.path,bidderCode:e.bidderCode,cpm:e.cpm,currency:e.currency,refresh:e.refresh,size:e.size,pbjsVersion:e.pbjsVersion,viewedTime:e.viewedTime,pubstackManaged:!1,pubstackRefresh:e.pubstackRefresh,pubstackRefreshRank:e.pubstackRefreshRank})));this.measuredImpressionBeaconGateway.send(t)}sendError(e){this.errorGateway.batchThenSend(e)}sendLog(e){this.traceGateway.batchThenSend(e,!1)}sendToDatadog(e){var t;if(void 0===e.error||""===e.error)return;const i=e.error,s=null!==(t=e.context)&&void 0!==t?t:{};k(s),g(i);const n=Object.assign(Object.assign({pageId:qi,status:"error",domain:Ti(window.location),href:Ei(window.location)},s),{message:i}),o=new XMLHttpRequest;o.open("POST","https://browser-http-intake.logs.datadoghq.com/v1/input/pub551f730416e5317842afc2792691e95c?ddsource=browser&ddtags=version:1.3.2",!0),o.setRequestHeader("Content-Type","text/plain"),o.send(JSON.stringify(n))}}const Di=(e,t)=>{const i=new XMLHttpRequest;i.open("POST",e,!0),i.setRequestHeader("Content-Type","text/plain"),i.send(JSON.stringify(t)),V("post",e,t)},zi=(e,t)=>{const i=JSON.stringify(t);navigator.sendBeacon(e,i),V("beacon",e,t)};class Fi{constructor(e){this.adUnit=e}visibilityRatioFromIntersection(e){const t=_i(this.adUnit,this.adUnit);if(this.adUnit===t)return e.intersectionRatio;const i=t.getBoundingClientRect();return e.intersectionRect.height/i.height}}const _i=(e,t)=>(Mi(e)<Mi(t)&&(e=t),Array.from(t.children).filter((e=>e instanceof HTMLElement)).forEach((t=>{e=_i(e,t)})),e),Mi=e=>e.getBoundingClientRect?e.getBoundingClientRect().height:0;class Pi{constructor(){this.state="new",this.elapsedTime=0,this.timeTargets=[]}start(){return"stopped"===this.state&&(this.elapsedTime=0),"started"===this.state?this.elapsed():(this.state="started",this.timeoutId=setTimeout((()=>this.update()),Pi.pacing),this.elapsedTime)}pause(){if("paused"===this.state||"stopped"===this.state)return this.elapsedTime;const e=this.update();return this.state="paused",e}stop(){if("stopped"===this.state)return this.elapsedTime;const e=this.update();return this.state="stopped",e}elapsed(){return"started"===this.state&&this.update(),this.elapsedTime}timeTargetReached(e){return new Promise((t=>{this.timeTargets.push([e,t])}))}update(){let e=Pi.pacing;if("started"===this.state){this.elapsedTime+=e;for(let t=this.timeTargets.length;t--;){const[i,s]=this.timeTargets[t];this.elapsedTime>=i?(s(i),this.timeTargets.splice(t,1)):e=Math.min(e,i-this.elapsedTime)}}return"stopped"!==this.state&&(this.timeoutId&&clearTimeout(this.timeoutId),this.timeoutId=setTimeout((()=>this.update()),e)),this.elapsedTime}}Pi.pacing=100;class Li{constructor(e,t,i,s,n){this.creative=s,this.timer=new Pi,this.inViewPercentage=e,this.cumulative=i,this.timer.timeTargetReached(t).then((()=>{n()}))}pauseTimer(){this.timer.pause()}startTimer(){this.timer.start()}stopTimer(){this.timer.stop()}getElapsed(){return this.timer.elapsed()}isViewable(){return this.inView}intersectionChange(e){this.creative.visibilityRatioFromIntersection(e)>=this.inViewPercentage?this.inView||(this.timer.start(),this.inView=!0):this.inView&&(this.cumulative?this.timer.pause():this.timer.stop(),this.inView=!1)}getTimerState(){return this.timer.state}}const Wi={root:null,rootMargin:"0px",threshold:[0,.3,.5,1]};class Gi{constructor(e,t,i){this.windowActive=!0,this.pbstckWindow=i,this.visibilityState=i.document.visibilityState,this.trackedOnFocusChange=this.onFocusChange.bind(this),i.addEventListener("focus",this.trackedOnFocusChange),i.addEventListener("blur",this.trackedOnFocusChange),this.trackedOnVisibilityChange=this.onVisibilityChange.bind(this),i.addEventListener("visibilitychange",this.trackedOnVisibilityChange);const s=this.getObserverThresholds(t);this.observer=new IntersectionObserver((e=>this.intersectionObserverCallback(e)),s),this.observer.observe(e);const n=new Fi(e);this.computer=new Li(t.minPercentageInView,t.minTimeInView,t.cumulativeTimer,n,(()=>t.completionCallback(e.id))),"hidden"!==this.visibilityState&&this.windowActive||this.stop()}getObserverThresholds(e){return.3===e.minPercentageInView?Object.assign(Object.assign({},Wi),{threshold:[.3,.5,.75,1]}):Object.assign(Object.assign({},Wi),{threshold:[.5,.75,1]})}onVisibilityChange(){this.visibilityState="visible"===this.visibilityState?"hidden":"visible",this.checkWindowActive()}onFocusChange(e){this.windowActive="focusin"===e.type||"focus"===e.type,this.checkWindowActive()}checkWindowActive(){"visible"===this.visibilityState&&this.windowActive?this.start():this.pause()}destroy(){var e;this.stop(),null===(e=this.observer)||void 0===e||e.disconnect(),this.pbstckWindow.removeEventListener("visibilitychange",this.trackedOnVisibilityChange),this.pbstckWindow.removeEventListener("focus",this.trackedOnFocusChange),this.pbstckWindow.removeEventListener("blur",this.trackedOnFocusChange),this.computer=null,this.observer=null}getElapsed(){return null===this.computer?0:this.computer.getElapsed()}pause(){var e;null===(e=this.computer)||void 0===e||e.pauseTimer()}start(){var e;null===(e=this.computer)||void 0===e||e.startTimer()}stop(){var e;null===(e=this.computer)||void 0===e||e.stopTimer()}intersectionObserverCallback(e){e.forEach((e=>{var t;null===(t=this.computer)||void 0===t||t.intersectionChange(e)}))}getTimerState(){var e;return null===(e=this.computer)||void 0===e?void 0:e.getTimerState()}}const Hi={viewableTime:1e3,largeAdunitSize:242e3,largeAdunitTreshold:.3,standardAdunitTreshold:.5};class Ji{constructor(e,t){this.viewabilityState=new Map,this.viewedTimeState=new Map,this.elementIdToCode=new Map,this.viewabilityStream=new c,this.viewedStream=new c,V("[pubstackViewability] Create ViewabilityController with config",Hi),this.pbstckWindow=t,this.pbstckWindow.addEventListener("unload",(()=>this.unloadMeasuredImpressions())),e.forwarder.coreImpressionStream.subscribe((e=>{V("[pubstackViewability] Receive impression",e.bidderCode,e.adUnit.code),this.track(e)})),e.forwarder.coreAuctionStream.subscribe((e=>{V("[pubstackViewability] Receive auctionend",e.adUnit.code),this.endMeasure(e.adUnit.code)}))}onUnload(e){this.unloadCallback=e}endMeasure(e){V("[pubstackViewability] receive event to stop measure");const t=this.viewedTimeState.get(e);void 0!==t?(t.viewabilitytracker.stop(),this.onMeasurable(e)):V("[pubstackViewability] event received but no tracker to stop, skipping")}track(e){if(!e.viewabilityMeasurable)return void V("[pubstackViewability] Cannot track impression for adUnit ",e.adUnit);const t=ci(e.adUnit);null!==t?(this.trackViewability(e,t),this.trackMeasure(e,t)):E(new Error(`[pubstackViewability] Unexpected null HTML Element on viewable impression for adUnit ${e.adUnit.name}`))}trackMeasure(e,i){return t(this,void 0,void 0,(function*(){var t;let s=null===(t=this.viewedTimeState.get(e.adUnit.code))||void 0===t?void 0:t.viewabilitytracker;this.elementIdToCode.set(i.id,e.adUnit.code),void 0!==s&&(V(`[pubstackViewability] replacing existing measurability tracker on ${i.id}`),s.stop(),this.onMeasurable(e.adUnit.code)),V(`[pubstackViewability] tracking code ${e.adUnit.code} with rule MRC for measurability`);const n={minPercentageInView:this.minPercentageInView(i,Hi),minTimeInView:18e4,cumulativeTimer:!0,completionCallback:e=>{const t=this.elementIdToCode.get(e);void 0!==t?this.onMeasurable(t):V(`[pubstackViewability] unable to find matching adunitcode for element ${e}`)}};s=new Gi(i,n,this.pbstckWindow),this.viewedTimeState.set(e.adUnit.code,{impression:e,viewabilitytracker:s})}))}trackViewability(e,i){return t(this,void 0,void 0,(function*(){var t;let s=null===(t=this.viewabilityState.get(i.id))||void 0===t?void 0:t.viewabilitytracker;void 0!==s&&(V(`[pubstackViewability] replacing existing tracker on ${i.id}`),s.destroy(),this.viewabilityState.delete(i.id)),V(`[pubstackViewability] tracking element ${i.id} with rule MRC for monitoring`);const n={minPercentageInView:this.minPercentageInView(i,Hi),minTimeInView:Hi.viewableTime,cumulativeTimer:!1,completionCallback:e=>this.onViewable(e)};s=new Gi(i,n,this.pbstckWindow),this.viewabilityState.set(i.id,{impression:e,viewabilitytracker:s})}))}minPercentageInView(e,t){const i=window.getComputedStyle(e);return Number(i.getPropertyValue("width").replace(/px/,""))*Number(i.getPropertyValue("height").replace(/px/,""))>t.largeAdunitSize?t.largeAdunitTreshold:t.standardAdunitTreshold}unloadMeasuredImpressions(){if(V("[pubstackViewability] page unloaded, forwarding impressions measured"),void 0!==this.unloadCallback){const e=[];Array.from(this.viewedTimeState.values()).forEach((t=>{if(void 0!==t.viewabilitytracker){t.viewabilitytracker.stop();const i=Math.floor(t.viewabilitytracker.getElapsed()/1e3);i>0&&e.push({bidId:t.impression.bidId,auctionId:t.impression.auctionId,lastAuctionId:t.impression.lastAuctionId,adUnit:t.impression.adUnit,bidderCode:t.impression.bidderCode,pbjsVersion:t.impression.pbjsVersion,cpm:t.impression.cpm,currency:t.impression.currency,refresh:t.impression.refresh,size:t.impression.size,viewedTime:i,pubstackRefresh:t.impression.pubstackRefresh,pubstackRefreshRank:t.impression.pubstackRefreshRank})}})),e.length>0&&this.unloadCallback(e)}}onMeasurable(e){V(`[pubstackViewability] Measurability Event on AdUnit code ${e}`);const t=this.viewedTimeState.get(e);if(void 0===t)return void E(new Error(`[pubstackViewability] Impression not found for AdUnit code ${e}`));this.viewedTimeState.delete(e);if(Math.floor(t.viewabilitytracker.getElapsed()/1e3)>0){const e=t.impression,i={bidId:e.bidId,auctionId:e.auctionId,lastAuctionId:e.lastAuctionId,adUnit:e.adUnit,bidderCode:e.bidderCode,pbjsVersion:e.pbjsVersion,cpm:e.cpm,currency:e.currency,refresh:e.refresh,size:e.size,viewedTime:Math.floor(t.viewabilitytracker.getElapsed()/1e3),pubstackRefresh:e.pubstackRefresh,pubstackRefreshRank:e.pubstackRefreshRank};V(`[pubstackViewability] Forwarding measured impression on code ${e.adUnit.code}`),this.viewedStream.next(i)}t.viewabilitytracker.destroy()}onViewable(e){V(`[pubstackViewability] Viewability Event on element ${e}`);const t=this.viewabilityState.get(e);if(void 0===t)return void E(new Error(`[pubstackViewability] Impression not found for ElementId ${e}`));this.viewabilityState.set(e,t);const i=t.impression,s={bidId:i.bidId,auctionId:i.auctionId,lastAuctionId:i.lastAuctionId,adUnit:i.adUnit,bidderCode:i.bidderCode,pbjsVersion:i.pbjsVersion,cpm:i.cpm,currency:i.currency,refresh:i.refresh,size:i.size,htmlElementId:e,pubstackRefresh:i.pubstackRefresh,pubstackRefreshRank:i.pubstackRefreshRank};V(`[pubstackViewability] Forwarding viewable impression ${s.htmlElementId}`),this.viewabilityStream.next(s)}}const Qi=()=>{const e=navigator.userAgent;return/(tablet|ipad|playbook|silk)|(android(?!.*mobi))/i.test(e)?"tablet":/Mobile|iP(hone|od)|Android|BlackBerry|IEMobile|Kindle|Silk-Accelerated|(hpw|web)OS|Opera M(obi|ini)/.test(e)?"mobile":"desktop"};function Xi(e,i,s){var n;e.pbstck=e.pbstck||{lock:{}},e.pbstck.lock=e.pbstck.lock||{},e.pbstck.scopeId=s.scopeId,e.pbstck.tagId=s.tagId;const o={},r=`${s.tagId}@${i.gateway}@collector`;if(function(e,t){return e[t]}(e.pbstck.lock,r))return;!function(e,t){e[t]=!0}(e.pbstck.lock,r);const a=new vi;let d;o.core=a,i.viewabilityEnabled&&(d=new Ji(a,e),o.viewability=d);const c=new $i(i.gateway,s,a,d,i.abTestValues);var u;o.intake=c,S((e=>c.sendError(e)),1),u=e=>{i.logsEnabled.includes(e.id)&&c.sendLog(e)},ue.subscribe(u),function(e){R.subscribe(e)}((e=>c.sendToDatadog(e)));const l=new Promise(((s,n)=>{if(i.pbjsVariableName){V("Prebid dropin mode",i.pbjsVariableName);const r={debug:B(),globalName:i.pbjsVariableName},d=function(e,t){return e[t.globalName]||(e[t.globalName]={}),e[t.globalName].que||(e[t.globalName].que=[]),e[t.globalName].que}(e,r);d.push((()=>t(this,void 0,void 0,(function*(){var t,d;const c=e[r.globalName],u=null!==(t=Number(c.getConfig("timeoutBuffer")))&&void 0!==t?t:wi,l=null===(d=c.getConfig("currency"))||void 0===d?void 0:d.adServerCurrency;let b;h(l)&&(b=l);const p=new re({version:c.version,gracePeriod:u,adServerCurrency:b,pbjsVariableName:r.globalName},i.admOnboarding);o.prebid=p;try{o.prebid=function(e,t,i,s){const n=e[s.globalName];i.bindIntegration(t);const o=le(ve(),t);let r;if(null!=n.getEvents)V("[pbjsIntegration] retrieve pbjs events using getEvents on public API"),r=n.getEvents;else{V("[pbjsIntegration] retrieve pbjs events using chunk");const t=e[`${s.globalName}Chunk`];if(void 0===t)throw new Error("[pbjsIntegration] unable to find pbjs chunk");const i=gi(t,{on:Function,getEvents:Function});if(void 0===i)throw new Error("[pbjsIntegration] unable to use event handler on adapter");r=i.getEvents}return Object.values(ce).forEach((e=>{n.onEvent(e,(t=>{var i;try{o.on(e,t)}catch(s){$("[pbjsIntegration] Error on event "+e+": "+s.message,t),T({context:Object.assign(Object.assign({},null!==(i=s.context)&&void 0!==i?i:{}),{adapter:{version:n.version,source:"pbjs:on"}}),message:s.message})}}))})),r().forEach((({eventType:e,args:t})=>{var i;try{o.on(e,t)}catch(s){$("[pbjsIntegration] Error on event "+e+": "+s.message,t),T({context:Object.assign(Object.assign({},null!==(i=s.context)&&void 0!==i?i:{}),{adapter:{version:n.version,source:"pbjs:replayed"}}),message:s.message})}})),t}(e,p,a,r),s()}catch(e){return $("Unable to load pbjs integration due to",e),void n()}}))))}}));let b,p=[];if(i.smartEnabled||i.debug){const t={debug:B(),globalName:"sas"};p=function(e,t){return e[t.globalName]||(e[t.globalName]={}),e[t.globalName].cmd||(e[t.globalName].cmd=[]),e[t.globalName].cmd}(e,t),p.push((()=>{b=Ci(e,a,t).instance}))}const m={tagId:s.tagId,globalQueue:i.sdk.globalQueue},v=ge(e,a,m);if(v.dispatchEvents(),i.debug||B()){a.subscribe({onAuction:e=>V("controller.onAuction",e),onImpression:e=>V("controller.onImpression",e)});const t=new Si(a);o.debug=t,S((e=>t.addError(e)),1e3),e.pbstck.debug=e.pbstck.debug||{},e.pbstck.debug[r]={getEvents:()=>t.getEvents(),getErrors:()=>t.getErrors(),sdk:null!==(n=null==v?void 0:v.debug())&&void 0!==n?n:void 0},(i.smartEnabled||i.debug)&&p.push((()=>{b&&(e.pbstck.debug[r].sas=b.debug())}))}return Promise.resolve().finally(),e.pbstck.controllers=e.pbstck.controllers||{},e.pbstck.controllers[`${i.gateway}@collector`]=o,l.then((()=>{e.dispatchEvent(new Event(we(`${i.gateway}@collector`,"pubstackMonitoringReady")))})),a}e.bootPubstack=Xi,e.pubstackAutoconfig=function(e){var i,s,n,o;const r={gateway:null===(i=e.endpoint)||void 0===i?void 0:i.gateway,sdk:{globalQueue:"pbstckQ"},debug:!0===e.debug,viewabilityEnabled:e.viewabilityEnabled,smartEnabled:null!==(s=e.smartEnabled)&&void 0!==s&&s,refreshConfigurationUrl:null!==(n=e.refreshConfigurationUrl)&&void 0!==n?n:"",pbjsVariableName:e.pbjsVariableName||"pbjs",abTestValues:e.abTestValues,logsEnabled:e.logsEnabled||[],admOnboarding:e.admOnboarding};if(void 0===r.gateway)return;const a=new si(navigator.userAgent),d=a.getOS(),c=a.getBrowser(),u={tagId:e.tagId,scopeId:e.scopeId,country:e.country,device:Qi(),browserName:c.name,browserVersion:c.major,osName:d.name,osVersion:d.version,pbstckVersion:null!==(o="01e89e8")?o:"unknown",customFields:Oi()};u.customFields.kleanadsDefaultDevice=window.innerWidth<768?"mobile":"desktop",t(void 0,void 0,void 0,(function*(){try{return navigator&&navigator.cookieDeprecationLabel&&navigator.cookieDeprecationLabel.getValue&&(yield navigator.cookieDeprecationLabel.getValue())||void 0}catch(e){V("Error while getting cookie depreciation label",e)}})).then((e=>{e&&(u.customFields.cdep=e)})),u.tagId&&u.scopeId&&Xi(window,r,u)}}(this.collector=this.collector||{});
;
return this;}.bind({}); var _ = load();_.collector.pubstackAutoconfig({"endpoint":{"gateway":"https://intake.pbstck.com/v1/intake"},"scopeId":"f2521fbf-96a6-4b81-8284-15bcd5ddf73b","tagId":"d7f7fa8d-5918-4306-834c-b734d9e6f9a7","viewabilityEnabled":true,"refreshEnabled":false,"smartEnabled":false,"pbjsVariableName":"pbjs","abTestValues":["A","B","C"]}); })()</script><style>@import url(https://fonts.googleapis.com/css2?family=Open+Sans:wght@500;600&display=swap);</style><style>#idw-plugin-container {
display: flex;
flex-direction: column;
box-sizing: content-box;
position: fixed;
left: -160px;
bottom: -160px;
z-index: 999999;
background-color: #fff;
height: auto;
max-width: 160px;
width: 160px;
min-width: 160px;
color: #171717;
line-height: 1rem;
outline: 1px solid #171717;
justify-content: flex-start;
-webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
-moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
opacity: 0;
transition: left .4s, bottom .4s, opacity .1s;
}
#idw-plugin-container.idw-open {
left: 0;
bottom: 0;
opacity: 1;
}
#idw-plugin-buttons {
display: flex;
flex-direction: column;
height: 100%;
width: auto;
}
#idw-plugin-container .pluginBtn {
border: none;
padding: 1px 5px !important;
margin: 0 !important;
width: auto !important;
height: 25px !important;
box-sizing: border-box !important;
border-radius: 0 !important;
text-align: right !important;
font-family: 'Open Sans', sans-serif !important;
line-height: normal !important;
text-transform: none !important;
letter-spacing: normal !important;
font-weight: 600 !important;
font-size: 14px !important;
background-color: #ffffff !important;
transition: background-color 0.2s;
cursor: pointer !important;
}
#idw-plugin-container .pluginBtn:hover {
outline: 1px solid #ffffff !important;
background-color: #171717 !important;
color: #ffffff !important;
}
#idw-open-trigger {
position: fixed;
width: 50px;
height: 50px;
bottom: 0;
left: 0;
z-index: 999999;
cursor: pointer;
-webkit-clip-path: polygon(100% 100%, 0 100%, 0 0);
clip-path: polygon(100% 100%, 0 100%, 0 0);
background-color: #171717 !important;
}
#idw-open-trigger img {
width: 28px;
height: 28px;
position: absolute;
/* padding: 4px; */
bottom: -2px;
left: -2px;
}</style><style>/***************/
/*MEDIA QUERIES*/
/***************/
/*
##Device: Tablets, Ipads (portrait)
##Screen: B/w 768px to 1024px
*/
@media (min-width: 768px) and (max-width: 1024px) {
}
/*
##Device: Most of the Smartphones Mobiles (Portrait)
##Screen: B/w 320px to 479px
*/
@media (min-width: 400px) and (max-width: 480px) {
}</style><style type="text/css">#sp_message_iframe_1127070 { display:block; width: 100%; height: 100%; border: 0 none; } #sp_message_container_1127070 { overflow:auto;-webkit-overflow-scrolling:touch; display: none; position: fixed; z-index: 2147483647; left: 0; right: 0; bottom: 0; top: 0; height: 100%; width: 100%; max-width: 100%; max-height: 100vh;}.sp-message-open { height: 100vh !important; width: 100vw !important } .sp-message-open body { overflow: hidden !important; position: fixed !important; margin-top: 0px !important; top: 0px !important; left: 0px !important; right: 0px !important; }</style><style>
#idw-plugin-container .pluginBtn {
color: undefined !important;
}
#idw-plugin-container .pluginBtn:hover {
background-color: undefined !important;
}
#idw-open-trigger {
background-color: undefined;
}
</style></head>
<body class="">
<div id="nn_mobile_lb1_wrap"><div id="nn_mobile_lb1"></div></div>
<header id="head">
<div>
<div class="container wide">
<div class="container flex">
<button id="open-menu"><img style="filter: grayscale(1) invert(1);" class="new-icon" height="16" width="16" alt="Menu icon" src="https://www.pcgamebenchmark.com/img/icons/menu.svg"></button>
<a id="logo" href="/" title="PCGameBenchmark - the system requirements site">
<img src="https://www.pcgamebenchmark.com/img/logo.svg" alt="PCGameBenchmark" width="241" height="16">
</a>
<form id="search" class="light" autocomplete="off">
<span class="twitter-typeahead" style="position: relative; display: inline-block;"><input class="typeahead tt-hint" type="text" autocomplete="off" readonly="" spellcheck="false" tabindex="-1" aria-hidden="true" style="position: absolute; top: 0px; left: 0px; border-color: transparent; box-shadow: none; opacity: 1; background: none 0% 0% / auto repeat scroll padding-box border-box rgb(235, 235, 235);" dir="ltr"><input name="q" class="typeahead tt-input" type="text" placeholder="Search for games to test" autocomplete="off" spellcheck="false" dir="auto" aria-owns="tt-b7d95070-b31f-59e5-3696-6c6412421d2f_listbox" role="combobox" aria-autocomplete="list" aria-expanded="false" style="position: relative; vertical-align: top; background-color: transparent;"><span role="status" aria-live="polite" style="position: absolute; padding: 0px; border: 0px; height: 1px; width: 1px; margin-bottom: -1px; margin-right: -1px; overflow: hidden; clip: rect(0px, 0px, 0px, 0px); white-space: nowrap;"></span><pre aria-hidden="true" style="position: absolute; visibility: hidden; white-space: pre; font-family: Tahoma, sans-serif, icomoon; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; word-spacing: 0px; letter-spacing: 0px; text-indent: 0px; text-rendering: auto; text-transform: none;"></pre><div role="listbox" class="tt-menu" id="tt-b7d95070-b31f-59e5-3696-6c6412421d2f_listbox" style="position: absolute; top: 100%; left: 0px; z-index: 100; display: none;"><div role="presentation" class="tt-dataset tt-dataset-games"></div></div></span>
</form>
<button id="open-search"><img style="filter: grayscale(1) invert(1);" class="new-icon" height="16" width="16" alt="Search icon" src="https://www.pcgamebenchmark.com/img/icons/search.svg"></button>
<div id="head-buttons">
<a target="_blank" rel="nofollow" href="https://go.pcgamebenchmark.com/nav-gaming-deals" class="button danger ovwlf" title="Gaming Deals">
<img src="https://www.pcgamebenchmark.com/img/icons/supermarket_1.svg" height="20" width="20" style="margin-top: 2px;filter: invert(1);margin-right: 3px;margin-left: 3px;">
Gaming Deals
</a>
<!-- <a target="_blank" rel="nofollow" href="https://go.pcgamebenchmark.com/FPSMonitor" class="button danger ovwlf" title="Overwolf App">
<svg width="36" height="30" viewBox="0 0 1024 829" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M778.77 290.164C779.174 290.164 651.434 213.56 651.059 211.307C648.17 195.025 644.53 168.138 626.909 154.23C611.743 142.363 509.366 93.3969 509.164 92.8862C490.314 63.2555 473.61 32.2078 459.189 0C445.494 10.719 434.356 24.5724 426.636 40.4871C418.917 56.4018 414.824 73.9507 414.673 91.7747C364.382 99.2701 317.181 121.495 278.585 155.852C378.68 131.999 407.509 153.989 407.509 153.989C374.739 160.06 343.161 171.734 314.059 188.536C271.392 212.929 252.153 242.219 252.153 242.219C252.153 242.219 349.041 213.41 423.397 241.438C388.723 246.525 356.491 262.911 331.333 288.242C485.447 308.099 561.45 447.188 593.428 559.57C605.186 359.679 509.482 283.766 509.482 283.766C537.271 285.838 572.225 308.309 594.584 341.744C662.758 333.753 700.716 355.473 700.398 355.473C699.647 355.473 737.259 343.457 763.777 330.749C761.495 327.174 751.905 314.768 746.445 307.828C747.196 307.888 768.168 306.597 778.77 290.164ZM565.899 201.694C567.401 201.303 600.795 191.54 610.328 195.295C618.994 198.69 619.167 224.345 619.167 224.345C619.167 224.345 599.379 227.229 565.899 201.694Z" fill="#CCCCCC"/>
</svg>
FPS Monitor
</a> -->
<a href="/detect/factorio" rel="nofollow" class="button brand" title="Rank my PC - check your PC score and best upgrades">Test My PC</a>
<a href="https://www.network-n.com/" target="_blank" rel="noopener" title="Network N"><img src="/img/networkn.svg" height="34" width="34" alt="NetworkN"></a>
</div>
</div>
</div>
</div>
<nav id="nav">
<div class="container wide">
<button id="close-menu"><img class="new-icon" height="16" width="16" alt="Close icon" src="https://www.pcgamebenchmark.com/img/icons/close.svg" style="width: 12px;filter: brightness(7.5);"> Close Menu</button>
<div id="desktop-nav" class="container">
<ul class="navmenu">
<li class="item">
<a style="display: flex; align-items: center;gap: 7px;" title="CPU benchmarks - Processor benchmarks" href="/processors">
<span class="new-icon cpu"></span> CPU Benchmarks
</a>
</li>
<li class="item">
<a style="display: flex; align-items: center;gap: 7px;" title="Graphics cards benchmarks" href="/graphics-cards">
<span class="new-icon gpu"></span> GPU Benchmarks
</a>
</li>
<li class="item">
<a style="display: flex; align-items: center;gap: 7px;" title="FPS Calculator" href="/fps-calculator">
<span class="new-icon laptop"></span>FPS Calculator
</a>
</li>
<li class="item">
<a style="display: flex; align-items: center;gap: 7px;" title="Compare Gaming Laptops" href="/compare-laptops">
<span class="new-icon controller"></span> Compare Gaming Laptops
</a>
</li>
<li class="item">
<a style="display: flex; align-items: center;gap: 7px;" title="The latest PC games" href="/new-pc-games">
<span class="new-icon notice"></span> New PC Games
</a>
</li>
</ul>
</div>
</div>
</nav>
</header>
<div id="nn_astro_wrapper">
<div id="nn_lb1"></div>
</div>
<div id="content">
<div id="nn_skinl"></div>
<div id="nn_skinr"></div>
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"item": {
"@id": "https://www.pcgamebenchmark.com",
"name": "PCGameBenchmark"
}
},{
"@type": "ListItem",
"position": 3,
"item": {
"@id": "https://www.pcgamebenchmark.com/factorio-system-requirements",
"name": "Factorio" }
}]
}
</script>
<script type="application/ld+json">
{
"@context" : "http://schema.org",
"@type" : "SoftwareApplication",
"name" : "Factorio",
"image" : "https://www.pcgamebenchmark.com/img/game/factorio/factorio-system-requirements.jpg",
"downloadUrl" : "https://store.steampowered.com/app/427520",
"review" : {
"@type" : "Review",
"author" : {
"@type" : "Organization",
"name" : "Metacritic"
},
"reviewRating" : {
"@type" : "Rating",
"ratingValue" : "90",
"bestRating" : "100"
}
},
"datePublished" : "2020-08-14",
"publisher" : {
"@type" : "Organization",
"name" : "Wube Software LTD." },
"author" : {
"@type" : "Organization",
"name" : "Wube Software LTD." },
"applicationCategory" : "Strategy Game",
"screenshot" : ["https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/427520\/ss_4d2dbc665c41127ff1e08e4751dce3e396c31318.1920x1080.jpg","https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/427520\/ss_d139761bad849d58c06d3aa55e2fd793dd1dde48.1920x1080.jpg","https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/427520\/ss_2d959b810950c93a61c82ed2e15e586584fd4aae.1920x1080.jpg","https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/427520\/ss_90cbfd28a001c33a24f95b72846e588d251de785.1920x1080.jpg","https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/427520\/ss_974b69922450204cbb7456390fbf116645c0df10.1920x1080.jpg","https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/427520\/ss_aba78b87a67fd23b07ff4d017fdbc36b7ba729c5.1920x1080.jpg","https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/427520\/ss_3fe723fa433d79ac51cfb2aa50164a67c83bb198.1920x1080.jpg","https:\/\/steamcdn-a.akamaihd.net\/steam\/apps\/427520\/ss_d1ab047d725056afc016340adbe49f6fbe7fa135.1920x1080.jpg"],
"operatingSystem" : "Windows 10, 8, 7, Vista (64 Bit)",
"offers": {
"@type": "Offer",
"url": "https://store.steampowered.com/app/427520",
"priceCurrency": "USD",
"price": "35.00",
"itemCondition": "https://schema.org/NewCondition",
"availability": "https://schema.org/InStock",
"seller": {
"@type": "Organization",
"name": "Steam"
}
}, "url" : "https://www.pcgamebenchmark.com/factorio-system-requirements"
}
</script>
<div class="container requirements">
<article>
<div id="details-info" class="article">
<h1>Factorio system requirements</h1>
<p>Full Factorio system requirements for PC, including minimum and recommended specs to run the Space Age expansion.</p>
<div class="requirements">
<div class="six columns">
<h2 class="minimum requirement-title"><strong>Factorio minimum requirements</strong></h2>
<ul class="bb_ul">
<li><strong>Memory:</strong> 8 GB</li>
<li>
<strong>Graphics Card:</strong>
NVIDIA GeForce GTX 750 Ti </li>
<li><strong>CPU:</strong> Intel Core 2 Quad Q9650 </li>
<li><strong>File Size:</strong> 5 GB</li>
<li><strong>OS:</strong> Windows 10, 8, 7, Vista (64 Bit)</li>
</ul>
</div>
<div class="six columns">
<h2 class="requirement-title"><strong>Factorio recommended specs</strong></h2>
<ul class="bb_ul">
<li><strong>Memory:</strong> 16 GB</li>
<li>
<strong>Graphics Card:</strong>
NVIDIA GeForce GTX 1050 Ti </li>
<li><strong>CPU:</strong> Intel Core i5-3570K </li>
<li><strong>File Size:</strong> 5 GB</li>
<li><strong>OS:</strong> Windows 10, 8, 7 (64 Bit)</li>
</ul>
</div>
</div>
<p>Can you run it? Test your computer against <strong>Factorio system requirements</strong>.</p>
<div class="row canirunit">
<a href="/detect/factorio" rel="nofollow" class="button secondary hardware-detect"><img class="new-icon" height="16" width="16" alt="windows icon" src="https://www.pcgamebenchmark.com/img/icons/windows8.svg"> <b>Can I Run It?</b><br>Test Your PC Automatically</a>
<a href="/input/factorio" rel="nofollow" class="button neutral"><img class="new-icon" height="16" width="16" alt="Platform" src="https://www.pcgamebenchmark.com/img/icons/computer.svg"> <b>Can I Run It?</b><br>Enter your system details</a>
</div>
<div class="constellation_widget_wrapper" data-widget="pcgb-homepage-latest-deals" data-gamename="Factorio"><a href="https://go.pcgamebenchmark.com/GCD" rel="sponsored nofollow noopener" target="_blank">
<div class="constellation_widget layout_1">
<div class="constellation_widget_image">
<img src="https://constellation.networknmedia.com/wp-content/uploads/2023/09/graphics-cards.jpg" alt="Widget Lead Image">
</div>
<div class="constellation_widget_text">
<span class="constellation_widget_title">Check latest deals</span>
<p>Recommended graphics cards to run this Factorio.</p>
</div>
</div>
</a></div>
<div class="nova_wrapper"><div id="nn_player"></div></div>
<div id="details-test">
<h2>Can I Run Factorio?</h2>
<div class="row">
<p>
</p><p><strong>To run the Factorio system requirements, you will need an NVIDIA GeForce GTX 750 Ti GPU, an Intel Core 2 Quad Q9650 CPU, 8GB of RAM, and 5GB of HD or SSD space.</strong></p><p>One of the greatest factory games of all time, Factorio is a game with very low hardware entry requirements. However, the <strong>Factorio requirements</strong> for PC have increased as of October 21, 2024 which saw the release of the Space Age expansion. This new late-game content and base game refinement has resulted in much higher PC requirements. Fortunately, few players should have any difficulty running the game.</p><p>Be warned that the <strong>Factorio PC requirements</strong> are hugely dependent on how many mods you load into Factorio, and how large your factory megabase becomes. </p><p>If you're playing on the <strong>Factorio minimum requirements</strong>, you will need an NVIDIA GeForce GTX 750 Ti graphics card, an Intel Core 2 Quad Q9650 processor, and 8GB of RAM. However, as your base expands and the number of entites in your base increase, you may find yourself encountering FPS issues if your hardware only barely passes the minimum requirements.</p><p>So, to get reliable gameplay, we encourage you to meet the <strong>F</strong><strong>actorio recommended specs</strong>, which require an NVIDIA GeForce GTX 1050 Ti GPU, an Intel Core i5 3570K CPU, and 16GB of RAM.</p><p>Still unsure if you can play Factorio? Try our benchmark test using our <a href="https://www.pcgamebenchmark.com/detect/factorio" target="_blank _nofollow">automatic checker</a> or by <a href="https://www.pcgamebenchmark.com/input/factorio" target="_blank _nofollow">manually entering your system details</a> to see if you can run Factorio Space Age onwards. </p><p>Encountering performance issues? Use our <a href="https://www.pcgamebenchmark.com/fps-monitor" target="_blank">FPS test</a> to find out where you're encountering FPS drops in-game, and which components are holding you back. </p>
<h2>Factorio size</h2><p><strong>The Factorio size for download on PC is only 5GB of HD space following the Space Age expansion. Previously, the game only required 3GB.</strong></p><p>We recommend using an SSD to help with load times, particularly if you're syncing hundreds of hours into a single base. Also, while the game starts of at only 5GB of space, any Factorio mods you install can easily balloon Factorio to a much larger size.</p><p>So, if you need more space or want to make an upgrade, check the PCGamesN buyers guide for the <a href="https://www.pcgamesn.com/best-ssd-for-gaming" target="_blank">best SSD for gaming</a> or just <a href="https://go.pcgamebenchmark.com/ssd" target="_blank _nofollow">check the latest, best prices for SSDs.</a></p>
<h2>Factorio space mods</h2><p>One of the most popular and expansive mods for Factorio is the <a href="https://mods.factorio.com/mod/space-exploration" target="_blank">Space Exploration mod</a> by Earendel. This mod extends the Factorio endgame significantly by allowing you to board rockets bound for space, build platforms in space, research new space tech, and even create your own spaceship.</p><p>However, as of October 21, 2024, Factorio has an inbuilt space expansion known as Space Age, which is free to all owners of Factorio, and significantly expands upon planetary exploration, spaceship/platform building, and more. Space Age brings many elements of the Space Exploration mod into the base game, while also making several tweaks to the order of research unlocks and progression. Earendel, who works as a Concept Artist for Wube Software, explained that Space Age will be accessible to all Factorio players, while their mod "Space Exploration" is designed for challenge-seeking builders.</p>
<p></p>
<p>
Factorio will run on PC system with Windows 10, 8, 7, Vista (64 Bit) and upwards.
Additionally it has Mac and Linux versions. </p>
<p>Looking for an upgrade? Try our easy to use <strong>Factorio set up guides</strong> to find the best cards. Filter for Factorio <a href="/compare-graphics-cards?games=factorio" rel="nofollow">graphics card comparison</a> and <a href="/compare-processors?games=factorio" rel="nofollow">CPU compare</a>. We'll help you find the best deal for the right gear to run the game.</p>
<h2 class="h2">Factorio FPS - what frame rate can you expect?</h2>
<p>
<strong>How many FPS will I get on Factorio?</strong>
We reference thousands of reports from PCGameBenchmark users running our <a target="_blank" rel="nofollow" href="https://go.pcgamebenchmark.com/FPSMonitorSysReqs">FPS tracking app</a> to tell you exactly how Factorio performs across a range of different settings and resolutions on the most popular PC gaming setups.
</p>
<p><strong>What frame rate does Factorio run at?</strong></p>
<p>Here are the typical frame rate samples</p>
<table class="commonFpsTable">
<tbody><tr>
<td><strong>Avg FPS</strong></td>
<td><strong>CPU</strong></td>
<td><strong>GPU</strong></td>
<td><strong>RAM</strong></td>
</tr>
<tr>
<td>48</td>
<td><a href="/cpu/intel-core-i7-7700">Intel Core i7-7700</a></td>
<td><a href="/gpu/nvidia-geforce-gtx-1050-ti">NVIDIA GeForce GTX 1050 Ti</a></td>
<td>16 GB</td>
</tr>
<tr>
<td>47</td>
<td><a href="/cpu/intel-core-i7-6700">Intel Core i7-6700</a></td>
<td><a href="/gpu/nvidia-geforce-rtx-4060-ti">NVIDIA GeForce RTX 4060 Ti</a></td>
<td>32 GB</td>
</tr>
<tr>
<td>46</td>
<td><a href="/cpu/intel-core-i7-8750h">Intel Core i7-8750H</a></td>
<td><a href="/gpu/nvidia-geforce-gtx-1050-ti">NVIDIA GeForce GTX 1050 Ti</a></td>
<td>24 GB</td>
</tr>
<tr>
<td>44</td>
<td><a href="/cpu/intel-core-i7-10700f">Intel Core i7-10700F</a></td>
<td><a href="/gpu/nvidia-geforce-rtx-3070">NVIDIA GeForce RTX 3070</a></td>
<td>32 GB</td>
</tr>
<tr>
<td>37</td>
<td><a href="/cpu/intel-celeron-n4020">Intel Celeron N4020</a></td>
<td><a href="/gpu/intel-uhd-600">Intel UHD 600</a></td>
<td>4 GB</td>
</tr>
</tbody></table>
<br>
<p>
</p><p>What frame rate does Factorio run at? Check our <a href="/fps-calculator?gameSearch=Factorio&game=8398&cpu=any&gpu=any&ram=all" rel="nofollow noopener">FPS Calculator</a></p>
<p></p>
<p>
Are you experiencing <strong>Factorio FPS drops</strong> and stutters? Want to know exactly how the game performs on <i>your</i> system? You can get a free easy FPS test for all your games using the PCGameBenchmark <a href="https://www.pcgamebenchmark.com/fps-monitor">FPS monitor</a> tool - your first step to understanding how the parts in your gaming PC are actually performing in real-world conditions.</p>
<figure id="details-graph">
<img height="480" width="600" loading="lazy" src="/factorio-system-requirements-graph.png" alt="Factorio System Requirements PC Graph - Can I Run Factorio" title="Factorio System Requirements PC Graph - Can I Run Factorio">
<figcaption>Factorio System Requirements - Can You Run Factorio?</figcaption>
</figure>
</div>
</div>
<div class="details-requirements">
<div class="six columns">
<h4>Factorio Mac OS system requirements (minimum)</h4>
<ul class="bb_ul">
<li><strong>Memory:</strong>8 GB</li>
<li><strong>Graphics Card:</strong>NVIDIA GeForce GTX 750 Ti</li>
<li><strong>CPU:</strong>Intel Core 2 Quad Q9650</li>
<li><strong>File Size:</strong>5 GB</li>
<li><strong>OS:</strong>macOS Catalina, Mojave, High Sierra, Sierra, OSX El Capitan, Yosemite</li>
</ul>
</div>
<div class="six columns">
<h4>Factorio Linux system requirements (minimum)</h4>
<ul class="bb_ul">
<li><strong>Memory:</strong>8 GB</li>
<li><strong>Graphics Card:</strong>NVIDIA GeForce GTX 750 Ti</li>
<li><strong>CPU:</strong>Intel Core 2 Quad Q9650</li>
<li><strong>File Size:</strong>5 GB</li>
<li><strong>OS:</strong>Linux (tarball installation)</li>
</ul>
</div>
</div>
<div id="nn_mobile_mpu1"></div>
<h2 class="large-header">Factorio Details</h2>
<div id="details-meta" class="metabox">
<img src="https://www.pcgamebenchmark.com/img/game/factorio/factorio-system-requirements.jpg" alt="Factorio PC Specs" title="Factorio System Requirements" width="460" height="215" loading="lazy">
<table>
<tbody><tr>
<td><b> Player Count</b></td>
<td><strong>27,152</strong> Players (Last 24 Hours)</td>
</tr>
<tr>
<td><b> Review Score</b></td>
<td><strong>90</strong> / 100</td>
</tr>
<tr>
<td><b> Download</b></td>
<td><a target="_blank" rel="noopener" href="https://fave.co/491GquT" title="Order on Humble Bundle">Order on Humble Bundle</a></td>
</tr>
<tr>
<td><b> Categories</b></td>
<td>
<a href="pc-strategy-games" title="Strategy PC Games - full list">Strategy</a>
<a href="pc-casual-games" title="Casual PC Games - full list">Casual</a>
<a href="pc-indie-games" title="Indie PC Games - full list">Indie</a>
</td>
</tr>
<tr>
<td><b> <strong>Factorio Release Date</strong></b></td>
<td>
14th of August 2020 </td>
</tr>
<tr>
<td>
<b> Factorio PC price today</b>
</td>
<td>
<span class="price">$35.00</span>
</td>
</tr>
</tbody></table>
<div class="description">
<b>What is Factorio?</b>
<p>Factorio is a game about building and creating automated factories to produce items of increasing complexity, within an infinite 2D world. Use your imagination to design your factory, combine simple elements into ingenious structures, and finally protect it from the creatures who don't really like you.</p>
</div>
</div>
<div class="constellation_widget_wrapper" data-widget="pcgb-laptops-block" style="overflow: unset;"><a href="https://amzn.to/3sqRama" rel="sponsored nofollow noopener" target="_blank">
<div class="constellation_widget layout_1">
<div class="constellation_widget_image">
<img src="https://constellation.networknmedia.com/wp-content/uploads/2023/11/pcgb-laptop.jpg" alt="Widget Lead Image">
</div>
<div class="constellation_widget_text">
<span class="constellation_widget_title">Deals on compatible laptops</span>
<p>Upgrade your gaming machine today.</p>
</div>
</div>
</a></div>
</div>
</article>
<div class="side">
<div class="mpu_wrapper">
<div id="nn_mpu1"></div>
</div>
</div>
<div class="row">
<div class="side">
<div id="post-latest">
<h3>Latest Posts</h3>
<ul>
<li onclick="window.location.href='/ram-upgrade'">
<a href="/ram-upgrade" title="How to upgrade RAM easily">
<div class="image-wrap">
<img loading="lazy" width="300" height="169" src="https://www.pcgamebenchmark.com/img/post/ram-upgrade/thumb/ram-upgrade.jpg" alt="How to upgrade RAM easily">
</div>
<div>How to upgrade RAM easily</div>
<small>23rd of July 2024</small>
</a>
</li>
<li onclick="window.location.href='/how-to-check-specs'">
<a href="/how-to-check-specs" title="How to check specs, graphics card and CPU, on your PC and laptop">
<div class="image-wrap">
<img loading="lazy" width="300" height="169" src="https://www.pcgamebenchmark.com/img/post/how-to-check-specs/thumb/how-to-check-specs.jpg" alt="How to check specs, graphics card and CPU, on your PC and laptop">
</div>
<div>How to check specs, graphics card and CPU, on your PC and laptop</div>
<small>15th of May 2024</small>
</a>
</li>
<li onclick="window.location.href='/ssd-or-hdd'">
<a href="/ssd-or-hdd" title="SSD or HDD: Which is better?">
<div class="image-wrap">
<img loading="lazy" width="300" height="169" src="https://www.pcgamebenchmark.com/img/post/ssd-or-hdd/thumb/ssd-or-hdd.jpg" alt="SSD or HDD: Which is better?">
</div>
<div>SSD or HDD: Which is better?</div>
<small>17th of June 2024</small>
</a>
</li>
<li onclick="window.location.href='/fps-monitor'">
<a href="/fps-monitor" title="Free FPS monitor to track your game frame rates">
<div class="image-wrap">
<img loading="lazy" width="300" height="169" src="https://www.pcgamebenchmark.com/img/post/fps-monitor/thumb/fps-monitor.jpg" alt="Free FPS monitor to track your game frame rates">
</div>
<div>Free FPS monitor to track your game frame rates</div>
<small>26th of September 2024</small>
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="row">
<h2>Factorio Screenshots</h2>
<div class="row">
<div id="details-screenshots">
<table>
<tbody><tr> <td>
<img loading="lazy" width="600" height="338" style="max-width: 100%;height: auto;" alt="Can i run Factorio" src="https://steamcdn-a.akamaihd.net/steam/apps/427520/ss_4d2dbc665c41127ff1e08e4751dce3e396c31318.600x338.jpg">
</td>
<td>
<img loading="lazy" width="600" height="338" style="max-width: 100%;height: auto;" alt="Factorio requirements" src="https://steamcdn-a.akamaihd.net/steam/apps/427520/ss_d139761bad849d58c06d3aa55e2fd793dd1dde48.600x338.jpg">
</td>
<td>
<img loading="lazy" width="600" height="338" style="max-width: 100%;height: auto;" alt="Factorio minimum requirements" src="https://steamcdn-a.akamaihd.net/steam/apps/427520/ss_2d959b810950c93a61c82ed2e15e586584fd4aae.600x338.jpg">
</td>
<td>
<img loading="lazy" width="600" height="338" style="max-width: 100%;height: auto;" alt="Factorio PC requirements" src="https://steamcdn-a.akamaihd.net/steam/apps/427520/ss_90cbfd28a001c33a24f95b72846e588d251de785.600x338.jpg">
</td>
</tr> <tr> <td>
<img loading="lazy" width="600" height="338" style="max-width: 100%;height: auto;" alt="Factorio recommended requirements" src="https://steamcdn-a.akamaihd.net/steam/apps/427520/ss_974b69922450204cbb7456390fbf116645c0df10.600x338.jpg">
</td>
<td>
<img loading="lazy" width="600" height="338" style="max-width: 100%;height: auto;" alt="Factorio Steam" src="https://steamcdn-a.akamaihd.net/steam/apps/427520/ss_aba78b87a67fd23b07ff4d017fdbc36b7ba729c5.600x338.jpg">
</td>
<td>
<img loading="lazy" width="600" height="338" style="max-width: 100%;height: auto;" alt="Factorio screenshot" src="https://steamcdn-a.akamaihd.net/steam/apps/427520/ss_3fe723fa433d79ac51cfb2aa50164a67c83bb198.600x338.jpg">
</td>
<td>
<img loading="lazy" width="600" height="338" style="max-width: 100%;height: auto;" alt="Factorio image" src="https://steamcdn-a.akamaihd.net/steam/apps/427520/ss_d1ab047d725056afc016340adbe49f6fbe7fa135.600x338.jpg">
</td>
</tr> </tbody></table>
</div>
</div>
<div id="trending">
<p class="small-header">Game System Requirements: Trending</p>
<div class="games-grid">
<div class="row">
<div class="three columns">
<a href="/stalker-2-system-requirements">
<div class="system-requirements-aspect-ratio-box">
<div class="system-requirements-aspect-ratio-box-inside">
<img loading="lazy" height="215" width="460" src="https://www.pcgamebenchmark.com/img/game/stalker-2/stalker-2-system-requirements.jpg" alt="STALKER 2 PC requirements">
</div>
</div>
Stalker 2 System Requirements
</a>
</div>
<div class="three columns">
<a href="/marvel-rivals-system-requirements">
<div class="system-requirements-aspect-ratio-box">
<div class="system-requirements-aspect-ratio-box-inside">
<img loading="lazy" height="215" width="460" src="https://steamcdn-a.akamaihd.net/steam/apps/2767030/header.jpg" alt="Marvel Rivals requirements for PC">
</div>
</div>
Marvel Rivals System Requirements
</a>
</div>
<div class="three columns">
<a href="/path-of-exile-2-system-requirements">
<div class="system-requirements-aspect-ratio-box">
<div class="system-requirements-aspect-ratio-box-inside">
<img loading="lazy" height="215" width="460" src="https://www.pcgamebenchmark.com/img/game/path-of-exile-2/path-of-exile-2-system-requirements.jpg" alt="Path of Exile 2 requirements for PC">
</div>
</div>
Path of Exile 2 System Requirements
</a>
</div>
<div class="three columns">
<a href="/grand-theft-auto-v-system-requirements">
<div class="system-requirements-aspect-ratio-box">
<div class="system-requirements-aspect-ratio-box-inside">
<img loading="lazy" height="215" width="460" src="https://www.pcgamebenchmark.com/img/game/grand-theft-auto-v/grand-theft-auto-v-system-requirements.jpg" alt="GTA 5 requirements">
</div>
</div>
GTA 5 System Requirements
</a>
</div>
</div>
<div class="row">
<div class="three columns">
<a href="/indiana-jones-and-the-great-circle-system-requirements">
<div class="system-requirements-aspect-ratio-box">
<div class="system-requirements-aspect-ratio-box-inside">
<img loading="lazy" height="215" width="460" src="https://steamcdn-a.akamaihd.net/steam/apps/2677660/header.jpg" alt="Indiana Jones and the Great Circle PC requirements">
</div>
</div>
Indiana Jones and the Great Circle System Requirements
</a>
</div>
<div class="three columns">
<a href="/fortnite-system-requirements">
<div class="system-requirements-aspect-ratio-box">
<div class="system-requirements-aspect-ratio-box-inside">
<img loading="lazy" height="215" width="460" src="https://www.pcgamebenchmark.com/img/game/fortnite/fortnite-system-requirements.jpg" alt="Fortnite requirements">
</div>
</div>
Fortnite System Requirements
</a>
</div>
<div class="three columns">
<a href="/call-of-duty-black-ops-6-system-requirements">
<div class="system-requirements-aspect-ratio-box">
<div class="system-requirements-aspect-ratio-box-inside">
<img loading="lazy" height="215" width="460" src="https://steamcdn-a.akamaihd.net/steam/apps/2933620/header.jpg" alt="Black Ops 6 requirements">
</div>
</div>
Call of Duty: Black Ops 6 System Requirements
</a>
</div>
<div class="three columns">
<a href="/cyberpunk-2077-system-requirements">
<div class="system-requirements-aspect-ratio-box">
<div class="system-requirements-aspect-ratio-box-inside">
<img loading="lazy" height="215" width="460" src="https://www.pcgamebenchmark.com/img/game/cyberpunk-2077/cyberpunk-2077-system-requirements.jpg" alt="Cyberpunk 2077 requirements">
</div>
</div>
Cyberpunk 2077 System Requirements
</a>
</div>
</div>
<div class="row">
<div class="three columns">
<a href="/valorant-system-requirements">
<div class="system-requirements-aspect-ratio-box">
<div class="system-requirements-aspect-ratio-box-inside">
<img loading="lazy" height="215" width="460" src="https://www.pcgamebenchmark.com/img/game/valorant/valorant-system-requirements.jpg" alt="Valorant requirements">
</div>
</div>
Valorant System Requirements
</a>
</div>
<div class="three columns">
<a href="/counter-strike-2-system-requirements">
<div class="system-requirements-aspect-ratio-box">
<div class="system-requirements-aspect-ratio-box-inside">
<img loading="lazy" height="215" width="460" src="https://www.pcgamebenchmark.com/img/game/counter-strike-2/counter-strike-2-system-requirements.jpg" alt="CS2 requirements">
</div>
</div>
CS2 System Requirements
</a>
</div>
<div class="three columns">
<a href="/red-dead-redemption-2-system-requirements">
<div class="system-requirements-aspect-ratio-box">
<div class="system-requirements-aspect-ratio-box-inside">
<img loading="lazy" height="215" width="460" src="https://www.pcgamebenchmark.com/img/game/red-dead-redemption-2/red-dead-redemption-2-system-requirements.jpg" alt="Red Dead Redemption 2 requirements">
</div>
</div>
Red Dead Redemption 2 System Requirements
</a>
</div>
<div class="three columns">
<a href="/baldurs-gate-3-system-requirements">
<div class="system-requirements-aspect-ratio-box">
<div class="system-requirements-aspect-ratio-box-inside">
<img loading="lazy" height="215" width="460" src="https://www.pcgamebenchmark.com/img/game/baldurs-gate-3/baldurs-gate-3-system-requirements.jpg" alt="Baldur's Gate 3 requirements">
</div>
</div>
Baldur's Gate 3 System Requirements
</a>
</div>
</div>
<div class="row">
<div class="three columns">
<a href="/elden-ring-system-requirements">
<div class="system-requirements-aspect-ratio-box">
<div class="system-requirements-aspect-ratio-box-inside">
<img loading="lazy" height="215" width="460" src="https://www.pcgamebenchmark.com/img/game/elden-ring/elden-ring-system-requirements.jpg" alt="Elden Ring requirements">
</div>
</div>
Elden Ring System Requirements
</a>
</div>
<div class="three columns">
<a href="/minecraft-system-requirements">
<div class="system-requirements-aspect-ratio-box">
<div class="system-requirements-aspect-ratio-box-inside">
<img loading="lazy" height="215" width="460" src="https://www.pcgamebenchmark.com/img/game/minecraft/minecraft-system-requirements.jpg" alt="Minecraft system requirements">
</div>
</div>
Minecraft System Requirements
</a>
</div>
<div class="three columns">
<a href="/god-of-war-ragnarok-system-requirements">
<div class="system-requirements-aspect-ratio-box">
<div class="system-requirements-aspect-ratio-box-inside">
<img loading="lazy" height="215" width="460" src="https://www.pcgamebenchmark.com/img/game/god-of-war-ragnarok/god-of-war-ragnarok-system-requirements.jpg" alt="God of War Ragnarok PC requirements">
</div>
</div>
God of War Ragnarök System Requirements
</a>
</div>
<div class="three columns">
<a href="/black-myth-wukong-system-requirements">
<div class="system-requirements-aspect-ratio-box">
<div class="system-requirements-aspect-ratio-box-inside">
<img loading="lazy" height="215" width="460" src="https://steamcdn-a.akamaihd.net/steam/apps/2358720/header.jpg" alt="Black Myth Wukong requirements">
</div>
</div>
Black Myth: Wukong System Requirements
</a>
</div>
</div>
<div class="row">
<div class="three columns">
<a href="/monster-hunter-wilds-system-requirements">
<div class="system-requirements-aspect-ratio-box">
<div class="system-requirements-aspect-ratio-box-inside">
<img loading="lazy" height="215" width="460" src="https://steamcdn-a.akamaihd.net/steam/apps/2246340/header.jpg" alt="Monster Hunter Wilds system requirements">
</div>
</div>
Monster Hunter Wilds System Requirements
</a>
</div>
<div class="three columns">
<a href="/forza-horizon-5-system-requirements">
<div class="system-requirements-aspect-ratio-box">
<div class="system-requirements-aspect-ratio-box-inside">
<img loading="lazy" height="215" width="460" src="https://www.pcgamebenchmark.com/img/game/forza-horizon-5/forza-horizon-5-system-requirements.jpg" alt="Forza Horizon 5 requirements">
</div>
</div>
Forza Horizon 5 System Requirements
</a>
</div>
<div class="three columns">
<a href="/roblox-system-requirements">
<div class="system-requirements-aspect-ratio-box">
<div class="system-requirements-aspect-ratio-box-inside">
<img loading="lazy" height="215" width="460" src="https://www.pcgamebenchmark.com/img/game/roblox/roblox-system-requirements.jpg" alt="Roblox system requirements for PC">
</div>
</div>
Roblox System Requirements
</a>
</div>
<div class="three columns">
<a href="/deadlock-system-requirements">
<div class="system-requirements-aspect-ratio-box">
<div class="system-requirements-aspect-ratio-box-inside">
<img loading="lazy" height="215" width="460" src="https://www.pcgamebenchmark.com/img/game/deadlock/deadlock-system-requirements.jpg" alt="Deadlock system requirements">
</div>
</div>
Deadlock System Requirements
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<footer id="footer">
<div class="container">
<div class="six columns">
<span class="sub-header">Legal bits</span>
<span class="copy"><strong>PCGameBenchmark</strong> - 2024</span>
<span class="legal">All product names, trademarks and registered trademarks are property of their respective owners.<br>As an Amazon Associate I earn from qualifying purchases. We may earn commission from other affiliate programs.</span>
</div>
<div class="six columns">
<span class="sub-header">Guides and lists</span>
<ul>
<li><a href="/compare-graphics-cards" title="Compare Graphics Cards">Compare Graphics Cards</a></li>
<li><a href="/compare-processors" title="Compare Processors">Compare Processors</a></li>
<li><a href="/best-pc-games" title="Best PC Games">Best PC Games</a></li>
<li><a href="/upcoming-pc-games" title="PC games release list">Upcoming PC Games</a></li>
<li><a href="/new-pc-games" title="The latest PC game releases">New PC Games</a></li>
</ul>
<ul class="meta">
<li><a target="_blank" rel="noopener" href="https://www.networknmedia.com/privacy">Privacy</a></li>
<li><a target="_blank" rel="noopener" href="https://www.networknmedia.com/terms">Terms</a></li>
<li><a target="_blank" rel="noopener" href="https://www.networknmedia.com/cookies">Cookies</a></li>
<li><a target="_blank" rel="noopener" href="https://www.networknmedia.com/accessibility">Accessibility</a></li>
<li><a href="/contact">Contact</a></li>
<li><a class="nn-cmp-show" href="#">Manage Cookie Settings</a></li>
</ul>
</div>
</div>
</footer>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js" integrity="sha512-bLT0Qm9VnAYZDflyKcBaQ2gg0hSYNQrJ8RilYldYQ1FxQYoCLtUjuuRuZo+fjqhx/qtq/1itJ0C2ejDxltZVFg==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/corejs-typeahead/1.3.1/typeahead.bundle.min.js" integrity="sha512-lEb9Vp/rkl9g2E/LdHIMFTqz21+LA79f84gqP75fbimHqVTu6483JG1AwJlWLLQ8ezTehty78fObKupq3HSHPQ==" crossorigin="anonymous" defer=""></script>
<script>const mos = 'https://www.pcgamebenchmark.com';</script>
<script src="https://www.pcgamebenchmark.com/dist/main.js?v=1.0.32"></script>
<iframe name="__tcfapiLocator" style="display: none;"></iframe><script src="https://constellation.networknmedia.com/wp-content/plugins/constellation-widgets/assets/app.js" defer=""></script>
<script async="" src="https://www.googletagmanager.com/gtag/js?id=G-26WNWF3X7L"></script>
<script>
// TODO: check if this is required
window['gtag_enable_tcf_support'] = true
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-26WNWF3X7L');
</script>
<script id="parsely-cfg" src="//cdn.parsely.com/keys/pcgamebenchmark.com/p.js" async="" defer=""></script>
<script>
window.horizon = window.horizon || {};
window.horizon.horizonURL = 'https://apihorizon.nnmtools.com';
window.horizon.horizonCDNURL = 'https://cdnhorizon.nnmtools.com';
window.horizon.horizonSiteId = 'pcgamebenchmark';
window.horizon.horizonSchema = {"site_id":"pcgamebenchmark","datetime":1734478807,"page_url":"https:\/\/www.pcgamebenchmark.com\/factorio-system-requirements","cell":"","article_type":"page","lead_image":"https:\/\/www.pcgamebenchmark.com\/factorio-system-requirements-graph.png","title":"Factorio system requirements - Can I Run It? - PCGameBenchmark","tag":[],"category":[],"section":[],"author":"pcgamebenchmark","facets":[],"date_published":"2024-12-17 23:40:07","date_modified":"2024-12-17 23:40:07","page_type":"listing"};
</script>
<script>
fetch(window.horizon.horizonCDNURL + '/dist/manifest.json')
.then(response => response.json())
.then(data => {
const script = document.createElement('script');
script.src = window.horizon.horizonCDNURL + '/dist/' + data['app.js'];
document.body.appendChild(script);
});
</script>
<script src="https://cdnhorizon.nnmtools.com/dist/js/app.a3f36457.min.js"></script><iframe name="__uspapiLocator" style="display: none;"></iframe><iframe name="__gppLocator" style="display: none;"></iframe><div class="nn-sticky" id="nn_lb2_wrap"><div id="nn_lb2"></div></div><img src="https://ad-delivery.net/px.gif?ch=2" style="display: none !important; width: 1px !important; height: 1px !important;"><img src="https://ad.doubleclick.net/favicon.ico?ad=300x250&ad_box_=1&adnet=1&showad=1&size=250x250" style="display: none !important; width: 1px !important; height: 1px !important;"><img src="https://ad-delivery.net/px.gif?ch=1&e=0.98748894336505" style="display: none !important; width: 1px !important; height: 1px !important;"><div id="sp_message_container_1127070" style="display: block;"><iframe src="https://cdn.privacy-mgmt.com/index.html?hasCsp=true&message_id=1127070&consentUUID=null&consent_origin=https%3A%2F%2Fcdn.privacy-mgmt.com%2Fconsent%2Ftcfv2&preload_message=true&version=v1" id="sp_message_iframe_1127070" title="SP Consent Message"></iframe></div></body></html>