Ebene News – United States – Pose Season 1 Recap: Times Have Changed

If I had to distill the essence of FX Pose’s pioneering drama series, I would do well to borrow the lyrics from Blanca Rodriguez (played by the luminous Mj Rodriguez): “We are family and ballroom is our home “

The line, which comes at the end of the third season episode, looks like a succinct summary of what made the Steven Canals-created show such a welcome presence in the American television landscape. Pose has long presented itself as a family drama, a drama that reconfigures what it means to be a family – and to be a “mother,” in every sense of the word – in a space that for decades has understood the meaning of that. impact such family ties can have on everyone involved: Ballroom Where the nuclear family, a staple of American television, has often been housed in, well, literal homes (think of those living rooms and kitchens that frame your favorite sitcoms, from All in the Family to Diff’rent Strokes), Pose has spent its last two seasons emphasizing the importance of a more abstract but all the more grounded vision of a “home.” After all, the House of Evangelista de Blanca, as this first episode reminds us, exists as much in the scenes around a table as on the floor of a ball.

So it’s no surprise that it’s in these two spaces that ‘On the Run’ really shines, in moments where the chemistry between her ever charming cast is palpable Watching Blanca improvise a family reunion in her apartment (to watch OJ’s infamous White Bronco Pursuit of All Things) and later beaming from the sidelines as Elektra (the magnetic Dominique Jackson) oversees a jaw-dropping demonstration of House Evangelista, you instantly remember why Pose, despite its familiar pitfalls (pun intended), nonetheless feels quietly radical This is a love letter to black trans women and motherhood that black trans women like Blanca have endorsed and, rather than just highlighting such burdens, also celebrates its potential

When Blanca talks about her work in the hospital caring for AIDS patients and says that “I never thought that a woman like me could have the answers, would be the one who had the solution”, you can almost feel Canals and co-writer and director Janet Mock expressing the kind of statement they want to normalize with this show Our Fearless Protagonist is a steel beacon of empathy, and her selflessness is precisely why she (and the actress who brings her to life) deserves her flowers It’s an uplifting moment of self-actualization that seeks to set in motion a final season that finds the emotional anchor of the series chasing her professional dreams, preparing her for what might be a well-deserved fairy tale ending now that she has also found her own “Theo Huxtable” in Jeremy Pope’s Christopher

If “On the Run” finds Blanca looking ahead with bright-eyed optimism, the same can’t be said of Pray Tell (Billy Porter) The generally fiery host is adrift, looking solace at the bottom of a bottle of liquor, which makes his usually sharp-tongued jokes feel sharper than usual His bitterness about his place in the world alters every interaction he has with those who love it – and, it should be noted, gives the ever-in-game Porter a chance to show more of its lineup The attempts of Blanca, her beau Ricky (Dyllón Burnside), and even the sweetheart that is Damon (Ryan Jamaal Swain), with a ready-made AA pitch, are not enough to convince Pray Tell that his way of Self-care might not be the best way to deal with the immense grief he faces every day As he rightly pointed out at one of the many funerals he currently attends , “My drink will not fill this room”This is a statement that reframes her self-destruction as survival, which makes it all the more disturbing And with hints that Angel (Indya Moore) and Lulu (Hailie Sahar) are all too happy to smoke crack-laced joints, it’s clear that the dangers of addiction may well continue to structure and dictate the final episodes of the series

But, like much of Pose, those nods to the darker edges of these characters’ lives are more of a gesture than anything else The love its creators and writers have for these characters, the how they’ve been etched onto the screen as a balm and as a patch (to erase and ignore stories, both hyped and embodied), means they’re still haloed by a protector Forcing It doesn’t make people like Pray Tell and Blanca, say, immune to the horrors of the world around us.But it does mean that Pose’s story will always give more weight to those rays shining through the dark. than in the dark itself – maybe that’s why this police raid that opens the show is so fleeting, when those moments of joy (like, say, sharing Chinese food while “I Love Your Smile ”by Shanice plays us in the credits) are the ones who get the most attention These are the ones the show wants us to sit with and remember the most:“ I show the life I live, ”sings Shanice in this’ 90s hit, capturing Pose ethics at its most lucid “This is the life I have Yeah, and it’s true”

• One thing to note about this final ballroom scene is how it looks like a snapshot of both the past and the present moment of the ballroom: here is, after all, a marked scene. by RuPaul’s 1993 hit song, “Supermodel (You Better Work),” which features, among its many performers, Legendary host Dashaun Wesley. Such a prismatic moment is reminiscent of how a Pose cultural object can be powerful, suturing as it does where the ballroom was in 1994 and the place it occupies in 2021 to honor its roots and further celebrate its place in contemporary popular culture

• I can’t decide if my favorite line was Elektra’s line “Bullets are like we cry!” or Pray Tell: “Want some noodles before you grill?” Fortunately, I don’t have to choose between them and I can top them both

• I couldn’t pass up a recap without highlighting the truly exceptional work done by the Costumes, Hairdressing and Makeup departments, led by Analucia McGorty, Sherri Berman Laurence, Barry Lee Moe and Chris Clark (all nominated at the Emmys for their past work on the show) And I’m not just talking about those ball looks (which are, yes, to die for) but calmer sets, like a Lil Papi (Angel Bismark Curiel) in color stuck in a black turtleneck with a blue blazer and a gorgeous headdress Angel saw her fantastic ’90s model with a bright red lip and trendy gold earrings And yes, even that final Blanca outfit with those killer boots

• Can we talk for a minute about Jason A Rodriguez, unkune Lemar, father of the house of Khan? In an episode full of reassuring smiles, heartwarming lectures, and kindness and love between his OG characters, it was a real pleasure to see Lemar being his delightfully sassy self, killing his voguing in competition and beyond. establishing him as a one-line killer delivery guy (That said, I can’t say I cared much about the dinner food battle, which seemed straight out of a 90s family movie comedy plus Widely taken from that, well, from a ’90s family TV series that Pose feels more in tune with – but then again, the mess of the stage speaks to the knotted mess where the show often finds its most interesting beats)

Already subscribed?
Log in or link your magazine subscription

Already subscribed?
Log in or link your magazine subscription

Already subscribed?
Log in or link your magazine subscription

Already subscribed?
Log in or link your magazine subscription

