The Olympics are on a diet. After the host cities filled themselves with expensive, useless velodromes and shooting ranges for decades, the International Olympic Committee relaxed its requirements – not out of magnanimity, mind you, but because the cities stopped applying. The new focus is on temporary structures and adaptability, and the test case is running in Paris, where the 2024 Games will be held.
Instead of an isolated Olympic park with tickets for journalists, athletes and stadiums, the Paris Games will take place over the city and its suburbs distributed. Instead of a dozen brand new stadiums, Paris is building just a handful, the rest are being built in temporary or older buildings. The main venue, the Stade de France, is over 25 years old; Much of the competition will unfold through ad hoc structures in the heart of the city. Fencing in the Grand Palais, horse riding in the Chateau de Versailles, breakdancing on the Place de la Concorde (yes, there will be a gold medal for B-Boys and Girls in 2024), wrestling in front of the Eiffel Tower. And an opening ceremony on the Seine. The event will be hard to miss for Parisians, for better or for worse.
And the cost? For the first time, the budget for the construction (3.35 billion euros) is below the budget for the event itself (3.9 billion euros). This means that the 2024 Games would be significantly cheaper than the Games in London, Sochi, Rio or Tokyo – according to Japanese auditors, the current competition could amount to more than 20 billion US dollars. (Of course there is still a lot of time to break the Paris budget.)
Most of the investments are directed to Seine-Saint-Denis, the poorest suburb to the north and east of Paris. Citizenship redistribution? Simple development locations in a crowded city? Why not both? The organizers believe that relocating the Games’ focus to the disinvested northern banlieue not only creates jobs, but also creates a sense of pride and belonging to a part of the metropolis that Parisians normally avoid within the ring road. It could just be an Olympics that makes you feel good. In December, a Harris poll found that 84 percent of the French were in favor.
« We wanted to strengthen the links between Paris and Seine-Saint-Denis and make sure that Seine-Saint-Denis benefits, » says Patricia Pelloux , Co-director of the urban think tank APUR and member of the Paris Games Acquisition Committee. « It is an area that has had some problems, but there is a lot of energy there. »
The Olympic village will be located in Saint-Denis on newly won industrial land along the Seine. After that, the dormitories will be converted into almost 3,000 apartments. A proof of concept, says Pelloux, can be found a few miles away in Clichy-Batignolles – the dream location for the 2012 Olympic Games in Paris. London won the bid, but Paris nonetheless built a huge new district on top of the old train stations. It’s settling in well.
The 2024 Olympic Village is 800m from the Stade de France and the new Olympic swimming pool – the first of its size, built since the 1924 Games in Paris and a future community benefit. Every second sixth grader in Seine Saint-Denis cannot swim.
Ambre Abittan, high school graduate and enthusiastic tennis player, has lived here in Saint-Denis since she was a child. « It’s not known as a good city, » she told me. “And the Olympic Games will give us a better image. When you tell people you are from here, they are very reluctant. It’s the banlieue. ”This is short for hopeless housing projects and the occasional unrest.
In London and Rio de Janeiro, Olympic investments have been criticized as the stalking horse of gentrification. This has been a longstanding concern in Seine-Saint-Denis too. The bigger concern, however, is that those in power are already cutting or postponing their key promises as the deadlines get closer and money runs out. Volleyball was relocated from the department in December; a training pool was canceled in March.
The most disappointing news was the delay of three promised suburban subway lines 15, 16 and 17, which would have converged at a new train station next to the Olympic Village. Instead, a new metro extension – line 14 – will reach the site in time for the competition. In contrast to lines 15, 16 and 17, which one day will connect the new Olympic center with the rest of the Seine-Saint-Denis, the 14 runs directly south to central Paris.
These missing connections may be for Athletes in the nearby dormitories or spectators from Parisian hotels don’t play a big role, but their absence will hurt those in the suburbs who work or attend the Games and refutes the message on the banner outside the Olympic Village: » Saint-Denis, the Games are ours! ”Local transport, which organizers expect to bring everyone to the competition, will make the Saint-Saint-Denis Olympic hub more accessible from central Paris than from many of the neighboring suburbs .
To get from the Olympic Village to a nearby Olympic training pool that is being built a few miles east in Aubervilliers, two stops on line 15 would have been, for example. Instead, it takes a jerky 40-minute bus ride across the canal and under the train tracks, in narrow commercial streets lined with bakeries, kebab shops, pharmacies, discounters, and clothing stores selling saris, wax, and suits.
It’s proof of that how modest was the impact Paris 2024 had on Paris that this training pool is the most controversial project currently underway in three years. Because it would displace a number of plots in the local community garden, which gives generations of neighbors space to plant and relax. They roll in and out with rolling shopping bags filled with tomatoes and heads of lettuce. As with many community gardens, the defenders of this garden argue that it is a valuable asset to the neighborhood – so much so that it opened its doors to the general public for the first time.
Has a gang of young squatters from across the country settled down here and padded barefoot over pebbles and chopped up fruit to a camp in the shade of straw and mud barricades. The bulldozers are gathered on the other side. “Concrete won’t feed us,” says one of the resistance fighters. “Less concrete, more melons!” (It rhymes in French.) No to gentrification, no to the Olympic Games, no to the new subway line.
In the nearby Café Casanova, however, I heard a different opinion from Karim Ben Amira, a father of four who has lived in the neighborhood for a dozen years. « We want something for the kids, » he said of the new training pool. He wants his children to have a place to swim. « Look around. There is nothing here, a café, a soccer field. It will make the neighborhood lively, despite the workers’ gardens. You cannot please everyone. »
« )); var p = g (h [i.size_id ] .split (« x »). map (function (e) {return Number (e)}), 2); f.width = p [0], f.height = p [1]} f.rubiconTargeting = ( Array.isArray (i.targeting)? I.targeting: []). Reduce (function (e, t) {return e [t.key] = t. Values [0], e}, {rpfl_elemid: l.adUnitCode }), t.push (f)} else n.logError (« Rubicon: bidRequest undefined at index position: ». concat (o), r, e); return t}, []). sort (function (e, t) {return (t.cpm || 0) – (e.cpm || 0)})}, getUserSyncs: function (e, t, r, n ) {if (! B&&e.iframeEnabled) {var i = « »; return r&& « string » == typeof r.consentString&& (« boolean » == typeof r.gdprApplies? i = « ? gprApplies? i = »? r.gdprApplies), « &gdpr_consent = »). concat (r.consentString): i = « ? gdpr_consent = ». concat (r.consentString)), n&& (i = « ». concat (i? « & »: « » ? « , » us_privacy = « ) .concat (encodeURIComponent (n))), B =! 0, {type: » iframe « , url: » https: // « .concat (y.syncHost || » eus « , « .rubiconproject.com / usync.html ») i}}}, transformBidParams: function (e, t) {return n.convertTypes ({acc ountId: « number », siteId: « number », zoneId: « number »} , e)}}; Function S (e, t) {var r = obgetConfig (« pageUrl »); return e.params.referrer? r = e.params.referrer: r || (r = t.refererInfo.referer), e.params.secure? r.replace (/ ^ http: / i, « https: »): r} Function A (e ) {var t, r = document.getElementById (e.adUnitCode); (t = r.querySelector (« div [id ^ = ‘google_ads’] »)) &&t.style.setProperty (« display », « none ») , function (e) {var t = e.querySelector (« script [id ^ = ‘sas_script’] »), r = t&&t.nextSibling; r&& « iframe » === r.localName&CSSEAND « PertyR. , « none »)} (r); var n = e.renderer.getConfig (); e.renderer.push (function () {window.MagniteApex.renderAd ({width: e.width, height: e.height, vastUrl: e.vastUrl, placement: {attachTo: « # ». concat (e.adUnitCode), align: n.align || « center », position: n.position || « append »}, closeButton: n.closeButton ||! 1, label: n.label || void 0, collapse: n.collapse ||! 0})})} Function I (e, t) {var r = e.params; if (« video » = == t) {var i = []; return r.video&CSSEANDCH ARr.video.playerWidth&&r.video.playerHeight? i = [r.video.playerWidth, r.video.playerHeight]: Array.isAr ray (n.deepAccess (e, « mediaTypes.video.playerSize »)) &&1 === e .mediaTypes.video.playerSize.length? i = e.mediaTypes.video.playerSize [0]: Array.isArray (e. sizes) &&e.sizes.length> 0&&Array.isArray (e.sizes [0]) &&e.sizes [0] .length> 1&& (i = e.sizes [0], i} return o .isArray (r.sizes)? o = r.sizes: void 0! == n.deepAccess (e, « mediaTypes.banner.sizes »)? o = O (e.mediaTypes.banner.sizes): Array.isArray (e.sizes) &&e.sizes.length> 0? o = O (e.sizes): n.logWarn (« Rubicon: No sizes were set up or found »), x (o)} function E (e, t , r) {var i = {user: {ext: {data: f ({}, e. params.visitor)}}, site: {ext: {data: f ({}, e.params.inventory)}}}; e.params.keywords&& (i.site.keywords = n.isArray (e.params. keywords)? e.params.keywords.join (« , »): e.params.keywords); var s = n.mergeDeep ({}, obgetConfig (« ortb2 ») | | {}, i), c = n .deepAccess (e.ortb2Imp, « ext.data ») || {}, d = {user: [3], site: [1,2]}, u = {user: « tg_v. », site: « tg_i . « , adserver: » tg_i.dfp_ad_unit_code « , pbadslot: » tg_i.pbadslot « , keywords: » kw « }, l = function (e, t, r) {if ( » data « === t&&Array.isArray (e )) return e.filter (function (e) {return e.segment&&n.deepAccess (e, « ext.segtax ») &&d [r] &&-1! == d [r] .indexOf (n.deepAccess (e, « ext.segtax »))}). map (function (e) {var t = e.segment.filter (function (e) {return e.id}). reduce (function (e, t) {return e. push (t.id), e}, []); if (t.length> 0) return t.toString ()}). toString (); if (« object »! == v (e) || array .isArray (e)) {if (void 0! == e) return Array.isArray (e)? e.filter (function (e) {if (« Object »! = = v (e) &&void 0! == e) return e.to String (); n.logWarn (« Rubicon: Filtered value: », e, « for key », t, « : Expected value is String, Integer, or an array of Strings / Ints »)}). ToString (): e.toString ()} else n.logWarn (« Rubicon: Filtered FPD key: », t, « : Expected value is String, Integer, or an array of Strings / Ints »)}, p = function (e, t , n) {var i =! (arguments.length> 3&&void 0! == arguments [3]) || arguments [3], o = l (e, n, t), a = u [n] &&i? » « .concat (u [n]): » data « === n? » « . concat (u [t], » iab « ): » « . concat (u [t]). concat (n); r [a] = r [a]? r [a] .concat (« , », o): o}; Object.keys (c) .forEach (function (e) {« adserver » === e? [ » name « , » adslot « ]. forEach (function (t) {c [e] [t] && (c [e] [t] = c [e] [t] .toString (). replace (/ ^ / /, « »))}): « pbadslot » === e&& (c [e] = c [e] .toString (). replace (/ ^ / /, » »)))),t===ab?([« site », »user » Autovermietung ).forEach(function(e){Object.keys(s[e]).forEach (function (t) {« site » === e&& « content » === t&&s [e] [t] .data? p (s [e] [t] .data, e, « data »): « ext « ! == t? p (s [e] [t], e, t): s [e] [t] .data&&Object.keys (s [e] .ext.data) .forEach (function (t) { p (s [e] .ext.data [t], e, t,! 1)})})}), Object.keys (c) .forEach (function (e) {« adserver » === e? p (c [e] .adslot, name, e): p (c [e], « site », e)})) 🙁 Object.keys (c) .length&&n.merg eDeep (r.imp [0] .ext, {data: c}), n.mergeDeep (r, s))} function O (e) {return n.parseSizesInput (e) .reduce (function (e, t) {var r = parseInt (h [ t], 10); return r&&e.push (r), e}, [])} function T (e) {return « object » === v (n.deepAccess (e, « params.video »)) &&void 0! == n.deepAccess (e, « mediaTypes. ». Concat (ad))} function C (e) {var t = arguments.length> 1&&void 0! == arguments [1] &&Argumente [1]; T ( e) return? -1 === [« outstream », « instream »]. indexOf (n.deepAccess (e , « mediaTypes. ». concat (ad, « . context »)))? void (t&&n.logError (« Rubicon: mediaTypes.video.context must be outstream or instream »)): I (e, « video »). length-1 || i> -1? -1 === n? 1: -1 === i? -1: ni: er})} function j (e) {var t = parseInt (n.deepAccess ( e, « params.video.size_id »)); return isNaN (t)? « outstream » === n.deepAccess (e, « mediaTypes. ». concat (ad, « . context »))? 203: 201: t} Function P (e) {return {ranges: {low: [{max: 5, increment: .5}], medium: [{max: 20, increment: .1}], high: [{max: 20 , Increment: .01}], auto: [{max: 5, increment: .05}, {min: 5, max: 10, increment: .1}, {min: 10, max: 20, increment :. 5}], dense: [{max: 3, increment: .01}, {min: 3, max: 8, increment: .05}, {min: 8, max: 20, increment: .5}], custom : e.getConfig (« customPriceBucket ») &&e.getConfig (« customPriceBucket ») .buckets} [e.getConfig (« priceGranularity »)]}} Function D (e) {var t =! 0, r = Object.prototype. toString.call ([]), i = {mimes: r, protocols: r, linearity: Object.prototype.toString.call (0), api: r}; return Object.keys (i) .forEach (function (r ) {Object.prototype.toStri ng.call (n.deepAccess (e, « mediaTypes.video. » r))! == i [r] && (t =! 1, n.logError (« Rubicon: mediaTypes.video. » r « is required and must be of the type: « i [r]))}), t} Function k (e) {var t =! 1, r = [ » asi « , » sid « , » hp « ]; return e.nodes? ((t = e.nodes.reduce (function (e, t) {return e? r.every (function (e) {return t.hasOwnProperty (e)}): e} ,! 0)) || n. logError (« Rubicon: required Schain parameters are missing »), t): t} Function R (e, t) {return « rp_schain » === e? « rp_schain = ». concat (t): « ». concat ( e, « = »). concat (encodeURIComponent (t))} var B =! 1; Object t (i.registerBidder) (_)}}, [622]), pbjsChunk ([101], {658: function ( e, t, r) {e.exports = r (659)}, 659: function (e, t, r) {Object.defineProperty (t, « __ esModule », {value:! 0}), rd (t, « spec », function () {return m}), rd (t, « _ isInbounds », function () {return _}), t._getPlatform = S; var n = r (1), i = r (0) , o = r (2), a = r (3), s = r (13), c = r (55); function d (e, t) {return function (e) {if (Array.isArray (e) ) Return e} (e) || function (e, t) {var r = null = = e? Null: « undefined »! = Type of symbol&&e [symbol.iter ator] || e [« @@ iterator »]; if (null! = r) {var n, i, o = [], a =! 0, s =! 1; try {for (r = r.call (e);! (a = (n = r.next ()). done) && (o.push (n.value) ,! t || o.length! == t); a =! 0);} catch (e) {s =! 0, i = e} finally {try {a || null == r.return || r.return () } finally {if (s) throw i}} return o}} (e, t) || function (e, t) {if (e) {if (« String » == type of e) return u (e, t); var r = Object.prototype.toString.call (e) .slice (8, -1); return « Object » === r&&e.constructor&& (r = e.constructor.name), « Map » == = r || « Set » === r? Array.from (e): « Arguments » === r || / ^ (?: Ui | I) nt (?: 8 | 1 6 | 32) (? : Clamped)? Array $ /. Test (r)? U (e, t): void 0}} (e, t) || function () {throw new TypeError (« Invalid attempt at destructuring non-iterable instance. NTo iterable to , non-array objects must have a [Symbol.iterator] () method. « )} ()} Function u (e, t) {(null == t || t> e.length) && (t = e.length); for (var r = 0, n = new Array (t); r0) {var s = Object (i.deepClone) (e [0] .userId); s.id5id&& (s.id5id = Object (i.deepAccess) (s, « id5id.uid »)), o.userid = JSON.stringify (s)} var d = Object (i.deepAccess) (e [0] , « userIdAsEids »); Array.isArray (d) &&d.length> 0&& (o.eids = JSON.stringify (d)); var u = e [0] .params.keywords; if (u&& = .) u), t&&t.uspConsent&& (o.us_privacy = t.uspConsent),! 0 === abgetConfig (« coppa »)? o.coppa = 1: o.coppa = 0, Object (i.isEmpty) (n )) return null; var m = « https://apex.go.sonobi.com/trinity.json »; return Object (i.deepAccess) (e [0], « params.bid_request_url ») && (m = Object (i.deepAccess) (e [0], « params.bid_request_url »)), {method: « GET », url: m, withCredentials:! 0, data: o, bidderRequests: e}}, interpretResponse: function (e , t) {var r = e.body, n = [], o = t.data.ref; return 0 === Object.keys (r.slots) .length || Object.keys (r.slots). forEach (function (e) {var a = r.slots [e], c = e.split (« | »). slice (-1) [0], u = function (e, t) {for (var r = 0; r2&&void 0! = = Arguments [2]? Argu mente [2]: {}, n = sainstall ({id: t.aid, url: « https://mtrx.go.sonobi.com/sbi_outstream_renderer.js », config: r, load:! 1, adUnitCode: e}); try {n.setRender (A)} catch (e) {Object (i.logWarn) (« Prebid error when calling setRender on renderer », e)} return n.setEventHandlers ({impression: function () {return Object (i.logMessage) (« Sonobi Outstream Video Impression Event »)}, loaded: function () {return Object (i.logMessage) (« Sonobi Outstream Video Loaded Event »)}, ended: function () {Object (i.logMessage) (« Sonobi Outstream Renderer Video Event »)}}), n} (including adUnitCode, _, Object (i.deepAccess) (u, « renderer.options »)); var S = Object ( i.deepAccess) (u, « params.sizes »); Array.isArray (S) CS SEANDCHAR&Array.isArray (S [0]) && (S = S [0]), S&& (_. width = S [0] , _. height = S [1])} n.push (_)}}), n}, getUserSyncs: function (e, t, r, n) {var i = []; try {e.pixelEnabled&&t [0 ] .body.sbi_px.forEach (function (e) {i.push ({type: e .type, url: e.url})})} catch (e) {} return i}}; function b (e) {return Object (i.deepAcc ess) (e, « mediaTypes.video »)? « »: e.params.sizes? Object (i.parseSizesInput) (e.params.sizes) .join (« , »): Object (i.deepAccess) (e , « mediaTypes.banner.sizes »)? Object (i.parseSizesInput) (Object (i.deepAccess) (e, « mediaTypes.banner.sizes »)). join (« , »): e.sizes? Object (i .parseSizesInput) (e.sizes) .join (« , »): void 0} function v (e) {return e.params.floor, « »} function y (e) {var t = Object (i.deepAccess) (e, « ortb2Imp.ext.data.pbadslot ») || Object (i.deepAccess) (Object (i.getGptSlotInfoForAdUnitCode) (e.adUnitCode), « gptSlot ») || e.params.ad_unit; return t? « | Gpid = ». Concat (t): « »} var h = function (e, t) {return function (r, n) {return « video » === e || « outstream » === e? function (e, t, r) {return « https: // » .konz at (e, « apex.go.sonobi.com/vast.xml?vid = »). concat (t, « &ref = »). concat (encodeURIComponent (r))} (r, n, t): »}}, _ = function () {var e = arguments.length> 0&&void 0! == arguments [0]? arguments [0]: window; return function () {var t = arguments. length> 0&&void 0! == arguments [0]? arguments [0]: 0, r = arguments.length> 1&&void 0! == arguments [1]? arguments [1]: Number.MAX_SAFE_INTEGER; return e.innerWidth> = t&CSSEAND innerWidth 0&&void 0! == arguments [0]? arguments [0]: window, t = _ (e), r = 992, n = 768 ; return t (0.768)? « mobile »: t (n, r)? « tablet »: « desktop »} function A (e) {e.renderer.push (function () {var t = d (e.getSize ( ) .split (« x »), 2), r = t [0], n = t [1], i = new window.SbiOutstreamRenderer; i.init ({vastUrl: e.vastUrl, height: n, width: r}), i.setRootElement (e.adUnitCode)})} Object (n.registerBidder) (m)}}, [658]), pbjsChunk ([100], {666: function (e, t, r) { e.exports = r (667)}, 667: function (e, t, r) {Object.defineProperty (t, « __ esM odule », {value:! 0}), rd (t, « GOOGLE_CONSENT », function ( ) {return d}), rd (t, « spec », function () {return u}); var n = r (0), i = r (3), o = r (13), a = r ( 1), s = r (2); function c (e) {return (c = « function » == symbol type&& « symbol » == _ typeof (Symbol.iterator)? Function (e) {return _typeof (e)}: function (e) {return e&& « function » == typeof Symbol&&e.constructor === Symbol&&e! == Symbol.prototype? « symbol »: _ typeof (e)}) (e)} var d = {approved_providers: [« 3 « , » 7 « , » 11 « , » 12 « , » 15 « , » 20 « , » 22 « , » 35 « , » 43 « , » 46 « , » 48 « , » 55 « , » 57 « , « 61 », « 62 », « 66 », « 70 », « 80 », « 83 », « 85 », « 86 », « 89 », « 93 », « 108 » « , » 122 « , » 124 « , » 125 « , » 126 « , » 131 « , » 134 « , » 135 « , » 136 « , » 143 « , » 144 « , » 147 « , » 149 « , « 153 », « 154 », « 159 », « 161 », « 162 », « 165 », « 167 », « 171 », « 178 », « 184 », « 188 », « 192 », « 195 « , » 196 « , » 202 « , » 209 « , » 211 « , » 218 « , » 221 « , » 228 « , » 229 « , » 230 « , » 236 « , » 239 « , » 241 « , « 253 », « 255 », « 259 », « 266 », « 271 », « 272 », « 274 », « 286 », « 291 », « 294 », « 303 », « 308 », « 310 » « , » 311 « , » 313 « , » 314 « , » 316 « , » 317 « , » 322 « , » 323 « , » 327 « , » 336 « , » 338 « , » 340 « , » 348 « , « 350 », « 358 », « 359 », « 363 », « 36 7 », « 370 », « 371 », « 384 », « 385 », « 389 », « 393 », « 394 », » 397 « , » 398 « , » 407 « , » 414 « , » 415 « , » 424 « , » 429 « , » 430 « , » 432 « , » 436 « , » 438 « , » 440 « , » 442 » , « 443 », « 445 », « 448 », « 449 », « 453 », « 459 », « 479 », « 482 », « 486 », « 491 », « 492 », « 494 », » 495 « , » 503 « , » 505 « , » 510 « , » 522 « , » 523 « , » 528 « , » 537 « , » 540 « , » 550 « , » 559 « , » 560 « , » 568 » , « 571 », « 574 », « 575 », « 576 », « 584 », « 585 », « 587 », « 588 », « 590 », « 591 », « 592 », « 595 », » 609 « , » 621 « , » 624 « , » 723 « , » 725 « , » 733 « , » 737 « , » 776 « , » 780 « , » 782 « , » 787 « , » 797 « , » 798 » , « 802 », « 803 », « 814 », « 817 », « 820 », « 821 », « 827 », « 829 », « 839 », « 853 », « 864 », « 867 », » 874 « , » 899 « , » 904 « , » 922 « , » 926 « , » 931 « , » 932 « , » 933 « , » 938 « , » 955 « , » 973 « , » 976 « , » 979 » , « 981 », « 985 », » 987 « , » 991 « , » 1003 « , » 1024 « , » 1025 « , » 1027 « , » 1028 « , » 1029 « , » 1033 « , » 1034 « , » 1040 « , » 1047 « , » 1048 » , « 1051 », « 1052 », « 1053 », « 1054 », « 1062 », « 1063 », « 1067 », « 1072 », « 1085 », « 1092 », « 1095 », « 1097 », » 1099 « , » 1100 « , » 1107 « , » 1126 « , » 1127 « , » 1143 « , » 1149 « , » 1152 « , » 1162 « , » 1166 « , » 1167 « , » 1170 « , » 1171 » , « 1172 », « 1188 », « 1192 », « 1199 », « 1201 », « 1204 », « 1205 », « 1211 », « 1212 », « 1215 », « 1220 », « 1225 », » 1226 « , » 1227 « , » 1230 « , » 1232 « , » 1236 « , » 1241 « , » 1248 « , » 1250 « , » 1252 « , » 126 8 « , » 1275 « , » 1276 « , » 1284 « , » 1286 « , » 1298 « , » 1301 « , » 1307 « , » 1312 « , » 1313 « , » 1317 « , » 1329 « , » 1336 « , » 1344 « , » 1345 « , » 1356 « , « 1362 », « 1365 », « 1375 », « 1403 », « 1409 », « 1411 », « 1415 », « 1416 », « 1419 », « 1423 », « 1440 », « 1442 », « 1449 » « , » 1451 « , » 1455 « , » 1456 « , » 1468 « , » 1496 « , » 1503 « , » 1509 « , » 1512 « , » 1514 « , » 1517 « , » 1520 « , » 1525 « , « 1540 », « 1547 », « 1548 », « 1555 », « 1558 », « 1570 », « 1575 », « 1577 », « 1579 », « 1583 », « 1584 », « 1591 », « 1598 « , » 1603 « , » 1608 « , » 1613 « , » 1616 « , » 1626 « , » 1631 « , » 1633 « , » 1638 « , » 1642 « , » 1648 « , » 1651 « , » 1652 « , « 1653 », « 1660 », « 1665 », « 1667 », « 1669 », « 1671 », « 1674 », « 1677 », « 1678 », « 1682 », « 1684 », « 1697 », « 1703 « , » 1705 « , » 1716 « , » 1720 « , » 172 1 « , » 1722 « , » 1725 « , » 1732 « , » 1733 « , » 1735 « , » 1739 « , » 1741 « , » 1745 « , » 1750 « , » 1753 « , » 1760 « , » 1765 » , « 1769 », « 1776 », « 1780 », « 1782 », « 1786 », « 1791 », « 1794 », « 1799 », « 1800 », « 1801 », « 1810 », « 1827 », » 1831 « , » 1832 « , » 1834 « , » 1837 « , » 1840 « , » 1843 « , » 1844 « , » 1845 « , » 1858 « , » 1859 « , » 1863 « , » 1866 « , » 1870 » , « 1872 », « 1875 », « 1878 », « 1880 », « 1882 », « 1883 », « 1889 », « 1892 », « 1896 », « 1898 », « 1899 », « 1902 », » 1905 « , » 1911 « , » 1922 « , » 1928 « , » 1929 « , » 1934 « , » 1942 « , » 1943 « , » 1944 « , » 1945 « , » 1958 « , » 19 60 « , » 1962 « , » 1963 « , » 1964 « , » 1967 « , » 1968 « , » 1978 « , » 1985 « , » 1986 « , » 1987 « , » 1998 « , » 2003 « , » 2007 « , » 2012 « , « 2013 », « 2027 », « 2035 », « 2038 », « 2039 », « 2044 », « 2047 », « 2052 », « 2056 », « 2059 », « 2062 », « 2064 », « 2068 « , » 2070 « , » 2072 « , » 2078 « , » 2079 « , » 2084 « , » 2088 « , » 2090 « , » 2095 « , » 2100 « , » 2103 « , » 2107 « , » 2109 « , « 2113 », « 2115 », « 2121 », « 2127 », « 2130 », « 2133 », « 2137 », « 2140 », « 2141 », « 2145 », « 2147 », « 2150 », « 2156 « , » 2166 « , » 2170 « , » 2171 « , » 2176 « , » 2177 « , » 2179 « , » 2183 « , » 2186 « , » 2192 « , » 2198 « , » 2202 « , » 2205 « , « 2214 », « 2216 », « 2219 », « 2220 », « 2222 », « 2223 », « 2224 », « 2225 », « 2227 », « 2228 », « 2234 », « 2238 », « 2247 « , » 2251 « , » 2253 « , » 2262 « , » 2264 « , » 2271 « , » 2276 « , » 2278 « , » 2279 « , » 2282 « , » 2290 « , » 2292 « , » 2295 « , » 2299 « , » 2305 « , » 2306 « , » 2310 « , « 2311 », « 2312 », « 2315 », « 2320 », « 2325 », « 2328 », « 2331 », « 2334 », « 2335 », « 2336 », « 2337 », « 2343 », « 2346 » « , » 2354 « , » 2357 « , » 2358 « , » 2359 « , » 2366 « , » 2370 « , » 2373 « , » 2376 « , » 2377 « , » 2380 « , » 2382 « , » 2387 « , « 2389 », « 2392 », « 2394 », « 2400 », « 2403 », « 2405 », « 2406 », « 2407 », « 2410 », « 2411 », « 2413 », « 2414 », « 2415 « , » 2416 « , » 2418 « , » 2422 « , » 2425 « , » 2427 « , » 2435 « , » 2437 « , » 2440 « , » 2441 « , » 2447 « , » 2453 « , » 2459 « , « 2 461 », « 2462 », « 2464 », « 2467 », « 2468 », « 2472 », « 2477 », « 2481 », « 2484 », « 2486 », « 2492 », « 2493 », » 2496 « , » 2497 « , » 2498 « , » 2499 « , » 2504 « , » 2506 « , » 2510 « , » 2511 « , » 2512 « , » 2517 « , » 2526 « , » 2527 « , » 2531 » , « 2532 », « 2534 », « 2542 », « 2544 », « 2552 », « 2555 », « 2559 », « 2563 », « 2564 », « 2567 », « 2568 », « 2569 », » 2571 « , » 2572 « , » 2573 « , » 2575 « , » 2577 « , » 2579 « , » 2583 « , » 2584 « , » 2586 « , » 2589 « , » 2595 « , » 2596 « , » 2597 » , « 2601 », « 2604 », « 2605 », « 2609 », « 2610 », « 2612 », « 2614 », « 2621 », « 2622 », « 2624 », « 2628 », « 2629 », » 2632 « , » 2634 « , » 2636 « , » 2639 « , » 2643 « , » 2645 « , » 2646 « , » 2647 « , » 2649 « , » 2650 « , » 2651 « , » 2652 « , » 2656 » , « 2657 », « 2658 », « 2660 », « 2661 » , « 2662 », « 2663 », « 2664 », « 2669 », « 2670 », « 2673 », « 2676 », « 2677 », « 2678 », « 2681 », « 2682 », « 2684 », » 2685 « , » 2686 « , » 2689 « , » 2690 « , » 2691 « , » 2695 « , » 2698 « , » 2699 « , » 2702 « , » 2704 « , » 2705 « , » 2706 « , » 2707 » , « 2709 », « 2710 », « 2713 », « 2714 », « 2727 », « 2729 », « 2739 », « 2758 », « 2765 », « 2766 », « 2767 », « 2768 », » 2770 « , » 2771 « , » 2772 « , » 2776 « , » 2777 « , » 2778 « , » 2779 « , » 2780 « , » 2783 « , » 2784 « , » 2786 « , » 2787 « , » 2791 » , « 2792 », « 2793 », « 2797 », « 2798 », « 2801 », « 2802 », « 2803 », « 2805 », « 2808 », « 2809 », « 2810 », « 2811 », » 2812 « , » 2813 « , » 2814 « , » 2817 « , » 2818 « , » 2824 « , » 2826 « , » 2827 « , » 2829 « , » 2830 « , » 2831 « , » 2832 « , » 2834 » , « 2836 », « 2838 », « 2840 », « 2842 », « 2843 », « 2844 », « 2850 », « 2851 », « 2852 », « 2854 », « 2858 », « 2860 », » 2862 « , » 2864 « , » 2865 « , » 2866 « , » 2867 « , » 2868 « , » 2869 « , » 2871 « ]}, u = {code: » spotx « , gvlid: 165, aliase: [ » spotx « ], supportedMediaTypes: [sd], isBidRequestValid: function (e) {if (e&& » object « ! == c (e.params)) return n.logError ( » spotx: params is not defined or wrong in the bidder settings . « ) ,! 1; if (! N.deepAccess (e, » mediaTypes.video « )) return n.logError ( » spotx: mediaType s.video is not available in the bidder settings. « ) ,! 1; var t = n.deepAccess (e, » mediaTypes.video.playerSize « ); if (! t ||! n.isArray (t)) return n .logError (« spotx: mediaTypes.video.playerSize is not defined in the bidder settings. ») ,! 1; if (! n.getBidIdParameter (« channel_id », e.params)) return n.logError (« spotx: channel_id is not available in bidder parameters « ) ,! 1; if (( » outstream « == n.deepAccess (e, » mediaTypes.video.context « ) || » outstream « == n.deepAccess (e, » params.ad_unit » )) &CSSE ANDCHAR! N.getBidIdParameter (« outstream_function », e.params)) {if (! N.getBidIdParameter (« outstream_options », e.params)) return n.logError (« spotx: please define or overwrite outstream_options parameters You can use the standard SpotX outstream rendering by defining your own outstream function with the field outstream_function. « ) ,! 1; if (! N.getBidIdParameter ( » slot « , e.params.outstream_options)) return n.logError ( » spotx: please define the parameter slot in the outstream_options object in the configuration ion. « ) ,! 1} return! 0}, buildRequests: function (e, t) {var r = t.refererInfo.referer, o = !! r.match (/ ^ https: /); return e .map (function (e) {var a; a = n.getBidIdParameter (« page », e.params)? n.getBidIdParameter (« page », e.params): ibgetConfig (« pageUrl »)? ibgetConfig (« pageUrl ») : r; var s = n.getBidIdParameter (« channel_id », e.params), c = null, u = n.deepAccess (e, « mediaTypes.video.playerSize »), l = u [0] [0], f = u [0] [1], p = o || (n.getBidIdParameter (« secure », e.params)? 1: 0), g = {sdk_name: « Prebid 1 », versionOrtb: « 2.3 »} ; if (« »! = n.getBidIdParameter (« hide_skin », e.params) CSSEANDCH AR& (g.hide_skin = !! n.getBidIdParameter (« hide_skin », e.params)), « »! = n.getBidIdParameter ( « ad_volume », e.params) && (g.ad_volume = n.getBidIdParameter (« ad_volume », e.params)), « »! = n.getBidIdParameter (« ad_unit », e.params) && = g n.getBidIdParameter (« ad_unit », e.params)), « »! = n. getBidIdParameter (« outstream_options », e.params) && (g.outstream_options = n.getBidIdParameter (« outstream_options », e.params)), « »! = n.getBidIdParameter (« outstream_function », e.params) &CSS. outstream_function = n.getBidIdParameter (« outstream_function », e.params)), « »! = n.getBidIdParameter (« custom », e.params) && (g.custom = n.getBidIdParameter (« custom », e.params) ), « »! = n.getBidIdParameter (« pre_market_bids », e.params) &&n.isArray (n.getBidIdParameter (« pre_market_bids », e.params))) {var m = n.getBidIdParameter (« pre_market_bids », e. params); for (var b in g.pre_market_bids = [], m) {var v = m [b], y = « »; v.vast_url? y = ‘ ‘v.vast_url » « : v.vast_string&& (y = v.vast_string), g.pre_market_bids.push ({id: v.deal_id, seatbid: [{bid: [{impid: Date.now (), dealid: v.deal_id, price: v.price, adm: y}]}], cur: v.currency, ext: {event_log : [{}]}})}} var h = n.getBidIdParameter (« mime s « , e.params) || [ » application / javascript « , » video / mp4 « , » video / webm « ], _ = {id: e.bidId, secure: p, video: {w: l, h : f, ext: g, mimes: h}}; « »! = n.getBidIdParameter (« start_delay », e.params) && (_. video.startdelay = 0 Boolean (n.getBidIdParameter (« start_delay », e. params))), « »! = n.getBidIdParameter (« min_duration », e.params) && (_. video.minduration = n.getBidIdParameter (« min_duration », e.params)), « »! = n.getBidIdParameter (« max_duration », e.params) && (_. video.maxduration = n.getBidIdParameter (« max_duration », e.params)), « »! = n.getBidIdParameter (« placement_type », e.params) && (_ .video.ext.placement = n.getBidIdParameter (« placement_type », e.params)), « »! = n. getBidIdParameter (« position », e.params) && (_. video.ext.pos = n.getBidIdParameter (« position », e.params)), e.crumbs&&e.crumbs.pubcid&CSSEidcrumb )s.pubc = e.params ; var S = navigator.language? « language »: « userLanguage », A = {id: s, imp: _, site: {id: « », page: a, content: « content »}, device: {h : screen.height, w: screen.width, dnt: n.getDNT ()? 1: 0, language: navigator [S] .split (« -« ) [0], make: navigator.vendor? navigator.vendor: « », ua: navigator.userAgent}, ext: {wrap_response: 1}}; ibgetConfig (« cache ») &&i.b.getConfig (« cache.url ») &&! 0 === ibgetConfig (« cache. ignoreBidderCacheKey » » ) && (A.ext.wrap_response = 0), n.getBidIdParameter (« number_of_ads », e.params) && (A.ext.number_of_ads = n.getBidIdParameter (« number_of_ads) », e.para .m = {}; return 1 == n.getBidIdParameter (« spotx_all_google_consent », e.params) && (I.consented_providers_settings = d), t&&t.gdprConsent&CSSEANDC HAR ( I.consent = t.gdprConsent.consentString, void 0! == t.gdprConsent.gdprApplies&&n.deepSetValue (A, « regs.ext.gdpr », t.gdprConsent.gdprApplies? 1: 0, .deApplies? 1: 0)) « regs.ext.us_privacy », t.uspConsent), n.deepAccess (e, « userId.id5id.uid ») && (I.eids = I.eids || [], I.eids. push ({source: « id5-sync.com », uids: [{id: e.userId.id5id.uid, ext: e.userId.id5id.ext || {}}]})), c&& (I. fpc = c), e&&e.schain&& (A.source = {ext: {schain: e.schain}}), e&&e.userId&&e.userId.tdid&CeSSAND ({source .org « , uids: [{id: e.userId.tdid, ext: {rtiPartner: » TDID « }}]})), n.isEmpty (I) || (A.user = {ext: I}) ,{method: »POST »,url: »https://search.spotxchange.com/openrtb/2.3/dados/ » s « ?src_sys=prebid »,data:A,bidRequest:t }})},interpretResponse: function(e,t){var r=[],a=e.body;return a&&n.isArray(a.se atbid)&&n._each(a.seatbid,function(e){n._each(e.bid, function(e){var c={};for(var d in t.bidRequest.bids)e.impid== t.bidRequest.bids[d].bidId&&(c=t.bidRequest.bids[d]); n._each(c.params.pre_market_bids,function(t){t.deal_id==e.id&&(e.price =t.price,a.cur=t.currency)});var u={requestId:c .bidId,currency :a.cur|| »USD »,cpm:e.price,creativeId:e.crid|| « »,dealId:e.dealid|| » »,ttl:360,netRevenue:!0,channel_id:a.id,mediaType:sd,width:ew,height:eh};ibgetConfig(« cache »)&&i. b.getConfig(« cache.url »)&&!0===ibgetConfig(« cache.ignoreBidderCacheKey »)?u.vastXml=e.adm:(u.cache_key=e.ext.cache_key,u.vastUrl= » https://search.spotxchange.com/ad/vast.html?key= » e.ext.cache_key,u.videoCacheKey=e.ext.cache_key),u.meta=u.meta||{},e&&e. adomain&&e.adomain.length>0&&(u.meta.advertiserDomains=e.adomain);var f=n.deepAccess(c, »mediaTypes.video.context »),p=n.de epAccess(c, »params.ad_unit »);if(« outstream »==f|| »outstream »==p){var g=n.deepAccess(c, »mediaTypes.video.playerSize »),m=oa install({id:0,url: »/ »,config:{adText: »SpotX Outstream-Videoanzeige über Prebid.js »,player_width:g[0][0],player_height:g[0][1],content_page_url :n.deepAccess(t, »data.site.page »),ad_mute: !!n.deepAccess(c, »params.ad_mute »),hide_skin: !!n.deepAccess(c, »params.hide_skin »), outstream_options:n.deepAccess(c, »params.outstream_options »),outstream_function:n.deepAccess(c, »params.outstream_function »)}});try{m.setRender(l),m.setEventHandlers({impression:function (){return n.logMessage(« SpotX Outstream Video Impression Event »)},loaded:function(){return n.logMessage(« SpotX Outstream Video Loaded Event »)},ended:function(){n.logMessage( » SpotX-Outstream-Renderer-Videoereignis »)}})}catch(e){n.logWarn(« Prebid Error calling s etRender or setEventHandlers on renderer »,e)}u.renderer=m}r.push(u)})}) ,r}};Funktion l(e){var t=function(e){var t=n.getBidIdParameter(« slot »,e.renderer.config.outstream_opt ionen);n.logMessage(« [SPOTX][renderer] SpotX Outstream-Renderer behandeln »);var r=window.document.createElement(« script »);r.type= »text/javascript »,r.src= » https://js.spotx.tv/easi/v1/ » e.channel_id « .js »;var i={};i[« data-spotx_channel_id »]= » » e.channel_id,i[« data-spotx_vast_url « ]= » » e.vastUrl,i[« data-spotx_content_page_url »]=e.renderer.config.content_page_url,i[« data-spotx_ad_unit »]= »incontent »,n.logMessage(« [SPOTX][renderer] Standardverhalten »),n.getBidIdParameter(« ad_mute »,e.renderer.config.outstream_options)&&(i[« data-spotx_ad_mute »]= »1″),i[« data-spotx_collapse »]= »0″, i[« data-spotx_autoplay »]= »1″,i[« data-spotx_blocked_autoplay_override_mode »]= »1″,i[« data-spotx_video_slot_can_autoplay »]= »1″;var o=n.getBidIdParameter(« playersize_auto_adapt », e.renderer.config.outstream_options);if(o& &n.isBoolean(o)&&!0===o){var a=e.width&&n.isNumber(e.width)&&e.heightCSSEAND. e .width/e.height:4/3,s=window.document.getElementById(t).clientWidth,c=e.renderer.config.player_width,d=e.renderer.config.player_height,u=0,l= 0;s<c&&(d=(c=s)/a),a=0?r.connection.downlink.toString(): » »),timeToFirstByte:s(window),data:n,deviceWidth:screen.width,hb_version: » 5.2.0″};e[0].schain&&(i.schain=e[0].schain);var o=t.gdprConsent;if(t&&o){var d= »boolean »==typeof o.gdprApplies, u= »string »==typeof o.consentString,l=d?function(e,t,r){var n=12;return e?function(e,t){return e&&1===t?e.hasGlobalScope ||e.hasGlobalConsent:!(!e||2!==t||e.isServiceSpecific)}(t,r)&&(n=11):n=0,n}(o.gdprApplies,o.vendorData ,o.apiVersion):22;i.gdpr_iab={consent:u?o.consentString: » »,status:l,apiVersion:o.apiVersion}}return t&&t.uspConsent&&(i.us_privacy=t.uspConsent),{ method: »POST »,url: »https://a.teads.tv/hb/bid-request » ,data:JSON.s tringify(i)}},interpretResponse:function(e,t){var r=[];return(e=e.body).responses&&e.responses.forEach(function(e){var t={cpm:e. cpm,width:e.width,height:e.height,currency:e.currency,netRevenue:!0,ttl:e.ttl,meta:{advertiserDomains:e&&e.adomain?e.adomain:[]},ad: e.ad,requestId:e.bidId,creativeId:e.creativeId,placementId:e.placementId};e.dealId&&(t.dealId=e.dealId),r.push(t)}),r}};Funktion a(e){var t= » »;return e&&e.refererInfo&&e.refererInfo.referer&&(t=e.refererInfo.referer),t}Funktion s(e){var t=e.performance||e.webkitPerformance|| e.msPerformance||e.mozPerformance,r=t&& »function »==typeof t.getEntriesByType&& »[object Function] »===Object.prototype.toString.call(t.getEntriesByType)&&t.getEntriesByType(« GetEntriesBy ») [0]&&t.getEntriesByType(« navigation »)[0].responseStart&&t.get EntriesByType(« navigation »)[0].requestStart&&t.getEntriesByType(« navigation »)[0].responseStart>0&&t.getEntriesByType(« navigation »)[0].requestStart>0&&Math.round(t(get »EntriesBy ») [0].responseStart-t.getEntriesByType(« navigation »)[0].requestStart);if(r)return r.toString();var n=t&&t.timing.responseStart&&t.timing.requestStart&&t .timing.requestStart>0&&t.timing.responseStart-t.timing.requestStart;return n?n.toString(): » »}function c(e){var t={},r=i.getValue(e.params , »placementId »),n=i.getValue(e.params, »pag eId »);return t.sizes=function(e){return i.parseSizesInput(function(e){var t=i.deepAccess(e, « mediaTypes.video.playerSize »),r=i.deepAccess(e, »mediaTypes.video.sizes »),n=i.deepAccess(e, »mediaTypes.banner.sizes »);return i.isArray(n) ||i.isArray(t)||i.isArray(r)?[n,r,t].reduce(function(e,t){retur n i.isArray(t)&&(i.isArray(t[0])?t.forEach(function(t){e.push(t)}):e.push(t)),e},[]):e.sizes}(e))}(e),t.bidId=i.getBidIdParameter(« bidId »,e),t.bidderRequestId=i.getBidIdParameter(« bidderRequestId »,e),t.placementId=parseInt(r,10),t.pageId=parseInt(n,10),t.adUnitCode=i.getBidIdParameter(« adUnitCode »,e),t.auctionId=i.getBidIdParameter(« auctionId »,e),t.transactionId=i.getBidIdParameter(« transactionId »,e),t}function d(e){return parseInt(e)>0}Object(n.registerBidder)(o)}},[682]),pbjsChunk([87],{696:function(e,t,r){e.exports=r(697)},697:function(e,t,r){Object.defineProperty(t, »__esModule »,{value:!0}),r.d(t, »tripleliftAdapterSpec »,function(){return b});var n=r(2),i=r(1),o=r(0),a=r(3);f unction s(){return(s=Object.assign||function(e){for(var t=1;t<arguments.length;t ){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function c(e){return(c="function"==typeof Symbol&CSSEANDCH AR"symbol"==_typeof(Symbol.iterator)?function(e){return _typeof(e)}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":_typeof(e)})(e)}function d(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function u(e){for(var t=1;te.length)CSSEA NDCHAR&(t=e.length);for(var r=0,n=new Array(t);r0&&(t.user={ext:{eids:i}});var c=function(e,t){var r={};return o.isEmpty(e)||(r.schain=u({},e)),o.isEmpty(t)||(r.fpd=u({},t)),r}(r,n);return o.isEmpty(c)||(t.ext=c),t}(e);if(r=o.tryAppendQueryString(r, »lib », »prebid »),r=o.tryAppendQueryString(r, »v », »5.2.0″),t&&t.refererInfo){var i=t.refererInfo.referer;r=o.tryAppendQueryString(r, »referrer »,i)}return t&&t.timeout&&(r=o.tryAppendQueryString(r, »tmax »,t.timeout)),t&&t.gdprConsent&&(void 0!==t.gdprConsent.gdprApplies&&(g=t.gdprConsent.gdprApplies,r=o.tryAppendQueryString(r, »gdpr »,g.toString())),v oid 0!==t.gdprConsent.consentString&&(m=t.gdprConsent.consentString,r=o.tryAppendQueryString(r, »cmp_cs »,m))),t&&t.uspConsent&&(r=o.tryAppendQueryString(r, »us_privacy »,t.uspConsent)),!0===a.b.getConfig(« coppa »)&&(r=o.tr yAppendQueryString(r, »coppa »,!0)),r.lastIndexOf(« & »)===r.length-1&&(r=r.substring(0,r.length-1)),o.logMessage(« tlCall request built: » r),{method: »POST »,url:r,data:n,bidderRequest:t}},interpretResponse:function(e,t){var r=t.bidderRequest;return(e.body.bids||[]).map(function(e){return function(e,t){var r={},n=t.width||1,i=t.height||1,o=t.deal_id|| » »,a=t.crid|| » »,s=e.bids[t.imp_id];return 0!=t.cpm&&t.ad&&(r={requestId:s.bidId,cpm:t.cpm,width:n,height:i,netRevenue:!0,ad:t.ad,creativeId:a,dealId:o,currency: »USD »,ttl:300,tl_source:t.tl_source,meta:{}},v(s)&&(r.vastXml=t.ad,r.mediaType= »video »),t.advertiser_na me&&(r.meta.advertiserName=t.advertiser_name),t.adomain&&t.adomain.length&&(r.meta.advertiserDomains=t.adomain),t.tl_source&& »hdx »==t.tl_source&&(r.meta.mediaType= »banner »),t.tl_source&CSSE ANDCHAR »tlx »==t.tl_source&&(r.meta.mediaType= »native »)),r}(r,e)})},getUserSyncs:function(e,t,r,n){var i=function(e){if(e)return e.iframeEnabled? »iframe »:e.pixelEnabled? »image »:void 0}(e);if(i){var a= »https://eb2.3lift.com/sync? »;return »image »===i&&(a=o.tryAppendQueryString(a, »px »,1),a=o.tryAppendQueryString(a, »src », »prebid »)),null!==m&&(a=o.tryAppendQueryString(a, »gdpr »,g),a=o.tryAppendQueryString(a, »cmp_cs »,m)),n&&(a=o.tryAppendQueryString(a, »us_privacy »,n)),[{type:i,url:a}]}}};function v(e){return!!e.mediaTypes.video&&!!e.mediaTypes.video.context&& »instream »===e.mediaType s.video.context.toLowerCase()}function y(e){var t=null;if(« function »==typeof e.getFloor){var r=e.getFloor({currency: »USD »,mediaType:v(e)? »video »: »banner »,size: »* »}); »object »!==c(r)|| »USD »!==r.currency||isNaN(parseFloat(r.floor))||(t=parseFloat(r.floor))}return null!==t?t:e.params.floor}function h(e, t){o.isEmpty(t)||Object.keys(t).forEach(function(r){null!=t[r]&&(e[r]=t[r])})}function _(e,t,r,n){return e.map(function(e){return function(t){return t&&t.userId&&t.userId[e]}}(t)).filter(function(e){return!!e}).map(function(e,t){return function(r){return{source:e,uids:[{id:r,ext:{rtiPartner:t}}]}}}(r,n))}function S(e){return e.filter(A).map(function(e){return{w:e[0],h:e[1]}})}function A(e){return 2===e.length&& »number »==typeof e[0]&& »number »==typeof e[1]}Object(i.registerBidder)(b)}},[696]),pbjsChunk([7],{21:function(e,t,r){t.b=function(e){var t=[];for(var r in e)if(e.hasOwnProperty(r))if(« pu bProvidedId »===r)t=t.concat(e.pubProvidedId);else{var n=o(e[r],r);n&&t.push(n)}return t},t.a=function(e){var t=[];return e.filter(function(e){return n.isPlainObject(e.idObj)&&Object.keys(e.idObj).length}).forEach(function(e){Object.keys(e.idObj).forEach(functio n(r){n.deepAccess(e, »config.bidders »)&&Array.isArray(e.config.bidders)&&n.deepAccess(i,r « .source »)&&t.push({source:i[r].source,bidders:e.config.bidders})})}),t};var n=r(0),i={intentIqId:{source: »intentiq.com »,atype:1},pubcid:{source: »pubcid.org »,atype:1},tdid:{source: »adserver.org »,atype:1,getUidExt:function(){return{rtiPartner: »TDID »}}},id5id:{getValue:function(e){return e.uid},source: »id5-sync.com »,atype:1,getUidExt:function(e){if(e.ext)return e.ext}},parrableId:{source: »parrable.com »,atype:1,getValue:function(e){return e.eid?e.eid:e.ccpaOptout? » »:null},getUidExt:function(e){var t=n.pick(e,[« ibaOptout », »ccpaOptout »]);if(Object. keys(t).length)return t}},idl_env:{source: »liveramp.com »,atype:3},lipb:{getValue:function(e){return e.lipbid},source: »liveintent.com »,atype:3,getEidExt:function(e){if(Array.isArray(e.segments)&&e.segments.length)return{segments:e.segments}}},britepoolid:{source: »britepool.com »,atyp e:3},dmdId:{source: »hcn.health »,atype:3},lotamePanoramaId:{source: »crwdcntrl.net »,atype:1},criteoId:{source: »criteo.com »,atype:1},merkleId:{source: »merkleinc.com »,atype:3,getValue:function(e){return e.id},getUidExt:function(e){return e&&e.keyID?{keyID:e.keyID}:void 0}},netId:{source: »netid.de »,atype:1},IDP:{source: »zeotap.com »,atype:1},haloId:{source: »audigent.com »,atype:1},quantcastId:{source: »quantcast.com »,atype:1},nextrollId:{source: »nextroll.com »,atype:1},idx:{source: »idx.lat »,atype:1},connectid:{source: »verizonmedia.com »,atype:3},fabrickId:{source: »neustar.biz »,atype:1},mwOpenLinkId:{source: »mediawallahscript.com »,atype:1},tapadId:{source: »tapad.com »,atype:1},nov atiq:{getValue:function(e){return e.snowflake},source: »novatiq.com »,atype:1},uid2:{source: »uidapi.com »,atype:3,getValue:function(e){return e.id}},deepintentId:{source: »deepintent.com »,atype:3},admixerId:{source: »admixer.net »,atype:3},amxId:{source: »amxrtb.com »,atype:1}};function o(e,t){var r=i[t];if(rC SSEANDCHAR&e){var o={};o.source=r.source;var a=n.isFn(r.getValue)?r.getValue(e):e;if(n.isStr(a)){var s={id:a,atype:r.atype};if(n.isFn(r.getUidExt)){var c=r.getUidExt(e);c&&(s.ext=c)}if(o.uids=[s],n.isFn(r.getEidExt)){var d=r.getEidExt(e);d&&(o.ext=d)}return o}}return null}},716:function(e,t,r){e.exports=r(717)},717:function(e,t,r){Object.defineProperty(t, »__esModule »,{value:!0}),r.d(t, »PBJS_USER_ID_OPTOUT_NAME »,function(){return w}),r.d(t, »coreStorage »,function(){return x}),r.d(t, »syncDelay »,function(){return S}),r.d(t, »auctionDelay »,function(){return A}),t.setSubmoduleRegistry=function(e){R=e},t.setStoredValue=B,t.setStoredConsentData=M, t.findRootDomain=F,t.requestBidsHook=G,r.d(t, »validateGdprEnforcement »,function(){return Q}),t.attachIdSystem=$,t.init=Z;var n=r(11),i=r.n(n),o=r(3),a=r(9),s=r.n(a),c=r(0),d=r(16),u=r(7),l=r(5),f=r.n(l),p=r(10),g=r(21),m=r(8),b=r(12),v=r.n(b);function y(e,t){(null==t||t>e.length)&&(t =e.length);for(var r=0,n=new Array(t);r1&&void 0!==arguments[1]?argume nts[1]:void 0,n=r? » ».concat(e.name, »_ »).concat(r):e.name;try{if(e.type===E)t=x.getCookie(n);else if(e.type===O){var i=x.getDataFromLocalStorage(« ».concat(e.name, »_exp »)); » »===i?t=x.getDataFromLocalStorage(n):i&&new Date(i).getTime()-Date.now()>0&&(t=decodeURIComponent(x.getDataFromLocalStorage(n)))} »string »==typeof t&& »{« ===t.trim().charAt(0)&&(t=JSON.parse(t))}catch(e){c.logError(e)}return t}function N(e){var t={consentString: » »,gdprApplies:!1,apiVersion:0};return e&&(t.consentString=e.consentString,t.gdprApplies=e.gdprApplies,t.apiVersion=e.apiVersion),c.cyrb53Hash(JSON.stringify(t))}f unction M(e){try{var t=new Date(Date.now() 864e5*C).toUTCString();x.setCookie(T,N(e),t, »Lax »)}catch(e){c.logError(e)}}function q(){try{return x.getCookie(T)}catch(e){c.logError(e)}}function z(e){if(e&& »boolean »==typeof e.gdprApplies&&e.gdprApplies){if(!e.consentStri ng)return!1;if(1===e.apiVersion&&!1===c.deepAccess(e, »vendorData.purposeConsents.1″))return!1;if(2===e.apiVersion&&!1===c.deepAccess(e, »vendorData.purpose.consents.1″))return!1}return!0}function F(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.location.hostname;if(!x.cookiesAreEnabled())return e;var t,r,n=e.split(« . »);if(2==n.length)return e;var i=-2,o= »_rdc ».concat(Date.now()),a= »writeable »;do{t=n.slice(i).join(« . »);var s=new Date(c.timestamp() 1e4).toUTCString();x.setCookie(o,a,s, »Lax »,t,void 0),x.getCookie(o,void 0)===a?(r=!1,x.setCookie(o, » », »Thu, 01 Jan 1970 00:00:01 GMT »,void 0,t,void 0)):(i =-1,r =Math.abs(i)0){t=!0;var n=!1,i=function(){n||(n=!0,e())};c.logInfo(« ».concat(I, » – auction delayed by « ).concat(A, » at most to fetch ids »)),_=setTimeout(i,A),L(r,i)}else s.a.on(f.a.EVENTS.AUCTION_END,function e(){s.a.off(f.a.EVENTS.AUCTION_END,e),S>0?setTimeout(function(){L(r)},S):L(r)})}e&&!t&&e()}function G(e,t){V(function(){(function(e,t){[e].some(function(e){return!Array.isArray(e)||!e.length})||e.forEach(function(e){e.bids&&c.isArray(e.bids)&&e.bids.forEach(function(e){var r=function(e,t){return Array.isArray(e)&&e.length&&t?e.filter(functi on(e){return!e.config.bidders||!c.isArray(e.config.bidders)||v()(e.config.bidders,t)}).filter(function(e){return c.isPlainObject(e.idObj)&&Object.keys(e.idObj).length}).reduce(function(e,t){return Object.keys(t.idObj).forEach(function(r){e[r]=t.idObj[r]}),e},{}):{}}(t,e.bidder);Object.key s(r).length&&(e.userId=r,e.userIdAsEids=Object(g.b)(r))})})})(t.adUnits||Object(d.a)().adUnits,h),e.call(this,t)})}function K(){return V(),W(h)}function H(){return V(),Object(g.b)(W(h))}function J(e,t){var r=e?e.submoduleNames:null;r||(r=[]),V(function(){var e=u.gdprDataHandler.getConsentData(),n=Q(D,e),i=n.userIdModules;if(n.hasValidated||z(e)){var o=q();M(e);var a,s=[],d=function(e,t){var r= »undefined »!=typeof Symbol&&e[Symbol.iterator]||e[« @@iterator »];if(!r){if(Array.isArray(e)||(r=function(e,t){if(e){if(« string »==typeof e)return y(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return »Object »===r&&e.construct or&&(r=e.constructor.name), »Map »===r|| »Set »===r?Array.from(e): »Arguments »===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?y(e,t):void 0}}(e))||t&&e&& »number »==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:f unction(){return n>=e.length?{done:!0}:{done:!1,value:e[n ]}},e:function(e){throw e},f:i}}throw new TypeError(« Invalid attempt to iterate non-iterable instance.nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method. »)}var o,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw o}}}}(i);try{for(d.s();!(a=d.n()).done;){var l=a.value;r.length>0&&-1===r.indexOf(l.submodule.name)||(c.logInfo(« ».concat(I, » – refreshing « ).concat(l.submodule.name)),Y(l,e,o,!0),c.isFn(l.callback)&&s.push(l))}}cat ch(e){d.e(e)}finally{d.f()}s.length>0&&L(s),t&&t()}else c.logWarn(« ».concat(I, » – gdpr permission not valid for local storage or cookies, exit module »))})}var Q=Object(p.b)(« sync »,function(e,t){return{userIdModules:e,hasValidated:t&&t.hasValidated}}, » validateGdprEnforcement »);function Y(e,t,r,n){if(e.config.storage){var i,o=U(e.config.storage),a=!1;if(« number »==typeof e.config.storage.refreshInSeconds){var s=new Date(U(e.config.storage, »last »));a=s&&Date.now()-s.getTime()>1e3*e.config.storage.refreshInSeconds}!o||a||n||!function(e,t){return null!=r&&r===N(t)}(0,t)?i=e.submodule.getId(e.config,t,o): »function »==typeof e.submodule.extendId&&(i=e.submodule.extendId(e.config,t,o)),c.isPlainObject(i)&&(i.id&&(B(e,i.id),o=i.id), »function »==typeof i.callback&&(e.callback=i.callback)),o&&(e.idObj= e.submodule.decode(o,e.config))}else if(e.config.value)e.idObj=e.config.value;else{var d=e.submodule.getId(e.config,t,void 0);c.isPlainObject(d)&&(« function »==typeof d.callback&&(e.callback=d.callback),d.id&&(e.idObj=e.submodule.decode(d.id,e.config))) }}function X(){var e=function(e,t,r){return Array.isArray(e)?e.reduce(function(e,t){return!t||c.isEmptyStr(t.name)||(!t.storage||c.isEmptyStr(t.storage.type)||c.isEmptyStr(t.storage.name)||-1===r.indexOf(t.storage.type)?c.isPlainObject(t.value)?e.push(t):t.storage||t.value||e.push(t):e.push(t)),e},[]):[]}(k,0,j);if(e.length){var t=R.filter(function(e){return!i()(D,function(t){return t.name===e.name})});D=t.map(function(t){var r=i()(e,function(e){return e.name&&(e.name.toLowerCase()===t.name.toLowerCase()||t.aliasName&&e.name.toLowerCase()===t.aliasName.toLowerCase())});return r&&t.name!==r.name&&(r.n ame=t.name),t.findRootDomain=F,r?{submodule:t,config:r,callback:void 0,idObj:void 0}:null}).filter(function(e){return null!==e}),!P&&D.length&&(Object(d.a)().requestBids.before(G,40),c.logInfo(« ».concat(I, » – usersync config updated for « ).concat(D.length, » submodules: « ), D.map(function(e){return e.submodule.name})),P=!0)}}function $(e){i()(R,function(t){return t.name===e.name})||(R.push(e),X())}function Z(e){D=[],k=[],P=!1,h=void 0,-1!==(j=[x.localStorageIsEnabled()?O:null,x.cookiesAreEnabled()?E:null].filter(function(e){return null!==e})).indexOf(E)&&x.getCookie(w)?c.logInfo(« ».concat(I, » – opt-out cookie found, exit module »)):-1!==j.indexOf(O)&&x.getDataFromLocalStorage(w)?c.logInfo(« ».concat(I, » – opt-out localStorage found, exit module »)):(e.getConfig(function(e){var t=e.userSync;t&&t.userIds&&(k=t.userIds,S=c.isNumber(t.syncDelay)?t.syncDelay:500,A=c.isNumber(t .auctionDelay)?t.auctionDelay:0,X())}),Object(d.a)().getUserIds=K,Object(d.a)().getUserIdsAsEids=H,Object(d.a)().refreshUserIds=J)}Z(o.b),Object(p.c)(« userId »,$)}},[716]),pbjs.processQueue();
}, {}];
window.modules[« visibility.legacy »] = [function(require,module,exports){« use strict »;DS.service(« $visibility »,[« $document », »$window », »_throttle », »Eventify »,function(e,t,n,i){var o,r,h=[];function s(e,t){return et?e:t}function d(e,t,n){!e.preload&&e.preloadThreshhold&&function(e,t,n,i){return t.top=e.shownThreshold&&!e.seen?(e.seen=!0,setTimeout(function(){e.trigger(« shown »,new r(« shown »,t))},15)):(!n||i1&&(h =e(r,Math.floor(n/o),i-1,o)),h},this.getVerticallyVisiblePixels=f,this.getViewportHeight=function(){return t.innerHeight||e.documentElement.clientHeight||e.body.clientHeight},this.getViewportWidth=function(){return t.innerWidth||e.documentElement.clientWidth||e.body.clientWidth},this.isElementNotHidden=u,this.isElementInViewport=function(n){var i=n.getBoundingClientRect();return i.top>=0&&i.left>=0&&i.bottom<=(t.innerHeight||e.documentElement.clientHeight)&&i.right<=(t.innerWidth||e.documentElement.clientWidth)},this.Visible=o}]);
}, {}];
require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '" o "'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o )s(r[o]);return s})(window.modules,{},[]);
'use strict';
/**
* mount legacy services from _global.js, if any
*/
function _createForOfIteratorHelper (o, allowArrayLike) {var it; if (typeof Symbol === « undefined » || o [Symbol.iterator] == null) {if (Array.isArray (o) || (it = _unsupportedIterableToArray (o)) || allowArrayLike && o && typeof o. length === « number ») {if (it) o = it; var i = 0; var F = function F () {}; return {s: F, n: function n () {if (i> = o.length) return {done: true}; return {done: false, value: o [i]}; }, e: function e (_e) {throw _e; }, f: F}; } throw new TypeError (« Invalid attempt to iterate non-iterable instance. nIn order to be iterable, non-array objects must have a [Symbol.iterator] () method. »); } var normalCompletion = true, didErr = false, err; return {s: function s () {it = o [symbol.iterator] (); }, n: function n () {var step = it.next (); normalCompletion = step.done; return step; }, e: function e (_e2) {didErr = true; err = _e2; }, f: function f () {try {if (! normalCompletion && it.return! = null) it.return (); } finally {if (didErr) throw err; }}}; }
function _unsupportedIterableToArray (o, minLen) {if (! o) return; if (typeof o === « string ») return _arrayLikeToArray (o, minLen); var n = Object.prototype.toString.call (o) .slice (8, -1); if (n === « Object » && o.constructor) n = o.constructor.name; if (n === « Map » || n === « Set ») return Array.from (o); if (n === « Arguments » || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray (o, minLen); }
function _arrayLikeToArray (arr, len) {if (len == null || len> arr.length) len = arr.length; for (var i = 0, arr2 = new Array (len); i <len; i) {arr2 [i] = arr [i]; } return arr2; }
function mountLegacyServices () {
Object.keys (window.modules) .filter (function (key) {
return typeof key === ‘string’ && key.match (/ . legacy $ /);
}). forEach (function (key) {
return window.require (key);
});
}
function tryToMount (fn, el, name) {
Attempt {
fn (el); // init the controller
} catch (e) {
var elementTag = el.outerHTML.slice (0, el.outerHTML.indexOf (el.innerHTML));
console.error (« Error initializing controller for » « . concat (name, » « on » « ). concat (elementTag, » « »), e);
}
}
/ **
* mount client.js component controllers
* /
function mountComponentModules () {
Object.keys (window.modules) .filter (function (key) {
return typeof key === ‘string’ && key.match (/ . client $ /);
}). forEach (function (key) {
var controllerFn = window.require (key);
if (typeof controllerFn === ‘function’) {
var name = key.replace (‘. client’, »),
instancesSelector = « [data-uri * = » _ components / « . concat (name, » / « ] »),
defaultSelector = « [data-uri $ = » _ components « .concat (name, » « ] »),
instances = document.querySelectorAll (instancesSelector),
defaults = document.querySelectorAll (defaultSelector);
var _iterator = _createForOfIteratorHelper (instances),
_step;
Attempt {
for (_iterator.s ();! (_ step = _iterator.n ()). done;) {
var el = _step.value;
tryToMount (controllerFn, el, name);
}
} catch (err) {
_iterator.e (err);
} finally {
_iterator.f ();
}
var _iterator2 = _createForOfIteratorHelper (defaults),
_step2;
Attempt {
for (_iterator2.s ();! (_ step2 = _iterator2.n ()). done;) {
var _el = _step2.value;
tryToMount (controllerFn, _el, name);
}
} catch (err) {
_iterator2.e (err);
} finally {
_iterator2.f ();
}
}
});
} // Make sure that a `window.process.env.NODE_ENV` is available in the client for any dependencies,
// services, or components that could require it
// note: the « value is swapped for the actual environment variable in /lib/cmd/compile/scripts.js
window.process = window.process || {};
window.process.env = window.process.env || {};
if (! window.process.env.NODE_ENV) {
window.process.env.NODE_ENV = »;
} // note: legacy controllers that require legacy services (e.g. dollar-slice) must
// wait for DOMContentLoaded to initialize themselves, as the files themselves must be mounted first
mountLegacyServices ();
mountComponentModules ();
//]]
Similar title :
– The Cheapo Olympics are coming
– The 2024 Paris Video Games are the Cheapo Video Games.
– 7 perfect places to picnic in Paris
Keywords: