model

Why FiveThirtyEight’s model favors the Miami Heat over the Los Angeles Lakers.

Jimmy Butler and Andre Iguodala of the Miami Heat celebrate together.
A computer loves these guys.
Pool/Getty Images

When the NBA season started, the Miami Heat had 60-to-1 odds to win the championship, making them the 14th-most-likely team to win it all. Needless to say, a lot has happened since then. The Sonic the Hedgehog movie was delayed. Donald Trump was impeached. The Sonic the Hedgehog movie was released. But after nearly a full calendar year of Sonic- and non-Sonic-related tumult, the long shots from South Beach are within striking distance of winning the NBA Finals.

On Monday, the William Hill sportsbook listed the Heat as +320 underdogs while the Lakers were -400 favorites. That means you’d make $320 on a $100 bet on the Heat to win it all, while you’d have to wager $400 on the Lakers to win $100. Miami star Jimmy Butler disagrees with those odds.

Not to be the fly in Butler’s motivational ointment, but his us-against-the-world assumption is not true. According to ESPN, 17 of the first 18 NBA Finals bets placed at the Westgate in Las Vegas were on Miami. And it’s not just extremely punctual gamblers who like the Heat. There’s an advanced computer model that favors them, too.

FiveThirtyEight’s 2019-20 NBA forecast model, code-named RAPTOR, gives the Heat a 73 percent chance of winning the Finals. How is it possible that the Lakers, a team with LeBron James and Anthony Davis, have just a 27 percent chance to win a seven-game series?

“Basically, the ‘predictive’ version of RAPTOR is wildly high on the Heat and down on the Lakers in the playoffs so far,” FiveThirtyEight’s Neil Paine told me. RAPTOR, Paine explains, comes in two flavors. The standard version credits players for things they’ve done in the past, even if they are considered to be lucky in retrospect. Predictive RAPTOR, by contrast, “gives more weight to things that are considered more persistent and downweights stats that are more luck-based,” Paine says. For the curious, FiveThirtyEight’s Nate Silver wrote up a long methodological explainer back in October. For the marginally curious, consider this one example: The Lakers have been making more field goals than expected based on where those shots were taken. RAPTOR takes that (among lots of other things) into account, and forecasts the Lakers won’t be as good as their past performances might lead you believe. (Though, the Denver Nuggets, the Lakers’ opponents in the previous round, out-shot expectations even more than Los Angeles did.)

Normally, there is a strong correlation between the two RAPTOR models, but the Lakers’ postseason performances have caused a rift. According to Paine, the gap between the Lakers’ standard and predictive RAPTOR scores is the fifth-widest that FiveThirtyEight has seen since 2014. (To be precise, the Heat have a +23.6 predictive RAPTOR in the postseason compared to +1.5, for the Lakers, while they’re relatively even—+12.1 for the Heat, +11.0 for the Lakers—in regular RAPTOR.)

RAPTOR has been a certified Lakers-hater throughout the playoffs. Paine and FiveThirtyEight sports editor Sara Ziegler discussed this on their Hot Takedown podcast last week. At that point, when Los Angeles was up two games to none against the Denver Nuggets in the Western Conference Finals, RAPTOR still gave LeBron and co. just a 23 percent chance of winning the Finals.

That their odds increased only 4 percentage points after the field was reduced in half is a testament to predictive RAPTOR’s disdain for the Lakers, even if the normal, “backwards-looking” version of the model thinks they’re just swell.

One might recall that FiveThirtyEight’s presidential forecast gave Hillary Clinton a 71 percent chance to beat Donald Trump on Election Day in 2016. Are the Heat the new Hillary? Paine says that his “own personal intuition is that [RAPTOR] is underrating the Lakers.” But don’t underrate the scrappy Heat, either. They’re both favorites and underdogs, just like those gritty Lakers.

Listen to an episode of Slate’s sports podcast Hang Up and Listen below, or subscribe to the show on Apple PodcastsOvercastSpotifyStitcherGoogle Play, or wherever you get your podcasts.

'));else {
if (!0 === d.b.getConfig("enableSendAllBids")) return;
p.native = {
title: (t = e.native).products[0].title,
body: t.products[0].description,
sponsoredBy: t.advertiser.description,
icon: t.advertiser.logo,
image: t.products[0].image,
clickUrl: t.products[0].click_url,
privacyLink: t.privacy.optout_click_url,
privacyIcon: t.privacy.optout_image_url,
cta: t.products[0].call_to_action,
price: t.products[0].price,
impressionTrackers: t.impression_pixels.map(function (t) {
return t.url;
})
}, p.mediaType = h.c;
}
} else e.video ? (p.vastUrl = e.displayurl, p.mediaType = h.d) : p.ad = e.creative;
c.push(p);
}), c;
},
onTimeout: function onTimeout(t) {
T() && Criteo.PubTag.Adapters.Prebid.GetAdapter(t.auctionId).handleBidTimeout();
},
onBidWon: function onBidWon(t) {
T() && Criteo.PubTag.Adapters.Prebid.GetAdapter(t.auctionId).handleBidWon(t);
},
onSetTargeting: function onSetTargeting(t) {
T() && Criteo.PubTag.Adapters.Prebid.GetAdapter(t.auctionId).handleSetTargeting(t);
}
};

function T() {
return "undefined" != typeof Criteo && Criteo.PubTag && Criteo.PubTag.Adapters && Criteo.PubTag.Adapters.Prebid;
}

function C(t) {
return f.deepAccess(t, "mediaTypes.banner.sizes") || t.sizes;
}

function A(t, e) {
return Array.isArray(t[0]) ? t.map(function (t) {
return e(t);
}) : [e(t)];
}

function S(t) {
return t[0] + "x" + t[1];
}

function I(t) {
return void 0 === t[0] && void 0 === t[1] ? "2x2" : t[0] + "x" + t[1];
}

function R(t) {
return void 0 !== f.deepAccess(t, "params.video") && void 0 !== f.deepAccess(t, "mediaTypes.video");
}

function x() {
try {
var t,
e,
r,
i,
o,
n = "criteo_fast_bid",
s = "// Hash: ",
a = y.getDataFromLocalStorage(n);
null !== a && (t = a.indexOf("n"), (e = a.substr(0, t).trim()).substr(0, s.length) !== s ? (f.logWarn("No hash found in FastBid"), y.removeDataFromLocalStorage(n)) : (r = e.substr(s.length), i = a.substr(t + 1), Object(p.verify)(i, r, g, b) ? (f.logInfo("Using Criteo FastBid"), (o = document.createElement("script")).type = "text/javascript", o.text = i, f.insertElement(o)) : (f.logWarn("Invalid Criteo FastBid found"), y.removeDataFromLocalStorage(n))));
} catch (t) {}
}

