Home News BREAKING NEWS: Union announces tentative deal to avert strike by COCC classified...

BREAKING NEWS: Union announces tentative deal to avert strike by COCC classified employees; includes up to 25% raises Translated Title: BREAKING NEWS: Union announces tentative deal to avert strike by COCC classified employees; includes up to 25% raises

27
0

${n}</script>`),
(t.onload = () => e(t.contentWindow.render)),
document.body.appendChild(t);
})),
e[n]
);
};
})();
},
3005: (e, t, n) => {
n.d(t, {
$T: () => a,
Ni: () => i,
OA: () => o,
RO: () => s,
fR: () => r
});
const i = 1,
r = 2,
o = 1,
s = 500;
function a(e) {
return (e ?? []).reduce((e, t) => {
let { event: n, method: i, url: r } = t;
const o = (e[n] = e[n] ?? {});
return (o[i] = o[i] ?? []).push(r), e;
}, {});
}
},
5023: (e, t, n) => {
n.d(t, { AU: () => m, Ic: () => v, kQ: () => y, on: () => h });
var i = n(1069),
r = n(8969),
o = n(6853),
s = n(3272);
const a = ‘eventHistoryTTL’;
let d = null;
const c = (0, o.H)({ monotonic: !0, ttl: () => d });
s.$W.getConfig(a, e => {
const t = d;
(e = e?.[a]),
(d = ‘number’ == typeof e ? 1e3 * e : null),
t !== d && c.refresh();
});
let l = Array.prototype.slice,
u = Array.prototype.push,
f = Object.values(r.qY);
const g = r.cA,
p = (function() {
let e = {},
t = {};
function n(e) {
return f.includes(e);
}
return (
(t.has = n),
(t.on = function(t, r, o) {
if (n(t)) {
let n = e[t] || { que: [] };
o
? ((n[o] = n[o] || { que: [] }), n[o].que.push(r))
: n.que.push(r),
(e[t] = n);
} else
i.vV(
‘Wrong event name : ‘ + t + ‘ Valid event names :’ + f
);
}),
(t.emit = function(t) {
!(function(t, n) {
i.OG(‘Emitting event for: ‘ + t);
let r = n[0] || {},
o = r[g[t]],
s = e[t] || { que: [] };
var a = Object.keys(s);
let d = [];
c.add({
eventType: t,
args: r,
id: o,
elapsedTime: i.V()
}),
o && a.includes(o) && u.apply(d, s[o].que),
u.apply(d, s.que),
(d || []).forEach(function(e) {
if (e)
try {
e.apply(null, n);
} catch (e) {
i.vV(
‘Error executing handler:’,
‘events.js’,
e,
t
);
}
});
})(t, l.call(arguments, 1));
}),
(t.off = function(t, n, r) {
let o = e[t];
i.Im(o) ||
(i.Im(o.que) && i.Im(o[r])) ||
(r && (i.Im(o[r]) || i.Im(o[r].que))) ||
(r
? (o[r].que || []).forEach(function(e) {
let t = o[r].que;
e === n && t.splice(t.indexOf(e), 1);
})
: (o.que || []).forEach(function(e) {
let t = o.que;
e === n && t.splice(t.indexOf(e), 1);
}),
(e[t] = o));
}),
(t.get = function() {
return e;
}),
(t.addEvents = function(e) {
f = f.concat(e);
}),
(t.getEvents = function() {
return c.toArray().map(e => Object.assign({}, e));
}),
t
);
})();
i.cD(p.emit.bind(p));
const {
on: h,
off: m,
get: b,
getEvents: y,
emit: v,
addEvents: E,
has: A
} = p;
},
687: (e, t, n) => {
n.d(t, { w: () => I });
var i = n(9214),
r = n(7934),
o = n(5973),
s = n(1069),
a = n(3172),
d = n(3272),
c = n(5555);
const l = [
‘architecture’,
‘bitness’,
‘model’,
‘platformVersion’,
‘fullVersionList’
],
u = [‘brands’, ‘mobile’, ‘platform’],
f = (function() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: window.navigator?.userAgentData;
const t =
e && u.some(t => void 0 !== e[t])
? Object.freeze(p(1, e))
: null;
return function() {
return t;
};
})(),
g = (function() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: window.navigator?.userAgentData;
const t = {},
n = new WeakMap();
return function() {
let i =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: l;
if (!n.has(i)) {
const e = Array.from(i);
e.sort(), n.set(i, e.join(‘|’));
}
const r = n.get(i);
if (!t.hasOwnProperty(r))
try {
t[r] = e
.getHighEntropyValues(i)
.then(e =>
(0, s.Im)(e) ? null : Object.freeze(p(2, e))
)
.catch(() => null);
} catch (e) {
t[r] = c.U9.resolve(null);
}
return t[r];
};
})();
function p(e, t) {
function n(e, t) {
const n = { brand: e };
return (
(0, s.O8)(t) && !(0, s.xQ)(t) && (n.version = t.split(‘.’)), n
);
}
const i = { source: e };
return (
t.platform && (i.platform = n(t.platform, t.platformVersion)),
(t.fullVersionList || t.brands) &&
(i.browsers = (t.fullVersionList || t.brands).map(e => {
let { brand: t, version: i } = e;
return n(t, i);
})),
void 0 !== t.mobile && (i.mobile = t.mobile ? 1 : 0),
[‘model’, ‘bitness’, ‘architecture’].forEach(e => {
const n = t[e];
(0, s.O8)(n) && (i[e] = n);
}),
i
);
}
var h = n(3858),
m = n(5139),
b = n(3441),
y = n(6811),
v = n(5569),
E = n(8944);
const A = {
getRefererInfo: r.EN,
findRootDomain: o.S,
getWindowTop: s.mb,
getWindowSelf: s.l4,
getHighEntropySUA: g,
getLowEntropySUA: f,
getDocument: s.YE
},
w = (0, h.i8)(‘FPD’),
I = (0, i.A_)(‘sync’, e => {
const t = [
e,
C().catch(() => null),
c.U9.resolve(
‘cookieDeprecationLabel’ in navigator &&
(0, m.io)(y.Ue, (0, b.s)(v.tp, ‘cdep’)) &&
navigator.cookieDeprecationLabel.getValue()
).catch(() => null)
];
return c.U9.all(t).then(e => {
let [t, n, i] = e;
const r = A.getRefererInfo();
if (
(Object.entries(O).forEach(e => {
let [n, i] = e;
const o = i(t, r);
o &&
Object.keys(o).length > 0 &&
(t[n] = (0, s.D9)({}, o, t[n]));
}),
n &&
(0, a.J)(
t,
‘device.sua’,
Object.assign({}, n, t.device.sua)
),
i)
) {
const e = { cdep: i };
(0, a.J)(
t,
‘device.ext’,
Object.assign({}, e, t.device.ext)
);
}
const o = A.getDocument().documentElement.lang;
o && (0, a.J)(t, ‘site.ext.data.documentLang’, o), (t = w(t));
for (let e of h.Dy)
if ((0, h.O$)(t, e)) {
t[e] = (0, s.D9)({}, R(t, r), t[e]);
break;
}
return t;
});
});
function T(e) {
try {
return e(A.getWindowTop());
} catch (t) {
return e(A.getWindowSelf());
}
}
function C() {
const e = d.$W.getConfig(‘firstPartyData.uaHints’);
return Array.isArray(e) && 0 !== e.length
? A.getHighEntropySUA(e)
: c.U9.resolve(A.getLowEntropySUA());
}
function B(e) {
return (0, s.SH)(e, Object.keys(e));
}
const O = {
site(e, t) {
if (!h.Dy.filter(e => ‘site’ !== e).some(h.O$.bind(null, e)))
return B({ page: t.page, ref: t.ref });
},
device: () =>
T(e => {
const t = (0, s.Ot)().screen.width,
n = (0, s.Ot)().screen.height,
{ width: i, height: r } = (0, E.M)(),
o = {
w: t,
h: n,
dnt: (0, s.l9)() ? 1 : 0,
ua: e.navigator.userAgent,
language: e.navigator.language.split(‘-‘).shift(),
ext: { vpw: i, vph: r }
};
return (
e.navigator?.webdriver && (0, a.J)(o, ‘ext.webdriver’, !0),
o
);
}),
regs() {
const e = {};
T(e => e.navigator.globalPrivacyControl) &&
(0, a.J)(e, ‘ext.gpc’, ‘1’);
const t = d.$W.getConfig(‘coppa’);
return ‘boolean’ == typeof t && (e.coppa = t ? 1 : 0), e;
}
};
function R(e, t) {
const n = (0, r.gR)(t.page, { noLeadingWww: !0 }),
i = T(e =>
e.document.querySelector(“meta[name=’keywords’]”)
)?.content?.replace?.(/s/g, ”);
return B({
domain: n,
keywords: i,
publisher: B({ domain: A.findRootDomain(n) })
});
}
},
3858: (e, t, n) => {
n.d(t, { Dy: () => r, O$: () => s, i8: () => o });
var i = n(1069);
const r = [‘dooh’, ‘app’, ‘site’];
function o(e) {
return function(t) {
return (
r.reduce(
(n, r) => (
s(t, r) &&
(null != n
? ((0, i.JE)(
`${e} specifies both ‘${n}’ and ‘${r}’; dropping the latter.`
),
delete t[r])
: (n = r)),
n
),
null
),
t
);
};
}
function s(e, t) {
return null != e[t] && Object.keys(e[t]).length > 0;
}
},
5973: (e, t, n) => {
n.d(t, { S: () => o });
var i = n(1069);
const r = (0, n(2938).CK)(‘fpdEnrichment’),
o = (0, i.Bj)(function() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: window.location.host;
if (!r.cookiesAreEnabled()) return e;
const t = e.split(‘.’);
if (2 === t.length) return e;
let n,
o,
s = -2;
const a = `_rdc${Date.now()}`,
d = ‘writeable’;
do {
n = t.slice(s).join(‘.’);
let e = new Date((0, i.vE)() + 1e4).toUTCString();
r.setCookie(a, d, e, ‘Lax’, n, void 0);
r.getCookie(a, void 0) === d
? ((o = !1),
r.setCookie(
a,
”,
‘Thu, 01 Jan 1970 00:00:01 GMT’,
void 0,
n,
void 0
))
: ((s += -1), (o = Math.abs(s) <= t.length));
} while (o);
return n;
});
},
9214: (e, t, n) => {
n.d(t, {
A_: () => s,
Gc: () => d,
Y6: () => g,
Yn: () => c,
bz: () => f,
u2: () => p,
xG: () => u
});
var i = n(8128),
r = n.n(i),
o = n(5555);
let s = r()({ ready: r().SYNC | r().ASYNC | r().QUEUE });
const a = (0, o.v6)();
s.ready = (() => {
const e = s.ready;
return function() {
try {
return e.apply(s, arguments);
} finally {
a.resolve();
}
};
})();
const d = a.promise,
c = s.get;
const l = {};
function u(e, t) {
let { postInstallAllowed: n = !1 } =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: {};
s(
‘async’,
function(i) {
i.forEach(e => t(…e)), n && (l[e] = t);
},
e
)([]);
}
function f(e) {
for (
var t = arguments.length,
n = new Array(t > 1 ? t – 1 : 0),
i = 1;
i < t;
i++
)
n[i – 1] = arguments[i];
const r = l[e];
if (r) return r(…n);
c(e).before((e, t) => {
t.push(n), e(t);
});
}
function g(e, t) {
return (
Object.defineProperties(
t,
Object.fromEntries(
[‘before’, ‘after’, ‘getHooks’, ‘removeAll’].map(t => [
t,
{ get: () => e[t] }
])
)
),
t
);
}
function p(e) {
return g(e, function() {
for (
var t = arguments.length, n = new Array(t), i = 0;
i < t;
i++
)
n[i] = arguments[i];
return n.push(function() {}), e.apply(this, n);
});
}
},
1371: (e, t, n) => {
n.d(t, {
D4: () => o,
GE: () => a,
G_: () => r,
LM: () => s,
s6: () => i
});
const i = ‘native’,
r = ‘video’,
o = ‘banner’,
s = ‘adpod’,
a = [i, r, o];
},
2449: (e, t, n) => {
n.d(t, {
Bm: () => y,
IX: () => C,
Nh: () => l,
Zj: () => A,
gs: () => E,
l6: () => p,
mT: () => c,
nk: () => m,
vO: () => v,
yl: () => B
});
var i = n(1069),
r = n(6881),
o = n(8969),
s = n(9075),
a = n(6031),
d = n(3005);
const c = [],
l = Object.keys(o.x5).map(e => o.x5[e]),
u = {
image: {
ortb: {
ver: ‘1.2’,
assets: [
{
required: 1,
id: 1,
img: { type: 3, wmin: 100, hmin: 100 }
},
{ required: 1, id: 2, title: { len: 140 } },
{ required: 1, id: 3, data: { type: 1 } },
{ required: 0, id: 4, data: { type: 2 } },
{
required: 0,
id: 5,
img: { type: 1, wmin: 20, hmin: 20 }
}
]
},
image: { required: !0 },
title: { required: !0 },
sponsoredBy: { required: !0 },
clickUrl: { required: !0 },
body: { required: !1 },
icon: { required: !1 }
}
},
f = k(o.h0),
g = k(o.jO);
function p(e) {
return e.native && ‘object’ == typeof e.native;
}
function h(e) {
if (
(e &&
e.type &&
(function(e) {
if (!e || !Object.keys(u).includes(e))
return (0, i.vV)(`${e} nativeParam is not supported`), !1;
return !0;
})(e.type) &&
(e = u[e.type]),
!e || !e.ortb || b(e.ortb))
)
return e;
}
function m(e) {
e.forEach(e => {
const t = e.nativeParams || e?.mediaTypes?.native;
t && (e.nativeParams = h(t)),
e.nativeParams &&
(e.nativeOrtbRequest =
e.nativeParams.ortb ||
(function(e) {
if (!e && !(0, i.Qd)(e))
return void (0, i.vV)(
‘Native assets object is empty or not an object: ‘,
e
);
const t = { ver: ‘1.2’, assets: [] };
for (let n in e) {
if (o._B.includes(n)) continue;
if (!o.x5.hasOwnProperty(n)) {
(0, i.vV)(
`Unrecognized native asset code: ${n}. Asset will be ignored.`
);
continue;
}
if (‘privacyLink’ === n) {
t.privacy = 1;
continue;
}
const r = e[n];
let s = 0;
r.required &&
(0, i.Lm)(r.required) &&
(s = Number(r.required));
const a = { id: t.assets.length, required: s };
if (n in o.h0)
(a.data = { type: o.jO[o.h0[n]] }),
r.len && (a.data.len = r.len);
else if (‘icon’ === n || ‘image’ === n) {
if (
((a.img = {
type: ‘icon’ === n ? o.oA.ICON : o.oA.MAIN
}),
r.aspect_ratios)
)
if ((0, i.cy)(r.aspect_ratios))
if (r.aspect_ratios.length) {
const {
min_width: e,
min_height: t
} = r.aspect_ratios[0];
(0, i.Fq)(e) && (0, i.Fq)(t)
? ((a.img.wmin = e), (a.img.hmin = t))
: (0, i.vV)(
‘image.aspect_ratios min_width or min_height are invalid: ‘,
e,
t
);
const n = r.aspect_ratios
.filter(
e => e.ratio_width && e.ratio_height
)
.map(
e => `${e.ratio_width}:${e.ratio_height}`
);
n.length > 0 &&
(a.img.ext = { aspectratios: n });
} else
(0, i.vV)(
“image.aspect_ratios was passed, but it’s empty:”,
r.aspect_ratios
);
else
(0, i.vV)(
“image.aspect_ratios was passed, but it’s not a an array:”,
r.aspect_ratios
);
r.sizes &&
(2 === r.sizes.length &&
(0, i.Fq)(r.sizes[0]) &&
(0, i.Fq)(r.sizes[1])
? ((a.img.w = r.sizes[0]),
(a.img.h = r.sizes[1]),
delete a.img.hmin,
delete a.img.wmin)
: (0, i.vV)(
‘image.sizes was passed, but its value is not an array of integers:’,
r.sizes
));
} else
‘title’ === n
? (a.title = { len: r.len || 140 })
: ‘ext’ === n && ((a.ext = r), delete a.required);
t.assets.push(a);
}
return t;
})(e.nativeParams));
});
}
function b(e) {
const t = e.assets;
if (!Array.isArray(t) || 0 === t.length)
return (
(0, i.vV)(
“assets in mediaTypes.native.ortb is not an array, or it’s empty. Assets: “,
t
),
!1
);
const n = t.map(e => e.id);
return t.length !== new Set(n).size ||
n.some(e => e !== parseInt(e, 10))
? ((0, i.vV)(
“each asset object must have ‘id’ property, it must be unique and it must be an integer”
),
!1)
: e.hasOwnProperty(‘eventtrackers’) &&
!Array.isArray(e.eventtrackers)
? ((0, i.vV)(
‘ortb.eventtrackers is not an array. Eventtrackers: ‘,
e.eventtrackers
),
!1)
: t.every(e =>
(function(e) {
if (!(0, i.Qd)(e))
return (
(0, i.vV)(
‘asset must be an object. Provided asset: ‘,
e
),
!1
);
if (e.img) {
if (!(0, i.Et)(e.img.w) && !(0, i.Et)(e.img.wmin))
return (
(0, i.vV)(
“for img asset there must be ‘w’ or ‘wmin’ property”
),
!1
);
if (!(0, i.Et)(e.img.h) && !(0, i.Et)(e.img.hmin))
return (
(0, i.vV)(
“for img asset there must be ‘h’ or ‘hmin’ property”
),
!1
);
} else if (e.title) {
if (!(0, i.Et)(e.title.len))
return (
(0, i.vV)(
“for title asset there must be ‘len’ property defined”
),
!1
);
} else if (e.data) {
if (!(0, i.Et)(e.data.type))
return (
(0, i.vV)(
“for data asset ‘type’ property must be a number”
),
!1
);
} else if (
e.video &&
!(
Array.isArray(e.video.mimes) &&
Array.isArray(e.video.protocols) &&
(0, i.Et)(e.video.minduration) &&
(0, i.Et)(e.video.maxduration)
)
)
return (
(0, i.vV)(‘video asset is not properly configured’),
!1
);
return !0;
})(e)
);
}
function y(e) {
let { index: t = r.n.index } =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
const n = t.getAdUnit(e);
if (!n) return !1;
let o = n.nativeOrtbRequest;
return (function(e, t) {
if (!e?.link?.url)
return (
(0, i.vV)(
“native response doesn’t have ‘link’ property. Ortb response: “,
e
),
!1
);
let n = t.assets.filter(e => 1 === e.required).map(e => e.id),
r = e.assets.map(e => e.id);
const o = n.every(e => r.includes(e));
o ||
(0, i.vV)(
`didn’t receive a bid with all required assets. Required ids: ${n}, but received ids in response: ${r}`
);
return o;
})(e.native?.ortb || S(e.native, o), o);
}
function v(e, t) {
const n = t.native.ortb || R(t.native);
return (
‘click’ === e.action
? (function(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: null,
{ fetchURL: n = i.z$ } =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: {};
if (t) {
const i = (e.assets || [])
.filter(e => e.link)
.reduce((e, t) => ((e[t.id] = t.link), e), {}),
r = e.link?.clicktrackers || [];
let o = i[t],
s = r;
o && (s = o.clicktrackers || []), s.forEach(e => n(e));
} else (e.link?.clicktrackers || []).forEach(e => n(e));
})(n, e?.assetId)
: (function(e) {
let {
runMarkup: t = e => (0, i.ro)(e),
fetchURL: n = i.z$
} =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {},
{ [d.Ni]: r = [], [d.fR]: o = [] } =
(0, d.$T)(e.eventtrackers || [])[d.OA] || {};
e.imptrackers && (r = r.concat(e.imptrackers));
r.forEach(e => n(e)),
(o = o.map(e => “)),
e.jstracker && (o = o.concat([e.jstracker]));
o.length && t(o.join(‘n’));
})(n),
e.action
);
}
function E(e, t) {
const n = t?.nativeOrtbRequest,
i = e.native?.ortb;
if (n && i) {
const t = (function(e, t) {
const n = {},
i = t?.assets || [];
(n.clickUrl = e.link?.url), (n.privacyLink = e.privacy);
for (const t of e?.assets || []) {
const e = i.find(e => t.id === e.id);
t.title
? (n.title = t.title.text)
: t.img
? (n[e?.img?.type === o.oA.MAIN ? ‘image’ : ‘icon’] = {
url: t.img.url,
width: t.img.w,
height: t.img.h
})
: t.data && (n[f[g[e?.data?.type]]] = t.data.value);
}
n.impressionTrackers = [];
let r = [];
e.imptrackers && n.impressionTrackers.push(…e.imptrackers);
for (const t of e?.eventtrackers || [])
t.event === d.OA &&
t.method === d.Ni &&
n.impressionTrackers.push(t.url),
t.event === d.OA && t.method === d.fR && r.push(t.url);
(r = r.map(e => “)),
e?.jstracker && r.push(e.jstracker);
r.length && (n.javascriptTrackers = r.join(‘n’));
return n;
})(i, n);
Object.assign(e.native, t);
}
[‘rendererUrl’, ‘adTemplate’].forEach(n => {
const i = t?.nativeParams?.[n];
i && (e.native[n] = O(i));
});
}
function A(e) {
let { index: t = r.n.index } =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {},
n = {};
const i = t.getAdUnit(e),
s =
null == i?.nativeParams?.ortb &&
!1 !== i?.nativeParams?.sendTargetingKeys,
a = (function(e) {
const t = {};
e?.nativeParams?.ext &&
Object.keys(e.nativeParams.ext).forEach(e => {
t[e] = `hb_native_${e}`;
});
return { …o.x5, …t };
})(i),
d = { …e.native, …e.native.ext };
return (
delete d.ext,
Object.keys(d).forEach(t => {
const r = a[t];
let o = O(e.native[t]) || O(e?.native?.ext?.[t]);
if (‘adTemplate’ === t || !r || !o) return;
let d = i?.nativeParams?.[t]?.sendId;
if (
(‘boolean’ != typeof d &&
(d = i?.nativeParams?.ext?.[t]?.sendId),
d)
) {
o = `${r}:${e.adId}`;
}
let c = i?.nativeParams?.[t]?.sendTargetingKeys;
‘boolean’ != typeof c &&
(c = i?.nativeParams?.ext?.[t]?.sendTargetingKeys);
(‘boolean’ == typeof c ? c : s) && (n[r] = o);
}),
n
);
}
function w(e, t) {
let n =
arguments.length > 2 &&
void 0 !== arguments[2] &&
arguments[2],
i = [];
return (
Object.entries(e)
.filter(e => {
let [i, r] = e;
return (
r &&
((!1 === n && ‘ext’ === i) || null == t || t.includes(i))
);
})
.forEach(e => {
let [r, s] = e;
!1 === n && ‘ext’ === r
? i.push(…w(s, t, !0))
: (n || o.x5.hasOwnProperty(r)) &&
i.push({ key: r, value: O(s) });
}),
i
);
}
function I(e, t, n) {
let { index: d = r.n.index } =
arguments.length > 3 && void 0 !== arguments[3]
? arguments[3]
: {};
const c = { message: ‘assetResponse’, adId: e.adId };
let l = (0, s.vd)(t).native;
return (
l
? ((c.native = Object.assign({}, l)),
(c.renderer = (0, a.kj)(t)),
(c.rendererVersion = a.xh),
null != n &&
(l.assets = l.assets.filter(e => {
let { key: t } = e;
return n.includes(t);
})))
: (l = (function(e, t, n) {
const r = {
…(0, i.SH)(e.native, [‘rendererUrl’, ‘adTemplate’]),
assets: w(e.native, n),
nativeKeys: o.x5
};
return (
e.native.ortb
? (r.ortb = e.native.ortb)
: t.mediaTypes?.native?.ortb &&
(r.ortb = S(e.native, t.nativeOrtbRequest)),
r
);
})(t, d.getAdUnit(t), n)),
Object.assign(c, l)
);
}
const T = Object.fromEntries(
Object.entries(o.x5).map(e => {
let [t, n] = e;
return [n, t];
})
);
function C(e, t) {
const n = e.assets.map(e => T[e]);
return I(e, t, n);
}
function B(e, t) {
return I(e, t, null);
}
function O(e) {
return e?.url || e;
}
function R(e) {
const t = { link: {}, eventtrackers: [] };
return (
Object.entries(e).forEach(e => {
let [n, i] = e;
switch (n) {
case ‘clickUrl’:
t.link.url = i;
break;
case ‘clickTrackers’:
t.link.clicktrackers = Array.isArray(i) ? i : [i];
break;
case ‘impressionTrackers’:
(Array.isArray(i) ? i : [i]).forEach(e => {
t.eventtrackers.push({
event: d.OA,
method: d.Ni,
url: e
});
});
break;
case ‘javascriptTrackers’:
t.jstracker = Array.isArray(i) ? i.join(”) : i;
break;
case ‘privacyLink’:
t.privacy = i;
}
}),
t
);
}
function S(e, t) {
const n = { …R(e), assets: [] };
function r(e, r) {
let o = t.assets.find(e);
null != o && ((o = (0, i.Go)(o)), r(o), n.assets.push(o));
}
return (
Object.keys(e)
.filter(t => !!e[t])
.forEach(t => {
const n = O(e[t]);
switch (t) {
case ‘title’:
r(
e => null != e.title,
e => {
e.title = { text: n };
}
);
break;
case ‘image’:
case ‘icon’:
const e = ‘image’ === t ? o.oA.MAIN : o.oA.ICON;
r(
t => null != t.img && t.img.type === e,
e => {
e.img = { url: n };
}
);
break;
default:
t in o.h0 &&
r(
e =>
null != e.data && e.data.type === o.jO[o.h0[t]],
e => {
e.data = { value: n };
}
);
}
}),
n
);
}
function k(e) {
var t = {};
for (var n in e) t[e[n]] = n;
return t;
}
},
1e3: (e, t, n) => {
n.d(t, {
Cf: () => a,
S3: () => r,
Tb: () => o,
WR: () => s,
e4: () => c,
pS: () => u,
qN: () => d,
yB: () => f,
zt: () => i
});
const i = [‘request’, ‘imp’, ‘bidResponse’, ‘response’],
[r, o, s, a] = i,
[d, c] = [‘default’, ‘pbs’],
l = new Set(i);
const { registerOrtbProcessor: u, getProcessors: f } = (function() {
const e = {};
return {
registerOrtbProcessor(t) {
let {
type: n,
name: r,
fn: o,
priority: s = 0,
dialects: a = [d]
} = t;
if (!l.has(n))
throw new Error(
`ORTB processor type must be one of: ${i.join(‘, ‘)}`
);
a.forEach(t => {
e.hasOwnProperty(t) || (e[t] = {}),
e[t].hasOwnProperty(n) || (e[t][n] = {}),
(e[t][n][r] = { priority: s, fn: o });
});
},
getProcessors: t => e[t] || {}
};
})();
},
8934: (e, t, n) => {
n.d(t, { gH: () => se });
var i = n(7873),
r = n(1069),
o = n(433),
s = n(3172),
a = n(2449),
d = n(8969),
c = n(9075),
l = n(6031);
const { REQUEST: u, RESPONSE: f, NATIVE: g, EVENT: p } = d.nl,
h = {
[u]: function(e, t, n) {
(0, c.bw)({
renderFn(t) {
e(
Object.assign(
{
message: f,
renderer: (0, l.kj)(n),
rendererVersion: l.xh
},
t
)
);
},
resizeFn: b(t.adId, n),
options: t.options,
adId: t.adId,
bidResponse: n
});
},
[p]: function(e, t, n) {
if (null == n)
return void (0, r.vV)(
`Cannot find ad ‘${t.adId}’ for x-origin event request`
);
if (n.status !== d.tl.RENDERED)
return void (0, r.JE)(
`Received x-origin event request without corresponding render request for ad ‘${n.adId}’`
);
return (0, c.Uc)(t, n);
}
};
function m() {
window.addEventListener(
‘message’,
function(e) {
!(function(e) {
var t = e.message ? ‘message’ : ‘data’,
n = {};
try {
n = JSON.parse(e[t]);
} catch (e) {
return;
}
if (n && n.adId && n.message && h.hasOwnProperty(n.message))
(0, c.$A)(n.adId, n.message === d.nl.REQUEST).then(t => {
var i, o;
h[n.message](
((i = n.adId),
(o = (function(e) {
return null == e.origin && 0 === e.ports.length
? function() {
const e =
‘Cannot post message to a frame with null origin. Please update creatives to use MessageChannel, see https://github.com/prebid/Prebid.js/issues/7870’;
throw ((0, r.vV)(e), new Error(e));
}
: e.ports.length > 0
? function(t) {
e.ports[0].postMessage(JSON.stringify(t));
}
: function(t) {
e.source.postMessage(
JSON.stringify(t),
e.origin
);
};
})(e)),
function(e) {
for (
var t = arguments.length,
n = new Array(t > 1 ? t – 1 : 0),
r = 1;
r < t;
r++
)
n[r – 1] = arguments[r];
return o(Object.assign({}, e, { adId: i }), …n);
}),
n,
t
);
});
})(e);
},
!1
);
}
function b(e, t) {
return function(n, i) {
!(function(e) {
let {
instl: t,
adId: n,
adUnitCode: i,
width: o,
height: s
} = e;
if (t) return;
function a(e) {
return e ? e + ‘px’ : ‘100%’;
}
function d(e) {
let t = c(n, i),
r = document.getElementById(t);
return r && r.querySelector(e);
}
function c(e, t) {
return (0, r.II)() ? l(e) : (0, r.t1)() ? u(t) : t;
}
function l(e) {
const t = window.googletag
.pubads()
.getSlots()
.find(t =>
t
.getTargetingKeys()
.find(n => t.getTargeting(n).includes(e))
);
return t ? t.getSlotElementId() : null;
}
function u(e) {
let t = window.apntag.getTag(e);
return t && t.targetId;
}
[‘div’, ‘iframe’].forEach(e => {
let t = d(e + ‘:not([style*=”display: none”])’);
if (t) {
let e = t.style;
(e.width = a(o)), (e.height = a(s));
} else
(0, r.vV)(
`Unable to locate matching page element for adUnitCode ${i}. Can’t resize it to ad’s dimensions. Please review setup.`
);
});
})({ …t, width: n, height: i, adId: e });
};
}
Object.assign(h, {
[g]: function(e, t, n) {
if (null == n)
return void (0, r.vV)(
`Cannot find ad for x-origin event request: ‘${t.adId}’`
);
switch (t.action) {
case ‘assetRequest’:
(0, c.Hh)(n, () => e((0, a.IX)(t, n)));
break;
case ‘allAssetRequest’:
(0, c.Hh)(n, () => e((0, a.yl)(t, n)));
break;
default:
(0, c.vW)(t, n, { resizeFn: b(t.adId, n) }), (0, c.Pk)(n);
}
}
});
var y = n(8230),
v = n(3272),
E = n(6881),
A = n(7779),
w = n(9214),
I = n(3597),
T = n(1580),
C = n(5555),
B = n(5569);
const O = ‘__tlpbjs_debugging__’;
function R() {
return (0, i.m)().installedModules.includes(‘debugging’);
}
function S(e) {
return new C.U9(t => {
(0, T.R)(e, B.tp, ‘debugging’, t);
});
}
function k() {
let { alreadyInstalled: e = R, script: t = S } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
n = null;
return function() {
return (
null == n &&
(n = new C.U9((n, o) => {
setTimeout(() => {
if (e()) n();
else {
const e =
‘https://cdn.jsdelivr.net/npm/prebid.js@9.50.0/dist/debugging-standalone.js’;
(0, r.OG)(
`Debugging module not installed, loading it from “${e}”…`
),
((0, i.m)()._installDebugging = !0),
t(e)
.then(() => {
(0, i.m)()._installDebugging({
DEBUG_KEY: O,
hook: w.A_,
config: v.$W,
createBid: I.O,
logger: (0, r.h0)(‘DEBUG:’)
});
})
.then(n, o);
}
});
})),
n
);
};
}
const U = (function() {
let { load: e = k(), hook: t = (0, w.Yn)(‘requestBids’) } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
n = null,
i = !1;
function r(e) {
for (
var t = arguments.length,
i = new Array(t > 1 ? t – 1 : 0),
r = 1;
r < t;
r++
)
i[r – 1] = arguments[r];
return (n || C.U9.resolve()).then(() => e.apply(this, i));
}
function o() {
t.getHooks({ hook: r }).remove(), (i = !1);
}
return {
enable: function() {
i || ((n = e()), t.before(r, 99), (i = !0));
},
disable: o,
reset: function() {
(n = null), o();
}
};
})();
U.reset;
v.$W.getConfig(‘debugging’, function(e) {
let { debugging: t } = e;
t?.enabled ? U.enable() : U.disable();
});
var D = n(2938),
_ = n(1445),
$ = n(5023),
j = n(6894),
x = n(687),
q = n(6916),
N = n(2713),
W = n(3895);
const P = new Map([
[
‘format’,
e =>
Array.isArray(e) &&
e.length > 0 &&
e.every(e => ‘object’ == typeof e)
],
[‘w’, r.Fq],
[‘h’, r.Fq],
[‘btype’, r.Uu],
[‘battr’, r.Uu],
[‘pos’, r.Fq],
[
‘mimes’,
e =>
Array.isArray(e) &&
e.length > 0 &&
e.every(e => ‘string’ == typeof e)
],
[‘topframe’, e => [1, 0].includes(e)],
[‘expdir’, r.Uu],
[‘api’, r.Uu],
[‘id’, r.O8],
[‘vcm’, e => [1, 0].includes(e)]
]);
var V = n(1371);
function M(e, t) {
return function() {
if (document.prerendering && e()) {
const e = this,
n = Array.from(arguments);
return new Promise(i => {
document.addEventListener(
‘prerenderingchange’,
() => {
(0, r.fH)(
‘Auctions were suspended while page was prerendering’
),
i(t.apply(e, n));
},
{ once: !0 }
);
});
}
return Promise.resolve(t.apply(this, arguments));
};
}
var G = n(7377);
const F = (0, i.m)(),
{ triggerUserSyncs: H } = y.zt,
{ ADD_AD_UNITS: L, REQUEST_BIDS: z, SET_TARGETING: J } = d.qY,
Q = {
bidWon: function(e) {
if (
!E.n
.getBidsRequested()
.map(e => e.bids.map(e => e.adUnitCode))
.reduce(r.Bq)
.filter(r.hj)
.includes(e)
)
return void (0, r.vV)(
‘The “‘ + e + ‘” placement is not defined.’
);
return !0;
}
};
function K(e, t) {
let n = [];
return (
(0, r.cy)(e) &&
(t ? e.length === t : e.length > 0) &&
(e.every(e => (0, r.Uu)(e, 2))
? (n = e)
: (0, r.Uu)(e, 2) && n.push(e)),
n
);
}
function Y(e, t) {
const n = (0, o.A)(e, `ortb2Imp.${t}`),
i = (0, o.A)(e, `mediaTypes.${t}`);
if (!n && !i) return;
const a = { [V.G_]: W.Zy, [V.D4]: P }[t];
a &&
[…a].forEach(n => {
let [i, a] = n;
const d = (0, o.A)(e, `mediaTypes.${t}.${i}`),
c = (0, o.A)(e, `ortb2Imp.${t}.${i}`);
(null == d && null == c) ||
(null == d
? (0, s.J)(e, `mediaTypes.${t}.${i}`, c)
: null == c
? (0, s.J)(e, `ortb2Imp.${t}.${i}`, d)
: ((0, r.JE)(
`adUnit ${e.code}: specifies conflicting ortb2Imp.${t}.${i} and mediaTypes.${t}.${i}, the latter will be ignored`,
e
),
(0, s.J)(e, `mediaTypes.${t}.${i}`, c)));
});
}
function X(e) {
const t = (0, r.Go)(e),
n = t.mediaTypes.banner,
i = null == n.sizes ? null : K(n.sizes),
o = e.ortb2Imp?.banner?.format ?? n?.format;
let a;
if (null != o) {
(0, s.J)(t, ‘ortb2Imp.banner.format’, o), (n.format = o);
try {
a = o
.filter(t => {
let { w: n, h: i, wratio: o, hratio: s } = t;
return null != (n ?? i) && null != (o ?? s)
? ((0, r.JE)(
‘Ad unit banner.format specifies both w/h and wratio/hratio’,
e
),
!1)
: (null != n && null != i) || (null != o && null != s);
})
.map(e => {
let { w: t, h: n, wratio: i, hratio: r } = e;
return [t ?? i, n ?? r];
});
} catch (t) {
(0, r.vV)(
`Invalid format definition on ad unit ${e.code}`,
o
);
}
null == a ||
null == i ||
(0, r.bD)(i, a) ||
(0, r.JE)(
`Ad unit ${e.code} has conflicting sizes and format definitions`,
e
);
}
const d = a ?? i ?? [],
c = e.ortb2Imp?.banner?.expdir ?? n.expdir;
return (
null != c &&
((n.expdir = c), (0, s.J)(t, ‘ortb2Imp.banner.expdir’, c)),
d.length > 0
? ((n.sizes = d), (t.sizes = d))
: ((0, r.vV)(
‘Detected a mediaTypes.banner object without a proper sizes field. Please ensure the sizes are listed like: [[300, 250], …]. Removing invalid mediaTypes.banner object from request.’
),
delete t.mediaTypes.banner),
Y(t, ‘banner’),
t
);
}
function Z(e) {
const t = (0, r.Go)(e),
n = t.mediaTypes.video;
if (n.playerSize) {
let e = ‘number’ == typeof n.playerSize[0] ? 2 : 1;
const i = K(n.playerSize, e);
i.length > 0
? (2 === e &&
(0, r.fH)(
“Transforming video.playerSize from [640,480] to [[640,480]] so it’s in the proper format.”
),
(n.playerSize = i),
(t.sizes = i))
: ((0, r.vV)(
‘Detected incorrect configuration of mediaTypes.video.playerSize. Please specify only one set of dimensions in a format like: [[640, 480]]. Removing invalid mediaTypes.video.playerSize property from request.’
),
delete t.mediaTypes.video.playerSize);
}
return (0, W.aP)(t), Y(t, ‘video’), t;
}
function ee(e) {
function t(t) {
return (
(0, r.vV)(
`Error in adUnit “${e.code}”: ${t}. Removing native request from ad unit`,
e
),
delete i.mediaTypes.native,
i
);
}
function n(e) {
for (const t of [‘sendTargetingKeys’, ‘types’])
if (o.hasOwnProperty(t)) {
const n = e(t);
if (n) return n;
}
}
const i = (0, r.Go)(e),
o = i.mediaTypes.native;
if (o.ortb) {
if (
o.ortb.assets?.some(
e => !(0, r.Et)(e.id) || e.id < 0 || e.id % 1 != 0
)
)
return t(‘native asset ID must be a nonnegative integer’);
if (n(e => t(`ORTB native requests cannot specify “${e}”`)))
return i;
const e = Object.keys(d.x5).filter(e =>
d.x5[e].includes(‘hb_native_’)
),
s = Object.keys(o).filter(t => e.includes(t));
s.length > 0 &&
((0, r.vV)(
`when using native OpenRTB format, you cannot use legacy native properties. Deleting ${s} keys from request.`
),
s.forEach(e => delete i.mediaTypes.native[e]));
} else
n(
e =>
`mediaTypes.native.${e} is deprecated, consider using native ORTB instead`
);
return (
o.image &&
o.image.sizes &&
!Array.isArray(o.image.sizes) &&
((0, r.vV)(
‘Please use an array of sizes for native.image.sizes field. Removing invalid mediaTypes.native.image.sizes property from request.’
),
delete i.mediaTypes.native.image.sizes),
o.image &&
o.image.aspect_ratios &&
!Array.isArray(o.image.aspect_ratios) &&
((0, r.vV)(
‘Please use an array of sizes for native.image.aspect_ratios field. Removing invalid mediaTypes.native.image.aspect_ratios property from request.’
),
delete i.mediaTypes.native.image.aspect_ratios),
o.icon &&
o.icon.sizes &&
!Array.isArray(o.icon.sizes) &&
((0, r.vV)(
‘Please use an array of sizes for native.icon.sizes field. Removing invalid mediaTypes.native.icon.sizes property from request.’
),
delete i.mediaTypes.native.icon.sizes),
i
);
}
function te(e, t) {
let n = e?.mediaTypes?.[t]?.pos;
if (!(0, r.Et)(n) || isNaN(n) || !isFinite(n)) {
let n = `Value of property ‘pos’ on ad unit ${e.code} should be of type: Number`;
(0, r.JE)(n), delete e.mediaTypes[t].pos;
}
return e;
}
function ne(e) {
const t = t => `adUnit.code ‘${e.code}’ ${t}`,
n = e.mediaTypes,
i = e.bids;
return null == i || (0, r.cy)(i)
? null == i && null == e.ortb2Imp
? ((0, r.vV)(
t(
“has no ‘adUnit.bids’ and no ‘adUnit.ortb2Imp’. Removing adUnit from auction”
)
),
null)
: n && 0 !== Object.keys(n).length
? (null == e.ortb2Imp ||
(null != i && 0 !== i.length) ||
((e.bids = [{ bidder: null }]),
(0, r.OG)(
t(
“defines ‘adUnit.ortb2Imp’ with no ‘adUnit.bids’; it will be seen only by S2S adapters”
)
)),
e)
: ((0, r.vV)(
t(
“does not define a ‘mediaTypes’ object. This is a required field for the auction, so this adUnit has been removed.”
)
),
null)
: ((0, r.vV)(
t(
“defines ‘adUnit.bids’ that is not an array. Removing adUnit from auction”
)
),
null);
}
!(function() {
let e = null;
try {
e = window.sessionStorage;
} catch (e) {}
if (null !== e) {
let t = U,
n = null;
try {
n = e.getItem(O);
} catch (e) {}
null !== n && t.enable();
}
})(),
(F.bidderSettings = F.bidderSettings || {}),
(F.libLoaded = !0),
(F.version = ‘v9.50.0’),
(0, r.fH)(‘Prebid.js v9.50.0 loaded’),
(F.installedModules = F.installedModules || []),
(F.adUnits = F.adUnits || []),
(F.triggerUserSyncs = H);
const ie = {
validateAdUnit: ne,
validateBannerMediaType: X,
validateSizes: K
};
Object.assign(ie, { validateNativeMediaType: ee }),
Object.assign(ie, { validateVideoMediaType: Z });
const re = (0, w.A_)(
‘sync’,
function(e) {
const t = [];
return (
e.forEach(e => {
if (null == (e = ne(e))) return;
const n = e.mediaTypes;
let i, r, o;
n.banner &&
((i = X(e)),
n.banner.hasOwnProperty(‘pos’) && (i = te(i, ‘banner’))),
n.video &&
((r = Z(i || e)),
n.video.hasOwnProperty(‘pos’) && (r = te(r, ‘video’))),
n.native && (o = ee(r || i || e));
const s = Object.assign({}, i, r, o);
t.push(s);
}),
t
);
},
‘checkAdUnitSetup’
);
function oe(e) {
const t = E.n[e]().filter(e =>
E.n.getAdUnitCodes().includes(e.adUnitCode)
),
n = E.n.getLastAuctionId();
return t
.map(e => e.adUnitCode)
.filter(r.hj)
.map(e =>
t.filter(t => t.auctionId === n && t.adUnitCode === e)
)
.filter(e => e && e[0] && e[0].adUnitCode)
.map(e => ({ [e[0].adUnitCode]: { bids: e } }))
.reduce((e, t) => Object.assign(e, t), {});
}
(F.getAdserverTargetingForAdUnitCodeStr = function(e) {
if (
((0, r.fH)(
‘Invoking tlpbjs.getAdserverTargetingForAdUnitCodeStr’,
arguments
),
e)
) {
var t = F.getAdserverTargetingForAdUnitCode(e);
return (0, r.$D)(t);
}
(0, r.OG)(
‘Need to call getAdserverTargetingForAdUnitCodeStr with adunitCode’
);
}),
(F.getHighestUnusedBidResponseForAdUnitCode = function(e) {
if (e) {
const t = E.n.getAllBidsForAdUnitCode(e).filter(A.Yl);
return t.length ? t.reduce(N.Vk) : {};
}
(0, r.OG)(
‘Need to call getHighestUnusedBidResponseForAdUnitCode with adunitCode’
);
}),
(F.getAdserverTargetingForAdUnitCode = function(e) {
return F.getAdserverTargeting(e)[e];
}),
(F.getAdserverTargeting = function(e) {
return (
(0, r.fH)(‘Invoking tlpbjs.getAdserverTargeting’, arguments),
A.iS.getAllTargeting(e)
);
}),
(F.getConsentMetadata = function() {
return (
(0, r.fH)(‘Invoking tlpbjs.getConsentMetadata’),
q.SL.getConsentMeta()
);
}),
(F.getNoBids = function() {
return (
(0, r.fH)(‘Invoking tlpbjs.getNoBids’, arguments),
oe(‘getNoBids’)
);
}),
(F.getNoBidsForAdUnitCode = function(e) {
return {
bids: E.n.getNoBids().filter(t => t.adUnitCode === e)
};
}),
(F.getBidResponses = function() {
return (
(0, r.fH)(‘Invoking tlpbjs.getBidResponses’, arguments),
oe(‘getBidsReceived’)
);
}),
(F.getBidResponsesForAdUnitCode = function(e) {
return {
bids: E.n.getBidsReceived().filter(t => t.adUnitCode === e)
};
}),
(F.setTargetingForGPTAsync = function(e, t) {
(0, r.fH)(‘Invoking tlpbjs.setTargetingForGPTAsync’, arguments),
(0, r.II)()
? A.iS.setTargetingForGPT(e, t)
: (0, r.vV)(‘window.googletag is not defined on the page’);
}),
(F.setTargetingForAst = function(e) {
(0, r.fH)(‘Invoking tlpbjs.setTargetingForAn’, arguments),
A.iS.isApntagDefined()
? (A.iS.setTargetingForAst(e),
$.Ic(J, A.iS.getAllTargeting()))
: (0, r.vV)(‘window.apntag is not defined on the page’);
}),
(F.renderAd = (0, w.A_)(‘async’, function(e, t, n) {
(0, r.fH)(‘Invoking tlpbjs.renderAd’, arguments),
(0, r.OG)(‘Calling renderAd with adId :’ + t),
(0, c.BS)(e, t, n);
})),
(F.removeAdUnit = function(e) {
if (((0, r.fH)(‘Invoking tlpbjs.removeAdUnit’, arguments), !e))
return void (F.adUnits = []);
let t;
(t = (0, r.cy)(e) ? e : [e]),
t.forEach(e => {
for (let t = F.adUnits.length – 1; t >= 0; t–)
F.adUnits[t].code === e && F.adUnits.splice(t, 1);
});
}),
(F.requestBids = (function() {
const e = (0, w.A_)(
‘async’,
function() {
let {
bidsBackHandler: e,
timeout: t,
adUnits: n,
adUnitCodes: i,
labels: o,
auctionId: s,
ttlBuffer: a,
ortb2: d,
metrics: c,
defer: l
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
$.Ic(z);
const u = t || v.$W.getConfig(‘bidderTimeout’);
(0, r.fH)(‘Invoking tlpbjs.requestBids’, arguments),
null == i || Array.isArray(i) || (i = [i]),
i && i.length
? (n = n.filter(e => i.includes(e.code)))
: (i = n && n.map(e => e.code)),
(i = i.filter(r.hj));
const f = {
global: (0, r.D9)(
{},
v.$W.getAnyConfig(‘ortb2’) || {},
d || {}
),
bidder: Object.fromEntries(
Object.entries(v.$W.getBidderConfig())
.map(e => {
let [t, n] = e;
return [t, (0, r.Go)(n.ortb2)];
})
.filter(e => {
let [t, n] = e;
return null != n;
})
)
};
return (0, x.w)(C.U9.resolve(f.global)).then(
t => (
(f.global = t),
se({
bidsBackHandler: e,
timeout: u,
adUnits: n,
adUnitCodes: i,
labels: o,
auctionId: s,
ttlBuffer: a,
ortb2Fragments: f,
metrics: c,
defer: l
})
)
);
},
‘requestBids’
);
return (0, w.Y6)(
e,
M(
() => !v.$W.getConfig(‘allowPrerendering’),
function() {
let t =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
n = t.adUnits || F.adUnits;
return (
(t.adUnits = (0, r.cy)(n) ? n.slice() : [n]),
(t.metrics = (0, j.K7)()),
t.metrics.checkpoint(‘requestBids’),
(t.defer = (0, C.v6)({
promiseFactory: e => new Promise(e)
})),
e.call(this, t),
t.defer.promise
);
}
)
);
})());
const se = (0, w.A_)(
‘async’,
function() {
let {
bidsBackHandler: e,
timeout: t,
adUnits: n,
ttlBuffer: i,
adUnitCodes: o,
labels: a,
auctionId: d,
ortb2Fragments: c,
metrics: l,
defer: u
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
const f = (0, _.pX)(v.$W.getConfig(‘s2sConfig’) || []);
function g(t, n, i) {
if (‘function’ == typeof e)
try {
e(t, n, i);
} catch (e) {
(0, r.vV)(‘Error executing bidsBackHandler’, null, e);
}
u.resolve({ bids: t, timedOut: n, auctionId: i });
}
!(function(e) {
e.forEach(e => (0, W.V0)(e));
})(n),
(n = (0, j.BO)(l).measureTime(‘requestBids.validate’, () =>
re(n)
));
const p = {};
if (
(n.forEach(e => {
const t = Object.keys(e.mediaTypes || { banner: ‘banner’ }),
n = e.bids.map(e => e.bidder),
o = _.Ay.bidderRegistry,
s = n.filter(e => !f.has(e));
e.adUnitId = (0, r.lk)();
const a = e.ortb2Imp?.ext?.tid;
a &&
(p.hasOwnProperty(e.code)
? (0, r.JE)(
`Multiple distinct ortb2Imp.ext.tid were provided for twin ad units ‘${e.code}’`
)
: (p[e.code] = a)),
null == i ||
e.hasOwnProperty(‘ttlBuffer’) ||
(e.ttlBuffer = i),
s.forEach(n => {
const i = o[n],
s = i && i.getSpec && i.getSpec(),
a = (s && s.supportedMediaTypes) || [‘banner’];
t.some(e => a.includes(e)) ||
((0, r.JE)((0, r.bz)(e, n)),
(e.bids = e.bids.filter(e => e.bidder !== n)));
});
}),
n && 0 !== n.length)
) {
n.forEach(e => {
const t = e.ortb2Imp?.ext?.tid || p[e.code] || (0, r.lk)();
p.hasOwnProperty(e.code) || (p[e.code] = t),
(e.transactionId = t),
(0, s.J)(e, ‘ortb2Imp.ext.tid’, t);
});
const e = E.n.createAuction({
adUnits: n,
adUnitCodes: o,
callback: g,
cbTimeout: t,
labels: a,
auctionId: d,
ortb2Fragments: c,
metrics: l
});
let i = n.length;
i > 15 &&
(0, r.fH)(
`Current auction ${e.getAuctionId()} contains ${i} adUnits.`,
n
),
o.forEach(t =>
A.iS.setLatestAuctionForAdUnit(t, e.getAuctionId())
),
e.callBids();
} else
(0, r.OG)(‘No adUnits configured. No bids requested.’), g();
},
‘startAuction’
);
F.requestBids.before(function(e, t) {
function n(e) {
for (var t; (t = e.shift()); ) t();
}
n(D.s0), n(ae), e.call(this, t);
}, 49),
(F.addAdUnits = function(e) {
(0, r.fH)(‘Invoking tlpbjs.addAdUnits’, arguments),
F.adUnits.push.apply(F.adUnits, (0, r.cy)(e) ? e : [e]),
$.Ic(L);
}),
(F.onEvent = function(e, t, n) {
(0, r.fH)(‘Invoking tlpbjs.onEvent’, arguments),
(0, r.fp)(t)
? !n || Q[e].call(null, n)
? $.on(e, t, n)
: (0, r.vV)(
‘The id provided is not valid for event “‘ +
e +
‘” and no handler was set.’
)
: (0, r.vV)(
‘The event handler provided is not a function and was not set on event “‘ +
e +
‘”.’
);
}),
(F.offEvent = function(e, t, n) {
(0, r.fH)(‘Invoking tlpbjs.offEvent’, arguments),
(n && !Q[e].call(null, n)) || $.AU(e, t, n);
}),
(F.getEvents = function() {
return (0, r.fH)(‘Invoking tlpbjs.getEvents’), $.kQ();
}),
(F.registerBidAdapter = function(e, t, n) {
(0, r.fH)(‘Invoking tlpbjs.registerBidAdapter’, arguments);
try {
const i = n ? (0, G.xb)(n) : e();
_.Ay.registerBidAdapter(i, t);
} catch (e) {
(0, r.vV)(‘Error registering bidder adapter : ‘ + e.message);
}
}),
(F.registerAnalyticsAdapter = function(e) {
(0, r.fH)(
‘Invoking tlpbjs.registerAnalyticsAdapter’,
arguments
);
try {
_.Ay.registerAnalyticsAdapter(e);
} catch (e) {
(0, r.vV)(
‘Error registering analytics adapter : ‘ + e.message
);
}
}),
(F.createBid = function(e) {
return (
(0, r.fH)(‘Invoking tlpbjs.createBid’, arguments), (0, I.O)(e)
);
});
const ae = [],
de = (0, w.A_)(
‘async’,
function(e) {
e && !(0, r.Im)(e)
? ((0, r.fH)(‘Invoking tlpbjs.enableAnalytics for: ‘, e),
_.Ay.enableAnalytics(e))
: (0, r.vV)(
‘tlpbjs.enableAnalytics should be called with option {}’
);
},
‘enableAnalyticsCb’
);
function ce(e) {
if (‘function’ == typeof e)
try {
e.call();
} catch (e) {
(0, r.vV)(‘Error processing command :’, e.message, e.stack);
}
else
(0, r.vV)(
‘Commands written into tlpbjs.cmd.push must be wrapped in a function’
);
}
function le(e) {
e.forEach(function(e) {
if (void 0 === e.called)
try {
e.call(), (e.called = !0);
} catch (e) {
(0, r.vV)(‘Error processing command :’, ‘prebid.js’, e);
}
});
}
(F.enableAnalytics = function(e) {
ae.push(de.bind(this, e));
}),
(F.aliasBidder = function(e, t, n) {
(0, r.fH)(‘Invoking tlpbjs.aliasBidder’, arguments),
e && t
? _.Ay.aliasBidAdapter(e, t, n)
: (0, r.vV)(
‘bidderCode and alias must be passed as arguments’,
‘tlpbjs.aliasBidder’
);
}),
(F.aliasRegistry = _.Ay.aliasRegistry),
v.$W.getConfig(‘aliasRegistry’, e => {
‘private’ === e.aliasRegistry && delete F.aliasRegistry;
}),
(F.getAllWinningBids = function() {
return E.n.getAllWinningBids();
}),
(F.getAllPrebidWinningBids = function() {
return (
(0, r.JE)(
‘getAllPrebidWinningBids may be removed or renamed in a future version. This function returns bids that have won in prebid and have had targeting set but have not (yet?) won in the ad server. It excludes bids that have been rendered.’
),
E.n
.getBidsReceived()
.filter(e => e.status === d.tl.BID_TARGETING_SET)
);
}),
(F.getHighestCpmBids = function(e) {
return A.iS.getWinningBids(e);
}),
(F.clearAllAuctions = function() {
E.n.clearAllAuctions();
}),
(F.markWinningBidAsUsed = function(e) {
let t,
{
adId: n,
adUnitCode: i,
analytics: o = !1,
events: s = !1
} = e;
i && null == n
? (t = A.iS.getWinningBids(i))
: n
? (t = E.n.getBidsReceived().filter(e => e.adId === n))
: (0, r.JE)(
‘Improper use of markWinningBidAsUsed. It needs an adUnitCode or an adId to function.’
),
t.length > 0 &&
(o || s ? (0, c.n6)(t[0]) : E.n.addWinningBid(t[0]),
(0, c.qn)(t[0]));
}),
(F.getConfig = v.$W.getAnyConfig),
(F.readConfig = v.$W.readAnyConfig),
(F.mergeConfig = v.$W.mergeConfig),
(F.mergeBidderConfig = v.$W.mergeBidderConfig),
(F.setConfig = v.$W.setConfig),
(F.setBidderConfig = v.$W.setBidderConfig),
F.que.push(() => m()),
(F.processQueue = M(
() => (0, i.m)().delayPrerendering,
function() {
(F.que.push = F.cmd.push = ce),
(0, c.XO)(),
w.A_.ready(),
le(F.que),
le(F.cmd);
}
)),
(F.triggerBilling = e => {
let { adId: t, adUnitCode: n } = e;
E.n
.getAllWinningBids()
.filter(
e => e.adId === t || (null == t && e.adUnitCode === n)
)
.forEach(e => {
_.Ay.triggerBilling(e), (0, c.vB)(e);
});
});
},
7873: (e, t, n) => {
n.d(t, { E: () => s, m: () => o });
const i = window,
r = (i.tlpbjs = i.tlpbjs || {});
function o() {
return r;
}
function s(e) {
r.installedModules.push(e);
}
(r.cmd = r.cmd || []),
(r.que = r.que || []),
i === window &&
((i._pbjsGlobals = i._pbjsGlobals || []),
i._pbjsGlobals.push(‘tlpbjs’));
},
7934: (e, t, n) => {
n.d(t, { EN: () => d, gR: () => s });
var i = n(3272),
r = n(1069);
function o(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: window;
if (!e) return e;
if (/w+:///.exec(e)) return e;
let n = t.location.protocol;
try {
n = t.top.location.protocol;
} catch (e) {}
return /^///.exec(e) ? n + e : `${n}//${e}`;
}
function s(e) {
let { noLeadingWww: t = !1, noPort: n = !1 } =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
try {
e = new URL(o(e));
} catch (e) {
return;
}
return (
(e = n ? e.hostname : e.host),
t && e.startsWith(‘www.’) && (e = e.substring(4)),
e
);
}
function a(e) {
try {
const t = e.querySelector(“link[rel=’canonical’]”);
if (null !== t) return t.href;
} catch (e) {}
return null;
}
const d = (function(e) {
let t,
n,
i,
r =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: window;
return r.top !== r
? e
: function() {
const o = a(r.document),
s = r.location.href;
return (
(t === o && s === n) || ((t = o), (n = s), (i = e())), i
);
};
})(
((c = window),
function() {
const e = [],
t = (function(e) {
try {
if (!e.location.ancestorOrigins) return;
return e.location.ancestorOrigins;
} catch (e) {}
})(c),
n = i.$W.getConfig(‘maxNestedIframes’);
let d,
l,
u,
f,
g = !1,
p = 0,
h = !1,
m = !1,
b = !1;
do {
const n = d,
i = m;
let o,
s = !1,
f = null;
(m = !1), (d = d ? d.parent : c);
try {
o = d.location.href || null;
} catch (e) {
s = !0;
}
if (s)
if (i) {
const e = n.context;
try {
(f = e.sourceUrl),
(l = f),
(b = !0),
(h = !0),
d === c.top && (g = !0),
e.canonicalUrl && (u = e.canonicalUrl);
} catch (e) {}
} else {
(0, r.JE)(
‘Trying to access cross domain iframe. Continuing without referrer and location’
);
try {
const e = n.document.referrer;
e && ((f = e), d === c.top && (g = !0));
} catch (e) {}
!f &&
t &&
t[p – 1] &&
((f = t[p – 1]), d === c.top && (b = !0)),
f && !h && (l = f);
}
else {
if (o && ((f = o), (l = f), (h = !1), d === c.top)) {
g = !0;
const e = a(d.document);
e && (u = e);
}
d.context && d.context.sourceUrl && (m = !0);
}
e.push(f), p++;
} while (d !== c.top && p < n);
e.reverse();
try {
f = c.top.document.referrer;
} catch (e) {}
const y = g || b ? l : null,
v = i.$W.getConfig(‘pageUrl’) || u || null;
let E = i.$W.getConfig(‘pageUrl’) || y || o(v, c);
return (
y &&
y.indexOf(‘?’) > -1 &&
-1 === E.indexOf(‘?’) &&
(E = `${E}${y.substring(y.indexOf(‘?’))}`),
{
reachedTop: g,
isAmp: h,
numIframes: p – 1,
stack: e,
topmostLocation: l || null,
location: y,
canonicalUrl: v,
page: E,
domain: s(E) || null,
ref: f || null,
legacy: {
reachedTop: g,
isAmp: h,
numIframes: p – 1,
stack: e,
referer: l || null,
canonicalUrl: v
}
}
);
})
);
var c;
},
2938: (e, t, n) => {
n.d(t, {
CK: () => b,
X0: () => g,
qk: () => f,
s0: () => p,
vM: () => m
});
var i = n(1069),
r = n(2693),
o = n(5569),
s = n(5139),
a = n(2604),
d = n(6811),
c = n(3272),
l = n(1445),
u = n(3441);
const f = ‘html5’,
g = ‘cookie’;
let p = [];
function h() {
let { moduleName: e, moduleType: t } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
{ isAllowed: n = s.io } =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
function r(i, r) {
let s = e;
const f = c.$W.getCurrentBidder();
f && t === o.tW && l.Ay.aliasRegistry[f] === e && (s = f);
return i({ valid: n(d.Ue, (0, u.s)(t, s, { [a.Zw]: r })) });
}
function h(e, t, n) {
if (!n || ‘function’ != typeof n) return r(e, t);
p.push(function() {
let i = r(e, t);
n(i);
});
}
function m(e) {
const t = e.charAt(0).toUpperCase() + e.substring(1),
n = () => window[e],
r = function(t) {
return h(
function(t) {
if (t && t.valid)
try {
return !!n();
} catch (t) {
(0, i.vV)(`${e} api disabled`);
}
return !1;
},
f,
t
);
};
return {
[`has${t}`]: r,
[`${e}IsEnabled`]: e =>
h(
function(e) {
if (e && e.valid)
try {
return (
n().setItem(‘prebid.cookieTest’, ‘1’),
‘1’ === n().getItem(‘prebid.cookieTest’)
);
} catch (e) {
} finally {
try {
n().removeItem(‘prebid.cookieTest’);
} catch (e) {}
}
return !1;
},
f,
e
),
[`setDataIn${t}`]: (e, t, i) =>
h(
function(i) {
i && i.valid && r() && n().setItem(e, t);
},
f,
i
),
[`getDataFrom${t}`]: (e, t) =>
h(
function(t) {
return t && t.valid && r() ? n().getItem(e) : null;
},
f,
t
),
[`removeDataFrom${t}`]: (e, t) =>
h(
function(t) {
t && t.valid && r() && n().removeItem(e);
},
f,
t
)
};
}
return {
setCookie: function(e, t, n, i, r, o) {
return h(
function(o) {
if (o && o.valid) {
const o =
r && ” !== r
? ` ;domain=${encodeURIComponent(r)}`
: ”,
s = n && ” !== n ? ` ;expires=${n}` : ”,
a =
null != i && ‘none’ == i.toLowerCase()
? ‘; Secure’
: ”;
document.cookie = `${e}=${encodeURIComponent(
t
)}${s}; path=/${o}${i ? `; SameSite=${i}` : ”}${a}`;
}
},
g,
o
);
},
getCookie: function(e, t) {
return h(
function(t) {
if (t && t.valid) {
let t = window.document.cookie.match(
‘(^|;)\s*’ + e + ‘\s*=\s*([^;]*)\s*(;|$)’
);
return t ? decodeURIComponent(t[2]) : null;
}
return null;
},
g,
t
);
},
cookiesAreEnabled: function(e) {
return h(
function(e) {
return !(!e || !e.valid) && (0, i.GE)();
},
g,
e
);
},
…m(‘localStorage’),
…m(‘sessionStorage’),
findSimilarCookies: function(e, t) {
return h(
function(t) {
if (t && t.valid) {
const t = [];
if ((0, i.N9)()) {
const n = document.cookie.split(‘;’);
for (; n.length; ) {
const i = n.pop();
let r = i.indexOf(‘=’);
r = r < 0 ? i.length : r;
decodeURIComponent(
i.slice(0, r).replace(/^s+/, ”)
).indexOf(e) >= 0 &&
t.push(decodeURIComponent(i.slice(r + 1)));
}
}
return t;
}
},
g,
t
);
}
};
}
function m() {
let { moduleType: e, moduleName: t, bidderCode: n } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
function i() {
throw new Error(
‘Invalid invocation for getStorageManager: must set either bidderCode, or moduleType + moduleName’
);
}
return (
n
? (((e && e !== o.tW) || t) && i(), (e = o.tW), (t = n))
: (t && e) || i(),
h({ moduleType: e, moduleName: t })
);
}
function b(e) {
return h({ moduleName: e, moduleType: o.tp });
}
(0, s.qB)(d.Ue, ‘deviceAccess config’, function() {
if (!(0, i.N9)()) return { allow: !1 };
}),
(0, s.qB)(d.Ue, ‘bidderSettings.*.storageAllowed’, function(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: r.u;
if (e[a.Dk] !== o.tW) return;
let n = t.get(e[a.q7], ‘storageAllowed’);
if (n && !0 !== n) {
const t = e[a.Zw];
n = Array.isArray(n) ? n.some(e => e === t) : n === t;
} else n = !!n;
return n ? void 0 : { allow: n };
});
},
7779: (e, t, n) => {
n.d(t, { Yl: () => w, iS: () => B, uW: () => A });
var i = n(6881),
r = n(7863),
o = n(2693),
s = n(3272),
a = n(8969),
d = n(5023),
c = n(9214),
l = n(1371),
u = n(2449),
f = n(1069),
g = n(433),
p = n(2713),
h = [];
const m = 20,
b = ‘targetingControls.allowTargetingKeys’,
y = ‘targetingControls.addTargetingKeys’,
v = `Only one of “${b}” or “${y}” can be set`,
E = Object.keys(a.xS).map(e => a.xS[e]);
let A = {
isActualBid: e => e.getStatusCode() === a.XQ.GOOD,
isBidNotExpired: e =>
e.responseTimestamp + 1e3 * (0, r.cT)(e) > (0, f.vE)(),
isUnusedBid: e =>
e &&
((e.status && ![a.tl.RENDERED].includes(e.status)) || !e.status)
};
function w(e) {
return !Object.values(A).some(t => !t(e));
}
const I = (0, c.A_)(‘sync’, function(e, t) {
let n =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: 0,
i =
arguments.length > 3 &&
void 0 !== arguments[3] &&
arguments[3],
r =
arguments.length > 4 && void 0 !== arguments[4]
? arguments[4]
: f.Q0;
if (!i) {
const i = [],
o = s.$W.getConfig(‘sendBidsControl.dealPrioritization’);
let a = (0, f.$z)(e, ‘adUnitCode’);
return (
Object.keys(a).forEach(e => {
let s = [],
d = (0, f.$z)(a[e], ‘bidderCode’);
Object.keys(d).forEach(e => {
s.push(d[e].reduce(t));
}),
n
? ((s = o
? s.sort(T(!0))
: s.sort((e, t) => t.cpm – e.cpm)),
i.push(…s.slice(0, n)))
: ((s = s.sort(r)), i.push(…s));
}),
i
);
}
return e;
});
function T() {
let e =
arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
return function(t, n) {
return void 0 !== t.adserverTargeting.hb_deal &&
void 0 === n.adserverTargeting.hb_deal
? -1
: void 0 === t.adserverTargeting.hb_deal &&
void 0 !== n.adserverTargeting.hb_deal
? 1
: e
? n.cpm – t.cpm
: n.adserverTargeting.hb_pb – t.adserverTargeting.hb_pb;
};
}
function C(e, t) {
return (arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: () => window.googletag.pubads().getSlots())().reduce(
(e, n) => {
const i = (0, f.fp)(t) && t(n);
return (
Object.keys(e)
.filter((0, f.fp)(i) ? i : (0, f.iC)(n))
.forEach(t => e[t].push(n)),
e
);
},
Object.fromEntries(e.map(e => [e, []]))
);
}
const B = (function(e) {
let t = {},
n = {};
function i(e) {
let t =
arguments.length > 1 &&
void 0 !== arguments[1] &&
arguments[1],
n =
arguments.length > 2 &&
void 0 !== arguments[2] &&
arguments[2];
const i = E.concat(u.Nh),
r = s.$W.getConfig(
‘targetingControls.allowSendAllBidsTargetingKeys’
),
o = r ? r.map(e => a.xS[e]) : i;
return e.reduce((e, r) => {
if (t || (n && r.dealId)) {
const t = (function(e, t) {
return t.reduce(
(t, n) => (
e.adserverTargeting[n] &&
t.push({
[`${n}_${e.bidderCode}`.substring(0, 20)]: [
e.adserverTargeting[n]
]
}),
t
),
[]
);
})(
r,
i.filter(
e =>
void 0 !== r.adserverTargeting[e] &&
(n || -1 !== o.indexOf(e))
)
);
t && e.push({ [r.adUnitCode]: t });
}
return e;
}, []);
}
function r(t) {
return ‘string’ == typeof t
? [t]
: (0, f.cy)(t)
? t
: e.getAdUnitCodes() || [];
}
function A() {
let t =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: p.Bq,
i =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: void 0,
r = e.getBidsReceived().reduce((e, t) => {
const i = s.$W.getConfig(‘useBidCache’),
r = s.$W.getConfig(‘bidCacheFilterFunction’),
o = n[t.adUnitCode] === t.auctionId,
a = !(i && !o && ‘function’ == typeof r) || !!r(t);
return (
(i || o) &&
a &&
(0, g.A)(t, ‘video.context’) !== l.LM &&
w(t) &&
((t.latestTargetedAuctionId = n[t.adUnitCode]),
e.push(t)),
e
);
}, []);
return I(r, t, void 0, void 0, void 0, i);
}
function B(e, n) {
let i = t.getWinningBids(n, e),
r = O();
return (
(i = i.map(e => ({
[e.adUnitCode]: Object.keys(e.adserverTargeting)
.filter(
t =>
void 0 === e.sendStandardTargeting ||
e.sendStandardTargeting ||
-1 === r.indexOf(t)
)
.reduce((t, n) => {
const i = [e.adserverTargeting[n]],
r = { [n.substring(0, m)]: i };
if (n === a.xS.DEAL) {
const o = `${n}_${e.bidderCode}`.substring(0, m),
s = { [o]: i };
return […t, r, s];
}
return […t, r];
}, [])
}))),
i
);
}
function O() {
return e
.getStandardBidderAdServerTargeting()
.map(e => e.key)
.concat(E)
.filter(f.hj);
}
return (
(t.setLatestAuctionForAdUnit = function(e, t) {
n[e] = t;
}),
(t.resetPresetTargeting = function(e, t) {
if ((0, f.II)()) {
const n = r(e);
Object.values(C(n, t)).forEach(e => {
e.forEach(e => {
!(function(e) {
h.forEach(t => {
e.getTargeting(t) && e.clearTargeting(t);
});
})(e);
});
});
}
}),
(t.resetPresetTargetingAST = function(e) {
r(e).forEach(function(e) {
const t = window.apntag.getTag(e);
if (t && t.keywords) {
const n = Object.keys(t.keywords),
i = {};
n.forEach(e => {
h.includes(e.toLowerCase()) || (i[e] = t.keywords[e]);
}),
window.apntag.modifyTag(e, { keywords: i });
}
});
}),
(t.getAllTargeting = function(t, n, d) {
let c =
arguments.length > 3 && void 0 !== arguments[3]
? arguments[3]
: p.Vk,
l =
arguments.length > 4 && void 0 !== arguments[4]
? arguments[4]
: f.Q0;
d ||= A(c, l);
const g = r(t),
E = s.$W.getConfig(‘enableSendAllBids’),
w = s.$W.getConfig(‘sendBidsControl.bidLimit’),
C = (E && (n || w)) || 0,
{ customKeysByUnit: R, filteredBids: S } = (function(e, t) {
const n = [],
i = {},
r = s.$W.getConfig(
‘targetingControls.alwaysIncludeDeals’
);
return (
t.forEach(t => {
const s = e.includes(t.adUnitCode),
a =
!0 === o.u.get(t.bidderCode, ‘allowZeroCpmBids’)
? t.cpm >= 0
: t.cpm > 0,
d = r && t.dealId;
s &&
(d || a) &&
(n.push(t),
Object.keys(t.adserverTargeting)
.filter(
(function() {
let e = O();
e = e.concat(u.Nh);
return function(t) {
return -1 === e.indexOf(t);
};
})()
)
.forEach(e => {
const n = e.substring(0, m),
r = i[t.adUnitCode] || {},
o = [t.adserverTargeting[e]];
r[n]
? (r[n] = r[n].concat(o).filter(f.hj))
: (r[n] = o),
(i[t.adUnitCode] = r);
}));
}),
{ filteredBids: n, customKeysByUnit: i }
);
})(g, d);
let k = (function(t, n, r) {
const o =
!1 !==
s.$W.getConfig(
‘targetingControls.allBidsCustomTargeting’
),
d = B(t, r)
.concat(
(function(e) {
const t = s.$W.getConfig(
‘targetingControls.alwaysIncludeDeals’
);
return i(e, s.$W.getConfig(‘enableSendAllBids’), t);
})(t)
)
.concat(
(function(t) {
function n(e) {
return e?.[a.iD.ADSERVER_TARGETING];
}
function i(e) {
const t = n(e);
return Object.keys(t).map(function(e) {
return (
(0, f.O8)(t[e]) &&
(t[e] = t[e].split(‘,’).map(e => e.trim())),
(0, f.cy)(t[e]) || (t[e] = [t[e]]),
{ [e]: t[e] }
);
});
}
return e
.getAdUnits()
.filter(e => t.includes(e.code) && n(e))
.reduce((e, t) => {
const n = i(t);
return n && e.push({ [t.code]: n }), e;
}, []);
})(r)
);
o &&
d.push(
…(function(e, t) {
return e.reduce((e, n) => {
const i = Object.assign({}, n),
r = t[i.adUnitCode],
o = [];
return (
r &&
Object.keys(r).forEach(e => {
e && r[e] && o.push({ [e]: r[e] });
}),
e.push({ [i.adUnitCode]: o }),
e
);
}, []);
})(t, n)
);
return (
d.forEach(e => {
!(function(e) {
Object.keys(e).forEach(t => {
e[t].forEach(e => {
const t = Object.keys(e);
-1 === h.indexOf(t[0]) && (h = t.concat(h));
});
});
})(e);
}),
d
);
})(I(S, c, C, void 0, l), R, g);
const U = Object.keys(Object.assign({}, a.Zh, a.x5));
let D = s.$W.getConfig(b);
const _ = s.$W.getConfig(y);
if (null != _ && null != D) throw new Error(v);
(D = null != _ ? U.concat(_) : D || U),
Array.isArray(D) &&
D.length > 0 &&
(k = (function(e, t) {
const n = Object.assign({}, a.xS, a.x5),
i = Object.keys(n),
r = {};
(0, f.fH)(
`allowTargetingKeys – allowed keys [ ${t
.map(e => n[e])
.join(‘, ‘)} ]`
),
e.map(e => {
const o = Object.keys(e)[0],
s = e[o].filter(e => {
const o = Object.keys(e)[0],
s =
0 ===
i.filter(e => 0 === o.indexOf(n[e]))
.length ||
t.find(e => {
const t = n[e];
return 0 === o.indexOf(t);
});
return (r[o] = !s), s;
});
e[o] = s;
});
const o = Object.keys(r).filter(e => r[e]);
return (
(0, f.fH)(
`allowTargetingKeys – removed keys [ ${o.join(
‘, ‘
)} ]`
),
e.filter(e => e[Object.keys(e)[0]].length > 0)
);
})(k, D)),
(k = (function(e) {
let t = e.map(e => ({
[Object.keys(e)[0]]: e[Object.keys(e)[0]]
.map(e => ({
[Object.keys(e)[0]]: e[Object.keys(e)[0]].join(‘,’)
}))
.reduce((e, t) => Object.assign(t, e), {})
}));
return (
(t = t.reduce(function(e, t) {
var n = Object.keys(t)[0];
return (e[n] = Object.assign({}, e[n], t[n])), e;
}, {})),
t
);
})(k));
const $ = s.$W.getConfig(
‘targetingControls.auctionKeyMaxChars’
);
return (
$ &&
((0, f.fH)(
`Detected ‘targetingControls.auctionKeyMaxChars’ was active for this auction; set with a limit of ${$} characters. Running checks on auction keys…`
),
(k = (function(e, t) {
let n = (0, f.Go)(e),
i = Object.keys(n)
.map(e => ({
adUnitCode: e,
adserverTargeting: n[e]
}))
.sort(T());
return i.reduce(function(e, i, r, o) {
let s =
((a = i.adserverTargeting),
Object.keys(a).reduce(function(e, t) {
return (
e + `${t}%3d${encodeURIComponent(a[t])}%26`
);
}, ”));
var a;
r + 1 === o.length && (s = s.slice(0, -3));
let d = i.adUnitCode,
c = s.length;
return (
c <= t
? ((t -= c),
(0, f.fH)(
`AdUnit ‘${d}’ auction keys comprised of ${c} characters. Deducted from running threshold; new limit is ${t}`,
n[d]
),
(e[d] = n[d]))
: (0, f.JE)(
`The following keys for adUnitCode ‘${d}’ exceeded the current limit of the ‘auctionKeyMaxChars’ setting.nThe key-set size was ${c}, the current allotted amount was ${t}.n`,
n[d]
),
r + 1 === o.length &&
0 === Object.keys(e).length &&
(0, f.vV)(
‘No auction targeting keys were permitted due to the setting in setConfig(targetingControls.auctionKeyMaxChars). Please review setup and consider adjusting.’
),
e
);
}, {});
})(k, $))),
g.forEach(e => {
k[e] || (k[e] = {});
}),
k
);
}),
s.$W.getConfig(‘targetingControls’, function(e) {
null != (0, g.A)(e, b) &&
null != (0, g.A)(e, y) &&
(0, f.vV)(v);
}),
(t.setTargetingForGPT = (0, c.A_)(
‘sync’,
function(n, i) {
let r = t.getAllTargeting(n),
o = Object.fromEntries(h.map(e => [e, null]));
Object.entries(C(Object.keys(r), i)).forEach(e => {
let [t, n] = e;
n.length > 1 &&
(0, f.JE)(
`Multiple slots found matching: ${t}. Targeting will be set on all matching slots, which can lead to duplicate impressions if more than one are requested from GAM. To resolve this, ensure the arguments to setTargetingForGPTAsync resolve to a single slot by explicitly matching the desired slotElementID.`
),
n.forEach(e => {
Object.keys(r[t]).forEach(e => {
let n = r[t][e];
‘string’ == typeof n &&
-1 !== n.indexOf(‘,’) &&
(n = n.split(‘,’)),
(r[t][e] = n);
}),
(0, f.OG)(
`Attempting to set targeting-map for slot: ${e.getSlotElementId()} with targeting-map:`,
r[t]
),
e.updateTargetingFromMap(
Object.assign({}, o, r[t])
);
});
}),
Object.keys(r).forEach(t => {
Object.keys(r[t]).forEach(n => {
‘hb_adid’ === n &&
e.setStatusForBids(r[t][n], a.tl.BID_TARGETING_SET);
});
}),
t.targetingDone(r),
d.Ic(a.qY.SET_TARGETING, r);
},
‘setTargetingForGPT’
)),
(t.targetingDone = (0, c.A_)(
‘sync’,
function(e) {
return e;
},
‘targetingDone’
)),
(t.getWinningBids = function(e, t) {
let n =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: p.Vk,
i =
arguments.length > 3 && void 0 !== arguments[3]
? arguments[3]
: f.Q0;
const s = t || A(n, i),
a = r(e);
return s
.filter(e => a.includes(e.adUnitCode))
.filter(e =>
!0 === o.u.get(e.bidderCode, ‘allowZeroCpmBids’)
? e.cpm >= 0
: e.cpm > 0
)
.map(e => e.adUnitCode)
.filter(f.hj)
.map(e =>
s
.filter(t => (t.adUnitCode === e ? t : null))
.reduce(p.Vk)
);
}),
(t.setTargetingForAst = function(e) {
let n = t.getAllTargeting(e);
try {
t.resetPresetTargetingAST(e);
} catch (e) {
(0, f.vV)(‘unable to reset targeting for AST’ + e);
}
Object.keys(n).forEach(e =>
Object.keys(n[e]).forEach(t => {
if (
((0, f.OG)(
`Attempting to set targeting for targetId: ${e} key: ${t} value: ${n[e][t]}`
),
(0, f.O8)(n[e][t]) || (0, f.cy)(n[e][t]))
) {
let i = {},
r = /pt[0-9]/;
t.search(r) < 0
? (i[t.toUpperCase()] = n[e][t])
: (i[t] = n[e][t]),
window.apntag.setKeywords(e, i, {
overrideKeyValue: !0
});
}
})
);
}),
(t.isApntagDefined = function() {
if (window.apntag && (0, f.fp)(window.apntag.setKeywords))
return !0;
}),
t
);
})(i.n);
},
8230: (e, t, n) => {
n.d(t, { qh: () => u, zt: () => g });
var i = n(1069),
r = n(3272),
o = n(2938),
s = n(5139),
a = n(6811),
d = n(2604),
c = n(5569),
l = n(3441);
const u = {
syncEnabled: !0,
filterSettings: { image: { bidders: ‘*’, filter: ‘include’ } },
syncsPerBidder: 5,
syncDelay: 3e3,
auctionDelay: 500
};
r.$W.setDefaults({ userSync: (0, i.Go)(u) });
const f = (0, o.CK)(‘usersync’);
const g = (function(e) {
let t = {},
n = { image: [], iframe: [] },
o = new Set(),
s = {},
u = { image: !0, iframe: !1 },
f = e.config;
function g() {
if (f.syncEnabled && e.browserSupportsCookies) {
try {
!(function() {
if (!u.iframe) return;
p(n.iframe, e => {
let [t, r] = e;
(0, i.OG)(`Invoking iframe user sync for bidder: ${t}`),
(0, i.SG)(r),
(function(e, t) {
e.image = e.image.filter(e => e[0] !== t);
})(n, t);
});
})(),
(function() {
if (!u.image) return;
p(n.image, e => {
let [t, n] = e;
(0, i.OG)(
`Invoking image pixel user sync for bidder: ${t}`
),
(0, i.z$)(n);
});
})();
} catch (e) {
return (0, i.vV)(‘Error firing user syncs’, e);
}
n = { image: [], iframe: [] };
}
}
function p(e, t) {
(0, i.k4)(e).forEach(t);
}
function h(e, t) {
let n = f.filterSettings;
if (
(function(e, t) {
if (e.all && e[t])
return (
(0, i.JE)(
`Detected presence of the “filterSettings.all” and “filterSettings.${t}” in userSync config. You cannot mix “all” with “iframe/image” configs; they are mutually exclusive.`
),
!1
);
let n = e.all ? e.all : e[t],
r = e.all ? ‘all’ : t;
if (!n) return !1;
let o = n.filter,
s = n.bidders;
if (o && ‘include’ !== o && ‘exclude’ !== o)
return (
(0, i.JE)(
`UserSync “filterSettings.${r}.filter” setting ‘${o}’ is not a valid option; use either ‘include’ or ‘exclude’.`
),
!1
);
if (
‘*’ !== s &&
!(
Array.isArray(s) &&
s.length > 0 &&
s.every(e => (0, i.O8)(e) && ‘*’ !== e)
)
)
return (
(0, i.JE)(
`Detected an invalid setup in userSync “filterSettings.${r}.bidders”; use either ‘*’ (to represent all bidders) or an array of bidders.`
),
!1
);
return !0;
})(n, e)
) {
u[e] = !0;
let i = n.all ? n.all : n[e],
r = ‘*’ === i.bidders ? [t] : i.bidders;
const o = {
include: (e, t) => !e.includes(t),
exclude: (e, t) => e.includes(t)
};
return o[i.filter || ‘include’](r, t);
}
return !u[e];
}
return (
r.$W.getConfig(‘userSync’, e => {
if (e.userSync) {
let t = e.userSync.filterSettings;
(0, i.Qd)(t) &&
(t.image ||
t.all ||
(e.userSync.filterSettings.image = {
bidders: ‘*’,
filter: ‘include’
}));
}
f = Object.assign(f, e.userSync);
}),
e.regRule(a.Ml, ‘userSync config’, e => {
if (!f.syncEnabled)
return { allow: !1, reason: ‘syncs are disabled’ };
if (e[d.Dk] === c.tW) {
const n = e[d.bt],
i = e[d.iK];
if (!t.canBidderRegisterSync(n, i))
return {
allow: !1,
reason: `${n} syncs are not enabled for ${i}`
};
}
}),
(t.registerSync = (t, r, u) =>
o.has(r)
? (0, i.OG)(
`already fired syncs for “${r}”, ignoring registerSync call`
)
: f.syncEnabled && (0, i.cy)(n[t])
? r
? 0 !== f.syncsPerBidder &&
Number(s[r]) >= f.syncsPerBidder
? (0, i.JE)(`Number of user syncs exceeded for “${r}”`)
: void (
e.isAllowed(
a.Ml,
(0, l.s)(c.tW, r, { [d.bt]: t, [d.e3]: u })
) &&
(n[t].push([r, u]),
(s = (function(e, t) {
return e[t] ? (e[t] += 1) : (e[t] = 1), e;
})(s, r)))
)
: (0, i.JE)(‘Bidder is required for registering sync’)
: (0, i.JE)(`User sync type “${t}” not supported`)),
(t.bidderDone = o.add.bind(o)),
(t.syncUsers = function() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: 0;
if (e) return setTimeout(g, Number(e));
g();
}),
(t.triggerUserSyncs = () => {
f.enableOverride && t.syncUsers();
}),
(t.canBidderRegisterSync = (e, t) =>
!f.filterSettings || !h(e, t)),
t
);
})(
Object.defineProperties(
{
config: r.$W.getConfig(‘userSync’),
isAllowed: s.io,
regRule: s.qB
},
{
browserSupportsCookies: {
get: function() {
return !(0, i.Vt)() && f.cookiesAreEnabled();
}
}
}
)
);
},
1069: (e, t, n) => {
n.d(t, {
$D: () => U,
$z: () => Ue,
Bg: () => Ke,
Bj: () => Qe,
Bk: () => ge,
Bq: () => he,
CA: () => K,
D4: () => me,
D9: () => Le,
Dl: () => Ge,
El: () => Ye,
Et: () => ne,
Ez: () => Y,
Fq: () => We,
GE: () => Se,
Go: () => we,
II: () => ye,
Im: () => oe,
JE: () => F,
Lm: () => re,
N9: () => Re,
O8: () => ee,
OG: () => M,
Ot: () => T,
PB: () => Je,
Q0: () => Ee,
Qd: () => ie,
SB: () => $e,
SG: () => ue,
SH: () => De,
Tz: () => fe,
U6: () => ke,
Up: () => Pe,
Uu: () => Ve,
V: () => Oe,
Vt: () => Te,
YE: () => P,
ZA: () => be,
ZK: () => Ze,
_s: () => ae,
al: () => Ie,
bD: () => He,
bL: () => k,
bz: () => Ne,
c$: () => Fe,
cD: () => w,
cf: () => j,
cy: () => te,
dp: () => J,
fH: () => G,
fp: () => Z,
gM: () => Ce,
h0: () => L,
hj: () => pe,
hw: () => Q,
iC: () => qe,
k4: () => Ae,
kK: () => _,
l4: () => N,
l9: () => je,
lk: () => S,
mM: () => C,
mb: () => q,
nT: () => Xe,
ro: () => le,
s0: () => R,
t1: () => ve,
vE: () => Be,
vV: () => H,
wD: () => _e,
xQ: () => se,
y$: () => D,
z$: () => ce
});
var i = n(3272),
r = n(5751),
o = n(8969),
s = n(5555),
a = n(7873),
d = ‘String’,
c = ‘Function’,
l = ‘Number’,
u = ‘Object’,
f = ‘Boolean’,
g = Object.prototype.toString;
let p,
h,
m = Boolean(window.console),
b = Boolean(m && window.console.log),
y = Boolean(m && window.console.info),
v = Boolean(m && window.console.warn),
E = Boolean(m && window.console.error);
const A = (0, a.m)();
function w(e) {
p = e;
}
function I() {
null != p && p(…arguments);
}
const T = (function() {
let e;
return () => (
(!h || !e || Date.now() – e > 20) &&
(C.resetWinDimensions(), (e = Date.now())),
h
);
})();
const C = {
checkCookieSupport: Se,
createTrackPixelIframeHtml: function(e) {
let t =
!(arguments.length > 1 && void 0 !== arguments[1]) ||
arguments[1],
n =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: ”;
if (!e) return ”;
t && (e = encodeURI(e));
n && (n = `sandbox=”${n}”`);
return “;
},
getWindowSelf: N,
getWindowTop: q,
canAccessWindowTop: V,
getWindowLocation: W,
insertUserSyncIframe: ue,
insertElement: ae,
isFn: Z,
triggerPixel: ce,
logError: H,
logWarn: F,
logMessage: M,
logInfo: G,
parseQS: Me,
formatQS: function(e) {
return Object.keys(e)
.map(t =>
Array.isArray(e[t])
? e[t].map(e => `${t}[]=${e}`).join(‘&’)
: `${t}=${e[t]}`
)
.join(‘&’);
},
deepEqual: He,
resetWinDimensions: function() {
const e = V() ? C.getWindowTop() : C.getWindowSelf();
h = {
screen: {
width: e.screen?.width,
height: e.screen?.height,
availWidth: e.screen?.availWidth,
availHeight: e.screen?.availHeight,
colorDepth: e.screen?.colorDepth
},
innerHeight: e.innerHeight,
innerWidth: e.innerWidth,
outerWidth: e.outerWidth,
outerHeight: e.outerHeight,
visualViewport: {
height: e.visualViewport?.height,
width: e.visualViewport?.width
},
document: {
documentElement: {
clientWidth: e.document?.documentElement?.clientWidth,
clientHeight: e.document?.documentElement?.clientHeight,
scrollTop: e.document?.documentElement?.scrollTop,
scrollLeft: e.document?.documentElement?.scrollLeft
},
body: {
scrollTop: document.body?.scrollTop,
scrollLeft: document.body?.scrollLeft,
clientWidth: document.body?.clientWidth,
clientHeight: document.body?.clientHeight
}
}
};
}
};
var B,
O =
((B = 0),
function() {
return ++B;
});
function R() {
return (
O() +
Math.random()
.toString(16)
.substr(2)
);
}
function S(e) {
return e
? (
e ^
((window && window.crypto && window.crypto.getRandomValues
? crypto.getRandomValues(new Uint8Array(1))[0] % 16
: 16 * Math.random()) >>
(e / 4))
).toString(16)
: ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, S);
}
function k(e) {
let t = ”;
for (var n in e)
e.hasOwnProperty(n) &&
(t += n + ‘=’ + encodeURIComponent(e[n]) + ‘&’);
return (t = t.replace(/&$/, ”)), t;
}
function U(e) {
return e && Object.getOwnPropertyNames(e).length > 0
? Object.keys(e)
.map(t => `${t}=${encodeURIComponent(e[t])}`)
.join(‘&’)
: ”;
}
function D(e) {
return ‘string’ == typeof e
? e
.split(/s*,s*/)
.map(e => e.match(/^(d+)x(d+)$/i))
.filter(e => e)
.map(e => {
let [t, n, i] = e;
return [parseInt(n, 10), parseInt(i, 10)];
})
: Array.isArray(e)
? x(e)
? [e]
: e.filter(x)
: [];
}
function _(e) {
return D(e).map($);
}
function $(e) {
return e[0] + ‘x’ + e[1];
}
function j(e) {
return { w: e[0], h: e[1] };
}
function x(e) {
return te(e) && 2 === e.length && !isNaN(e[0]) && !isNaN(e[1]);
}
function q() {
return window.top;
}
function N() {
return window.self;
}
function W() {
return window.location;
}
function P() {
return document;
}
function V() {
try {
if (C.getWindowTop().location.href) return !0;
} catch (e) {
return !1;
}
}
function M() {
J() && b && console.log.apply(console, z(arguments, ‘MESSAGE:’));
}
function G() {
J() && y && console.info.apply(console, z(arguments, ‘INFO:’));
}
function F() {
J() && v && console.warn.apply(console, z(arguments, ‘WARNING:’)),
I(o.qY.AUCTION_DEBUG, { type: ‘WARNING’, arguments });
}
function H() {
J() && E && console.error.apply(console, z(arguments, ‘ERROR:’)),
I(o.qY.AUCTION_DEBUG, { type: ‘ERROR’, arguments });
}
function L(e) {
function t(t) {
return function() {
for (
var n = arguments.length, i = new Array(n), r = 0;
r < n;
r++
)
i[r] = arguments[r];
t(e, …i);
};
}
return {
logError: t(H),
logWarn: t(F),
logMessage: t(M),
logInfo: t(G)
};
}
function z(e, t) {
e = [].slice.call(e);
let n = i.$W.getCurrentBidder();
return (
t && e.unshift(t),
n && e.unshift(r(‘#aaa’)),
e.unshift(r(‘#3b88c3’)),
e.unshift(‘%cPrebid’ + (n ? `%c${n}` : ”)),
e
);
function r(e) {
return `display: inline-block; color: #fff; background: ${e}; padding: 1px 4px; border-radius: 3px;`;
}
}
function J() {
return !!i.$W.getConfig(‘debug’);
}
const Q = (() => {
const e = {
border: ‘0px’,
hspace: ‘0’,
vspace: ‘0’,
marginWidth: ‘0’,
marginHeight: ‘0’,
scrolling: ‘no’,
frameBorder: ‘0’,
allowtransparency: ‘true’
};
return function(t, n) {
let i =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: {};
const r = t.createElement(‘iframe’);
return (
Object.assign(r, Object.assign({}, e, n)),
Object.assign(r.style, i),
r
);
};
})();
function K() {
return Q(
document,
{ id: R(), width: 0, height: 0, src: ‘about:blank’ },
{ display: ‘none’, height: ‘0px’, width: ‘0px’, border: ‘0px’ }
);
}
function Y(e) {
return Me(W().search)[e] || ”;
}
function X(e, t) {
return g.call(e) === ‘[object ‘ + t + ‘]’;
}
function Z(e) {
return X(e, c);
}
function ee(e) {
return X(e, d);
}
const te = Array.isArray.bind(Array);
function ne(e) {
return X(e, l);
}
function ie(e) {
return X(e, u);
}
function re(e) {
return X(e, f);
}
function oe(e) {
return (
!e ||
(te(e) || ee(e) ? !(e.length > 0) : Object.keys(e).length <= 0)
);
}
function se(e) {
return ee(e) && (!e || 0 === e.length);
}
function ae(e, t, n, i) {
let r;
(t = t || document),
(r = n
? t.getElementsByTagName(n)
: t.getElementsByTagName(‘head’));
try {
if (
((r = r.length ? r : t.getElementsByTagName(‘body’)),
r.length)
) {
r = r[0];
let t = i ? null : r.firstChild;
return r.insertBefore(e, t);
}
} catch (e) {}
}
function de(e, t) {
let n = null;
return new s.U9(i => {
const r = function() {
e.removeEventListener(‘load’, r),
e.removeEventListener(‘error’, r),
null != n && window.clearTimeout(n),
i();
};
e.addEventListener(‘load’, r),
e.addEventListener(‘error’, r),
null != t && (n = window.setTimeout(r, t));
});
}
function ce(e, t, n) {
const i = new Image();
t && C.isFn(t) && de(i, n).then(t), (i.src = e);
}
function le(e) {
if (!e) return;
const t = K();
var n;
C.insertElement(t, document, ‘body’),
(n = t.contentWindow.document).open(),
n.write(e),
n.close();
}
function ue(e, t, n) {
let i = C.createTrackPixelIframeHtml(
e,
!1,
‘allow-scripts allow-same-origin’
),
r = document.createElement(‘div’);
r.innerHTML = i;
let o = r.firstChild;
t && C.isFn(t) && de(o, n).then(t),
C.insertElement(o, document, ‘html’, !0);
}
function fe(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: encodeURI;
if (!e) return ”;
let n =

‘;
return (n += ‘

‘), n;
}
function ge(e) {
return Array.from(e.matchAll(/$({[^}]+})/g))
.map(e => e[1])
.reduce(
(e, t) => e.replace(‘$’ + encodeURIComponent(t), ‘$’ + t),
encodeURI(e)
);
}
function pe(e, t, n) {
return n.indexOf(e) === t;
}
function he(e, t) {
return e.concat(t);
}
function me(e, t) {
if (e)
return t
.flatMap(e => e.bids)
.find(t => [‘bidId’, ‘adId’, ‘bid_id’].some(n => t[n] === e));
}
function be() {
return (arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: A.adUnits
)
.map(e => e.bids.map(e => e.bidder).reduce(he, []))
.reduce(he, [])
.filter(e => void 0 !== e)
.filter(pe);
}
function ye() {
if (
window.googletag &&
Z(window.googletag.pubads) &&
Z(window.googletag.pubads().getSlots)
)
return !0;
}
function ve() {
if (window.apntag && Z(window.apntag.getTag)) return !0;
}
const Ee = (e, t) => t.cpm – e.cpm;
function Ae(e) {
let t = e.length;
for (; t > 0; ) {
let n = Math.floor(Math.random() * t);
t–;
let i = e[t];
(e[t] = e[n]), (e[n] = i);
}
return e;
}
function we(e) {
return (0, r.Q)(e) || {};
}
function Ie() {
try {
return C.getWindowSelf() !== C.getWindowTop();
} catch (e) {
return !0;
}
}
function Te() {
return /^((?!chrome|android|crios|fxios).)*safari/i.test(
navigator.userAgent
);
}
function Ce(e, t) {
if (e)
return Object.entries(t).reduce((e, t) => {
let [n, i] = t;
return e.replace(
new RegExp(‘\$\{‘ + n + ‘\}’, ‘g’),
i || ”
);
}, e);
}
function Be() {
return new Date().getTime();
}
function Oe() {
return (
(window.performance &&
window.performance.now &&
window.performance.now()) ||
0
);
}
function Re() {
return !1 !== i.$W.getConfig(‘deviceAccess’);
}
function Se() {
if (window.navigator.cookieEnabled || document.cookie.length)
return !0;
}
function ke(e, t) {
if (t < 1)
throw new Error(
`numRequiredCalls must be a positive number. Got ${t}`
);
let n = 0;
return function() {
n++, n === t && e.apply(this, arguments);
};
}
function Ue(e, t) {
return e.reduce(function(e, n) {
return (e[n[t]] = e[n[t]] || []).push(n), e;
}, {});
}
function De(e, t) {
return t
.filter(t => e[t])
.reduce((t, n) => Object.assign(t, { [n]: e[n] }), {});
}
function _e(e) {
const t = [‘banner’, ‘native’, ‘video’],
n = [‘instream’, ‘outstream’, ‘adpod’];
return (
!!Object.keys(e).every(e => t.includes(e)) &&
(!e.video || !e.video.context || n.includes(e.video.context))
);
}
function $e(e, t, n) {
return e
.filter(e => e.code === t)
.flatMap(e => e.bids)
.filter(e => e.bidder === n)
.map(e => e.params || {});
}
function je() {
return (
‘1’ === navigator.doNotTrack ||
‘1’ === window.doNotTrack ||
‘1’ === navigator.msDoNotTrack ||
‘yes’ === navigator.doNotTrack
);
}
const xe = (e, t) =>
e.getAdUnitPath() === t || e.getSlotElementId() === t;
function qe(e) {
return t => xe(e, t);
}
function Ne(e, t) {
const n = Object.keys(e.mediaTypes || { banner: ‘banner’ }).join(
‘, ‘
);
return `n ${e.code} is a ${n} ad unitn containing bidders that don’t support ${n}: ${t}.n This bidder won’t fetch demand.n `;
}
const We = Number.isInteger.bind(Number);
function Pe(e, t) {
return ‘object’ != typeof e
? {}
: t.reduce((n, i, r) => {
if (‘function’ == typeof i) return n;
let o = i,
s = i.match(/^(.+?)sass(.+?)$/i);
s && ((i = s[1]), (o = s[2]));
let a = e[i];
return (
‘function’ == typeof t[r + 1] && (a = t[r + 1](a, n)),
void 0 !== a && (n[o] = a),
n
);
}, {});
}
function Ve(e, t) {
return te(e) && (!t || e.length === t) && e.every(e => We(e));
}
function Me(e) {
return e
? e
.replace(/^?/, ”)
.split(‘&’)
.reduce((e, t) => {
let [n, i] = t.split(‘=’);
return (
/[]$/.test(n)
? ((n = n.replace(‘[]’, ”)),
(e[n] = e[n] || []),
e[n].push(i))
: (e[n] = i || ”),
e
);
}, {})
: {};
}
function Ge(e, t) {
let n = document.createElement(‘a’);
t && ‘noDecodeWholeURL’ in t && t.noDecodeWholeURL
? (n.href = e)
: (n.href = decodeURIComponent(e));
let i =
t && ‘decodeSearchAsString’ in t && t.decodeSearchAsString;
return {
href: n.href,
protocol: (n.protocol || ”).replace(/:$/, ”),
hostname: n.hostname,
port: +n.port,
pathname: n.pathname.replace(/^(?!/)/, ‘/’),
search: i ? n.search : C.parseQS(n.search || ”),
hash: (n.hash || ”).replace(/^#/, ”),
host: n.host || window.location.host
};
}
function Fe(e) {
return (
(e.protocol || ‘http’) +
‘://’ +
(e.host || e.hostname + (e.port ? `:${e.port}` : ”)) +
(e.pathname || ”) +
(e.search ? `?${C.formatQS(e.search || ”)}` : ”) +
(e.hash ? `#${e.hash}` : ”)
);
}
function He(e, t) {
let { checkTypes: n = !1 } =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: {};
if (e === t) return !0;
if (
‘object’ != typeof e ||
null === e ||
‘object’ != typeof t ||
null === t
)
return !1;
const i = Array.isArray(e),
r = Array.isArray(t);
if (i && r) {
if (e.length !== t.length) return !1;
for (let i = 0; i < e.length; i++)
if (!He(e[i], t[i], { checkTypes: n })) return !1;
return !0;
}
if (i || r) return !1;
if (n && e.constructor !== t.constructor) return !1;
const o = Object.keys(e),
s = Object.keys(t);
if (o.length !== s.length) return !1;
for (const i of o) {
if (!Object.prototype.hasOwnProperty.call(t, i)) return !1;
if (!He(e[i], t[i], { checkTypes: n })) return !1;
}
return !0;
}
function Le(e) {
for (
let t = 0;
t < (arguments.length <= 1 ? 0 : arguments.length – 1);
t++
) {
const n =
t + 1 < 1 || arguments.length <= t + 1
? void 0
: arguments[t + 1];
ie(n) && ze(e, n);
}
return e;
}
function ze(e, t) {
if (!ie(e) || !ie(t)) return;
const n = Object.keys(t);
for (let i = 0; i < n.length; i++) {
const r = n[i];
if (‘__proto__’ === r || ‘constructor’ === r) continue;
const o = t[r];
ie(o)
? (e[r] || (e[r] = {}), ze(e[r], o))
: Array.isArray(o)
? Array.isArray(e[r])
? o.forEach(t => {
e[r].some(e => He(e, t)) || e[r].push(t);
})
: (e[r] = […o])
: (e[r] = o);
}
}
function Je(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: 0,
n = function(e, t) {
if (Z(Math.imul)) return Math.imul(e, t);
var n = (4194303 & e) * (t |= 0);
return (
4290772992 & e && (n += ((4290772992 & e) * t) | 0), 0 | n
);
},
i = 3735928559 ^ t,
r = 1103547991 ^ t;
for (let t, o = 0; o < e.length; o++)
(t = e.charCodeAt(o)),
(i = n(i ^ t, 2654435761)),
(r = n(r ^ t, 1597334677));
return (
(i =
n(i ^ (i >>> 16), 2246822507) ^
n(r ^ (r >>> 13), 3266489909)),
(r =
n(r ^ (r >>> 16), 2246822507) ^
n(i ^ (i >>> 13), 3266489909)),
(4294967296 * (2097151 & r) + (i >>> 0)).toString()
);
}
function Qe(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: function(e) {
return e;
};
const n = new Map(),
i = function() {
const i = t.apply(this, arguments);
return (
n.has(i) || n.set(i, e.apply(this, arguments)), n.get(i)
);
};
return (i.clear = n.clear.bind(n)), i;
}
function Ke(e, t) {
Object.entries(t).forEach(t => {
let [n, i] = t;
return e.setAttribute(n, i);
});
}
function Ye(e, t) {
let n =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: e => e,
i = 0,
r = e.length && e.length – 1;
const o = n(t);
for (; r – i > 1; ) {
const t = i + Math.round((r – i) / 2);
o > n(e[t]) ? (i = t) : (r = t);
}
for (; e.length > i && o > n(e[i]); ) i++;
return i;
}
const Xe = (function() {
let e;
return function() {
if (void 0 !== e) return e;
try {
void 0 === window.CompressionStream
? (e = !1)
: (new window.CompressionStream(‘gzip’), (e = !0));
} catch (t) {
e = !1;
}
return e;
};
})();
async function Ze(e) {
‘string’ != typeof e && (e = JSON.stringify(e));
const t = new TextEncoder().encode(e),
n = new Blob([t])
.stream()
.pipeThrough(new window.CompressionStream(‘gzip’)),
i = await new Response(n).blob(),
r = await i.arrayBuffer();
return new Uint8Array(r);
}
},
2621: (e, t, n) => {
function i(e) {
return (
!e?.gdprApplies || !0 === e?.vendorData?.purpose?.consents?.[1]
);
}
n.d(t, { C: () => i });
},
6894: (e, t, n) => {
n.d(t, { Ak: () => m, BO: () => g, K7: () => p });
var i = n(3272);
const r = ‘performanceMetrics’,
o =
window.performance && window.performance.now
? () => window.performance.now()
: () => Date.now(),
s = new WeakMap();
function a() {
let {
now: e = o,
mkNode: t = l,
mkTimer: n = c,
mkRenamer: i = e => e,
nodes: r = s
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
return function() {
return (function o(s) {
let a =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: e => ({
forEach(t) {
t(e);
}
});
a = i(a);
const d =
((c = ‘timestamps’),
function(e) {
return s.dfWalk({
visit(t, n) {
const i = n[c];
if (i.hasOwnProperty(e)) return i[e];
}
});
});
var c;
function l(e, t) {
const n = a(e);
s.dfWalk({
follow: (e, t) =>
t.propagate && (!e || !e.stopPropagation),
visit(e, i) {
n.forEach(n => {
null == e
? (i.metrics[n] = t)
: (i.groups.hasOwnProperty(n) || (i.groups[n] = []),
i.groups[n].push(t));
});
}
});
}
function u(t) {
return n(e, e => l(t, e));
}
function f() {
let e = {};
return (
s.dfWalk({
visit(t, n) {
e = Object.assign(
{},
!t || t.includeGroups ? n.groups : null,
n.metrics,
e
);
}
}),
e
);
}
const g = {
startTiming: u,
measureTime: function(e, t) {
return u(e).stopAfter(t)();
},
measureHookTime: function(e, t, n) {
const i = u(e);
return n(
(function(e) {
const t = i.stopBefore(e);
return (
(t.bail = e.bail && i.stopBefore(e.bail)),
(t.stopTiming = i),
(t.untimed = e),
t
);
})(t)
);
},
checkpoint: function(t) {
s.timestamps[t] = e();
},
timeSince: function(t, n) {
const i = d(t),
r = null != i ? e() – i : null;
return null != n && l(n, r), r;
},
timeBetween: function(e, t, n) {
const i = d(e),
r = d(t),
o = null != i && null != r ? r – i : null;
return null != n && l(n, o), o;
},
setMetric: l,
getMetrics: f,
fork: function() {
let {
propagate: e = !0,
stopPropagation: n = !1,
includeGroups: i = !1
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
return o(
t([
[
s,
{
propagate: e,
stopPropagation: n,
includeGroups: i
}
]
]),
a
);
},
join: function(e) {
let {
propagate: t = !0,
stopPropagation: n = !1,
includeGroups: i = !1
} =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
const o = r.get(e);
null != o &&
o.addParent(s, {
propagate: t,
stopPropagation: n,
includeGroups: i
});
},
newMetrics: function() {
return o(s.newSibling(), a);
},
renameWith: function(e) {
return o(s, e);
},
toJSON: () => f()
};
return r.set(g, s), g;
})(t([]));
};
}
function d(e, t, n) {
return function() {
t && t();
try {
return e.apply(this, arguments);
} finally {
n && n();
}
};
}
function c(e, t) {
const n = e();
let i = !1;
function r() {
i || (t(e() – n), (i = !0));
}
return (
(r.stopBefore = e => d(e, r)),
(r.stopAfter = e => d(e, null, r)),
r
);
}
function l(e) {
return {
metrics: {},
timestamps: {},
groups: {},
addParent(t, n) {
e.push([t, n]);
},
newSibling: () => l(e.slice()),
dfWalk() {
let t,
{
visit: n,
follow: i = () => !0,
visited: r = new Set(),
inEdge: o
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
if (!r.has(this)) {
if ((r.add(this), (t = n(o, this)), null != t)) return t;
for (const [s, a] of e)
if (
i(o, a) &&
((t = s.dfWalk({
visit: n,
follow: i,
visited: r,
inEdge: a
})),
null != t)
)
return t;
}
}
};
}
const u = (() => {
const e = function() {},
t = () => ({}),
n = { forEach: e },
i = () => null;
(i.stopBefore = e => e), (i.stopAfter = e => e);
const r = Object.defineProperties(
{ dfWalk: e, newSibling: () => r, addParent: e },
Object.fromEntries(
[‘metrics’, ‘timestamps’, ‘groups’].map(e => [e, { get: t }])
)
);
return a({
now: () => 0,
mkNode: () => r,
mkRenamer: () => () => n,
mkTimer: () => i,
nodes: { get: e, set: e }
})();
})();
let f = !0;
function g(e) {
return (f && e) || u;
}
i.$W.getConfig(r, e => {
f = !!e[r];
});
const p = (() => {
const e = a();
return function() {
return f ? e() : u;
};
})();
function h(e, t) {
return function(n, i) {
return function(r) {
for (
var o = arguments.length,
s = new Array(o > 1 ? o – 1 : 0),
a = 1;
a < o;
a++
)
s[a – 1] = arguments[a];
const d = this;
return g(t.apply(d, s)).measureHookTime(e + n, r, function(
e
) {
return i.call(d, e, …s);
});
};
};
}
const m = h(‘requestBids.’, e => e.metrics);
h(‘addBidResponse.’, (e, t) => t.metrics);
},
5555: (e, t, n) => {
n.d(t, { U9: () => s, cb: () => a, v6: () => d });
var i = n(43),
r = n(7873);
const o = (0, r.m)().setTimeout ?? i.w,
s = (0, r.m)().Promise ?? i.k;
function a() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: 0;
return new s(t => {
o(t, e);
});
}
function d() {
let e,
t,
{ promiseFactory: n = e => new s(e) } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
function i(e) {
return t => e(t);
}
return {
promise: n((n, i) => {
(e = n), (t = i);
}),
resolve: i(e),
reject: i(t)
};
}
},
2713: (e, t, n) => {
function i(e, t) {
return e === t ? 0 : e < t ? -1 : 1;
}
function r() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: e => e;
return (t, n) => i(e(t), e(n));
}
function o() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: i;
return (t, n) => -e(t, n) || 0;
}
function s() {
for (
var e = arguments.length, t = new Array(e), n = 0;
n < e;
n++
)
t[n] = arguments[n];
return function(e, n) {
for (const i of t) {
const t = i(e, n);
if (0 !== t) return t;
}
return 0;
};
}
function a() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: i;
return (t, n) => (e(n, t) < 0 ? n : t);
}
function d() {
return a(
o(
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: i
)
);
}
n.d(t, { Bp: () => a, Bq: () => f, NV: () => r, Vk: () => u });
const c = r(e => e.cpm),
l = r(e => e.responseTimestamp),
u = d(s(c, o(r(e => e.timeToRespond)))),
f = d(s(c, o(l)));
d(s(c, l));
},
6853: (e, t, n) => {
n.d(t, { H: () => l });
var i = n(5555),
r = n(1069);
let o = null,
s = 0,
a = [];
function d() {
document.hidden
? (o = Date.now())
: ((s += Date.now() – (o ?? 0)),
(o = null),
a.forEach(e => {
let { callback: t, startTime: n, setTimerId: i } = e;
return i(c(t, s – n)());
}),
(a = []));
}
function c(e, t) {
const n = s;
let i = setTimeout(() => {
s === n && null == o
? e()
: null != o
? a.push({
callback: e,
startTime: n,
setTimerId(e) {
i = e;
}
})
: (i = c(e, s – n)());
}, t);
return () => i;
}
function l() {
let {
startTime: e = r.vE,
ttl: t = () => null,
monotonic: n = !1,
slack: o = 5e3
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
const s = new Map(),
a = [],
d = [],
l = n
? e => d.push(e)
: e =>
d.splice(
(0, r.El)(d, e, e => e.expiry),
0,
e
);
let u, f;
function g() {
if ((f && clearTimeout(f), d.length > 0)) {
const e = (0, r.vE)();
(u = Math.max(e, d[0].expiry + o)),
(f = c(() => {
const e = (0, r.vE)();
let t = 0;
for (const n of d) {
if (n.expiry > e) break;
a.forEach(e => {
try {
e(n.item);
} catch (e) {
(0, r.vV)(e);
}
}),
s.delete(n.item),
t++;
}
d.splice(0, t), (f = null), g();
}, u – e));
} else f = null;
}
function p(n) {
const r = {},
s = h;
let a;
const [d, c] = Object.entries({ start: e, delta: t }).map(e => {
let t,
[d, c] = e;
return function() {
const e = (t = {});
i.U9.resolve(c(n)).then(n => {
e === t &&
((r[d] = n),
s === h &&
null != r.start &&
null != r.delta &&
((a = r.start + r.delta),
l(p),
(null == f || u > a + o) && g()));
});
};
}),
p = {
item: n,
refresh: c,
get expiry() {
return a;
}
};
return d(), c(), p;
}
let h = {};
return {
[Symbol.iterator]: () => s.keys(),
add(e) {
!s.has(e) && s.set(e, p(e));
},
clear() {
(d.length = 0), g(), s.clear(), (h = {});
},
toArray: () => Array.from(s.keys()),
refresh() {
(d.length = 0), g();
for (const e of s.values()) e.refresh();
},
onExpiry: e => (
a.push(e),
() => {
const t = a.indexOf(e);
t >= 0 && a.splice(t, 1);
}
)
};
}
document.addEventListener(‘visibilitychange’, d);
},
3895: (e, t, n) => {
n.d(t, {
H6: () => a,
V0: () => c,
Zy: () => d,
aP: () => l,
vk: () => u
});
var i = n(1069),
r = n(3272),
o = n(9214),
s = n(6881);
const a = ‘outstream’,
d = new Map([
[
‘mimes’,
e =>
Array.isArray(e) &&
e.length > 0 &&
e.every(e => ‘string’ == typeof e)
],
[‘minduration’, i.Fq],
[‘maxduration’, i.Fq],
[‘startdelay’, i.Fq],
[‘maxseq’, i.Fq],
[‘poddur’, i.Fq],
[‘protocols’, i.Uu],
[‘w’, i.Fq],
[‘h’, i.Fq],
[‘podid’, i.O8],
[‘podseq’, i.Fq],
[‘rqddurs’, i.Uu],
[‘placement’, i.Fq],
[‘plcmt’, i.Fq],
[‘linearity’, i.Fq],
[‘skip’, e => [1, 0].includes(e)],
[‘skipmin’, i.Fq],
[‘skipafter’, i.Fq],
[‘sequence’, i.Fq],
[‘slotinpod’, i.Fq],
[‘mincpmpersec’, i.Et],
[‘battr’, i.Uu],
[‘maxextended’, i.Fq],
[‘minbitrate’, i.Fq],
[‘maxbitrate’, i.Fq],
[‘boxingallowed’, i.Fq],
[‘playbackmethod’, i.Uu],
[‘playbackend’, i.Fq],
[‘delivery’, i.Uu],
[‘pos’, i.Fq],
[‘api’, i.Uu],
[‘companiontype’, i.Uu],
[‘poddedupe’, i.Uu]
]);
function c(e) {
const t = e?.mediaTypes?.video;
null != t &&
null == t.plcmt &&
(t.context === a || [2, 3, 4].includes(t.placement)
? (t.plcmt = 4)
: t.context !== a &&
[2, 6].includes(t.playbackmethod) &&
(t.plcmt = 2));
}
function l(e, t) {
const n = e?.mediaTypes?.video;
(0, i.Qd)(n)
? null != n &&
Object.entries(n).forEach(r => {
let [o, s] = r;
if (!d.has(o)) return;
d.get(o)(s) ||
(‘function’ == typeof t
? t(o, s, e)
: (delete n[o],
(0, i.JE)(
`Invalid prop in adUnit “${e.code}”: Invalid value for mediaTypes.video.${o} ORTB property. The property has been removed.`
)));
})
: (0, i.JE)(
‘validateOrtbVideoFields: videoParams must be an object.’
);
}
function u(e) {
let { index: t = s.n.index } =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
const n = t.getMediaTypes(e)?.video,
i = n && n?.context,
r = n && n?.useCacheKey,
o = t.getAdUnit(e);
return f(e, o, n, i, r);
}
const f = (0, o.A_)(
‘sync’,
function(e, t, n, o, s) {
if (n && (s || o !== a)) {
const { url: t, useLocal: n } = r.$W.getConfig(‘cache’) || {};
return t || n || !e.vastXml || e.vastUrl
? !(!e.vastUrl && !e.vastXml)
: ((0, i.vV)(
‘n This bid contains only vastXml and will not work when a prebid cache url is not specified.n Try enabling either prebid cache with tlpbjs.setConfig({ cache: {url: “…”} });n or local cache with tlpbjs.setConfig({ cache: { useLocal: true }});n ‘
),
!1);
}
return (
!(o === a && !s) ||
!!(e.renderer || (t && t.renderer) || n.renderer)
);
},
‘checkVideoBidSetup’
);
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[769],
{
8944: (t, e, n) => {
n.d(e, { M: () => i });
var c = n(1069);
function i() {
const t = (0, c.Ot)();
try {
const e =
t.innerHeight ||
t.document.documentElement.clientHeight ||
t.document.body.clientHeight ||
0;
return {
width:
t.innerWidth ||
t.document.documentElement.clientWidth ||
t.document.body.clientWidth ||
0,
height: e
};
} catch (t) {
return {};
}
}
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[139],
{
43: (t, e, n) => {
n.d(e, { k: () => c, w: () => r });
const s = 0,
l = 1;
class c {
#t;
#e;
constructor(t) {
if (‘function’ != typeof t)
throw new Error(‘resolver not a function’);
const e = [],
n = [];
let [c, r] = [s, l].map(
t =>
function(l) {
if (t === s && ‘function’ == typeof l?.then) l.then(c, r);
else if (!e.length)
for (e.push(t, l); n.length; ) n.shift()();
}
);
try {
t(c, r);
} catch (t) {
r(t);
}
(this.#t = e), (this.#e = n);
}
then(t, e) {
const n = this.#t;
return new this.constructor((l, c) => {
const r = () => {
let r = n[1],
[h, i] = n[0] === s ? [t, l] : [e, c];
if (‘function’ == typeof h) {
try {
r = h(r);
} catch (t) {
return void c(t);
}
i = l;
}
i(r);
};
n.length ? r() : this.#e.push(r);
});
}
catch(t) {
return this.then(null, t);
}
finally(t) {
let e;
return this.then(
n => ((e = n), t()),
n => ((e = this.constructor.reject(n)), t())
).then(() => e);
}
static #n(t, e, n) {
let s = t.length;
function l() {
e.apply(this, arguments), –s <= 0 && n && n();
}
0 === t.length && n
? n()
: t.forEach((t, e) =>
this.resolve(t).then(
t => l(!0, t, e),
t => l(!1, t, e)
)
);
}
static race(t) {
return new this((e, n) => {
this.#n(t, (t, s) => (t ? e(s) : n(s)));
});
}
static all(t) {
return new this((e, n) => {
let s = [];
this.#n(
t,
(t, e, l) => (t ? (s[l] = e) : n(e)),
() => e(s)
);
});
}
static allSettled(t) {
return new this(e => {
let n = [];
this.#n(
t,
(t, e, s) =>
(n[s] = t
? { status: ‘fulfilled’, value: e }
: { status: ‘rejected’, reason: e }),
() => e(n)
);
});
}
static resolve(t) {
return new this(e => e(t));
}
static reject(t) {
return new this((e, n) => n(t));
}
}
function r(t) {
let e =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: 0;
if (e > 0) return setTimeout(t, e);
t();
}
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[85],
{
4595: (e, t, n) => {
n.d(t, { G: () => s });
const s =
‘(()=>{“use strict”;window.render=function({ad:e,adUrl:t,width:n,height:i,instl:d},{mkFrame:r},s){if(!e&&!t)throw{reason:”noAd”,message:”Missing ad markup or URL”};{if(null==i){const e=s.document?.body;[e,e?.parentElement].filter((e=>null!=e?.style)).forEach((e=>e.style.height=”100%”))}const h=s.document,o={width:n??”100%”,height:i??”100%”};if(t&&!e?o.src=t:o.srcdoc=e,h.body.appendChild(r(h,o)),d&&s.frameElement){const e=s.frameElement.style;e.width=n?`${n}px`:”100vw”,e.height=i?`${i}px`:”100vh”}}}})();’;
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[109],
{
965: (t, e, n) => {
n.d(e, { c5: () => o });
var a = n(5555);
const l = 0,
c = 1,
r = 2;
function o(t) {
let {
apiName: e,
apiVersion: n,
apiArgs: o = [‘command’, ‘callback’, ‘parameter’, ‘version’],
callbackArgs: s = [‘returnValue’, ‘success’],
mode: i = l
} = t,
u =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: window;
const f = {},
d = `${e}Call`,
p = `${e}Return`;
function b(t) {
const e =
‘string’ == typeof t.data && t.data.includes(p)
? JSON.parse(t.data)
: t.data;
if (e?.[p]?.callId) {
const t = e[p];
f.hasOwnProperty(t.callId) &&
f[t.callId](…s.map(e => t[e]));
}
}
const [k, m] = (function() {
let t,
n = u,
a = !1;
for (; null != n; ) {
try {
if (‘function’ == typeof n[e]) {
(t = n), (a = !0);
break;
}
} catch (t) {}
try {
if (n.frames[`${e}Locator`]) {
t = n;
break;
}
} catch (t) {}
if (n === u.top) break;
n = n.parent;
}
return [t, a];
})();
if (!k) return;
function g(t) {
return (
(t = Object.assign({ version: n }, t)), o.map(e => [e, t[e]])
);
}
function h(t, e, n, a) {
const l = ‘function’ == typeof t;
return function(r, o) {
if ((a && a(), i !== c)) {
(null == o || o ? e : n)(l ? void 0 : r);
}
l && t.apply(this, arguments);
};
}
let v;
return (
m
? (v = function() {
let t =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
return new a.U9((n, a) => {
const o = k[e](
…g({
…t,
callback:
t.callback || i === r
? h(t.callback, n, a)
: void 0
}).map(t => {
let [e, n] = t;
return n;
})
);
(i === c || (null == t.callback && i === l)) && n(o);
});
})
: (u.addEventListener(‘message’, b, !1),
(v = function(t) {
let e =
arguments.length > 1 &&
void 0 !== arguments[1] &&
arguments[1];
return new a.U9((n, a) => {
const l = Math.random().toString(),
r = {
[d]: {
…Object.fromEntries(
g(t).filter(t => {
let [e] = t;
return ‘callback’ !== e;
})
),
callId: l
}
};
(f[l] = h(
t?.callback,
n,
a,
(e || null == t?.callback) &&
(() => {
delete f[l];
})
)),
k.postMessage(r, ‘*’),
i === c && n();
});
})),
Object.assign(v, {
isDirect: m,
close() {
!m && u.removeEventListener(‘message’, b);
}
})
);
}
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[10],
{
3806: (t, n, e) => {
e.d(n, { yq: () => c });
var o = e(6894),
a = e(1069),
s = e(7873),
i = e(5555),
r = e(2604);
function c() {
let t,
n,
e,
{
namespace: c,
displayName: l,
consentDataHandler: u,
parseConsentData: m,
getNullConsent: d,
cmpHandlers: f,
DEFAULT_CMP: g = ‘iab’,
DEFAULT_CONSENT_TIMEOUT: p = 1e4
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
function C(t) {
return `consentManagement.${c} ${t}`;
}
function D(t, n) {
return t(
Object.assign({ [`${c}Consent`]: u.getConsentData() }, n)
);
}
function h() {
return n().then(t => {
let { error: n } = t;
return { error: n, consentData: u.getConsentData() };
});
}
function T() {
null == t &&
((t = (function(t, n) {
const e = new WeakSet();
return (0, o.Ak)(t, function(t, o) {
return n()
.then(n => {
let { consentData: s, error: i } = n;
!i ||
(s && e.has(i)) ||
(e.add(i), (0, a.JE)(i.message, …(i.args || []))),
t.call(this, o);
})
.catch(n => {
(0, a.vV)(
`${n?.message} Canceling auction as per consentManagement config.`,
…(n?.args || [])
),
t.stopTiming(),
‘function’ == typeof o.bidsBackHandler
? o.bidsBackHandler()
: (0, a.vV)(‘Error executing bidsBackHandler’);
});
});
})(c, () => n())),
(0, s.m)().requestBids.before(t, 50),
r.U3.before(D),
(0, a.fH)(
`${l} consentManagement module has been activated…`
));
}
return function(o) {
if (((o = o?.[c]), !o || ‘object’ != typeof o))
return (
(0, a.JE)(
C(‘config not defined, exiting consent manager module’)
),
null != t &&
((0, s.m)()
.requestBids.getHooks({ hook: t })
.remove(),
r.U3.getHooks({ hook: D }).remove(),
(t = null)),
{}
);
let b, k;
(0, a.O8)(o.cmpApi)
? (b = o.cmpApi)
: ((b = g),
(0, a.fH)(
C(
`config did not specify cmp. Using system default setting (${g}).`
)
)),
(0, a.Et)(o.timeout)
? (k = o.timeout)
: ((k = p),
(0, a.fH)(
C(
`config did not specify timeout. Using system default setting (${p}).`
)
));
const H = (0, a.Et)(o.actionTimeout) ? o.actionTimeout : null;
let w;
‘static’ === b
? (0, a.Qd)(o.consentData)
? ((e = o.consentData),
(k = null),
(w = () => new i.U9(t => t(u.setConsentData(m(e))))))
: (0, a.vV)(
C(
“config with cmpApi: ‘static’ did not specify consentData. No consents will be available to adapters.”
)
)
: f.hasOwnProperty(b)
? (w = f[b])
: (u.setConsentData(null),
(0, a.JE)(
`${l} CMP framework (${b}) is not a supported framework. Aborting consentManagement module and resuming auction.`
),
(w = () => i.U9.resolve()));
const y = () =>
(function(t) {
let n,
{
name: e,
consentDataHandler: o,
setupCmp: a,
cmpTimeout: s,
actionTimeout: i,
getNullConsent: r
} = t;
return (
o.enable(),
new Promise((t, c) => {
let l,
u = !1;
function m(a) {
null != n && clearTimeout(n),
(n =
null != a
? setTimeout(() => {
const n =
o.getConsentData() ?? (u ? l : r()),
a =
‘timeout waiting for ‘ +
(u
? ‘user action on CMP’
: ‘CMP to load’);
o.setConsentData(n),
t({
consentData: n,
error: new Error(`${e} ${a}`)
});
}, a)
: null);
}
a(function(t) {
(l = t), u || ((u = !0), null != i && m(i));
}).then(
() => t({ consentData: o.getConsentData() }),
c
),
null != s && m(s);
})
.finally(() => {
n && clearTimeout(n);
})
.catch(t => {
throw (o.setConsentData(null), t);
})
);
})({
name: l,
consentDataHandler: u,
setupCmp: w,
cmpTimeout: k,
actionTimeout: H,
getNullConsent: d
});
return (
(n = (() => {
let t;
return function() {
return (
null == t &&
(t = y().catch(n => {
throw ((t = null), n);
})),
t
);
};
})()),
T(),
{
cmpHandler: b,
cmpTimeout: k,
actionTimeout: H,
staticConsentData: e,
loadConsentData: h,
requestBidsHook: t
}
);
};
}
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[618],
{
981: (e, t, i) => {
i.d(t, { m: () => h });
var r = i(9466),
d = i(1e3),
n = i(433),
a = i(1069),
s = i(5825),
b = i(1445),
o = i(3272),
p = i(3172);
var c = i(3323);
var l = i(7873);
var f = i(1371);
var u = i(3005);
const v = {
[d.S3]: {
extPrebid: {
fn: function(e, t) {
(0, p.J)(
e,
‘ext.prebid’,
(0, a.D9)(
{
auctiontimestamp: t.auctionStart,
targeting: {
includewinners: !0,
includebidderkeys: !1
}
},
e.ext?.prebid
)
),
o.$W.getConfig(‘debug’) && (e.ext.prebid.debug = !0);
}
},
extPrebidChannel: {
fn: function(e) {
(0, p.J)(
e,
‘ext.prebid.channel’,
Object.assign(
{ name: ‘pbjs’, version: (0, l.m)().version },
e.ext?.prebid?.channel
)
);
}
},
extPrebidAliases: {
fn: function(e, t, i) {
let { am: r = b.Ay } =
arguments.length > 3 && void 0 !== arguments[3]
? arguments[3]
: {};
if (r.aliasRegistry[t.bidderCode]) {
const i = r.bidderRegistry[t.bidderCode];
if (!i || !i.getSpec().skipPbsAliasing) {
(0, p.J)(
e,
`ext.prebid.aliases.${t.bidderCode}`,
r.aliasRegistry[t.bidderCode]
);
const d =
o.$W.getConfig(`gvlMapping.${t.bidderCode}`) ||
i?.getSpec?.().gvlid;
d &&
(0, p.J)(
e,
`ext.prebid.aliasgvlids.${t.bidderCode}`,
d
);
}
}
}
}
},
[d.Tb]: {
params: { fn: c.W },
adUnitCode: {
fn: function(e, t) {
const i = t.adUnitCode;
i && (0, p.J)(e, ‘ext.prebid.adunitcode’, i);
}
}
},
[d.WR]: {
mediaType: { fn: s.o, priority: 99 },
videoCache: {
fn: function(e, t) {
if (e.mediaType === f.G_) {
let { cacheId: i, url: r } =
(0, n.A)(t, ‘ext.prebid.cache.vastXml’) || {};
if (!i || !r) {
const {
hb_uuid: e,
hb_cache_host: d,
hb_cache_path: a
} = (0, n.A)(t, ‘ext.prebid.targeting’) || {};
e &&
d &&
a &&
((i = e), (r = `https://${d}${a}?uuid=${e}`));
}
i &&
r &&
Object.assign(e, { videoCacheKey: i, vastUrl: r });
}
},
priority: -10
},
bidderCode: {
fn(e, t, i) {
(e.bidderCode = i.seatbid.seat),
(e.adapterCode =
(0, n.A)(t, ‘ext.prebid.meta.adaptercode’) ||
i.bidRequest?.bidder ||
e.bidderCode);
}
},
pbsBidId: {
fn(e, t) {
const i = (0, n.A)(t, ‘ext.prebid.bidid’);
(0, a.O8)(i) && (e.pbsBidId = i);
}
},
adserverTargeting: {
fn(e, t) {
const i = (0, n.A)(t, ‘ext.prebid.targeting’);
(0, a.Qd)(i) && (e.adserverTargeting = i);
}
},
extPrebidMeta: {
fn(e, t) {
e.meta = (0, a.D9)(
{},
(0, n.A)(t, ‘ext.prebid.meta’),
e.meta
);
}
},
pbsWinTrackers: {
fn: function(e, t) {
(e.eventtrackers = e.eventtrackers || []),
[
[t.burl, u.OA],
[t?.ext?.prebid?.events?.win, u.RO]
]
.filter(t => {
let [i, r] = t;
return (
i &&
null ==
e.eventtrackers.find(e => {
let { method: t, event: d, url: n } = e;
return d === r && t === u.Ni && n === i;
})
);
})
.forEach(t => {
let [i, r] = t;
e.eventtrackers.push({
method: u.Ni,
event: r,
url: i
});
});
}
}
},
[d.Cf]: {
serverSideStats: {
fn(e, t, i) {
Object.entries({
errors: ‘serverErrors’,
responsetimemillis: ‘serverResponseTimeMs’
}).forEach(e => {
let [r, d] = e;
const a = (0, n.A)(
t,
`ext.${r}.${i.bidderRequest.bidderCode}`
);
a &&
((i.bidderRequest[d] = a),
i.bidRequests.forEach(e => (e[d] = a)));
});
}
}
}
};
var g = i(9766);
const h = (0, a.Bj)(() => (0, r.U)((0, g.T)(), v, (0, d.yB)(d.e4)));
},
5825: (e, t, i) => {
i.d(t, { o: () => a, s: () => n });
var r = i(1371),
d = i(5561);
const n = { [r.D4]: ‘banner’, [r.s6]: ‘native’, [r.G_]: ‘video’ };
function a(e, t, i) {
let a = i.mediaType;
a ||
((a = d.X.hasOwnProperty(t.mtype)
? d.X[t.mtype]
: t.ext?.prebid?.type),
n.hasOwnProperty(a) || (a = r.D4)),
(e.mediaType = a);
}
},
3323: (e, t, i) => {
i.d(t, { W: () => d });
var r = i(3172);
function d(e, t) {
let i = t.params;
i && (0, r.J)(e, `ext.prebid.bidder.${t.bidder}`, i);
}
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[498],
{
9766: (e, t, r) => {
r.d(t, { T: () => f, A: () => m });
const n = new WeakMap();
var i = r(1069),
s = r(1371);
var o = r(3895);
var a = r(5561);
var d = r(1e3),
p = r(3858);
const c = {
[d.S3]: {
fpd: {
priority: 99,
fn(e, t) {
(0, i.D9)(e, t.ortb2);
}
},
onlyOneClient: { priority: -99, fn: (0, p.i8)(‘ORTB request’) },
props: {
fn(e, t) {
Object.assign(e, {
id: e.id || (0, i.lk)(),
test: e.test || 0
});
const r = parseInt(t.timeout, 10);
isNaN(r) || (e.tmax = r);
}
}
},
[d.Tb]: {
fpd: {
priority: 99,
fn(e, t) {
(0, i.D9)(e, t.ortb2Imp);
}
},
id: {
fn(e, t) {
e.id = t.bidId;
}
},
banner: {
fn: function(e, t, r) {
if (r.mediaType && r.mediaType !== s.D4) return;
const n = t?.mediaTypes?.banner;
if (n) {
const r = { topframe: !0 === (0, i.al)() ? 0 : 1 };
n.sizes &&
null == t.ortb2Imp?.banner?.format &&
(r.format = (0, i.y$)(n.sizes).map(i.cf)),
n.hasOwnProperty(‘pos’) && (r.pos = n.pos),
(e.banner = (0, i.D9)(r, e.banner));
}
}
},
pbadslot: {
fn(e) {
const t = e.ext?.data?.pbadslot;
(t && ‘string’ == typeof t) || delete e.ext?.data?.pbadslot;
}
},
secure: {
fn(e, t) {
e.secure = e.secure ?? 1;
}
}
},
[d.WR]: {
mediaType: { priority: 99, fn: a.K },
banner: {
fn: (function() {
let {
createPixel: e = e =>
(0, i.Tz)(decodeURIComponent(e), i.Bk)
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
return function(t, r) {
t.mediaType === s.D4 &&
(r.adm && r.nurl
? (t.ad = e(r.nurl) + r.adm)
: r.adm
? (t.ad = r.adm)
: r.nurl && (t.adUrl = r.nurl));
};
})()
},
props: {
fn(e, t, r) {
Object.entries({
requestId: r.bidRequest?.bidId,
seatBidId: t.id,
cpm: t.price,
currency: r.ortbResponse.cur || r.currency,
width: t.w,
height: t.h,
wratio: t.wratio,
hratio: t.hratio,
dealId: t.dealid,
creative_id: t.crid,
creativeId: t.crid,
burl: t.burl,
ttl: t.exp || r.ttl,
netRevenue: r.netRevenue
})
.filter(e => {
let [t, r] = e;
return void 0 !== r;
})
.forEach(t => {
let [r, n] = t;
return (e[r] = n);
}),
e.meta || (e.meta = {}),
t.adomain && (e.meta.advertiserDomains = t.adomain),
t.ext?.dsa && (e.meta.dsa = t.ext.dsa),
t.cat &&
((e.meta.primaryCatId = t.cat[0]),
(e.meta.secondaryCatIds = t.cat.slice(1))),
t.attr && (e.meta.attr = t.attr),
t.ext?.eventtrackers &&
(e.eventtrackers = (e.eventtrackers ?? []).concat(
t.ext.eventtrackers
));
}
}
}
};
(c[d.Tb].native = {
fn: function(e, t, r) {
if (r.mediaType && r.mediaType !== s.s6) return;
let n = t.nativeOrtbRequest;
n &&
((n = Object.assign({}, r.nativeRequest, n)),
n.assets?.length
? (e.native = (0, i.D9)(
{},
{ request: JSON.stringify(n), ver: n.ver },
e.native
))
: (0, i.JE)(
‘mediaTypes.native is set, but no assets were specified. Native request skipped.’,
t
));
}
}),
(c[d.WR].native = {
fn: function(e, t) {
if (e.mediaType === s.s6) {
let r;
if (
((r =
‘string’ == typeof t.adm ? JSON.parse(t.adm) : t.adm),
!(0, i.Qd)(r) || !Array.isArray(r.assets))
)
throw new Error(
‘ORTB native response contained no assets’
);
e.native = { ortb: r };
}
}
}),
(c[d.Tb].video = {
fn: function(e, t, r) {
if (r.mediaType && r.mediaType !== s.G_) return;
const n = t?.mediaTypes?.video;
if (!(0, i.Im)(n)) {
const t = Object.fromEntries(
Object.entries(n).filter(e => {
let [t] = e;
return o.Zy.has(t);
})
);
if (n.playerSize) {
const e = (0, i.y$)(n.playerSize).map(i.cf);
e.length > 1 &&
(0, i.JE)(
‘video request specifies more than one playerSize; all but the first will be ignored’
),
Object.assign(t, e[0]);
}
e.video = (0, i.D9)(t, e.video);
}
}
}),
(c[d.WR].video = {
fn: function(e, t, r) {
e.mediaType === s.G_ &&
(r?.imp?.video?.w &&
r?.imp?.video?.h &&
([e.playerWidth, e.playerHeight] = [
r.imp.video.w,
r.imp.video.h
]),
t.adm && (e.vastXml = t.adm),
t.nurl && (e.vastUrl = t.nurl));
}
});
var u = r(9466);
function m() {
let {
context: e = {},
processors: t = f,
overrides: r = {},
imp: s,
request: o,
bidResponse: a,
response: p
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
const c = new WeakMap();
function u(e, i, s, o) {
let a;
return function() {
return (
null == a &&
(a = (function() {
let a = s.bind(
this,
(function(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
if (!n.has(e)) {
const t = Object.entries(e);
t.sort((e, t) =>
(e = e[1].priority || 0) ===
(t = t[1].priority || 0)
? 0
: e > t
? -1
: 1
),
n.set(
e,
t.map(e => {
let [t, r] = e;
return [t, r.fn];
})
);
}
const r = n
.get(e)
.filter(e => {
let [r] = e;
return !t.hasOwnProperty(r) || t[r];
})
.map(function(e) {
let [r, n] = e;
return t.hasOwnProperty(r)
? t[r].bind(this, n)
: n;
});
return function() {
const e = Array.from(arguments);
r.forEach(t => {
t.apply(this, e);
});
};
})(t()[e] || {}, r[e] || {})
);
return (
i && (a = i.bind(this, a)),
function() {
try {
return a.apply(this, arguments);
} catch (e) {
o.call(this, e, …arguments);
}
}
);
})()),
a.apply(this, arguments)
);
};
}
const m = u(
d.Tb,
s,
function(e, t, r) {
const n = {};
return e(n, t, r), n;
},
function(e, t, r) {
(0,
i.vV)(
‘Error while converting bidRequest to ORTB imp; request skipped.’,
{ error: e, bidRequest: t, context: r }
);
}
),
l = u(
d.S3,
o,
function(e, t, r, n) {
const i = { imp: t };
return e(i, r, n), i;
},
function(e, t, r, n) {
throw ((0, i.vV)(‘Error while converting to ORTB request’, {
error: e,
imps: t,
bidderRequest: r,
context: n
}),
e);
}
),
b = u(
d.WR,
a,
function(e, t, r) {
const n = {};
return e(n, t, r), n;
},
function(e, t, r) {
(0,
i.vV)(
‘Error while converting ORTB seatbid.bid to bidResponse; bid skipped.’,
{ error: e, bid: t, context: r }
);
}
),
y = u(
d.Cf,
p,
function(e, t, r, n) {
const i = { bids: t };
return e(i, r, n), i;
},
function(e, t, r, n) {
throw ((0, i.vV)(
‘Error while converting from ORTB response’,
{
error: e,
bidResponses: t,
ortbResponse: r,
context: n
}
),
e);
}
);
return {
toORTB(t) {
let { bidderRequest: r, bidRequests: n, context: s = {} } = t;
n = n || r.bids;
const o = {
req: Object.assign({ bidRequests: n }, e, s),
imp: {}
};
o.req.impContext = o.imp;
const a = n
.map(t => {
const n = Object.assign(
{ bidderRequest: r, reqContext: o.req },
e,
s
),
a = m(t, n);
if (null != a) {
if (a.hasOwnProperty(‘id’))
return (
Object.assign(n, { bidRequest: t, imp: a }),
(o.imp[a.id] = n),
a
);
(0, i.vV)(
‘Converted ORTB imp does not specify an id, ignoring bid request’,
t,
a
);
}
})
.filter(Boolean),
d = l(a, r, o.req);
return (o.req.bidderRequest = r), null != d && c.set(d, o), d;
},
fromORTB(e) {
let { request: t, response: r } = e;
const n = c.get(t);
if (null == n)
throw new Error(
‘ortbRequest passed to `fromORTB` must be the same object returned by `toORTB`’
);
function s(e) {
let r =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
return Object.assign(e, { ortbRequest: t }, r);
}
const o = Object.fromEntries(
(t.imp || []).map(e => [e.id, e])
),
a = (r.seatbid || [])
.flatMap(e =>
(e.bid || []).map(t => {
if (
o.hasOwnProperty(t.impid) &&
n.imp.hasOwnProperty(t.impid)
)
return b(
t,
s(n.imp[t.impid], {
imp: o[t.impid],
seatbid: e,
ortbResponse: r
})
);
(0, i.vV)(
‘ORTB response seatbid[].bid[].impid does not match any imp in request; ignoring bid’,
t
);
})
)
.filter(Boolean);
return y(a, r, s(n.req));
}
};
}
const f = (0, i.Bj)(() => (0, u.U)(c, (0, d.yB)(d.qN)));
},
9466: (e, t, r) => {
r.d(t, { U: () => i });
var n = r(1e3);
function i() {
for (
var e = arguments.length, t = new Array(e), r = 0;
r < e;
r++
)
t[r] = arguments[r];
const s = t.shift(),
o = t.length > 1 ? i(…t) : t[0];
return Object.fromEntries(
n.zt.map(e => [e, Object.assign({}, s[e], o[e])])
);
}
},
5561: (e, t, r) => {
r.d(t, { K: () => s, X: () => i });
var n = r(1371);
const i = { 1: n.D4, 2: n.G_, 4: n.s6 };
function s(e, t, r) {
if (e.mediaType) return;
const n = r.mediaType;
if (!n && !i.hasOwnProperty(t.mtype))
throw new Error(‘Cannot determine mediaType for response’);
e.mediaType = n || i[t.mtype];
}
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[225],
{
6743: (n, t, l) => {
l.d(t, { x4: () => i });
var e = l(7873),
r = l(2713);
function u(n, t, l) {
let r =
!(arguments.length > 3 && void 0 !== arguments[3]) ||
arguments[3];
if (t === l) return n;
let u = n;
try {
u = (0, e.m)().convertCurrency(n, t, l);
} catch (n) {
if (!r) throw n;
}
return u;
}
function i() {
let n =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: n => [n.cpm, n.currency],
t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: (function() {
let n =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: null,
t =
!(
arguments.length > 1 && void 0 !== arguments[1]
) || arguments[1],
l =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: u;
return function(e, r) {
return null == n && (n = r), l(e, r, n, t);
};
})();
return (0, r.NV)(l => t.apply(null, n(l)));
}
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[764],
{
2339: (o, n, t) => {
function e(o, n) {
return function() {
const t = document.domain.split(‘.’),
e = `_gd${Date.now()}_${n}`;
for (let n, i, s = 0; s < t.length; s++) {
const u = t.slice(s).join(‘.’);
if (
(o.setCookie(e, ‘1’, void 0, void 0, u),
(i = o.getCookie(e)),
o.setCookie(
e,
”,
‘Thu, 01 Jan 1970 00:00:01 GMT’,
void 0,
u
),
‘1’ !== i)
)
return n;
n = u;
}
};
}
t.d(n, { w: () => e });
}
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[81],
{
6117: (e, t, n) => {
var r = n(7873),
s = n(1069),
a = n(3172),
o = n(3272),
c = n(6916),
i = n(1e3),
p = n(687),
d = n(965),
l = n(3806);
let u,
g,
f = {};
const C = 2,
m = {
iab: function(e) {
return new Promise((t, n) => {
const r = (0, d.c5)({
apiName: ‘__tcfapi’,
apiVersion: C,
apiArgs: [‘command’, ‘version’, ‘callback’, ‘parameter’]
});
r || n(new Error(‘TCF2 CMP not found.’)),
r.isDirect
? (0, s.fH)(
‘Detected CMP API is directly accessible, calling it now…’
)
: (0, s.fH)(
‘Detected CMP is outside the current iframe where Prebid.js is located, calling it now…’
),
r({
command: ‘addEventListener’,
callback: function(r, a) {
if (
((0, s.fH)(‘Received a response from CMP’, r), a)
) {
try {
e(b(r));
} catch (e) {}
if (
!1 === r.gdprApplies ||
‘tcloaded’ === r.eventStatus ||
‘useractioncomplete’ === r.eventStatus
)
try {
c.mW.setConsentData(b(r)), t();
} catch (e) {
n(e);
}
} else
n(
Error(
‘CMP unable to register callback function. Please check CMP setup.’
)
);
}
});
});
}
};
function b(e) {
if (
(function() {
const t =
e && ‘boolean’ == typeof e.gdprApplies
? e.gdprApplies
: u,
n = e && e.tcString;
return !(
‘boolean’ == typeof t &&
(!0 !== t || (n && (0, s.O8)(n)))
);
})()
)
throw Object.assign(
new Error(
‘CMP returned unexpected value during lookup process.’
),
{ args: [e] }
);
return D(e);
}
function D(e) {
const t = {
consentString: e ? e.tcString : void 0,
vendorData: e || void 0,
gdprApplies:
e && ‘boolean’ == typeof e.gdprApplies ? e.gdprApplies : u
};
return (
e &&
e.addtlConsent &&
(0, s.O8)(e.addtlConsent) &&
(t.addtlConsent = e.addtlConsent),
(t.apiVersion = C),
t
);
}
const v = (0, l.yq)({
namespace: ‘gdpr’,
displayName: ‘TCF’,
consentDataHandler: c.mW,
cmpHandlers: m,
parseConsentData: b,
getNullConsent: () => D(null)
});
o.$W.getConfig(‘consentManagement’, e =>
(function(e) {
return (
(e = e && (e.gdpr || e.usp || e.gpp ? e.gdpr : e)),
null != e?.consentData?.getTCData &&
(e.consentData = e.consentData.getTCData),
(u = !0 === e?.defaultGdprScope),
(g = !!e?.dsaPlatform),
(f = v({ gdpr: e })),
f.loadConsentData?.()?.catch?.(() => null)
);
})(e.consentManagement)
),
p.w.before(function(e, t) {
return e(
t.then(e => {
const t = c.mW.getConsentData();
return (
t &&
(‘boolean’ == typeof t.gdprApplies &&
(0, a.J)(e, ‘regs.ext.gdpr’, t.gdprApplies ? 1 : 0),
(0, a.J)(e, ‘user.ext.consent’, t.consentString)),
g && (0, a.J)(e, ‘regs.ext.dsa.dsarequired’, 3),
e
);
})
);
}),
(0, i.pS)({
type: i.S3,
name: ‘gdprAddtlConsent’,
fn: function(e, t) {
const n = t.gdprConsent?.addtlConsent;
n &&
‘string’ == typeof n &&
(0, a.J)(
e,
‘user.ext.ConsentedProvidersSettings.consented_providers’,
n
);
}
}),
(0, r.E)(‘consentManagementTcf’);
}
},
e => {
e.O(0, [802, 109, 10, 769, 139, 85], () => {
return (t = 6117), e((e.s = t));
var t;
});
e.O();
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[662],
{
6056: (n, t, e) => {
var o = e(7873),
a = e(1069),
s = e(3172),
i = e(3272),
c = e(1445),
r = e(6916),
u = e(6894),
l = e(9214),
f = e(687),
g = e(965);
const d = ‘iab’;
let p,
m,
P = d,
v = 50,
S = !1;
const b = {
iab: function(n) {
let { onSuccess: t, onError: e } = n;
let o = (function() {
const n = {};
return {
consentDataCallback: (o, a) => {
a && o.uspString && (n.usPrivacy = o.uspString),
n.usPrivacy
? h(n, { onSuccess: t, onError: e })
: e(‘Unable to get USP consent string.’);
}
};
})();
const s = (0, g.c5)({
apiName: ‘__uspapi’,
apiVersion: 1,
apiArgs: [‘command’, ‘version’, ‘callback’]
});
if (!s) return e(‘USP CMP not found.’);
s.isDirect
? (0, a.fH)(
‘Detected USP CMP is directly accessible, calling it now…’
)
: (0, a.fH)(
‘Detected USP CMP is outside the current iframe where Prebid.js is located, calling it now…’
);
s({ command: ‘getUSPData’, callback: o.consentDataCallback }),
s({
command: ‘registerDeletion’,
callback: (n, t) =>
(null == t || t) && c.Ay.callDataDeletionRequest(n)
}).catch(n => {
(0, a.vV)(‘Error invoking CMP `registerDeletion`:’, n);
});
},
static: function(n) {
let { onSuccess: t, onError: e } = n;
h(p, { onSuccess: t, onError: e });
}
};
function D(n) {
let t = null,
e = !1;
function o(o, a) {
if (
(null != t && clearTimeout(t),
(e = !0),
r.t6.setConsentData(o),
null != n)
) {
for (
var s = arguments.length,
i = new Array(s > 2 ? s – 2 : 0),
c = 2;
c < s;
c++
)
i[c – 2] = arguments[c];
n(a, …i);
}
}
if (!b[P])
return void o(
null,
`USP framework (${P}) is not a supported framework. Aborting consentManagement module and resuming auction.`
);
const a = {
onSuccess: o,
onError: function(n) {
for (
var t = arguments.length,
e = new Array(t > 1 ? t – 1 : 0),
a = 1;
a < t;
a++
)
e[a – 1] = arguments[a];
o(
null,
`${n} Resuming auction without consent data as per consentManagement config.`,
…e
);
}
};
b[P](a),
e ||
(0 === v
? h(void 0, a)
: (t = setTimeout(
a.onError.bind(
null,
‘USPAPI workflow exceeded timeout threshold.’
),
v
)));
}
const y = (0, u.Ak)(‘usp’, function(n, t) {
var e = this;
S || U(),
D(function(o) {
if (null != o) {
for (
var s = arguments.length,
i = new Array(s > 1 ? s – 1 : 0),
c = 1;
c < s;
c++
)
i[c – 1] = arguments[c];
(0, a.JE)(o, …i);
}
n.call(e, t);
});
});
function h(n, t) {
let { onSuccess: e, onError: o } = t;
!n || !n.usPrivacy
? o(
‘USPAPI returned unexpected value during lookup process.’,
n
)
: (!(function(n) {
n && n.usPrivacy && (m = n.usPrivacy);
})(n),
e(m));
}
function U() {
let n =
arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
S ||
((0, a.fH)(
‘USPAPI consentManagement module has been activated’ +
(n
? ”
: ` using default values (api: ‘${P}’, timeout: ${v}ms)`)
),
(S = !0),
r.t6.enable()),
D();
}
i.$W.getConfig(‘consentManagement’, n =>
(function(n) {
((n = n && n.usp) && ‘object’ == typeof n) ||
(0, a.JE)(
‘consentManagement.usp config not defined, using defaults’
),
n && (0, a.O8)(n.cmpApi)
? (P = n.cmpApi)
: ((P = d),
(0, a.fH)(
`consentManagement.usp config did not specify cmpApi. Using system default setting (${d}).`
)),
n && (0, a.Et)(n.timeout)
? (v = n.timeout)
: ((v = 50),
(0, a.fH)(
‘consentManagement.usp config did not specify timeout. Using system default setting (50).’
)),
‘static’ === P &&
((0, a.Qd)(n.consentData) &&
(0, a.Qd)(n.consentData.getUSPData)
? (n.consentData.getUSPData.uspString &&
(p = {
usPrivacy: n.consentData.getUSPData.uspString
}),
(v = 0))
: (0, a.vV)(
“consentManagement config with cmpApi: ‘static’ did not specify consentData. No consents will be available to adapters.”
)),
U(!0);
})(n.consentManagement)
),
(0, l.Yn)(‘requestBids’).before(y, 50),
f.w.before(function(n, t) {
return n(
t.then(n => {
const t = r.t6.getConsentData();
return t && (0, s.J)(n, ‘regs.ext.us_privacy’, t), n;
})
);
}),
(0, o.E)(‘consentManagementUsp’);
}
},
n => {
n.O(0, [109, 802, 769, 139, 85], () => {
return (t = 6056), n((n.s = t));
var t;
});
n.O();
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[931],
{
2843: (e, t, o) => {
var n = o(7873),
r = o(1069),
a = o(8044),
c = o(7934),
i = o(9214),
s = o(2938),
d = o(5569),
l = o(6916);
const p = ‘criteo’,
g = (0, s.vM)({ moduleType: d.fW, moduleName: p }),
u = ‘cto_bidid’,
m = ‘cto_bundle’,
b = ‘html5’,
I = ‘cookie’,
y = new Date(0).toString(),
f = new Date((0, r.vE)() + 33696e6).toString();
function S(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1] && arguments[1];
const o = (0, r.Dl)(e, { noDecodeWholeURL: !0 });
return t
? `${o.hostname}`
: `${o.protocol}://${o.hostname}${o.port ? ‘:’ + o.port : ”}/`;
}
function h(e, t) {
return e?.storage?.type === b
? g.getDataFromLocalStorage(t)
: e?.storage?.type === I
? g.getCookie(t)
: g.getCookie(t) || g.getDataFromLocalStorage(t);
}
function C(e, t, o, n) {
t &&
o &&
(e?.storage?.type === b
? g.setDataInLocalStorage(t, o)
: (e?.storage?.type === I || g.setDataInLocalStorage(t, o),
v(t, o, f, n, !0)));
}
function v(e, t, o, n, r) {
const a = n.split(‘.’);
for (let n = 0; n < a.length; ++n) {
const c = a.slice(a.length – n – 1, a.length).join(‘.’);
try {
if ((g.setCookie(e, t, o, null, ‘.’ + c), r)) {
const o = g.getCookie(e);
if (o && o === t) break;
}
} catch (e) {}
}
}
function U(e, t, o) {
const n =
(void 0 === e?.storage?.type || e?.storage?.type === I) &&
g.cookiesAreEnabled(),
i =
(void 0 === e?.storage?.type || e?.storage?.type === b) &&
g.localStorageIsEnabled(),
s = S((0, c.EN)().page),
d = S(document.location.href, !0),
p = ‘undefined’ != typeof criteo_pubtag,
f = (function(e, t, o, n, r, a, c) {
let i =
‘https://gum.criteo.com/sid/json?origin=prebid’ +
(e ? ‘&topUrl=’ + encodeURIComponent(e) : ”) +
(t ? ‘&domain=’ + encodeURIComponent(t) : ”) +
(o ? ‘&bundle=’ + encodeURIComponent(o) : ”) +
(n ? ‘&info=’ + encodeURIComponent(n) : ”) +
(r ? ‘&cw=1’ : ”) +
(c ? ‘&pbt=1’ : ”) +
(a ? ‘&lsw=1’ : ”);
const s = l.t6.getConsentData();
s && (i += `&us_privacy=${encodeURIComponent(s)}`);
const d = l.mW.getConsentData();
d &&
((i =
i +
” +
(d.consentString
? ‘&gdprString=’ + encodeURIComponent(d.consentString)
: ”)),
(i = i + ‘&gdpr=’ + (!0 === d.gdprApplies ? 1 : 0)));
const p = l.ad.getConsentData();
return (
p &&
((i =
i +
” +
(p.gppString
? ‘&gpp=’ + encodeURIComponent(p.gppString)
: ”)),
(i =
i +
” +
(p.applicableSections
? ‘&gpp_sid=’ +
encodeURIComponent(p.applicableSections)
: ”))),
i
);
})(s, d, t.bundle, t.dnaBundle, n, i, p),
h = {
success: t => {
const n = JSON.parse(t);
if (
(n.pixels &&
n.pixels.forEach(t =>
(function(e, t, o) {
o.writeBundleInStorage &&
o.bundlePropertyName &&
o.storageKeyName
? (0, a.RD)(
o.pixelUrl,
{
success: n => {
if (n) {
const r = JSON.parse(n);
r &&
r[o.bundlePropertyName] &&
C(
e,
o.storageKeyName,
r[o.bundlePropertyName],
t
);
}
},
error: e => {
(0, r.vV)(
‘criteoIdSystem: unable to sync user id’,
e
);
}
},
void 0,
{ method: ‘GET’, withCredentials: !0 }
)
: (0, r.z$)(o.pixelUrl);
})(e, d, t)
),
n.acwsUrl)
) {
(‘string’ == typeof n.acwsUrl
? [n.acwsUrl]
: n.acwsUrl
).forEach(e => (0, r.z$)(e));
} else n.bundle && C(e, m, n.bundle, d);
if (n.bidId) {
C(e, u, n.bidId, d);
const t = { criteoId: n.bidId };
o(t);
} else
v((c = u), ”, y, d, !0),
g.removeDataFromLocalStorage(c),
o();
var c;
},
error: e => {
(0, r.vV)(‘criteoIdSystem: unable to sync user id’, e), o();
}
};
(0, a.RD)(f, h, void 0, {
method: ‘GET’,
contentType: ‘application/json’,
withCredentials: !0
});
}
const D = {
name: p,
gvlid: 91,
decode: e => e,
getId(e) {
let t = (function(e) {
return {
bundle: h(e, m),
dnaBundle: h(e, ‘cto_dna_bundle’),
bidId: h(e, u)
};
})(e);
return {
id: t.bidId ? { criteoId: t.bidId } : void 0,
callback: o => U(e, t, o)
};
},
eids: { criteoId: { source: ‘criteo.com’, atype: 1 } }
};
(0, i.bz)(‘userId’, D), (0, n.E)(‘criteoIdSystem’);
}
},
e => {
e.O(0, [802, 769, 139, 85], () => {
return (t = 2843), e((e.s = t));
var t;
});
e.O();
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[328],
{
1134: (e, t, n) => {
n.d(t, { Gk: () => M });
var r = n(7873),
s = n(9759),
i = n(1069),
d = n(8969),
o = n(1445),
a = n(3272),
c = n(7377),
u = n(5023);
const p = {
appnexuspsp: {
adapter: ‘prebidServer’,
enabled: !0,
endpoint: {
p1Consent: ‘https://ib.adnxs.com/openrtb2/prebid’,
noP1Consent: ‘https://ib.adnxs-simple.com/openrtb2/prebid’
},
syncEndpoint: {
p1Consent: ‘https://prebid.adnxs.com/pbs/v1/cookie_sync’,
noP1Consent:
‘https://prebid.adnxs-simple.com/pbs/v1/cookie_sync’
},
maxTimeout: 1e3
},
rubicon: {
adapter: ‘prebidServer’,
enabled: !0,
endpoint: {
p1Consent:
‘https://prebid-server.rubiconproject.com/openrtb2/auction’,
noP1Consent:
‘https://prebid-server.rubiconproject.com/openrtb2/auction’
},
syncEndpoint: {
p1Consent:
‘https://prebid-server.rubiconproject.com/cookie_sync’,
noP1Consent:
‘https://prebid-server.rubiconproject.com/cookie_sync’
},
maxTimeout: 500
},
openwrap: {
adapter: ‘prebidServer’,
enabled: !0,
endpoint: {
p1Consent:
‘https://ow.pubmatic.com/openrtb2/auction?source=pbjs’,
noP1Consent:
‘https://ow.pubmatic.com/openrtb2/auction?source=pbjs’
},
maxTimeout: 500
}
};
var l = n(8044),
b = n(9214),
f = n(2621),
g = n(9766),
m = n(3172),
h = n(3597),
C = n(981),
y = n(3323),
B = n(5825),
v = n(1e3),
R = n(6953),
q = n(3441),
E = n(5569),
x = n(5139),
O = n(6811),
S = n(6743),
I = n(2713),
j = n(433);
function T(e) {
let { global: t, bidder: n } = e;
return Object.fromEntries(
Object.entries(n).map(e => {
let [n, r] = e;
return [n, A(r, (0, i.D9)({}, t, r))];
})
);
}
function A(e, t) {
return Object.fromEntries(
Object.entries(e).map(e => {
let [n, r] = e;
const s = t[n];
return (
Array.isArray(r)
? !(0, i.bD)(r, s) && Array.isArray(s) && (r = s)
: null != r && ‘object’ == typeof r && (r = A(r, s)),
[n, r]
);
})
);
}
function P(e, t) {
let { global: n, bidder: r } = e;
const s = (function(e) {
let { eids: t, conflicts: n = new Set() } = e;
const r = [],
s = [],
i = {};
return (
t.forEach(e => {
(!1 === e.bidders ? r : s).push(e);
}),
s.forEach(e => {
let { eid: t, bidders: s } = e;
n.has(t.source)
? s.forEach(e => {
(i[e] = i[e] || []).push(t);
})
: r.push({ eid: t, bidders: s });
}),
{
global: r.map(e => {
let { eid: t } = e;
return t;
}),
permissions: r
.filter(e => {
let { bidders: t } = e;
return !1 !== t;
})
.map(e => {
let { eid: t, bidders: n } = e;
return { source: t.source, bidders: n };
}),
bidder: i
}
);
})(
(function(e) {
let { global: t, bidder: n } = e;
const r = [],
s = {},
d = new Set();
function o(e) {
let t = r.find(t => (0, i.bD)(t.eid, e));
return (
null == t &&
((t = { eid: e, bidders: new Set() }), r.push(t)),
null == s[e.source]
? (s[e.source] = t.eid)
: t.eid === e && d.add(e.source),
t
);
}
return (
R.Vx.forEach(e => {
((0, j.A)(t, e) || []).forEach(e => {
o(e).bidders = !1;
});
}),
Object.entries(n).forEach(e => {
let [t, n] = e;
R.Vx.forEach(e => {
((0, j.A)(n, e) || []).forEach(e => {
const n = o(e);
!1 !== n.bidders && n.bidders.add(t);
});
});
}),
{
eids: r.map(e => {
let { eid: t, bidders: n } = e;
return { eid: t, bidders: n && Array.from(n) };
}),
conflicts: d
}
);
})({ global: n, bidder: r })
);
function d(e) {
delete e?.user?.eids, delete e?.user?.ext?.eids;
}
return (
(n = (0, i.Go)(n)),
(r = (0, i.Go)(r)),
d(n),
Object.values(r).forEach(d),
s.global.length && (0, m.J)(n, ‘user.ext.eids’, s.global),
t?.length &&
s.permissions.forEach(
e => (e.bidders = e.bidders.filter(e => t.includes(e)))
),
s.permissions.length &&
(0, m.J)(n, ‘ext.prebid.data.eidpermissions’, s.permissions),
Object.entries(s.bidder).forEach(e => {
let [t, n] = e;
n.length && (0, m.J)(r[t], ‘user.ext.eids’, n);
}),
{ global: n, bidder: r }
);
}
function w(e, t) {
return null == e || 0 === Object.keys(e.bidder || {}).length
? e
: ((e = P(e, t)), { …e, bidder: T(e) });
}
var D = n(1371);
const U = new Set([
‘bidderCode’,
‘bidderRequestId’,
‘uniquePbsTid’,
‘bids’,
‘timeout’
]),
$ = (() => {
const e = (0, I.Bp)(
(0, S.x4)(e => [e.bidfloor, e.bidfloorcur])
);
return function(t) {
let n;
for (const r of t) {
if (null == r?.bidfloorcur || null == r?.bidfloor)
return null;
n = null == n ? r : e(n, r);
}
return n;
};
})(),
J = (0, g.A)({
processors: C.m,
context: { netRevenue: !0 },
imp(e, t, n) {
Object.assign(n, t.pbsData);
const r = e(t, n);
if (
((t.bids || []).forEach(e => {
e.ortb2Imp &&
Object.keys(e.ortb2Imp).length > 0 &&
(0, m.J)(r, `ext.prebid.imp.${e.bidder}`, e.ortb2Imp);
}),
Object.values(B.s).some(e => r[e]))
)
return (r.secure = t.ortb2Imp?.secure ?? 1), r;
},
request(e, t, n, r) {
if (t.length) {
let { s2sBidRequest: s } = r;
const i = e(t, n, r);
return (
(i.tmax = Math.floor(
s.s2sConfig.timeout ??
Math.min(
0.75 * s.requestBidsTimeout,
s.s2sConfig.maxTimeout ?? M.maxTimeout
)
)),
(i.ext.tmaxmax = i.ext.tmaxmax || s.requestBidsTimeout),
[i.app, i.dooh, i.site].forEach(e => {
e &&
!e.publisher?.id &&
(0, m.J)(e, ‘publisher.id’, s.s2sConfig.accountId);
}),
r.transmitTids ||
(0, m.J)(i, ‘ext.prebid.createtids’, !1),
i
);
}
(0, i.vV)(
‘Request to Prebid Server rejected due to invalid media type(s) in adUnit.’
);
},
bidResponse(e, t, n) {
let r = n.actualBidRequests.get(n.seatbid.seat);
null == r && (r = n.actualBidRequests.get(null)),
r &&
Object.assign(n, {
bidRequest: r,
bidderRequest: n.actualBidderRequests.find(
e => e.bidderCode === r.bidder
)
});
const s = e(t, n);
return (
(s.requestBidder = r?.bidder),
s.native?.ortb && (s.adm = s.native.ortb),
(s.requestTimestamp = n.requestTimestamp),
{
bid: Object.assign(
(0, h.O)(d.XQ.GOOD, {
src: d.RW.SRC,
bidId: r ? r.bidId || r.bid_Id : null,
transactionId: n.adUnit.transactionId,
adUnitId: n.adUnit.adUnitId,
auctionId: n.bidderRequest.auctionId
}),
s,
{
deferRendering: !!n.adUnit.deferBilling,
deferBilling: !!n.adUnit.deferBilling
}
),
adUnit: n.adUnit.code
}
);
},
overrides: {
[v.Tb]: {
id(e, t, n, r) {
t.id = r.impId;
},
params(e, t, n, r) {
const s = r.s2sBidRequest.s2sConfig.adapterOptions;
for (const e of r.actualBidRequests.values())
(0, y.W)(t, e, r, r),
s &&
s[e.bidder] &&
Object.assign(
t.ext.prebid.bidder[e.bidder],
s[e.bidder]
);
},
bidfloor(e, t, n, r) {
const s = $(
(function*() {
for (const t of r.actualBidRequests.values()) {
const n = {};
e(n, t, r), yield n;
}
})()
);
null != s && Object.assign(t, s);
},
extBidfloor(e, t, n, r) {
function s(e, t) {
null != t &&
((0, m.J)(e, ‘ext.bidfloor’, t.bidfloor),
(0, m.J)(e, ‘ext.bidfloorcur’, t.bidfloorcur));
}
const d = Array.from(r.actualBidRequests.values()).map(
n => {
const s = (0, i.Go)(t);
return e(s, n, r), s;
}
);
Object.values(D.GE).forEach(e => {
s(t[e], $(d.map(t => t[e]?.ext)));
}),
(t[D.D4]?.format || []).forEach((e, t) => {
s(e, $(d.map(e => e[D.D4].format[t]?.ext)));
});
}
},
[v.S3]: {
fpd(e, t, n, r) {
r.transmitTids && (0, m.J)(t, ‘source.tid’, n.auctionId),
(0, i.D9)(t, r.s2sBidRequest.ortb2Fragments?.global),
r.s2sBidRequest.s2sConfig.extPrebid &&
‘object’ ==
typeof r.s2sBidRequest.s2sConfig.extPrebid &&
(0, m.J)(
t,
‘ext.prebid’,
(0, i.D9)(
t.ext?.prebid || {},
r.s2sBidRequest.s2sConfig.extPrebid
)
),
r.getRedactor().ortb2(t);
const s = Object.entries(
r.s2sBidRequest.ortb2Fragments?.bidder || {}
)
.filter(e => {
let [t] = e;
const n = r.s2sBidRequest.s2sConfig.bidders;
return (
r.s2sBidRequest.s2sConfig.allowUnknownBidderCodes ||
(n && n.includes(t))
);
})
.map(e => {
let [t, n] = e;
return {
bidders: [t],
config: { ortb2: r.getRedactor(t).ortb2(n) }
};
});
s.length && (0, m.J)(t, ‘ext.prebid.bidderconfig’, s);
},
extPrebidAliases(e, t, n, r) {
r.actualBidderRequests.forEach(n => e(t, n, r));
},
sourceExtSchain(e, t, n, r) {
let s = t?.ext?.prebid?.schains || [];
const i = new Set(s.flatMap(e => e.bidders));
(s = Object.values(
s
.concat(
r.actualBidderRequests
.filter(e => !i.has(e.bidderCode))
.map(e => ({
bidders: [e.bidderCode],
schain: e?.bids?.[0]?.schain
}))
)
.filter(e => {
let { bidders: t, schain: n } = e;
return t?.length > 0 && n;
})
.reduce((e, t) => {
let { bidders: n, schain: r } = t;
const s = JSON.stringify(r);
return (
e.hasOwnProperty(s) ||
(e[s] = { bidders: new Set(), schain: r }),
n.forEach(t => e[s].bidders.add(t)),
e
);
}, {})
).map(e => {
let { bidders: t, schain: n } = e;
return { bidders: Array.from(t), schain: n };
})),
s.length && (0, m.J)(t, ‘ext.prebid.schains’, s);
}
},
[v.Cf]: {
serverSideStats(e, t, n, r) {
r.actualBidderRequests.forEach(s =>
e(t, n, { …r, bidderRequest: s, bidRequests: s.bids })
);
},
paapiConfigs(e, t, n, r) {
const s = Object.values(r.impContext).flatMap(e =>
(e.paapiConfigs || []).map(t => {
const n = e.actualBidderRequests.find(
e => e.bidderCode === t.bidder
),
r = e.actualBidRequests.get(t.bidder);
return {
adUnitCode: e.adUnit.code,
ortb2: n?.ortb2,
ortb2Imp: r?.ortb2Imp,
bidder: t.bidder,
config: t.config
};
})
);
s.length > 0 && (t.paapi = s);
}
}
}
});
var k = n(6894);
const _ = a.$W.getConfig,
V = d.RW.SRC;
let N,
W = 0;
const M = {
bidders: Object.freeze([]),
syncTimeout: 1e3,
maxBids: 1,
adapter: ‘prebidServer’,
allowUnknownBidderCodes: !1,
adapterOptions: {},
syncUrlModifier: {},
ortbNative: { eventtrackers: [{ event: 1, methods: [1, 2] }] },
maxTimeout: 1500
};
function G(e) {
if (!e) return;
e = Array.isArray(e) ? e : [e];
const t = new Set();
return e.filter(e => {
var n;
if (
((n = e),
[‘endpoint’, ‘syncEndpoint’].forEach(e => {
if ((0, i.O8)(n[e])) {
let t = n[e];
n[e] = { p1Consent: t, noP1Consent: t };
}
!(0, i.Qd)(n[e]) ||
(n[e].p1Consent && n[e].noP1Consent) ||
[‘p1Consent’, ‘noP1Consent’].forEach(t => {
n[e][t] ||
(0, i.JE)(
`s2sConfig.${e}.${t} not defined. PBS request will be skipped in some P1 scenarios.`
);
});
}),
(function(e) {
if (e.defaultVendor) {
let t = e.defaultVendor,
n = Object.keys(e);
if (!p[t])
return (
(0, i.vV)(
‘Incorrect or unavailable prebid server default vendor option: ‘ +
t
),
!1
);
Object.keys(p[t]).forEach(r => {
(M[r] !== e[r] && n.includes(r)) || (e[r] = p[t][r]);
});
} else null == e.adapter && (e.adapter = ‘prebidServer’);
return !0;
})(e) &&
(function(e) {
for (const t of [‘accountId’, ‘endpoint’])
if (null == e[t])
return (
(0, i.vV)(
t + ‘ missing in server to server config’
),
!1
);
return !0;
})(e) &&
e.enabled)
)
return (
Array.isArray(e.bidders) &&
(e.bidders = e.bidders.filter(
e => !t.has(e) && (t.add(e), !0)
)),
!0
);
(0, i.JE)(‘prebidServer: s2s config is disabled’, e);
});
}
function F(e, t, n, r, s) {
if (N.length === W) return;
W++;
let d = {};
const o = _(‘userSync.filterSettings’);
if (o) {
const { all: e, iframe: t, image: n } = o,
r = t || e,
s = n || e;
r && (d = Object.assign({ iframe: r }, d)),
s && (d = Object.assign({ image: s }, d));
}
const a = {
uuid: (0, i.lk)(),
bidders: e,
account: s.accountId,
filterSettings: d
};
let c = s.userSyncLimit;
(0, i.Et)(c) && c > 0 && (a.limit = c),
t &&
((a.gdpr = t.gdprApplies ? 1 : 0),
!1 !== t.gdprApplies && (a.gdpr_consent = t.consentString)),
n && (a.us_privacy = n),
r &&
((a.gpp_sid = r.applicableSections.join()),
(a.gpp = r.gppString)),
‘boolean’ == typeof s.coopSync && (a.coopSync = s.coopSync);
const u = JSON.stringify(a);
(0, l.RD)(
H(s.syncEndpoint, t),
e => {
try {
L((e = JSON.parse(e)).bidder_status, s);
} catch (e) {
(0, i.vV)(e);
}
},
u,
{ contentType: ‘text/plain’, withCredentials: !0 }
);
}
function L(e, t) {
if (0 === e.length) return;
const n = e.shift();
n.no_cookie
? (function(e, t, n, r, s) {
s.syncUrlModifier &&
‘function’ == typeof s.syncUrlModifier[n] &&
(t = s.syncUrlModifier[n](e, t, n));
!(function(e, t, n, r, s) {
t
? ‘image’ === e || ‘redirect’ === e
? ((0, i.OG)(
`Invoking image pixel user sync for bidder: “${n}”`
),
(0, i.z$)(t, r, s))
: ‘iframe’ === e
? ((0, i.OG)(
`Invoking iframe user sync for bidder: “${n}”`
),
(0, i.SG)(t, r, s))
: ((0, i.vV)(
`User sync type “${e}” not supported for bidder: “${n}”`
),
r())
: ((0, i.vV)(`No sync url for bidder “${n}”: ${t}`),
r());
})(e, t, n, r, s.syncTimeout);
})(
n.usersync.type,
n.usersync.url,
n.bidder,
L.bind(null, e, t),
t
)
: L(e, t);
}
function H(e, t) {
const n = (0, f.C)(t),
r = n ? e.p1Consent : e.noP1Consent;
return (
r || (0, i.JE)(‘Missing matching consent URL when gdpr=’ + n), r
);
}
function Y(e) {
let t, n, r;
return (
Array.isArray(e) &&
e.length > 0 &&
((t = e[0].gdprConsent),
(n = e[0].uspConsent),
(r = e[0].gppConsent)),
{ gdprConsent: t, uspConsent: n, gppConsent: r }
);
}
a.$W.setDefaults({ s2sConfig: M }),
_(‘s2sConfig’, e => {
let { s2sConfig: t } = e;
var n;
(n = G((n = t))).length && (N = n);
});
const z = (0, b.A_)(
‘async’,
function(e, t, n, r) {
let { onResponse: s, onError: c, onBid: p, onFledge: l } = r,
{ gdprConsent: b } = Y(t);
const f = (0, i.Go)(e.ad_units),
g = f
.map(e => e.bids.map(e => e.bidder).filter(i.hj))
.reduce(i.Bq, [])
.filter(i.hj),
m = e.metrics.measureTime(‘buildRequests’, () =>
(function(e, t, n, r) {
const s = (0, i.vE)(),
d = new Set(),
c = [],
u = (0, o.K5)(e.s2sConfig),
p = (() => {
const e = (0, R.$p)(u),
t = {};
return n =>
null == n
? e
: (t.hasOwnProperty(n) ||
(t[n] = (0, R.$p)((0, q.s)(E.tW, n))),
t[n]);
})();
(n = n.map(e => p().bidRequest(e))).forEach(e => {
const r = new Map();
(n.bids = e.bids.map(e => p(e.bidder).bidRequest(e))),
e.bids.forEach(n => {
null != n.mediaTypes &&
(0, i.JE)(
`Prebid Server adapter does not (yet) support bidder-specific mediaTypes for the same adUnit. Size mapping configuration will be ignored for adUnit: ${e.code}, bidder: ${n.bidder}`
),
r.set(n.bidder, (0, i.D4)(n.bid_id, t));
});
let s = e.code,
o = 1;
for (; d.has(s); ) o++, (s = `${e.code}-${o}`);
d.add(s),
c.push({
…e,
adUnitCode: e.code,
pbsData: {
impId: s,
actualBidRequests: r,
adUnit: e
}
});
});
const l = {
…Object.fromEntries(
Object.entries(t[0]).filter(e => {
let [t] = e;
return !U.has(t);
})
),
paapi: { enabled: t.some(e => e.paapi?.enabled) }
};
return J.toORTB({
bidderRequest: l,
bidRequests: c,
context: {
currency:
a.$W.getConfig(‘currency.adServerCurrency’) ||
‘USD’,
ttl: e.s2sConfig.defaultTtl || 60,
requestTimestamp: s,
s2sBidRequest: {
…e,
ortb2Fragments: w(e.ortb2Fragments, r)
},
requestedBidders: r,
actualBidderRequests: t,
nativeRequest: e.s2sConfig.ortbNative,
getRedactor: p,
transmitTids: (0, x.io)(O.VJ, u)
}
});
})(e, t, f, g)
),
h = {
endpointUrl: H(e.s2sConfig.endpoint, b),
requestJson: m && JSON.stringify(m),
customHeaders: e?.s2sConfig?.customHeaders ?? {}
};
if (
(u.Ic(d.qY.BEFORE_PBS_HTTP, h),
(0, i.fH)(‘BidRequest: ‘ + h),
m && h.requestJson && h.endpointUrl)
) {
const t = e.metrics.startTiming(‘net’);
n(
h.endpointUrl,
{
success: function(n) {
let r;
t();
try {
r = JSON.parse(n);
const { bids: t, paapi: s } = e.metrics.measureTime(
‘interpretResponse’,
() =>
(function(e, t) {
return J.fromORTB({ response: e, request: t });
})(r, m)
);
t.forEach(p), s && s.forEach(l);
} catch (e) {
(0, i.vV)(e);
}
!r || (r.status && r.status.includes(‘Error’))
? ((0, i.vV)(
‘error parsing response: ‘,
r ? r.status : ‘not valid JSON’
),
s(!1, g))
: s(!0, g, r);
},
error: function() {
t(), c.apply(this, arguments);
}
},
h.requestJson,
{
contentType: ‘text/plain’,
withCredentials: !0,
browsingTopics: (0, x.io)(O.DL, (0, o.K5)(e.s2sConfig)),
customHeaders: h.customHeaders
}
);
} else (0, i.vV)(‘PBS request not made. Check endpoints.’);
},
‘processPBSRequest’
);
function K(e, t) {
return e?.extPrebid?.returnallbidstatus
? t?.ext?.seatnonbid
: void 0;
}
function Q(e) {
return e?.ext?.prebid?.analytics?.tags;
}
o.Ay.registerBidAdapter(
new (function() {
const e = new s.A(‘prebidServer’);
return (
(e.callBids = function(e, t, n, r, s) {
const p = (e.metrics = (0, k.BO)(t?.[0]?.metrics)
.newMetrics()
.renameWith(t => [
`adapter.s2s.${t}`,
`adapters.s2s.${e.s2sConfig.defaultVendor}.${t}`
]));
(r = p.startTiming(‘total’).stopBefore(r)),
t.forEach(e =>
(0, k.BO)(e.metrics).join(p, {
continuePropagation: !1
})
);
let { gdprConsent: l, uspConsent: b, gppConsent: f } = Y(t);
if (Array.isArray(N)) {
if (
e.s2sConfig &&
e.s2sConfig.syncEndpoint &&
H(e.s2sConfig.syncEndpoint, l)
) {
const t =
(e.s2sConfig.extPrebid &&
e.s2sConfig.extPrebid.aliases) ??
{};
F(
e.s2sConfig.bidders
.map(e => o.Ay.aliasRegistry[e] || t[e] || e)
.filter((e, t, n) => n.indexOf(e) === t),
l,
b,
f,
e.s2sConfig
);
}
z(e, t, s, {
onResponse: function(n, s, i) {
n && t.forEach(e => u.Ic(d.qY.BIDDER_DONE, e));
const { seatNonBidData: c, atagData: g } = (function(
e,
t
) {
return { atagData: Q(t), seatNonBidData: K(e, t) };
})(e.s2sConfig, i);
if (
(c &&
u.Ic(d.qY.SEAT_NON_BID, {
seatnonbid: i.ext.seatnonbid,
auctionId: t[0].auctionId,
requestedBidders: s,
response: i,
adapterMetrics: p
}),
c || g)
) {
const e = {
seatnonbid: c,
atag: g,
auctionId: t[0].auctionId,
requestedBidders: s,
response: i,
adapterMetrics: p
};
u.Ic(d.qY.PBS_ANALYTICS, e);
}
r(!1),
(function(e, t, n, r) {
e.forEach(e => {
let s = o.Ay.getBidAdapter(e);
s &&
s.registerSyncs &&
a.$W.runWithBidder(
e,
s.registerSyncs.bind(s, [], t, n, r)
);
});
})(s, l, b, f);
},
onError(n, s) {
const { p1Consent: o = ”, noP1Consent: a = ” } =
e?.s2sConfig?.endpoint || {};
o === a
? (0, i.vV)(
`Prebid server call failed: ‘${n}’. Endpoint: “${o}”}`,
s
)
: (0, i.vV)(
`Prebid server call failed: ‘${n}’. Endpoints: p1Consent “${o}”, noP1Consent “${a}”}`,
s
),
t.forEach(e =>
u.Ic(d.qY.BIDDER_ERROR, {
error: s,
bidderRequest: e
})
),
r(s.timedOut);
},
onBid: function(t) {
let { adUnit: r, bid: s } = t;
const o = (s.metrics = e.metrics.fork().renameWith());
o.checkpoint(‘addBidResponse’),
(null != s.requestId && null != s.requestBidder) ||
e.s2sConfig.allowUnknownBidderCodes
? o.measureTime(‘addBidResponse.validate’, () =>
(0, c.fn)(r, s)
)
? n(r, s)
: n.reject(r, s, d.Tf.INVALID)
: ((0, i.JE)(
`PBS adapter received bid from unknown bidder (${s.bidder}), but ‘s2sConfig.allowUnknownBidderCodes’ is not set. Ignoring bid.`
),
n.reject(r, s, d.Tf.BIDDER_DISALLOWED));
},
onFledge: e => {
a.$W.runWithBidder(e.bidder, () => {
(0, c.JN)(
{ auctionId: t[0].auctionId, …e },
{ config: e.config }
);
});
}
});
}
}),
Object.assign(this, {
callBids: e.callBids,
setBidderCode: e.setBidderCode,
type: V
})
);
})(),
‘prebidServer’
),
(0, r.E)(‘prebidServerBidAdapter’);
}
},
e => {
e.O(0, [802, 618, 498, 225, 769, 139, 85], () => {
return (t = 1134), e((e.s = t));
var t;
});
e.O();
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[41],
{
2115: (d, e, n) => {
var t = n(7873),
s = n(9214),
i = n(1069);
const o = {
name: ‘pubProvidedId’,
gvlid: n(6916).B1,
decode(d) {
const e = d ? { pubProvidedId: d } : void 0;
return (
(0, i.fH)(
‘PubProvidedId: Decoded value ‘ + JSON.stringify(e)
),
e
);
},
getId(d) {
const e = (d && d.params) || {};
let n = [];
return (
(0, i.cy)(e.eids) && (n = n.concat(e.eids)),
‘function’ == typeof e.eidsFunction &&
(n = n.concat(e.eidsFunction())),
{ id: n }
);
}
};
(0, s.bz)(‘userId’, o), (0, t.E)(‘pubProvidedIdSystem’);
}
},
d => {
d.O(0, [802, 769, 139, 85], () => {
return (e = 2115), d((d.s = e));
var e;
});
d.O();
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[496],
{
5862: (e, o, t) => {
var n = t(7873),
r = t(1069),
d = t(9214),
i = t(2938),
a = t(6916),
u = t(5569),
c = t(2339);
const s = (0, i.vM)({ moduleType: u.fW, moduleName: ‘sharedId’ }),
l = ‘cookie’,
m = ‘html5’,
p = ‘_pubcid_optout’,
f = ‘PublisherCommonId’;
function g(e, o) {
if (o === l) return s.getCookie(e);
if (o === m && s.hasLocalStorage()) {
const o = s.getDataFromLocalStorage(`${e}_exp`);
if (!o) return s.getDataFromLocalStorage(e);
if (new Date(o).getTime() – Date.now() > 0)
return s.getDataFromLocalStorage(e);
}
}
function b(e, o) {
return function(t, n) {
o
? v(o, e, () => {
t(n() || e);
})()
: t(e);
};
}
function v(e) {
let o =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: ”,
t = arguments.length > 2 ? arguments[2] : void 0;
if (!e) return;
const n = (0, r.Dl)(e);
n.search.id = encodeURIComponent(‘pubcid:’ + o);
const d = (0, r.c$)(n);
return function() {
(0, r.z$)(d, t);
};
}
function h() {
return !!(
(s.cookiesAreEnabled() && g(p, l)) ||
(s.hasLocalStorage() && g(p, m))
);
}
const I = {
name: ‘sharedId’,
aliasName: ‘pubCommonId’,
gvlid: a.B1,
decode(e, o) {
if (h())
return void (0, r.fH)(‘PubCommonId decode: Has opted-out’);
(0, r.fH)(‘ Decoded value PubCommonId ‘ + e);
return { pubcid: e };
},
getId: function() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
o = arguments.length > 1 ? arguments[1] : void 0,
t = arguments.length > 2 ? arguments[2] : void 0;
if (h()) return void (0, r.fH)(‘PubCommonId: Has opted-out’);
if (o?.coppa)
return void (0, r.fH)(
‘PubCommonId: IDs not provided for coppa requests, exiting PubCommonId’
);
const { params: { create: n = !0, pixelUrl: d } = {} } = e;
let i = t;
if (!i) {
try {
‘object’ == typeof window[f] && (i = window[f].getId());
} catch (e) {}
i || (i = n && (0, r.N9)() ? (0, r.lk)() : void 0);
}
return { id: i, callback: b(i, d) };
},
extendId: function() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
o = arguments.length > 1 ? arguments[1] : void 0,
t = arguments.length > 2 ? arguments[2] : void 0;
if (h())
return (
(0, r.fH)(‘PubCommonId: Has opted-out’), { id: void 0 }
);
if (o?.coppa)
return void (0, r.fH)(
‘PubCommonId: IDs not provided for coppa requests, exiting PubCommonId’
);
const { params: { extend: n = !1, pixelUrl: d } = {} } = e;
if (n) {
if (d) {
return { callback: v(d, t) };
}
return { id: t };
}
},
domainOverride: (0, c.w)(s, ‘sharedId’),
eids: {
pubcid(e, o) {
const t = {
source: ‘pubcid.org’,
uids: e.map(e => ({ id: e, atype: 1 }))
};
return (
null != o?.params?.inserter &&
(t.inserter = o.params.inserter),
t
);
}
}
};
(0, d.bz)(‘userId’, I), (0, n.E)(‘sharedIdSystem’);
}
},
e => {
e.O(0, [764, 802, 769, 139, 85], () => {
return (o = 5862), e((e.s = o));
var o;
});
e.O();
}
]);
(self.tlpbjsChunk = self.tlpbjsChunk || []).push([
[469],
{
4836: (e, t, n) => {
var r = n(7873),
o = n(3272),
s = n(5023),
i = n(1445),
a = n(8969),
c = n(9214),
u = n(1069);
const l = new Map();
function d(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: l;
const n = {};
function r(e) {
const t = JSON.stringify([
e.source?.toLowerCase(),
…Object.keys(e)
.filter(e => ![‘uids’, ‘source’].includes(e))
.sort()
.map(t => e[t])
]);
n.hasOwnProperty(t) ? n[t].uids.push(…e.uids) : (n[t] = e);
}
return (
Object.entries(e).forEach(e => {
let [n, o] = e;
o = Array.isArray(o) ? o : [o];
const s = t.get(n);
let i;
if (‘pubProvidedId’ === n) i = (0, u.Go)(o);
else if (‘function’ == typeof s)
try {
(i = s(o)),
Array.isArray(i) || (i = [i]),
i.forEach(
e =>
(e.uids = e.uids.filter(e => {
let { id: t } = e;
return (0, u.O8)(t);
}))
),
(i = i.filter(e => {
let { uids: t } = e;
return t?.length > 0;
}));
} catch (e) {
(0, u.vV)(`Could not generate EID for “${n}”`, e);
}
else
i = o.map(e =>
(function(e, t, n) {
if (n && e) {
let t = {};
t.source = (0, u.fp)(n.getSource)
? n.getSource(e)
: n.source;
const r = (0, u.fp)(n.getValue) ? n.getValue(e) : e;
if ((0, u.O8)(r)) {
const o = { id: r, atype: n.atype };
if ((0, u.fp)(n.getUidExt)) {
const t = n.getUidExt(e);
t && (o.ext = t);
}
if (
((t.uids = [o]),
n.inserter || (0, u.fp)(n.getInserter))
) {
const r = (0, u.fp)(n.getInserter)
? n.getInserter(e)
: n.inserter;
null != r && (t.inserter = r);
}
if (n.matcher || (0, u.fp)(n.getMatcher)) {
const r = (0, u.fp)(n.getMatcher)
? n.getMatcher(e)
: n.matcher;
null != r && (t.matcher = r);
}
if (
(null != n.mm && (t.mm = n.mm),
(0, u.fp)(n.getEidExt))
) {
const r = n.getEidExt(e);
r && (t.ext = r);
}
return t;
}
}
return null;
})(e, 0, s)
);
Array.isArray(i) && i.filter(e => null != e).forEach(r);
}),
Object.values(n)
);
}
function f(e) {
const t = new Map(),
n = {};
return (
Object.entries(e).forEach(e => {
let [r, o] = e;
const s = o();
if (s) {
n[r] = s.idObj[r];
let e = s.submodule.eids?.[r];
‘function’ == typeof e &&
((i = e),
(e = function() {
for (
var e = arguments.length, t = new Array(e), n = 0;
n < e;
n++
)
t[n] = arguments[n];
return i(…t, s.config);
})),
t.set(r, e);
}
var i;
}),
d(n, t)
);
}
var g = n(2938),
m = n(3172),
b = n(1692),
h = n(5555),
p = n(6894),
y = n(5973),
I = n(6916),
w = n(5569),
v = n(5139),
S = n(6811),
D = n(3441),
E = n(8230),
O = n(8934);
const k = ‘User ID’,
$ = g.X0,
j = g.qk,
A = ‘_pbjs_id_optout’,
U = (0, g.CK)(‘userId’),
T = { isAllowed: v.io };
let C,
x,
N,
L,
_,
P,
H = [],
M = [],
J = {},
q = [];
const V = (() => {
let e;
return () => (null == e && (e = (0, p.K7)()), e);
})();
function F(e) {
return V()
.fork()
.renameWith(t => [`userId.mod.${t}`, `userId.mods.${e}.${t}`]);
}
function W(e, t) {
t = t || e.storageMgr;
const n =
‘function’ == typeof e.submodule.domainOverride
? e.submodule.domainOverride()
: null,
r = e.config.storage.name;
return function(e, o, s) {
t.setCookie(r + (e || ”), o, s, ‘Lax’, n);
};
}
function G(e, t) {
const n = e.config.storage;
try {
const r = new Date(
Date.now() + 864e5 * n.expires
).toUTCString(),
o = (0, u.Qd)(t) ? JSON.stringify(t) : t;
e.enabledStorageTypes.forEach(t => {
switch (t) {
case $:
!(function(e, t, n) {
const r = e.config.storage,
o = W(e);
o(null, t, n),
o(‘_cst’, me(), n),
‘number’ == typeof r.refreshInSeconds &&
o(‘_last’, new Date().toUTCString(), n);
})(e, o, r);
break;
case j:
!(function(e, t, n) {
const r = e.config.storage,
o = e.storageMgr;
o.setDataInLocalStorage(`${r.name}_exp`, n),
o.setDataInLocalStorage(`${r.name}_cst`, me()),
o.setDataInLocalStorage(
r.name,
encodeURIComponent(t)
),
‘number’ == typeof r.refreshInSeconds &&
o.setDataInLocalStorage(
`${r.name}_last`,
new Date().toUTCString()
);
})(e, o, r);
}
});
} catch (e) {
(0, u.vV)(e);
}
}
function R(e) {
ve(e),
e.enabledStorageTypes.forEach(t => {
switch (t) {
case $:
!(function(e) {
const t = W(e, U),
n = new Date(Date.now() – 864e5).toUTCString();
[”, ‘_last’, ‘_cst’].forEach(e => {
try {
t(e, ”, n);
} catch (e) {
(0, u.vV)(e);
}
});
})(e);
break;
case j:
!(function(e) {
[”, ‘_last’, ‘_exp’, ‘_cst’].forEach(t => {
try {
U.removeDataFromLocalStorage(
e.config.storage.name + t
);
} catch (e) {
(0, u.vV)(e);
}
});
})(e);
}
});
}
function B(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: void 0;
const n = e.config.storage,
r = t ? `${n.name}_${t}` : n.name;
let o;
try {
e.enabledStorageTypes.find(t => {
switch (t) {
case $:
o = (function(e, t) {
return e.storageMgr.getCookie(t);
})(e, r);
break;
case j:
o = (function(e, t) {
const n = e.storageMgr,
r = e.config.storage,
o = n.getDataFromLocalStorage(`${r.name}_exp`);
return ” === o
? n.getDataFromLocalStorage(t)
: o && new Date(o).getTime() – Date.now() > 0
? decodeURIComponent(n.getDataFromLocalStorage(t))
: void 0;
})(e, r);
}
return !!o;
}),
‘string’ == typeof o &&
‘{‘ === o.trim().charAt(0) &&
(o = JSON.parse(o));
} catch (e) {
(0, u.vV)(e);
}
return o;
}
function Q(e, t, n) {
t = V()
.fork()
.startTiming(‘userId.callbacks.total’)
.stopBefore(t);
const r = (0, u.U6)(() => {
clearTimeout(x), t();
}, e.length);
e.forEach(function(e) {
const t = F(e.submodule.name)
.startTiming(‘callback’)
.stopBefore(r);
try {
e.callback(function(r) {
r
? (e.config.storage && G(e, r),
(e.idObj = e.submodule.decode(r, e.config)),
n.refresh(),
he(n))
: (0, u.fH)(
`${k}: ${e.submodule.name} – request id responded with an empty value`
),
t();
}, B.bind(null, e));
} catch (n) {
(0, u.vV)(`Error in userID module ‘${e.submodule.name}’:`, n),
t();
}
e.callback = void 0;
});
}
function K(e) {
return Object.fromEntries(
Object.entries(e)
.map(e => {
let [t, n] = e;
return [t, n()?.idObj?.[t]];
})
.filter(e => {
let [t, n] = e;
return null != n;
})
);
}
function Y(e, t, n) {
const r = {};
return (
e.forEach(e => {
const o = n(e),
s = (function(e) {
if (e.primaryIds) return e.primaryIds;
const t = Object.keys(e.eids ?? {});
if (t.length > 1)
throw new Error(
`ID submodule ${e.name} can provide multiple IDs, but does not specify ‘primaryIds’`
);
return t;
})(o);
t(e).forEach(t => {
const n = (r[t] = r[t] ?? []),
i = J[t]?.indexOf(o.name) ?? (s.includes(t) ? 0 : -1),
a = n.findIndex(e => {
let [t] = e;
return t < i;
});
n.splice(-1 === a ? n.length : a, 0, [i, e]);
});
}),
Object.fromEntries(
Object.entries(r).map(e => {
let [t, n] = e;
return [
t,
n.map(e => {
let [t, n] = e;
return n;
})
];
})
)
);
}
function z() {
const e = {
submodules: [],
global: {},
bidder: {},
combined: {},
refresh() {
let t =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: [];
const n = new Set(t.map(e => e.submodule));
(e.submodules = e.submodules
.filter(e => !n.has(e.submodule))
.concat(t)),
(function() {
const t = Y(
e.submodules,
e => Object.keys(e.idObj ?? {}),
e => e.submodule
),
n = {},
r = {};
function o(e, t, n) {
return function() {
for (const {
allowed: r,
bidders: o,
module: s
} of n) {
if (
!T.isAllowed(
S.yl,
(0, D.s)(w.fW, s?.config?.name, { init: !1 })
)
)
continue;
const i = s.idObj?.[e];
if (null != i) {
if (r) return s;
if (t) {
const t = e =>
e
.map(e => e.module.submodule.name)
.join(‘, ‘);
return (
(0, u.JE)(
`userID modules ${t(
n
)} provide the same ID (‘${e}’); ${
s.submodule.name
} is the preferred source, but it’s configured only for some bidders, unlike ${t(
n.filter(e => null == e.bidders)
)}. Other bidders will not see the “${e}” ID.`
),
null
);
}
if (null == o) return null;
}
}
return null;
};
}
Object.entries(t).forEach(e => {
let [t, s] = e,
i = !0;
const a = new Set();
(s = s.map(e => {
let t = null;
return (
Array.isArray(e.config.bidders) &&
e.config.bidders.length > 0
? ((t = e.config.bidders),
t.forEach(e => a.add(e)))
: (i = !1),
{ module: e, bidders: t }
);
})),
i ||
(n[t] = o(
t,
!0,
s.map(e => {
let { bidders: t, module: n } = e;
return {
allowed: null == t,
bidders: t,
module: n
};
})
)),
a.forEach(e => {
(r[e] = r[e] ?? {}),
(r[e][t] = o(
t,
!1,
s.map(t => {
let { bidders: n, module: r } = t;
return {
allowed: n?.includes(e),
bidders: n,
module: r
};
})
));
});
});
const s = Object.values(r)
.concat([n])
.reduce((e, t) => Object.assign(e, t), {});
Object.assign(e, { global: n, bidder: r, combined: s });
})();
}
};
return e;
}
function X(e) {
let { adUnits: t, ortb2Fragments: n } = e;
if (
((n = n ?? { global: {}, bidder: {} }),
(function(e) {
const { global: t, bidder: n } = e,
{ global: r, bidder: o } = C,
s = f(r);
s.length > 0 &&
(0, m.J)(
t,
‘user.ext.eids’,
(t.user?.ext?.eids ?? []).concat(s)
),
Object.entries(o).forEach(e => {
let [t, r] = e;
const o = f(r);
o.length > 0 &&
(0, m.J)(
n,
`${t}.user.ext.eids`,
(n[t]?.user?.ext?.eids ?? []).concat(o)
);
});
})(n),
[t].some(e => !Array.isArray(e) || !e.length))
)
return;
const r = K(C.global),
o = n.global.user?.ext?.eids || [];
t.forEach(e => {
e.bids &&
(0, u.cy)(e.bids) &&
e.bids.forEach(e => {
const t = Object.assign({}, r, K(C.bidder[e.bidder] ?? {})),
s = o.concat(n.bidder?.[e.bidder]?.user?.ext?.eids || []);
Object.keys(t).length > 0 && (e.userId = t),
s.length > 0 && (e.userIdAsEids = s);
});
});
}
const Z = {};
let ee;
function te() {
let e =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: ie() || [];
const t = _ && e.find(e => e.source === _);
if (t && ‘string’ == typeof t?.uids?.[0]?.id) {
const e = t.uids[0].id.replace(/[W_]/g, ”);
if (e.length >= 32 && e.length <= 150) return e;
(0, u.JE)(
`User ID – Googletag Publisher Provided ID for ${_} is not between 32 and 150 characters – ${e}`
);
}
}
const ne = (0, p.Ak)(‘userId’, function(e, t) {
let { mkDelay: n = h.cb, getIds: r = ge } =
arguments.length > 2 && void 0 !== arguments[2]
? arguments[2]
: {};
h.U9.race([r().catch(() => null), n(L)]).then(() => {
X(t),
V().join((0, p.BO)(t.metrics), {
propagate: !1,
includeGroups: !0
}),
e.call(this, t);
});
}),
re = (0, p.Ak)(‘userId’, function(e, t) {
X(t), e.call(this, t);
});
function oe() {
return !!O.gH.getHooks({ hook: ne }).length;
}
function se() {
return K(C.combined);
}
function ie() {
return f(C.combined);
}
function ae(e) {
return ie().filter(t => t.source === e)[0];
}
function ce(e, t, n) {
return de().then(() => {
let r = {};
if ((0, u.fp)(n)) {
(0, u.fH)(
`${k} – Getting encrypted signal from custom function : ${n.name} & source : ${e} `
);
const t = n(e);
r[e] = t ? ue(t) : null;
} else {
const n = ae(e);
(0, u.fH)(
`${k} – Getting encrypted signal for eids :${JSON.stringify(
n
)}`
),
(0, u.Im)(n) ||
(r[n.source] = !0 === t ? ue(n) : n.uids[0].id);
}
return (
(0, u.fH)(`${k} – Fetching encrypted eids: ${r[e]}`), r[e]
);
});
}
function ue(e) {
let t =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: 1,
n = ”;
if (1 === t)
n =
‘object’ == typeof e
? window.btoa(JSON.stringify(e))
: window.btoa(e);
return `${t}||${n}`;
}
function le() {
if (!(0, u.II)()) return;
window.googletag.secureSignalProviders =
window.googletag.secureSignalProviders || [];
const e = o.$W.getConfig(‘userSync.encryptedSignalSources’);
if (e) {
const t = e.registerDelay || 0;
setTimeout(() => {
e.sources &&
e.sources.forEach(e => {
let { source: t, encrypt: n, customFunc: r } = e;
t.forEach(e => {
window.googletag.secureSignalProviders.push({
id: e,
collectorFunction: () => ce(e, n, r)
});
});
});
}, t);
} else
(0, u.JE)(
`${k} – ESP : encryptedSignalSources config not defined under userSync Object`
);
}
function de(e) {
return ee(e).then(
() => se(),
e =>
e === Z
? Promise.resolve().then(ge)
: ((0, u.vV)(‘Error initializing userId’, e),
h.U9.reject(e))
);
}
function fe() {
let { submoduleNames: e } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {},
t = arguments.length > 1 ? arguments[1] : void 0;
return de({ refresh: !0, submoduleNames: e }).then(
e => (t && (0, u.fp)(t) && t(), e)
);
}
function ge() {
return de();
}
function me() {
let e = Number(I.SL.hash);
const t = [];
for (; e > 0; ) t.push(String.fromCharCode(255 & e)), (e >>>= 8);
return btoa(t.join());
}
function be(e, t) {
const n = I.SL.getConsentData();
if (e.config.storage) {
let r,
o = B(e),
s = !1;
if (‘number’ == typeof e.config.storage.refreshInSeconds) {
const t = new Date(B(e, ‘last’));
s =
t &&
Date.now() – t.getTime() >
1e3 * e.config.storage.refreshInSeconds;
}
if (
!o ||
s ||
t ||
(function(e) {
const t = B(e, ‘cst’);
return !t || t !== me();
})(e)
) {
const t = Object.assign(
{ enabledStorageTypes: e.enabledStorageTypes },
e.config
);
r = e.submodule.getId(t, n, o);
} else
‘function’ == typeof e.submodule.extendId &&
(r = e.submodule.extendId(e.config, n, o));
(0, u.Qd)(r) &&
(r.id && (G(e, r.id), (o = r.id)),
‘function’ == typeof r.callback && (e.callback = r.callback)),
o && (e.idObj = e.submodule.decode(o, e.config));
} else if (e.config.value) e.idObj = e.config.value;
else {
const t = e.submodule.getId(e.config, n);
(0, u.Qd)(t) &&
(‘function’ == typeof t.callback && (e.callback = t.callback),
t.id && (e.idObj = e.submodule.decode(t.id, e.config)));
}
}
function he(e) {
const t = f(e.combined);
if (t.length && _) {
const e = te(t);
e &&
((0, u.II)()
? window.googletag.pubads().setPublisherProvidedId(e)
: ((window.googletag = window.googletag || {}),
(window.googletag.cmd = window.googletag.cmd || []),
window.googletag.cmd.push(function() {
window.googletag.pubads().setPublisherProvidedId(e);
})));
}
}
function pe(e, t) {
let n =
arguments.length > 2 && void 0 !== arguments[2] && arguments[2];
return V()
.fork()
.measureTime(‘userId.init.modules’, function() {
if (!t.length) return [];
if (
(t.forEach(e => ve(e)),
!(t = t.filter(
e =>
(!e.config.storage || !!e.enabledStorageTypes.length) &&
T.isAllowed(S.yl, (0, D.s)(w.fW, e.config.name))
)).length)
)
return (0, u.JE)(`${k} – no ID module configured`), [];
const r = t.reduce(
(e, t) =>
F(t.submodule.name).measureTime(‘init’, () => {
try {
be(t, n), e.push(t);
} catch (e) {
(0, u.vV)(
`Error in userID module ‘${t.submodule.name}’:`,
e
);
}
return e;
}),
[]
);
return e.refresh(r), he(e), r;
});
}
function ye(e) {
return e?.storage?.type?.trim().split(/s*&s*/) || [];
}
function Ie(e) {
function t(e) {
for (
var t = arguments.length,
n = new Array(t > 1 ? t – 1 : 0),
r = 1;
r < t;
r++
)
n[r – 1] = arguments[r];
(0, u.JE)(`Invalid userSync.userId config: ${e}`, …n);
}
return Array.isArray(e)
? e.filter(e => {
if (!e?.name) return t(‘must specify “name”‘, e);
if (e.storage) {
if (!e.storage.name || !e.storage.type)
return t(
‘must specify “storage.name” and “storage.type”‘,
e
);
if (
!(function(e) {
return ye(e).every(e => we.has(e));
})(e)
)
return t(‘invalid “storage.type”‘, e);
[‘expires’, ‘refreshInSeconds’].forEach(n => {
let r = e.storage[n];
null != r &&
‘number’ != typeof r &&
((r = Number(r)),
isNaN(r)
? (t(
`storage.${n} must be a number and will be ignored`,
e
),
delete e.storage[n])
: (e.storage[n] = r));
});
}
return !0;
})
: (null != e && t(‘must be an array’, e), []);
}
const we = new Set([j, $]);
function ve(e) {
if (e.enabledStorageTypes) return;
const t = ye(e.config);
e.enabledStorageTypes = t.filter(t => {
switch (t) {
case j:
return (function(e) {
return !(
!e.storageMgr.localStorageIsEnabled() ||
(U.getDataFromLocalStorage(A) &&
((0, u.fH)(
`${k} – opt-out localStorage found, storage disabled`
),
1))
);
})(e);
case $:
return (function(e) {
return !(
!e.storageMgr.cookiesAreEnabled() ||
(U.getCookie(A) &&
((0, u.fH)(
`${k} – opt-out cookie found, storage disabled`
),
1))
);
})(e);
}
return !1;
});
}
function Se(e) {
l.clear(),
Object.entries(
Y(
e,
e => Object.keys(e.eids || {}),
e => e
)
).forEach(e => {
let [t, n] = e;
return l.set(t, n[0].eids[t]);
});
}
function De() {
Se(q);
const e = Ie(M);
if (!e.length) return;
const t = q.filter(e => !(H || []).find(t => t.name === e.name));
H.splice(0, H.length),
t
.map(t => {
const n = (e || []).find(
e =>
e.name &&
(e.name.toLowerCase() === t.name.toLowerCase() ||
(t.aliasName &&
e.name.toLowerCase() === t.aliasName.toLowerCase()))
);
return (
n && t.name !== n.name && (n.name = t.name),
n
? {
submodule: t,
config: n,
callback: void 0,
idObj: void 0,
storageMgr: (0, g.vM)({
moduleType: w.fW,
moduleName: n.name
})
}
: null
);
})
.filter(e => null !== e)
.forEach(e => H.push(e)),
H.length &&
(oe() ||
(O.gH.getHooks({ hook: re }).remove(),
O.gH.before(ne, 100),
i.Ay.callDataDeletionRequest.before(Ee),
b.Q.after(e => e(te()))),
(0, u.fH)(
`${k} – usersync config updated for ${H.length} submodules: `,
H.map(e => e.submodule.name)
));
}
function Ee(e) {
for (
var t = arguments.length,
n = new Array(t > 1 ? t – 1 : 0),
r = 1;
r < t;
r++
)
n[r – 1] = arguments[r];
(0, u.fH)(
‘UserID: received data deletion request; deleting all stored IDs…’
),
H.forEach(e => {
if (‘function’ == typeof e.submodule.onDataDeletionRequest)
try {
e.submodule.onDataDeletionRequest(
e.config,
e.idObj,
…n
);
} catch (t) {
(0, u.vV)(
`Error calling onDataDeletionRequest for ID submodule ${e.submodule.name}`,
t
);
}
R(e);
}),
e.apply(this, n);
}
function Oe(e) {
return function() {
return Promise.resolve(e.apply(this, arguments));
};
}
function ke(e) {
let { mkDelay: t = h.cb } =
arguments.length > 1 && void 0 !== arguments[1]
? arguments[1]
: {};
(_ = void 0),
(H = []),
(M = []),
(C = z()),
(ee = (function() {
let { mkDelay: e = h.cb } =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
const t = (0, h.v6)(),
n = (0, h.v6)();
let r,
o,
i = !1;
function l(e) {
return (
(o = V().fork()),
null != r && r.reject(Z),
(r = (0, h.v6)()),
h.U9.race([e, r.promise]).finally(
o.startTiming(‘userId.total’)
)
);
}
let d = C,
f = H;
function g(e) {
return function() {
if (d === C && f === H) return e(…arguments);
};
}
function m() {
return I.SL.promise.finally(
o.startTiming(‘userId.init.consent’)
);
}
let b = l(
h.U9.all([c.Gc, t.promise])
.then(m)
.then(
g(() => {
pe(d, f);
})
)
.then(() =>
n.promise.finally(
o.startTiming(‘userId.callbacks.pending’)
)
)
.then(
g(() => {
const e = d.submodules.filter(e =>
(0, u.fp)(e.callback)
);
if (e.length) return new h.U9(t => Q(e, t, d));
})
)
);
return function() {
let {
refresh: r = !1,
submoduleNames: o = null,
ready: c = !1
} =
arguments.length > 0 && void 0 !== arguments[0]
? arguments[0]
: {};
return (
c &&
!i &&
((i = !0),
t.resolve(),
L > 0
? n.resolve()
: s.on(a.qY.AUCTION_END, function t() {
s.AU(a.qY.AUCTION_END, t), e(N).then(n.resolve);
})),
r &&
i &&
(b = l(
b
.catch(() => null)
.then(m)
.then(
g(() => {
const e = pe(
d,
f.filter(
e =>
null == o || o.includes(e.submodule.name)
),
!0
).filter(e => null != e.callback);
if (e.length) return new h.U9(t => Q(e, t, d));
})
)
)),
b
);
};
})({ mkDelay: t })),
null != P && P(),
(q = []),
(P = e.getConfig(‘userSync’, e => {
const t = e.userSync;
t &&
((_ = t.ppid),
t.userIds &&
((M = t.userIds),
(N = (0, u.Et)(t.syncDelay)
? t.syncDelay
: E.qh.syncDelay),
(L = (0, u.Et)(t.auctionDelay)
? t.auctionDelay
: E.qh.auctionDelay),
De(),
(function(e, t) {
if (e) {
const n = {},
r = new Map(
t.map(e =>
e.aliasName ? [e.aliasName, e.name] : []
)
);
Object.keys(e).forEach(t => {
const o = (0, u.cy)(e[t])
? […e[t]].reverse()
: [];
n[t] = o.map(e => (r.has(e) ? r.get(e) : e));
}),
(J = n);
} else J = {};
C.refresh(), Se(t);
})(t.idPriority, q),
ee({ ready: !0 })));
})),
((0, r.m)().getUserIds = se),
((0, r.m)().getUserIdsAsEids = ie),
((0, r.m)().getEncryptedEidsForSource = Oe(ce)),
((0, r.m)().registerSignalSources = le),
((0, r.m)().refreshUserIds = Oe(fe)),
((0, r.m)().getUserIdsAsync = Oe(ge)),
((0, r.m)().getUserIdsAsEidBySource = ae),
oe() || O.gH.before(re, 100);
}
ke(o.$W),
(0, c.xG)(
‘userId’,
function(e) {
(e.findRootDomain = y.S),
(q || []).find(t => t.name === e.name) ||
(q.push(e),
I.o2.register(w.fW, e.name, e.gvlid),
De(),
ee({ refresh: !0, submoduleNames: [e.name] }));
},
{ postInstallAllowed: !0 }
),
(0, r.E)(‘userId’);
}
},
e => {
e.O(0, [802, 769, 139, 85], () => {
return (t = 4836), e((e.s = t));
var t;
});
e.O();
}
]);
})(),
tlpbjs.processQueue();

tlpbjs.config = {};
tlpbjs.config.domain = window.location.hostname.replace(‘www.’, ”);
if (account) {
tlpbjs.config.account = account;
} else {
tlpbjs.config.account = ‘tl’;
}
tlpbjs.config.debug = window.location.search.indexOf(‘tlpbjs=debug’) > -1;
tlpbjs.defineSlot = window.googletag.defineSlot;

tlpbjs.nativeRender = function(state) {
var winners = tlpbjs.getHighestCpmBids([state.divId]);
if (tlpbjs.config.debug) console.log(‘tlpbjs: winners: ‘ + winners.length);
for (var i = 0; i < winners.length; i++) {
var winningBid = winners[i];
if (winningBid && winningBid.adId) {
if (tlpbjs.config.debug)
console.log(‘tlpbjs: winning bid id: ‘ + winningBid.adId);
if (state.div) {
state.div.innerHTML = ”;
state.div.align = ‘center’;
state.div.style = ‘padding:0;margin:0;border:0pt none;’;
let iframe = document.createElement(‘iframe’);
iframe.frameBorder = 0;
iframe.setAttribute(‘marginwidth’, ‘0’);
iframe.setAttribute(‘marginheight’, ‘0’);
iframe.scrolling = ‘no’;
iframe.style =
‘overflow:hidden;display:block;border-style:none;border:0px;’;
state.div.appendChild(iframe);
var iframeDoc = iframe.contentWindow.document;
tlpbjs.renderAd(iframeDoc, winningBid.adId);
}
}
}
};

tlpbjs.tlRequestBids = function(state) {
if (state.gamSlotId) {
tlpbjs.requestBids({
adUnitCodes: [state.gamSlot.getSlotElementId()],
bidsBackHandler: function() {
tlpbjs.setTargetingForGPTAsync([state.gamSlot.getSlotElementId()]);
googletag.pubads().refresh([state.gamSlot]);
}
});
} else {
tlpbjs.requestBids({
adUnitCodes: [state.divId],
bidsBackHandler: function() {
tlpbjs.nativeRender(state);
}
});
}
};

tlpbjs.getPPID = function() {
if (localStorage) {
var permutive_id = localStorage.getItem(‘permutive-id’);
if (permutive_id) {
return permutive_id;
} else {
var teal_id = localStorage.getItem(‘teal-id’);
if (teal_id) {
return teal_id;
}
var newUUID = crypto
? crypto.randomUUID().toString()
: Math.random()
.toString()
.replace(‘0.’, ”) +
Math.random()
.toString()
.replace(‘0.’, ”);
localStorage.setItem(‘teal-id’, newUUID);
return newUUID;
}
} else {
return new crypto()
? crypto.randomUUID().toString()
: Math.random()
.toString()
.replace(‘0.’, ”) +
Math.random()
.toString()
.replace(‘0.’, ”);
}
};

tlpbjs.que.push(function() {
tlpbjs.setConfig({
s2sConfig: {
accountId: tlpbjs.config.account,
bidders: [‘teal-s2s’],
timeout: 2200,
maxTimeout: 2200,
enabled: true,
adapter: ‘prebidServer’,
endpoint: ‘https://a.bids.ws/openrtb2/auction’,
syncEndpoint: ‘https://a.bids.ws/cookie_sync’,
coopSync: true,
allowUnknownBidderCodes: true
},
ortb2: {
ext: {
prebid: {
storedrequest: {
id: tlpbjs.config.account
}
}
}
},
useBidCache: true,
bidderTimeout: 2500,
enableTIDs: true,
bidderSequence: ‘random’,
enableSendAllBids: false,
auctionOptions: {
suppressStaleRender: true
},
consentManagement: {
usp: {
cmpApi: ‘iab’,
timeout: 0
},
…(typeof __tcfapi === ‘function’ && {
gdpr: {
cmpApi: ‘iab’,
allowAuctionWithoutConsent: true,
timeout: 0,
defaultGdprScope: true
}
})
},
userSync: {
ppid: tlpbjs.config.domain,
filterSettings: {
iframe: {
bidders: ‘*’,
filter: ‘include’
}
},
userIds: [
{
name: ‘pubProvidedId’,
params: {
eids: [
{
source: tlpbjs.config.domain,
uids: [
{
id: tlpbjs.getPPID(),
atype: 1,
ext: {
stype: ‘ppuid’
}
}
]
}
]
}
},
{
name: ‘criteo’
},
{
name: ‘sharedId’,
storage: {
name: ‘_sharedID’,
type: ‘cookie’,
expires: 365
}
}
]
}
});
tlpbjs.bidderSettings = {
standard: {
adserverTargeting: [
{
key: ‘tl_bidder’,
val: function(bidResponse) {
return bidResponse.bidderCode;
}
},
{
key: ‘tl_adid’,
val: function(bidResponse) {
return bidResponse.adId;
}
},
{
key: ‘tl_pb’,
val: function(bidResponse) {
return bidResponse.pbHg;
}
},
{
key: ‘tl_size’,
val: function(bidResponse) {
return bidResponse.size;
}
},
{
key: ‘tl_source’,
val: function(bidResponse) {
return bidResponse.source;
}
},
{
key: ‘tl_format’,
val: function(bidResponse) {
return bidResponse.mediaType;
}
}
]
}
};
tlpbjs.onEvent(‘beforeRequestBids’, function(adUnits) {
adUnits.forEach(a => {
if (a.mediaTypes && a.mediaTypes.banner && a.mediaTypes.banner.sizes) {
delete a.mediaTypes.banner.sizes;
}
});
});
window.pbjs = window.pbjs || window.tlpbjs;
});

tlpbjs.renderTlDynamicAd = function(state) {
tlpbjs.que.push(function() {
if (!tlpbjs.adUnits.find(e => e.code === state.divId)) {
var new_unit = [
{
code: state.divId,
mediaTypes: {
banner: {
sizes: [[1, 1]]
}
},
ortb2Imp: {
ext: {
prebid: {
storedrequest: {
id: state.storedImp
},
…(window.location.search.indexOf(‘tl=test’) > -1 && {
storedauctionresponse: { id: ‘test-placement300x250’ }
})
}
}
},
bids: [
{
bidder: ‘teal-s2s’
}
]
}
];
tlpbjs.addAdUnits(new_unit);
}

var other_eids;
if (window.owpbjs && window.owpbjs.getUserIdsAsEids) {
other_eids = window.owpbjs.getUserIdsAsEids();
} else if (window.ihowpbjs && window.ihowpbjs.getUserIdsAsEids) {
other_eids = window.ihowpbjs.getUserIdsAsEids();
} else if (window.pbjs && window.pbjs.getUserIdsAsEids) {
other_eids = window.pbjs.getUserIdsAsEids();
}
if (other_eids && other_eids.filter) {
other_eids = other_eids.filter(
e =>
![‘criteo.com’, tlpbjs.config.domain, ‘pubcid.org’].includes(
e[‘source’]
)
);
tlpbjs.mergeConfig({
ortb2: {
user: {
ext: {
eids: other_eids
}
}
}
});
}

tlpbjs.tlRequestBids(state);
});
};

tlpbjs.initGam = function(state) {
window.googletag = window.googletag || { cmd: [] };
window.googletag.cmd.push(function() {
if (state.gamSlotId) {
state.gamSlot = window.googletag
.pubads()
.getSlots()
.find(element => element.getSlotElementId() === state.divId);
if (!state.gamSlot) {
if (state.size && Array.isArray(state.size)) {
if (!state.size.includes(1)) {
state.size = [state.size, [1, 1]];
}
} else {
state.size = [[1, 1]];
}
state.gamSlot = tlpbjs
.defineSlot(state.gamSlotId, state.size, state.divId)
.addService(googletag.pubads());
} else {
var sizes = state.gamSlot.getSizes();
if (!sizes.find(e => e[‘width’] == 1)) {
var sizeArray = [[1, 1]];
sizes.forEach(e => sizeArray.push([e[‘width’], e[‘height’]]));
state.gamSlot.defineSizeMapping(
googletag
.sizeMapping()
.addSize([0, 0], sizeArray)
.build()
);
}
}
}
});
};
}

function triggerTealReplace(account) {
window.googletag = window.googletag || { cmd: [] };
window.googletag.cmd.push(function() {
if (window.location.search.indexOf(‘tl=disable’) > -1) return;
var identifier = ‘recovered-ad-slot-‘;
var gptDefineSlot = window.googletag.defineSlot;
var adCounter = 0;

if (!window.tlpbjs || !window.tlpbjs.config)
loadTlpbjs(account ? account : ‘npg’);

function defineSlotOverride(adUnitPath, sizes, divId) {
//only pass 0,0 if parent node has recovered child already
var div = document.getElementById(divId);
var emptyParent = true;
if (
div.parentNode &&
div.parentNode.children &&
div.parentNode.children.forEach
) {
div.parentNode.children.forEach(e => {
if (e.id.startsWith(identifier)) {
emptyParent = false;
}
});
}
var slot = gptDefineSlot(adUnitPath, emptyParent ? sizes : [0, 0], divId);
runAuctionForSlot(divId, slot.getSizes());
return slot;
}
function runAuctionForSlot(divId, sizes, isRefresh) {
//check sizes – don’t render if width or height <= 2 (1×1,2×2 etc.)
var tooSmall = false;
var maxSize = [0, 0];
if (sizes && sizes[0]) {
if (Number.isInteger(sizes[0])) {
maxSize = sizes;
} else {
sizes.forEach(e => {
if (Array.isArray(e) && e[0] > maxSize[0]) {
maxSize[0] = e[0];
} else if (e.width > maxSize[0]) {
maxSize[0] = e.width;
}
if (Array.isArray(e) && e[1] > maxSize[1]) {
maxSize[1] = e[1];
} else if (e.height > maxSize[1]) {
maxSize[1] = e.height;
}
});
}
if (maxSize[0] <= 2 || maxSize[1] <= 2) {
tooSmall = true;
}
} else {
tooSmall = true;
}
var slot = document.getElementById(divId);
if (slot) {
//check to see if there is already an recovered slot in parent
var emptyParent = true;
if (
slot.parentNode &&
slot.parentNode.children &&
slot.parentNode.children.forEach
) {
slot.parentNode.children.forEach(e => {
if (e.id.startsWith(identifier)) {
emptyParent = false;
}
});
}
if (emptyParent || isRefresh) {
slot.innerHTML = ”;
if (!isRefresh) slot.id = identifier + adCounter++;
if (!tooSmall) {
var urlParams = new URLSearchParams(window.location.search);
var state = {
divId: slot.id,
div: slot,
…(urlParams.get(‘tlgamslot’) && {
gamSlotId: urlParams.get(‘tlgamslot’)
}),
size: maxSize
};

if (maxSize[0] >= 728) state.storedImp = ‘recovered728x90’;
else if (maxSize[0] <= 160) state.storedImp = ‘recovered160x600’;
else if (maxSize[1] >= 250) state.storedImp = ‘recovered300x250’;
else if (maxSize[0] >= 320) state.storedImp = ‘recovered320x100’;

if (state.storedImp) {
if (state.gamSlotId) {
if (isRefresh)
state.gamSlot = window.googletag
.pubads()
.getSlots()
.find(
element => element.getSlotElementId() === state.divId
);
else window.tlpbjs.initGam(state);
}
window.tlpbjs.renderTlDynamicAd(state);
observeSlotInView(state); //start refresh timer
}
}
}
}
}

function observeSlotInView(state) {
var observer = new IntersectionObserver(
function(entries) {
entries.forEach(entry => {
if (entry.isIntersecting) {
observer.unobserve(state.div); // Stop observing once in view
setTimeout(
() => runAuctionForSlot(state.divId, state.size, true),
30000
); // Call after 30 seconds
}
});
},
{ threshold: 0.1 }
); // Trigger when at least 10% of the slot is in view

observer.observe(state.div);
}

window.googletag.defineSlot = defineSlotOverride;
window.googletag
.pubads()
.getSlots()
.forEach(e => {
runAuctionForSlot(e.getSlotElementId(), e.getSizes());
});
});
}

circle-arrow

Play Button

Stop Button

chevron-right

chevron-left

chevron-up

search

warning

chevron-left-skinny

chevron-right-skinny

x

clock

calendar

play-button

cancel-circle

user

twitter

facebook

youtube

instagram

email

linkedin

Skip to Content

(Update: Adding COCC statement, more details of agreement)

BEND, Ore. (KTVZ) — A tentative agreement that includes raises of up to 25% has been reached in last-minute talks on a new contract for more than 100 classified employees at Central Oregon Community College, their union announced, just hours before a possible first-ever strike at COCC was to begin early Thursday morning.

“COCC administrators have listened to reason and made the laudable choice to listen to the voices of their classified staff instead of fighting against living wages for college employees,” the union announced Wednesday afternoon.

COCC officials said the deal includes 15% in raises over the three-year agreement, costing the college $1.9 million.

Oregon Education Association representative Rachel Gumpert told KTVZ News she could not confirm full details of the proposed contract before members review it, but added: “One thing I can share (and frankly the most important): Raises of up to 25% for the lowest-paid members.”

If not averted, this would have been the second strike ever at an Oregon community college. At Portland Community College, a tentative agreement was reached Monday to end a nearly three-week strike by its faculty union, KGW reported.


Here is COCC’s news release on the agreement:

COCC and Classified Association Reach Tentative Agreement

Central Oregon Community College (COCC) and the Classified Association of COCC (CACOCC/OEA) have reached a tentative agreement on a new collective bargaining contract for 2025-2028, following ongoing negotiations. The tentative agreement is subject to ratification by union membership and approval by the COCC Board of Directors. 

“We are pleased to have reached a tentative agreement through continued dialogue and good-faith negotiations,†said Greg Pereira, COCC president. “This agreement reflects a shared commitment to supporting our employees while maintaining the College's responsibility to students and the long-term health of the institution.â€Â 

The agreement outlines a 3-year contract and includes a wage and step increase totaling approximately $1.9 million over a 3-year contract period, including additional benefits to Classified employees. The tentative agreement includes: 

  • Compensation: A 6% wage increase in the first year, 4.5% increase in the second and 4.5% increase in the third year of the contract 
  • Benefits: The agreement also includes a change to tiered insurance rates for the classified bargaining members. This allows savings to these employees and the College. 

Negotiations between the College and the union have been ongoing for more than a year under Oregon's public collective bargaining framework, with recent mediation sessions helping both parties move toward resolution.   

“We appreciate the time, effort and collaboration from all involved in reaching this tentative agreement,†said Erica Skatvold, chair of the COCC Board of Directors. “Our focus throughout this process has been to support our employees while ensuring we remain financially sustainable and able to serve our students and community. We are grateful to have the opportunity to bring this to closure.â€Â 

CACOCC members are reviewing the tentative agreement the afternoon of April 1 and will be voting this evening. If ratified by CACOCC, and approved by the COCC Board of Directors, the agreement will take effect as of July 1, 2025 and continue through June 30, 2028. 

COCC will continue to share updates as the ratification process moves forward at: https://cocc.edu/negotiations. 


Here is the full news release from the union:

BREAKING: TENTATIVE AGREEMENT HAS BEEN REACHED 

STATEMENT FROM THE CLASSIFIED ASSOCIATION OF COCC 

The Classified Association of Central Oregon Community College has released the following statement:

“A tentative agreement that could avert strike has been reached. COCC Administrators have listened to reason and made the laudable choice to listen to the voices of their classified staff instead of fighting against living wages for college employees.

The unwavering unity of Bend and our entire Central Oregon community is what flipped the balance of power and brought us this victory, as well as the vision, dedication, and unbowed spirit of every custodian, grounds keeper, library worker, IT specialist, and essential classified worker at COCC who refused to believe that their labor does not deserve dignity.

Without the courage of COCC classified staff, our union's members, victory would never have been possible. We got here by interrupting business as usual to speak out about what's really been happening at COCC, and exposing poverty wages that had brought employees and their families to their knees.

 CACOCC members have spoken extensively in public about the most dehumanizing and degrading experiences of our lives to illustrate the injustice of our wages for more than a year, including CACOCC members who were unable to afford pain management for their cancer treatments, and who were actively homeless and experiencing daily hunger. 

This is unacceptable for any workplace, any industry, at any standard. Yet it happens to public school and college educators in Oregon far too often: lives of educators and stability for students thrown into constant hardship and chaos because of the impact of poverty wages in destabilizing and disrupting our statewide public education system.

All labor has dignity. Together, we've won it for ourselves at COCC. 

Thank you to the members of the media who have helped tell our stories for months, and to the brave, incredible students who have continually supported us, joined us, and encouraged us to not stand down in our pursuit for living wages. 

To our COCC Union siblings in COCCFF, the also-OEA affiliated COCC Faculty Union, simply: Thank you; we will never forget. Being able to rely on your unending unity and support has been essential in our preparedness for what would have been a 2-3 month long strike, and without your commitment to honoring the strike, we would not have had the power we did to avert it. You are leaders in our college community, and as you continue your own negotiations with COCC, we will adamantly be there every step of the way to vocally support you. 

CACOCC members are meeting now to review the full contents of the new tentative agreement, and will be deciding whether to approve or reject the agreement this evening. 

Ratification voting for the tentative agreement is already underway, and will conclude this evening at 6pm. 

Once ratification voting is completed, we will proudly share all details of the historic new agreement — which is by far the best agreement ever secured for classified staff at this college, and will provide raises of up to 25% for the lowest-paid members, on top of new health insurance savings– as well as ratification results this evening. 

If ratification of the contract passes, as it is resoundingly expected to, the strike set to begin tomorrow at 5 am and last indefinitely will officially be averted and called off. 

Thank you again to our community, students, and colleagues for standing fiercely beside us, and over 18 months not wavering once in our pursuit of justice for the lowest paid employees at COCC. 

Living wages are a core human right, and this union stands united in our central belief that all labor, including ours, has irrevocable dignity.”

Author Profile Photo

Barney Lerten

Barney is the Digital Content Director for KTVZ News. Learn more about Barney here.

BE PART OF THE CONVERSATION

KTVZ is committed to providing a forum for civil and constructive conversation.

Please keep your comments respectful and relevant. You can review our Community Guidelines by clicking here

If you would like to share a story idea, please submit it here.