commit 3e03556575f8f20b36029e4b4caa128e12137c5a Author: devin Date: Fri Nov 7 16:07:14 2025 +0800 上传文件至 / diff --git a/ads.txt b/ads.txt new file mode 100644 index 0000000..e62505e --- /dev/null +++ b/ads.txt @@ -0,0 +1 @@ +google.com, pub-5664846702711141, DIRECT, f08c47fec0942fa0 diff --git a/adsbycqsjd.pb.js b/adsbycqsjd.pb.js new file mode 100644 index 0000000..1c211a6 --- /dev/null +++ b/adsbycqsjd.pb.js @@ -0,0 +1,24 @@ +/* roockmobile.prebid.js v9.50.0 +Updated: 2025-08-11 +Modules: roockmobileBidAdapter */ +if (window.pbjs && window.pbjs.libLoaded) try { window.pbjs.getConfig("debug") && console.warn("Attempted to load a copy of Prebid.js that clashes with the existing 'pbjs' instance. Load aborted.") } catch (e) { } else (function () { + (() => { + var r, t = { + 433: (r, t, e) => { function n(r, t, e, n, o) { for (t = t.split ? t.split(".") : t, n = 0; n < t.length; n++)r = r ? r[t[n]] : o; return r === o ? e : r } e.d(t, { A: () => n }) }, 128: r => { + /* + * @license MIT + * Fun Hooks v1.1.0 + * (c) @snapwich + */ + i.SYNC = 1, i.ASYNC = 2, i.QUEUE = 4; var t = "fun-hooks", e = Object.freeze({ ready: 0 }), n = new WeakMap; function o(r, t) { return Array.prototype.slice.call(r, t) } function i(r) { var a, f = {}, c = []; function u(r, t) { return "function" == typeof r ? s.call(null, "sync", r, t) : "string" == typeof r && "function" == typeof t ? s.apply(null, arguments) : "object" == typeof r ? l.apply(null, arguments) : void 0 } function l(r, t, e) { var n = !0; void 0 === t && (t = Object.getOwnPropertyNames(r).filter((r => !r.match(/^_/))), n = !1); var o = {}, i = ["constructor"]; do { t.forEach((function (t) { var n = t.match(/(?:(sync|async):)?(.+)/), a = n[1] || "sync", f = n[2]; if (!o[f] && "function" == typeof r[f] && -1 === i.indexOf(f)) { var c = r[f]; o[f] = r[f] = s(a, c, e ? [e, f] : void 0) } })), r = Object.getPrototypeOf(r) } while (n && r); return o } function p(r) { var e = Array.isArray(r) ? r : r.split("."); return e.reduce((function (n, o, i) { var f = n[o], u = !1; return f || (i === e.length - 1 ? (a || c.push((function () { u || console.warn(t + ": referenced '" + r + "' but it was never created") })), n[o] = y((function (r) { n[o] = r, u = !0 }))) : n[o] = {}) }), f) } function y(r) { var t = [], e = [], o = function () { }, i = { before: function (r, e) { return f.call(this, t, "before", r, e) }, after: function (r, t) { return f.call(this, e, "after", r, t) }, getHooks: function (r) { var n = t.concat(e); "object" == typeof r && (n = n.filter((function (t) { return Object.keys(r).every((function (e) { return t[e] === r[e] })) }))); try { Object.assign(n, { remove: function () { return n.forEach((function (r) { r.remove() })), this } }) } catch (r) { console.error("error adding `remove` to array, did you modify Array.prototype?") } return n }, removeAll: function () { return this.getHooks().remove() } }, a = { install: function (n, i, a) { this.type = n, o = a, a(t, e), r && r(i) } }; return n.set(i.after, a), i; function f(r, n, i, a) { var f = { hook: i, type: n, priority: a || 10, remove: function () { var n = r.indexOf(f); -1 !== n && (r.splice(n, 1), o(t, e)) } }; return r.push(f), r.sort((function (r, t) { return t.priority - r.priority })), o(t, e), this } } function s(e, f, u) { var l = f.after && n.get(f.after); if (l) { if (l.type !== e) throw t + ": recreated hookable with different type"; return f } var s, v = u ? p(u) : y(), h = { get: function (r, t) { return v[t] || Reflect.get.apply(Reflect, arguments) } }; a || c.push(b); var d = new Proxy(f, h); return n.get(d.after).install(e, d, (function (r, t) { var n, i = []; r.length || t.length ? (r.forEach(a), n = i.push(void 0) - 1, t.forEach(a), s = function (r, t, a) { var f, c = i.slice(), u = 0, l = "async" === e && "function" == typeof a[a.length - 1] && a.pop(); function p(r) { "sync" === e ? f = r : l && l.apply(null, arguments) } function y(r) { if (c[u]) { var n = o(arguments); return y.bail = p, n.unshift(y), c[u++].apply(t, n) } "sync" === e ? f = r : l && l.apply(null, arguments) } return c[n] = function () { var n = o(arguments, 1); "async" === e && l && (delete y.bail, n.push(y)); var i = r.apply(t, n); "sync" === e && y(i) }, y.apply(null, a), f }) : s = void 0; function a(r) { i.push(r.hook) } b() })), d; function b() { !a && ("sync" !== e || r.ready & i.SYNC) && ("async" !== e || r.ready & i.ASYNC) ? "sync" !== e && r.ready & i.QUEUE ? h.apply = function () { var r = arguments; c.push((function () { d.apply(r[1], r[2]) })) } : h.apply = function () { throw t + ": hooked function not ready" } : h.apply = s } } return (r = Object.assign({}, e, r)).ready ? u.ready = function () { a = !0, function (r) { for (var t; t = r.shift();)t() }(c) } : a = !0, u.get = p, u } r.exports = i + }, 172: (r, t, e) => { function n(r, t, e) { t.split && (t = t.split(".")); for (var n, o, i = 0, a = t.length, f = r; i < a && "__proto__" != (o = "" + t[i++]) && "constructor" !== o && "prototype" !== o;)f = f[o] = i === a ? e : typeof (n = f[o]) == typeof t ? n : 0 * t[i] != 0 || ~("" + t[i]).indexOf(".") ? {} : [] } e.d(t, { J: () => n }) }, 751: (r, t, e) => { function n(r) { var t, e, o; if (Array.isArray(r)) { for (e = Array(t = r.length); t--;)e[t] = (o = r[t]) && "object" == typeof o ? n(o) : o; return e } if ("[object Object]" === Object.prototype.toString.call(r)) { for (t in e = {}, r) "__proto__" === t ? Object.defineProperty(e, t, { value: n(r[t]), configurable: !0, enumerable: !0, writable: !0 }) : e[t] = (o = r[t]) && "object" == typeof o ? n(o) : o; return e } return r } e.d(t, { Q: () => n }) } + }, e = {}; function n(r) { var o = e[r]; if (void 0 !== o) return o.exports; var i = e[r] = { exports: {} }; return t[r](i, i.exports, n), i.exports } n.m = t, r = [], n.O = (t, e, o, i) => { if (!e) { var a = 1 / 0; for (l = 0; l < r.length; l++) { e = r[l][0], o = r[l][1], i = r[l][2]; for (var f = !0, c = 0; c < e.length; c++)(!1 & i || a >= i) && Object.keys(n.O).every((r => n.O[r](e[c]))) ? e.splice(c--, 1) : (f = !1, i < a && (a = i)); if (f) { r.splice(l--, 1); var u = o(); void 0 !== u && (t = u) } } return t } i = i || 0; for (var l = r.length; l > 0 && r[l - 1][2] > i; l--)r[l] = r[l - 1]; r[l] = [e, o, i] }, n.n = r => { var t = r && r.__esModule ? () => r.default : () => r; return n.d(t, { a: t }), t }, n.d = (r, t) => { for (var e in t) n.o(t, e) && !n.o(r, e) && Object.defineProperty(r, e, { enumerable: !0, get: t[e] }) }, n.o = (r, t) => Object.prototype.hasOwnProperty.call(r, t), (() => { var r = { 673: 0 }; n.O.j = t => 0 === r[t]; var t = (t, e) => { var o, i, a = e[0], f = e[1], c = e[2], u = 0; if (a.some((t => 0 !== r[t]))) { for (o in f) n.o(f, o) && (n.m[o] = f[o]); if (c) var l = c(n) } for (t && t(e); u < a.length; u++)i = a[u], n.o(r, i) && r[i] && r[i][0](), r[i] = 0; return n.O(l) }, e = self.pbjsChunk = self.pbjsChunk || []; e.forEach(t.bind(null, 0)), e.push = t.bind(null, e.push.bind(e)) })(); var o = n.O(void 0, [802, 769, 139, 85], (() => n(940))); o = n.O(o) + })(); + (self.pbjsChunk = self.pbjsChunk || []).push([[802], { 789: (e, t, n) => { n.d(t, { A4: () => c, J7: () => l, Pg: () => u }); var i = n(580), r = n(69), o = n(873), s = n(569); const a = (0, o.m)(), d = "outstream"; function c(e) { const { url: t, config: n, id: o, callback: c, loaded: l, adUnitCode: u, renderNow: f } = e; this.url = t, this.config = n, this.handlers = {}, this.id = o, this.renderNow = f, this.adUnitCode = u, this.loaded = l, this.cmd = [], this.push = e => { "function" == typeof e ? this.loaded ? e.call() : this.cmd.push(e) : (0, r.vV)("Commands given to Renderer.push must be wrapped in a function") }, this.callback = c || (() => { this.loaded = !0, this.process() }), this.render = function () { const e = arguments, n = () => { this._render ? this._render.apply(this, e) : (0, r.JE)("No render function was provided, please use .setRender on the renderer") }; !function (e) { const t = a.adUnits.find((t => t.code === e)); if (!t) return !1; const n = t?.renderer, i = !!(n && n.url && n.render), r = t?.mediaTypes?.video?.renderer, o = !!(r && r.url && r.render); return !!(i && !0 !== n.backupOnly || o && !0 !== r.backupOnly) }(u) ? f ? n() : (this.cmd.unshift(n), (0, i.R)(t, s.tp, d, this.callback, this.documentContext)) : ((0, r.JE)(`External Js not loaded by Renderer since renderer url and callback is already defined on adUnit ${u}`), n()) }.bind(this) } function l(e) { return !(!e || !e.url && !e.renderNow) } function u(e, t, n) { let i = null; e.config && e.config.documentResolver && (i = e.config.documentResolver(t, document, n)), i || (i = document), e.documentContext = i, e.render(t, e.documentContext) } c.install = function (e) { let { url: t, config: n, id: i, callback: r, loaded: o, adUnitCode: s, renderNow: a } = e; return new c({ url: t, config: n, id: i, callback: r, loaded: o, adUnitCode: s, renderNow: a }) }, c.prototype.getConfig = function () { return this.config }, c.prototype.setRender = function (e) { this._render = e }, c.prototype.setEventHandlers = function (e) { this.handlers = e }, c.prototype.handleVideoEvent = function (e) { let { id: t, eventName: n } = e; "function" == typeof this.handlers[n] && this.handlers[n](), (0, r.OG)(`Prebid Renderer event for id ${t} type ${n}`) }, c.prototype.process = function () { for (; this.cmd.length > 0;)try { this.cmd.shift().call() } catch (e) { (0, r.vV)(`Error processing Renderer command on ad unit '${this.adUnitCode}':`, e) } } }, 811: (e, t, n) => { n.d(t, { DL: () => d, Ml: () => r, Ue: () => i, VJ: () => l, hE: () => c, hq: () => a, mo: () => s, pY: () => u, uc: () => o }); const i = "accessDevice", r = "syncUser", o = "fetchBids", s = "reportAnalytics", a = "transmitEids", d = "transmitUfpd", c = "transmitPreciseGeo", l = "transmitTid", u = "loadExternalScript" }, 441: (e, t, n) => { n.d(t, { s: () => r }); var i = n(46); const r = (0, n(604).ZI)((e => i.Ay.resolveAlias(e))) }, 569: (e, t, n) => { n.d(t, { Tn: () => o, tW: () => r, tp: () => i }); const i = "prebid", r = "bidder", o = "analytics" }, 604: (e, t, n) => { n.d(t, { Dk: () => s, Ii: () => o, TQ: () => g, XG: () => l, ZI: () => p, Zw: () => c, bt: () => u, e3: () => f, iK: () => a, q7: () => d }); var i = n(569), r = n(214); const o = "component", s = o + "Type", a = o + "Name", d = "adapterCode", c = "storageType", l = "configName", u = "syncType", f = "syncUrl", g = "_config"; function p(e) { return function (t, n, r) { const c = { [s]: t, [a]: n, [o]: `${t}.${n}` }; return t === i.tW && (c[d] = e(n)), h(Object.assign(c, r)) } } const h = (0, r.A_)("sync", (e => e)) }, 139: (e, t, n) => { n.d(t, { io: () => s, qB: () => o }); var i = n(69), r = n(604); const [o, s] = function () { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : (0, i.h0)("Activity control:"); const t = {}; function n(e) { return t[e] = t[e] || [] } function o(t, n, i, o) { let s; try { s = i(o) } catch (i) { e.logError(`Exception in rule ${n} for '${t}'`, i), s = { allow: !1, reason: i } } return s && Object.assign({ activity: t, name: n, component: o[r.Ii] }, s) } const s = {}; function a(t) { let { activity: n, name: i, allow: r, reason: o, component: a } = t; const d = `${i} ${r ? "allowed" : "denied"} '${n}' for '${a}'${o ? ":" : ""}`, c = s.hasOwnProperty(d); if (c && clearTimeout(s[d]), s[d] = setTimeout((() => delete s[d]), 1e3), !c) { const t = [d]; o && t.push(o), (r ? e.logInfo : e.logWarn).apply(e, t) } } return [function (e, t, i) { let r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : 10; const o = n(e), s = o.findIndex((e => { let [t] = e; return r < t })), a = [r, t, i]; return o.splice(s < 0 ? o.length : s, 0, a), function () { const e = o.indexOf(a); e >= 0 && o.splice(e, 1) } }, function (e, t) { let i, r; for (const [s, d, c] of n(e)) { if (i !== s && r) break; i = s; const n = o(e, d, c, t); if (n) { if (!n.allow) return a(n), !1; r = n } } return r && a(r), !0 }] }() }, 75: (e, t, n) => { n.d(t, { $A: () => I, BS: () => W, Hh: () => q, Pk: () => N, Uc: () => S, XO: () => V, bw: () => _, n6: () => C, qn: () => $, vB: () => P, vW: () => R, vd: () => U }); var i = n(69), r = n(23), o = n(969), s = n(272), a = n(789), d = n(371), c = n(881), l = n(31), u = n(214), f = n(449), g = n(555), p = n(46), h = n(894), m = n(779), b = n(5); const { AD_RENDER_FAILED: y, AD_RENDER_SUCCEEDED: v, STALE_RENDER: E, BID_WON: A, EXPIRED_RENDER: w } = o.qY, { EXCEPTION: T } = o.as, I = (0, u.A_)("sync", (function (e) { return (arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : g.U9.resolve()).then((t => t ?? c.n.findBidByAdId(e))).catch((() => { })) })), C = (0, u.A_)("sync", (function (e) { ((0, b.$T)(e.eventtrackers)[b.RO]?.[b.Ni] || []).forEach((e => (0, i.z$)(e))), r.Ic(A, e), c.n.addWinningBid(e) })); function B(e) { let { reason: t, message: n, bid: o, id: s } = e; const a = { reason: t, message: n }; o && (a.bid = o, a.adId = o.adId), s && (a.adId = s), (0, i.vV)(`Error rendering ad (id: ${s}): ${n}`), r.Ic(y, a) } function O(e) { let { doc: t, bid: n, id: i } = e; const o = { doc: t }; n && (o.bid = n), i && (o.adId = i), p.Ay.callAdRenderSucceededBidder(n.adapterCode || n.bidder, n), r.Ic(v, o) } function S(e, t) { switch (e.event) { case o.qY.AD_RENDER_FAILED: B({ bid: t, id: t.adId, reason: e.info.reason, message: e.info.message }); break; case o.qY.AD_RENDER_SUCCEEDED: O({ doc: null, bid: t, id: t.adId }); break; default: (0, i.vV)(`Received event request for unsupported event: '${e.event}' (adId: '${t.adId}')`) } } function R(e, t, n) { let { resizeFn: i, fireTrackers: r = f.vO } = n; if ("resizeNativeHeight" === e.action) i(e.width, e.height); else r(e, t) } const k = { [o.nl.EVENT]: S }; k[o.nl.NATIVE] = R; const U = (0, u.A_)("sync", (function (e, t) { const { ad: n, adUrl: r, cpm: o, originalCpm: s, width: a, height: d, instl: c } = e, l = { AUCTION_PRICE: s || o, CLICKTHROUGH: t?.clickUrl || "" }; return { ad: (0, i.gM)(n, l), adUrl: (0, i.gM)(r, l), width: a, height: d, instl: c } })), D = (0, u.A_)("sync", (function (e) { let { renderFn: t, resizeFn: n, bidResponse: r, options: s, doc: a, isMainDocument: c = a === document && !(0, i.al)() } = e; const l = r.mediaType === d.G_; if (c || l) return void B({ reason: o.as.PREVENT_WRITING_ON_MAIN_DOCUMENT, message: l ? "Cannot render video ad without a renderer" : "renderAd was prevented from writing to the main document.", bid: r, id: r.adId }); const u = U(r, s); t(Object.assign({ adId: r.adId }, u)); const { width: f, height: g } = u; null != (f ?? g) && n(f, g) })); function _(e) { let { renderFn: t, resizeFn: n, adId: a, options: d, bidResponse: c, doc: l } = e; q(c, (() => { if (null != c) { if ((c.status !== o.tl.RENDERED || ((0, i.JE)(`Ad id ${a} has been rendered before`), r.Ic(E, c), !s.$W.getConfig("auctionOptions")?.suppressStaleRender)) && (m.uW.isBidNotExpired(c) || ((0, i.JE)(`Ad id ${a} has been expired`), r.Ic(w, c), !s.$W.getConfig("auctionOptions")?.suppressExpiredRender))) try { D({ renderFn: t, resizeFn: n, bidResponse: c, options: d, doc: l }) } catch (e) { B({ reason: o.as.EXCEPTION, message: e.message, id: a, bid: c }) } } else B({ reason: o.as.CANNOT_FIND_AD, message: `Cannot find ad '${a}'`, id: a }) })) } function $(e) { const t = (0, h.BO)(e.metrics); t.checkpoint("bidRender"), t.timeBetween("bidWon", "bidRender", "render.deferred"), t.timeBetween("auctionEnd", "bidRender", "render.pending"), t.timeBetween("requestBids", "bidRender", "render.e2e"), e.status = o.tl.RENDERED } D.before((function (e, t) { const { bidResponse: n, doc: i } = t; (0, a.J7)(n.renderer) ? ((0, a.Pg)(n.renderer, n, i), O({ doc: i, bid: n, id: n.adId }), e.bail()) : e(t) }), 100); const j = new WeakMap, x = new WeakSet; function q(e, t) { null != e ? (j.set(e, t), e.deferRendering || P(e), N(e)) : t() } function N(e) { x.has(e) || (x.add(e), C(e)) } function P(e) { const t = j.get(e); t && (t(), $(e), j.delete(e)) } function W(e, t, n) { let r; function s(e, n) { B(Object.assign({ id: t, bid: r }, { reason: e, message: n })) } function a(t, n) { const i = e.defaultView?.frameElement; i && (t && (i.width = t, i.style.width && (i.style.width = `${t}px`)), n && (i.height = n, i.style.height && (i.style.height = `${n}px`))) } const d = (c = { resizeFn: a }, function (e, t, n) { k.hasOwnProperty(e) && k[e](t, n, c) }); var c; function u(t) { t.ad ? (e.write(t.ad), e.close(), O({ doc: e, bid: r, id: r.adId })) : (0, l.HH)(r).then((n => n(t, { sendMessage: (e, t) => d(e, t, r), mkFrame: i.hw }, e.defaultView))).then((() => O({ doc: e, bid: r, id: r.adId })), (e => { s(e?.reason || o.as.EXCEPTION, e?.message), e?.stack && (0, i.vV)(e) })); const n = document.createComment(`Creative ${r.creativeId} served by ${r.bidder} Prebid.js Header Bidding`); (0, i._s)(n, e, "html") } try { t && e ? I(t).then((i => { r = i, _({ renderFn: u, resizeFn: a, adId: t, options: { clickUrl: n?.clickThrough }, bidResponse: i, doc: e }) })) : s(o.as.MISSING_DOC_OR_ADID, "missing " + (t ? "doc" : "adId")) } catch (e) { s(T, e.message) } } function V() { if (!window.frames[o.IY]) if (document.body) { const e = (0, i.CA)(); e.name = o.IY, document.body.appendChild(e) } else window.requestAnimationFrame(V) } }, 46: (e, t, n) => { n.d(t, { Ay: () => ne, pX: () => Y }); var i = n(69), r = n(449), o = n(115), s = n(44), a = n(272), d = n(214); let c = {}; function l(e, t, n) { let i = function (e, t) { let n = c[e] = c[e] || { bidders: {} }; return t ? n.bidders[t] = n.bidders[t] || {} : n }(e, n); return i[t] = (i[t] || 0) + 1, i[t] } function u(e) { return l(e, "auctionsCounter") } function f(e) { return c?.[e]?.requestsCounter || 0 } function g(e, t) { return c?.[e]?.bidders?.[t]?.requestsCounter || 0 } function p(e, t) { return c?.[e]?.bidders?.[t]?.winsCounter || 0 } function h(e) { return c?.[e]?.auctionsCounter || 0 } var m = n(934), b = n(916), y = n(23), v = n(969), E = n(894), A = n(881), w = n(569), T = n(139), I = n(811), C = n(604), B = n(433); const O = ["data", "ext.data", "yob", "gender", "keywords", "kwarray", "id", "buyeruid", "customdata"].map((e => `user.${e}`)).concat("device.ext.cdep"), S = ["user.eids", "user.ext.eids"], R = ["user.geo.lat", "user.geo.lon", "device.geo.lat", "device.geo.lon"], k = ["device.ip"], U = ["device.ipv6"]; function D(e) { return Object.assign({ get() { }, run(e, t, n, i, r) { const o = n && n[i]; if (function (e) { return null != e && ("object" != typeof e || Object.keys(e).length > 0) }(o) && r()) { const e = this.get(o); void 0 === e ? delete n[i] : n[i] = e } } }, e) } function _(e) { return e.forEach((e => { e.paths = e.paths.map((e => { const t = e.split("."), n = t.pop(); return [t.length > 0 ? t.join(".") : null, n] })) })), function (t, n) { const i = []; for (var r = arguments.length, o = new Array(r > 2 ? r - 2 : 0), s = 2; s < r; s++)o[s - 2] = arguments[s]; const a = function (e) { for (var t = arguments.length, n = new Array(t > 1 ? t - 1 : 0), i = 1; i < t; i++)n[i - 1] = arguments[i]; return function (t) { return e.hasOwnProperty(t.name) || (e[t.name] = !!t.applies(...n)), e[t.name] } }(t, ...o); return e.forEach((e => { if (!1 !== t[e.name]) for (const [r, o] of e.paths) { const s = null == r ? n : (0, B.A)(n, r); if (i.push(e.run(n, r, s, o, a.bind(null, e))), !1 === t[e.name]) return } })), i.filter((e => null != e)) } } function $(e) { let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : T.io; return function (n) { return !t(e, n) } } function j() { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : T.io; return [{ name: I.DL, paths: O, applies: $(I.DL, e) }, { name: I.hq, paths: S, applies: $(I.hq, e) }, { name: I.hE, paths: R, applies: $(I.hE, e), get: e => Math.round(100 * (e + Number.EPSILON)) / 100 }, { name: I.hE, paths: k, applies: $(I.hE, e), get: e => function (e) { if (!e) return null; let t = e.split(".").map(Number); if (4 != t.length) return null; let n = []; for (let e = 0; e < 4; e++) { let t = Math.max(0, Math.min(8, 24 - 8 * e)); n.push(255 << 8 - t & 255) } return t.map(((e, t) => e & n[t])).join(".") }(e) }, { name: I.hE, paths: U, applies: $(I.hE, e), get: e => function (e) { if (!e) return null; let t = e.split(":").map((e => parseInt(e, 16))); for (t = t.map((e => isNaN(e) ? 0 : e)); t.length < 8;)t.push(0); if (8 != t.length) return null; let n = []; for (let e = 0; e < 8; e++) { let t = Math.max(0, Math.min(16, 64 - 16 * e)); n.push(65535 << 16 - t & 65535) } return t.map(((e, t) => e & n[t])).map((e => e.toString(16))).join(":") }(e) }, { name: I.VJ, paths: ["source.tid"], applies: $(I.VJ, e) }].map(D) } const x = function () { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : T.io; const t = _(j(e)), n = _(function () { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : T.io; return [{ name: I.hq, paths: ["userId", "userIdAsEids"], applies: $(I.hq, e) }, { name: I.VJ, paths: ["ortb2Imp.ext.tid"], applies: $(I.VJ, e) }].map(D) }(e)); return function (e) { const i = {}; return { ortb2: n => (t(i, n, e), n), bidRequest: t => (n(i, t, e), t) } } }(); (0, T.qB)(I.VJ, "enableTIDs config", (() => { if (!a.$W.getConfig("enableTIDs")) return { allow: !1, reason: "TIDs are disabled" } })); var q = n(5); const N = "pbsBidAdapter", P = { CLIENT: "client", SERVER: "server" }, W = { isAllowed: T.io, redact: x }; let V = {}, M = V.bidderRegistry = {}, G = V.aliasRegistry = {}, H = []; a.$W.getConfig("s2sConfig", (e => { e && e.s2sConfig && (H = (0, i.cy)(e.s2sConfig) ? e.s2sConfig : [e.s2sConfig]) })); var F = {}; const L = (0, C.ZI)((e => V.resolveAlias(e))); function z(e) { return e.configName ?? e.name } const J = (0, d.A_)("sync", (function (e) { let { bidderCode: t, auctionId: n, bidderRequestId: r, adUnits: o, src: s, metrics: a } = e; return o.reduce(((e, o) => { const d = o.bids.filter((e => e.bidder === t)); return null == t && 0 === d.length && null != o.s2sBid && d.push({ bidder: null }), e.push(d.reduce(((e, d) => { const c = null == (d = Object.assign({}, d, { ortb2Imp: (0, i.D9)({}, o.ortb2Imp, d.ortb2Imp) }, (0, i.SH)(o, ["nativeParams", "nativeOrtbRequest", "mediaType", "renderer"]))).mediaTypes ? o.mediaTypes : d.mediaTypes; return (0, i.wD)(c) ? d = Object.assign({}, d, { mediaTypes: c }) : (0, i.vV)(`mediaTypes is not correctly configured for adunit ${o.code}`), "client" === s && function (e, t) { l(e, "requestsCounter", t) }(o.code, t), e.push(Object.assign({}, d, { adUnitCode: o.code, transactionId: o.transactionId, adUnitId: o.adUnitId, sizes: c?.banner?.sizes || c?.video?.playerSize || [], bidId: d.bid_id || (0, i.s0)(), bidderRequestId: r, auctionId: n, src: s, metrics: a, auctionsCount: h(o.code), bidRequestsCount: f(o.code), bidderRequestsCount: g(o.code, d.bidder), bidderWinsCount: p(o.code, d.bidder), deferBilling: !!o.deferBilling })), e }), [])), e }), []).reduce(i.Bq, []).filter((e => "" !== e)) }), "getBids"); const Q = (0, d.A_)("sync", (function (e, t) { let { getS2SBidders: n = Y } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; if (null == t) return e; { const i = n(t); return e.filter((e => { if (!i.has(e.bidder)) return !1; if (null == e.s2sConfigName) return !0; const n = z(t); return (Array.isArray(e.s2sConfigName) ? e.s2sConfigName : [e.s2sConfigName]).includes(n) })) } }), "filterBidsForAdUnit"); const K = (0, d.A_)("sync", ((e, t) => e), "setupAdUnitMediaTypes"); function Y(e) { (0, i.cy)(e) || (e = [e]); const t = new Set([null]); return e.filter((e => e && e.enabled)).flatMap((e => e.bidders)).forEach((e => t.add(e))), t } const X = (0, d.A_)("sync", (function (e, t) { let { getS2SBidders: n = Y } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; const r = n(t); return (0, i.ZA)(e).reduce(((e, t) => (e[r.has(t) ? P.SERVER : P.CLIENT].push(t), e)), { [P.CLIENT]: [], [P.SERVER]: [] }) }), "partitionBidders"); function Z(e, t) { const n = M[e], i = n?.getSpec && n.getSpec(); if (i && i[t] && "function" == typeof i[t]) return [i, i[t]] } function ee(e, t, n, r) { try { (0, i.fH)(`Invoking ${e}.${t}`); for (var o = arguments.length, s = new Array(o > 4 ? o - 4 : 0), d = 4; d < o; d++)s[d - 4] = arguments[d]; a.$W.runWithBidder(e, r.bind(n, ...s)) } catch (n) { (0, i.JE)(`Error calling ${t} of ${e}`) } } function te(e, t, n) { if (n?.source !== v.RW.SRC) { const i = Z(e, t); null != i && ee(e, t, ...i, n) } } V.makeBidRequests = (0, d.A_)("sync", (function (e, t, n, o, s) { let d = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : {}, c = arguments.length > 6 ? arguments[6] : void 0; c = (0, E.BO)(c), y.Ic(v.qY.BEFORE_REQUEST_BIDS, e), (0, r.nk)(e), e.map((e => e.code)).filter(i.hj).forEach(u), e.forEach((e => { (0, i.Qd)(e.mediaTypes) || (e.mediaTypes = {}), e.bids = e.bids.filter((e => !e.bidder || W.isAllowed(I.uc, L(w.tW, e.bidder)))), l(e.code, "requestsCounter") })), e = K(e, s); let { [P.CLIENT]: f, [P.SERVER]: g } = X(e, H); a.$W.getConfig("bidderSequence") === a.Ov && (f = (0, i.k4)(f)); const p = (0, m.EN)(); let h = []; const A = d.global || {}, T = d.bidder || {}; function B(e, t) { const r = W.redact(null != t ? t : L(w.tW, e.bidderCode)), o = (0, i.D9)({ source: { tid: n } }, A, T[e.bidderCode]); !function (e) { const t = e.user?.eids; Array.isArray(t) && t.length && (e.user.ext = e.user.ext || {}, e.user.ext.eids = [...e.user.ext.eids || [], ...t], delete e.user.eids) }(o); const s = Object.freeze(r.ortb2(o)); return e.ortb2 = s, e.bids = e.bids.map((e => (e.ortb2 = s, r.bidRequest(e)))), e } H.forEach((r => { const o = function (e) { return L(w.tp, N, { [C.XG]: z(e) }) }(r); if (r && r.enabled && W.isAllowed(I.uc, o)) { let { adUnits: s, hasModuleBids: a } = function (e, t) { let n = (0, i.Go)(e), r = !1; return n.forEach((e => { const n = e.bids.filter((e => e.module === N && e.params?.configName === z(t))); 1 === n.length ? (e.s2sBid = n[0], r = !0, e.ortb2Imp = (0, i.D9)({}, e.s2sBid.ortb2Imp, e.ortb2Imp)) : n.length > 1 && (0, i.JE)('Multiple "module" bids for the same s2s configuration; all will be ignored', n), e.bids = Q(e.bids, t).map((e => (e.bid_id = (0, i.s0)(), e))) })), n = n.filter((e => 0 !== e.bids.length || null != e.s2sBid)), { adUnits: n, hasModuleBids: r } }(e, r), d = (0, i.lk)(); (0 === g.length && a ? [null] : g).forEach((e => { const a = (0, i.s0)(), l = c.fork(), u = B({ bidderCode: e, auctionId: n, bidderRequestId: a, uniquePbsTid: d, bids: J({ bidderCode: e, auctionId: n, bidderRequestId: a, adUnits: (0, i.Go)(s), src: v.RW.SRC, metrics: l }), auctionStart: t, timeout: r.timeout, src: v.RW.SRC, refererInfo: p, metrics: l }, o); 0 !== u.bids.length && h.push(u) })), s.forEach((e => { let t = e.bids.filter((e => h.find((t => t.bids.find((t => t.bidId === e.bid_id)))))); e.bids = t })), h.forEach((e => { void 0 === e.adUnitsS2SCopy && (e.adUnitsS2SCopy = s.filter((e => e.bids.length > 0 || null != e.s2sBid))) })) } })); let O = function (e) { let t = (0, i.Go)(e); return t.forEach((e => { e.bids = Q(e.bids, null) })), t = t.filter((e => 0 !== e.bids.length)), t }(e); return f.forEach((e => { const r = (0, i.s0)(), a = c.fork(), d = B({ bidderCode: e, auctionId: n, bidderRequestId: r, bids: J({ bidderCode: e, auctionId: n, bidderRequestId: r, adUnits: (0, i.Go)(O), labels: s, src: "client", metrics: a }), auctionStart: t, timeout: o, refererInfo: p, metrics: a }), l = M[e]; l || (0, i.vV)(`Trying to make a request for bidder that does not exist: ${e}`), l && d.bids && 0 !== d.bids.length && h.push(d) })), h.forEach((e => { b.mW.getConsentData() && (e.gdprConsent = b.mW.getConsentData()), b.t6.getConsentData() && (e.uspConsent = b.t6.getConsentData()), b.ad.getConsentData() && (e.gppConsent = b.ad.getConsentData()) })), h }), "makeBidRequests"), V.callBids = function (e, t, n, r, o, d, c) { let l = arguments.length > 7 && void 0 !== arguments[7] ? arguments[7] : {}; if (!t.length) return void (0, i.JE)("callBids executed with no bidRequests. Were they filtered by labels or sizing?"); let [u, f] = t.reduce(((e, t) => (e[Number(void 0 !== t.src && t.src === v.RW.SRC)].push(t), e)), [[], []]); var g = []; f.forEach((e => { for (var t = -1, n = 0; n < g.length; ++n)if (e.uniquePbsTid === g[n].uniquePbsTid) { t = n; break } t <= -1 && g.push(e) })); let p = 0; H.forEach((e => { if (e && g[p] && Y(e).has(g[p].bidderCode)) { const t = (0, s.g4)(d, o ? { request: o.request.bind(null, "s2s"), done: o.done } : void 0); let a = e.bidders; const u = M[e.adapter]; let h = g[p].uniquePbsTid, m = g[p].adUnitsS2SCopy, b = f.filter((e => e.uniquePbsTid === h)); if (u) { let o = { ad_units: m, s2sConfig: e, ortb2Fragments: l, requestBidsTimeout: d }; if (o.ad_units.length) { let e = b.map((e => (e.start = (0, i.vE)(), function (t) { t || c(e.bidderRequestId), r.apply(e, arguments) }))); const s = (0, i.ZA)(o.ad_units).filter((e => a.includes(e))); (0, i.OG)(`CALLING S2S HEADER BIDDERS ==== ${s.length > 0 ? s.join(", ") : 'No bidder specified, using "ortb2Imp" definition(s) only'}`), b.forEach((e => { y.Ic(v.qY.BID_REQUESTED, { ...e, tid: e.auctionId }) })), u.callBids(o, f, n, (t => e.forEach((e => e(t)))), t) } } else (0, i.vV)("missing " + e.adapter); p++ } })), u.forEach((e => { e.start = (0, i.vE)(); const t = M[e.bidderCode]; a.$W.runWithBidder(e.bidderCode, (() => { (0, i.OG)("CALLING BIDDER"), y.Ic(v.qY.BID_REQUESTED, e) })); let l = (0, s.g4)(d, o ? { request: o.request.bind(null, e.bidderCode), done: o.done } : void 0); const u = r.bind(e); try { a.$W.runWithBidder(e.bidderCode, t.callBids.bind(t, e, n, u, l, (() => c(e.bidderRequestId)), a.$W.callbackWithBidder(e.bidderCode))) } catch (t) { (0, i.vV)(`${e.bidderCode} Bid Adapter emitted an uncaught error when parsing their bidRequest`, { e: t, bidRequest: e }), u() } })) }, V.videoAdapters = [], V.registerBidAdapter = function (e, t) { let { supportedMediaTypes: n = [] } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; e && t ? "function" == typeof e.callBids ? (M[t] = e, b.o2.register(w.tW, t, e.getSpec?.().gvlid), n.includes("video") && V.videoAdapters.push(t), n.includes("native") && r.mT.push(t)) : (0, i.vV)("Bidder adaptor error for bidder code: " + t + "bidder must implement a callBids() function") : (0, i.vV)("bidAdapter or bidderCode not specified") }, V.aliasBidAdapter = function (e, t, n) { if (void 0 === M[t]) { let s = M[e]; if (void 0 === s) { const n = []; H.forEach((i => { if (i.bidders && i.bidders.length) { const r = i && i.bidders; i && r.includes(t) ? G[t] = e : n.push(e) } })), n.forEach((e => { (0, i.vV)('bidderCode "' + e + '" is not an existing bidder.', "adapterManager.aliasBidAdapter") })) } else try { let a, d = function (e) { let t = []; return V.videoAdapters.includes(e) && t.push("video"), r.mT.includes(e) && t.push("native"), t }(e); if (s.constructor.prototype != Object.prototype) a = new s.constructor, a.setBidderCode(t); else { const { useBaseGvlid: r = !1 } = n || {}; let d = s.getSpec(); const c = r ? d.gvlid : n?.gvlid; null == c && null != d.gvlid && (0, i.JE)(`Alias '${t}' will NOT re-use the GVL ID of the original adapter ('${d.code}', gvlid: ${d.gvlid}). Functionality that requires TCF consent may not work as expected.`); let l = n && n.skipPbsAliasing; a = (0, o.xb)(Object.assign({}, d, { code: t, gvlid: c, skipPbsAliasing: l })), G[t] = e } V.registerBidAdapter(a, t, { supportedMediaTypes: d }) } catch (t) { (0, i.vV)(e + " bidder does not currently support aliasing.", "adapterManager.aliasBidAdapter") } } else (0, i.OG)('alias name "' + t + '" has been already specified.') }, V.resolveAlias = function (e) { let t, n = e; for (; G[n] && (!t || !t.has(n));)n = G[n], (t = t || new Set).add(n); return n }, V.registerAnalyticsAdapter = function (e) { let { adapter: t, code: n, gvlid: r } = e; t && n ? "function" == typeof t.enableAnalytics ? (t.code = n, F[n] = { adapter: t, gvlid: r }, b.o2.register(w.Tn, n, r)) : (0, i.vV)(`Prebid Error: Analytics adaptor error for analytics "${n}"\n analytics adapter must implement an enableAnalytics() function`) : (0, i.vV)("Prebid Error: analyticsAdapter or analyticsCode not specified") }, V.enableAnalytics = function (e) { (0, i.cy)(e) || (e = [e]), e.forEach((e => { const t = F[e.provider]; t && t.adapter ? W.isAllowed(I.mo, L(w.Tn, e.provider, { [C.TQ]: e })) && t.adapter.enableAnalytics(e) : (0, i.vV)(`Prebid Error: no analytics adapter found in registry for '${e.provider}'.`) })) }, V.getBidAdapter = function (e) { return M[e] }, V.getAnalyticsAdapter = function (e) { return F[e] }, V.callTimedOutBidders = function (e, t, n) { t = t.map((t => (t.params = (0, i.SB)(e, t.adUnitCode, t.bidder), t.timeout = n, t))), t = (0, i.$z)(t, "bidder"), Object.keys(t).forEach((e => { te(e, "onTimeout", t[e]) })) }, V.callBidWonBidder = function (e, t, n) { var r, o; t.params = (0, i.SB)(n, t.adUnitCode, t.bidder), r = t.adUnitCode, o = t.bidder, l(r, "winsCounter", o), te(e, "onBidWon", t) }, V.triggerBilling = (() => { const e = new WeakSet; return t => { e.has(t) || (e.add(t), ((0, q.$T)(t.eventtrackers)[q.OA]?.[q.Ni] || []).forEach((e => i.mM.triggerPixel(e))), te(t.bidder, "onBidBillable", t)) } })(), V.callSetTargetingBidder = function (e, t) { te(e, "onSetTargeting", t) }, V.callBidViewableBidder = function (e, t) { te(e, "onBidViewable", t) }, V.callBidderError = function (e, t, n) { te(e, "onBidderError", { error: t, bidderRequest: n }) }, V.callAdRenderSucceededBidder = function (e, t) { te(e, "onAdRenderSucceeded", t) }, V.callDataDeletionRequest = (0, d.A_)("sync", (function () { for (var e = arguments.length, t = new Array(e), n = 0; n < e; n++)t[n] = arguments[n]; const r = "onDataDeletionRequest"; Object.keys(M).filter((e => !G.hasOwnProperty(e))).forEach((e => { const n = Z(e, r); if (null != n) { const i = A.n.getBidsRequested().filter((t => function (e) { const t = new Set; for (; G.hasOwnProperty(e) && !t.has(e);)t.add(e), e = G[e]; return e }(t.bidderCode) === e)); ee(e, r, ...n, i, ...t) } })), Object.entries(F).forEach((e => { let [n, o] = e; const s = o?.adapter?.[r]; if ("function" == typeof s) try { s.apply(o.adapter, t) } catch (e) { (0, i.vV)(`error calling ${r} of ${n}`, e) } })) })); const ne = V }, 115: (e, t, n) => { function i(e) { var t = e; return { callBids: function () { }, setBidderCode: function (e) { t = e }, getBidderCode: function () { return t } } } n.d(t, { xb: () => C, a$: () => T }); var r = n(46), o = n(272), s = n(597), a = n(230), d = n(449), c = n(895), l = n(969), u = n(23), f = n(69), g = n(214), p = n(881), h = n(693), m = n(894), b = n(139), y = n(441), v = n(569), E = n(811); const A = ["cpm", "ttl", "creativeId", "netRevenue", "currency"], w = ["auctionId", "transactionId"]; function T(e) { const t = Array.isArray(e.supportedMediaTypes) ? { supportedMediaTypes: e.supportedMediaTypes } : void 0; function n(e) { const n = C(e); r.Ay.registerBidAdapter(n, e.code, t) } n(e), Array.isArray(e.aliases) && e.aliases.forEach((t => { let i, o, s = t; (0, f.Qd)(t) && (s = t.code, i = t.gvlid, o = t.skipPbsAliasing), r.Ay.aliasRegistry[s] = e.code, n(Object.assign({}, e, { code: s, gvlid: i, skipPbsAliasing: o })) })) } const I = (0, f.Bj)((e => { let { bidderCode: t } = e; if ((0, b.io)(E.VJ, (0, y.s)(v.tW, t))) return { bidRequest: e => e, bidderRequest: e => e }; function n(e, t, n) { return w.includes(t) ? null : Reflect.get(e, t, n) } function i(e, t) { const n = new Proxy(e, t); return Object.entries(e).filter((e => { let [t, n] = e; return "function" == typeof n })).forEach((t => { let [i, r] = t; return n[i] = r.bind(e) })), n } const r = (0, f.Bj)((e => i(e, { get: n })), (e => e.bidId)); return { bidRequest: r, bidderRequest: e => i(e, { get: (t, i, o) => "bids" === i ? e.bids.map(r) : n(t, i, o) }) } })); function C(e) { return Object.assign(new i(e.code), { getSpec: function () { return Object.freeze(Object.assign({}, e)) }, registerSyncs: t, callBids: function (n, i, a, g, b, y) { if (!Array.isArray(n.bids)) return; const v = I(n), E = {}; function T(e, t) { const n = (0, m.BO)(t.metrics); n.checkpoint("addBidResponse"), E[e] = !0, n.measureTime("addBidResponse.validate", (() => function (e, t) { let { index: n = p.n.index } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; function i() { let e = Object.keys(t); return A.every((n => e.includes(n) && ![void 0, null].includes(t[n]))) } function r(e) { return `Invalid bid from ${t.bidderCode}. Ignoring bid: ${e}` } if (!e) return (0, f.JE)("No adUnitCode was supplied to addBidResponse."), !1; if (!t) return (0, f.JE)(`Some adapter tried to add an undefined bid for ${e}.`), !1; if (!i()) return (0, f.vV)(r(`Bidder ${t.bidderCode} is missing required params. Check http://prebid.org/dev-docs/bidder-adapter-1.html for list of params.`)), !1; if ("native" === t.mediaType && !(0, d.Bm)(t, { index: n })) return (0, f.vV)(r("Native bid missing some required properties.")), !1; if ("video" === t.mediaType && !(0, c.vk)(t, { index: n })) return (0, f.vV)(r("Video bid does not have required vastUrl or renderer property")), !1; if ("banner" === t.mediaType && !function (e, t) { let { index: n = p.n.index } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; if ((t.width || 0 === parseInt(t.width, 10)) && (t.height || 0 === parseInt(t.height, 10))) return t.width = parseInt(t.width, 10), t.height = parseInt(t.height, 10), !0; if (null != t.wratio && null != t.hratio) return t.wratio = parseInt(t.wratio, 10), t.hratio = parseInt(t.hratio, 10), !0; const i = n.getBidRequest(t), r = n.getMediaTypes(t), o = i && i.sizes || r && r.banner && r.banner.sizes, s = (0, f.kK)(o); if (1 === s.length) { const [e, n] = s[0].split("x"); return t.width = parseInt(e, 10), t.height = parseInt(n, 10), !0 } return !1 }(e, t, { index: n })) return (0, f.vV)(r("Banner bids require a width and height")), !1; return !0 }(e, t))) ? i(e, t) : i.reject(e, t, l.Tf.INVALID) } const C = []; function B() { a(), o.$W.runWithBidder(e.code, (() => { u.Ic(l.qY.BIDDER_DONE, n), t(C, n.gdprConsent, n.uspConsent, n.gppConsent) })) } const S = k(n).measureTime("validate", (() => n.bids.filter((t => function (t) { if (!e.isBidRequestValid(t)) return (0, f.JE)(`Invalid bid sent to bidder ${e.code}: ${JSON.stringify(t)}`), !1; return !0 }(v.bidRequest(t)))))); if (0 === S.length) return void B(); const U = {}; S.forEach((e => { U[e.bidId] = e, e.adUnitCode || (e.adUnitCode = e.placementCode) })), O(e, S, n, g, y, { onRequest: e => u.Ic(l.qY.BEFORE_BIDDER_HTTP, n, e), onResponse: t => { b(e.code), C.push(t) }, onPaapi: e => { const t = U[e.bidId]; t ? R(t, e) : (0, f.JE)("Received fledge auction configuration for an unknown bidId", e) }, onError: (t, i) => { i.timedOut || b(e.code), r.Ay.callBidderError(e.code, i, n), u.Ic(l.qY.BIDDER_ERROR, { error: i, bidderRequest: n }), (0, f.vV)(`Server call for ${e.code} failed: ${t} ${i.status}. Continuing without bids.`, { bidRequests: S }) }, onBid: t => { const n = U[t.requestId]; if (n) { if (t.adapterCode = n.bidder, function (e, t) { let n = h.u.get(t, "allowAlternateBidderCodes") || !1, i = h.u.get(t, "allowedAlternateBidderCodes"); if (e && t && t !== e && (i = (0, f.cy)(i) ? i.map((e => e.trim().toLowerCase())).filter((e => !!e)).filter(f.hj) : i, !n || (0, f.cy)(i) && "*" !== i[0] && !i.includes(e))) return !0; return !1 }(t.bidderCode, n.bidder)) return (0, f.JE)(`${t.bidderCode} is not a registered partner or known bidder of ${n.bidder}, hence continuing without bid. If you wish to support this bidder, please mark allowAlternateBidderCodes as true in bidderSettings.`), void i.reject(n.adUnitCode, t, l.Tf.BIDDER_DISALLOWED); t.originalCpm = t.cpm, t.originalCurrency = t.currency, t.meta = t.meta || Object.assign({}, t[n.bidder]), t.deferBilling = n.deferBilling, t.deferRendering = t.deferBilling && (t.deferRendering ?? "function" != typeof e.onBidBillable); const r = Object.assign((0, s.O)(l.XQ.GOOD, n), t, (0, f.Up)(n, w)); T(n.adUnitCode, r) } else (0, f.JE)(`Bidder ${e.code} made bid for unknown request ID: ${t.requestId}. Ignoring.`), i.reject(null, t, l.Tf.INVALID_REQUEST_ID) }, onCompletion: B }) } }); function t(t, n, i, r) { S(e, t, n, i, r) } } const B = ["bids", "paapi"], O = (0, g.A_)("async", (function (e, t, n, i, r, o) { let { onRequest: s, onResponse: a, onPaapi: d, onError: c, onBid: u, onCompletion: g } = o; const p = k(n); g = p.startTiming("total").stopBefore(g); const m = I(n); let A = p.measureTime("buildRequests", (() => e.buildRequests(t.map(m.bidRequest), m.bidderRequest(n)))); if (!A || 0 === A.length) return void g(); Array.isArray(A) || (A = [A]); const w = (0, f.U6)(g, A.length); A.forEach((t => { const n = p.fork(); function o(e) { null != e && (e.metrics = n.fork().renameWith()), u(e) } const g = r((function (i, r) { A(); try { i = JSON.parse(i) } catch (e) { } i = { body: i, headers: { get: r.getResponseHeader.bind(r) } }, a(i); try { i = n.measureTime("interpretResponse", (() => e.interpretResponse(i, t))) } catch (t) { return (0, f.vV)(`Bidder ${e.code} failed to interpret the server's response. Continuing without bids`, null, t), void w() } let s, c; i && !Object.keys(i).some((e => !B.includes(e))) ? (s = i.bids, c = i.paapi) : s = i, (0, f.cy)(c) && c.forEach(d), s && ((0, f.cy)(s) ? s.forEach(o) : o(s)), w() })), m = r((function (e, t) { A(), c(e, t), w() })); s(t); const A = n.startTiming("net"); function T(n) { const i = t.options; return Object.assign(n, i, { browsingTopics: !(i?.hasOwnProperty("browsingTopics") && !i.browsingTopics) && ((h.u.get(e.code, "topicsHeader") ?? !0) && (0, b.io)(E.DL, (0, y.s)(v.tW, e.code))) }) } switch (t.method) { case "GET": i(`${t.url}${function (e) { if (e) return `?${"object" == typeof e ? (0, f.bL)(e) : e}`; return "" }(t.data)}`, { success: g, error: m }, void 0, T({ method: "GET", withCredentials: !0 })); break; case "POST": const n = t.options?.endpointCompression, r = "TRUE" === (0, f.Ez)(l.M).toUpperCase() || (0, f.dp)(), o = e => { let { url: t, payload: n } = e; i(t, { success: g, error: m }, n, T({ method: "POST", contentType: "text/plain", withCredentials: !0 })) }; n && r && (0, f.JE)(`Skipping GZIP compression for ${e.code} as debug mode is enabled`), n && !r && (0, f.nT)() ? (0, f.ZK)(t.data).then((e => { const n = new URL(t.url, window.location.origin); n.searchParams.has("gzip") || n.searchParams.set("gzip", "1"), o({ url: n.href, payload: e }) })) : o({ url: t.url, payload: "string" == typeof t.data ? t.data : JSON.stringify(t.data) }); break; default: (0, f.JE)(`Skipping invalid request from ${e.code}. Request type ${t.type} must be GET or POST`), w() } })) }), "processBidderRequests"), S = (0, g.A_)("async", (function (e, t, n, i, s) { const d = o.$W.getConfig("userSync.aliasSyncEnabled"); if (e.getUserSyncs && (d || !r.Ay.aliasRegistry[e.code])) { let r = e.getUserSyncs({ iframeEnabled: a.zt.canBidderRegisterSync("iframe", e.code), pixelEnabled: a.zt.canBidderRegisterSync("image", e.code) }, t, n, i, s); r && (Array.isArray(r) || (r = [r]), r.forEach((t => { a.zt.registerSync(t.type, e.code, t.url) })), a.zt.bidderDone(e.code)) } }), "registerSyncs"), R = (0, g.A_)("sync", ((e, t) => { }), "addPaapiConfig"); function k(e) { return (0, m.BO)(e.metrics).renameWith((t => [`adapter.client.${t}`, `adapters.client.${e.bidderCode}.${t}`])) } }, 580: (e, t, n) => { n.d(t, { R: () => c }); var i = n(811), r = n(441), o = n(139), s = n(69); const a = new WeakMap, d = ["debugging", "outstream", "aaxBlockmeter", "adagio", "adloox", "akamaidap", "arcspan", "airgrid", "browsi", "brandmetrics", "clean.io", "humansecurity", "confiant", "contxtful", "hadron", "mediafilter", "medianet", "azerionedge", "a1Media", "geoedge", "qortex", "dynamicAdBoost", "51Degrees", "symitridap", "wurfl", "nodalsAi", "anonymised", "optable", "justtag", "tncId", "ftrackId", "id5"]; function c(e, t, n, c, l, u) { if (!(0, o.io)(i.pY, (0, r.s)(t, n))) return; if (!n || !e) return void (0, s.vV)("cannot load external script without url and moduleCode"); if (!d.includes(n)) return void (0, s.vV)(`${n} not whitelisted for loading external JavaScript`); l || (l = document); const f = h(l, e); if (f) return c && "function" == typeof c && (f.loaded ? c() : f.callbacks.push(c)), f.tag; const g = a.get(l) || {}, p = { loaded: !1, tag: null, callbacks: [] }; return g[e] = p, a.set(l, g), c && "function" == typeof c && p.callbacks.push(c), (0, s.JE)(`module ${n} is loading external JavaScript`), function (t, n, i, r) { i || (i = document); var o = i.createElement("script"); o.type = "text/javascript", o.async = !0; const a = h(i, e); a && (a.tag = o); o.readyState ? o.onreadystatechange = function () { "loaded" !== o.readyState && "complete" !== o.readyState || (o.onreadystatechange = null, n()) } : o.onload = function () { n() }; o.src = t, r && (0, s.Bg)(o, r); return (0, s._s)(o, i), o }(e, (function () { p.loaded = !0; try { for (let e = 0; e < p.callbacks.length; e++)p.callbacks[e]() } catch (e) { (0, s.vV)("Error executing callback", "adloader.js:loadExternalScript", e) } }), l, u); function h(e, t) { const n = a.get(e); return n && n[t] ? n[t] : null } } }, 44: (e, t, n) => { n.d(t, { g4: () => u }); var i = n(272), r = n(69); const o = { fetch: window.fetch.bind(window), makeRequest: (e, t) => new Request(e, t), timeout(e, t) { const n = new AbortController; let i = setTimeout((() => { n.abort(), (0, r.vV)(`Request timeout after ${e}ms`, t), i = null }), e); return { signal: n.signal, done() { i && clearTimeout(i) } } } }, s = "GET", a = "POST", d = "Content-Type"; function c() { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 3e3, { request: t, done: n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, r = (t, n) => { let r; null == e || null != n?.signal || i.$W.getConfig("disableAjaxTimeout") || (r = o.timeout(e, t), n = Object.assign({ signal: r.signal }, n)); let s = o.fetch(t, n); return null != r?.done && (s = s.finally(r.done)), s }; return null == t && null == n || (r = (e => function (i, r) { const o = new URL(null == i?.url ? i : i.url, document.location).origin; let s = e(i, r); return t && t(o), n && (s = s.finally((() => n(o)))), s })(r)), r } function l(e, t) { let { status: n, statusText: i = "", headers: o, url: s } = e, a = 0; function c(e) { if (0 === a) try { a = (new DOMParser).parseFromString(t, o?.get(d)?.split(";")?.[0]) } catch (t) { a = null, e && e(t) } return a } return { readyState: XMLHttpRequest.DONE, status: n, statusText: i, responseText: t, response: t, responseType: "", responseURL: s, get responseXML() { return c(r.vV) }, getResponseHeader: e => o?.has(e) ? o.get(e) : null, toJSON() { return Object.assign({ responseXML: c() }, this) }, timedOut: !1 } } function u() { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 3e3, { request: t, done: n } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; const i = c(e, { request: t, done: n }); return function (e, t, n) { !function (e, t) { const { success: n, error: i } = "object" == typeof t && null != t ? t : { success: "function" == typeof t ? t : () => null, error: (e, t) => (0, r.vV)("Network error", e, t) }; e.then((e => e.text().then((t => [e, t])))).then((e => { let [t, r] = e; const o = l(t, r); t.ok || 304 === t.status ? n(r, o) : i(t.statusText, o) }), (e => i("", Object.assign(l({ status: 0 }, ""), { reason: e, timedOut: "AbortError" === e?.name })))) }(i(function (e, t) { let n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; const i = n.method || (t ? a : s); if (i === s && t) { const i = (0, r.Dl)(e, n); Object.assign(i.search, t), e = (0, r.c$)(i) } const c = new Headers(n.customHeaders); c.set(d, n.contentType || "text/plain"); const l = { method: i, headers: c }; return i !== s && t && (l.body = t), n.withCredentials && (l.credentials = "include"), isSecureContext && ["browsingTopics", "adAuctionHeaders"].forEach((e => { n[e] && (l[e] = !0) })), n.keepalive && (l.keepalive = !0), o.makeRequest(e, l) }(e, n, arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {})), t) } } u(), c() }, 881: (e, t, n) => { n.d(t, { n: () => ae }); var i = n(69), r = n(833), o = n(449), s = n(44), a = n(272); const d = 15, c = new Map; function l(e) { let { index: t = ae.index } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; const n = u(e), i = t.getAuction(e); let r = { type: "xml", value: n, ttlseconds: Number(e.ttl) + d }; return a.$W.getConfig("cache.vasttrack") && (r.bidder = e.bidder, r.bidid = e.requestId, r.aid = e.auctionId), null != i && (r.timestamp = i.getAuctionStart()), "string" == typeof e.customCacheKey && "" !== e.customCacheKey && (r.key = e.customCacheKey), r } function u(e) { return e.vastXml ? e.vastXml : (t = e.vastUrl, n = e.vastImpUrl, `\n \n \n prebid.org wrapper\n \n ${(n = n && (Array.isArray(n) ? n : [n])) ? n.map((e => ``)).join("") : ""}\n \n \n \n `); var t, n } const f = e => { const t = u(e), n = URL.createObjectURL(new Blob([t], { type: "text/xml" })); g(e, n), c.set(e.videoCacheKey, n) }, g = (e, t, n) => { e.videoCacheKey = n || (0, i.lk)(), e.vastUrl || (e.vastUrl = t) }, p = { store: function (e, t) { let n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : s.g4; const i = { puts: e.map(l) }; n(a.$W.getConfig("cache.timeout"))(a.$W.getConfig("cache.url"), function (e) { return { success: function (t) { let n; try { n = JSON.parse(t).responses } catch (t) { return void e(t, []) } n ? e(null, n) : e(new Error("The cache server didn't respond with a responses property."), []) }, error: function (t, n) { e(new Error(`Error storing video ad in the cache: ${t}: ${JSON.stringify(n)}`), []) } } }(t), JSON.stringify(i), { contentType: "text/plain", withCredentials: !0 }) } }; function h(e) { const t = e.map((e => e.bidResponse)); p.store(t, (function (n, r) { var o; n ? (o = n, (0, i.vV)(`Failed to save to the video cache: ${o}. Video bids will be discarded:`, t)) : e.length !== r.length ? (0, i.vV)(`expected ${e.length} cache IDs, got ${r.length} instead`) : r.forEach(((t, n) => { const { auctionInstance: r, bidResponse: o, afterBidAdded: s } = e[n]; var d; "" === t.uuid ? (0, i.JE)("Supplied video cache key was already in use by Prebid Cache; caching attempt was rejected. Video bid must be discarded.") : (g(o, (d = t.uuid, `${a.$W.getConfig("cache.url")}?uuid=${d}`), t.uuid), J(r, o), s()) })) })) } let m, b, y; a.$W.getConfig("cache", (e => { let { cache: t } = e; m = "number" == typeof t.batchSize && t.batchSize > 0 ? t.batchSize : 1, b = "number" == typeof t.batchTimeout && t.batchTimeout > 0 ? t.batchTimeout : 0, t.useLocal && !y && (y = ae.onExpiry((e => { e.getBidsReceived().forEach((e => { const t = c.get(e.videoCacheKey); t && t.startsWith("blob") && URL.revokeObjectURL(t), c.delete(e.videoCacheKey) })) }))) })); const v = function () { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : setTimeout, t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : h, n = [[]], i = !1; const r = e => e(); return function (o, s, a) { const d = b > 0 ? e : r; n[n.length - 1].length >= m && n.push([]), n[n.length - 1].push({ auctionInstance: o, bidResponse: s, afterBidAdded: a }), i || (i = !0, d((() => { n.forEach(t), n = [[]], i = !1 }), b)) } }(); var E = n(789), A = n(230), w = n(214), T = n(895), I = n(371), C = n(693), B = n(23), O = n(46), S = n(969), R = n(555), k = n(894); var U = n(873), D = n(853), _ = n(863); const { syncUsers: $ } = A.zt, j = "started", x = "inProgress", q = "completed"; B.on(S.qY.BID_ADJUSTMENT, (function (e) { !function (e) { let t = function (e, t, n) { let { index: r = ae.index, bs: o = C.u } = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {}; n = n || r.getBidRequest(t); const s = t?.adapterCode, a = t?.bidderCode || n?.bidder, d = o.get(t?.adapterCode, "adjustAlternateBids"), c = o.getOwn(a, "bidCpmAdjustment") || o.get(d ? s : a, "bidCpmAdjustment"); if (c && "function" == typeof c) try { return c(e, Object.assign({}, t), n) } catch (e) { (0, i.vV)("Error during bid adjustment", e) } return e }(e.cpm, e); t >= 0 && (e.cpm = t) }(e) })); const N = 4, P = {}, W = {}, V = [], M = (0, U.m)(); function G(e) { let { adUnits: t, adUnitCodes: n, callback: s, cbTimeout: d, labels: c, auctionId: l, ortb2Fragments: u, metrics: g } = e; g = (0, k.BO)(g); const p = t, h = c, m = n, b = l || (0, i.lk)(), y = d, v = new Set, A = (0, R.v6)(), w = (0, R.v6)(); let C, U, G, Y, X = [], Z = s, ee = [], te = (0, D.H)({ startTime: e => e.responseTimestamp, ttl: e => null == (0, _.S9)() ? null : 1e3 * Math.max((0, _.S9)(), e.ttl) }), ne = [], ie = [], re = []; function se() { return { auctionId: b, timestamp: C, auctionEnd: U, auctionStatus: Y, adUnits: p, adUnitCodes: m, labels: h, bidderRequests: ee, noBids: ne, bidsReceived: te.toArray(), bidsRejected: X, winningBids: ie, timeout: y, metrics: g, seatNonBids: re } } function de(e) { if (e ? B.Ic(S.qY.AUCTION_TIMEOUT, se()) : clearTimeout(G), void 0 === U) { let n = []; e && ((0, i.OG)(`Auction ${b} timedOut`), n = ee.filter((e => !v.has(e.bidderRequestId))).flatMap((e => e.bids)), n.length && B.Ic(S.qY.BID_TIMEOUT, n)), Y = q, U = Date.now(), g.checkpoint("auctionEnd"), g.timeBetween("requestBids", "auctionEnd", "requestBids.total"), g.timeBetween("callBids", "auctionEnd", "requestBids.callBids"), A.resolve(), B.Ic(S.qY.AUCTION_END, se()), z(p, (function () { try { if (null != Z) { const t = te.toArray().filter((e => m.includes(e.adUnitCode))).reduce(oe, {}); Z.apply(M, [t, e, b]), Z = null } } catch (e) { (0, i.vV)("Error executing bidsBackHandler", null, e) } finally { n.length && O.Ay.callTimedOutBidders(t, n, y); let e = a.$W.getConfig("userSync") || {}; e.enableOverride || $(e.syncDelay) } })) } } function ce() { a.$W.resetBidder(), (0, i.fH)(`Bids Received for Auction with id: ${b}`, te.toArray()), Y = q, de(!1) } function le(e) { v.add(e) } function ue(e) { e.forEach((e => { var t; t = e, ee = ee.concat(t) })); let t = {}, n = { bidRequests: e, run: () => { G = setTimeout((() => de(!0)), y), Y = x, B.Ic(S.qY.AUCTION_INIT, se()); let n = function (e, t) { let { index: n = ae.index } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, s = 0, d = !1, c = new Set, l = {}; function u() { s--, d && 0 === s && e() } function g(e, t, n) { return l[t.requestId] = !0, function (e, t) { let { index: n = ae.index } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; const r = n.getBidderRequest(e), o = n.getAdUnit(e), s = r && r.start || e.requestTimestamp; Object.assign(e, { responseTimestamp: e.responseTimestamp || (0, i.vE)(), requestTimestamp: e.requestTimestamp || s, cpm: parseFloat(e.cpm) || 0, bidder: e.bidder || e.bidderCode, adUnitCode: t }), null != o?.ttlBuffer && (e.ttlBuffer = o.ttlBuffer); e.timeToRespond = e.responseTimestamp - e.requestTimestamp }(t, e), s++, n(u) } function p(e, s) { g(e, s, (e => { let d = function (e) { let { index: t = ae.index } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; B.Ic(S.qY.BID_ADJUSTMENT, e); const n = t.getAdUnit(e); e.instl = 1 === n?.ortb2Imp?.instl; const i = t.getBidRequest(e)?.renderer || n.renderer, o = e.mediaType, s = t.getMediaTypes(e), d = s && s[o]; var c = d && d.renderer, l = null; !c || !c.render || !0 === c.backupOnly && e.renderer ? !i || !i.render || !0 === i.backupOnly && e.renderer || (l = i) : l = c; l && (e.renderer = E.A4.install({ url: l.url, config: l.options, renderNow: null == l.url }), e.renderer.setRender(l.render)); const u = K(e.mediaType, s, a.$W.getConfig("mediaTypePriceGranularity")), f = (0, r.j)(e.cpm, "object" == typeof u ? u : a.$W.getConfig("customPriceBucket"), a.$W.getConfig("currency.granularityMultiplier")); return e.pbLg = f.low, e.pbMg = f.med, e.pbHg = f.high, e.pbAg = f.auto, e.pbDg = f.dense, e.pbCg = f.custom, e }(s); B.Ic(S.qY.BID_ACCEPTED, d), d.mediaType === I.G_ ? function (e, t, n) { let { index: r = ae.index } = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {}, o = !0; const s = r.getMediaTypes({ requestId: t.originalRequestId || t.requestId, adUnitId: t.adUnitId })?.video, d = s && s?.context, c = s && s?.useCacheKey, { useLocal: l, url: u, ignoreBidderCacheKey: g } = a.$W.getConfig("cache") || {}; l ? f(t) : u && (c || d !== T.H6) && (!t.videoCacheKey || g ? (o = !1, Q(e, t, n, s)) : t.vastUrl || ((0, i.vV)("videoCacheKey specified but not required vastUrl for video bid"), o = !1)); o && (J(e, t), n()) }(t, d, e) : ((0, o.l6)(d) && (0, o.gs)(d, n.getAdUnit(d)), J(t, d), e()) })) } function h(e, n, r) { return g(e, n, (e => { n.rejectionReason = r, (0, i.JE)(`Bid from ${n.bidder || "unknown bidder"} was rejected: ${r}`, n), B.Ic(S.qY.BID_REJECTED, n), t.addBidRejected(n), e() })) } function m() { let n = this, r = t.getBidRequests(); const o = a.$W.getConfig("auctionOptions"); if (c.add(n), o && !(0, i.Im)(o)) { const e = o.secondaryBidders; e && !r.every((t => e.includes(t.bidderCode))) && (r = r.filter((t => !e.includes(t.bidderCode)))) } d = r.every((e => c.has(e))), n.bids.forEach((e => { l[e.bidId] || (t.addNoBid(e), B.Ic(S.qY.NO_BID, e)) })), d && 0 === s && e() } return { addBidResponse: function () { function e(e, t) { H.call({ dispatch: p }, e, t, (() => { let n = !1; return i => { n || (h(e, t, i), n = !0) } })()) } return e.reject = h, e }(), adapterDone: function () { F(R.U9.resolve()).finally((() => m.call(this))) } } }(ce, this); O.Ay.callBids(p, e, n.addBidResponse, n.adapterDone, { request(e, n) { d(P, n), d(t, e), W[e] || (W[e] = { SRA: !0, origin: n }), t[e] > 1 && (W[e].SRA = !1) }, done(e) { P[e]--, V[0] && s(V[0]) && V.shift() } }, y, le, u), w.resolve() } }; function s(e) { let t = !0, n = a.$W.getConfig("maxRequestsPerOrigin") || N; return e.bidRequests.some((e => { let i = 1, r = void 0 !== e.src && e.src === S.RW.SRC ? "s2s" : e.bidderCode; return W[r] && (!1 === W[r].SRA && (i = Math.min(e.bids.length, n)), P[W[r].origin] + i > n && (t = !1)), !t })), t && e.run(), t } function d(e, t) { void 0 === e[t] ? e[t] = 1 : e[t]++ } s(n) || ((0, i.JE)("queueing auction due to limited endpoint capacity"), V.push(n)) } return (0, _.lc)((() => te.refresh())), B.on(S.qY.SEAT_NON_BID, (e => { var t; e.auctionId === b && (t = e.seatnonbid, re = re.concat(t)) })), { addBidReceived: function (e) { te.add(e) }, addBidRejected: function (e) { X = X.concat(e) }, addNoBid: function (e) { ne = ne.concat(e) }, callBids: function () { Y = j, C = Date.now(); let e = g.measureTime("requestBids.makeRequests", (() => O.Ay.makeBidRequests(p, C, b, y, h, u, g))); (0, i.fH)(`Bids Requested for Auction with id: ${b}`, e), g.checkpoint("callBids"), e.length < 1 ? ((0, i.JE)("No valid bid requests returned for auction"), ce()) : L.call({ dispatch: ue, context: this }, e) }, addWinningBid: function (e) { ie = ie.concat(e), O.Ay.callBidWonBidder(e.adapterCode || e.bidder, e, t), e.deferBilling || O.Ay.triggerBilling(e) }, setBidTargeting: function (e) { O.Ay.callSetTargetingBidder(e.adapterCode || e.bidder, e) }, getWinningBids: () => ie, getAuctionStart: () => C, getAuctionEnd: () => U, getTimeout: () => y, getAuctionId: () => b, getAuctionStatus: () => Y, getAdUnits: () => p, getAdUnitCodes: () => m, getBidRequests: () => ee, getBidsReceived: () => te.toArray(), getNoBids: () => ne, getNonBids: () => re, getFPD: () => u, getMetrics: () => g, end: A.promise, requestsDone: w.promise, getProperties: se } } const H = (0, w.u2)((0, w.A_)("async", (function (e, t, n) { !function (e) { const t = a.$W.getConfig("maxBid"); return !t || !e.cpm || t >= Number(e.cpm) }(t) ? n(S.Tf.PRICE_TOO_HIGH) : this.dispatch.call(null, e, t) }), "addBidResponse")), F = (0, w.A_)("sync", (e => e), "responsesReady"), L = (0, w.A_)("sync", (function (e) { this.dispatch.call(this.context, e) }), "addBidderRequests"), z = (0, w.A_)("async", (function (e, t) { t && t() }), "bidsBackCallback"); function J(e, t) { !function (e) { let t; const n = !0 === C.u.get(e.bidderCode, "allowZeroCpmBids") ? e.cpm >= 0 : e.cpm > 0; e.bidderCode && (n || e.dealId) && (t = function (e, t) { let { index: n = ae.index } = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}; if (!t) return {}; const i = n.getBidRequest(t); var r = {}; const s = ie(t.mediaType, e); re(r, s, t, i), e && C.u.getOwn(e, S.iD.ADSERVER_TARGETING) && (re(r, C.u.ownSettingsFor(e), t, i), t.sendStandardTargeting = C.u.get(e, "sendStandardTargeting")); t.native && (r = Object.assign({}, r, (0, o.Zj)(t))); return r }(e.bidderCode, e)); e.adserverTargeting = Object.assign(e.adserverTargeting || {}, t) }(t), (0, k.BO)(t.metrics).timeSince("addBidResponse", "addBidResponse.total"), e.addBidReceived(t), B.Ic(S.qY.BID_RESPONSE, t) } const Q = (0, w.A_)("async", (function (e, t, n, i) { v(e, t, n) }), "callPrebidCache"); function K(e, t, n) { if (e && n) { if (e === I.G_) { const e = t?.[I.G_]?.context ?? "instream"; if (n[`${I.G_}-${e}`]) return n[`${I.G_}-${e}`] } return n[e] } } const Y = e => t => { const n = e || function (e) { let { index: t = ae.index } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; const n = K(e.mediaType, t.getMediaTypes(e), a.$W.getConfig("mediaTypePriceGranularity")); return "string" == typeof e.mediaType && n ? "string" == typeof n ? n : "custom" : a.$W.getConfig("priceGranularity") }(t); return n === S.UE.AUTO ? t.pbAg : n === S.UE.DENSE ? t.pbDg : n === S.UE.LOW ? t.pbLg : n === S.UE.MEDIUM ? t.pbMg : n === S.UE.HIGH ? t.pbHg : n === S.UE.CUSTOM ? t.pbCg : void 0 }, X = () => e => e.creativeId ? e.creativeId : "", Z = () => e => e.meta && e.meta.advertiserDomains && e.meta.advertiserDomains.length > 0 ? [e.meta.advertiserDomains].flat()[0] : "", ee = () => e => e.meta && (e.meta.networkId || e.meta.networkName) ? e?.meta?.networkName || e?.meta?.networkId : "", te = () => e => { const t = e?.meta?.primaryCatId; return Array.isArray(t) ? t[0] || "" : t || "" }; function ne(e, t) { return { key: e, val: "function" == typeof t ? function (e, n) { return t(e, n) } : function (e) { return e[t] } } } function ie(e, t) { const n = Object.assign({}, C.u.settingsFor(null)); if (n[S.iD.ADSERVER_TARGETING] || (n[S.iD.ADSERVER_TARGETING] = [ne(S.xS.BIDDER, "bidderCode"), ne(S.xS.AD_ID, "adId"), ne(S.xS.PRICE_BUCKET, Y()), ne(S.xS.SIZE, "size"), ne(S.xS.DEAL, "dealId"), ne(S.xS.SOURCE, "source"), ne(S.xS.FORMAT, "mediaType"), ne(S.xS.ADOMAIN, Z()), ne(S.xS.ACAT, te()), ne(S.xS.DSP, ee()), ne(S.xS.CRID, X())]), "video" === e) { const e = n[S.iD.ADSERVER_TARGETING].slice(); if (n[S.iD.ADSERVER_TARGETING] = e, [S.xS.UUID, S.xS.CACHE_ID].forEach((t => { void 0 === e.find((e => e.key === t)) && e.push(ne(t, "videoCacheKey")) })), a.$W.getConfig("cache.url") && (!t || !1 !== C.u.get(t, "sendStandardTargeting"))) { const t = (0, i.Dl)(a.$W.getConfig("cache.url")); void 0 === e.find((e => e.key === S.xS.CACHE_HOST)) && e.push(ne(S.xS.CACHE_HOST, (function (e) { return e?.adserverTargeting?.[S.xS.CACHE_HOST] || t.hostname }))) } } return n } function re(e, t, n, r) { var o = t[S.iD.ADSERVER_TARGETING]; return n.size = n.getSize(), (o || []).forEach((function (o) { var s = o.key, a = o.val; if (e[s] && (0, i.JE)("The key: " + s + " is being overwritten"), (0, i.fp)(a)) try { a = a(n, r) } catch (e) { (0, i.vV)("bidmanager", "ERROR", e) } (void 0 === t.suppressEmptyKeys || !0 !== t.suppressEmptyKeys) && s !== S.xS.DEAL && s !== S.xS.ACAT && s !== S.xS.DSP && s !== S.xS.CRID || !(0, i.xQ)(a) && null != a ? e[s] = a : (0, i.fH)("suppressing empty key '" + s + "' from adserver targeting") })), e } function oe(e, t) { return e[t.adUnitCode] || (e[t.adUnitCode] = { bids: [] }), e[t.adUnitCode].bids.push(t), e } function se(e) { Object.assign(this, { getAuction(t) { let { auctionId: n } = t; if (null != n) return e().find((e => e.getAuctionId() === n)) }, getAdUnit(t) { let { adUnitId: n } = t; if (null != n) return e().flatMap((e => e.getAdUnits())).find((e => e.adUnitId === n)) }, getMediaTypes(e) { let { adUnitId: t, requestId: n } = e; if (null != n) { const e = this.getBidRequest({ requestId: n }); if (null != e && (null == t || e.adUnitId === t)) return e.mediaTypes } else if (null != t) { const e = this.getAdUnit({ adUnitId: t }); if (null != e) return e.mediaTypes } }, getBidderRequest(t) { let { requestId: n, bidderRequestId: i } = t; if (null != n || null != i) { let t = e().flatMap((e => e.getBidRequests())); return null != i && (t = t.filter((e => e.bidderRequestId === i))), null == n ? t[0] : t.find((e => e.bids && null != e.bids.find((e => e.bidId === n)))) } }, getBidRequest(t) { let { requestId: n } = t; if (null != n) return e().flatMap((e => e.getBidRequests())).flatMap((e => e.bids)).find((e => e && e.bidId === n)) }, getOrtb2(e) { return this.getBidderRequest(e)?.ortb2 || this.getAuction(e)?.getFPD()?.global?.ortb2 } }) } const ae = function () { const e = (0, D.H)({ startTime: e => e.end.then((() => e.getAuctionEnd())), ttl: e => null == (0, _.S9)() ? null : e.end.then((() => 1e3 * Math.max((0, _.S9)(), ...e.getBidsReceived().map((e => e.ttl))))) }); (0, _.lc)((() => e.refresh())); const t = { onExpiry: e.onExpiry }; function n(t) { for (const n of e) if (n.getAuctionId() === t) return n } function r() { return e.toArray().flatMap((e => e.getBidsReceived())) } return t.addWinningBid = function (e) { const t = (0, k.BO)(e.metrics); t.checkpoint("bidWon"), t.timeBetween("auctionEnd", "bidWon", "adserver.pending"), t.timeBetween("requestBids", "bidWon", "adserver.e2e"); const r = n(e.auctionId); r ? r.addWinningBid(e) : (0, i.JE)("Auction not found when adding winning bid") }, Object.entries({ getAllWinningBids: { name: "getWinningBids" }, getBidsRequested: { name: "getBidRequests" }, getNoBids: {}, getAdUnits: {}, getBidsReceived: { pre: e => e.getAuctionStatus() === q }, getAdUnitCodes: { post: i.hj } }).forEach((n => { let [i, { name: r = i, pre: o, post: s }] = n; const a = null == o ? e => e[r]() : e => o(e) ? e[r]() : [], d = null == s ? e => e : e => e.filter(s); t[i] = () => d(e.toArray().flatMap(a)) })), t.getAllBidsForAdUnitCode = function (e) { return r().filter((t => t && t.adUnitCode === e)) }, t.createAuction = function (t) { const n = G(t); return function (t) { e.add(t) }(n), n }, t.findBidByAdId = function (e) { return r().find((t => t.adId === e)) }, t.getStandardBidderAdServerTargeting = function () { return ie()[S.iD.ADSERVER_TARGETING] }, t.setStatusForBids = function (e, i) { let r = t.findBidByAdId(e); if (r && (r.status = i), r && i === S.tl.BID_TARGETING_SET) { const e = n(r.auctionId); e && e.setBidTargeting(r) } }, t.getLastAuctionId = function () { const t = e.toArray(); return t.length && t[t.length - 1].getAuctionId() }, t.clearAllAuctions = function () { e.clear() }, t.index = new se((() => e.toArray())), t }() }, 863: (e, t, n) => { n.d(t, { S9: () => l, cT: () => c, lc: () => u }); var i = n(272), r = n(69); const o = "minBidCacheTTL"; let s = 1, a = null; const d = []; function c(e) { return e.ttl - (e.hasOwnProperty("ttlBuffer") ? e.ttlBuffer : s) } function l() { return a } function u(e) { d.push(e) } i.$W.getConfig("ttlBuffer", (e => { "number" == typeof e.ttlBuffer ? s = e.ttlBuffer : (0, r.vV)("Invalid value for ttlBuffer", e.ttlBuffer) })), i.$W.getConfig(o, (e => { const t = a; a = e?.[o], a = "number" == typeof a ? a : null, t !== a && d.forEach((e => e(a))) })) }, 693: (e, t, n) => { n.d(t, { u: () => a }); var i = n(433), r = n(69), o = n(873), s = n(969); const a = new class { constructor(e, t) { this.getSettings = e, this.defaultScope = t } get(e, t) { let n = this.getOwn(e, t); return void 0 === n && (n = this.getOwn(null, t)), n } getOwn(e, t) { return e = this.#e(e), (0, i.A)(this.getSettings(), `${e}.${t}`) } getScopes() { return Object.keys(this.getSettings()).filter((e => e !== this.defaultScope)) } settingsFor(e) { return (0, r.D9)({}, this.ownSettingsFor(null), this.ownSettingsFor(e)) } ownSettingsFor(e) { return e = this.#e(e), this.getSettings()[e] || {} } #e(e) { return null == e ? this.defaultScope : e } }((() => (0, o.m)().bidderSettings || {}), s.iD.BD_SETTING_STANDARD) }, 597: (e, t, n) => { n.d(t, { O: () => o }); var i = n(69); function r(e) { let { src: t = "client", bidder: n = "", bidId: r, transactionId: o, adUnitId: s, auctionId: a } = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; var d = t, c = e || 0; Object.assign(this, { bidderCode: n, width: 0, height: 0, statusMessage: function () { switch (c) { case 0: return "Pending"; case 1: return "Bid available"; case 2: return "Bid returned empty or error response"; case 3: return "Bid timed out" } }(), adId: (0, i.s0)(), requestId: r, transactionId: o, adUnitId: s, auctionId: a, mediaType: "banner", source: d }), this.getStatusCode = function () { return c }, this.getSize = function () { return this.width + "x" + this.height }, this.getIdentifiers = function () { return { src: this.source, bidder: this.bidderCode, bidId: this.requestId, transactionId: this.transactionId, adUnitId: this.adUnitId, auctionId: this.auctionId } } } function o(e, t) { return new r(e, t) } }, 272: (e, t, n) => { n.d(t, { $W: () => p, Ov: () => c }); var i = n(833), r = n(69), o = n(433), s = n(969); const a = "TRUE" === (0, r.Ez)(s.M).toUpperCase(), d = {}, c = "random", l = {}; l[c] = !0, l.fixed = !0; const u = c, f = { LOW: "low", MEDIUM: "medium", HIGH: "high", AUTO: "auto", DENSE: "dense", CUSTOM: "custom" }; function g(e) { const t = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1] ? { priceGranularity: f.MEDIUM, customPriceBucket: {}, mediaTypePriceGranularity: {}, bidderSequence: u, auctionOptions: {} } : {}; function n(e) { return t[e] } function o(n, i) { t.hasOwnProperty(n) || Object.defineProperty(e, n, { enumerable: !0 }), t[n] = i } const s = { publisherDomain: { set(e) { null != e && (0, r.JE)("publisherDomain is deprecated and has no effect since v7 - use pageUrl instead"), o("publisherDomain", e) } }, priceGranularity: { set(e) { d(e) && ("string" == typeof e ? o("priceGranularity", a(e) ? e : f.MEDIUM) : (0, r.Qd)(e) && (o("customPriceBucket", e), o("priceGranularity", f.CUSTOM), (0, r.OG)("Using custom price granularity"))) } }, customPriceBucket: {}, mediaTypePriceGranularity: { set(e) { null != e && o("mediaTypePriceGranularity", Object.keys(e).reduce(((t, i) => (d(e[i]) ? "string" == typeof e ? t[i] = a(e[i]) ? e[i] : n("priceGranularity") : (0, r.Qd)(e) && (t[i] = e[i], (0, r.OG)(`Using custom price granularity for ${i}`)) : (0, r.JE)(`Invalid price granularity for media type: ${i}`), t)), {})) } }, bidderSequence: { set(e) { l[e] ? o("bidderSequence", e) : (0, r.JE)(`Invalid order: ${e}. Bidder Sequence was not set.`) } }, auctionOptions: { set(e) { (function (e) { if (!(0, r.Qd)(e)) return (0, r.JE)("Auction Options must be an object"), !1; for (let t of Object.keys(e)) { if ("secondaryBidders" !== t && "suppressStaleRender" !== t && "suppressExpiredRender" !== t) return (0, r.JE)(`Auction Options given an incorrect param: ${t}`), !1; if ("secondaryBidders" === t) { if (!(0, r.cy)(e[t])) return (0, r.JE)(`Auction Options ${t} must be of type Array`), !1; if (!e[t].every(r.O8)) return (0, r.JE)(`Auction Options ${t} must be only string`), !1 } else if (("suppressStaleRender" === t || "suppressExpiredRender" === t) && !(0, r.Lm)(e[t])) return (0, r.JE)(`Auction Options ${t} must be of type boolean`), !1 } return !0 })(e) && o("auctionOptions", e) } } }; return Object.defineProperties(e, Object.fromEntries(Object.entries(s).map((e => { let [i, r] = e; return [i, Object.assign({ get: n.bind(null, i), set: o.bind(null, i), enumerable: t.hasOwnProperty(i), configurable: !t.hasOwnProperty(i) }, r)] })))), e; function a(e) { return Object.keys(f).find((t => e === f[t])) } function d(e) { if (!e) return (0, r.vV)("Prebid Error: no value passed to `setPriceGranularity()`"), !1; if ("string" == typeof e) a(e) || (0, r.JE)("Prebid Warning: setPriceGranularity was called with invalid setting, using `medium` as default."); else if ((0, r.Qd)(e) && !(0, i.q)(e)) return (0, r.vV)("Invalid custom price value passed to `setPriceGranularity()`"), !1; return !0 } } const p = function () { let e, t, n, i = [], s = null; function c() { e = {}; let i = g({ debug: a, bidderTimeout: 3e3, enableSendAllBids: true, useBidCache: false, deviceAccess: true, disableAjaxTimeout: false, maxNestedIframes: 10, maxBid: 5e3, userSync: { topics: d } }); t && y(Object.keys(t).reduce(((e, n) => (t[n] !== i[n] && (e[n] = i[n] || {}), e)), {})), t = i, n = {} } function l() { if (s && n && (0, r.Qd)(n[s])) { const e = n[s], i = new Set([...Object.keys(t), ...Object.keys(e)]), o = {}; for (const n of i) { const i = t[n], s = e[n]; o[n] = void 0 === s ? i : void 0 === i ? s : (0, r.Qd)(s) ? (0, r.D9)({}, i, s) : s } return o } return { ...t } } const [u, f] = [l, function () { const e = l(); return Object.defineProperty(e, "ortb2", { get: function () { throw new Error("invalid access to 'orbt2' config - use request parameters instead") } }), e }].map((e => function () { if (arguments.length <= 1 && "function" != typeof (arguments.length <= 0 ? void 0 : arguments[0])) { const t = arguments.length <= 0 ? void 0 : arguments[0]; return t ? (0, o.A)(e(), t) : l() } return b(...arguments) })), [p, h] = [f, u].map((e => function () { let t = e(...arguments); return t && "object" == typeof t && (t = (0, r.Go)(t)), t })); function m(n) { if (!(0, r.Qd)(n)) return void (0, r.vV)("setConfig options must be an object"); let i = Object.keys(n), o = {}; i.forEach((i => { let s = n[i]; (0, r.Qd)(e[i]) && (0, r.Qd)(s) && (s = Object.assign({}, e[i], s)); try { o[i] = t[i] = s } catch (e) { (0, r.JE)(`Cannot set config for property ${i} : `, e) } })), y(o) } function b(e, t) { let n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, o = t; if ("string" != typeof e && (o = e, e = "*", n = t || {}), "function" != typeof o) return void (0, r.vV)("listener must be a function"); const s = { topic: e, callback: o }; return i.push(s), n.init && o("*" === e ? f() : { [e]: f(e) }), function () { i.splice(i.indexOf(s), 1) } } function y(e) { const t = Object.keys(e); i.filter((e => t.includes(e.topic))).forEach((t => { t.callback({ [t.topic]: e[t.topic] }) })), i.filter((e => "*" === e.topic)).forEach((t => t.callback(e))) } function v(e) { let t = arguments.length > 1 && void 0 !== arguments[1] && arguments[1]; try { !function (e) { if (!(0, r.Qd)(e)) throw "setBidderConfig bidder options must be an object"; if (!Array.isArray(e.bidders) || !e.bidders.length) throw "setBidderConfig bidder options must contain a bidders list with at least 1 bidder"; if (!(0, r.Qd)(e.config)) throw "setBidderConfig bidder options must contain a config object" }(e), e.bidders.forEach((i => { n[i] || (n[i] = g({}, !1)), Object.keys(e.config).forEach((o => { let s = e.config[o]; const a = n[i][o]; if ((0, r.Qd)(s) && (null == a || (0, r.Qd)(a))) { const e = t ? r.D9 : Object.assign; n[i][o] = e({}, a || {}, s) } else n[i][o] = s })) })) } catch (e) { (0, r.vV)(e) } } function E(e, t) { s = e; try { return t() } finally { A() } } function A() { s = null } return c(), { getCurrentBidder: function () { return s }, resetBidder: A, getConfig: f, getAnyConfig: u, readConfig: p, readAnyConfig: h, setConfig: m, mergeConfig: function (e) { if (!(0, r.Qd)(e)) return void (0, r.vV)("mergeConfig input must be an object"); const t = (0, r.D9)(l(), e); return m({ ...t }), t }, setDefaults: function (n) { (0, r.Qd)(e) ? (Object.assign(e, n), Object.assign(t, n)) : (0, r.vV)("defaults must be an object") }, resetConfig: c, runWithBidder: E, callbackWithBidder: function (e) { return function (t) { return function () { if ("function" == typeof t) { for (var n = arguments.length, i = new Array(n), o = 0; o < n; o++)i[o] = arguments[o]; return E(e, t.bind(this, ...i)) } (0, r.JE)("config.callbackWithBidder callback is not a function") } } }, setBidderConfig: v, getBidderConfig: function () { return n }, mergeBidderConfig: function (e) { return v(e, !0) } } }() }, 916: (e, t, n) => { n.d(t, { SL: () => g, ad: () => c, mW: () => a, o2: () => u, t6: () => d }); var i = n(69), r = n(555), o = n(272); Object.freeze({}); class s { #t; #n; #i; #r; #o = !0; #s; generatedTime; hashFields; constructor() { this.reset() } #a(e) { this.#r = !0, this.#n = e, this.#i.resolve(e) } reset() { this.#i = (0, r.v6)(), this.#t = !1, this.#n = null, this.#r = !1, this.generatedTime = null } enable() { this.#t = !0 } get enabled() { return this.#t } get ready() { return this.#r } get promise() { return this.#r ? r.U9.resolve(this.#n) : (this.#t || this.#a(null), this.#i.promise) } setConsentData(e) { let t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : (0, i.vE)(); this.generatedTime = t, this.#o = !0, this.#a(e) } getConsentData() { return this.#n } get hash() { return this.#o && (this.#s = (0, i.PB)(JSON.stringify(this.#n && this.hashFields ? this.hashFields.map((e => this.#n[e])) : this.#n)), this.#o = !1), this.#s } } const a = new class extends s { hashFields = ["gdprApplies", "consentString"]; getConsentMeta() { const e = this.getConsentData(); if (e && e.vendorData && this.generatedTime) return { gdprApplies: e.gdprApplies, consentStringSize: (0, i.O8)(e.vendorData.tcString) ? e.vendorData.tcString.length : 0, generatedAt: this.generatedTime, apiVersion: e.apiVersion } } }, d = new class extends s { getConsentMeta() { if (this.getConsentData() && this.generatedTime) return { generatedAt: this.generatedTime } } }, c = new class extends s { hashFields = ["applicableSections", "gppString"]; getConsentMeta() { if (this.getConsentData() && this.generatedTime) return { generatedAt: this.generatedTime } } }, l = (() => { function e() { return !!o.$W.getConfig("coppa") } return { getCoppa: e, getConsentData: e, getConsentMeta: e, reset() { }, get promise() { return r.U9.resolve(e()) }, get hash() { return e() ? "1" : "0" } } })(), u = function () { const e = {}, t = {}, n = {}; return { register(i, r, o) { o && ((e[r] = e[r] || {})[i] = o, t.hasOwnProperty(r) ? t[r] !== o && (t[r] = n) : t[r] = o) }, get(i) { const r = { modules: e[i] || {} }; return t.hasOwnProperty(i) && t[i] !== n && (r.gvlid = t[i]), r } } }(), f = { gdpr: a, usp: d, gpp: c, coppa: l }; const g = function () { let e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : f; return e = Object.entries(e), Object.assign({ get promise() { return r.U9.all(e.map((e => { let [t, n] = e; return n.promise.then((e => [t, e])) }))).then((e => Object.fromEntries(e))) }, get hash() { return (0, i.PB)(e.map((e => { let [t, n] = e; return n.hash })).join(":")) } }, Object.fromEntries(["getConsentData", "getConsentMeta", "reset"].map((t => { return [t, (n = t, function () { return Object.fromEntries(e.map((e => { let [t, i] = e; return [t, i[n]()] }))) })]; var n })))) }() }, 969: (e, t, n) => { n.d(t, { IY: () => A, M: () => r, RW: () => g, Tf: () => h, UE: () => c, XQ: () => o, Zh: () => u, _B: () => v, as: () => a, cA: () => d, h0: () => m, iD: () => i, jO: () => b, nl: () => E, oA: () => y, qY: () => s, tl: () => p, x5: () => f, xS: () => l }); const i = { PL_CODE: "code", PL_SIZE: "sizes", PL_BIDS: "bids", BD_BIDDER: "bidder", BD_ID: "paramsd", BD_PL_ID: "placementId", ADSERVER_TARGETING: "adserverTargeting", BD_SETTING_STANDARD: "standard" }, r = "pbjs_debug", o = { GOOD: 1 }, s = { AUCTION_INIT: "auctionInit", AUCTION_TIMEOUT: "auctionTimeout", AUCTION_END: "auctionEnd", BID_ADJUSTMENT: "bidAdjustment", BID_TIMEOUT: "bidTimeout", BID_REQUESTED: "bidRequested", BID_RESPONSE: "bidResponse", BID_REJECTED: "bidRejected", NO_BID: "noBid", SEAT_NON_BID: "seatNonBid", BID_WON: "bidWon", BIDDER_DONE: "bidderDone", BIDDER_ERROR: "bidderError", SET_TARGETING: "setTargeting", BEFORE_REQUEST_BIDS: "beforeRequestBids", BEFORE_BIDDER_HTTP: "beforeBidderHttp", REQUEST_BIDS: "requestBids", ADD_AD_UNITS: "addAdUnits", AD_RENDER_FAILED: "adRenderFailed", AD_RENDER_SUCCEEDED: "adRenderSucceeded", TCF2_ENFORCEMENT: "tcf2Enforcement", AUCTION_DEBUG: "auctionDebug", BID_VIEWABLE: "bidViewable", STALE_RENDER: "staleRender", EXPIRED_RENDER: "expiredRender", BILLABLE_EVENT: "billableEvent", BID_ACCEPTED: "bidAccepted", RUN_PAAPI_AUCTION: "paapiRunAuction", PBS_ANALYTICS: "pbsAnalytics", PAAPI_BID: "paapiBid", PAAPI_NO_BID: "paapiNoBid", PAAPI_ERROR: "paapiError", BEFORE_PBS_HTTP: "beforePBSHttp", BROWSI_INIT: "browsiInit", BROWSI_DATA: "browsiData" }, a = { PREVENT_WRITING_ON_MAIN_DOCUMENT: "preventWritingOnMainDocument", NO_AD: "noAd", EXCEPTION: "exception", CANNOT_FIND_AD: "cannotFindAd", MISSING_DOC_OR_ADID: "missingDocOrAdid" }, d = { bidWon: "adUnitCode" }, c = { LOW: "low", MEDIUM: "medium", HIGH: "high", AUTO: "auto", DENSE: "dense", CUSTOM: "custom" }, l = { BIDDER: "hb_bidder", AD_ID: "hb_adid", PRICE_BUCKET: "hb_pb", SIZE: "hb_size", DEAL: "hb_deal", SOURCE: "hb_source", FORMAT: "hb_format", UUID: "hb_uuid", CACHE_ID: "hb_cache_id", CACHE_HOST: "hb_cache_host", ADOMAIN: "hb_adomain", ACAT: "hb_acat", CRID: "hb_crid", DSP: "hb_dsp" }, u = { BIDDER: "hb_bidder", AD_ID: "hb_adid", PRICE_BUCKET: "hb_pb", SIZE: "hb_size", DEAL: "hb_deal", FORMAT: "hb_format", UUID: "hb_uuid", CACHE_HOST: "hb_cache_host" }, f = { title: "hb_native_title", body: "hb_native_body", body2: "hb_native_body2", privacyLink: "hb_native_privacy", privacyIcon: "hb_native_privicon", sponsoredBy: "hb_native_brand", image: "hb_native_image", icon: "hb_native_icon", clickUrl: "hb_native_linkurl", displayUrl: "hb_native_displayurl", cta: "hb_native_cta", rating: "hb_native_rating", address: "hb_native_address", downloads: "hb_native_downloads", likes: "hb_native_likes", phone: "hb_native_phone", price: "hb_native_price", salePrice: "hb_native_saleprice", rendererUrl: "hb_renderer_url", adTemplate: "hb_adTemplate" }, g = { SRC: "s2s", DEFAULT_ENDPOINT: "https://prebid.adnxs.com/pbs/v1/openrtb2/auction", SYNCED_BIDDERS_KEY: "pbjsSyncs" }, p = { BID_TARGETING_SET: "targetingSet", RENDERED: "rendered", BID_REJECTED: "bidRejected" }, h = { INVALID: "Bid has missing or invalid properties", INVALID_REQUEST_ID: "Invalid request ID", BIDDER_DISALLOWED: "Bidder code is not allowed by allowedAlternateBidderCodes / allowUnknownBidderCodes", FLOOR_NOT_MET: "Bid does not meet price floor", CANNOT_CONVERT_CURRENCY: "Unable to convert currency", DSA_REQUIRED: "Bid does not provide required DSA transparency info", DSA_MISMATCH: "Bid indicates inappropriate DSA rendering method", PRICE_TOO_HIGH: "Bid price exceeds maximum value" }, m = { body: "desc", body2: "desc2", sponsoredBy: "sponsored", cta: "ctatext", rating: "rating", address: "address", downloads: "downloads", likes: "likes", phone: "phone", price: "price", salePrice: "saleprice", displayUrl: "displayurl" }, b = { sponsored: 1, desc: 2, rating: 3, likes: 4, downloads: 5, price: 6, saleprice: 7, phone: 8, address: 9, desc2: 10, displayurl: 11, ctatext: 12 }, y = { ICON: 1, MAIN: 3 }, v = ["privacyIcon", "clickUrl", "sendTargetingKeys", "adTemplate", "rendererUrl", "type"], E = { REQUEST: "Prebid Request", RESPONSE: "Prebid Response", NATIVE: "Prebid Native", EVENT: "Prebid Event" }, A = "__pb_locator__" }, 833: (e, t, n) => { n.d(t, { j: () => u, q: () => g }); var i = n(69), r = n(272); const o = 2, s = { buckets: [{ max: 5, increment: .5 }] }, a = { buckets: [{ max: 20, increment: .1 }] }, d = { buckets: [{ max: 20, increment: .01 }] }, c = { buckets: [{ max: 3, increment: .01 }, { max: 8, increment: .05 }, { max: 20, increment: .5 }] }, l = { buckets: [{ max: 5, increment: .05 }, { max: 10, increment: .1 }, { max: 20, increment: .5 }] }; function u(e, t) { let n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1, i = parseFloat(e); return isNaN(i) && (i = ""), { low: "" === i ? "" : f(e, s, n), med: "" === i ? "" : f(e, a, n), high: "" === i ? "" : f(e, d, n), auto: "" === i ? "" : f(e, l, n), dense: "" === i ? "" : f(e, c, n), custom: "" === i ? "" : f(e, t, n) } } function f(e, t, n) { let s = ""; if (!g(t)) return s; const a = t.buckets.reduce(((e, t) => e.max > t.max ? e : t), { max: 0 }); let d = 0, c = t.buckets.find((t => { if (e > a.max * n) { let e = t.precision; void 0 === e && (e = o), s = (t.max * n).toFixed(e) } else { if (e <= t.max * n && e >= d * n) return t.min = d, t; d = t.max } })); return c && (s = function (e, t, n) { const s = void 0 !== t.precision ? t.precision : o, a = t.increment * n, d = t.min * n; let c = Math.floor, l = r.$W.getConfig("cpmRoundingFunction"); "function" == typeof l && (c = l); let u, f, g = Math.pow(10, s + 2), p = (e * g - d * g) / (a * g); try { u = c(p) * a + d } catch (e) { f = !0 } (f || "number" != typeof u) && ((0, i.JE)("Invalid rounding function passed in config"), u = Math.floor(p) * a + d); return u = Number(u.toFixed(10)), u.toFixed(s) }(e, c, n)), s } function g(e) { if ((0, i.Im)(e) || !e.buckets || !Array.isArray(e.buckets)) return !1; let t = !0; return e.buckets.forEach((e => { e.max && e.increment || (t = !1) })), t } }, 31: (e, t, n) => { n.d(t, { HH: () => c, kj: () => d, xh: () => a }); var i = n(555), r = n(69), o = n(595), s = n(214); const a = 3, d = (0, s.A_)("sync", (function (e) { return o.G })), c = function () { const e = {}; return function (t) { const n = d(t); return e.hasOwnProperty(n) || (e[n] = new i.U9((e => { const t = (0, r.CA)(); t.srcdoc = ` + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+ +
+
+ AD + + + +
+
+
+
+ + +
+ +
+
+
+

New Games

+
+
+ +
+
+
+ +
+
+ +
+ +
+
+
+ Roll Ball +
+ + Roll Ball + +
+
+ + +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+
+
+

Top Games

+
+
+ +
+
+
+ +
+
+
+
+ Klotski +
+ + Klotski + +
+
+
+ +
+ + +
+ +
+
+
+ +
+ +
+
+
+
+ Sky Lands +
+ + Sky Lands + +
+
+
+ +
+ +
+ +
+
+
+
+
+
+ Hot Shoot +
+ + Hot Shoot + +
+
+
+ +
+
+ +
+
+ +
+ +
+ +
+
+
+
+
+
+
+

Racing Games

+
+
+ +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+ +
+
+
+ +
+
+ +
+
+ +
+ +
+ +
+
+
+
+ Hoverla +
+ + Hoverla + +
+
+
+
+ +
+
+
+
+

Casual Games

+
+
+ +
+
+
+ +
+
+ +
+
+
+
+ Coin Dive +
+ + Coin Dive + +
+
+
+ +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+ +
+ +
+ +
+ +
+
+
+
+ +
+
+
+
+ Ocho +
+ + Ocho + +
+
+ +
+ +
+
+ +
+
+ +
+
+
+ +
+
+
+
+

Skill Games

+
+
+ +
+
+
+ +
+
+
+
+ 2020 Plus +
+ + 2020 Plus + +
+
+
+ +
+ +
+ +
+
+ +
+
+
+
+ +
+
+
+
+ War Wings +
+ + War Wings + +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+ 100 Balls +
+ + 100 Balls + +
+
+ +
+ +
+ +
+ +
+
+
+
+ Park Me +
+ + Park Me + +
+
+
+
+ +
+
+
+
+

Animal Games

+
+
+ +
+
+ +
+ +
+
+ +
+
+
+
+ Wiggle +
+ + Wiggle + +
+
+
+ +
+ +
+
+
+ +
+
+ +
+ + +
+ +
+
+ +
+
+
+
+ +
+
+
+
+ Lake Jump +
+ + Lake Jump + +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ +
+
+
+
+

Girls Games

+
+
+ +
+
+
+ +
+
+ +
+ +
+ +
+ +
+ +
+
+
+
+
+
+ Indiara +
+ +
Indiara
+
+
+
+
+ +
+ +
+ +
+
+ +
+
+ +
+
+
+ + +
+ +
+
+ +
+
+ +
+ +
+
+ +
+
+
+
+
+
+
+

Welcome to + + STARHOTS Free Top: Free Game Center is an + aggregation platform that provides a variety of online games that players can + play + for free. It usually includes the following features: +

+

1. Diversified games: covering + multiple + types such as role-playing, casual puzzles, and competitions to meet the + interests + of different players.

+

2. No need to download: Most games + can + be played directly in the browser, which is convenient and fast and saves + storage + space.

+

3. Social functions: Many platforms + provide social interaction functions, players can play games with friends or + communicate in the community.

+

4. Frequent updates: New games are + updated regularly to keep the platform fresh and active.

+

Free Game Center provides players + with a + relaxing and enjoyable entertainment environment suitable for leisure time.

+
+
+
+
+
+
+

Discover Some Exciting + Game + Categories on STARHOTS Free Top

+

Let’s dive into the exciting world + of + game categories that STARHOTS Free Top offers. Here’s a quick + rundown + of the various game categories:

+

1. Racing

+

Revolving around racing, players can + drive various types of vehicles to compete on different tracks, pursuing speed + and + skills.

+

2. Casual

+

Simple and easy to play games + suitable + for relaxation and entertainment, usually without complex rules, suitable for + players of all ages.

+

3. Skill

+

Focus on the player's skills and + reactions, usually including challenging and difficult operations, testing the + player's skills.

+

4. Animals

+

Games with animal themes may include + elements such as cultivation, adventure or simulation, suitable for players who + love + animals.

+

5. Girls

+

Games designed specifically for + female + players, usually involving elements such as fashion, makeup, cultivation, + emphasizing creativity and personality.

+

These categories cover a wide range + of + gaming experiences, catering to different players' needs and preferences.

+
+
+
+
+
+
+

How to play online games + at STARHOTS Free Top

+

Alright, so you're ready to dive + into + the world of STARHOTS Free Top – awesome choice! Here's how + to + get started:

+

Step 1: Fire up your web browser and + head over to STARHOTS Free Top.

+

Step 2: Take a stroll through our + game + library and pick out something that catches your eye.

+

Step 3: Click on the game you want + to + play – it's that simple!

+

Step 4: Get ready to have a blast. + Whether you're flying solo or teaming up with friends, the fun never stops at STARHOTS + Free Top.

+
+
+
+
+
+ Show more +
+
+ +
+ +
+
+ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/settings.json b/settings.json new file mode 100644 index 0000000..2897af2 --- /dev/null +++ b/settings.json @@ -0,0 +1,3 @@ +{ + "liveServer.settings.port": 5502 +} \ No newline at end of file