Object(i.registerBidder)(s);
},
382: function _(t, e, r) {
"use strict";

Object.defineProperty(e, "__esModule", {
value: !0
});
var a = r(383),
p = r(384);

e.verify = function (t, e, r, i) {
var o = new a.BigInteger(a.b64toHex(e)),
n = new a.BigInteger(a.b64toHex(r)),
s = o.modPowInt(i, n);
return a.removeExtraSymbols(s.toHexString()) === p.Sha256.hash(t);
};
},
383: function _(t, e, r) {
"use strict";

var i;
Object.defineProperty(e, "__esModule", {
value: !0
});
var o = (g.prototype.toHexString = function () {
if (this.s < 0) return "-" + this.negate().toHexString(); var t, e = !1, r = "", i = this.t, o = this.DB - i * this.DB % 4; if (0 < i--) for (o < this.DB && 0 < (t = this[i] >> o) && (e = !0, r = c(t)); 0 <= i;) { o < 4 ? (t = (this[i] & (1 << o) - 1) << 4 - o, t |= this[--i] >> (o += this.DB - 4)) : (t = this[i] >> (o -= 4) & 15, o <= 0 && (o += this.DB, --i)), 0 < t && (e = !0), e && (r += c(t)); } return e ? r : "0"; }, g.prototype.fromHexString = function (t) { if (null !== t) { this.t = 0, this.s = 0; for (var e = t.length, r = !1, i = 0; 0 <= --e;) { var o = p(t, e); o < 0 ? "-" == t.charAt(e) && (r = !0) : (r = !1, 0 == i ? this[this.t++] = o : i + 4 > this.DB ? (this[this.t - 1] |= (o & (1 << this.DB - i) - 1) << i, this[this.t++] = o >> this.DB - i) : this[this.t - 1] |= o << i, (i += 4) >= this.DB && (i -= this.DB));
}

this.clamp(), r && g.ZERO.subTo(this, this);
}
}, g.prototype.negate = function () {
var t = T();
return g.ZERO.subTo(this, t), t;
}, g.prototype.abs = function () {
return this.s < 0 ? this.negate() : this; }, g.prototype.mod = function (t) { var e = T(); return this.abs().divRemTo(t, null, e), this.s < 0 && 0 < e.compareTo(g.ZERO) && t.subTo(e, e), e; }, g.prototype.copyTo = function (t) { for (var e = this.t - 1; 0 <= e; --e) { t[e] = this[e]; } t.t = this.t, t.s = this.s; }, g.prototype.lShiftTo = function (t, e) { for (var r = t % this.DB, i = this.DB - r, o = (1 << i) - 1, n = Math.floor(t / this.DB), s = this.s << r & this.DM, a = this.t - 1; 0 <= a; --a) { e[a + n + 1] = this[a] >> i | s, s = (this[a] & o) << r; } for (a = n - 1; 0 <= a; --a) { e[a] = 0; } e[n] = s, e.t = this.t + n + 1, e.s = this.s, e.clamp(); }, g.prototype.invDigit = function () { if (this.t < 1) return 0; var t = this[0]; if (0 == (1 & t)) return 0; var e = 3 & t; return 0 < (e = (e = (e = (e = e * (2 - (15 & t) * e) & 15) * (2 - (255 & t) * e) & 255) * (2 - ((65535 & t) * e & 65535)) & 65535) * (2 - t * e % this.DV) % this.DV) ? this.DV - e : -e; }, g.prototype.dlShiftTo = function (t, e) { for (var r = this.t - 1; 0 <= r; --r) { e[r + t] = this[r]; } for (r = t - 1; 0 <= r; --r) { e[r] = 0; } e.t = this.t + t, e.s = this.s; }, g.prototype.squareTo = function (t) { for (var e = this.abs(), r = t.t = 2 * e.t; 0 <= --r;) { t[r] = 0; } for (r = 0; r < e.t - 1; ++r) { var i = e.am(r, e[r], t, 2 * r, 0, 1); (t[r + e.t] += e.am(r + 1, 2 * e[r], t, 2 * r + 1, i, e.t - r - 1)) >= e.DV && (t[r + e.t] -= e.DV, t[r + e.t + 1] = 1);
}

0 < t.t && (t[t.t - 1] += e.am(r, e[r], t, 2 * r, 0, 1)), t.s = 0, t.clamp(); }, g.prototype.multiplyTo = function (t, e) { var r = this.abs(), i = t.abs(), o = r.t; for (e.t = o + i.t; 0 <= --o;) { e[o] = 0; } for (o = 0; o < i.t; ++o) { e[o + r.t] = r.am(0, i[o], e, o, 0, r.t); } e.s = 0, e.clamp(), this.s != t.s && g.ZERO.subTo(e, e); }, g.prototype.divRemTo = function (t, e, r) { var i = t.abs(); if (!(i.t <= 0)) { var o = this.abs(); if (o.t < i.t) return null != e && e.fromHexString("0"), void (null != r && this.copyTo(r)); null == r && (r = T()); var n = T(), s = this.s, a = t.s, p = this.DB - C(i[i.t - 1]); 0 < p ? (i.lShiftTo(p, n), o.lShiftTo(p, r)) : (i.copyTo(n), o.copyTo(r)); var u = n.t, c = n[u - 1]; if (0 != c) { var d = c * (1 << this.F1) + (1 < u ? n[u - 2] >> this.F2 : 0),
h = this.FV / d,
f = (1 << this.F1) / d, l = 1 << this.F2, m = r.t, v = m - u, y = null == e ? T() : e; for (n.dlShiftTo(v, y), 0 <= r.compareTo(y) && (r[r.t++] = 1, r.subTo(y, r)), g.ONE.dlShiftTo(u, y), y.subTo(n, n); n.t < u;) { n[n.t++] = 0; } for (; 0 <= --v;) { var b = r[--m] == c ? this.DM : Math.floor(r[m] * h + (r[m - 1] + l) * f); if ((r[m] += n.am(0, b, r, v, 0, u)) < b) for (n.dlShiftTo(v, y), r.subTo(y, r); r[m] < --b;) { r.subTo(y, r); } } null != e && (r.drShiftTo(u, e), s != a && g.ZERO.subTo(e, e)), r.t = u, r.clamp(), 0 < p && r.rShiftTo(p, r), s < 0 && g.ZERO.subTo(r, r); } } }, g.prototype.rShiftTo = function (t, e) { e.s = this.s; var r = Math.floor(t / this.DB); if (r >= this.t) e.t = 0;else {
var i = t % this.DB,
o = this.DB - i,
n = (1 << i) - 1; e[0] = this[r] >> i;

for (var s = r + 1; s < this.t; ++s) { e[s - r - 1] |= (this[s] & n) << o, e[s - r] = this[s] >> i;
}

0 < i && (e[this.t - r - 1] |= (this.s & n) << o), e.t = this.t - r, e.clamp(); } }, g.prototype.drShiftTo = function (t, e) { for (var r = t; r < this.t; ++r) { e[r - t] = this[r]; } e.t = Math.max(this.t - t, 0), e.s = this.s; }, g.prototype.subTo = function (t, e) { for (var r = 0, i = 0, o = Math.min(t.t, this.t); r < o;) { i += this[r] - t[r], e[r++] = i & this.DM, i >>= this.DB;
}

if (t.t < this.t) { for (i -= t.s; r < this.t;) { i += this[r], e[r++] = i & this.DM, i >>= this.DB;
}

i += this.s;
} else {
for (i += this.s; r < t.t;) { i -= t[r], e[r++] = i & this.DM, i >>= this.DB;
}

i -= t.s;
}

e.s = i < 0 ? -1 : 0, i < -1 ? e[r++] = this.DV + i : 0 < i && (e[r++] = i), e.t = r, e.clamp(); }, g.prototype.clamp = function () { for (var t = this.s & this.DM; 0 < this.t && this[this.t - 1] == t;) { --this.t; } }, g.prototype.modPowInt = function (t, e) { var r = new (t < 256 || e.isEven() ? d : f)(e); return this.exp(t, r); }, g.prototype.exp = function (t, e) { if (4294967295 < t || t < 1) return g.ONE; var r, i = T(), o = T(), n = e.convert(this), s = C(t) - 1; for (n.copyTo(i); 0 <= --s;) { e.sqrTo(i, o), 0 < (t & 1 << s) ? e.mulTo(o, n, i) : (r = i, i = o, o = r); } return e.revert(i); }, g.prototype.isEven = function () { return 0 == (0 < this.t ? 1 & this[0] : this.s); }, g.prototype.compareTo = function (t) { var e = this.s - t.s; if (0 != e) return e; var r = this.t; if (0 != (e = r - t.t)) return this.s < 0 ? -e : e; for (; 0 <= --r;) { if (0 != (e = this[r] - t[r])) return e; } return 0; }, g.prototype.am1 = function (t, e, r, i, o, n) { for (; 0 <= --n;) { var s = e * this[t++] + r[i] + o; o = Math.floor(s / 67108864), r[i++] = 67108863 & s; } return o; }, g.prototype.am2 = function (t, e, r, i, o, n) { for (var s = 32767 & e, a = e >> 15; 0 <= --n;) { var p = 32767 & this[t], u = this[t++] >> 15,
c = a * p + u * s;
o = ((p = s * p + ((32767 & c) << 15) + r[i] + (1073741823 & o)) >>> 30) + (c >>> 15) + a * u + (o >>> 30), r[i++] = 1073741823 & p;
}

return o;
}, g.prototype.am3 = function (t, e, r, i, o, n) {
for (var s = 16383 & e, a = e >> 14; 0 <= --n;) { var p = 16383 & this[t], u = this[t++] >> 14,
c = a * p + u * s;
o = ((p = s * p + ((16383 & c) << 14) + r[i] + o) >> 28) + (c >> 14) + a * u, r[i++] = 268435455 & p;
}

return o;
}, g);

function g(t) {
null !== t && this.fromHexString(t);
}

function T() {
return new o(null);
}

function C(t) {
var e,
r = 1;
return 0 != (e = t >>> 16) && (t = e, r += 16), 0 != (e = t >> 8) && (t = e, r += 8), 0 != (e = t >> 4) && (t = e, r += 4), 0 != (e = t >> 2) && (t = e, r += 2), 0 != (e = t >> 1) && (t = e, r += 1), r;
}

e.BigInteger = o, e.nbi = T, e.nbits = C;

for (var n = [], s = "0".charCodeAt(0), a = 0; a <= 9; ++a) { n[s++] = a; } for (s = "a".charCodeAt(0), a = 10; a < 36; ++a) { n[s++] = a; } for (s = "A".charCodeAt(0), a = 10; a < 36; ++a) { n[s++] = a; } function p(t, e) { var r = n[t.charCodeAt(e)]; return null == r ? -1 : r; } e.intAt = p; var u = "0123456789abcdefghijklmnopqrstuvwxyz"; function c(t) { return u.charAt(t); } e.int2char = c; e.b64toHex = function (t) { for (var e = "", r = 0, i = 0, o = 0; o < t.length && "=" != t.charAt(o); ++o) { var n = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(t.charAt(o)); n < 0 || (r = 0 == r ? (e += c(n >> 2), i = 3 & n, 1) : 1 == r ? (e += c(i << 2 | n >> 4), i = 15 & n, 2) : 2 == r ? (e += c(i), e += c(n >> 2), i = 3 & n, 3) : (e += c(i << 2 | n >> 4), e += c(15 & n), 0));
}

return 1 == r && (e += c(i << 2)), e; }, e.removeExtraSymbols = function (t) { return t.replace(/^1f+00/, "").replace("3031300d060960864801650304020105000420"https://slate.com/,""); }; var d = (h.prototype.convert = function (t) { return t.s < 0 || 0 <= t.compareTo(this.m) ? t.mod(this.m) : t; }, h.prototype.revert = function (t) { return t; }, h.prototype.reduce = function (t) { t.divRemTo(this.m, null, t); }, h.prototype.mulTo = function (t, e, r) { t.multiplyTo(e, r), this.reduce(r); }, h.prototype.sqrTo = function (t, e) { t.squareTo(e), this.reduce(e); }, h); function h(t) { this.m = t; } var f = (l.prototype.convert = function (t) { var e = T(); return t.abs().dlShiftTo(this.m.t, e), e.divRemTo(this.m, null, e), t.s < 0 && 0 < e.compareTo(o.ZERO) && this.m.subTo(e, e), e; }, l.prototype.revert = function (t) { var e = T(); return t.copyTo(e), this.reduce(e), e; }, l.prototype.reduce = function (t) { for (; t.t <= this.mt2;) { t[t.t++] = 0; } for (var e = 0; e < this.m.t; ++e) { var r = 32767 & t[e], i = r * this.mpl + ((r * this.mph + (t[e] >> 15) * this.mpl & this.um) << 15) & t.DM; for (t[r = e + this.m.t] += this.m.am(0, i, t, e, 0, this.m.t); t[r] >= t.DV;) {
t[r] -= t.DV, t[++r]++;
}
}

t.clamp(), t.drShiftTo(this.m.t, t), 0 <= t.compareTo(this.m) && t.subTo(this.m, t); }, l.prototype.mulTo = function (t, e, r) { t.multiplyTo(e, r), this.reduce(r); }, l.prototype.sqrTo = function (t, e) { t.squareTo(e), this.reduce(e); }, l); function l(t) { this.m = t, this.mp = t.invDigit(), this.mpl = 32767 & this.mp, this.mph = this.mp >> 15, this.um = (1 << t.DB - 15) - 1, this.mt2 = 2 * t.t; } function m(t) { var e = T(); return e.fromHexString(t.toString()), e; } e.nbv = m, o.ZERO = m(0), o.ONE = m(1), i = "Microsoft Internet Explorer" == navigator.appName ? (o.prototype.am = o.prototype.am2, 30) : "Netscape" != navigator.appName ? (o.prototype.am = o.prototype.am1, 26) : (o.prototype.am = o.prototype.am3, 28), o.prototype.DB = i, o.prototype.DM = (1 << i) - 1, o.prototype.DV = 1 << i; o.prototype.FV = Math.pow(2, 52), o.prototype.F1 = 52 - i, o.prototype.F2 = 2 * i - 52; }, 384: function _(t, e, r) { "use strict"; Object.defineProperty(e, "__esModule", { value: !0 }); var i = (S.hash = function (t) { t = S.utf8Encode(t || ""); for (var e = [1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298], r = [1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635, 1541459225], i = (t += String.fromCharCode(128)).length / 4 + 2, o = Math.ceil(i / 16), n = new Array(o), s = 0; s < o; s++) { n[s] = new Array(16); for (var a = 0; a < 16; a++) { n[s][a] = t.charCodeAt(64 * s + 4 * a) << 24 | t.charCodeAt(64 * s + 4 * a + 1) << 16 | t.charCodeAt(64 * s + 4 * a + 2) << 8 | t.charCodeAt(64 * s + 4 * a + 3) << 0; } } var p = 8 * (t.length - 1) / Math.pow(2, 32), u = 8 * (t.length - 1) >>> 0;

for (n[o - 1][14] = Math.floor(p), n[o - 1][15] = u, s = 0; s < o; s++) { for (var c = new Array(64), d = 0; d < 16; d++) { c[d] = n[s][d]; } for (d = 16; d < 64; d++) { c[d] = S.q1(c[d - 2]) + c[d - 7] + S.q0(c[d - 15]) + c[d - 16] >>> 0;
}

for (var h = r[0], f = r[1], l = r[2], m = r[3], v = r[4], y = r[5], b = r[6], g = r[7], d = 0; d < 64; d++) { var T = g + S.z1(v) + S.Ch(v, y, b) + e[d] + c[d], C = S.z0(h) + S.Maj(h, f, l); g = b, b = y, y = v, v = m + T >>> 0, m = l, l = f, f = h, h = T + C >>> 0;
}

r[0] = r[0] + h >>> 0, r[1] = r[1] + f >>> 0, r[2] = r[2] + l >>> 0, r[3] = r[3] + m >>> 0, r[4] = r[4] + v >>> 0, r[5] = r[5] + y >>> 0, r[6] = r[6] + b >>> 0, r[7] = r[7] + g >>> 0;
}

for (var A = new Array(r.length), g = 0; g < r.length; g++) { A[g] = ("00000000" + r[g].toString(16)).slice(-8); } return A.join(""); }, S.utf8Encode = function (e) { try { return new TextEncoder().encode(e).reduce(function (t, e) { return t + String.fromCharCode(e); }, ""); } catch (t) { return unescape(encodeURIComponent(e)); } }, S.ROTR = function (t, e) { return e >>> t | e << 32 - t; }, S.z0 = function (t) { return S.ROTR(2, t) ^ S.ROTR(13, t) ^ S.ROTR(22, t); }, S.z1 = function (t) { return S.ROTR(6, t) ^ S.ROTR(11, t) ^ S.ROTR(25, t); }, S.q0 = function (t) { return S.ROTR(7, t) ^ S.ROTR(18, t) ^ t >>> 3;
}, S.q1 = function (t) {
return S.ROTR(17, t) ^ S.ROTR(19, t) ^ t >>> 10;
}, S.Ch = function (t, e, r) {
return t & e ^ ~t & r;
}, S.Maj = function (t, e, r) {
return t & e ^ t & r ^ e & r;
}, S);

function S() {}

e.Sha256 = i;
}
}, [380]);
pbjsChunk([187], {
481: function _(e, r, t) {
e.exports = t(482);
},
482: function _(e, r, t) {
"use strict";

Object.defineProperty(r, "__esModule", {
value: !0
}), t.d(r, "spec", function () {
return m;
});
var b = t(0),
y = t(2),
h = t(3),
i = t(11),
l = t.n(i),
a = t(483),
n = t.n(a),
s = t(1);

function v(e) {
return (v = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (e) {
return _typeof(e);
} : function (e) {
return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : _typeof(e);
})(e);
}

var o = [y.b, y.d],
g = 100,
w = 300,
x = 3600,
I = !0,
P = {
JPY: 1
};

function p(e) {
var r = {};
return r.id = e.bidId, r.ext = {}, r.ext.siteID = e.params.siteId, !e.params.hasOwnProperty("id") || "string" != typeof e.params.id && "number" != typeof e.params.id ? r.ext.sid = "".concat(e.params.size[0], "x").concat(e.params.size[1]) : r.ext.sid = String(e.params.id), e.params.hasOwnProperty("bidFloor") && e.params.hasOwnProperty("bidFloorCur") && (r.bidfloor = e.params.bidFloor, r.bidfloorcur = e.params.bidFloorCur), r;
}

function d(e) {
return Array.isArray(e) && 2 === e.length && n()(e[0]) && n()(e[1]);
}

function c(e, r) {
if (d(e)) return e[0] === r[0] && e[1] === r[1];

for (var t = 0; t < e.length; t++) { if (e[t][0] === r[0] && e[t][1] === r[1]) return 1; } } function u(e, r, t, i) { var a = []; if (window.headertag && "function" == typeof window.headertag.getIdentityInfo) { var n, s = window.headertag.getIdentityInfo(); if (s && "object" === v(s)) for (var o in s) { !s.hasOwnProperty(o) || !(n = s[o]).responsePending && n.data && "object" === v(n.data) && Object.keys(n.data).length && a.push(n.data); } } var d, p = {}; p.id = e[0].bidderRequestId, p.imp = t, p.site = {}, p.ext = {}, p.ext.source = "prebid", e[0].schain && (p.source = { ext: { schain: e[0].schain } }), 0 < a.length && (p.user = {}, p.user.eids = a), document.referrer && "" !== document.referrer && (p.site.ref = document.referrer), r && (r.gdprConsent && ((d = r.gdprConsent).hasOwnProperty("gdprApplies") && (p.regs = { ext: { gdpr: d.gdprApplies ? 1 : 0 } }), d.hasOwnProperty("consentString") && (p.user = p.user || {}, p.user.ext = { consent: d.consentString || "" })), r.uspConsent && b.deepSetValue(p, "regs.ext.us_privacy", r.uspConsent), r.refererInfo && (p.site.page = r.refererInfo.referer)); var c = {}, u = r && r.bidderCode || "ix", m = h.b.getConfig(u); if (m) { if ("object" === v(m.firstPartyData)) { var f = m.firstPartyData, y = "?"; for (var l in f) { f.hasOwnProperty(l) && (y += "".concat(encodeURIComponent(l), "=").concat(encodeURIComponent(f[l]), "&")); } y = y.slice(0, -1), p.site.page += y; } "number" == typeof m.timeout && (c.t = m.timeout); } return c.s = e[0].params.siteId, c.v = i, c.r = JSON.stringify(p), c.ac = "j", c.sd = 1, 8.1 === i && (c.nf = 1), { method: "GET", url: "https://as-sec.casalemedia.com/cygnus", data: c }; } var m = { code: "ix", gvlid: 10, supportedMediaTypes: o, isBidRequestValid: function isBidRequestValid(e) { if (!d(e.params.size)) return b.logError("ix bidder params: bid size has invalid format."), !1; if (!c(e.sizes, e.params.size)) return b.logError("ix bidder params: bid size is not included in ad unit sizes."), !1; if (e.hasOwnProperty("mediaType") && !b.contains(o, e.mediaType)) return !1; if (e.hasOwnProperty("mediaTypes") && !b.deepAccess(e, "mediaTypes.banner.sizes") && !b.deepAccess(e, "mediaTypes.video.playerSize")) return !1; if ("string" != typeof e.params.siteId && "number" != typeof e.params.siteId) return b.logError("ix bidder params: siteId must be string or number value."), !1; var r, t, i = e.params.hasOwnProperty("bidFloor"), a = e.params.hasOwnProperty("bidFloorCur"); return !!(!i && !a || i && a && (r = e.params.bidFloor, t = e.params.bidFloorCur, Boolean("number" == typeof r && "string" == typeof t && t.match(/^[A-Z]{3}$/)))) || (b.logError("ix bidder params: bidFloor / bidFloorCur parameter has invalid format."), !1); }, buildRequests: function buildRequests(e, r) { for (var t, i, a = [], n = [], s = [], o = null, d = 0; d < e.length; d++) { (o = e[d]).mediaType !== y.d && !b.deepAccess(o, "mediaTypes.video") || (o.mediaType === y.d || c(o.mediaTypes.video.playerSize, o.params.size) ? s.push(function (e) { var r = p(e); r.video = b.deepClone(e.params.video), r.video.w = e.params.size[0], r.video.h = e.params.size[1]; var t = b.deepAccess(e, "mediaTypes.video.context"); return t && ("instream" === t ? r.video.placement = 1 : "outstream" === t ? r.video.placement = 4 : b.logWarn("ix bidder params: video context '".concat(t, "' is not supported"))), r; }(o)) : b.logError("Bid size is not included in video playerSize")), o.mediaType !== y.b && !b.deepAccess(o, "mediaTypes.banner") && (o.mediaType || o.mediaTypes) || n.push((i = void 0, (i = p(t = o)).banner = {}, i.banner.w = t.params.size[0], i.banner.h = t.params.size[1], i.banner.topframe = b.inIframe() ? 0 : 1, i)); } return 0 < n.length && a.push(u(e, r, n, 7.2)), 0 < s.length && a.push(u(e, r, s, 8.1)), a; }, interpretResponse: function interpretResponse(e, r) { var t = []; if (!e.hasOwnProperty("body") || !e.body.hasOwnProperty("seatbid")) return t; for (var i, a, n, s, o = e.body, d = o.seatbid, p = 0; p < d.length; p++) { if (d[p].hasOwnProperty("bid")) for (var c = d[p].bid, u = JSON.parse(r.data.r), m = 0; m < c.length; m++) { var f = function (r, e) { if (r) return l()(e, function (e) { return e.id === r; }); }(c[m].impid, u.imp); i = c[m], a = o.cur, n = f, s = void 0, s = {}, P.hasOwnProperty(a) ? s.cpm = i.price / P[a] : s.cpm = i.price / g, s.requestId = i.impid, s.dealId = b.deepAccess(i, "ext.dealid"), s.netRevenue = I, s.currency = a, s.creativeId = i.hasOwnProperty("crid") ? i.crid : "-", b.deepAccess(i, "ext.vasturl") ? (s.vastUrl = i.ext.vasturl, s.width = n.video.w, s.height = n.video.h, s.mediaType = y.d, s.ttl = x) : (s.ad = i.adm, s.width = i.w, s.height = i.h, s.mediaType = y.b, s.ttl = w), s.meta = {}, s.meta.networkId = b.deepAccess(i, "ext.dspid"), s.meta.brandId = b.deepAccess(i, "ext.advbrandid"), s.meta.brandName = b.deepAccess(i, "ext.advbrand"), t.push(s); } } return t; }, transformBidParams: function transformBidParams(e) { return b.convertTypes({ siteID: "number" }, e); }, getUserSyncs: function getUserSyncs(e) { return e.iframeEnabled ? [{ type: "iframe", url: "https://js-sec.indexww.com/um/ixmatch.html" }] : []; } }; Object(s.registerBidder)(m); } }, [481]); pbjsChunk([184], { 493: function _(e, t, r) { e.exports = r(494); }, 494: function _(e, t, r) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), r.d(t, "spec", function () { return l; }); var s = r(0), d = r(3), n = r(1), a = r(9); function g() { return (g = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) { Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]); } } return e; }).apply(this, arguments); } var o, i, c, u = Object(a.b)(), l = { code: "kargo", isBidRequestValid: function isBidRequestValid(e) { return !(!e || !e.params) && !!e.params.placementId; }, buildRequests: function buildRequests(e, t) { var r, n = d.b.getConfig("currency"), a = n && n.adServerCurrency || "USD", o = {}, i = {}; s._each(e, function (e) { o[e.bidId] = e.params.placementId, i[e.bidId] = e.sizes; }), 0 < e.length && e[0].userId && e[0].userId.tdid && (r = e[0].userId.tdid); var c = g({}, { sessionId: l._getSessionId(), requestCount: l._getRequestCount(), timeout: t.timeout, currency: a, cpmGranularity: 1, timestamp: new Date().getTime(), cpmRange: { floor: 0, ceil: 20 }, bidIDs: o, bidSizes: i, prebidRawBidRequests: e }, l._getAllMetadata(r, t.uspConsent)), u = encodeURIComponent(JSON.stringify(c)); return g({}, t, { method: "GET", url: "".concat("https://krk.kargo.com"https://slate.com/,"/api/v2/bid"), data: "json=".concat(u), currency: a }); }, interpretResponse: function interpretResponse(e, t) { var r = e.body, n = []; for (var a in r) { var o = r[a], i = void 0; o.metadata && o.metadata.landingPageDomain && (i = { clickUrl: o.metadata.landingPageDomain }), n.push({ requestId: a, cpm: Number(o.cpm), width: o.width, height: o.height, ad: o.adm, ttl: 300, creativeId: o.id, dealId: o.targetingCustom, netRevenue: !0, currency: t.currency, meta: i }); } return n; }, getUserSyncs: function getUserSyncs(e) { var t = [], r = l._generateRandomUuid(), n = l._getClientId(); if (e.iframeEnabled && r && n) for (var a = 0; a < 5; a++) { t.push({ type: "iframe", url: "https://crb.kargo.com/api/v1/initsyncrnd/{UUID}?seed={SEED}&idx={INDEX}".replace("{UUID}", n).replace("{SEED}", r).replace("{INDEX}", a) }); } return t; }, _readCookie: function _readCookie(e) { if (!u.cookiesAreEnabled()) return null; for (var t = "".concat(e, "="), r = document.cookie.split(";"), n = 0; n < r.length; n++) { for (var a = r[n]; " " === a.charAt(0);) { a = a.substring(1, a.length); } if (0 === a.indexOf(t)) return a.substring(t.length, a.length); } return null; }, _getCrbFromCookie: function _getCrbFromCookie() { try { var e = JSON.parse(decodeURIComponent(l._readCookie("krg_crb"))); if (e && e.v) { var t = JSON.parse(atob(e.v)); if (t) return t; } return {}; } catch (e) { return {}; } }, _getCrbFromLocalStorage: function _getCrbFromLocalStorage() { try { return JSON.parse(atob(l._getLocalStorageSafely("krg_crb"))); } catch (e) { return {}; } }, _getCrb: function _getCrb() { var e = l._getCrbFromLocalStorage(); return Object.keys(e).length ? e : l._getCrbFromCookie(); }, _getKruxUserId: function _getKruxUserId() { return l._getLocalStorageSafely("kxkar_user"); }, _getKruxSegments: function _getKruxSegments() { return l._getLocalStorageSafely("kxkar_segs"); }, _getKrux: function _getKrux() { var e = l._getKruxSegments(), t = []; return e && (t = e.split(",")), { userID: l._getKruxUserId(), segments: t }; }, _getLocalStorageSafely: function _getLocalStorageSafely(e) { try { return u.getDataFromLocalStorage(e); } catch (e) { return null; } }, _getUserIds: function _getUserIds(e, t) { var r = l._getCrb(), n = { kargoID: r.userId, clientID: r.clientId, crbIDs: r.syncIds || {}, optOut: r.optOut, usp: t }; return e && (n.tdID = e), n; }, _getClientId: function _getClientId() { return l._getCrb().clientId; }, _getAllMetadata: function _getAllMetadata(e, t) { return { userIDs: l._getUserIds(e, t), krux: l._getKrux(), pageURL: window.location.href, rawCRB: l._readCookie("krg_crb"), rawCRBLocalStorage: l._getLocalStorageSafely("krg_crb") }; }, _getSessionId: function _getSessionId() { return o = o || l._generateRandomUuid(); }, _getRequestCount: function _getRequestCount() { return i === window.location.pathname ? ++c : (i = window.location.pathname, c = 0); }, _generateRandomUuid: function _generateRandomUuid() { try { var e = new Uint8Array(16); crypto.getRandomValues(e), e[6] = -177 & e[6] | 64, e[8] = -65 & e[8] | 128; var t = Array.prototype.map.call(new Uint8Array(e), function (e) { return ("00" + e.toString(16)).slice(-2); }).join(""); return t.slice(0, 8) + "-" + t.slice(8, 12) + "-" + t.slice(12, 16) + "-" + t.slice(16, 20) + "-" + t.slice(20); } catch (e) { return ""; } } }; Object(n.registerBidder)(l); } }, [493]); pbjsChunk([110], { 677: function _(e, r, t) { e.exports = t(678); }, 678: function _(e, r, t) { "use strict"; Object.defineProperty(r, "__esModule", { value: !0 }), t.d(r, "FASTLANE_ENDPOINT", function () { return o; }), t.d(r, "VIDEO_ENDPOINT", function () { return l; }), t.d(r, "SYNC_ENDPOINT", function () { return a; }), t.d(r, "spec", function () { return h; }), r.hasVideoMediaType = c, r.masSizeOrdering = S, r.determineRubiconVideoSizeId = C, r.getPriceGranularity = j, r.hasValidVideoParams = k, r.hasValidSupplyChainParams = T, r.encodeParam = w, r.resetUserSync = function () { R = !1; }; var g = t(0), i = t(1), b = t(3), u = t(2); function v(e, r) { return function (e) { if (Array.isArray(e)) return e; }(e) || function (e, r) { if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return; var t = [], i = !0, n = !1, o = void 0; try { for (var a, s = e[Symbol.iterator](); !(i = (a = s.next()).done) && (t.push(a.value), !r || t.length !== r); i = !0) { ; } } catch (e) { n = !0, o = e; } finally { try { i || null == s.return || s.return(); } finally { if (n) throw o; } } return t; }(e, r) || function (e, r) { if (!e) return; if ("string" == typeof e) return n(e, r); var t = Object.prototype.toString.call(e).slice(8, -1); "Object" === t && e.constructor && (t = e.constructor.name); if ("Map" === t || "Set" === t) return Array.from(e); if ("Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)) return n(e, r); }(e, r) || function () { throw new TypeError("Invalid attempt to destructure non-iterable instance.nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }(); } function n(e, r) { (null == r || r > e.length) && (r = e.length);

for (var t = 0, i = new Array(r); t < r; t++) { i[t] = e[t]; } return i; } function y() { return (y = Object.assign || function (e) { for (var r = 1; r < arguments.length; r++) { var t = arguments[r]; for (var i in t) { Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]); } } return e; }).apply(this, arguments); } function p(e, r, t) { return r in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; } function x(e) { return (x = "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? function (e) { return _typeof(e); } : function (e) { return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : _typeof(e); })(e); } var o = "https://fastlane.rubiconproject.com/a/api/fastlane.json", l = "https://prebid-server.rubiconproject.com/openrtb2/auction", a = "https://eus.rubiconproject.com/usync.html", d = { FASTLANE: { id: "dt.id", keyv: "dt.keyv", pref: "dt.pref" }, PREBID_SERVER: { id: "id", keyv: "keyv" } }, f = { 1: "468x60", 2: "728x90", 5: "120x90", 8: "120x600", 9: "160x600", 10: "300x600", 13: "200x200", 14: "250x250", 15: "300x250", 16: "336x280", 17: "240x400", 19: "300x100", 31: "980x120", 32: "250x360", 33: "180x500", 35: "980x150", 37: "468x400", 38: "930x180", 39: "750x100", 40: "750x200", 41: "750x300", 42: "2x4", 43: "320x50", 44: "300x50", 48: "300x300", 53: "1024x768", 54: "300x1050", 55: "970x90", 57: "970x250", 58: "1000x90", 59: "320x80", 60: "320x150", 61: "1000x1000", 64: "580x500", 65: "640x480", 66: "930x600", 67: "320x480", 68: "1800x1000", 72: "320x320", 73: "320x160", 78: "980x240", 79: "980x300", 80: "980x400", 83: "480x300", 85: "300x120", 90: "548x150", 94: "970x310", 95: "970x100", 96: "970x210", 101: "480x320", 102: "768x1024", 103: "480x280", 105: "250x800", 108: "320x240", 113: "1000x300", 117: "320x100", 125: "800x250", 126: "200x600", 144: "980x600", 145: "980x150", 152: "1000x250", 156: "640x320", 159: "320x250", 179: "250x600", 195: "600x300", 198: "640x360", 199: "640x200", 213: "1030x590", 214: "980x360", 221: "1x1", 229: "320x180", 230: "2000x1400", 232: "580x400", 234: "6x6", 251: "2x2", 256: "480x820", 257: "400x600", 258: "500x200", 259: "998x200", 264: "970x1000", 265: "1920x1080", 274: "1800x200", 278: "320x500", 282: "320x400", 288: "640x380" }; g._each(f, function (e, r) { return f[e] = r; }); var h = { code: "rubicon", gvlid: 52, supportedMediaTypes: [u.b, u.d], isBidRequestValid: function isBidRequestValid(e) { if ("object" !== x(e.params)) return !1; for (var r = 0, t = ["accountId"https://slate.com/,"siteId"https://slate.com/,"zoneId"]; r < t.length; r++) { if (e.params[t[r]] = parseInt(e.params[t[r]]), isNaN(e.params[t[r]])) return g.logError("Rubicon: wrong format of accountId or siteId or zoneId."), !1; } var i = m(e, !0); return !!i && ("video" !== i || k(e)); }, buildRequests: function buildRequests(e, u) { var n, r = e.filter(function (e) { return "video" === m(e); }).map(function (e) { e.startTime = new Date().getTime(); var r, t, i = { id: e.transactionId, test: b.b.getConfig("debug") ? 1 : 0, cur: ["USD"], source: { tid: e.transactionId }, tmax: b.b.getConfig("TTL") || 1e3, imp: [{ exp: 300, id: e.adUnitCode, secure: 1, ext: p({}, e.bidder, e.params), video: g.deepAccess(e, "mediaTypes.video") || {} }], ext: { prebid: { cache: { vastxml: { returnCreative: !1 } }, targeting: { includewinners: !0, includebidderkeys: !1, pricegranularity: j(b.b) }, bidders: { rubicon: { integration: b.b.getConfig("rubicon.int_type") || "pbjs" } } } } }; "rubicon" !== e.bidder && (i.ext.prebid.aliases = p({}, e.bidder, "rubicon")), t = "function" != typeof e.getFloor || b.b.getConfig("rubicon.disableFloors") ? parseFloat(g.deepAccess(e, "params.floor")) : "object" !== x(r = e.getFloor({ currency: "USD", mediaType: "video", size: A(e, "video") })) || "USD" !== r.currency || isNaN(parseInt(r.floor)) ? void 0 : parseFloat(r.floor), isNaN(t) || (i.imp[0].bidfloor = t), i.imp[0].ext[e.bidder].video.size_id = C(e), function (r, t, e) { if (!r) return; "object" === x(b.b.getConfig("app")) ? r.app = b.b.getConfig("app") : r.site = { page: I(t, e) }; "object" === x(b.b.getConfig("device")) && (r.device = b.b.getConfig("device")); t.params.video.language && ["site"https://slate.com/,"device"].forEach(function (e) { r[e] && (r[e].content = y({ language: t.params.video.language }, r[e].content)); }); }(i, e, u), function (e, r) { "object" === x(e.imp[0].video) && void 0 === e.imp[0].video.skip && (e.imp[0].video.skip = r.params.video.skip); "object" === x(e.imp[0].video) && void 0 === e.imp[0].video.skipafter && (e.imp[0].video.skipafter = r.params.video.skipdelay); "object" === x(e.imp[0].video) && void 0 === e.imp[0].video.pos && ("atf" === r.params.position ? e.imp[0].video.pos = 1 : "btf" === r.params.position && (e.imp[0].video.pos = 3)); var t = A(r, "video"); e.imp[0].video.w = t[0], e.imp[0].video.h = t[1]; }(i, e); var n, o = _(e, "PREBID_SERVER"); o && g.deepSetValue(i, "user.ext.digitrust", o), u.gdprConsent && ("boolean" == typeof u.gdprConsent.gdprApplies && (n = u.gdprConsent.gdprApplies ? 1 : 0), g.deepSetValue(i, "regs.ext.gdpr", n), g.deepSetValue(i, "user.ext.consent", u.gdprConsent.consentString)), u.uspConsent && g.deepSetValue(i, "regs.ext.us_privacy", u.uspConsent), e.userId && "object" === x(e.userId) && (e.userId.tdid || e.userId.pubcid || e.userId.lipb || e.userId.idl_env) && (g.deepSetValue(i, "user.ext.eids", []), e.userId.tdid && i.user.ext.eids.push({ source: "adserver.org", uids: [{ id: e.userId.tdid, ext: { rtiPartner: "TDID" } }] }), e.userId.pubcid && i.user.ext.eids.push({ source: "pubcommon", uids: [{ id: e.userId.pubcid }] }), e.userId.lipb && e.userId.lipb.lipbid && (i.user.ext.eids.push({ source: "liveintent.com", uids: [{ id: e.userId.lipb.lipbid }] }), i.user.ext.tpid = { source: "liveintent.com", uid: e.userId.lipb.lipbid }, Array.isArray(e.userId.lipb.segments) && e.userId.lipb.segments.length && g.deepSetValue(i, "rp.target.LIseg", e.userId.lipb.segments)), e.userId.idl_env && i.user.ext.eids.push({ source: "liveramp.com", uids: [{ id: e.userId.idl_env }] })), !0 === b.b.getConfig("coppa") && g.deepSetValue(i, "regs.coppa", 1), e.schain && T(e.schain) && g.deepSetValue(i, "source.ext.schain", e.schain); var a, s = y({}, e.params.inventory, b.b.getConfig("fpd.context")), d = y({}, e.params.visitor, b.b.getConfig("fpd.user")); g.isEmpty(s) && g.isEmpty(d) || (a = { bidders: [u.bidderCode], config: { fpd: {} } }, g.isEmpty(s) || (a.config.fpd.site = s), g.isEmpty(d) || (a.config.fpd.user = d), g.deepSetValue(i, "ext.prebid.bidderconfig.0", a)); var c = g.deepAccess(e, "fpd.context.pbAdSlot"); return "string" == typeof c && c && g.deepSetValue(i.imp[0].ext, "context.data.adslot", c), e.storedAuctionResponse && g.deepSetValue(i.imp[0], "ext.prebid.storedauctionresponse.id", e.storedAuctionResponse.toString()), g.deepSetValue(i.imp[0], "ext.prebid.auctiontimestamp", u.auctionStart), { method: "POST", url: l, data: i, bidRequest: e }; }); return !0 !== b.b.getConfig("rubicon.singleRequest") ? r.concat(e.filter(function (e) { return "banner" === m(e); }).map(function (e) { var i = h.createSlotParams(e, u); return { method: "GET", url: o, data: h.getOrderedParams(i).reduce(function (e, r) { var t = i[r]; return g.isStr(t) && "" !== t || g.isNumber(t) ? "".concat(e).concat(w(r, t), "&") : e; }, "") + "slots=1&rand=".concat(Math.random()), bidRequest: e }; })) : (n = e.filter(function (e) { return "banner" === m(e); }).reduce(function (e, r) { return (e[r.params.siteId] = e[r.params.siteId] || []).push(r), e; }, {}), r.concat(Object.keys(n).reduce(function (r, e) { var t, i; return t = n[e], i = 10, t.map(function (e, r) { return r % i == 0 ? t.slice(r, r + i) : null; }).filter(function (e) { return e; }).forEach(function (e) { var i = h.combineSlotUrlParams(e.map(function (e) { return h.createSlotParams(e, u); })); r.push({ method: "GET", url: o, data: h.getOrderedParams(i).reduce(function (e, r) { var t = i[r]; return g.isStr(t) && "" !== t || g.isNumber(t) ? "".concat(e).concat(w(r, t), "&") : e; }, "") + "slots=".concat(e.length, "&rand=").concat(Math.random()), bidRequest: e }); }), r; }, []))); }, getOrderedParams: function getOrderedParams(e) { var r = /^tg_v/, t = /^tg_i/, i = ["account_id"https://slate.com/,"site_id"https://slate.com/,"zone_id"https://slate.com/,"size_id"https://slate.com/,"alt_size_ids"https://slate.com/,"p_pos"https://slate.com/,"gdpr"https://slate.com/,"gdpr_consent"https://slate.com/,"us_privacy"https://slate.com/,"rp_schain"https://slate.com/,"tpid_tdid"https://slate.com/,"tpid_liveintent.com"https://slate.com/,"tg_v.LIseg"https://slate.com/,"dt.id"https://slate.com/,"dt.keyv"https://slate.com/,"dt.pref"https://slate.com/,"rf"https://slate.com/,"p_geo.latitude"https://slate.com/,"p_geo.longitude"https://slate.com/,"kw"].concat(Object.keys(e).filter(function (e) { return r.test(e); })).concat(Object.keys(e).filter(function (e) { return t.test(e); })).concat(["tk_flint"https://slate.com/,"x_source.tid"https://slate.com/,"x_source.pchain"https://slate.com/,"p_screen_res"https://slate.com/,"rp_floor"https://slate.com/,"rp_secure"https://slate.com/,"tk_user_key"]); return i.concat(Object.keys(e).filter(function (e) { return -1 === i.indexOf(e); })); }, combineSlotUrlParams: function combineSlotUrlParams(n) { if (1 === n.length) return n[0]; var i = n.reduce(function (r, t, i) { return Object.keys(t).forEach(function (e) { r.hasOwnProperty(e) || (r[e] = new Array(n.length)), r[e].splice(i, 1, t[e]); }), r; }, {}), o = new RegExp("^([^;]*)(;\1)+$"); return Object.keys(i).forEach(function (e) { var r = i[e].join(";"), t = r.match(o); i[e] = t ? t[1] : r; }), i; }, createSlotParams: function createSlotParams(e, r) { e.startTime = new Date().getTime(); var t, i = e.params, n = A(e, "banner"), o = v(i.latLong || [], 2), a = o[0], s = o[1], d = b.b.getConfig("rubicon.int_type"), c = { account_id: i.accountId, site_id: i.siteId, zone_id: i.zoneId, size_id: n[0], alt_size_ids: n.slice(1).join(",") || void 0, rp_floor: .01 < (i.floor = parseFloat(i.floor)) ? i.floor : .01, rp_secure: "1", tk_flint: "".concat(d || "pbjs_lite"https://slate.com/,"_v3.23.0"), "x_source.tid": e.transactionId, "x_source.pchain": i.pchain, p_screen_res: [window.screen.width, window.screen.height].join("x"), tk_user_key: i.userId, "p_geo.latitude": isNaN(parseFloat(a)) ? void 0 : parseFloat(a).toFixed(4), "p_geo.longitude": isNaN(parseFloat(s)) ? void 0 : parseFloat(s).toFixed(4), "tg_fl.eid": e.code, rf: I(e, r) }; "function" != typeof e.getFloor || b.b.getConfig("rubicon.disableFloors") || (t = e.getFloor({ currency: "USD", mediaType: "banner", size: "*" }), c.rp_hard_floor = "object" !== x(t) || "USD" !== t.currency || isNaN(parseInt(t.floor)) ? void 0 : t.floor), c.p_pos = "atf" === i.position || "btf" === i.position ? i.position : "", e.userId && (e.userId.tdid && (c.tpid_tdid = e.userId.tdid), e.userId.lipb && e.userId.lipb.lipbid && (c["tpid_liveintent.com"] = e.userId.lipb.lipbid, Array.isArray(e.userId.lipb.segments) && e.userId.lipb.segments.length && (c["tg_v.LIseg"] = e.userId.lipb.segments.join(","))), e.userId.idl_env && (c["tpid_liveramp.com"] = e.userId.idl_env)), r.gdprConsent && ("boolean" == typeof r.gdprConsent.gdprApplies && (c.gdpr = Number(r.gdprConsent.gdprApplies)), c.gdpr_consent = r.gdprConsent.consentString), r.uspConsent && (c.us_privacy = encodeURIComponent(r.uspConsent)); var u = y({}, i.visitor, b.b.getConfig("fpd.user")); Object.keys(u).forEach(function (e) { null != u[e] && "keywords" !== e && (c["tg_v.".concat(e)] = "object" !== x(u[e]) || Array.isArray(u[e]) ? u[e].toString() : JSON.stringify(u[e])); }); var p = y({}, i.inventory, b.b.getConfig("fpd.context")); Object.keys(p).forEach(function (e) { null != p[e] && "keywords" !== e && (c["tg_i.".concat(e)] = "object" !== x(p[e]) || Array.isArray(p[e]) ? p[e].toString() : JSON.stringify(p[e])); }); var l = (i.keywords || []).concat(g.deepAccess(b.b.getConfig("fpd.user"), "keywords") || [], g.deepAccess(b.b.getConfig("fpd.context"), "keywords") || []); c.kw = Array.isArray(l) && l.length ? l.join(",") : ""; var f = g.deepAccess(e, "fpd.context.pbAdSlot"); "string" == typeof f && f && (c["tg_i.dfp_ad_unit_code"] = f.replace(/^/+/, "")); var m = _(e, "FASTLANE"); return y(c, m), !0 === b.b.getConfig("coppa") && (c.coppa = 1), e.schain && T(e.schain) && (c.rp_schain = h.serializeSupplyChain(e.schain)), c; }, serializeSupplyChain: function serializeSupplyChain(e) { if (!T(e)) return ""; var r = e.ver, t = e.complete, i = e.nodes; return "".concat(r, ",").concat(t, "!").concat(h.serializeSupplyChainNodes(i)); }, serializeSupplyChainNodes: function serializeSupplyChainNodes(e) { var t = ["asi"https://slate.com/,"sid"https://slate.com/,"hp"https://slate.com/,"rid"https://slate.com/,"name"https://slate.com/,"domain"]; return e.map(function (r) { return t.map(function (e) { return encodeURIComponent(r[e] || ""); }).join(","); }).join("!"); }, interpretResponse: function interpretResponse(d, e) { var c = e.bidRequest; if (!(d = d.body) || "object" !== x(d)) return []; if (d.seatbid) { var r = g.deepAccess(d, "ext.errors.rubicon"); Array.isArray(r) && 0 < r.length && g.logWarn("Rubicon: Error in video response"); var o = []; return d.seatbid.forEach(function (n) { (n.bid || []).forEach(function (e) { var r = { requestId: c.bidId, currency: d.cur || "USD", creativeId: e.crid, cpm: e.price || 0, bidderCode: n.seat, ttl: 300, netRevenue: !1 !== b.b.getConfig("rubicon.netRevenue"), width: e.w || g.deepAccess(c, "mediaTypes.video.w") || g.deepAccess(c, "params.video.playerWidth"), height: e.h || g.deepAccess(c, "mediaTypes.video.h") || g.deepAccess(c, "params.video.playerHeight") }; e.id && (r.seatBidId = e.id), e.dealid && (r.dealId = e.dealid); var t, i = g.deepAccess(d, "ext.responsetimemillis.rubicon"); c && i && (c.serverResponseTimeMs = i), g.deepAccess(e, "ext.prebid.type") === u.d ? (r.mediaType = u.d, (t = g.deepAccess(e, "ext.prebid.targeting")) && "object" === x(t) && (r.adserverTargeting = t), e.ext.prebid.cache && "object" === x(e.ext.prebid.cache.vastXml) && e.ext.prebid.cache.vastXml.cacheId && e.ext.prebid.cache.vastXml.url ? (r.videoCacheKey = e.ext.prebid.cache.vastXml.cacheId, r.vastUrl = e.ext.prebid.cache.vastXml.url) : t && t.hb_uuid && t.hb_cache_host && t.hb_cache_path && (r.videoCacheKey = t.hb_uuid, r.vastUrl = "https://".concat(t.hb_cache_host).concat(t.hb_cache_path, "?uuid=").concat(t.hb_uuid)), e.adm && (r.vastXml = e.adm), e.nurl && (r.vastUrl = e.nurl), !r.vastUrl && e.nurl && (r.vastUrl = e.nurl)) : g.logWarn("Rubicon: video response received non-video media type"), o.push(r); }); }), o; } var t = d.ads; return "object" !== x(c) || Array.isArray(c) || "video" !== m(c) || "object" !== x(t) || (t = t[c.adUnitCode]), !Array.isArray(t) || t.length < 1 ? [] : t.reduce(function (e, r, t) { if ("ok" !== r.status) return e; var i, n, o, a, s = Array.isArray(c) ? c[t] : c; return s && "object" === x(s) ? (i = { requestId: s.bidId, currency: "USD", creativeId: r.creative_id || "".concat(r.network || ""https://slate.com/,"-").concat(r.advertiser || ""), cpm: r.cpm || 0, dealId: r.deal, ttl: 300, netRevenue: !1 !== b.b.getConfig("rubicon.netRevenue"), rubicon: { advertiserId: r.advertiser, networkId: r.network }, meta: { advertiserId: r.advertiser, networkId: r.network } }, r.creative_type && (i.mediaType = r.creative_type), r.creative_type === u.d ? (i.width = s.params.video.playerWidth, i.height = s.params.video.playerHeight, i.vastUrl = r.creative_depot_url, i.impression_id = r.impression_id, i.videoCacheKey = r.impression_id) : (i.ad = (o = r.script, a = r.impression_id, "nnnx3c!-- Rubicon Project Ad Tag --x3en

nn

nn")), n = v(f[r.size_id].split("x").map(function (e) {
return Number(e);
}), 2), i.width = n[0], i.height = n[1]), i.rubiconTargeting = (Array.isArray(r.targeting) ? r.targeting : []).reduce(function (e, r) {
return e[r.key] = r.values[0], e;
}, {
rpfl_elemid: s.adUnitCode
}), e.push(i)) : g.logError("Rubicon: bidRequest undefined at index position:".concat(t), c, d), e;
}, []).sort(function (e, r) {
return (r.cpm || 0) - (e.cpm || 0);
});
},
getUserSyncs: function getUserSyncs(e, r, t, i) {
if (!R && e.iframeEnabled) {
var n = "";
return t && "string" == typeof t.consentString && ("boolean" == typeof t.gdprApplies ? n += "?gdpr=".concat(Number(t.gdprApplies), "&gdpr_consent=").concat(t.consentString) : n += "?gdpr_consent=".concat(t.consentString)), i && (n += "".concat(n ? "&" : "?"https://slate.com/,"us_privacy=").concat(encodeURIComponent(i))), R = !0, {
type: "iframe",
url: a + n
};
}
},
transformBidParams: function transformBidParams(e) {
return g.convertTypes({
accountId: "number",
siteId: "number",
zoneId: "number"
}, e);
}
};