= 0? (u = fsubstr (0, v), c = fsubstr (v 1)) 🙁 u = f, c = “”), i = decodeURIComponent (u), l = decodeURIComponent (c), hasOwnProperty (o, i) ? isArray (o [i])? o [i] push (l): o [i] = [o [i], l]: o [i] = l} return o}; var isArray = ArrayisArray || function (r) {return “[object Array]” === ObjectprototypetoStringcall (r)};
}, {}];
modules window [“1168”] = [function (require, module, exports) {“use strict”; var stringifyPrimitive = function (r) {switch (typeof r) {case “string”: return r; case “boolean”: return r? “true”: “false”; case “number”: return isFinite (r)? r: “”; default: return “”}}; moduleexports = function (r, e, t, n) {return e = e || “&”, t = t || “=”, null === r&& (r = void 0), “object” == typeof r? map (objectKeys (r), function (n) {var i = encodeURIComponent (stringifyPrimitive (n)) t; return isArray (r [n])? map (r [n], function (r) {return i encodeURIComponent (stringifyPrimitive (r))}) join (e): i encodeURIComponent (stringifyPrimitive (r [n]))}) join (e): n? encodeURIComponent (stringifyPrimitive (n)) t encodeURIComponent (stringifyPrimitive (r)): “”}; var isArray = ArrayisArray || function (r) {return “[object Array]” === ObjectprototypetoStringcall (r)}; function map (r, e) {if (rmap) return rmap (e); for (var t = [], n = 0; n0&&a [alength-1]) && (6 === i [0] || 2 === i [0])) {o = 0; continue} if (3 === i [0] && (! a || i [1]> a [0] &&i [1] “:” akbar-men “,” ∑ “:” majmou “,” ¤ ” : “omla”}, az: {}, ca: {“∆”: “delta”, “∞”: “infinite”, “♥”: “amor”, “&”: “i”, “|”: “o”, “”: “mes que”, “∑”: “suma dels”, “¤”: “moneda”}, cz: {“∆”: “delta”, “∞”: “nekonecno”, ” ♥ “:” laska “,” & “:” a “,” | “:” nebo “,” “:” vice jako “,” ∑ “:” concern “,” ¤ “:” mena “}, de: {“∆”: “delta”, “∞”: “unendlich”, “♥”: “Liebe”, “&”: “und”, “|”: “oder”, “”: “groesser als”, ” ∑ “:” Summe von “,” ¤ “:” Waehrung “}, dv: {” ∆ “:” delta “,” ∞ “:” kolunulaa “,” ♥ “:” loabi “,” & “:” aai “,” | “:” noonee “,” “:” ah vure bodu “,” ∑ “:” jumula “,” ¤ “:” faisaa “}, en: {” ∆ “:” delta “,” ∞ ” : “infinity”, “♥”: “love”, “&”: “and”, “|”: “or”, “”: “greater than”, “∑”: “sum”, “¤”: ” currency “}, es: {” ∆ “:” delta “,” ∞ “:” infinito “,” ♥ “:” amor “,” & “:” y “,” | “:” u “,” “: “mas que”, “∑”: “suma de los”, “¤”: “moneda”}, fr : {“∆”: “delta”, “∞”: “infinitely”, “♥”: “Love”, “&”: “and”, “|”: “or”, “”: “greater than”, “∑”: “sum of”, “¤”: “monna ie”}, gr: {}, hu: {“∆”: “delta”, “∞”: “vegtelen”, “♥”: “szerelem” , “&”: “es”, “| “:” vagy “,” “:” nagyobb mint “,” ∑ “:” szumma “,” ¤ “:” penznem “}, il: {” ∆ “:” delta “,” ∞ “:” infinito “, “♥”: “amore”, “&”: “e”, “|”: “o”, “”: “maggiore di”, “∑”: “somma”, “¤”: “moneta”}, lt : {}, lv: {“∆”: “delta”, “∞”: “bezgaliba”, “♥”: “milestiba”, “&”: “a”, “|”: “vai”, “”: “lielaks neka”, “∑”: “summa”, “¤”: “valuta”}, my: {“∆”: “kwahkhyaet”, “∞”: “asaonasme”, “♥”: “akhyait”, ” & “:” nhin “,” | “:” tho “,” “:” kyithaw “,” ∑ “:” paungld “,” ¤ “:” ngwekye “}, mk: {}, nl: {” ∆ “:” delta “,” ∞ “: “oneindig”, “♥”: “liefde”, “&”: “en”, “|”: “of”, “”: “groter dan”, “∑”: “som”, “¤”: “valuta “}, pl: {” ∆ “:” delta “,” ∞ “:” nieskonczonosc “,” ♥ “:” milosc “,” & “:” i “,” | “:” lub “,” “:” wieksze niz “,” ∑ “:” suma “,” ¤ “:” waluta “}, pt: {” ∆ “:” delta “,” ∞ “:” infinito “, “♥”: “amor”, “&”: “e”, “| “:” or “,” “:” maior que “,” ∑ “:” soma “,” ¤ “:” moeda “}, ro: {” ∆ “:” delta “,” ∞ “:” infinite “, “♥”: “dragoste”, “&”: “si”, “|”: “sau”, “”: “mai mare ca”, “∑”: “suma”, “¤”: “valuta”}, ru: {“∆”: “delta”, “∞”: “beskonechno”, “♥”: “lub ov”, “&”: “i”, “| “:” ili “,” “:” bolche “,” ∑ “:” summa “,” ¤ “:” valjuta “}, sk: {” ∆ “:” delta “,” ∞ “:” nekonecno “,” ♥ “:” laska “,” & “:” a “,” | “:” alebo “,” “:” viac ako “,” ∑ “:” sucet “,” ¤ “:” mena “}, sr: {}, tr: {“∆”: “delta”, “∞”: “sonsuzluk”, “♥”: “ask”, “&”: “ve”, “|”: “veya”, “”: ” buyuktur “,” ∑ “:” toplam “,” ¤ “:” para birimi “}, uk: {” ∆ “:” delta “,” ∞ “:” bezkinechnist “,” ♥ “:” lubov “,” & “:” i “,” | “:” abo “,” “:” bilshe “,” ∑ “:” suma “,” ¤ “:” valjuta “}, vn: {” ∆ “:” delta “,” ∞ “:” vo cuc “, “♥”: “yeu”, “&”: “will”, “|”: “hoac”, “”: “lon hon”, “∑”: “tong”, “¤”: “tien te”}} ; if (“string”! = typeof e) return “”; if (“string” == typeof a&& (A = a), m = Ien, c = Cfr, “object” == typeof a) for (g in n = amaintenirCase ||! 1, O = acustom&& “object” == type of apersonalized? apersonalized: O, u = atronquer> 1&&atronquer ||! 1, l = auric ||! 1, s = auricNoSlash ||! 1 , r = amarque ||! 1, S =! 1! == asymbols &&! 1! == alang, A = aseparator || A, l&& (p = bjoin (“”)), s&& (p = zjoindre (” “)), r&& (p = [” “,”! “,” ~ “,” * “,” ‘”,” (“,”) “] join (” “)), m = alang&&I [alang] &&S ? I [alang]: S? Ifr: {}, c = alang&&C [alang]? C [alang] :! 1 === alang ||! 0 === alang? {}: Cfr, untitl eCase&& “number” == type of untitleCaseelength&&ArrayprototypetoStringcall (untitleCase)? (untitleCaseforEach (function (e) {O [e “”] = e “”}), t =! 0): t = !! atitleCase, uncustom&& “number” == type of a&&ArrayprototypetoStringcall (unpersonalized) &&aDouaneforEach (function (e) {O [e (n “) forEach (function (e) {O [e (n”) forEach ” = alength> 1? new RegExp (“\ b” o (a) “\ b”, “gi”): new RegExp (o (a), “gi”), e = replace (n, O [a ])}), O) p = g; for (p = o (p = A), f =! 1, y =! 1, d = 0, k = (e = replace (/ (^ s | s $) / g, “”)) length ; d = 0? (j = g, g = “”) :! 0 === y? (g = U [j] v [g], j = “”): g = f&&v [g] match (/ [A-Za-z0-9] /)? “” V [g]: v [g], f =! 1, y =! 1): g in U? (j = g, g = “”, d === k-1&& (g = U [j]), y =! 0):! m [g] || l&&-1! == contact (“”) indexOf (g) || s&&-1! == zrejoin (“”) indexOf (g)? (! 0 === y? (G = U [j] g, j = “”, y =! 1): f&& (/ [A-Za-z0-9] / test (g) || Esubstr (- 1) match (/ A-Za-z0-9] /)) && (g = “” g), f =! 1) 🙁 g = f || Esubstr (-1) match (/ [A-Za- z0-9] /)? A m [g]: m [g], g = void 0! == e [d 1] &&e [d 1] match (/ [A-Za-z0-9] /)? A: “”, f =! 0), E = greplace (new RegExp (“[^ \ w \ s” p “_-]”, “g”), A); returns t&& (E = Replace (/ ( w) ( S *) / g, function (e, a, n) {var t = atoUpperCase () (null! == n? n: “”); return Objectkeys (O) indexOf (ttoLowerCase ()) u&& (h = EcharAt (u) === A, E = Thin (0, u), h || (E = Thin (0, ElastIndexOf (A)))), n || t || (E = EtoLowerCase ()), E}, t = function (e) {return function (a) {return n (a, e)}}, o = function (e) {return erplace (/ [- \ ^ $ *? () | [] {} /] / g, “\ $ &”)}, i = function (e, a) {for (var n in a) if (a [n] === e) return! 0}; if (“undefined”! = typeof module&&modulemodule export) exports = n, moduleexportationscreateSlug = t; else if (“undefined”! = typeof define&&defineamd) define ([], function () {return n}); else try {if (egetSlug || ecreateSlug) throw “speakurl: globals exist / (getSlug | createSlug) /”; egetSlug = n, ecreateSlug = t} catch (e) {}} (this);
}, {}];
modules window [“1198”] = [function (require, module, exports) {var namespace = “expire_mixin”; function expirePlugin () {var e = thiscreateStore (storage, null, cette_namespacePrefix namespace); return {set: function (t, n, a, r) ​​{thishasNamespace (namespace) || eset (n, r); return t ()}, get: function (e, n) {thishasNamespace (namespace) || tcall (this, n); return e ()}, remove: function (t, n) {thishasNamespace (namespace) || eremove (n); return t ()}, getExpiration: function (t, n) {return eget (n)}, removeExpiredKeys: function (e) {var n = []; thiseach (function (e, t) {npush (t)}); for (var a = 0; a = 0; r -) {var l = localStorage () key (r); e (read (l), l)}} function remove (e) {return localStorage () removeItem (e)} function clearAll () {return localStorage () module clear ()} exports = {name: “localStorage”, read : read, write: write, each: each, delete: delete, clearAll: clearAll};
}, {“1200”: 1200}];
modules window [“1202”] = [function (require, module, exports) {moduleexports = {name: “memoryStorage”, read: read, write: write, each: each, remove: remove, clearAll: clearAll}; var memoryStorage = {}; function read (e) {return memoryStorage [e]} function write (e, r) {memoryStorage [e] = r} function each (e) {for (var r in memoryStorage) memoryStoragehasOwnProperty (r) &&e (memoryStorage [r] , r)} function remove (e) {delete memoryStorage [e]} function clearAll (e) {memoryStorage = {}}
}, {}];
the modules window [“1223”] = [function (require, module, exports) {! function (e) {var t = function (e) {return new y (e)}; tversion = “068”, “undefined”! = Typeof module&&moduleexports? moduleexports = t: “function” == typeof define&&defineamd? define (function () {return t}): etypogr = t; var n = function (e, t) {return new RegExp (e, t)}, s = /] *> / i, r = tamp = function (e) {var t = / ( s |) (& | & | & # 38;) ( s |) / g; if (e || “string” == typeof e) return ereplace (/ ()? ([^)? / g, function (e, n, r, a) {returns a = a || “”, (n = n || “”) match (s)? nra: n (r = replace (t, ‘$ 1& $ 3’)) a})}, a = tord = function (e) {if (e || ” string “== typeof e) {var t, n = f (e), r = [], a =! 1, p = / ( d) (st | nd | rd | th) / g; returns nforEach (function (e) {“tag” === etype? (repel (etxt), t = sexec (etxt), a =! (! t || void 0! == t [1])): a ? repel (etxt): repel (eSMSreplace (p, ‘$ 1 $ 2’))}), join (“”)}}, p = tinitQuotes = function (e) {var t = n (“(?: ( ?:] *> | ^) \ s * (?:] *> \ s *) *) (?: ( “|” | “) | (‘|’ | ‘))”, “I” ); if (e || “string” == typeof e) returns ereplace (t, function (e, t, n) {var s = t? “dquo”: “quo”, r = t || n; return [cut (0, elastIndexOf (r)), ”, r, “”] join (“”)})}, c = twidont = function (e) {var t = “(?:] *?>) *? [ ^ \ s] (? :(?: a | em | span | strong | i | b) [^>] *?>) *? “, s = n (” (\ s “t” \ s “t”) (?: \ s) ([^ \ s] (?: \ s * (?: a | em | span | strong | i | b) [^>] *?> \ s * \ *) *? (?: \ s *? (?: p | h [1-6] | li | dt | dd)> | $)) “,” gi “); returns replace replace (s, ‘$ 1 $ 2’)}, i = tcaps = function (e) {var t, r = f (e), a = [], p =! 1, c = n (“((\ b [AZ \ d] * [AZ] \ d * [AZ] [AZ \ d ‘] * \ b) | (\ b [AZ] \ s? (?: [AZ] \\ s?)) (?: \ s | \ b | $)) “,” g “); returns rforEach (function (e) {“tag” === etype Push (etxt), t = sexec (etxt), p =! (! t || void 0! == t [1])): p? push (etxt): push (eSMSreplace (c, function (e, t, n, s) {var r, a; returns n? ‘% to replace (“% s”, n) 🙁 “” === stranche (-1)? (r = stranche (0, -1), a = “”) 🙁 r = s, a = “”), ‘% s1% s2’ replace (“% s1”, r) replace (“% s2”, a))}))}), cut out typogrifie = function (e) {var t = e; returns ejquery&&ehtml&& (t = ehtml ()), t = r (t), t = c (t), t = u (t), t = i (t), t = p (t), t = a (t )}; var l, o, u = tsmartypants = function (e) {var t, n, r = f (e), a = [], p = [], c = “”, i = “”, l =! 1, o = “”; return rforEach (function (e) {if (“tag” === etype Push (etxt), null! == (i = sexec (etxt)) && (c = i [2] toLowerCase (), i [1] ? (diver> 0&&c === p [plength-1] &&ppop (), 0 === plength&& (l =! 1)) 🙁 ppush (c), l =! 0)); else {if (n = (n = eSMS) replace (/ (rock) ‘n’ (roll) / gi, “$ 1’n ‘$ 2”), t = nslice (-1) ,! l) switch (n = g (n) , n = h (n), n = d (n), n = x (n)) {case “‘”: n = / S / test (o)? “” “:”‘ “; break; case ‘”‘: n = / S / test (o)?” “”: “” “; break; default: n = m (n)} o = t, apush (n)}}), ajoin (” “)}, f = ttokenize = function (e) {for (var t, n = [], s = 0, r = / ([^] *>) / gi; null! == (t = rexec (e ));) {var a = t [1], p = t [2]; a&&npush ({type: “text”, txt: a}), npush ({type: “tag”, txt: p}), s = rlastIndex} returns rlastIndex) / g, “$ 1 -“)}, d = tsmartEllipses = function (e) {returns replace (/ \ / g, “…”) replace (/ / g, “…”)}, X = tsmartBackticks = function (e) {return and replace (/ “ / g, “” “) replace (/ ” / g,” “”)}, m = tsmartQuotes = function (e) {var t = “(? =% s \ B) “replace (“% s “,” [! “# \ $ \% \ ‘() *, – \ /:;? \ @ \ [\ ] \ ^ _ `{|} ~]”), s = “[^ \ \ t \ r \ n \ [ {\ (\ -]”, r = n ( “(\ s | | – | & [mn] dash; | – | – | ȁ [34];) ‘(? = \ w)”, “g”), a = n (“(” s ” ) ‘(?! \ s | s \ b | \ d) “,” g “), p = n (” (“s”)’ (?! \ s | s \ b) “, “g”), c = n (‘(\ s | | – | & [mn] dash; | – | – | ȁ [34];) “(? = \ w)’,” g “), i = n (‘”(? = \ s)’,” g “), l = n (” (“s’)” ‘, “g”); returns replace (n (“^’% s” replace (“% s”, t), “g”), “‘”) replace (n (‘ ^ “% replace (“% s “, t),” g “),” “”) replace (/ “‘(? = w) / g,” “‘”) replace (/ ‘”(? = w) / g,”‘ “”) replace (/ b ‘(? = d {2} s ) / g, “‘”) replace (r, “$ 1” “) replace (a,” $ 1 “”) replace (p, “$ 1’ $ 2”) replace (“‘”, “‘”) replace (c, “$ 1” “) replace (i,” “”) replace (l, “$ 1” “) replace (‘”‘, “” “)}, y = function (e) {this_wrapped = e }, v = function (e, n) {yprototype [e] = function () {returns e = layer (t, c eci_wrapped), this_string? t (e) chain (): e; var e}}; for (l in t) thasOwnProperty (l) && ((o = t [l]) &&oconstructor&&ocall&&oapply) &&v (l), &&v (l); yprototypechain = function () {return this_chain =! 0, this}, yprototypevalue = function () {return this_wrapped}} (this);
}, {}];
modules window [“1319”] = [function (require, module, exports) {“use strict”; const universalAgora = require (1321), universalRest = require (9), universalQuery = require (1320), _ get = require (23); function searchByQueryWithRawResults (e, r) {const t = `// $ {replacehost} $ {80! == rplacerport? `: $ {rplacerport}`: “”} $ {rplacerport} / _ agora / _search`; returns universalRestpost (t, e ,! 0)} function getProducts (e, r, t) {return searchByQueryWithRawResults (universalAgorabuildProductsQuery (e), r) then (e => {const r = universalQueryformatSearchResult (e); return {total: eles coupstotal, products: t? universalAgorafilterByLocale (r): r}})} function getMerchantsList (e) {returns searchByQueryWithRawResults (universalAgorabuildMerchantsAggregation (1e6, _get (e, “siteagoraLocale”)), e) then “merchantsAggregationName {aggregationName {aggregationName {aggregationName {aggregationName {aggregationName {aggregationName “, field:” key “, subfield:” name “}))} moduleexportationsgetProduct = universalAgoragetProduct, moduleexportationsgetProducts = getProducts, moduleexportationsgetMerchantsList = getMerchantsList, moduleexportationssearchByQueryQueryWithRawResilderchants = searchByQuerybuildsaberyQueryQueryQueryQueryQueryQueryQueryWithRawRawResilderchants = searchByQuerybuildingsaberyQueryQueryQueryBeryQueryQueryBeryQueryQueryQueryQuerybuildingQueryQueryQueryQueryRawildercildawildercaw
}, {“9”: 9, “23”: 23, “1320”: 1320, “1321”: 1321}];
the modules window [“1320”] = [function (require, module, exports) {“use strict”; const _map = require (50), _ get = require (23), _ isArray = require (150), _ set = require (108), _isObject = require (87), _ cloneDeep = require (69), _ uniq = require (92); function formatSearchResult (e) {return _map (eles coupshits, “_ source”)} function newQuery (e) {if (! e) throw new Error (“An` index` is required to build a query “); return {index: e, type: “_ doc”, body: {query: {}}}} function addShould (e, o) {var t = _get (e, “body in doubt booleanshould”, void 0), r = _isArray (o); return t? r? _set (e, “bodymetterbooleandoubthould ”, tconcat (o)) 🙁 tpush (o), _ set (e,” bodybooleandhould doubt “, t)): _ set (e,” corpsbooleanddoubt “, r? o: [o]), e} function addMust (e, o) {var t = _get (e, “bodymetter in doubt booleanmust”, void 0), r = _isArray (o); return t? r? _set (e, “bodybooleandoubt ‘, tconcat (o)) 🙁 tpush (o), _ set (e,” bodybooleandoubt “, t)): _ set (e,” bodybooleanmust doubt “, r? o: [o]), e} function addMustNot (e, o) {var t = _get (e, “body in doubtbooleanmust_not”, void 0), r = _isArray (o); return t? r? _set (e, “bodymetter in doubt booleanmust_not”, tconcat (o)) 🙁 tpush (o), _ set (e, “body to doubt booleanmust_not”, t)): _ set (e, “body to doubt booleanmust_not”, r? o: [o]), e} function addFilter (e, o) {var t = _get (e, “bodymetter in doubt booleanfilter”, void 0); if (! _ isObject (o)) throw new Error (“Filter query required to be an object”); return t? _isArray (t)? (tpush (o), _ set (e, “bodybooleanfilter”, t)): _ set (e, “bodybooleanfilter question”, [_ cloneDeep (t), o]): _ set (e, “bodymit in doubtbooleanfilter “, o), e} function addMinimumShould (e, o) {if (” number “! = typeof o) throw new Error (” A number is required as second argument “); return _set (e, “bodymetter in doubtbooleanminimum_should_match”, o), e} function addSort (e, o) {var t = _get (e, “corpssort”); returns _isArray (t) || _set (e, “corpstrier”, t = []), tpush (o), e} function addSize (e, o) {if (! o&&0! == o) return e; if (o = parseInt (o), isNaN (o)) throw new Error (`The second argument must be a number: $ {o}`); return _set (e, “corpssize”, o)} function addFrom (e, o) {if (! o&&0! == o) return e; if (o = parseInt (o), isNaN (o)) throw new Error (`The second argument must be a number: $ {o}`); return _set (e, “corpsfrom”, o)} function onlyWithTheseFields (e, o) {if (! _ isArray (o)) throw new Error (“Second argument is required to be an Array”); return _set (e, “body_la sourceinclude”, _ uniq (o)), e} function onlyWithinThisSite (e, o) {return osubsiteSlug? addFilter (e, {term: {subsite: osubsiteSlug}}) 🙁 addFilter (e, {term: {site: oslug}}), addMustNot (e, {exists: {field: “subsite”}})) , e} function onlyWithinThisDomain (e, o) {return addFilter (e, {prefix: {canonicalUrl: `http: // $ {ohost}`}}), e} function withinThisSiteAndCrossposts (e, o) {var t = { term: {}}, r = {bool: {should: [], minimum_should_match: 1}}; return tterm [“crosspost” (osubsiteSlug || olimace)] =! 0, rbooleanshouldpush (t), osubsiteSlug? rbooléendevraitpush ({term: {subsite: osubsiteSlug}}) 🙁 rbooléendevraitpush ({term: {site: oslug}}), addMustNot (e, {exists: {field: “subsite”}})), addFilter (e , r), e} function withinThisDomainOrCrossposts (e, o) {return addShould (e, {term: {[`crosspost $ {osubsiteSlug || oslug}`] :! 0}}), addShould (e, {prefix: { canonicalUrl: `http: // $ {ohost}`}}), addMinimumShould (e, 1), e} function moreLikeThis (e, o, t) {let r = {fields: [“tags”], like: { _ index: eindex, _type: “_ doc”, _ id: o}, include :! 1, min_term_freq: 1, max_query_terms: 12, min_doc_freq: 1}; return {more_like_this: Objectassign (r, t)}} function addAggregation (e = {}, o) {const {body: t = {}} = e; return o? (taggs? _set (e, “corpsaggs”, Objetattribuer (taggs, o)): _ set (e, “corpsaggs”, o), e): e} function formatAggregationResults ({aggregationName: e = “”, field: o = “”, subfield: t = “”, skipEmpty: r =! 0}) {return function (s = {}) {let u = _get (s, `aggregations $ {e} $ {t?” “t” “:” “} buckets`, []); returns r&& (u = ufilter (e => 0! == _ get (e, “doc_count”, 0))), umap (e => e [o] || “”)}} function addGeo (e, o ) {if (! _ isArray (o)) throw new Error (“Second argument is required to be an Array”); if (2! == olength) throw new Error (“The array must be 2”); if (osome (isNaN)) throw new Error (“The array must contain only numbers”); return _set (e, “bodymetter in doubtgeo_shape locationfaçonnertype”, “point”), _ set (e, “bodymissgeo_shape locationformercoordinates”, o), e} function combineFunctionScoreQueries (e, o) {let t = _cloneDeep (_get (e, ” bodyrequest “, {})), r = _cloneDeep (_get (o,” bodyrequest “, {})), s = _get (e,” corpssort “); returns _set (e, “requestbody”, {}), _ set (e, “body doubtfunction_scorefonctions”, []), ecorps doubtfunction_scorefunctionspush ({filter: t, weight: 20}), ecorpscallfunction_scorefunctionspush ({ filter: r, weight: 10}), ecorpscallfunction_scorescore_mode = “max”, ecorpscallfunction_scoremin_score = 10, _isArray (s) || _set (e, “corpstrier”, s = []), sunshift ({_ score: “desc”}), e} function addNestedObjQuery (e, o, t) {if (! e) throw new Error (“It n ‘there is no basic query to perform the addNestedObjQuery operation “); if (! o) throw new Error (“There is no nested object path on which to perform the nested query”); if (! t) throw new Error (“There is no nested query path on which to perform the nested query”); return _set (e, “nested”, {path: o, query: t}), e} function addMatchAll (e) {return _set (e, “corpsquery”, {match_all: {}}), e} function addMultiMatch ( e, o) {const t = _get (e, “bodymetter in doubt booleanmust”, void 0), {fields: r, type: s, string: u} = o, i = {multi_match: {query: u, fields: r, type: s}}; return t? (tpush (i), _ set (e, “bodycontainbooléendoit”, t)): _ set (e, “bodycontestbooléendoit”, [i]), e} moduleexports = new request, moduleexportationsaddGeo = addGeo, moduleexportationsaddAggregation = addAggregation, moduleexportationsaddShould = addShould, moduleexportationsaddFilter = addFilter, moduleexportationsaddMust = addMust, moduleexportationsaddMustNot = addMustNot, moduleexportationsaddMinimumShould = addMinimumShould, moduleexportationsaddSort = AddSort, moduleexportationsaddSize = addSize, moduleexportationsaddFrom = addFrom, moduleexportationsonlyWithTheseFields = onlyWithTheseFields, moduleexportationsonlyWithinThisSite = onlyWithinThisSite, moduleexportationsonlyWithinThisDomain = onlyWithinThisDomain, moduleexportationswithinThisSiteAndCrossposts = withinThisSiteAndCrossposts, moduleexportationswithinThisDomainOrCrossposts = withinThisDomainOrCrossposts, moduleexportationsformatAggregationResults = formatAggregationResults, moduleexportationsf ormatSearchResult = formatSearchResult, moduleexportationsmoreLikeThis = moreLikeThis, moduleexportationscombineFunctionScoreQueries = combineFunctionScoreQueries, moduleexportationsaddNestedObjQuery = addNestedObjQuery, moduleexportationsaddMatchAll = addMatchAll, moduleexportiMatch =addMultatch; addMultatch
}, {“23”: 23, “50”: 50, “69”: 69, “87”: 87, “92”: 92, “108”: 108, “150”: 150}];
modules window [“1321”] = [function (require, module, exports) {(function (process, __ filename) {(function () {
“use strict”; const _forEach = require (40), _ get = require (23), _ filter = require (134), _ map = require (50), _ isEmpty = require (88), urlParse = require (51), log = require (22) setup ({file: __ filename}), queryService = require (1320), universalRest = require (9), AGORA_HOST = windowtraiterenvAGORA_HOST, AGORA_ELASTIC_PREFIX = windowtraiterenvAGORA_ELASTIC_PREFIX, AGORA_ENDHOST =? `$ {AGORA_HOST} / api / v1`: null, requestHeader = {” Content-Type “:” application / json “}, PRODUCTS_INDEX =” agora-products “, AFFILIATES_INDEX =” affiliates_INDEX “=” retailers “, FILTER_KEY = { merchants: “name”, affiliates: “affiliate”}, URL_RE = / ^ https ?: / / * $ /; function getProducts (e, t) {const {limit: r = 100, start: a = 0, search: s = “”, sortDate: i = “desc”} = e, n = `$ {AGORA_ENDPOINT} / products? limit = $ {r} &start = $ {a} &search = $ {encodeURIComponent (s)} &sortDate = $ {i} `; return fetch (n) then (handleResponse) then (e => t? filterByLocale (e, t): e) then (e => ({total: length, products: e})) catch (handleError (n))} function getProduct (e, t) {const r = `$ {AGORA_ENDPOINT} / products / $ {e}`; if (! AGORA_ENDPOINT) throw new Error (“No Agora endpoint has been defined”); if (“string”! = typeof e) throw new Error (“request must provide a product id”); return fetch (r) then (handleResponse) then (e => t? filterByLocale (e, t): e) catch (handleError (r))} function postProduct (e) {const t = `$ {AGORA_ENDPOINT} / products` , r = {method: “POST”, headers: requestHeader, body: JSONstringify (e)}; return fetch (t, r) then (handleResponse) catch (handleError (t))} function putProduct (e, t) {const r = `$ {AGORA_ENDPOINT} / products / $ {e}`, a = {method: ” PUT “, headers: requestHeader, body: JSONstringify (t)}; return fetch (r, a) then (handleResponse) catch (handleError (r))} function patchProduct (e, t) {const r = `$ {AGORA_ENDPOINT} / products / $ {e}`, a = {method: ” PATCH “, headers: requestHeader, body: JSONstringify (t)}; return fetch (r, a) then (handleResponse) catch (handleError (r))} function deleteProduct (e) {const t = `$ {AGORA_ENDPOINT} / products / $ {e}`; return fetch (t, {method: “DELETE”, headers: requestHeader}) then (handleResponse) catch (handleError (t))} function getMerchantList (e) {const {limit: t = 100, fields: r = “”} = e; return PromiseSolve ([{name: “Amazon”}]) catch (handleError (“”))} function getMerchant (e) {const t = `$ {AGORA_ENDPOINT} / merchants / $ {e}`; if (“string”! = typeof e) throw new Error (“request must provide a merchant identifier”); return fetch (t) then (handleResponse) catch (handleError (t))} function patchMerchant (e, t) {const r = `$ {AGORA_ENDPOINT} / merchants / $ {e}`, a = {method: “PATCH” , headers: requestHeader, body: JSONstringify (t)}; return fetch (r, a) then (handleResponse) catch (handleError (r))} function postMerchant (e) {const t = `$ {AGORA_ENDPOINT} / merchants`, r = {method:” POST “, headers: requestHeader, body: JSONstringify (e)}; return fetch (t, r) then (handleResponse) catch (handleError (t))} function putMerchant (e, t) {const r = `$ {AGORA_ENDPOINT} / merchants / $ {e}`, a = {method: ” PUT “, headers: requestHeader, body: JSONstringify (t)}; return fetch (r, a) then (handleResponse) catch (handleError (r))} function deleteMerchant (e) {const t = `$ {AGORA_ENDPOINT} / merchants / $ {e}`; return fetch (t, {method: “DELETE”, headers: requestHeader}) then (handleResponse) catch (handleError (t))} function migrateMerchants (e) {const t = `$ {AGORA_ENDPOINT} / merchants / migrate-affiliate` , r = {method: “POST”, headers: requestHeader, body: JSONstringify (e)}; return fetch (t, r) then (handleResponse) catch (handleError (t))} function getRetailers (e) {const {limit: t = 100, start: r = 0} = e, a = `$ {AGORA_ENDPOINT} / retailers? limit = $ {t} &start = $ {r} `; return fetch (a) then (handleResponse) then (e => ({total: length, retailers: e})) catch (handleError (a))} function getRetailer (e) {const t = `$ {AGORA_ENDPOINT} / retailers / $ {e} `; return fetch (t) then (handleResponse) catch (handleError (t))} function postRetailer (e) {const t = `$ {AGORA_ENDPOINT} / retailers`, r = {method:” POST “, headers: requestHeader, body: JSONstringify (e)}; return fetch (t, r) then (handleResponse) catch (handleError (t))} function putRetailer (e, t) {const r = `$ {AGORA_ENDPOINT} / retailers / $ {e}`, a = {method: ” PUT “, headers: requestHeader, body: JSONstringify (t)}; return fetch (r, a) then (handleResponse) catch (handleError (r))} function deleteRetailer (e) {const t = `$ {AGORA_ENDPOINT} / retailers / $ {e}`; return fetch (t, {method: “DELETE”, headers: requestHeader}) then (handleResponse) catch (handleError (t))} function getAffiliates (e) {const {limit: t = 100, start: r = 0} = e, a = `$ {AGORA_ENDPOINT} / affiliates? limit = $ {t} &start = $ {r} `; return fetch (a) then (handleResponse) then (e => ({total: length, affiliates: e})) catch (handleError (a))} function getAffiliateRetailers (e) {const t = `$ {AGORA_ENDPOINT} / retailers / $ {e} / affiliates`; return fetch (t) then (handleResponse) catch (handleError (t))} function getAffiliateRetailer (e, t) {const r = `$ {AGORA_ENDPOINT} / retailers / $ {e} / affiliates / $ {t}`; return fetch (r) then (handleResponse) catch (handleError (r))} function postAffiliateRetailer (e, t) {const r = `$ {AGORA_ENDPOINT} / retailers / $ {e} / affiliates`, a = {method:” POST “, headers: requestHeader, body: JSONstringify (t)}; return fetch (r, a) then (handleResponse) catch (handleError (r))} function putAffiliateRetailer (e, t, r) {const a = `$ {AGORA_ENDPOINT} / retailers / $ {e} / affiliates / $ {t } `, s = {method:” PUT “, headers: requestHeader, body: JSONstringify (r)}; return fetch (a, s) then (handleResponse) catch (handleError (a))} function deleteAffiliateRetailer (e, t) {const r = `$ {AGORA_ENDPOINT} / retailers / $ {e} / affiliates / $ {t}` ; return fetch (r, {method: “DELETE”, headers: requestHeader}) catch (handleError (r))} function postLocale (e) {const t = `$ {AGORA_ENDPOINT} / locales /`, r = {method: ” POST “, headers: requestHeader, body: JSONstringify (e)}; return fetch (t, r) then (handleResponse) catch (handleError (t))} function patchLocale (e, t) {const r = `$ {AGORA_ENDPOINT} / locales / $ {e}`, a = {method: ” PATCH “, headers: requestHeader, body: JSONstringify (t)}; return fetch (r, a) then (handleResponse) catch (handleError (r))} function handleResponse (e) {try {return ejson () then (t => {if (estatus> = 400) {const e = _get ( t, “messagedetails [0] message”); throw new Error (e)} return t})} catch (e) {throw new Error (emessage)}} function handleError (e) {return t => {throw log ( “warn”, `Failed request to $ {e}`, t), new Error (`request to $ {e} failed`)}} function buildProductsQuery ({search: e =” “, limit: t = 100, start : r = 0, sortDate: a = “”, filters: s, locale: i}) {const n = queryService (PRODUCTS_INDEX), c = s&CSSEETCHARObjectkey (s) length? Filter key object (s) (e => ArrayisArray (s [e]) &&s [e] length): [], o = {}, l = {}; if (prependElasticPrefix (n), e || length || i || queryServiceaddMatchAll (n), i&& (queryServiceaddMust (o, {match: {“locallocal”: i}}), queryServiceaddMust (l, {merchant: {” “: i}})), e) if (isURL (e)) queryServiceaddMust (n, [queryServiceaddNestedObjQuery ({},” merchants “, {match: {” merchantsbuyUrl “: e}})]); else {const t = {}; queryServiceaddShould (t, [{match: {“localesproductId”: e}}, {match: {“localesname”: {query: e, boost: 2}}}]), queryServiceaddMinimumShould (t, 1), queryServiceaddMust (o, _get (t, “requestbody”))} if (length) {const e = {}; cforEach (t => {const r = s [t], a = FILTER_KEY [t], i = {}; a&& (i [`merchants $ {a}`] = r, queryServiceaddShould (e, {terms: i} ))}), queryServiceaddMinimumShould (e, 1), queryServiceaddMust (l, _get (e, “corpsquery”))} return _isEmpty (o) || queryServiceaddMust (n, [queryServiceaddNestedObjQuery ({}, “locales”, _ get (o, “bodyquery”))]), _ isEmpty (l) || queryServiceaddMust (n, [queryServiceaddNestedObjQuery ({}, “merchants”, _ get (l, “corpsquery”))]), queryServiceaddSize (n, t), r> = 0&&queryServiceaddFrom (n ,==), “desc” a || “asc” === a? queryServiceaddSort (n, {updatedAt: {order: a}}): e&&queryServiceaddSort (n, {_ score: {order: “desc”}}), n} function prependElasticPrefix (e) {return eindex = AGORA_ELASTIC_PREFIX? `$ {AGORA_ELASTIC_PREFIX} _ $ {eindex}`: eindex, e} function buildMerchantsAggregation (e = 1e6, t) {const r = queryService (PRODUCTS_INDEX); return prependElasticPrefix (r), queryServiceaddMust (r, {match: {active :! 0}}), t&&queryServiceaddMust (r, queryServiceaddNestedObjQuery ({}, “merchants”, _ get (queryServiceadslocale “{}” {” : t}}), “corpsquery”))), queryServiceaddAggregation (r, {merchants: {nested: {path: “merchants”}, aggs: {name: {terms: {field: “merchantsname”, size: e} }}}}), queryServiceaddSize (r, 0), r} function isURL (e) {return URL_REtest (e)} function filterByLocale (e, t, r = {locales: “US”}) {const a = ArrayisArray ( e); if (_isEmpty (e)) return a? []: {}; const s = [“locales”, “merchants”], i = a? e: [e], n = Objectkeys (r), c = _map (i, e => {const a = Objectassign ({}, e); return _forEach (s, s => {if (Objectkeys (a) includes (s)) {const i = t? _filter (e [s], [“locale”, t]): e [s]; a [s] = i,! ilongueur&&nincludes (s) && (a [s] = (_ filter (e [s], [“locale”, r [s]]) || []) map (e => (eid = null, elocale = t, e)))}}), aname = _get (a, “locales [0] name”, “”), a}); returns a&&clength? c: _get (c, “[0]”, {})} function searchByQueryWithRawResults (e, t) {const r = `// $ {tplacerhôte} $ {80! == tplacerport? `: $ {tplacerport}`: “”} $ {tplacerport} / _ agora / _search`; returns universalRestpost (r, e ,! 0)} function buildMerchantsByUrlQuery (e) {const t = queryService (PRODUCTS_INDEX); return prependElasticPrefix (t), queryServiceaddNestedObjQuery (tquerybody, “merchants”, {match: {“merchantsbuyUrl”: e}}), t} function getAffiliatesByLocale (e, t) {const r = queryService (AFFILIATES_INDEX); return prependElasticPrefix (r), queryServiceaddMust (r, {match: {locale: e}}), queryServiceaddSize (r, 1e3), queryServiceaddSort (r, {name: “asc”}), searchByQueryWithRawResults (r, t) then (e => _ get (e, “keystrokes”, []) map (e => _ get (e, “_ source”, {})))} function buildRetailersQuery ({search: e = “”, limit: t = 50, start: r = 0, direction: a = “asc”, locale: s = “US”}) {const i = queryService (RETAILERS_INDEX); return prependElasticPrefix (i), queryServiceaddMust (i, {match: {locale: s}}), e? queryServiceaddMultiMatch (i, {fields: [“name ^ 2”, “domains”], string: e, type: “phrase_prefix”}) 🙁 queryServiceaddSort (i, {“keyname”: a}), queryServiceaddSize (i , t), r> = 0&&queryServiceaddFrom (i, r)), i} function getRetailersList (e, t) {returns searchByQueryWithRawResults (buildRetailersQuery (e), t) then (e => ({total: _get (e, “hitotal “, 0), retailers: _get (e,” hitsles hits “, []) map (e => _ get (e,” _ source “, {}))}))} function getRetailersByAffiliateId (e, t, r ) {const a = queryService (RETAILERS_INDEX); return e? (prependElasticPrefix (a), queryServiceaddMust (a, {match: {locale: r}}), queryServiceaddMust (a, [queryServiceaddNestedObjQuery ({}, “affiliateRetailers”, {match: {“affiliateRetailersaffiliateId”: e}})]) queryServiceaddSize (a, 1e4), queryServiceaddSort (a, {“keyname”: “asc”}), searchByQueryWithRawResults (a, t) then (e => _ get (e, “keystrokes”, []) map ( e => _ get (e, “_ source”, {})))): Promessereject ()} function getMerchantsList (e) {return searchByQueryWithRawResults (buildMerchantsAggregation (1e6, _get (e, “siteagoraLocale”))), e) then (queryServiceformatAggregationResults ({aggregation name: “merchants”, field: “key”, subfield: “name”}))} function queryRetailersByUrl (e, t, r) {const a = urlParse (e) hostsplit (“www”) join (“”), s = queryService (RETAILERS_INDEX); returns queryServiceaddMust (s, {match: {locale: r}}), queryServiceaddMust (s, {match: {domains: a}}), prependElasticPrefix (s), queryServiceaddSize (s, 10), searchByQueryWithRawResults (s, t) then (e => _ get (e, “keystrokes”, []) map (e => _ get (e, “_ source”, {})))} function queryRetailersByName (e, t, r) {const a = queryService (RETAILERS_INDEX); return queryServiceaddMust (a, {match: {locale: r}}), queryServiceaddMust (a, {match: {“keyname”: e}}), prependElasticPrefix (a), queryServiceaddSize (a, 10), searchByQueryWithRawResults (a , t) then (e => _ get (e, “keystrokes”, []) map (e => _ get (e, “_ source”, {})))} require (208), moduleexportations = { buildProductsQuery: buildProductsQuery, buildMerchantsAggregation: buildMerchantsAggregation, getProducts: getProducts, getProduct: getProduct, postProduct: postProduct, putProduct: putProduct, patchProduct: patchProduct, postProducts, getProduct: patchProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: putProduct: getProduct, postProduct: postProduct, putProduct: putProduct, patchProduct: patchProduct, postProducts: getProduct: getProduct, postProduct: postProduct, putProduct: putProduct, patchProduct: patchProduct, postProduct: patchMerchantMerchant, patchMerchant: patchMerchant t: deleteMerchant, migrateMerchants: migrateMerchants, getRetailers: getRetailers, getRetailersList: getRetailersList, getRetailer: getRetailer, postRetailer: postRetailer, putRetailer: putRetailer, deleteRetailer: deleteRetailer, getRetailersByAffiliateId: getRetailersByAffiliateId, getAffiliates: getAffiliates, getAffiliateRetailers: getAffiliateRetailers, getAffiliateRetailer: getAffiliateRetailer, postAffiliateRetailer: postAffiliateRetailer, putAffiliateRetailer: putAffiliateRetailer, deleteAffiliateRetailer: deleteAffiliateRetailer, isURL: isURL, filterByLocale: filterByLocaleL, patchLocale, patchLocale, postocaleL buildocale: MerchantsByUrlQuery: buildMerchantsByUrlQuery, getAffiliatesByLocale: getAffiliatesByLocale, searchByQueryWithRawResults: searchByQueryWithRawResults, getMerchantsList: getAffiliatesByLocale: getAffiliatesByLocale, searchByQueryWithRawResults: searchByQueryWithRawResults, getMerchantsList: getMerchantsList , queryRetailersByUrlyRetailsName: queryRetailersBy UrlyRetailsName

}) call (this)}) call (this, require (11), “/ services / universal / agorajs”)}, {“9”: 9, “11”: 11, “22”: 22, “23” : 23, “40”: 40, “50”: 50, “51”: 51, “88”: 88, “134”: 134, “208”: 208, “1320”: 1320}];
modules window [“1322”] = [function (require, module, exports) {“use strict”; const _map = require (50), _ mapValues ​​= require (203), _ Reduce = require (91), _ assign = require (138), _get = require (23), _ pickBy = require (139), _ find = require (43), affiliateFields = [“siteShortKey”, “pageUri”, “productId”, “utmMedium”, “utmSource”, “sessionCount”, “format”, “utmCampaign”, “referrer”, “deviceAbbreviation”, “zone”], affiliateSettings = {amazon: {domains: [“amazoncom”, “amazoncouk”], subtagKey: “ascsubtag”, maxLength: 99, delimiter: “standard”, encoder :! 1}, narrativ: {domains: [“shop-linksco /”], subtagKey: “u1”, maxLength: 99, delimiter: “standard”, encode :! 0}, rakuten: {domains: [“clicliensynergiecom / deeplink”, “linksynergyWalmartcom / deeplink”], subtagKey: “u1”, maxLength: 72, delimiter: “standard”, encoder :! 1}, shareasale: {domains: [“shareasalecom”], subtagKey: “afftrack”, maxLength: 99, delimiter: “standard”, encoder :! 1}, skimlinks: {domains: [“goredirigercom”], subtagKey: “xcust”, maxLength: 50, delimiter: “alt”, encode :! 1}, impact: {domains: [], subtagKey: “subId2”, maxLength: 99, delimiter: “standard”, encode :! 1}, avantlink: {domains: [“avantlinkcom”], subtagKey: “ctc”, maxLength: 64, delimiter: “alt”, encode :! 1}, cj: {domains: [“tkqlhcecom”, “jdoqocycom”, “dpbolvwnet”, “anrdoezrsnet”, “kqzyfjcom”], subtagKey: “sid”, maxLength: 64, delimiter: “alt”, encode :! 1, joinBy: “/”, assignBy: “/”, set :! 0, position: “after”, positionKey: “type / dlg /”}, partnership: {domains: [“prfhn”], subtagKey: “pubref”, maxLength: 100, delimiter: “alt”, encode :! 1, joinBy: “/”, assignBy: “:”, set :! 0, position: “before”, positionKey: “destination”}, pepperjam: {domains: [“gopjncom”, “pntraccom”, “pjtracom”, “pjatrcom”, “pntrscom”, “pntracom”], subtagKey: “sid “, maxLength: 100, delimiter:” alt “, encode :! 1}, awin: {domains: [“awin1com”], subtagKey: “pref1”, maxLength: 100, delimiter: “alt”, encode :! 1, positioned :! 0, position: “before”, positionKey: “ued”}}, subtagDictionary = {siteShortKey: “”, pageUri: “p”, productId: “i”, zone: “z”, deviceAbbreviation: “d”, utmSource: “s”, utmMedium: “m”, utmCampaign: “c”, sessionCount: “u”, referrer: “r”, format: “t”}, delimiters = {standard: [“[“, “]”], alt: [“__”, “_”]}; function parseValueFromSubtag (e, t, i) {const a = t [0] and [1], s = isplit (a) [1] || “”; return s? ssplit (t [0]) [0]: null} function parseSubtag (e, t = standard delimiters) {return _pickBy (_mapValues ​​(subtagDictionary, i => parseValueFromSubtag (i, t, e)))} function generateSubtag (e , t, i = standard delimiters, a =! 1) {const s = (e => t => `$ {e [0]} $ {t} $ {e [1]}`) (i); let n = _reduce (affiliateFields, (t, i) => {const a = s (subtagDictionary [i]), n = e [i]; return t (n? an: “”)}, “”); return a&& (n = encodeURIComponent (n)), n} function applySubtagMaxlength (e, t) {var i = t-3 * (edivize (“,”) length-1 esplit (“|”) length-1); return esubstr (0, i)} function getSubtagData ({getters: e, fields: t = [], visitState: i, locals: a, productLink: s}) {let n = {}; return tforEach (t => {n [t] = e [t] &&e [t] ({visitState: i, premises: a, productLink: s})}), n} function parseQuery (e = “”) {return esplit (“&”) reduce ((e, t) => {const i = tsplit (“=”) [0], a = tsplit (“=”) [1]; return void 0! == a&& (e [i] = a), e}, {})} function processSubtagPosition ({url: e, positionKey: t, subtagKey: i, position: a = “after”, subtagString: s, joinBy: n, assignBy: o} = {}) {const [r, l] = split (t), u = `$ {i} $ {o} $ {s}`, g = []; if (“after” === a) {if (! l) return e; const [a, s = “”] = lsplit (`$ {i} $ {o}`), d = sdivided (n) slice (1) join (n); gpush (`$ {r} $ {t}`, u), a&&gpush (a), d&&gpush (d)} if (“before” === a) {const [e, a = “”] = rsplit (` $ {i} $ {o} `), s = adivized (n) slice (1) join (n); gpush (e), s&&gpusher (s), gpush (u, `$ {t} $ {l}`)} returns reduce ((e, t) => {return etranche (-1) === n&& (e = branch (0, -1)), length? [e, t] join (n): t}, “”)} function processSubtag ({getters: e, affiliate: t, url: i, visitState: a = {} , premises: s}) {const n = affiliateFields, o = _get (affiliateSettings [t], “subtagKey”), r = _get (affiliateSettings [t], “maxLength”), l = _get (affiliateSettings [t], ” encode “), u = _get (affiliateSettings [t],” delimiter “), g = _get (affiliateSettings [t],” positioned “,! 1), d = _get (affiliateSettings [t],” position “), c = _get (affiliateSettings [t], “positionKey”), p = _get (affiliateSettings [t], “assignBy”, “=”), m = _get (affiliateSettings [t], “joinBy”, “&”), f = delimiters [u]; let b, y, S = iindexOf (“?”)> = 0? idivize (“?”) pop (): “”, h = parseQuery (S), _ = getSubtagData ({getters: e, fields: n, visitState: a, locals: s, productLink: i}); return o&& (y = h [o] || “”, y = applySubtagMaxlength (b = generateSubtag (_ = _ assign (parseSubtag (y, f), _ pickBy (_)), t, f, l), r) , h [o] = y, S = _map (h, (e, t) => `$ {t} = $ {e}`) join (“&”), i = g? processSubtagPosition ({url: i , positionKey: c, subtagKey: o, position: d, subtagString: y, joinBy: m, assignBy: p}): isplit (“?”) [0] `? $ {S}`), i} function getAffiliate ( e) {const t = Objectkeys (affiliateSettings); return _find (t, t => _ find (affiliateSettings [t] domains, t => ecomprend (ttoLowerCase ()))) || “”} function createSubtagProcessor (e) {return ({url: t, visitState: i, locals: a, affiliate: s}) => (s = getAffiliate (t) || s)? processSubtag ({getters: e, url: t, affiliate: s, visitState: i, premises: a}): “”} moduleexportationsgenerateSubtag = generateSubtag, moduleexportationsgetAffiliate = getAffiliate, moduleexportationscreateSubtagProcessor = createSubtagtagtagProcessor = createSubtagtagtagportrocessorations;
}, {“23”: 23, “43”: 43, “50”: 50, “91”: 91, “138”: 138, “139”: 139, “203”: 203}];
the modules window [“article-navclient”] = [function (require, module, exports) {“use strict”; const dom = require (4), _ throttle = require (37), $ visibility = require (5), $ popup = require (52), $ gtm = require (3), {reportSocial: reportSocial} = require (53) , auth0 = require (12); moduleexports = (t => {either e = domfind (“page header”), i = domfind (“article-content”), r = domtrouver (t, “deepscroll-headline”), o = domtrouver (t , “deepscroll-rubric”), s = domfind (t, “deepscroll-rubric-sponsored”), l = domfind (“article heading article heading”), n = domfind (“# deepscroll_center_divider”), a = domtrouve (“clay paragraph”), d = domtrouver (t, “logo”), c = domtrouver (t, “dyn-cut-logo”), p = domtrouver (t, “article-nav-top” ), u = domtrouver (t, “article-nav-deepscroll”), m = domfind (‘link [rel = “canonical”]’), f = m&&mgetAttribute (“href”), g = domfind (‘meta [property = “og: image”] ‘)? domfind (‘ meta [property = “og: image”] ‘) getAttribute (“content”): “”, h = domfind (‘ meta [property = “og: title”] ‘)? domfind (‘ meta [property = “og: title”] ‘) getAttribute (“content”): “”, y = domfind (t, “sharefacebook link”), w = domfind (t, “link of sharetwitter “), v = domfind (t,” share linkpinter is “), b = tclassListcontient (” header-simple “), x = windowgetComputedStyle (d, null) getPropertyValue (” – targetFlexBasis “), L = windowgetComputedStyle (d, null) getPropertyValue (” – verticalStart “) || 0, C = window getComputedStyle (d, null) getPropertyValue (“- verticalEnd”) || 0, $ =! 1, _ = 55; function k () {_ = parseInt (window getComputedStyle (d, null) getPropertyValue (“- stickyTop”)) || _, C = $ visibilitygetViewportWidth ()> = 1180? window getComputedStyle (d, null) getPropertyValue (“- verticalEndDesktop”) || C: window getComputedStyle (d, null) getPropertyValue (“- verticalEnd”) || C} function S () {$ =! 1, P ()} function P () {let {top: r} = tgetBoundingClientRect (), o = window getComputedStyle (d, null) getPropertyValue (“- baseFlexBasis”), s = ox, l = (_- egetBoundingClientRect () top) / _, n = Mathematicsmax (0, mathematicsmin (1, l)), m = LC-2, f = Mathematicsround (L- (m * n 2)), g = Mathceil (os * n); if (lt? eclassListadd (“header after scrolling”): eclassListremove (“header after scrolling”), pstyletransform = `translateY ($ {C} px)`, ustyletransform = `translateY ($ {C} px) `, void (dstyleflexBasis = x” px “)} windowscrollY> r? tclassListadd (” after-scroll “): tclassListremove (” after-scroll “), windowscrollY> r? eclassListadd (” header after scroll “): eclassListremove (“header after scrolling”), pstyletransform = `translateY ($ {f} px)`, ustyletransform = `translateY ($ {f} px)`, dstyleflexBasis = g “px”, c&& (cstyleflexBasis = g “px “), $ visibilitygetViewportWidth ()> = 1180&&i&&function () {const t = a? $ visibilitygetPageOffset (a) top-70: 0, e = $ visibilitygetPageOffset (i) high, r = Mathmax (e, tmax); windowscrollY, documentcorpsscrollTop)> = r} ()? tclassListaadd (“deep scroll”): tclassListremove (“deep-scroll”)} function V (t) {var e = tcurrentTarget, i = egetAttribute (“href”), r = egetAttribute (“data-handle”), o = $ popupgetPopupClass (eclassList), s = $ visibilityisBelowPrimaryContent (e)? “bottom”: “top”; $ gtmreportNow ({event: “social-share-widget”, clickLocation: s, socialNetwork: o}), reportSocial (o), $ visibilitygetViewportWidth ()> = 768&&o&& (tpreventDefault (), $ ouppopWindow )}! function () {const e = _throttle (P, 30); if (k (), domfindAll (t, “share link”) forEach (t => taddEventListener (“click”, V)), y&& (yhref = “http: // wwwFacebookcom / sharer / sharerphp? u =” f “? utm_source = fb&utm_medium = s3&utm_campaign = sharebutton-t”), w&& (whref = “https: // twittercom / share? text =” encodeURIComponent (h) “&utCaignEANDCHARUtCHANDEANDCHAR =” twutCaignEANDCHARtvia_ButEANDCHARtvia_ButEANDCHARtvia_tvANDCHARtvia_sampEANDCHAR = “&D_tvia_andCHAND__samp3_tvia_candch_tvia_candCHAR_tvANDCHAND_tvia_tvANDCHAND_tvia_tvia_sandCHAND_tvia_tvia_candCHAR_tvia_andch = “wgetAttribute (” data-handle “)), v&& (vhref =” http: // pinterestcom / pin / create / button /? url = “f”? utm_source = pin&utm_medium = s3&utm_campdesaignSSonSSonSSEANDCHARutm_campdesaignSS = “shareEANDCHICARutm_campdesaignSS =” shareEANDCHIC-tCompode ) “&media =” g), b) return; auth0on (“init”, () => {auth0isSubscriber () &&tclassListaadd (“subscriber”)}), windoweaddEventListener (“scroll”, e), windoweaddEventListener (“resize”, S), window “feed (“), resizeListener there? lclassListcontient (“rubric-sponsor-story”) &&s? (oclassListsupprimer (“visible”), sclassListajout (“visible”), stextContent = ltext || ltextContent) 🙁 otextContent = ltext || ltextContent, ohref = lhref || “#”) 🙁 nstyledisplay = “none”, ostyledisplay = “no”); S (), rtextContent = h} ()});
}, {“3”: 3, “4”: 4, “5”: 5, “12”: 12, “37”: 37, “52”: 52, “53”: 53}];
modules window [“nav-search-buttonclient”] = [function (require, module, exports) {“use strict”; const dom = require (4), $ gtm = require (3), {reportSearch: reportSearch} = require (53), openClass = “open”, closeClass = “closed”; moduleexports = (e => {const s = e, t = domfind (e, “nav-search-button-trigger”), n = domfind (e, “nav-search-form”), o = domfind (e, “search-input”); function i () {const e = domfind (“body”); sclassList toggle (closeClass), sclassList toggle (openClass), eclassList toggle (“disabled”), eclassListtoggle (“search-active”)} function c () {i (), sclassListcontient (openClass) &&ofocus ()} function a (e) {! scontient (ecible) &&sclassListcontient (openClass) &CAR&i ()} function =CSSECHANDECHANDESSARkey (e) {! scontient (ecible) &&sclassListcontient (openClass) &CAR&i ()} function =CSSCANDECHANDESSARkeysARkey ()} function =CSSCANDECHANDESSARkey (e) 27 )} function d (e) {epreventDefault (), $ gtmreportCustomEvent ({category: “search”, label: “on =” windowlocationhref, action: oval}), reportSearch ((oval || “”) split (“”) , () => nsubmit ())}! function (e, s, t) {s&&saddEventListener (“click”, c); t&&taddEventListener (“submit”, d); eaddEventL istener (“click”, a), documentaddEventListener (“keydown”, r), eaddEventListener (“touchend”, a), naddEventListener (“submit”, d)} (domfind (“body”), t, domtrouver (e, “nav-search-form submit”))});
}, {“3”: 3, “4”: 4, “53”: 53}];
modules window [“nav-dropdown-buttonclient”] = [function (require, module, exports) {“use strict”; const dom = require (4), visibility = require (5), {reportSearch: reportSearch} = require (53); function getNextSiblings (e) {const t = []; let i = e; for (; i = inextElementSibling;) tpush (i); returns t} function getMainChildren (e, t) {let i = [], n = efirstChild; for (; n = nnextElementSibling;) does not contain (t)? nisSameNode (t) || (i = iconcat (getMainChildren (n, t))): ipush (n); return i} function isMobile () {return visibilitygetViewportWidth () {let t; const i = equerySelector (“nav-dropdown-button-trigger”), n = domfind (“body”), o = domfind (“top”), l = domfind (“confetti list”), s = domfind (” nav-dropdown-button_nymag-homepage “), r = domfind (” header-page header “) || o, c = domfind (‘[data-editable = “main”]’), a = nearest domle (e, “page header”), d = a? aquerySelectorAll (“blue confetti image”): “”, g = a? aquerySelectorAll (“confettisvert image”): “”, u = a? aquerySelectorAll (“confettisorange image”): “”, f = a? aquerySelectorAll (“image of confettisorange2”): “”, m = a? aquerySelectorAll (“confetti rose image”): “”, p = a? aquerySelectorAll (“purple confetti image”): “”, h = a? aquerySelectorAll (“yellow confetti image”): “”, y = equerySelectorAll (“dropdown-nav-search-form”); function b (e) {let t = ecurrentTarget, i = tquerySelector (“nav-search-input”), n = i? ivaleursplit (“”): []; epreventDefault (), reportSearch (n, () => tsubmit ())} iaddEventListener (“click”, () => {initializeHeight (e), v ()}); for (either e = 0, t = ylength; e (function (e) {eclassListremove (“c-right”, “c-rightdown”, “c-left”, “c-leftdown”)}) (e)) }, 500)} ()) 🙁 isetAttribute (“aria-extended”, “true”), t = windowscrollY), eclassList toggle (“closed”), eclassList toggle (“open”), nclassListtoggle (“disabled”), a&&eisSameNode (s)? function () {if (ocontient (e)) {const e = getMainChildren (o, s); S (e), w (o)} if (ccontains (e)) {const e = getMainChildren (c, s); oclassListtoggle (“hidden component”), w (c), S (e)} eclassListtoggle (“open-mobile”)} (): a&&! y&&r&& (w (r), function () {const i = eclassListcontient (“open”)? 0: t; windowscrollTo ({top: i})} ())} function w (e) {S (getNextSiblings (e) )} function S (e) {eforEach (e => {eclassListtoggle (“hidden-component”)})} naddEventListener (“click”, t => {! econtient (tcible) &&eclassListcontient (“open”) &&v ()} ), documentaddEventListener (“keydown”, t => {27 === tkeyCode&&eclassListcontient (“open”) &&v ()})});
}, {“4”: 4, “5”: 5, “53”: 53}];
the moduleswindow [“followclient”] = [function (require, module, exports) {“use strict”; const _find = require (43), $ popup = require (52); DScontroller (“follow”, [function () {function e (e) {this sky = e, this handle = egetAttribute (“data-handle”)} returns eprototype = {events: {click: “openFollow”}, openFollow: function ( e) {var t, n, a = $ popupposition, o = $ popupparams, l = {}, r = {w: 780, h: 500}, s = new a (rw, rh), c = cecielclassList; lhandle = thishandle, rgauche = sgauche, rhaut = stop, n = _find ([{className: “facebook”, url: “https: // facebookcom / {handle}”, network: “Facebook”}, {className: “pinterest” , url: “http: // wwwpinterestcom / {handle}”, network: “Pinterest”}, {className: “instagram”, url: “https: // wwwinstagramcom / {handle}”, network: “Instagram”}, {className: “rss”, url: “http: // feedspower burnercom / {handle}”, network: “RSS”}, {className: “twitter”, url: “https: // twittercom / intent / follow ? screen_name = {handle} &tw_p = followbutton&variant = 20 “, network:” Twitter “}, {className:” snapchat “, url:” https: // wwwSnapchatcom / discover / {handle} “, network:” Snapchat “}], function (e) {return ccontient (eclassName)}), lurl = nURLreplace (” {handle} “, handle), network = network, lname =” Follow “handle” on “the network, t = new o (l, r), open window (taddress, tname, tcharacteristics), epreventDefault ()}}, e}]);
}, {“43”: 43, “52”: 52}];
the modules window [“customer-comments-link”] = [function (require, module, exports) {“use strict”; const dom = require (4), _ get = require (23), _ isFinite = require (110), ajax = require (109); DScontroller (“comments-link”, [function () {var t, e = “http: //” documentdocumentElementgetAttribute (“data-uri”) “html”; function n (n) {var o; (thisel = n, cecoral_talk_root = ngetAttribute (“data-coral-talk”), cecicommentsCount = domtrouver (n, “comments-link-count”), cecicommentsText = domtrouver (n, “comments-link-text”), thisisNavVariation = nclassListcontient (“comments- link_article-nav “), cecutoffCnt = ngetAttribute (” data-cutoffCnt “) || 1e3, t =` $ {cecicoral_talk_root} / api / v1 / graph / ql`, cecishouldRenderCommentStream ()) &&mentCountCount (o = thisFon) ajaxsendReceiveJson ({method: “GET”, url: t ‘? query = {asset (url: “‘ e ‘”) {totalCommentCount}}’, dataType: “json”}, function (t, e) {var n = _get (e, “dataactiftotalCommentCount”, 0); return t? o (t): _ isFinite (n)? void o (null, n): o (“Unexpected Coral-Talk response”)}))} return nprototypeonCommentCountFetched = function (t, e) {if (t) return consolewarn (t); e> 0CSSEAN DCHAR& (ceisNavVariation&&e1? “s”: “”), ceelclassListremove (“no-comments”))}, nprototypeshouldRenderCommentStream = function () {return-1! == eindexOf (“@ published”)}, n}]);
}, {“4”: 4, “23”: 23, “109”: 109, “110”: 110}];
modules window [“head-gtmclient”] = [function (require, module, exports) {“use strict”; const {getCLS: getCLS, getFID: getFID, getLCP: getLCP} = require (142), isProduction = require (10) (); function reportWebVitals (e) {isProduction || consolelog (“reportWebVitals:% O”, e); const t = “string” == typeof enom? eNametoUpperCase (): enom; dataLayerwindow = dataLayerwindow || [], fenêtredataLayerpush ({event: “analyticsEvent”, event_action: t, event_category: “Web Vitals”, event_label: eid, valeur_événement: edelta, eventAction: t, eventCategory: “Web Vitals”, eventLabel: eid, eventNonInt:! 0, eventValue: edelta, nonInteraction:! 0, transport: “balise”})} getCLS (e => {edelta = Mathrond (1e3 * edelta), reportWebVitals (e)}), getFID (e => {edelta = Mathrond (edelta), reportWebVitals (e)}), getLCP (e => {edelta = Mathrond (edelta), reportWebVitals (e)});
}, {“10”: 10, “142”: 142}];
la fenêtremodules [“annonces-concertsclient “] = [function (require, module, exports) {” use strict “; const customMappings = {” crime-assault “:” Power “,” Care Money Product “:” Power “,” féminisme-politique-identité ” : “Power”, “culture-media”: “Culture”, célébrité: “Culture”, vivant: “Style”, mode: “Style”, shopping: “Style”, mariages: “Style”, beauté: “Style” , animaux: “Soi”, “apprentissage de la créativité”: “Soi”, “relations-amis famille”: “Soi”, “santé mentale personnalité comportement social”: “Soi”, “apprentissage de la créativité”: “Soi”, “santé -wellness “:” Self “, parentalité:” Self “,” relations-sexe dating mariage “:” Self “}, striptags = require (54); function installConcertAds () {const e = new URLSearchParams (windowemplacementrechercher)get (“concert_config_url”), t = e || fenêtreconcertConfigUrl; fenêtre_nymPermutive || consolewarn (“ConcertAds initialisant sans Permutive”), fenêtreconcertAds = createConcertAds (), fenêtreconcertAnnoncesloadRemoteConfig (t)alors (function () {fenêtreconcertAnnoncesinstall ()})} function createConcertAds () {const e = getAuthStatus (); let t = getData (“title”), n = windowemplacementhref, i = getData (“section”), o = “”, a = getData (“type”), r = getData (“vertical”); t&& (t = striptags (htmlDecode (t))fractionné (“”)), n = ntranche (nlastIndexOf (“/”) 1); const l = {kw: getKeywords (), network: r, page_type: a, entry_group: i, keywords: t, pn: n}; return “Homepage” === a? o = “homepage”: “Section Page” === a&& (o = (o = windowemplacementchemin)remplacer (/ // g, “”)), i&&-1 === iindexOf (“”) && (o = i), customMappings [i] && (o = customMappings [i]), fenêtreemplacementnom d’hôtecorrespondre(/aws / i) CSSEETCHAR& (lclay_sandbox_env = r), nouvelle fenêtreConcertAds ({cmd: [], emplacements: [], dfpVariables: l, slugPath: “/” oreplace (/ – | – / g, “-“), connecté: “non authentifié”! == e, paywallActive: getPaywallStatus (e)})} function getKeywords () {try {const e = window_nymPermutifarticlemots-clés; renvoyer e&&elongueur> 0&&esome (Boolean)? e: (documentquerySelector (‘meta [name = “keywords”]’) || documentquerySelector (‘meta [property = “article: tag”]’))getAttribute (“contenu”)diviser(“,”)map (fonction (e) {retour etrim ()})} catch (e) {return}} function getData (e) {if (window_nymPermutive) {if (e dans la fenêtre_nymPermutive) fenêtre de retour_nymPermutive [e]; if (fenêtre_nymPermutifarticle&&e dans la fenêtre_nymPermutifarticle) fenêtre de retour_nymPermutifarticle [e]; if (fenêtre_nymPermutifuser&&e dans la fenêtre_nymPermutifutilisateur) fenêtre de retour_nymPermutifuser [e]}} function htmlDecode (e) {var t = documentcreateElement (“div”); retourne tinnerHTML = e, 0 === tchildNodeslongueur? “”: tchildNodes [0]nodeValue} fonction getAuthStatus () {const e = JSONparse (localStoragegetItem (“auth0: profile”)), t = e? e [“http: // nymagcom / app_metadata “]: null; retourne t? thas_subscription? “intitulé”: “sans titre”: “non authentifié”} function getPaywallStatus (e) {const t = getData (“totalCount”) || 0; return Boolean (t> = 3&& “intitulé”! == e)} windowConcertAds? InstallConcertAds (): fenêtreaddEventListener (“concertAdsReady”, installConcertAds);
}, {“54”: 54}];
la fenêtremodules [“dernières-nouvellesclient “] = [function (require, module, exports) {” use strict “; const dom = require (4), lazyLoad = require (96); function lazyLoadImage (a) {const o = domfind (a, “img [data-src]”), d = domfindAll (a, “source [data-srcset]”), e = domle plus proche (a, “result “); if (o&&e) {new lazyLoadLazyLoader (e, o, d)init ()}} function handleLazyLoad (a) {(domfindAll (a, “résultat “) || [])module forEach (lazyLoadImage)}exportations = (a => {handleLazyLoad (a)});
}, {“4”: 4, “96”: 96}];
la fenêtremodules [“coral-talkclient “] = [function (require, module, exports) {” use strict “; const dom = require (4), store = require (116), visibilité = require (5), auth0 = require (12), TALK_AUTH = “talk: auth_token”; let coralEmbed, hasEmbedScriptLoaded =! 1, hasCoralTalkRendered =! 1; function renderComments (e) {if (hasEmbedScriptLoaded&&! hasCoralTalkRendered) {const t = {talk: `$ {eCORAL_TALK_HOST} `, auth_token: getAuthToken (), asset_url: eTALK_ASSET_URL}; hasCoralTalkRendered =! 0, coralEmbed = fenêtrecorailParlezrendre (ecommentStreamContainer, t)}} function getAuthToken (e) {var t = e&&e [“http: // nymagcom / coral_talk “] || auth0getTalkJwt (), i = magasinget (TALK_AUTH); retourne t? i&&t == i? i: (storeset (TALK_AUTH, t), t) 🙁 i&&storeremove (TALK_AUTH), null)} function coralLogin () {coralEmbedlogin (getAuthToken ())} function embedScript (e, t) {let i = documentcreateElement (“script”); itype = “text / javascript”, iasynchrone =! 0, jesrc = e, jeaddEventListener (“load”, () => {hasEmbedScriptLoaded =! 0, renderComments (t)}), documentgetElementsByTagName (“tête”) [0]appendChild (i)} fonction initVerificationMessage () {auth0isAuthenticated () &&auth0rafraichir (); soit e = documentquerySelector (“coral-talk-container “); auth0isAuthenticated () &&! auth0isEmailVerified () && (einsertAdjacentHTML (“beforebegin”, ‘ n n Veuillez vérifier votre compte pour activer les commentaires Vous n’avez pas reçu d’e-mail de vérification? Renvoyer l’e-mail maintenant n ‘), documentquerySelector (“lien d’activation “)addEventListener (“click”, sendVerificationEmail))} function sendVerificationEmail () {let e = documentquerySelector (“coral-talk-verify-address “); return fetch (` https: // $ {fenêtreemplacementhost} / _ user / verification-email? user_id = $ {auth0getUserID ()} `, {méthode:” GET “, headers: {” Content-Type “:” application / json “}})alors (e => e)alors (t => {t&&200 == tstatut? einnerHTML = “L’e-mail de vérification a été envoyé avec succès”: einnerHTML = `$ {tstatusText} `})catch (e => consolelog (e))} function tryScriptEmbedding (e, t) {initVerificationMessage (), hasEmbedScriptLoaded? renderComments (t): embedScript (tEMBED_URL, t)} function addVisibilityListener (e, t) {nouvelle visibilitéVisible (e, {preloadThreshold: 750})on (“preload”, () => tryScriptEmbedding (e, t))} function removeSignInButton (e) {e&&eparentNode&&domremoveElement (e)} fonction init (e) {const t = egetAttribute (“data-coral-talk-host”), i = `$ {t} / static / embedjs`, n = `http: // $ {documentdocumentElementgetAttribute (“data-uri”)}html`, a = “vrai” === egetAttribute (“maintenance des données”), o = -1! == nindexOf (“@ published”), r = equerySelector (“corail-talk-container “), s = equerySelector (“coral-talk-btn-signin “), c = {CORAL_TALK_HOST: t, EMBED_URL: i, commentStreamContainer: r, signInButton: s, TALK_ASSET_URL: n} ;! a&&o&CSSE (on (“init”, () => {addVisibilityListener (e, c), saddEventListener (“clic”, () => auth0showLogin ()), auth0isAuthenticated () &&removeSignInButton (s)}), auth0on (“login”, t => {removeSignInButton (s), getAuthToken (t), visibilitéisElementInViewport (e) &&attemptScriptEmbedding (c), hasCoralTalkRendered&&coralLogin ()})), auth0on (“logout”, () => {magasinsupprimer le module (TALK_AUTH)}))}exportations = init;
}, {“4”: 4, “5”: 5, “12”: 12, “116”: 116}];
la fenêtremodules [“chorégrapheclient “] = [function (require, module, exports) {” use strict “; const cookie = require (41), _ get = require (23), _ omit = require (74), {insertSpeedBumpComponents: insertSpeedBumpComponents} = require (78 ), {insertNewsletterSpeedBumpComponents: insertNewsletterSpeedBumpComponents} = require (79), {generateGrowl: generateGrowl} = require (77), gtm = require (3), {getLocalStorage: getLocalStorage, setLocalStorage: setLocalStorage} = require (14), {reportPaywall } = require (53), moment = require (24), {getClientHistory: getClientHistory, updateClientHistoryWithPageData: updateClientHistoryWithPageData} = require (80), auth0 = require (12), {Scenario: Scenario} = require (75), cidReadyEvent = ” nymcid-set “, cidKey =” nymcid “, isProduction = require (10) (), logger = require (73)Logger (() => getLocalStorage (“show_choreographer_logs”)), {Verdon: Verdon} = require (76), TEST_COHORT_FLAG = “OptimizeCohort”; function displayDebug (e = “”) {if (“droit”! == ediviser(“#”)pop ()) return; const t = _get (fenêtre, “dataLayer [0]userDetails “, {}), o = _get (fenêtre,” dataLayer [0]pageDétailsfeatureTypes “,” “), n = oinclut (“magazine”)? “magazine”: “”, r = ocomprend (“fonctionnalité”)? “en vedette”: “”, i = “Valeur de l’article:” (n || r || “article”), a = _get (JSONparse (localStoragegetItem (“auth0: profile”)), “http: // nymagcom / app_metadata “), l =” Statut d’authentification: “(a?” authentifié “:” non authentifié “), s =” Statut du droit: “(!! a&&ahas_subscription? “intitulé”: “unentitled”), c = Objectclés (_omit (t, “newYorkMediaUserID”))map (e => `$ {e}: $ {t [e]}`), d = documentcorps, g = documentcreateElement (“div”), u = documentcreateElement (“ul”); [i, l, s,c]carte (e => {const t = documentcreateElement (“li”); retourne tclassListadd (“debug-item”), tappendChild (documentcreateTextNode (e)), t})forEach (e => {uappendChild (e)}), uclassListadd (“puces de données”), gclassListadd (“debug-chorégraphe”), gclassListadd (“affichage-debug-data”), gappendChild (u), dappendChild (g)} fonction initializeChoreographer (e) {const t = egetAttribute (“data-site-slug”), o = pageShouldCountAsView (t), n = auth0isSubscriber (); retourne t? getClientId (cidKey, 8e3)alors (e => (enregistreurh1 (“Chorégraphe initialisé”), enregistreurlog (`clientId: $ {e}`), enregistreurlog (`la page compte comme une vue: $ {o}`), fenêtrenymViewsResponse || (o? updateClientHistoryWithPageData (e, t): getClientHistory (e))))then (r => {if (loggergroupe (), enregistreurh2 (“Historique du client”), enregistreurtable (r), enregistreurgroupEnd (), isNCR ()) return; const {scénarios: i, touts: a, testCohort: l = “”} = readJSONFromScript (equerySelector (“script”)); if (! (l === (documentcorpsjeu de données [TEST_COHORT_FLAG] || “”))) return; const s = imap (e => Scénario (Objetassign ({}, e, {historique: r, siteSlug: t, isSubscriber: n})))filtre (e => (enregistreurgroupe (), enregistreurh2 (“Évaluation des scénarios”), enregistreurlog (e), enregistreurgroupEnd (), eshouldShow))réduire ((e, {action: t, min: o, nombre: n}) => {const r = afind (({value: e}) => e === t); renvoie r? (e [rtype] = r, e [rtaper]viewCount = n-o, e): e}, {}); enregistreurg roupe (), enregistreurh2 (“Active Touts”), enregistreurjournal (s), enregistreurgroupEnd (), executeTouts (e, o, s, r)})catch (consoleerreur): consoleerreur (“siteSlug introuvable”)} function documentIncludesComponent (e) {document de retourquerySelector (`[data-uri * =” / $ {e} / “]`)} function pageShouldCountAsView (e) {const t = “strategist” === e, o = [“product”, “product-grid” ]find (e => documentIncludesComponent (e)); return t ||! o} function executeTouts (e, t, o = {}, n) {const {global: r} = n, i = {featureArticleCount: rFeature || 0, magazineArticleCount: rMagazine || 0, standardArticleCount: rArticle || 0, totalArticleCount: rtotal || 0}, a = fenêtreconcertAds, l = fenêtreConcertAds; if (o [“speed-bump”] && (_get (a, “adsBlocked”,! 0)? InsertSpeedBumpComponents (findTemplate (e, “speed-bump”), o [“speed-bump”], i) :unecycle de la vielistenAndPlayback (lévénementsslotsInserted, () => {insertSpeedBumpComponents (findTemplate (e, “speed-bump”), o [“speed-bump”], i)})), o [“newsletter-speed-bump”] && (_get (a , “adsBlocked”,! 0)? insertNewsletterSpeedBumpComponents (findTemplate (e, “newsletter-speed-bump”), o [“newsletter-speed-bump”], i): acycle de la vielistenAndPlayback (lévénementsslotsInserted, () => {insertNewsletterSpeedBumpComponents (findTemplate (e, “newsletter-speed-bump”), o [“newsletter-speed-bump”], i)})), o [“branded-growl”] &&brandedTakeoverTime (o [“branded-growl”]) &&t) enregistreur de retourlog (“should show branded growl”), void growlManager (findTemplate (e, “branded-growl”), {baseTrackingData: i, body: o [“branded-growl”]brandedGrowlBody, contentClass: “branded-conten t”, cta: o [“branded-growl”]brandedGrowlCTA, imageUrl: o [“branded-growl”]imageUrl, lien: o [“branded-growl”]brandedGrowlLink, nom: o [“branded-growl”]nom, scrollDepth: o [“branded-growl”]brandedGrowlScrollDepth, titre: o [“branded-growl”]brandedGrowlTitle, toutType: “branded growl”}, “# branded-growl”); if (t&&o [“content-cliff”]) contentCliff (findTemplate (e, “content-cliff”), o [“content-cliff”] , o [“content-cliff”]viewsLeft, n); else {if (t&&o [“cliff-takeover”]) return / nouvelles de coronavirus | pivot | paywall exclure / itest (fenêtre_nymGtmPagebalises)? void (isProduction&&loggerlog (“Clause de contenu interdite en raison de la correspondance de balise exclue:”, fenêtre_nymGtmPagetags)): void cliffTakeover (findTemplate (e, “paywall-reader-interface”), i, o [“cliff-takeover”]); if (o [“growl-newletter”] ||! o [“promo- growl “]) if (o [” baby-growl “]) babyGrowl (findTemplate (e,” paywall-reader-interface “), i, o [” baby-growl “]); else {if (! o [” warning-growl-2 “]) return o [” warning-growl “] &&shouldWarn ()? (setContentCliffWarningDisplayed (), loggerlog (“devrait afficher un avertissement”), void growlManager (findTemplate (e, “warning-growl”), {contentClass: “warning-content”, title: o [“warning-growl”]warningGrowlTitle, nom: o [“warning-growl”]nom, scrollDepth: o [“warning-growl”]warningGrowlScrollDepth, cta: o [“warning-growl”]warningGrowlCTA, corps: o [“warning-growl”]warningGrowlBody, lien: o [“warning-growl”]warningGrowlLink, baseTrackingData: i, toutType: “warning growl”}, “# warning-growl”)): void 0; warningGrowl (findTemplate (e, “paywall-reader-interface”), i, o [“warning-growl- 2 “])} else growlManager (findTemplate (e,” growl-message “), {contentClass:” promo-content “, title: void 0, name: o [” promo-growl “]nom, scrollDepth: o [“promo-growl”]promoGrowlScrollDepth, cta: o [“promo-growl”]promoGrowlCTA, corps: o [“promo-growl”]promoGrowlMessage, lien: o [“promo-growl”]promoGrowlLink, baseTrackingData: i, toutType: “promo growl”}, “# growl-message”)}} function shouldWarn () {return! contentCliffWarningDisplayed ()} function getContentCliffWarningDisplayedKey () {const e = new Date, t = egetMonth (); return`content-cliff-warning-displayed – $ {egetFullYear ()} – $ {t} `} function contentCliffWarningDisplayed () {const e = getContentCliffWarningDisplayedKey (); return” true “=== getLocalStorage (e)} function setContentCliffWarningDisplayed () {const e = getContentCliffKey (); return” true “=== getLocalStorage (e)} function setContentCliffWarningDisplayed () {const e = getContentCliffKey () e, “true”)} function growlManager (e, {contentClass: t, scrollDepth: o, name: n, title: r, body: i, cta: a, link: l, baseTrackingData: s, toutType: c, imageUrl : d = null}, g = “”) {const u = function () {const e = ` n n n n $ {r} n $ {d? ”:” “} n $ {i} n $ {d? “: “”} n $ {a} n n n n `; retourner le documentcreateRange ()createContextualFragment (e)} (), p = {creative: i, id: c, name: n, position: “growl”}; uquerySelector (“a”)addEventListener (“click”, () => promotionReport (“Click”, s, p)), generateGrowl (e, g, {content: u, scrollDepth: o, onShow: () => promotionReport (“View”, s , p)})} function contentCliff (e, t, o, n) {const {first_visit: r, global: i} = n, a = {totalArticleCount: itotal || 0, standardArticleCount: iArticle || 0, featureArticleCount: iFeature || 0, magazineArticleCount: iMagazine || 0}, {contentCliffBody: l} = t, s = documentimportNode (e,! 0)querySelector (“content-cliff “), c = documentquerySelector (“contenu de l’article> clay-paragraph “), d = {creative: l, id:” content cliff “, name:” Content Cliff “, position:” in-article “}; s&& (cinsertAdjacentHTML (“afterend”, sexternalHTML), require (“content-cliffclient “) (documentquerySelector (“content-cliff “), {contentCliffOptions: t, viewsLeft: o, firstVisit: Number (r), onShow: () => promotionReport (” View “, a, d), onClickCliff: () => promotionReport (” Click ” , a, d)}))} function verdonFosseToutSetter (e, t, o, n, r) {const i = new Verdon ({container: “paywall-reader-interface “, url:” https: // fossenymagcom / fosse / v161 / indexhtml “}), a = etype, l = {email: auth0getEmail (), isAuthenticated: auth0isAuthenticated (), isSubscriber: auth0isSubscriber ()}; nclassListajouter (a), jeune fois (“frame: ready”, () => {isendMessage (“tout: show”, {readerState: l, toutType: a, toutData: e}), r&&isendMessage (“frame: height”)}), ion (“tout: visible”, () => {promotionReport (“View”, t, o)}), ion (“tout: sign-in”, () => {auth0showLogin (fenêtreemplacementhref)}), jeon (“tout: déconnexion”, () => {auth0déconnexion ()}), ion (“tout: ignorer”, () => {nclassListajouter (“ignorer”), jesendMessage (“tout: hide”, {toutType: a, toutData: e})}), ion (“tout: subscribe”, () => {ectaLink = replaceQueryParams (ectaLink), promotionReport (“Click”, t, o), fenêtreouvert (ectaLink, “_ ​​vide”)}), ion (“frame: height”, e => {nstylehauteur = `$ {echarge utilecurrentHeight 10} px`}), ion (“tout: view-account”, () => {fenêtreemplacementhref = “https: // sous-marinsnymagcom / account “})} function promotionReport (e, t, o) {const {creative: n, id: r, name: i, position: a} = o; tevent = `cepromotion $ {e} `, tecommerce = {promoView: {promotions: [{creative: ntrim (), id: r, nom: i, position: a}]}}, gtmreportNow (t), reportPaywall ({creative: ntrim (), eventType: e, id: r, nom: i, position: a})} function babyGrowl (e, t, o) {const n = documentimportNode (e,! 0)querySelector (“paywall-reader-interface “), r = {creative: obabygrowlDescription, id: “baby growl”, nom: “baby growl”, position: “growl”}; documentcorpsappendChild (n), octaLink = obabygrowlCtaLink, octaText = obabygrowlMessage, otitre = obabygrowlDescription, verdonFosseToutSetter (o, t, r, n)} fonction cliffTakeover (e, t, o) {const {cliffTakeoverCTA: n, cliffTakeoverCtaLink: r, cliffTakeoverDescription: i, cliffTakeoverImage: a, cliffTakeoverPromo: l, cliffTakeoverStatus: s : c} = o, d = documentimportNode (e,! 0)querySelector (“paywall-reader-interface “), g = documentquerySelectorAll (“clay-paragraph “), u = {creative: l, id:” content cliff “, name:” Content Cliff “, position:” growl “}, p = {cta: n, ctaLink: r, description: i, image : a, promo: l, statut: s, type: c}; documentcorpsappendEnfant (d), gforEach ((e, t) => {0! == t&&eremove ()}), verdonFosseToutSetter (p, t, u, d,! 0), documentquerySelector (“html”)styleoverflowY = “caché”, documentcorpsstyleposition = “fixed”} function warningGrowl (e, t, o) {const {type: n, warningGrowl2CTA: r, warningGrowl2CtaLink: i, warningGrowl2Description: a, warningGrowl2Image: l, warningGrowl2Promo: s, warningGrowl2Status: c} = o, d = documentimportNode (e,! 0)querySelector (“paywall-reader-interface “), g = {creative: s, id:” warning growl “, name:” Warning Growl “, position:” growl “}, u = {cta: r, ctaLink: i, description: a , image: l, promo: s, statut: c, type: n}; documentcorpsappendChild (d), verdonFosseToutSetter (u, t, g, d,! 0)} function getClientId (e = “”, t = 8e3) {let o = cookieget (e); return o? Promiserésoudre (o): new Promise ((o, n) => {const r = setTimeout (() => {n (`could not find key: $ {e} on cookie after $ {t} ms`)}, t); fenêtreaddEventListener (cidReadyEvent, () => {clearTimeout (r), o (cookieget (e))})})} function readJSONFromScript (e) {try {return JSONparsiinnerHTML)} catch (e) {return {touts: [], scénarios: []}}} function findTemplate (e, t = “”) {const o = e&&equerySelector (`[data-template-id =” $ {t} “]`); return o&&ocontent} function isNCR () {return / [? &] source = ncr /test (emplacementsearch)} function brandedTakeoverTime (e) {const {startTime: t, endTime: o, startDate: n, endDate: r} = e, i = nconcat (“”, t), a = rconcat (“”, o), l = moment (i), s = moment (a); moment de retour ()isBetween (l, s)} function OptimizeDebugger () {return new Promise (e => {const t = windowemplacementsearch || “”; if (t) {const o = new URLSearchParams (t), n = oget (“nom-attribut-d’optimisation”) || “”, r = oget (“optimiser-valeur-attribut”) || “”, i = oget (“optimiser-délai”) || 0, a = oget (“optimiser-cookie”) ||! 1; setTimeout (() => {a&& (documentcookie = randomNymcid ()), documentcorpssetAttribute (`data – $ {n}`, r), e ()}, i)} else e ()})} function randomNymcid () {return`nymcid = $ {(() => ([1e7] – 1e3 -4e3 -8e3 -1e11)remplacer (/ [018] / g, e => (e ^ 16 * cryptogetRandomValues ​​(nouveau Uint8Array (1)) [0] >> e / 4)toString (16) [0])) ()} `} function replaceQueryParams (e) {const t = windowemplacementsearch || “”; if (t) {const o = new URLSearchParams (t); if (einclut (“?”)) {const t = esplit (“?”), n = new URLSearchParams (t [1]); for (soit oentrées ()) nset (e [0], e [1]); e = `$ {t [0]}? $ {ntoString ()} `} else e =` $ {e}? $ {otoString ()} `} return e} moduleexportations = (e => nouvelle promesse (e => {auth0on (“init”, () => {e ()})})alors (() => OptimizeDebugger ())then (() => {displayDebug (fenêtreemplacementhref), initializeChoreographer (e)}));
}, {“3”: 3, “10”: 10, “12”: 12, “14”: 14, “23”: 23, “24”: 24, “41”: 41, “53”: 53 , “73”: 73, “74”: 74, “75”: 75, “76”: 76, “77”: 77, “78”: 78, “79”: 79, “80”: 80, ” content-cliffclient “:” content-cliffclient”}];
la fenêtremodules [“grognementclient “] = [function (require, module, exports) {” use strict “; require (140); const _some = require (62), dom = require (4), localStorageKeyRoot =” slideout – “, {getLocalStorage: getLocalStorage , setLocalStorage: setLocalStorage} = require (14); moduleexportations = ((e, t) => {const {contenu: o, onShow: s, scrollDepth: r = 50, ignorable: i =! 1} = t, n = Number (r || egetAttribute (“data-display-at-page-scroll-pourcentage”)), a = domtrouver (e, “modal “), l =” slideout- “(tid || egetAttribute (“id”)), c = getLocalStorage (l); fonction d () {aclassListadd (“hidden”)} fonction g () {setLocalStorage (l,! 0), d ()} i&&c? eremove () 🙁 o&&equerySelector (“[data-content]”)appendChild (o), n&&function (e = 50) {const t = new IntersectionObserver (e => {_ some (e, “isIntersecting”) && (astyletop = “hériter”, aclassListremove (“hidden”, “initial”), “function” == typeof s&&s (), tdésobserver (a))}); astyletop = `$ {documentquerySelector (“corps”)scrollHeight / (100 / e)} px`, tobserver (a)} (n), equerySelector (“ignore-modal “)addEventListener (“clic”, () => i? g (): d ()), eaddEventListener (“grogner: cacher”, d), eaddEventListener (“grogner: rejeter”, g))});
}, {“4”: 4, “14”: 14, “62”: 62, “140”: 140}];
la fenêtremodules [“ralentisseurclient “] = [fonction (require, module, exports) {” use strict “; const gtm = require (3), visibilité = require (5); moduleexports = ((e, i) => {if (! i ||! e) return; const {nom: o, speedbumpDescription: r, speedbumpMessage: t, speedbumpLink: n, baseTrackingData: s} = i, c = new visibilitéVisible (e, {shownThreshold:5}); equerySelector (“la description”)innerHTML = r, equerySelector (“lien-promo “)innerHTML = t, equerySelector (“lien-promo “)href = n, eclassListremove (“réduit”), con (“montré”, function () {if (visibilitéisElementNotHidden (e)) {soit e = s; eevent = “cepromotionView “, eecommerce = {promoView: {promotions: [{name: o, creative: r, id: “speed bump”, position: “in-article”}]}}, gtmreportNow (e), cdétruire ()}}), equerySelector (“lien-promo “)addEventListener (“clic”, function () {let e = s; eevent = “cepromotionCliquez sur “, eecommerce = {promoClick: {promotions: [{name: o, creative: r, id: “speed bump”, position: “in-article”}]}}, gtmreportNow (e)})});
}, {“3”: 3, “5”: 5}];
la fenêtremodules [“newsletter-speed-bumpclient “] = [function (require, module, exports) {” use strict “; const {loadRecaptcha: loadRecaptcha} = require (107), _ isEmpty = require (88), _ set = require (108), _ kebabCase = require (81 ), gtm = require (3), auth0 = require (12), visibilité = require (5), COMPONENT_NAME = “newsletter-speed-bump”, EMAIL_VALID_REGEX = / ^ (?: (?: [^ () [ ] \,;: s @ “] (?: [^ () [] \,;: s @ “]) *) | (” “)) @ (?: (?: [[0-9] {1,3} [0-9] {1,3} [0-9] {1,3} [0-9] {1,3}]) | (?: (?: [A-zA-Z -0-9] ) [a-zA-Z] {2,})) $ /, LOCAL_STORAGE_KEY_NAME = “newsletterSpeedBumpSignUpStatus _”, MAX_EMAIL_LENGTH = 50; function setClass (e, t) {eclassListadd (t)} function getRequestUrl (e) {return egetAttribute (“action”)} fonction getPageType (e) {const t = e? egetAttribute (“content”): “”; return _kebabCase (t)} function getPayloadObject (e, t, r, s) {const n = {}; return _set (n, `varssource _ $ {t} `,` $ {COMPONENT_NAME} _ $ {s} `), nemail = r, nlistes = {}, nlistes [t] =! 0, nrecaptcha = e, nsignuppage = `$ {documentemplacementhref} _ $ {t} `, n [` source _ $ {t} `] =” newsleter_speedbump “, n} moduleexports = ((e, t) => {if (! t ||! e) return; if (“success” === windowstockage localgetItem (`$ {LOCAL_STORAGE_KEY_NAME} $ {tnewsletterSpeedBumpNewsletterId} `)) return void eremove (); const {baseTrackingData: r, nom: s, newsletterSpeedBumpCtaCopy: n, newsletterSpeedBumpDescription: i, newsletterSpeedBumpHeadline: a, newsletterSpeedBumpNewsletterId: o, newsletterSpeedBumpThankYouMessage: c, RECAPTCHA_PUBLIC_KEY, u}getEmail (), d = equerySelector (“description “), p = equerySelector (“contributionemail “), m = equerySelector (“message d’erreur “), h = equerySelector (“forme “), E = equerySelector (“form-container “), y = equerySelector (“form-recaptcha-container “), g = equerySelector (“titre “), v = equerySelector (“conteneur “), S = equerySelector (“contributionnewsletterId “), _ = equerySelector (“recaptcha-wrapper “), L = equerySelector (“contributionsoumettre “), w = equerySelector (“text-container “), q = nouvelle visibilitéVisible (e, {shownThreshold:5}); u&& (premoveAttribute (“obligatoire”), eclassListadd (“connecté”)), dinnerHTML = i, ginnerHTML = a, Svaleur = o, Lvaleur = n, qon (“montré”, function () {if (visibilitéisElementNotHidden (e)) {const e = r; eevent = “cepromotionView “, eecommerce = {promoView: {promotions: [{creative: `$ {a} | $ {i} `, id:” accélération de la newsletter “, nom: s, position:” in-article “}]}}, gtmreportNow (e), qdétruire ()}}), paddEventListener (“focus”, () => {_classListremove (“hidden”)}), haddEventListener (“soumettre”, t => {tpreventDefault (); const s = new XMLHttpRequest, n = u || equerySelector (“contributione-mail”)valeur, i = getPageType (documentquerySelector (‘meta [nom = “type”]’)); u ||! (nlongueur> = 50) &&EMAIL_VALID_REGEXtest (n)? loadRecaptcha (l, “newsletterSubmit”,! 0)alors (a => {sopen (“POST”, getRequestUrl (h),! 0), ssetRequestHeader (“Content-Type”, “application / json; charset = UTF-8”), saddEventListener (“load”, s => {const a = scurrentTarget || scible; si (aétat> = 200&&astatussetClass (e, “succès”)), [d, E, m, _]forEach (e => setClass (e, “hidden”)), ginnerHTML = creplace (“{{email}}”, n), minnerHTML = “”; const s = JSONanalyser (unréponse), l = _isEmpty (ssailthruIds)? “”: Objetvaleurs (ssailthruIds) [0], u = r; uevent = “ceacheter “, uecommerce = {achat: {actionField: {id: l, revenu: “000 “}, produits: [{category:” inscription à la newsletter “, nom: Svaleur, quantité: 1, variante: `$ {COMPONENT_NAME} – $ {i}`}]}}, gtmreportNow (u), setTimeout (() => {eclassListadd (“hidden”)}, 5e3), tpreventDefault ()} sinon minnerHTML = “* Une erreur s’est produite Veuillez réessayer”}), saddEventListener (“erreur”, () => {mclassListsupprimer (“caché”), minnerHTML = “* Une erreur s’est produite Veuillez réessayer”}), senvoyer (JSONstringify (getPayloadObject (a, o, n, i))), tpreventDefault ()}): minnerHTML = “* Veuillez saisir une adresse e-mail valide”})});
}, {“3”: 3, “5”: 5, “12”: 12, “81”: 81, “88”: 88, “107”: 107, “108”: 108}];
la fenêtremodules [“content-cliffclient “] = [function (require, module, exports) {” use strict “; const auth0 = require (12), isProduction = require (10) (), logger = require (73)Enregistreur (() =>! IsProduction); moduleexportations = ((t, e) => {si (! e) retourne; enregistreurgroupe (), enregistreurh2 (“Content Cliff”); const {contentCliffOptions: o, firstVisit: n, onShow: r, onClickCliff: i} = e, c = 300, l = Number (documentquerySelector (“[data-components-count]”)getAttribute (“data-components-count”)), u = 3, s = [“taboola”], a = “# content-cliff”, f = t, d = function () {let t = 0; return documentquerySelectorAll (“[data-word-count]”)forEach (fonction (e) {t = nombre (egetAttribute (“data-word-count”) || 0,10) || 0}), t} (), g = function (t, e) {function o (t) {return Mathrond (tgetTime () / 1e3 / 60)} const n = o (t), r = o (e); return nr} (new Date, new Date (n)) {}, show: () => {r () , function () {(p = function (t = “”) {retourner le documentquerySelectorAll (`$ {t} ~ *`)} (a))forEach (t => tremove ()), function () {const {contentCliffStatus: e, contentCliffPromo: n, contentCliffCTA: r, contentCliffURL: c} = o, l = tquerySelector (“[data-content-cliff-status]”), u = tquerySelector (“[data-content-cliff-promo]”), s = tquerySelector (“[data-content-cliff-cta]”); s&&ssetAttribute (“href”, c), s&&sinsertAdjacentHTML (“afterbegin”, r), l&&linsertAdjacentHTML (“afterbegin”, e), u&&uinsertAdjacentHTML (“afterbegin”, n), s&&saddEventListener (“clic”, i)} (), fclassListremove (“réduit”), e = s, eforEach (t => {const e = documentquerySelector (`[data-uri * =” / $ {t} / “]`); e&&esupprimer ()}), maddEventListener (“clic”, () => auth0showLogin ()); var e} ()}} [function () {if (dl) return loggerlog (`article word count $ {d} était trop court pour la falaise`), enregistreurlog (`le nombre de composants d’article est inférieur à $ {u} et n’est pas éligible pour la falaise`),” noop “; if (g&&isProduction) return” noop “; g&&loggerlog (`La première vérification de session était $ {g}! Montrant quand même la falaise: isProduction => $ {isProduction}`); if (/ coronavirus news | pivot | paywall exclude / itest (fenêtre_nymGtmPagetags)) return isProduction&&loggerlog (“Clause de contenu interdite en raison de la correspondance de balise exclue:”, fenêtre_nymGtmPagetags), “noop”; retourne “show”} ()], m = tquerySelector (“content-cliff-login “); let p = []; renvoyer le journallog (`ne devrait pas démarrer en production en raison de la fenêtre de première session de 30 minutes: $ {g}`), enregistreurgroupEnd (), auth0on (“login”, () => {fclassListadd (“réduit”), (p = tableauprototypetrancheappel (p, 0)sens inverse())forEach (t => finsertAdjacentElement (“afterend”, t)), p = []}), “function” == typeof h? h (): void 0});
}, {“10”: 10, “12”: 12, “73”: 73}];
la fenêtremodules [“annonceclient “] = [function (require, module, exports) {” use strict “; const _forEach = require (40), _ max = require (42), _ find = require (43), _ includes = require (44), $ visibilité = require (5), dom = require (4), MAX_MOBILE_RE = / [[0-9] {1,3} – (768 | 600) /, MAX_TABLET_RE = / [0-9] {3} – (1024 | 1180) /, DESKTOP_RE = / (1024 | 1180) -plus /, AD_NAME_SELECTOR = ‘[data-name ^ = “/ 4088 /”], [data-name ^ = “/ 172968584 /”]’; var flaggedComponentsOnPage = function () {var e, t = documentquerySelector (“article-content “), n = []; renvoie t&&_forEach ([‘article-sidebar [data-width = “large”] ‘], fonction (a) {e = tquerySelectorAll (a), _ forEach (e, fonction (e) {npush (e)})}), n} (); function getElementsVerticalOverlap (e, t) {var n = egetBoundingClientRect (), a = tgetBoundingClientRect (); return! (nhaut> abas || nrightadroite)? abas-nhaut: 0} function getElementsOverlapAmount (e, t) {var n, a = []; return _forEach (t, function (t) {n = getElementsVerticalOverlap (e, t), apush (n)}), _ max (a)} function getNYMagAdChannel (e) {var t = “”; switch (e) {case “informations sur l’entreprise”: t = “société”; break; case “new york guide les choses & to do “: t =” to-do “; break; case” other “: t = e; break; case” guides sponsorisés “: t =” s-guides “; break; case” urbanist “: t =” urbanist “; break; default: t =” “} return t} function appendSectionToDfpAds () {var e, t, n, a = documentquerySelector (“meta [property = ‘og: site_name’]”), o = documentquerySelector (“article [data-content-channel]”), i = documentquerySelectorAll (AD_NAME_SELECTOR); a&& (e = acontenu), o&& (t = ogetAttribute (“canal de contenu de données”)toLowerCase ()), t&& “New York Magazine” === e&& (n = getNYMagAdChannel (t)), n&&appendToAdd (i, n)} fonction appendPageTypeToDfp (document)querySelector (“corps> div “) || {}, t = documentquerySelector (“body”) || {}, n = e&&eclassList, a = n&&nlongueur?[n]: [], o = _find (a, e => einclut (“fonctionnalité”)), i = documentquerySelectorAll (AD_NAME_SELECTOR); n&& (o? appendPageNumberPositionToDfpAds (i, “Feature”): ncontient (“lede-gallery-content”)? appendPageNumberPositionToDfpAds (i, “Image_Gallery”): tclassListcontains (“one-column-layout”)? appendPageNumberPositionToDfpAds (i, “One_Column_Article”): ncontient (“article-content”) &&appendPageNumberPositionToDfpAds (i, “Standard_Article”))} function appendPageNumberPositionToDfpAds (e, t) {const n = [“528×379”, “1100×200”, “1×1”]; soit ], o = domtrouve(“ad-splash “), i = domtrouver (section “wrapper “), r = domtrouve(“secondaire “), d = domtrouve(“bas “), s = domtrouve(“primary “), c = {IA: {xsMobile: {normal: 1, grid: 1}, mobile: {normal: 1, grid: 1}, tablet: {normal: 1, grid: 1}, desktop: {normal : 1, grille: 1}}, BA: {xsMobile: {normal: 1, grille: 1}, mobile: {normal: 1, grille: 1}, tablette: {normal: 1, grille: 1}, bureau: {normal: 1, grille: 1}}}; aforEach (e => {soit a, l = “”, u = ebase de donnéestailles, m = eclassListvaleur, p = _find (n, e => ucomprend (e)), g = eparentElementclassListcontient (“image-gallery-mobile-grid-ad”); if (u&&! p || esetAttribute (“nom-données”, egetAttribute (“data-name”) “/” t), i&&u&&! p) {let n, u; if (o&&ocontient (e)? l = “LB”: i&&icontient (e)? l = “IA” 🙁 r&&rcontient (e) || d&&dcontient (e) || s&&scontient (e)) && (l = “BA”), c [l]) {if (! (u = checkForAdViewport (m))) return; g? (n = c [l] [u]grille, c [l] [u]grille) 🙁 n = c [l] [u]normal, c [l] [u]normal), a = n {esetAttribute (“nom-données”, egetAttribute (“data-name”) “/” t)})} function injectGoogleScripts () {var e = documentcreateElement (“script”), t = documentcreateElement (“script”), n = documentcreateDocumentFragment (); esrc = “// wwwgoogletagservicescom / tag / js / gptjs “, easync = “async”, tsrc = “// pagead2googlesyndicationcom / pagead / js / adsbygooglejs “, tasync = “async”, nappendChild (e), nappendChild (t), documentgetElementsByTagName (“corps”) [0]appendChild (n)} appendSectionToDfpAds (), appendPageTypeToDfpAds (), injectGoogleScripts (), DScontroller (“ad”, [“adService”, function (e) {return function (t) {var n, a, o, i = tgetAttribute (“data-offload”), r = new $ visibilitéVisible (t, {preloadThreshold: i? WindowinnerHeight / 4: 200}), d =! 1; fonction s () {fenêtreinnerWidth> = 1180&&tparentElementclassListcontient (“ad-repeat”) &&flaggedComponentsOnPagelength&& (a = getElementsOverlapAmount (t, flaggedComponentsOnPage), o = parseInt (tparentElementgetAttribute (“data-gap”), 10), tstylemarginTop = o 30 a “px”)} fonction c () {s (), erefresh (n)} fonction l () {esupprimer (n), d || (d =! 0, rsur (“montré”, c))} documentquerySelector (‘script [data-name = “concert-ads”]’) || (n = ecréer (t), rvisibilité && $isElementNotHidden (t)? (eaddToPageLoadQueue (n), i&&ron (“hidden”, l)) 🙁 ron (“précharge”, fonction () {! nslot&& $ visibilitéisElementNotHidden (t) && (s (), eload (n))}), i&&ron (“hidden”, l)), ceadData = n)}}]);
}, {“4”: 4, “5”: 5, “40”: 40, “42”: 42, “43”: 43, “44”: 44}];
la fenêtremodules [“sticky-listclient “] = [function (require, module, exports) {” use strict “; const dom = require (4), $ gtm = require (3), _ get = require (23), stickyContainer = require (” sticky-containerclient “); DScontroller (“sticky-list”, [“$ window”, function (t) {var e = require (218), i = 40; function s (s) {let n, r = function (t) {let s = t [0], n = 0, r = ehauteur (cecontentArea), h = thiszone de contenuoffsetHeight; if (thisconteneursconteneurslongueur) {si (scibleoffsetHeight) {let t = thiséruptionsfindIndex (t => (function (t, e) {return t! == documentcorpsCSSEETCHARCSSEETCHARtcontient (e)}) (t, scibleparentElement)); if (t> -1&&ceciévasions [t]) {let e = thisévasions [t]offsetHeight i; ceconteneurs [t]stylemarginBottom = `$ {e} px`}} if (h! == thiscurrentHeigh) {const t = erect (cerightRail, cecicontentArea); cecurrentHeight = h, cecirightRailstylehauteur = r-ttop-a (cerightRail) “px”, ceciéruptionsforEach ((s, r) => {soit a = erect (s, cecontentArea), h = eintersection (a, t); si (h) {soit e, s = htop-ttop-n; n = s hhauteur i, ceciconteneurs [r]styleheight = `$ {s} px`, ceciconteneurs [r]styleminHeight = `$ {s} px`, e = ceciévasions [r]offsetHeight je, ceconteneurs [r]stylemarginBottom = `$ {e} px`}})}}}lier (ceci); tinnerWidth {let n = _get (e, “ensemble de donnéesnom “,” “), r = ntranche (-1) || “1”, a = [“Image_Gallery”, “Standard_Article”, “Feature”, “One_Column_Article”]trouver (t => ncomprend (t)) || “”; cerightRailparentElementclassListcontient (“tertiaire”) &&a&& (ebase de donnéesname = parseInt (i, 10) se === t) || 0; retourne itranche (s 1)réduire ((t, e) => t (eoffsetHeight || 0), 0) || 0} retourne sprototype = {setPins: function () {const t = erect (cerightRail, cecicontentArea), i = ehauteur (cecontentArea), s = i-ttop-a (cerightRail); soit n, h, o, l; if (thispopulatePinsList (), s1&&tclassListadd (“multi-enfants”), l = 0; l {const t = Arrayde (eenfants); laissez o, a, i = 0; for (; i {handleLazyLoad (a)});
}, {“4”: 4, “96”: 96}];
la fenêtremodules [“articleclient “] = [function (require, module, exports) {” use strict “; const $ visibilité = require (5), $ gtm = require (3), ImageZoom = require (56), $ sentry = require (57) ; DScontrôleur (“article”, [fonction () {var e = 40; fonction t (t) {const i = documentquerySelector (“emballage> tertiaire “), n = tquerySelector (“lede-image-wrapperà fond perdu “), r = tquerySelector (“attributionà fond perdu “), o = tquerySelector (“article-en-tête “), l = o? oquerySelector (“img”): null, c = function () {let t = ogetBoundingClientRect ()hauteur; n&& (t = ngetBoundingClientRect ()hauteur 25, r&& (t = rgetBoundingClientRect ()hauteur)), istylepaddingTop = t e “px”}; i&&o&& (fenêtreinnerWidtht (e)), $ sentinelleinitializeIDListeners ()}}]);
}, {“3”: 3, “5”: 5, “56”: 56, “57”: 57}];
la fenêtremodules [“balisesclient “] = [function (require, module, exports) {” use strict “; const _forEach = require (40); DScontroller (“tags”, [function () {function e (e) {thisel = e} retourne eprototype = {événements: {“aplus cliquez sur “:” showAll “}, showAll: function (e) {var t = ecible, o = cecielquerySelectorAll (“licaché “); _ forEach (o, function (e) {eclassListremove (“hidden”)}), tparentNoderemoveChild (t), epreventDefault ()}}, e}]);
}, {“40”: 40}];
la fenêtremodules [“newsletter-flex-textclient “] = [function (require, module, exports) {” use strict “; const dom = require (4), _ kebabCase = require (81), _ isEmpty = require (88), _ set = require (108), permutive = require (53), cmptName = “newsletter-flex-text”, {loadRecaptcha: loadRecaptcha} = require (107), gtm = require (3), EMAIL_VALID_REGEX = / ^ (?: (?: [^ () [ ] \,;: s @ “] (?: [^ () [] \,;: s @ “]) *) | (” “)) @ (?: (?: [[0-9] {1,3} [0-9] {1,3} [0-9] {1,3} [0-9] {1,3}]) | (?: (?: [A-zA-Z -0-9] ) [a-zA-Z] {2,})) $ /, MAX_EMAIL_LENGTH = 50; DScontroller (cmptName, [“$ window”, function (e) {function t (t) {thisel = t, ceemail = domtrouver (t, “email “), cecititre = domtrouver (t, “title “), cedescription = domtrouver (t, “description “), cesource = domtrouver (t, “source “), ceforme = domtrouver (t, “formulaire “), cereturnMsg = domtrouver (t, “return-message “), cecinewsletterId = domtrouver (t, “newsletterId “)valeur, ceExpandTerms = domtrouver (t, “termes-étendus “), cerecaptchaKey = ceciformebase de donnéesrecaptchaPublicKey, celocal = elocalStorage, cesession = esessionStorage, ceapiEndpoint = ceciformebase de donnéesposte, cedisplayComponent ()} retourne tprototype = {getPageType: function () {var e = domfind (‘meta [nom = “type”]’), t = e? egetAttribute (“content”): “”; return _kebabCase (t)}, getPayloadObject: function (e) {var t = {}; return temail = cecie-mailvaleur, trecaptcha = e, _set (t, `varssource _ $ {cecinewsletterId} `,` $ {cmptName} _ $ {cecigetPageType ()} `), tlistes = {}, tlistes [cecinewsletterId] =! 0, t}, displayComponent: function () {var t = this, s = “success” === thislocal [“signUpColumnStatus” thisnewsletterIdtoString ()], i = “true” === thisformegetAttribute (“affichage des données après inscription”); if (! s || i) {if (thiselclassListremove (“initialement caché”), ceformeclassListremove (“initialement caché”), setTimeout (function () {telclassListremove (“opacity-zero”)}, 100), cecisession) essayez {cecisessionsetItem (“signUpColumn”, “affiché”)} catch (e) {}} else telparentElementclassListadd (“newsletter-collapsed”); eaddEventListener (“décharger”, function () {tsessionremoveItem (“signUpColumn”)})}, événements: {“formulaire soumettre “:” submitForm “,”e-mail: “clearMsg”, “terms-button click “:” showTerms “}, clearMsg: function () {thisreturnMsginnerHTML = “”}, showTerms: function () {thisTermes élargisclassListajouter (“actif”), ceciTermes élargissetAttribute (“aria-hidden”, “false”)}, submitForm: function (e) {let t = thisformegetAttribute (“data-error-msg”); epreventDefault (), cecie-mailvaleurlongueur> = 50 ||! EMAIL_VALID_REGEXtest (cee-mailvalue)? (t&& “”! == t || (t = “* Veuillez saisir un e-mail valide”), cereturnMsginnerHTML = t, cecireturnMsgfocus ()): loadRecaptcha (cerecaptchaKey, “newsletterSubmit”,! 0)alors (e => chercher (ceapiEndpoint, {méthode: “POST”, en-têtes: {“Content-Type”: “application / json”}, corps: JSONstringify (cegetPayloadObject (e))})alors (e => ejson ())puis (e => {e&&eok? çasuccessHandle (e): cecierrorHandle ()})catch (e => cecierrorHandle (e)))}, reportGTM: function (e) {const t = _isEmpty (esailthruIds)? “”: Objetvaleurs (esailthruIds) [0]; soit s = {événement: “eecachatsecommerce = {achat: {actionField: {id: t, revenu: “000 “}, produits: [{category:” inscription à la newsletter “, quantité: 1, nom: thisnewsletterIdtoString (), variante: `$ {cmptName} – $ {thisgetPageType ()} `}]}}, gtmreportNow (s)}, errorHandle: function (e) {thisreturnMsgclassListajouter (“erreur”), cecireturnMsginnerHTML = e || “Une erreur s’est produite Veuillez réessayer”,cettereturnMsgfocus ()}, successHandle: function (e) {let t = this, s = thisformegetAttribute (“data-success-title-msg”), i = thisformegetAttribute (“data-success-description-msg”); if (s&& “”! == s || (s = “Merci, tout est prêt!”), i&& “”! == i || (i = “Vous recevrez la prochaine newsletter dans votre boîte de réception”),la fenêtrefbq&&windowfbq (“track”, “Lead”), permutivereportNewsletterSubscribe ([thisnewsletterId]), cereportGTM (e), ceTitreinnerHTML = s, cecila descriptioninnerHTML = i, cecireturnMsgfocus (), ceelclassListadd (“succès”), setTimeout (function () {telclassListadd (“opacity-zero”), setTimeout (function () {telclassListadd (“initialement caché”), telparentElementclassListadd (“newsletter-collapsed”)}, 1e3)}, 5e3), cecilocal) essayez {cecilocalsetItem (“signUpColumnStatus” cecinewsletterIdtoString (), “succès”)} catch (e) {}}}, t}]);
}, {“3”: 3, “4”: 4, “53”: 53, “81”: 81, “88”: 88, “107”: 107, “108”: 108}];
la fenêtremodules [“memo-pixelclient “] = [function (require, module, exports) {” use strict “; (() => {var e = documentcreateElement (“script”); easynchrone =! 0, etype = “texte / javascript”, esrc = documentemplacementprotocole “// d16xpr36wrmcmkcloudfrontnet / js / mémojs “, (documentgetElementsByTagName (“head”) [0] || documentgetElementsByTagName (“corps”) [0])appendChild (e)}) (), moduleexportations = (() => {});
}, {}];
la fenêtremodules [“liens-affiliésclient “] = [function (require, module, exports) {” use strict “; const dom = require (4), _ includes = require (44), _ startsWith = require (48), globalClick = require (47), visit = require (46), productSubtags = require (49); var exclusHostnames, skimlinksBaseUrl, skimlinksId, visitState, productUrl, ignoreDataAttribute = “data-affiliate-links-ignore”, article = fenêtredocumentquerySelector (“article”), isSponsored = article&& “Sponsor Story” === articlegetAttribute (“type de données”); function setExcludedHostnames (t) {hiddenHostnames = (tgetAttribute (“noms-d’hôtes-exclus-données”) || “”)toLowerCase ()split (“,”)} function isSkimLink (t) {return !! (skimlinksId = tgetAttribute (“data-skimlinks”))} function isExcluded (t) {return _includes (hiddenHostnames, t) || _startsWith (t, “www”) &&_includes (noms d’hôte exclus, tslice (4)) || isSponsored} function isUrlProtocol (t) {return 0! == tindexOf (“mailto:”) &&0! == tindexOf (“javascript:”)} function getTargetHostname (t) {return (tnom d’hôte || thôte || thref || “”)toLowerCase ()} function convertSkimlinkUrl (t) {return (skimlinksBaseUrl = skimlinksBaseUrl || skimlinksId? “// allerredirigercom /? xs = 1&id = “skimlinksId” &sref = “encodeURIComponent (fenêtreemplacementhref) “&url =”: void 0) &&skimlinksBaseUrl encodeURIComponent (t)} function hasIgnoreAttribute (t) {return “true” === tgetAttribute (ignoreDataAttribute)} fonction convertSkimlink (t) {var e, i, r, s = domle plus proche (tcible, “a”), n = s&&shref; n&&nlongueur&&! tdefaultPrevented&& (i = getTargetHostname (s) ,! isUrlProtocol (n) || isExcluded (i) || hasIgnoreAttribute (s) || productSubtagsgetAffiliate (n) || (e = convertSkimlinkUrl (n)) && (productUrl = n, r = s&&sgetAttribute (“data-track-id”), shref = productSubtagsensureSubtag ({url: e, productId: r, visitState: visitState, anchorEl: s})))} function revertSkimLink (t) {var e = domle plus proche (tcible, “a”), i = e&&ehref || “”; iinclut (skimlinksBaseUrl) &&i&&ilongueur&&productUrl&& (emodule href = productUrl)}exportations = (t => {const e = isSkimLink (t); visiteonceReady (function (t) {visitState = t}), e&& (setExcludedHostnames (t), globalClickaddHandler (convertSkimlink, revertSkimLink))});
}, {“4”: 4, “44”: 44, “46”: 46, “47”: 47, “48”: 48, “49”: 49}];
la fenêtremodules [“gtmclient “] = [function (require, module, exports) {” use strict “; const $ gtm = require (3); DScontroller (“gtm”, [function () {return function (t) {$ gtminit (tgetAttribute (“data-container-id”), tgetAttribute (“data-site-slug”))}}]);
}, {“3”: 3}];
la fenêtremodules [“bannière-légendeclient “] = [function (require, module, exports) {” use strict “; const visit = require (46), _ get = require (23); moduleexportations = (t => {soit e; const s = tquerySelector (“banner-trigger “), i = fenêtrelocalStorage, a = `banner-callout – $ {_ get (fenêtrefour, “preloadSiteslug “,” nymag “)}`; visiteonceReady (function () {! function () {try {e = JSONanalyser (jegetItem (a)) || {}} catch (t) {e = {}}} (), elicencié || tclassListadd (“show”)}), taddEventListener (“clic”, n => {(nciblecorrespond (“a”) || nciblecorrespond (“spanlien de bannière “) || ncibleallumettes(“banner-trigger “)) && (eignoré = Dateà présent()toString (), function () {essayez {isetItem (a, JSONstringify (e))} catch (t) {}} (), function () {tclassListcontient (“montrer”)? ssetAttribute (“aria-extended”, “false”): ssetAttribute (“aria-extended”, “true”); tclassListremove (“afficher”)} ())})});
}, {“23”: 23, “46”: 46}];
la fenêtremodules [“global-navclient “] = [function (require, module, exports) {” use strict “; const dom = require (4), auth0 = require (12), signInButton = domtrouve(“user-signin “), signOutButton = domtrouve(“user-signout “), globalNav = domfind (‘[class ^ = “global-nav”]’), corps = domfind (“body”), dropdownItems = domTrouver tout(“dropdown-wrap “), gtm = require (3), pageUri = require (136)getPageUri (); function closeDropdowns (e) {let n = globalNavquerySelectorAll (“menu déroulantopen “); dropdownItemsforEach (fonction (t) {soit o = tquerySelector (“liste déroulante “) ;! n || tcontient (ecible) &&27! == ekeyCode || oclassListremove (“open”)})} function gtmSendReport (e, n, t) {let o = {eventCategory: “ecommerce”, eventAction: “componentClick”, marque: e, dimension23: “global-nav”, list: pageUri , pageZone: “header”, variant: “nav-link”}; “global-nav-link” === t&& (oeventLabel = nhref), gtmreportNow (o)} fonction init (e) {auth0on (“init”, () => {signInButtonaddEventListener (“clic”, fonction (e) {epreventDefault (), auth0showLogin ()}), signOutButtonaddEventListener (“clic”, fonction (e) {epreventDefault (), auth0logout (), gtmSendReport (“Déconnexion”, ecible, “lien-info-utilisateur”)}), auth0isAuthenticated () &&eclassListadd (“connecté”), auth0isSubscriber () &&eclassListadd (“abonné”), equerySelectorAll (“lien utilisateur “)forEach (e => {eclassListadd (“active”)})}), auth0on (“login”, () => {eclassListadd (“connecté”), auth0isSubscriber () &&eclassListadd (“abonné”)}), auth0on (“déconnexion”, () => {eclassListremove (“connecté”), eclassListremove (“abonné”)})} dropdownItemsforEach (fonction (e) {eaddEventListener (“clic”, fonction () {equerySelector (“menu déroulant”)classListtoggle (“open”)})}), corpsaddEventListener (“clic”, closeDropdowns), documentaddEventListener (“keydown”, closeDropdowns), globalNavaddEventListener (“clic”, fonction (e) {soit n = ecible; nclassListcontient (“global-nav-track”) &&gtmSendReport (ntext, n, “global-nav-link”)}), moduleexportations = init;
}, {“3”: 3, “4”: 4, “12”: 12, “136”: 136}];
la fenêtremodules [“montage de module aaalegacy “] = [function (require, module, exports) {” use strict “; const eventify = require (164), _ pickBy = require (139), _ each = require (301), fingerprintjs2 = require (300), DS = require (299); function registerGlobals () {fenêtreDS = DS, fenêtreEventify = eventify, fenêtreFingerprint2 = fingerprintjs2, DSvaleur (“Eventify”, eventify), DSvalue (“Fingerprint2”, fingerprintjs2), DSvaleur (“$ document”, fenêtredocument), DSvalue (“$ window”, window)} function mountDollarSliceComponents () {DSservice (“composants”, [“$ document”, “$ module”, fonction (e, n) {var r = _pickBy (ndéfinitions, e => eproviderStrategy === nfournisseurscontrôleur), o = Objetkeys (r); function t (e) {return r => {try {nget (e, r)} catch (e) {logMountError (r, e)}}} _ each (o, n => {var r = equerySelectorAll (‘[data-uri * = “/ _ composants /’ n ‘/”]’), o = equerySelectorAll (‘[data-uri $ = “/ _ composants /’ n ‘”]’); _ each (r, t (n)), _ each (o, t (n))}), cecomposants = o}]), DSget (“components”)} function logMountError (e, n) {const r = eexterneHTMLtranche (0, eexterneHTMLindexOf (einnerHTML)); consoleerror (“Erreur lors de la connexion du contrôleur à” r, n)} registerGlobals (), documentaddEventListener (“DOMContentLoaded”, () => {mountDollarSliceComponents ()});
}, {“139”: 139, “164”: 164, “299”: 299, “300”: 300, “301”: 301}];
la fenêtremodules [“annonceslegacy “] = [function (require, module, exports) {” use strict “; const _map = require (50), _ forEach = require (40), _ isString = require (184), _ intersectionWith = require (302), _ isEqual = require (190), _ each = require (301), _ debounce = require (99), _ sortBy = require (122), page = require (136), visit = require (46); DSservice (“adService”, [“Eventify”, “$ cid”, “$ document”, “$ window”, function (e, t, a, i) {var o, n, s, r, d, c, l, u, g, p, m = {}, h = this, f = [], b = visitegetQueryParamsObject ([“utm_campaign”]), w = documentquerySelector (‘script [data-type = “ad-a9”]’); documentquerySelector (‘script [data-name = “concert-ads”]’) || (iNYM = {}, jeNYManalytics = {}, iNYManalytiqueadStartTime = iperformanceMaintenant jegoogletag = igoogletag || {}, jegoogletagcmd = igoogletagcmd || [], c = igoogletag, w&& (igoogletagcmd = igoogletagcmd || [], igoogletagcmdpush (fonction () {igoogletagpubades ()disableInitialLoad ()}), l = isetInterval (function () {void 0! == fenêtreapstag&&void 0! == fenêtreapstagtimeout && (iclearInterval (l), fenêtreapstagcleared =! 0, l = null)}, 10), setTimeout (function () {l&& (iclearInterval (l), jegoogletagpubades ()rafraîchir (), fenêtreapstag || consolelog (“MESSAGE: dépassement du délai d’attente pour le chargement A9, abandon”))}, 500)), u = documentcreateElement (“script”), g = documentcreateDocumentFragment (), p = documentgetElementsByTagName (“head”) [0], usrc = “https: // zdouvescom / voxprebidheader841653991752 / moatheaderjs “, gappendChild (u), pinsertBefore (g, pfirstChild), o = fonction (e) {var t, a, o = edata, n = []; retourne ochargé? e: (ochargé =! 0, t = nul, (t = otailles? cdefineSlot (onom otailles, oidentifiant)addService (cpubades ()): cdefineOutOfPageSlot (onom oidentifiant)addService (cpubades ()))setTargeting (“adid”, oid), bhasOwnProperty (“utm_campaign”) &&tsetTargeting (“utmcamp”, butm_campaign), a = hgetAdCount (oétiquette), tsetTargeting (“label”, oétiquette “_” osite “-” a), caffichage (oid), cpubades ()addEventListener (“slotOnload”, function () {iNYManalytiquefirstAdLoadTime || (iNYManalytiquefirstAdLoadTime = iperformanceMaintenant jeNYManalytiquefirstAdLoadLabel = eLes donnéeslabel)}), (n = v (o))? fenêtreapstag&&windowapstagcleared&CSSEETCHARfenêtreapstagfetchBids ({slots: [n], timeout: windowapstagtimeout}, function () {ccmdpush (function () {fenêtreapstagsetDisplayBids (), cpubades ()refresh ([t], {changeCorrelator:! 1})})}): cpubades ()rafraîchir ([t], {changeCorrelator:! 1}), eslot = t, e)}, n = fonction (e) {var a, i, o, n = t (), s = egetAttribute (“nom-données”), r = egetAttribute (“data-tailles”), d = egetAttribute (“étiquette de données”), c = egetAttribute (“site de données”); n = eid, r&&rlongueur? (r = rsplit (“,”), a = [], _ map (r, function (e) {e = esplit (“x”), i = parseInt (e [0]), o = parseInt (e [1]), apush ([i, o])})) 🙁 eclassListajouter (“oop”), a =! 1), cecidata = {id: n, nom: s, tailles: a, chargé:! 1, libellé: d, site: c}, m [n] = this}, r = function (e) {ccmdpush (fonction () {var t = o (e); m [eLes donnéesid] = t})}, s = fonction (e) {var t = []; eslot? (t = v (e)) &&windowapstag&&windowapstagcleared&CSSEETCHARfenêtreapstagfetchBids ({slots: [t], timeout: windowapstagtimeout}, function () {ccmdpush (function () {fenêtreapstagsetDisplayBids (), cpubades ()rafraîchir ([eslot], {changeCorrelator:! 1})})}): e&&r (e)}, ccmdpush (fonction () {var e, t, o, n = pagegetMeta (“article: tag”), s = pagegetMeta (“auteur”), r = iemplacementhref, d = (e = adirigerquerySelector (“head-gtm “), t = acorpsquerySelector (“gtm “), e&&” top “=== egetAttribute (“data-gtm”)? “gtmtop”: t&& “bottom” === tgetAttribute (“data-gtm”)? “gtmbottom”: “”); o = [], _ forEach ([n, s, d], function (e) {_ forEach (esplit (“,”), fonction (e) {(e = egarniture()toLowerCase ()remplacer (/ s / g, “-“)remplacer (/ ‘| ’/ g,” “))longueur&&opush (e)})}), cpubades ()setTargeting (“kw”, o), cpubades ()setTargeting (“groupe_entrée”, o), r = rtranche (rlastIndexOf (“/”) 1), cpubades ()setTargeting (“pn”, r), cCompagnonAds ()setRefreshUnfilledSlots (! 0), cpubades ()enableAsyncRendering (), cenableServices ()}), ceload = r, cecicreate = function (e) {return new n (e)}, cecirafraichir = fonction (e) {var t; _isString (e)? (t = thisgetById (e), s (t)): s (e)}, cecisupprimer = fonction (e) {var t = eLes donnéesid; ungetElementById (t)innerHTML = “”}, cecigetAdCount = function (e) {var t, a = 0, i = Objecttouches (m); retourne _chaque (i, fonction (i) {(t = m [i])Les donnéeschargé&&tLes donnéeslabel === e&&a}), a}, cecigetById = function (e) {return m [e]}, d = _debounce (function () {var e = {TopLeaderboard: 1, RightColTopMPU: 2, outOfPage: 99, “homepageTakeover / TopLeaderboard”: 1}, t = _sortBy (f, fonction (t) {retourne e [tLes donnéeslabel] || 10}); _ forEach (t, function (e) {return eLes donnéestailles? r (e): isetTimeout (function () {r (e)}, 2e3)}), f = []}, 10), ceaddToPageLoadQueue = fonction (e) {fpush (e), d ()}); fonction v (e) {var t, a = etailles; renvoie a = _intersectionWith (a, [[970,250], [970,90], [728,90], [300,600], [300,250], [320,100], [320,50]], _ isEqual), etaillesles tailleslength&& (t = {slotID: eid, tailles: a, slotName: elabel}), t}}]);
}, {“40”: 40, “46”: 46, “50”: 50, “99”: 99, “122”: 122, “136”: 136, “184”: 184, “190”: 190 , “301”: 301, “302”: 302}];
la fenêtremodules [“cidlegacy “] = [function (require, module, exports) {” use strict “; DSservice (“$ cid”, function () {var r = Mathétage (100 * Mathrandom ()); return function () {return “cid-” r}});
}, {}];
la fenêtremodules [“facebooklegacy “] = [function (require, module, exports) {” use strict “; DSservice (“facebook”, [function () {thisfb = fonction (i) {fenêtreFB&CSSEETCHARfenêtreFBI]appliquer (ceci, Arrayprototypetranchecall (arguments, 1))}}]);
}, {}];
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 fcode = “MODULE_NOT_FOUND”, f} var l = n [o] = {exportations: {}}; t [o] [0]appeler (lexportations, fonction (e) {var n = t [o] [1] [e]; retourne s (n? n: e)}, l, lexportations, e, t, n, r)} retourne n [o]exports} var i = typeof require == “function” &&require; for (var o = 0; o typeof key === ‘string’ && keycorrespondre(/héritage $ /))forEach (clé => fenêtrerequire (clé));
}

function tryToMount (fn, el, nom) {
essayer {
fn (el); // initier le contrôleur
} catch (e) {
const elementTag = elexterneHTMLtranche (0, elexterneHTMLindexOf (elinnerHTML));
consoleerror (`Erreur lors de l’initialisation du contrôleur pour” $ {name} “sur” $ {elementTag} “`, e);
}
}
/ **
* monter le clientcontrôleurs de composants js
* /

function mountComponentModules () {
Objetclés (fenêtremodules)filter (key => typeof key === ‘string’ && clécorrespondre(/client $ /))forEach (clé => {
laissez controllerFn = fenêtrerequire (clé);

if (typeof controllerFn === ‘fonction’) {
nom de const = cléremplacer(‘client’, ”),
instancesSelector = `[data-uri * =” _ composants / $ {nom} / “]`,
defaultSelector = `[data-uri $ =” _ composants $ {name} “]`,
instances = documentquerySelectorAll (instancesSelector),
defaults = documentquerySelectorAll (defaultSelector);

for (let el des instances) {
tryToMount (controllerFn, el, nom);
}

for (laissez el des valeurs par défaut) {
tryToMount (controllerFn, el, nom);
}
}
});
} // Assurez-vous qu’une fenêtre `traiterenvNODE_ENV` est disponible dans le client pour toutes les dépendances,
// services ou composants qui pourraient en avoir besoin
// note: la valeur “ est échangée contre la variable d’environnement réelle dans / lib / cmd / compile / scriptsjs

la fenêtreprocess = fenêtreprocessus || {};
la fenêtretraiterenv = fenêtretraiterenv || {};

si (! fenêtretraiterenvNODE_ENV) {
la fenêtretraiterenvNODE_ENV = ”;
} // remarque: les contrôleurs hérités qui nécessitent des services hérités (eg dollar-tranche) doit
// attend que DOMContentLoaded s’initialise, car les fichiers eux-mêmes doivent d’abord être montés

mountLegacyServices ();
mountComponentModules ();
//]]

Pose, pose saison 3

Ebene News – États-Unis – Pose Season-Premiere Récapitulation: les temps ont changé

Source: https://www.vulture.com/article/pose-season-3-premiere-recap-episode-1-on-the-run.html