function _(e, r) {
var t,
i = 0 < arguments.length && void 0 !== e ? e : {}, n = 1 < arguments.length ? r : void 0; if (!n || !d[n]) return null; var o = d[n]; var a = function () { var e = g.deepAccess(i, "userId.digitrustid.data"); if (e) return e; var r = window.DigiTrust && (b.b.getConfig("digiTrustId") || window.DigiTrust.getUser({ member: "T9QSFKPDN9" })); return r && r.success && r.identity || null; }(); if (!a || a.privacy && a.privacy.optout) return null; var s = (p(t = {}, o.id, a.id), p(t, o.keyv, a.keyv), t); return o.pref && (s[o.pref] = 0), s; } function I(e, r) { var t = b.b.getConfig("pageUrl"), t = e.params.referrer ? e.params.referrer : t || r.refererInfo.referer; return e.params.secure ? t.replace(/^http:/i, "https:") : t; } function A(e, r) { var t = e.params; if ("video" === r) { var i = []; return t.video && t.video.playerWidth && t.video.playerHeight ? i = [t.video.playerWidth, t.video.playerHeight] : Array.isArray(g.deepAccess(e, "mediaTypes.video.playerSize")) && 1 === e.mediaTypes.video.playerSize.length ? i = e.mediaTypes.video.playerSize[0] : Array.isArray(e.sizes) && 0 < e.sizes.length && Array.isArray(e.sizes[0]) && 1 < e.sizes[0].length && (i = e.sizes[0]), i; } var n = []; return Array.isArray(t.sizes) ? n = t.sizes : void 0 !== g.deepAccess(e, "mediaTypes.banner.sizes") ? n = s(e.mediaTypes.banner.sizes) : Array.isArray(e.sizes) && 0 < e.sizes.length ? n = s(e.sizes) : g.logWarn("Rubicon: no sizes are setup or found"), S(n); } function s(e) { return g.parseSizesInput(e).reduce(function (e, r) { var t = parseInt(f[r], 10); return t && e.push(t), e; }, []); } function c(e) { return "object" === x(g.deepAccess(e, "params.video")) && void 0 !== g.deepAccess(e, "mediaTypes.".concat(u.d)); } function m(e, r) { var t = 1 < arguments.length && void 0 !== r && r; return c(e) ? -1 === ["outstream"https://slate.com/,"instream"].indexOf(g.deepAccess(e, "mediaTypes.".concat(u.d, ".context"))) ? void (t && g.logError("Rubicon: mediaTypes.video.context must be outstream or instream")) : A(e, "video").length < 2 ? void (t && g.logError("Rubicon: could not determine the playerSize of the video")) : (t && g.logMessage("Rubicon: making video request for adUnit", e.adUnitCode), "video") : 0 === A(e, "banner").length ? void (t && g.logError("Rubicon: could not determine the sizes for banner request")) : (t && g.logMessage("Rubicon: making banner request for adUnit", e.adUnitCode), "banner"); } function S(e) { var n = [15, 2, 9]; return e.sort(function (e, r) { var t = n.indexOf(e), i = n.indexOf(r); return -1 < t || -1 < i ? -1 === t ? 1 : -1 === i ? -1 : t - i : e - r; }); } function C(e) { var r = parseInt(g.deepAccess(e, "params.video.size_id")); return isNaN(r) ? "outstream" === g.deepAccess(e, "mediaTypes.".concat(u.d, ".context")) ? 203 : 201 : r; } function j(e) { return { ranges: { low: [{ max: 5, increment: .5 }], medium: [{ max: 20, increment: .1 }], high: [{ max: 20, increment: .01 }], auto: [{ max: 5, increment: .05 }, { min: 5, max: 10, increment: .1 }, { min: 10, max: 20, increment: .5 }], dense: [{ max: 3, increment: .01 }, { min: 3, max: 8, increment: .05 }, { min: 8, max: 20, increment: .5 }], custom: e.getConfig("customPriceBucket") && e.getConfig("customPriceBucket").buckets }[e.getConfig("priceGranularity")] }; } function k(r) { var t = !0, e = Object.prototype.toString.call([]), i = Object.prototype.toString.call(0), n = { mimes: e, protocols: e, maxduration: i, linearity: i, api: e }; return Object.keys(n).forEach(function (e) { Object.prototype.toString.call(g.deepAccess(r, "mediaTypes.video." + e)) !== n[e] && (t = !1, g.logError("Rubicon: mediaTypes.video." + e + " is required and must be of type: " + n[e])); }), t; } function T(e) { var r = !1, t = ["asi"https://slate.com/,"sid"https://slate.com/,"hp"]; return e.nodes && ((r = e.nodes.reduce(function (e, r) { return e ? t.every(function (e) { return r[e]; }) : e; }, !0)) || g.logError("Rubicon: required schain params missing")), r; } function w(e, r) { return "rp_schain" === e ? "rp_schain=".concat(r) : "".concat(e, "=").concat(encodeURIComponent(r)); } var R = !1; Object(i.registerBidder)(h); } }, [677]); pbjsChunk([93], { 719: function _(e, t, r) { e.exports = r(720); }, 720: function _(e, t, r) { "use strict"; Object.defineProperty(t, "__esModule", { value: !0 }), r.d(t, "spec", function () { return o; }), r.d(t, "_isInbounds", function () { return a; }), t._getPlatform = v; var n = r(1), y = r(0), i = r(2), c = r(3), g = r(10), d = r(44); function h(e, t) { return function (e) { if (Array.isArray(e)) return e; }(e) || function (e, t) { if ("undefined" == typeof Symbol || !(Symbol.iterator in Object(e))) return; var r = [], n = !0, i = !1, s = void 0; try { for (var o, a = e[Symbol.iterator](); !(n = (o = a.next()).done) && (r.push(o.value), !t || r.length !== t); n = !0) { ; } } catch (e) { i = !0, s = e; } finally { try { n || null == a.return || a.return(); } finally { if (i) throw s; } } return r; }(e, t) || function (e, t) { if (!e) return; if ("string" == typeof e) return s(e, t); var r = Object.prototype.toString.call(e).slice(8, -1); "Object" === r && e.constructor && (r = e.constructor.name); if ("Map" === r || "Set" === r) return Array.from(e); if ("Arguments" === r || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)) return s(e, t); }(e, t) || function () { throw new TypeError("Invalid attempt to destructure non-iterable instance.nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }(); } function s(e, t) { (null == t || t > e.length) && (t = e.length);

for (var r = 0, n = new Array(t); r < t; r++) { n[r] = e[r]; } return n; } function u() { return (u = Object.assign || function (e) { for (var t = 1; t < arguments.length; t++) { var r = arguments[t]; for (var n in r) { Object.prototype.hasOwnProperty.call(r, n) && (e[n] = r[n]); } } return e; }).apply(this, arguments); } function p(e, t, r) { return t in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e; } var b = "sonobi", l = Object(y.generateUUID)(), o = { code: b, supportedMediaTypes: [i.b, i.d], isBidRequestValid: function isBidRequestValid(e) { if (!e.params) return !1; if (!e.params.ad_unit && !e.params.placement_id) return !1; if (!Object(y.deepAccess)(e, "mediaTypes.banner") && !Object(y.deepAccess)(e, "mediaTypes.video")) return !1; if (Object(y.deepAccess)(e, "mediaTypes.banner")) { if (!Object(y.deepAccess)(e, "mediaTypes.banner.sizes") && !e.params.sizes) return !1; } else if (Object(y.deepAccess)(e, "mediaTypes.video")) { if ("outstream" === Object(y.deepAccess)(e, "mediaTypes.video.context") && !e.params.sizes) return !1; if ("instream" === Object(y.deepAccess)(e, "mediaTypes.video.context") && !Object(y.deepAccess)(e, "mediaTypes.video.playerSize")) return !1; } return !0; }, buildRequests: function buildRequests(e, t) { var r = e.map(function (e) { var t = function (e) { if (e.params.ad_unit) return e.params.ad_unit; return e.params.placement_id; }(e); return /^[/]?[d]+[[/].+[/]?]?$/.test(t) ? (t = "/" === t.charAt(0) ? t : "/" + t, p({}, "".concat(t, "|").concat(e.bidId), "".concat(f(e)).concat(m(e)))) : /^[0-9a-fA-F]{20}$/.test(t) && 20 === t.length ? p({}, e.bidId, "".concat(t, "|").concat(f(e)).concat(m(e))) : void Object(y.logError)("The ad unit code or Sonobi Placement id for slot ".concat(e.bidId, " is invalid")); }), n = {}; r.forEach(function (e) { u(n, e); }); var i = { key_maker: JSON.stringify(n), ref: t.refererInfo.referer, s: Object(y.generateUUID)(), pv: l, vp: v(), lib_name: "prebid", lib_v: "3.23.0", us: 0 }; c.b.getConfig("userSync") && c.b.getConfig("userSync").syncsPerBidder && (i.us = c.b.getConfig("userSync").syncsPerBidder), d.a.canBidderRegisterSync("iframe", b) ? i.ius = 1 : i.ius = 0, Object(y.deepAccess)(e[0], "params.hfa") && (i.hfa = Object(y.deepAccess)(e[0], "params.hfa")), e[0].params.referrer && (i.ref = e[0].params.referrer), t && t.gdprConsent && (i.gdpr = t.gdprConsent.gdprApplies ? "true" : "false", t.gdprConsent.consentString && (i.consent_string = t.gdprConsent.consentString)); var s = function (t) { var e = function () { var e = window.DigiTrust && (c.b.getConfig("digiTrustId") || window.DigiTrust.getUser({ member: t })); return e && e.success && e.identity || null; }(); if (!e || e.privacy && e.privacy.optout) return null; return e; }("fhnS5drwmH"); s && (i.digid = s.id, i.digkeyv = s.keyv), e[0].schain && (i.schain = JSON.stringify(e[0].schain)), Object(y.deepAccess)(e[0], "userId") && 0 < Object.keys(e[0].userId).length && (i.userid = JSON.stringify(e[0].userId)); var o = e[0].params.keywords; if (o && (i.kw = o), t && t.uspConsent && (i.us_privacy = t.uspConsent), Object(y.isEmpty)(n)) return null; var a = "https://apex.go.sonobi.com/trinity.json"; return Object(y.deepAccess)(e[0], "params.bid_request_url") && (a = Object(y.deepAccess)(e[0], "params.bid_request_url")), { method: "GET", url: a, withCredentials: !0, data: i, bidderRequests: e }; }, interpretResponse: function interpretResponse(e, l) { var f = e.body, m = [], v = l.data.ref; return 0 === Object.keys(f.slots).length || Object.keys(f.slots).forEach(function (e) { var t = f.slots[e], r = e.split("|").slice(-1)[0], n = function (e, t) { for (var r = 0; r < e.length; r++) { if (e[r].bidId === t) return e[r]; } }(l.bidderRequests, r), i = null; "video" === t.sbi_ct && (i = "video"https://slate.com/,"outstream" === Object(y.deepAccess)(n, "mediaTypes.video.context") && (i = "outstream")); var s, o, a, c, d, u, p, b = j(i, v); t.sbi_aid && t.sbi_mouse && t.sbi_size && (a = void 0 === (o = (s = h(t.sbi_size.split("x"), 2))[0]) ? 1 : o, d = void 0 === (c = s[1]) ? 1 : c, u = { requestId: r, cpm: Number(t.sbi_mouse), width: Number(a), height: Number(d), ad: b(f.sbi_dc, t.sbi_aid), ttl: 500, creativeId: t.sbi_crid || t.sbi_aid, aid: t.sbi_aid, netRevenue: !0, currency: "USD" }, t.sbi_dozer && (u.dealId = t.sbi_dozer), "video" === i ? (u.mediaType = "video", u.vastUrl = b(f.sbi_dc, t.sbi_aid), delete u.ad, delete u.width, delete u.height) : "outstream" === i && n && (u.mediaType = "video", u.vastUrl = b(f.sbi_dc, t.sbi_aid), u.renderer = function (e, t) { var r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {}, n = g.a.install({ id: t.aid, url: "https://mtrx.go.sonobi.com/sbi_outstream_renderer.js", config: r, loaded: !1, adUnitCode: e }); try { n.setRender(O); } catch (e) { Object(y.logWarn)("Prebid Error calling setRender on renderer", e); } return n.setEventHandlers({ impression: function impression() { return Object(y.logMessage)("Sonobi outstream video impression event"); }, loaded: function loaded() { return Object(y.logMessage)("Sonobi outstream video loaded event"); }, ended: function ended() { Object(y.logMessage)("Sonobi outstream renderer video event"); } }), n; }(n.adUnitCode, u, Object(y.deepAccess)(n, "renderer.options")), p = Object(y.deepAccess)(n, "params.sizes"), Array.isArray(p) && Array.isArray(p[0]) && (p = p[0]), p && (u.width = p[0], u.height = p[1])), m.push(u)); }), m; }, getUserSyncs: function getUserSyncs(e, t) { var r = []; try { e.pixelEnabled && t[0].body.sbi_px.forEach(function (e) { r.push({ type: e.type, url: e.url }); }); } catch (e) {} return r; } }; function f(e) { return Object(y.deepAccess)(e, "mediaTypes.video") ? "" : e.params.sizes ? Object(y.parseSizesInput)(e.params.sizes).join(",") : Object(y.deepAccess)(e, "mediaTypes.banner.sizes") ? Object(y.parseSizesInput)(Object(y.deepAccess)(e, "mediaTypes.banner.sizes")).join(",") : e.sizes ? Object(y.parseSizesInput)(e.sizes).join(",") : void 0; } function m(e) { return e.params.floor ? "|f=".concat(e.params.floor) : ""; } var j = function j(i, s) { return function (e, t) { return "video" === i || "outstream" === i ? (r = t, n = s, "https://".concat(e, "apex.go.sonobi.com/vast.xml?vid=").concat(r, "&ref=").concat(encodeURIComponent(n))) : '‘;
var r, n;
};
};

var a = function a(e) {
var r = 0 < arguments.length && void 0 !== e ? e : window; return function () { var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : 0, t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : Number.MAX_SAFE_INTEGER; return r.innerWidth >= e && r.innerWidth < t; }; }; function v() { var e = 0 < arguments.length && void 0 !== arguments[0] ? arguments[0] : window, t = a(e), r = 992, n = 768; return t(0, 768) ? "mobile" : t(n, r) ? "tablet" : "desktop"; } function O(i) { i.renderer.push(function () { var e = h(i.getSize().split("x"), 2), t = e[0], r = e[1], n = new window.SbiOutstreamRenderer(); n.init({ vastUrl: i.vastUrl, height: r, width: t }), n.setRootElement(i.adUnitCode); }); } Object(n.registerBidder)(o); } }, [719]); pbjsChunk([85], { 741: function _(e, r, t) { e.exports = t(742); }, 742: function _(e, r, t) { "use strict"; Object.defineProperty(r, "__esModule", { value: !0 }), t.d(r, "spec", function () { return n; }); var a = t(1), d = t(0), p = 12, o = 11, c = 0, u = 22, n = { code: "teads", supportedMediaTypes: ["video"https://slate.com/,"banner"], isBidRequestValid: function isBidRequestValid(e) { var r, t, a = !1; return void 0 !== e.params && (r = i(d.getValue(e.params, "placementId")), t = i(d.getValue(e.params, "pageId")), a = r && t), a || d.logError("Teads placementId and pageId parameters are required. Bid aborted."), a; }, buildRequests: function buildRequests(e, r) { var t = e.map(I), a = { referrer: function (e) { var r = ""; e && e.refererInfo && e.refererInfo.referer && (r = e.refererInfo.referer); return r; }(r), data: t, deviceWidth: screen.width, hb_version: "3.23.0" }; e[0].schain && (a.schain = e[0].schain); var n, d, i, s = r.gdprConsent; return r && s && (n = "boolean" == typeof s.gdprApplies, d = "string" == typeof s.consentString, i = n ? function (e, r, t) { var a = p; e ? function (e, r) { return e && 1 === r ? e.hasGlobalScope || e.hasGlobalConsent : !(!e || 2 !== r) && !e.isServiceSpecific; }(r, t) && (a = o) : a = c; return a; }(s.gdprApplies, s.vendorData, s.apiVersion) : u, a.gdpr_iab = { consent: d ? s.consentString : "", status: i, apiVersion: s.apiVersion }), r && r.uspConsent && (a.us_privacy = r.uspConsent), { method: "POST", url: "https://a.teads.tv/hb/bid-request", data: JSON.stringify(a) }; }, interpretResponse: function interpretResponse(e) { var t = []; return (e = e.body).responses && e.responses.forEach(function (e) { var r = { cpm: e.cpm, width: e.width, height: e.height, currency: e.currency, netRevenue: !0, ttl: e.ttl, ad: e.ad, requestId: e.bidId, creativeId: e.creativeId, placementId: e.placementId }; e.dealId && (r.dealId = e.dealId), t.push(r); }), t; } }; function I(e) { var r, t = {}, a = d.getValue(e.params, "placementId"), n = d.getValue(e.params, "pageId"); return t.sizes = (r = e, d.parseSizesInput(function (e) { var r = d.deepAccess(e, "mediaTypes.video.playerSize"), t = d.deepAccess(e, "mediaTypes.video.sizes"), a = d.deepAccess(e, "mediaTypes.banner.sizes"); return d.isArray(a) || d.isArray(r) || d.isArray(t) ? [a, t, r].reduce(function (r, e) { return d.isArray(e) && (d.isArray(e[0]) ? e.forEach(function (e) { r.push(e); }) : r.push(e)), r; }, []) : e.sizes; }(r))), t.bidId = d.getBidIdParameter("bidId", e), t.bidderRequestId = d.getBidIdParameter("bidderRequestId", e), t.placementId = parseInt(a, 10), t.pageId = parseInt(n, 10), t.adUnitCode = d.getBidIdParameter("adUnitCode", e), t.auctionId = d.getBidIdParameter("auctionId", e), t.transactionId = d.getBidIdParameter("transactionId", e), t; } function i(e) { return 0 < parseInt(e); } Object(a.registerBidder)(n); } }, [741]); pbjsChunk([76], { 761: function _(r, e, t) { r.exports = t(762); }, 762: function _(r, e, t) { "use strict"; Object.defineProperty(e, "__esModule", { value: !0 }), t.d(e, "tripleliftAdapterSpec", function () { return s; }); var n = t(2), i = t(1), o = t(0), u = t(3); function p(r) { return function (r) { if (Array.isArray(r)) return d(r); }(r) || function (r) { if ("undefined" != typeof Symbol && Symbol.iterator in Object(r)) return Array.from(r); }(r) || function (r, e) { if (!r) return; if ("string" == typeof r) return d(r, e); var t = Object.prototype.toString.call(r).slice(8, -1); "Object" === t && r.constructor && (t = r.constructor.name); if ("Map" === t || "Set" === t) return Array.from(r); if ("Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)) return d(r, e); }(r) || function () { throw new TypeError("Invalid attempt to spread non-iterable instance.nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }(); } function d(r, e) { (null == e || e > r.length) && (e = r.length);

for (var t = 0, n = new Array(e); t < e; t++) { n[t] = r[t]; } return n; } var a = !0, c = null, s = { code: "triplelift", supportedMediaTypes: [n.b], isBidRequestValid: function isBidRequestValid(r) { return void 0 !== r.params.inventoryCode; }, buildRequests: function buildRequests(r, e) { var t, n = "https://tlx.3lift.com/header/auction?", i = function (r) { var e = {}, t = r[0].schain; e.imp = r.map(function (r, e) { return { id: e, tagid: r.params.inventoryCode, floor: r.params.floor, banner: { format: r.sizes.filter(l).map(function (r) { return { w: r[0], h: r[1] }; }) } }; }); var n = [].concat(p(function (r) { return f(r, "tdid"https://slate.com/,"adserver.org"https://slate.com/,"TDID"); }(r)), p(function (r) { return f(r, "idl_env"https://slate.com/,"liveramp.com"https://slate.com/,"idl"); }(r)), p(function (r) { return f(r, "criteoId"https://slate.com/,"criteo.com"https://slate.com/,"criteoId"); }(r))); 0 < n.length && (e.user = { ext: { eids: n } }); t && (e.ext = { schain: t }); return e; }(r); return n = o.tryAppendQueryString(n, "lib"https://slate.com/,"prebid"), n = o.tryAppendQueryString(n, "v"https://slate.com/,"3.23.0"), e && e.refererInfo && (t = e.refererInfo.referer, n = o.tryAppendQueryString(n, "referrer", t)), e && e.timeout && (n = o.tryAppendQueryString(n, "tmax", e.timeout)), e && e.gdprConsent && (void 0 !== e.gdprConsent.gdprApplies && (a = e.gdprConsent.gdprApplies, n = o.tryAppendQueryString(n, "gdpr", a.toString())), void 0 !== e.gdprConsent.consentString && (c = e.gdprConsent.consentString, n = o.tryAppendQueryString(n, "cmp_cs", c))), e && e.uspConsent && (n = o.tryAppendQueryString(n, "us_privacy", e.uspConsent)), !0 === u.b.getConfig("coppa") && (n = o.tryAppendQueryString(n, "coppa", !0)), n.lastIndexOf("&") === n.length - 1 && (n = n.substring(0, n.length - 1)), o.logMessage("tlCall request built: " + n), { method: "POST", url: n, data: i, bidderRequest: e }; }, interpretResponse: function interpretResponse(r, e) { var t = e.bidderRequest; return (r.body.bids || []).map(function (r) { return function (r, e) { var t = {}, n = e.width || 1, i = e.height || 1, u = e.deal_id || "", o = e.crid || ""; 0 != e.cpm && e.ad && (t = { requestId: r.bids[e.imp_id].bidId, cpm: e.cpm, width: n, height: i, netRevenue: !0, ad: e.ad, creativeId: o, dealId: u, currency: "USD", ttl: 300, tl_source: e.tl_source }); return t; }(t, r); }); }, getUserSyncs: function getUserSyncs(r, e, t, n) { var i = function (r) { if (!r) return; if (r.iframeEnabled) return "iframe"; if (r.pixelEnabled) return "image"; }(r); if (i) { var u = "https://eb2.3lift.com/sync?"; return "image" === i && (u = o.tryAppendQueryString(u, "px", 1), u = o.tryAppendQueryString(u, "src"https://slate.com/,"prebid")), null !== c && (u = o.tryAppendQueryString(u, "gdpr", a), u = o.tryAppendQueryString(u, "cmp_cs", c)), n && (u = o.tryAppendQueryString(u, "us_privacy", n)), [{ type: i, url: u }]; } } }; function f(r, e, t, n) { return r.map((o = e, function (r) { return r && r.userId && r.userId[o]; })).filter(function (r) { return !!r; }).map((i = t, u = n, function (r) { return { source: i, uids: [{ id: r, ext: { rtiPartner: u } }] }; })); var i, u, o; } function l(r) { return 2 === r.length && "number" == typeof r[0] && "number" == typeof r[1]; } Object(i.registerBidder)(s); } }, [761]); pbjsChunk([75], { 763: function _(e, r, t) { e.exports = t(764); }, 764: function _(e, r, t) { "use strict"; Object.defineProperty(r, "__esModule", { value: !0 }), t.d(r, "spec", function () { return v; }); var m = t(0), s = t(1), o = t(10), c = t(2), f = "Bid from response has no auid parameter - ", l = "Bid from response has no adm parameter - ", p = "Array of bid objects is empty", g = "Can't find in requested bids the bid with auid - ", u = "Seatbid array from response has empty item", y = "Response is empty", b = "Response has empty seatbid array", h = "Seatbid from response has no array of bid objects - ", v = { code: "trustx", supportedMediaTypes: [c.b, c.d], isBidRequestValid: function isBidRequestValid(e) { return !!e.params.uid; }, buildRequests: function buildRequests(e, r) { var a, o, p = [], u = {}, c = {}, f = {}, l = "net"; (e || []).forEach(function (e) { "gross" === e.params.priceType && (l = "gross"), o = e.bidderRequestId; var r = e.params.uid, t = e.adUnitCode; p.push(r); var s, n = m.parseSizesInput(e.sizes); a || m.isEmpty(e.params.keywords) || (0 < (s = m.transformBidderParamKeywords(e.params.keywords)).length && s.forEach(E), a = s), c[r] || (c[r] = {}); var d = c[r]; d[t] ? d[t].bids.push(e) : d[t] = { adUnitCode: t, bids: [e], parents: [] }; var i = d[t]; n.forEach(function (e) { f[e] = !0, u[r] || (u[r] = {}), u[r][e] ? u[r][e].push(i) : u[r][e] = [i], i.parents.push({ parent: u[r], key: e, uid: r }); }); }); var t = { pt: l, auids: p.join(","), sizes: m.getKeys(f).join(","), r: o, wrapperType: "Prebid_js", wrapperVersion: "3.23.0" }; return a && (t.keywords = JSON.stringify(a)), r && (r.refererInfo && r.refererInfo.referer && (t.u = r.refererInfo.referer), r.timeout && (t.wtimeout = r.timeout), r.gdprConsent && (r.gdprConsent.consentString && (t.gdpr_consent = r.gdprConsent.consentString), t.gdpr_applies = "boolean" == typeof r.gdprConsent.gdprApplies ? Number(r.gdprConsent.gdprApplies) : 1), r.uspConsent && (t.us_privacy = r.uspConsent)), { method: "GET", url: "https://sofia.trustx.org/hb", data: m.parseQueryStringParameters(t).replace(/&$/, ""), bidsMap: u }; }, interpretResponse: function interpretResponse(e, r, t) { var s = 2 < arguments.length && void 0 !== t ? t : o.a; e = e && e.body; var n, d = [], i = r.bidsMap, a = r.data.pt; return e ? e.seatbid && !e.seatbid.length && (n = b) : n = y, !n && e.seatbid && e.seatbid.forEach(function (e) { !function (e, d, r, t, s) { if (!e) return; var n; e.auid || (n = f + JSON.stringify(e)); { var i, a, o, p, u; e.adm ? (i = d[e.auid]) ? (a = "".concat(e.w, "x").concat(e.h), i[a] && (o = i[a][0], p = o.bids.shift(), u = { requestId: p.bidId, bidderCode: v.code, cpm: e.price, width: e.w, height: e.h, creativeId: e.auid, currency: "USD", netRevenue: "gross" !== r, ttl: 360, dealId: e.dealid }, "video" === e.content_type ? (u.vastXml = e.adm, u.mediaType = c.d, u.adResponse = { content: u.vastXml }, p.renderer || p.mediaTypes && p.mediaTypes.video && "outstream" !== p.mediaTypes.video.context || (u.renderer = function (e, r) { var t = r.install({ id: e.id, url: e.url, loaded: !1 }); try { t.setRender(w); } catch (e) { m.logWarn("Prebid Error calling setRender on renderer", e); } return t; }({ id: p.bidId, url: "https://acdn.adnxs.com/video/outstream/ANOutstreamVideo.js" }, s))) : (u.ad = e.adm, u.mediaType = c.b), t.push(u), o.bids.length || o.parents.forEach(function (e) { var r = e.parent, t = e.key, s = e.uid, n = r[t].indexOf(o); -1 < n && r[t].splice(n, 1), r[t].length || (delete r[t], m.getKeys(r).length || delete d[s]); }))) : n = g + e.auid : n = l + JSON.stringify(e); } n && m.logError(n); }(function (e) { e ? e.bid ? e.bid[0] || m.logError(p) : m.logError(h + JSON.stringify(e)) : m.logError(u); return e && e.bid && e.bid[0]; }(e), i, a, d, s); }), n && m.logError(n), d; }, getUserSyncs: function getUserSyncs(e) { if (e.pixelEnabled) return [{ type: "image", url: "https://sofia.trustx.org/push_sync" }]; } }; function E(e) { var r; r = e.value, m.isArray(r) && 0 < r.length && "" === e.value[0] && delete e.value; } function w(e) { e.renderer.push(function () { window.ANOutstreamVideo.renderAd({ targetId: e.adUnitCode, adResponse: e.adResponse }); }); } Object(s.registerBidder)(v); } }, [763]); pbjs.processQueue(); }, {}]; window.modules["via.legacy"] = [function(require,module,exports){"use strict"; DS.service("via", function () { "use strict"; // remove `via` from url, to be used after amplitude logs it to prevent users from sharing such urls function removeFromLocation() { var url = new URL(location.href); url.searchParams.delete("via"); history.replaceState(null, "", url.toString()); } // and add `via` param to any outbound links function addViaToUrl(href, via) { if (!href || href.substr(0, 1) === "#") { return href; // don't add to jumps on the current page, e.g. "Skip to main content" } var url = new URL(href); var apexDomain = new URL(location.href).hostname.split(".").slice(-2).join("."); if (url.hostname.indexOf(apexDomain) === -1) { return href; // don't add it to external links } url.searchParams.set("via", via); return url.toString(); } // keys correspond to "page_types" in editable_components.yml var PREFIXES = { article: "article", homepage: "homepage", "vertical front": "section", "rubric front": "rubric" }; var pageType; function setPageType(amplitudePageType) { pageType = PREFIXES[amplitudePageType]; } var DELIMITER = "_"; function concatVia(node, via) { var tag = node.dataset && node.dataset.via; if (tag) { via = (via.length ? tag + DELIMITER : tag) + via; } return via; } function addToClickedLinks() { document.documentElement.addEventListener("click", function (e) { var a; var via = ""; // detect link nodes and collect via directives to append to the href var node = e.target; // the element where this event originated may have been removed from the dom, e.g. in the case of the OIL CMP which disappears after you interact with it while (node && node !== e.currentTarget) { if (node.tagName === "A") { a = node; } via = concatVia(node, via); node = node.parentNode; } if (a && via) { if (pageType) { via = pageType + DELIMITER + via; } a.href = addViaToUrl(a.href, via); } }); } function addToSubmittedForms() { document.documentElement.addEventListener("submit", function (e) { var form = e.target; // collect via directives var via = ""; var node = e.target; while (node !== e.currentTarget) { via = concatVia(node, via); node = node.parentNode; } if (via) { if (pageType) { via = pageType + DELIMITER + via; } // dynamically create a hidden input for the form url var input = document.createElement("input"); input.type = "hidden"; input.name = "via"; input.value = via; form.appendChild(input); } }); } // start listening only once, when first injected addToClickedLinks(); addToSubmittedForms(); return { setPageType: setPageType, removeFromLocation: removeFromLocation }; }); }, {}]; window.modules["visibility.legacy"] = [function(require,module,exports){"use strict"; DS.service("$visibility", ["$document"https://slate.com/,"$window"https://slate.com/,"_throttle"https://slate.com/,"Eventify", function ($document, $window, _throttle, Eventify) { var list = [], Visible, VisibleEvent; /** * @param {number} a * @param {number} b * @returns {*} * @see http://jsperf.com/math-min-vs-if-condition-vs/8 */ function min(a, b) { return a < b ? a : b; } /** * @param {number} a * @param {number} b * @returns {*} * @see http://jsperf.com/math-min-vs-if-condition-vs/8 */ function max(a, b) { return a > b ? a : b;
}
/**
* Fast loop through watched elements
*/

function onScroll() {
list.forEach(updateVisibility);
}
/**
* updates seen property
* @param {Visble} item
* @param {{}} evt
* @fires Visible#shown
* @fires Visible#hidden
*/

function updateSeen(item, evt) {
var px = evt.visiblePx,
percent = evt.visiblePercent; // if some pixels are visible and we’re greater/equal to threshold

if (px && percent >= item.shownThreshold && !item.seen) {
item.seen = true;
setTimeout(function () {
item.trigger(“shown”, new VisibleEvent(“shown”, evt));
}, 15); // if no pixels or percent is less than threshold
} else if ((!px || percent < item.hiddenThreshold) && item.seen) { item.seen = false; setTimeout(function () { item.trigger("hidden", new VisibleEvent("hidden", evt)); }, 15); } } /** * sets preload property * @param {Visible} item * @param {{}} evt * @param {Number} innerHeight * @fires Visible#preload */ function updatePreload(item, evt, innerHeight) { if (!item.preload && item.preloadThreshhold && shouldBePreloaded(evt.target, evt.rect, item.preloadThreshhold, innerHeight)) { item.preload = true; setTimeout(function () { item.trigger("preload", new VisibleEvent("preload", evt)); }, 15); } } /** * Trigger events * @param {Visible} item */ function updateVisibility(item) { var rect = item.el.getBoundingClientRect(), innerHeight = $window.innerHeight || $document.documentElement.clientHeight, px = getVerticallyVisiblePixels(rect, innerHeight), percent = px / (rect.height || innerHeight), evt = { target: item.el, rect: rect, visiblePx: px, visiblePercent: percent }; updateSeen(item, evt); updatePreload(item, evt, innerHeight); } /** * Return normalized viewport height * @return {number} */ function getViewportHeight() { return $window.innerHeight || $document.documentElement.clientHeight || $document.body.clientHeight; } /** * Return normalized viewport width * @return {number} */ function getViewportWidth() { return $window.innerWidth || $document.documentElement.clientWidth || $document.body.clientWidth; } /** * make sure an element isn't hidden by styles or etc * @param {Element} el * @return {Boolean} */ function isElementNotHidden(el) { return el && el.offsetParent !== null && !el.getAttribute("hidden") && getComputedStyle(el).display !== "none" && getComputedStyle(el).visibility !== "hidden"; } /** * Apparently the fastest way... * @param {Element} el * @returns {boolean} * @example if (!$visibility.isElementInViewport(el)) { ... } */ function isElementInViewport(el) { var rect = el.getBoundingClientRect(); return rect.top >= 0 && rect.left >= 0 && rect.bottom <= ($window.innerHeight || $document.documentElement.clientHeight) && rect.right <= ($window.innerWidth || $document.documentElement.clientWidth); } /** * @param {Element} el * @param {ClientRect} rect * @param {Number} preloadThreshhold * @param {Number} innerHeight * @return {Boolean} */ function shouldBePreloaded(el, rect, preloadThreshhold, innerHeight) { return rect.top <= innerHeight + preloadThreshhold && isElementNotHidden(el); } /** * Create a one-dimensional spacial hash of x * @param {number} x * @param {number} stepSize * @param {number} optimalK * @param {number} base * @return {number} */ function getLinearSpacialHash(x, stepSize, optimalK, base) { var index = Math.floor(x / (stepSize || 1)), remainder = x % stepSize, result = index.toString(base); if (optimalK > 1) {
result += getLinearSpacialHash(remainder, Math.floor(stepSize / base), optimalK – 1, base);
}

return result;
}
/**
* @param {ClientRect} rect
* @param {number} innerHeight
* @returns {number}
*/

function getVerticallyVisiblePixels(rect, innerHeight) {
return min(innerHeight, max(rect.bottom, 0)) – min(max(rect.top, 0), innerHeight);
}
/**
* Get offset of element relative to entire page
*
* @param {Element} el
* @returns {{left: number, top: number}}
* @see http://jsperf.com/offset-vs-getboundingclientrect/7
*/

function getPageOffset(el) {
var offsetLeft = el.offsetLeft,
offsetTop = el.offsetTop;

while (el = el.offsetParent) {
offsetLeft += el.offsetLeft;
offsetTop += el.offsetTop;
}

return {
left: offsetLeft,
top: offsetTop
};
}
/**
* Create a new Visible class to observe when elements enter and leave the viewport
*
* Call destroy function to stop listening (this is until we have better support for watching for Node Removal)
* @param {Element} el
* @param {{shownThreshold: number, hiddenThreshold: number}} [options]
* @class
* @example this.visible = new $visibility.Visible(el);
*/

Visible = function Visible(el, options) {
options = options || {};
this.el = el;
this.seen = false;
this.preload = false;
this.preloadThreshhold = options && options.preloadThreshhold || 0;
this.shownThreshold = options && options.shownThreshold || 0;
this.hiddenThreshold = options && min(options.shownThreshold, options.hiddenThreshold) || 0;
list.push(this);
updateVisibility(this); // set immediately to visible or not
};

Visible.prototype = {
/**
* Stop triggering.
*/
destroy: function destroy() {
// remove from list
list.splice(list.indexOf(this), 1);
}
/**
* @name Visible#on
* @function
* @param {‘shown’|’hidden’} e EventName
* @param {function} cb Callback
*/

/**
* @name Visible#trigger
* @function
* @param {‘shown’|’hidden’} e
* @param {{}}
*/

};
Eventify.enable(Visible.prototype);

VisibleEvent = function VisibleEvent(type, options) {
var _this = this;

this.type = type;
Object.keys(options).forEach(function (key) {
_this[key] = options[key];
});
}; // listen for scroll events (throttled)

$document.addEventListener(“scroll”, _throttle(onScroll, 200)); // public

this.getPageOffset = getPageOffset;
this.getLinearSpacialHash = getLinearSpacialHash;
this.getVerticallyVisiblePixels = getVerticallyVisiblePixels;
this.getViewportHeight = getViewportHeight;
this.getViewportWidth = getViewportWidth;
this.isElementNotHidden = isElementNotHidden;
this.isElementInViewport = isElementInViewport;
this.Visible = Visible;
}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==”function”&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(“Cannot find module ‘”+o+”‘”);throw f.code=”MODULE_NOT_FOUND”,f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==”function”&&require;for(var o=0;o

Source Article