CINXE.COM
<!doctype html><!--[if IE 8]><html data-19ax5a9jf="dingo" lang="fr-fr" class="a-no-js a-lt-ie10 a-lt-ie9 a-ie8"><![endif]--><!--[if IE 9]><html data-19ax5a9jf="dingo" lang="fr-fr" class="a-no-js a-lt-ie10 a-ie9"><![endif]--><!--[if !(IE 8)&!(IE 9)]><!--><html data-19ax5a9jf="dingo" lang="fr-fr" class="a-no-js"><!--<![endif]--><!-- sp:feature:head-start --> <head><script>var aPageStart = (new Date()).getTime();</script><meta charset="utf-8"/> <!-- sp:end-feature:head-start --> <!-- sp:feature:csm:head-open-part1 --> <script type='text/javascript'>var ue_t0=ue_t0||+new Date();</script> <!-- sp:end-feature:csm:head-open-part1 --> <!-- sp:feature:cs-optimization --> <meta http-equiv='x-dns-prefetch-control' content='on'> <link rel="dns-prefetch" href="https://images-eu.ssl-images-amazon.com"> <link rel="dns-prefetch" href="https://m.media-amazon.com"> <link rel="dns-prefetch" href="https://completion.amazon.com"> <!-- sp:end-feature:cs-optimization --> <!-- sp:feature:csm:head-open-part2 --> <script type='text/javascript'> window.ue_ihb = (window.ue_ihb || window.ueinit || 0) + 1; if (window.ue_ihb === 1) { var ue_csm = window, ue_hob = +new Date(); (function(d){var e=d.ue=d.ue||{},f=Date.now||function(){return+new Date};e.d=function(b){return f()-(b?0:d.ue_t0)};e.stub=function(b,a){if(!b[a]){var c=[];b[a]=function(){c.push([c.slice.call(arguments),e.d(),d.ue_id])};b[a].replay=function(b){for(var a;a=c.shift();)b(a[0],a[1],a[2])};b[a].isStub=1}};e.exec=function(b,a){return function(){try{return b.apply(this,arguments)}catch(c){ueLogError(c,{attribution:a||"undefined",logLevel:"WARN"})}}}})(ue_csm); var ue_err_chan = 'jserr-rw'; (function(d,e){function h(f,b){if(!(a.ec>a.mxe)&&f){a.ter.push(f);b=b||{};var c=f.logLevel||b.logLevel;c&&c!==k&&c!==m&&c!==n&&c!==p||a.ec++;c&&c!=k||a.ecf++;b.pageURL=""+(e.location?e.location.href:"");b.logLevel=c;b.attribution=f.attribution||b.attribution;a.erl.push({ex:f,info:b})}}function l(a,b,c,e,g){d.ueLogError({m:a,f:b,l:c,c:""+e,err:g,fromOnError:1,args:arguments},g?{attribution:g.attribution,logLevel:g.logLevel}:void 0);return!1}var k="FATAL",m="ERROR",n="WARN",p="DOWNGRADED",a={ec:0,ecf:0, pec:0,ts:0,erl:[],ter:[],buffer:[],mxe:50,startTimer:function(){a.ts++;setInterval(function(){d.ue&&a.pec<a.ec&&d.uex("at");a.pec=a.ec},1E4)}};l.skipTrace=1;h.skipTrace=1;h.isStub=1;d.ueLogError=h;d.ue_err=a;e.onerror=l})(ue_csm,window); var ue_id = '74HCJVK5ZY1QW82XSHCC', ue_url = '/rd/uedata', ue_navtiming = 1, ue_mid = 'A13V1IB3VIYZZH', ue_sid = '258-2477753-5488862', ue_sn = 'www.amazon.fr', ue_furl = 'fls-eu.amazon.fr', ue_surl = 'https://unagi-eu.amazon.com/1/events/com.amazon.csm.nexusclient.prod', ue_int = 0, ue_fcsn = 1, ue_urt = 3, ue_rpl_ns = 'cel-rpl', ue_ddq = 1, ue_fpf = '//fls-eu.amazon.fr/1/batch/1/OP/A13V1IB3VIYZZH:258-2477753-5488862:74HCJVK5ZY1QW82XSHCC$uedata=s:', ue_sbuimp = 1, ue_ibft = 0, ue_sswmts = 0, ue_jsmtf = 0, ue_fnt = 0, ue_lpsi = 6000, ue_no_counters = 0, ue_lob = '1', ue_sjslob = 0, ue_dsbl_cel = 1, ue_swi = 1; var ue_viz=function(){(function(b,f,d){function g(){return(!(p in d)||0<d[p])&&(!(q in d)||0<d[q])}function h(c){if(b.ue.viz.length<w&&!r){var a=c.type;c=c.originalEvent;/^focus./.test(a)&&c&&(c.toElement||c.fromElement||c.relatedTarget)||(a=g()?f[s]||("blur"==a||"focusout"==a?t:u):t,b.ue.viz.push(a+":"+(+new Date-b.ue.t0)),a==u&&(b.ue.isl&&x("at"),r=1))}}for(var r=0,x=b.uex,a,k,l,s,v=["","webkit","o","ms","moz"],e=0,m=1,u="visible",t="hidden",p="innerWidth",q="innerHeight",w=20,n=0;n<v.length&&!e;n++)if(a= v[n],k=(a?a+"H":"h")+"idden",e="boolean"==typeof f[k])l=a+"visibilitychange",s=(a?a+"V":"v")+"isibilityState";h({});e&&f.addEventListener(l,h,0);m=g()?1:0;d.addEventListener("resize",function(){var a=g()?1:0;m!==a&&(m=a,h({}))},{passive:!0});b.ue&&e&&(b.ue.pageViz={event:l,propHid:k})})(ue_csm,ue_csm.document,ue_csm.window)};window.ue_viz=ue_viz; (function(d,h,N){function H(a){return a&&a.replace&&a.replace(/^\s+|\s+$/g,"")}function u(a){return"undefined"===typeof a}function B(a,b){for(var c in b)b[v](c)&&(a[c]=b[c])}function I(a){try{var b=N.cookie.match(RegExp("(^| )"+a+"=([^;]+)"));if(b)return b[2].trim()}catch(c){}}function O(k,b,c){var q=(x||{}).type;if("device"!==c||2!==q&&1!==q)k&&(d.ue_id=a.id=a.rid=k,w&&(w=w.replace(/((.*?:){2})(\w+)/,function(a,b){return b+k})),D&&(e("id",D,k),D=0)),b&&(w&&(w=w.replace(/(.*?:)(\w|-)+/,function(a, c){return c+b})),d.ue_sid=b),c&&a.tag("page-source:"+c),d.ue_fpf=w}function P(){var a={};return function(b){b&&(a[b]=1);b=[];for(var c in a)a[v](c)&&b.push(c);return b}}function y(d,b,c,q){q=q||+new E;var g,m;if(b||u(c)){if(d)for(m in g=b?e("t",b)||e("t",b,{}):a.t,g[d]=q,c)c[v](m)&&e(m,b,c[m]);return q}}function e(d,b,c){var e=b&&b!=a.id?a.sc[b]:a;e||(e=a.sc[b]={});"id"===d&&c&&(Q=1);return e[d]=c||e[d]}function R(d,b,c,e,g){c="on"+c;var m=b[c];"function"===typeof m?d&&(a.h[d]=m):m=function(){};b[c]= function(a){g?(e(a),m(a)):(m(a),e(a))};b[c]&&(b[c].isUeh=1)}function S(k,b,c,q){function p(b,c){var d=[b],f=0,g={},m,h;c?(d.push("m=1"),g[c]=1):g=a.sc;for(h in g)if(g[v](h)){var q=e("wb",h),p=e("t",h)||{},n=e("t0",h)||a.t0,l;if(c||2==q){q=q?f++:"";d.push("sc"+q+"="+h);for(l in p)u(p[l])||null===p[l]||d.push(l+q+"="+(p[l]-n));d.push("t"+q+"="+p[k]);if(e("ctb",h)||e("wb",h))m=1}}!J&&m&&d.push("ctb=1");return d.join("&")}function m(b,c,f,e,g){if(b){var k=d.ue_err;d.ue_url&&!e&&!g&&b&&0<b.length&&(e= new Image,a.iel.push(e),e.src=b,a.count&&a.count("postbackImageSize",b.length));w?(g=h.encodeURIComponent)&&b&&(e=new Image,b=""+d.ue_fpf+g(b)+":"+(+new E-d.ue_t0),a.iel.push(e),e.src=b):a.log&&(a.log(b,"uedata",{n:1}),a.ielf.push(b));k&&!k.ts&&k.startTimer();a.b&&(k=a.b,a.b="",m(k,c,f,1))}}function A(b){var c=x?x.type:F,d=2==c||a.isBFonMshop,c=c&&!d,f=a.bfini;if(!Q||a.isBFCache)f&&1<f&&(b+="&bfform=1",c||(a.isBFT=f-1)),d&&(b+="&bfnt=1",a.isBFT=a.isBFT||1),a.ssw&&a.isBFT&&(a.isBFonMshop&&(a.isNRBF= 0),u(a.isNRBF)&&(d=a.ssw(a.oid),d.e||u(d.val)||(a.isNRBF=1<d.val?0:1)),u(a.isNRBF)||(b+="&nrbf="+a.isNRBF)),a.isBFT&&!a.isNRBF&&(b+="&bft="+a.isBFT);return b}if(!a.paused&&(b||u(c))){for(var l in c)c[v](l)&&e(l,b,c[l]);a.isBFonMshop||y("pc",b,c);l="ld"===k&&b&&e("wb",b);var s=e("id",b)||a.id;l||s===a.oid||(D=b,ba(s,(e("t",b)||{}).tc||+e("t0",b),+e("t0",b)));var s=e("id",b)||a.id,t=e("id2",b),f=a.url+"?"+k+"&v="+a.v+"&id="+s,J=e("ctb",b)||e("wb",b),z;J&&(f+="&ctb="+J);t&&(f+="&id2="+t);1<d.ueinit&& (f+="&ic="+d.ueinit);if(!("ld"!=k&&"ul"!=k||b&&b!=s)){if("ld"==k){try{h[K]&&h[K].isUeh&&(h[K]=null)}catch(I){}if(h.chrome)for(t=0;t<L.length;t++)T(G,L[t]);(t=N.ue_backdetect)&&t.ue_back&&t.ue_back.value++;d._uess&&(z=d._uess());a.isl=1}a._bf&&(f+="&bf="+a._bf());d.ue_navtiming&&g&&(e("ctb",s,"1"),a.isBFonMshop||y("tc",F,F,M));!C||a.isBFonMshop||U||(g&&B(a.t,{na_:g.navigationStart,ul_:g.unloadEventStart,_ul:g.unloadEventEnd,rd_:g.redirectStart,_rd:g.redirectEnd,fe_:g.fetchStart,lk_:g.domainLookupStart, _lk:g.domainLookupEnd,co_:g.connectStart,_co:g.connectEnd,sc_:g.secureConnectionStart,rq_:g.requestStart,rs_:g.responseStart,_rs:g.responseEnd,dl_:g.domLoading,di_:g.domInteractive,de_:g.domContentLoadedEventStart,_de:g.domContentLoadedEventEnd,_dc:g.domComplete,ld_:g.loadEventStart,_ld:g.loadEventEnd,ntd:("function"!==typeof C.now||u(M)?0:new E(M+C.now())-new E)+a.t0}),x&&B(a.t,{ty:x.type+a.t0,rc:x.redirectCount+a.t0}),U=1);a.isBFonMshop||B(a.t,{hob:d.ue_hob,hoe:d.ue_hoe});a.ifr&&(f+="&ifr=1")}y(k, b,c,q);var r,n;l||b&&b!==s||ca(b);(c=d.ue_mbl)&&c.cnt&&!l&&(f+=c.cnt());l?e("wb",b,2):"ld"==k&&(a.lid=H(s));for(r in a.sc)if(1==e("wb",r))break;if(l){if(a.s)return;f=p(f,null)}else c=p(f,null),c!=f&&(c=A(c),a.b=c),z&&(f+=z),f=p(f,b||a.id);f=A(f);if(a.b||l)for(r in a.sc)2==e("wb",r)&&delete a.sc[r];z=0;a._rt&&(f+="&rt="+a._rt());c=h.csa;if(!l&&c)for(n in r=e("t",b)||{},c=c("PageTiming"),r)r[v](n)&&c("mark",da[n]||n,r[n]);l||(a.s=0,(n=d.ue_err)&&0<n.ec&&n.pec<n.ec&&(n.pec=n.ec,f+="&ec="+n.ec+"&ecf="+ n.ecf),z=e("ctb",b),"ld"!==k||b||a.markers?a.markers&&a.isl&&!l&&b&&B(a.markers,e("t",b)):(a.markers={},B(a.markers,e("t",b))),e("t",b,{}));a.tag&&a.tag().length&&(f+="&csmtags="+a.tag().join("|"),a.tag=P());n=a.viz||[];(r=n.length)&&(f+="&viz="+n.splice(0,r).join("|"));u(d.ue_pty)||(f+="&pty="+d.ue_pty+"&spty="+d.ue_spty+"&pti="+d.ue_pti);a.tabid&&(f+="&tid="+a.tabid);a.aftb&&(f+="&aftb=1");!a._ui||b&&b!=s||(f+=a._ui());f+="&lob="+(d.ue_lob||"0");a.a=f;m(f,k,z,l,b&&"string"===typeof b&&-1!==b.indexOf("csa:"))}} function ca(a){var b=h.ue_csm_markers||{},c;for(c in b)b[v](c)&&y(c,a,F,b[c])}function A(a,b,c){c=c||h;if(c[V])c[V](a,b,!1);else if(c[W])c[W]("on"+a,b)}function T(a,b,c){c=c||h;if(c[X])c[X](a,b,!1);else if(c[Y])c[Y]("on"+a,b)}function Z(){function a(){d.onUl()}function b(a){return function(){c[a]||(c[a]=1,S(a))}}var c={},e,g;d.onLd=b("ld");d.onLdEnd=b("ld");d.onUl=b("ul");e={stop:b("os")};h.chrome?(A(G,a),L.push(a)):e[G]=d.onUl;for(g in e)e[v](g)&&R(0,h,g,e[g]);d.ue_viz&&ue_viz();A("load",d.onLd); y("ue")}function ba(e,b,c){var g=d.ue_mbl,p=h.csa,m=p&&p("SPA"),p=p&&p("PageTiming");g&&g.ajax&&g.ajax(b,c);m&&p&&(m("newPage",{requestId:e,transitionType:"soft"}),p("mark","transitionStart",b));a.tag("ajax-transition")}d.ueinit=(d.ueinit||0)+1;var a=d.ue=d.ue||{};a.t0=h.aPageStart||d.ue_t0;a.id=d.ue_id;a.url=d.ue_url;a.rid=d.ue_id;a.a="";a.b="";a.h={};a.s=1;a.t={};a.sc={};a.iel=[];a.ielf=[];a.viz=[];a.v="0.306143.0";a.paused=!1;var v="hasOwnProperty",G="beforeunload",K="on"+G,V="addEventListener", X="removeEventListener",W="attachEvent",Y="detachEvent",da={cf:"criticalFeature",af:"aboveTheFold",fn:"functional",fp:"firstPaint",fcp:"firstContentfulPaint",bb:"bodyBegin",be:"bodyEnd",ld:"loaded"},E=h.Date,C=h.performance||h.webkitPerformance,g=(C||{}).timing,x=(C||{}).navigation,M=(g||{}).navigationStart,w=d.ue_fpf,Q=0,U=0,L=[],D=0,F;a.oid=H(a.id);a.lid=H(a.id);a._t0=a.t0;a.tag=P();a.ifr=h.top!==h.self||h.frameElement?1:0;a.markers=null;a.attach=A;a.detach=T;if("000-0000000-8675309"===d.ue_sid){var $= I("cdn-rid"),aa=I("session-id");$&&aa&&O($,aa,"cdn")}d.uei=Z;d.ueh=R;d.ues=e;d.uet=y;d.uex=S;a.reset=O;a.pause=function(d){a.paused=d};Z()})(ue_csm,ue_csm.window,ue_csm.document); ue.stub(ue,"event");ue.stub(ue,"onSushiUnload");ue.stub(ue,"onSushiFlush"); ue.stub(ue,"log");ue.stub(ue,"onunload");ue.stub(ue,"onflush"); (function(b){function g(){var a={requestId:b.ue_id||"rid",server:b.ue_sn||"sn",obfuscatedMarketplaceId:b.ue_mid||"mid"};b.ue_sjslob&&(a.lob=b.ue_lob||"0");return a}var a=b.ue,h=1===b.ue_no_counters;a.cv={};a.cv.scopes={};a.cv.buffer=[];a.count=function(b,f,c){var e={},d=a.cv,g=c&&0===c.c;e.counter=b;e.value=f;e.t=a.d();c&&c.scope&&(d=a.cv.scopes[c.scope]=a.cv.scopes[c.scope]||{},e.scope=c.scope);if(void 0===f)return d[b];d[b]=f;d=0;c&&c.bf&&(d=1);h||(ue_csm.ue_sclog||!a.clog||0!==d||g?a.log&&a.log(e, "csmcount",{c:1,bf:d}):a.clog(e,"csmcount",{bf:d}));a.cv.buffer.push({c:b,v:f})};a.count("baselineCounter2",1);a&&a.event&&(a.event(g(),"csm","csm.CSMBaselineEvent.4"),a.count("nexusBaselineCounter",1,{bf:1}))})(ue_csm); var ue_hoe = +new Date(); } window.ueinit = window.ue_ihb; </script> <!-- 147nghzh2zvrj6snvzck136hs0grj7aih472575sy61xgm --> <script>window.ue && ue.count && ue.count('CSMLibrarySize', 10232)</script> <!-- sp:end-feature:csm:head-open-part2 --> <!-- sp:feature:aui-assets --> <link rel="stylesheet" href="https://m.media-amazon.com/images/I/11EIQ5IGqaL._RC|01ZTHTZObnL.css,41SUvmes+0L.css,319LBykF1VL.css,11L7A+p7H8L.css,01B072nPXYL.css,01ITNc8rK9L.css,413Vvv3GONL.css,11TIuySqr6L.css,01Rw4F+QU6L.css,11AJA260VnL.css,0148ALHohZL.css,01IdKcBuAdL.css,014QJx7nWqL.css,01RgENaJKWL.css,21arJDX51ZL.css,01qSaWIViCL.css,51PI+muOEKL.css,01XPHJk60-L.css,11YR-oCbXyL.css,01ADOWuhKrL.css,01Pr8aUmTDL.css,21PFMTGpxDL.css,01hgfZ35zsL.css,21Cm-FYpY3L.css,11NDGtxMxFL.css,21IDkxWBPiL.css,01CFUgsA-YL.css,31gZMApn9lL.css,11uMuOm7bXL.css,11e+MOH+sBL.css,11aS0lbHOVL.css,11wvMqxn+nL.css,01UYmBc2e1L.css,01mxv6MYusL.css,21qT1oxQ1sL.css,11qZFA7Nz4L.css,01EsDzBKk6L.css,21VEMrnzXQL.css,11uEswZb7DL.css,11tM7nTgbvL.css,01czSFRTaLL.css,01890+Vwk8L.css,01b4G-SPx2L.css,01qiwJ7qDfL.css,212Evdj7aHL.css,016mfgi+D2L.css,01gU3ljx0fL.css,21kwbnYjkrL.css,01MPzoeGhoL.css_.css?AUIClients/AmazonUI#fr.trident" /> <script> (function(a,b,c,d){if((a=a.AmazonUIPageJS||a.P)&&a.when&&a.register)throw Error("A copy of P has already been loaded on this page.");})(window,document,Date);(function(a,b,c,d){"use strict";a._pSetI=function(){return null}})(window,document,Date);(function(a,c,d,e){"use strict";a._sw=function(){var b;return function(a,c,d,e,f,g,h,k,l,m){b||(b=!0)}}()})(window,document,Date);(function(c,e,I,B){"use strict";c._pd=function(){var a,u;return function(C,f,h,k,b,D,v,E,F){function w(d){try{return d()}catch(J){return!1}}function l(){if(m){var d={w:c.innerWidth||b.clientWidth,h:c.innerHeight||b.clientHeight};5<Math.abs(d.w-q.w)||50<d.h-q.h?(q=d,n=4,(d=a.mobile||a.tablet?450<d.w&&d.w>d.h:1250<=d.w)?k(b,"a-ws"):b.className=v(b,"a-ws")):0<n&&(n--,x=setTimeout(l,16))}}function G(d){(m=d===B?!m:!!d)&&l()}function H(){return m}if(!u){u=!0;var r=function(){var d=["O","ms","Moz","Webkit"], c=e.createElement("div");return{testGradients:function(){return!0},test:function(a){var b=a.charAt(0).toUpperCase()+a.substr(1);a=(d.join(b+" ")+b+" "+a).split(" ");for(b=a.length;b--;)if(""===c.style[a[b]])return!0;return!1},testTransform3d:function(){return!1}}}(),y=b.className,z=/(^| )a-mobile( |$)/.test(y),A=/(^| )a-tablet( |$)/.test(y);a={audio:function(){return!!e.createElement("audio").canPlayType},video:function(){return!!e.createElement("video").canPlayType},canvas:function(){return!!e.createElement("canvas").getContext}, svg:function(){return!!e.createElementNS&&!!e.createElementNS("http://www.w3.org/2000/svg","svg").createSVGRect},offline:function(){return navigator.hasOwnProperty&&navigator.hasOwnProperty("onLine")&&navigator.onLine},dragDrop:function(){return"draggable"in e.createElement("span")},geolocation:function(){return!!navigator.geolocation},history:function(){return!(!c.history||!c.history.pushState)},webworker:function(){return!!c.Worker},autofocus:function(){return"autofocus"in e.createElement("input")}, inputPlaceholder:function(){return"placeholder"in e.createElement("input")},textareaPlaceholder:function(){return"placeholder"in e.createElement("textarea")},localStorage:function(){return"localStorage"in c&&null!==c.localStorage},orientation:function(){return"orientation"in c},touch:function(){return"ontouchend"in e},gradients:function(){return r.testGradients()},hires:function(){var a=c.devicePixelRatio&&1.5<=c.devicePixelRatio||c.matchMedia&&c.matchMedia("(min-resolution:144dpi)").matches;E("hiRes"+ (z?"Mobile":A?"Tablet":"Desktop"),a?1:0);return a},transform3d:function(){return r.testTransform3d()},touchScrolling:function(){return f(/Windowshop|android|OS ([5-9]|[1-9][0-9]+)(_[0-9]{1,2})+ like Mac OS X|SOFTWARE=([5-9]|[1-9][0-9]+)(.[0-9]{1,2})+.*DEVICE=iPhone|Chrome|Silk|Firefox|Trident.+?; Touch/i)},ios:function(){return f(/OS [1-9][0-9]*(_[0-9]*)+ like Mac OS X/i)&&!f(/trident|Edge/i)},android:function(){return f(/android.([1-9]|[L-Z])/i)&&!f(/trident|Edge/i)},mobile:function(){return z}, tablet:function(){return A},rtl:function(){return"rtl"===b.dir}};for(var g in a)a.hasOwnProperty(g)&&(a[g]=w(a[g]));for(var t="textShadow textStroke boxShadow borderRadius borderImage opacity transform transition".split(" "),p=0;p<t.length;p++)a[t[p]]=w(function(){return r.test(t[p])});var m=!0,x=0,q={w:0,h:0},n=4;l();h(c,"resize",function(){clearTimeout(x);n=4;l()});b.className=v(b,"a-no-js");k(b,"a-js");!f(/OS [1-8](_[0-9]*)+ like Mac OS X/i)||c.navigator.standalone||f(/safari/i)||k(b,"a-ember"); h=[];for(g in a)a.hasOwnProperty(g)&&a[g]&&h.push("a-"+g.replace(/([A-Z])/g,function(a){return"-"+a.toLowerCase()}));k(b,h.join(" "));b.setAttribute("data-aui-build-date",F);C.register("p-detect",function(){return{capabilities:a,localStorage:a.localStorage&&D,toggleResponsiveGrid:G,responsiveGridEnabled:H}});return a||{}}}}()})(window,document,Date);(function(g,l,C,D){function E(a){n&&n.tag&&n.tag(p(":","aui",a))}function m(a,b){n&&n.count&&n.count("aui:"+a,0===b?0:b||(n.count("aui:"+a)||0)+1)}function F(a){try{return a.test(navigator.userAgent)}catch(b){return!1}}function G(a){return"function"===typeof a}function u(a,b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,c)}function p(a,b,c,f){b=b&&c?b+a+c:b||c;return f?p(a,b,f):b}function y(a,b,c){try{Object.defineProperty(a,b,{value:c,writable:!1})}catch(f){a[b]= c}return c}function O(a,b){a.className=P(a,b)+" "+b}function P(a,b){return(" "+a.className+" ").split(" "+b+" ").join(" ").replace(/^ | $/g,"")}function ca(a,b,c){var f=c=a.length,e=function(){f--||(H.push(b),I||(q?q.set(z):setTimeout(z,0),I=!0))};for(e();c--;)Q[a[c]]?e():(v[a[c]]=v[a[c]]||[]).push(e)}function da(a,b,c,f,e){var d=l.createElement(a?"script":"link");u(d,"error",f);e&&u(d,"load",e);a?(d.type="text/javascript",d.async=!0,c&&/AUIClients|images[/]I/.test(b)&&d.setAttribute("crossorigin", "anonymous"),d.src=b):(d.rel="stylesheet",d.href=b);l.getElementsByTagName("head")[0].appendChild(d)}function R(a,b){return function(c,f){function e(){da(b,c,d,function(b){J?m("resource_unload"):d?(d=!1,m("resource_retry"),e()):(m("resource_error"),a.log("Asset failed to load: "+c));b&&b.stopPropagation?b.stopPropagation():g.event&&(g.event.cancelBubble=!0)},f)}if(S[c])return!1;S[c]=!0;m("resource_count");var d=!0;return!e()}}function ea(a,b,c){for(var f={name:a,guard:function(c){return b.guardFatal(a, c)},guardTime:function(a){return b.guardTime(a)},logError:function(c,d,e){b.logError(c,d,e,a)}},e=[],d=0;d<c.length;d++)A.hasOwnProperty(c[d])&&(e[d]=K.hasOwnProperty(c[d])?K[c[d]](A[c[d]],f):A[c[d]]);return e}function w(a,b,c,f,e){return function(d,k){function n(){var a=null;f?a=k:G(k)&&(q.start=r(),a=k.apply(g,ea(d,h,l)),q.end=r());if(b){A[d]=a;a=d;for(Q[a]=!0;(v[a]||[]).length;)v[a].shift()();delete v[a]}q.done=!0}var h=e||this;G(d)&&(k=d,d=D);b&&(d=d?d.replace(T,""):"__NONAME__",L.hasOwnProperty(d)&& h.error(p(", reregistered by ",p(" by ",d+" already registered",L[d]),h.attribution),d),L[d]=h.attribution);for(var l=[],m=0;m<a.length;m++)l[m]=a[m].replace(T,"");var q=x[d||"anon"+ ++fa]={depend:l,registered:r(),namespace:h.namespace};d&&ha.hasOwnProperty(d);c?n():ca(l,h.guardFatal(d,n),d);return{decorate:function(a){K[d]=h.guardFatal(d,a)}}}}function U(a){return function(){var b=Array.prototype.slice.call(arguments);return{execute:w(b,!1,a,!1,this),register:w(b,!0,a,!1,this)}}}function M(a,b){return function(c, f){f||(f=c,c=D);var e=this.attribution;return function(){h.push(b||{attribution:e,name:c,logLevel:a});var d=f.apply(this,arguments);h.pop();return d}}}function B(a,b){this.load={js:R(this,!0),css:R(this)};y(this,"namespace",b);y(this,"attribution",a)}function V(){l.body?k.trigger("a-bodyBegin"):setTimeout(V,20)}"use strict";var t=C.now=C.now||function(){return+new C},r=function(a){return a&&a.now?a.now.bind(a):t}(g.performance),ia=r(),ha={},n=g.ue;E();E("aui_build_date:3.24.11-2025-02-10");var W= {getItem:function(a){try{return g.localStorage.getItem(a)}catch(b){}},setItem:function(a,b){try{return g.localStorage.setItem(a,b)}catch(c){}}},q=g._pSetI(),H=[],ja=[],I=!1,ka=navigator.scheduling&&"function"===typeof navigator.scheduling.isInputPending;var z=function(){for(var a=q?q.set(z):setTimeout(z,0),b=t();ja.length||H.length;)if(H.shift()(),q&&ka){if(150<t()-b&&!navigator.scheduling.isInputPending()||50<t()-b&&navigator.scheduling.isInputPending())return}else if(50<t()-b)return;q?q.clear(a): clearTimeout(a);I=!1};var Q={},v={},S={},J=!1;u(g,"beforeunload",function(){J=!0;setTimeout(function(){J=!1},1E4)});var T=/^prv:/,L={},A={},K={},x={},fa=0,X=String.fromCharCode(92),h=[],Y=!0,Z=g.onerror;g.onerror=function(a,b,c,f,e){e&&"object"===typeof e||(e=Error(a,b,c),e.columnNumber=f,e.stack=b||c||f?p(X,e.message,"at "+p(":",b,c,f)):D);var d=h.pop()||{};e.attribution=p(":",e.attribution||d.attribution,d.name);e.logLevel=d.logLevel;e.attribution&&console&&console.log&&console.log([e.logLevel|| "ERROR",a,"thrown by",e.attribution].join(" "));h=[];Z&&(d=[].slice.call(arguments),d[4]=e,Z.apply(g,d))};B.prototype={logError:function(a,b,c,f){b={message:b,logLevel:c||"ERROR",attribution:p(":",this.attribution,f)};if(g.ueLogError)return g.ueLogError(a||b,a?b:null),!0;console&&console.error&&(console.log(b),console.error(a));return!1},error:function(a,b,c,f){a=Error(p(":",f,a,c));a.attribution=p(":",this.attribution,b);throw a;},guardError:M(),guardFatal:M("FATAL"),guardCurrent:function(a){var b= h[h.length-1];return b?M(b.logLevel,b).call(this,a):a},guardTime:function(a){var b=h[h.length-1],c=b&&b.name;return c&&c in x?function(){var b=r(),e=a.apply(this,arguments);x[c].async=(x[c].async||0)+r()-b;return e}:a},log:function(a,b,c){return this.logError(null,a,b,c)},declare:w([],!0,!0,!0),register:w([],!0),execute:w([]),AUI_BUILD_DATE:"3.24.11-2025-02-10",when:U(),now:U(!0),trigger:function(a,b,c){var f=t();this.declare(a,{data:b,pageElapsedTime:f-(g.aPageStart||NaN),triggerTime:f});c&&c.instrument&& N.when("prv:a-logTrigger").execute(function(b){b(a)})},handleTriggers:function(){this.log("handleTriggers deprecated")},attributeErrors:function(a){return new B(a)},_namespace:function(a,b){return new B(a,b)},setPriority:function(a){Y?Y=!1:this.log("setPriority only accept the first call.")}};var k=y(g,"AmazonUIPageJS",new B);var N=k._namespace("PageJS","AmazonUI");N.declare("prv:p-debug",x);k.declare("p-recorder-events",[]);k.declare("p-recorder-stop",function(){});y(g,"P",k);V();if(l.addEventListener){var aa; l.addEventListener("DOMContentLoaded",aa=function(){k.trigger("a-domready");l.removeEventListener("DOMContentLoaded",aa,!1)},!1)}var ba=l.documentElement,la=g._pd(k,F,u,O,ba,W,P,m,"3.24.11-2025-02-10");F(/UCBrowser/i)||la.localStorage&&O(ba,W.getItem("a-font-class"));k.declare("a-event-revised-handling",!1);g._sw(N,p,F,X,m,n,E,G,u,k);k.declare("a-fix-event-off",!1);m("pagejs:pkgExecTime",r()-ia)})(window,document,Date); (function(b){function q(a,e,d){function g(a,b,c){var f=Array(e.length);~l&&(f[l]={});~m&&(f[m]=c);for(c=0;c<n.length;c++){var g=n[c],h=a[c];f[g]=h}for(c=0;c<p.length;c++)g=p[c],h=b[c],f[g]=h;a=d.apply(null,f);return~l?f[l]:a}"string"!==typeof a&&b.P.error("C001");-1===a.indexOf("@")&&-1<a.indexOf("/")&&(-1<a.indexOf("es3")||-1<a.indexOf("evergreen"))&&(a=a.substring(0,a.lastIndexOf("/")));if(!r[a]){r[a]=!0;d||(d=e,e=[]);a=a.split(":",2);var c=a[1]?a[0]:void 0,f=(a[1]||a[0]).replace(/@capability\//, "@c/"),k=c?b.P._namespace(c):b.P,t=!f.lastIndexOf("@c/",0),u=!f.lastIndexOf("@m/",0),n=[];a=[];var p=[],v=[],m=-1,l=-1;for(c=0;c<e.length;c++){var h=e[c];"module"===h&&k.error("C002");"exports"===h?l=c:"require"===h?m=c:h.lastIndexOf("@p/",0)?h.lastIndexOf("@c/",0)&&h.lastIndexOf("@m/",0)?(n.push(c),a.push("mix:"+h)):(p.push(c),v.push(h)):(n.push(c),a.push(h.substr(3)))}k.when.apply(k,a).register("mix:"+f,function(){var a=[].slice.call(arguments);return t||u||~m||p.length?{capabilities:v,cardModuleFactory:function(b, c){b=g(a,b,c);b.P=k;return b},require:~m?q:void 0}:g(a,[],function(){})});(t||u)&&k.when("mix:@amzn/mix.client-runtime","mix:"+f).execute(function(a,b){a.registerCapabilityModule(f,b)});k.when("mix:"+f).register("xcp:"+f,function(a){return a});var q=function(a,b,c){try{var e=-1<f.indexOf("/")?f.split("/")[0]:f,d=a[0],g=d.lastIndexOf("./",0)?d:e+"/"+d.substr(2),h=g.lastIndexOf("@p/",0)?"mix:"+g:g.substr(3);k.when(h).execute(function(a){try{b(a)}catch(x){c(x)}})}catch(w){c(w)}}}}"use strict";var r= {};b.mix_d||((b.Promise?P:P.when("3p-promise")).register("@p/promise-is-ready",function(a){b.Promise=b.Promise||a}),(Array.prototype.includes?P:P.when("a-polyfill")).register("@p/polyfill-is-ready",function(){}),b.mix_d=function(a,b,d){P.when("@p/promise-is-ready","@p/polyfill-is-ready").execute("@p/mix-d-deps",function(){q(a,b,d)})},b.xcp_d=b.mix_d,P.when("mix:@amzn/mix.client-runtime").execute(function(a){P.declare("xcp:@xcp/runtime",a)}));b.mixTimeout||(b.mixTimeout=function(a,e,d){b.mixCardInitTimeouts|| (b.mixCardInitTimeouts={});b.mixCardInitTimeouts[e]&&clearTimeout(b.mixCardInitTimeouts[e]);b.mixCardInitTimeouts[e]=setTimeout(function(){P.log("Client-side initialization timeout","WARN",a)},d)});b.mix_csa_map=b.mix_csa_map||{};b.mix_csa_internal=b.mix_csa_internal||function(a,e,d){return b.mix_csa_map[e]=b.mix_csa_map[e]||b.csa(a,d)};b.mix_csa_internal_key=b.mix_csa_internal_key||function(a,b){for(var d="",e=0;e<b.length;e++){var c=b[e];void 0!==a[c]&&"object"!==typeof a[c]&&(d+=c+":"+a[c]+",")}if(!d)throw Error("bad mix-csa key gen."); return d};b.mix_csa_event=b.mix_csa_event||function(a){try{var e=b.mix_csa_internal_key(a,["producerId"])}catch(d){return P.logError(d,"MIX C005","WARN",void 0),function(){}}try{return b.mix_csa_internal("Events",e,a)}catch(d){return P.logError(d,"MIX C004","WARN",e),function(){}}};b.mix_csa=b.mix_csa||function(a,e){try{e=e||"";var d=document.querySelectorAll(a);if(1<d.length)for(var g=0;g<d.length;g++){if(d[g].querySelector(e)){var c=d[g];break}}else 1===d.length&&(c=d[0]);if(!c)throw Error(" "); return b.mix_csa_internal("Content",a,{element:c})}catch(f){return P.logError(f,"MIX C004","WARN",a),function(){}}}})(window); (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('sp.load.js').execute(function() { (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/61xJcNKKLXL.js?AUIClients/AmazonUIjQuery'); (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/11zuylp74DL._RC|11Y+5x+kkTL.js,51kOP+E+ESL.js,11yKORv-GTL.js,11na7Dl1tFL.js,21uGjv2MRDL.js,01VRMV3FBdL.js,21u+kGQyRqL.js,012FVc3131L.js,11aD5q6kNBL.js,11rRjDLdAVL.js,51zH7YD-TsL.js,11nAhXzgUmL.js,11dIAzUNpxL.js,11lJo6kFM7L.js,116PwN2VXHL.js,21+WA5wfjfL.js,0190vxtlzcL.js,51QAvGpHBdL.js,01JYHc2oIlL.js,31nfKXylf6L.js,01ktRCtOqKL.js,01ASnt2lbqL.js,11bEz2VIYrL.js,31o2NGTXThL.js,01rpauTep4L.js,31N+6dLod0L.js,01tvglXfQOL.js,11+FwJUUPNL.js,014gnDeJDsL.js,11vb6P5C5AL.js,015+pUPweLL.js_.js?AUIClients/AmazonUI#trident'); (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/51tQKx1B9KL.js?AUIClients/CardJsRuntimeBuzzCopyBuild'); }); </script> <!-- sp:end-feature:aui-assets --> <!-- sp:feature:cookie-consent-banner --> <script>(function(){window.__privcon_consent_banner_type="4";P.register("banner-consent-ready");})();</script> <!-- sp:end-feature:cookie-consent-banner --> <!-- sp:feature:cookie-consent-assets --> <!-- sp:end-feature:cookie-consent-assets --> <link rel="stylesheet" href="https://m.media-amazon.com/images/I/01eNCfW-QCL.css?AUIClients/PRIVCONAssets-spConsentBanner#trident" /> <script> (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/21JHNmyC8BL.js?AUIClients/PRIVCONAssets-spConsentBanner'); </script> <!-- sp:feature:cookie-consent-js-stub --> <script src="https://m.media-amazon.com/images/I/11J1WJh9jNL.js?AUIClients/PRIVCONAssets-stub" crossorigin="anonymous"></script> <!-- sp:end-feature:cookie-consent-js-stub --> <!-- sp:feature:nav-inline-css --> <!-- NAVYAAN CSS --> <style type="text/css"> .nav-sprite-v1 .nav-sprite, .nav-sprite-v1 .nav-icon { background-image: url(https://m.media-amazon.com/images/G/08/gno/sprites/nav-sprite-global-1x-reorg-privacy._CB541717678_.png); background-position: 0 1000px; background-repeat: repeat-x; } .nav-spinner { background-image: url(https://m.media-amazon.com/images/G/08/javascripts/lib/popover/images/snake._CB485935558_.gif); background-position: center center; background-repeat: no-repeat; } .nav-timeline-icon, .nav-access-image, .nav-timeline-prime-icon { background-image: url(https://m.media-amazon.com/images/G/08/gno/sprites/timeline_sprite_1x._CB439968151_.png); background-repeat: no-repeat; } </style> <link rel="stylesheet" href="https://images-eu.ssl-images-amazon.com/images/I/41oqEIFYdwL._RC|71WKCtKTHgL.css,51uyq4Mg2YL.css,41GRDZzxHWL.css,01FcI3FsaiL.css,21Hc1s0-E4L.css,31fpQAEX7EL.css,21ZqloP4ScL.css,41EtvNY2OrL.css,11HvNwu+WGL.css,31riy8d8MpL.css,01H8CHB5aiL.css,21KQnzhmfTL.css,415g7iDx4VL.css_.css?AUIClients/NavDesktopUberAsset#desktop.language-fr.fr.trident.488657-T1.878681-T1.1089549-T1.1126664-T1" /> <!-- sp:end-feature:nav-inline-css --> <!-- sp:feature:host-assets --> <!doctype html><!--[if IE 8]><html data-19ax5a9jf="dingo" class="a-no-js a-lt-ie10 a-lt-ie9 a-ie8"><![endif]--><!--[if IE 9]><html data-19ax5a9jf="dingo" class="a-no-js a-lt-ie10 a-ie9"><![endif]--><!--[if !(IE 8)&!(IE 9)]><!--><html data-19ax5a9jf="dingo" class="a-no-js"><!--<![endif]--> <head><script>var aPageStart = (new Date()).getTime();</script><meta charset="utf-8"/> <title dir="ltr">Amazon.fr: 4 nettoyeurs de toilettes pour 8 € promotion</title> </head> <script type="text/javascript">window.P && P.register('sp.load.js');</script> <!--&&&Portal&Delimiter&&&--><!-- sp:end-feature:host-assets --> <!-- sp:feature:encrypted-slate-token --> <meta name='encrypted-slate-token' content='AnYxoYwulQq9wpjt5fiCv2/c8LBuG/N3Hw1QD3y3O5xcG4UZpuIIe32pa1pEcB50HTuFzJFjd3OybTYgUKi0QDWmq6go4jcweZnZJwS3OfvJju3N1ccDp4TF/FFrojFrdaUPEQcp4OlkE02uA6Ckm+nUBzF15aeOpxDB9YIE1BgtdC9T/MMczv9rzKn9SjjK0FG+hBXMd7xRcszQWSHAXO6C4QaeeS4y3cUzU6H9x7LvS4sraVoatpYLC6MBHZSN80PRaNnCk2hJ'> <!-- sp:end-feature:encrypted-slate-token --> <!-- sp:feature:csm:head-close --> <script type='text/javascript'> window.ue_ihe = (window.ue_ihe || 0) + 1; if (window.ue_ihe === 1) { (function(c){c&&1===c.ue_jsmtf&&"object"===typeof c.P&&"function"===typeof c.P.when&&c.P.when("mshop-interactions").execute(function(e){"object"===typeof e&&"function"===typeof e.addListener&&e.addListener(function(b){"object"===typeof b&&"ORIGIN"===b.dataSource&&"number"===typeof b.clickTime&&"object"===typeof b.events&&"number"===typeof b.events.pageVisible&&(c.ue_jsmtf_interaction={pv:b.events.pageVisible,ct:b.clickTime})})})})(ue_csm); (function(c,e,b){function m(a){f||(f=d[a.type].id,"undefined"===typeof a.clientX?(h=a.pageX,k=a.pageY):(h=a.clientX,k=a.clientY),2!=f||l&&(l!=h||n!=k)?(r(),g.isl&&e.setTimeout(function(){p("at",g.id)},0)):(l=h,n=k,f=0))}function r(){for(var a in d)d.hasOwnProperty(a)&&g.detach(a,m,d[a].parent)}function s(){for(var a in d)d.hasOwnProperty(a)&&g.attach(a,m,d[a].parent)}function t(){var a="";!q&&f&&(q=1,a+="&ui="+f);return a}var g=c.ue,p=c.uex,q=0,f=0,l,n,h,k,d={click:{id:1,parent:b},mousemove:{id:2, parent:b},scroll:{id:3,parent:e},keydown:{id:4,parent:b}};g&&p&&(s(),g._ui=t)})(ue_csm,window,document); (function(s,l){function m(b,e,c){c=c||new Date(+new Date+t);c="expires="+c.toUTCString();n.cookie=b+"="+e+";"+c+";path=/"}function p(b){b+="=";for(var e=n.cookie.split(";"),c=0;c<e.length;c++){for(var a=e[c];" "==a.charAt(0);)a=a.substring(1);if(0===a.indexOf(b))return decodeURIComponent(a.substring(b.length,a.length))}return""}function q(b,e,c){if(!e)return b;-1<b.indexOf("{")&&(b="");for(var a=b.split("&"),f,d=!1,h=!1,g=0;g<a.length;g++)f=a[g].split(":"),f[0]==e?(!c||d?a.splice(g,1):(f[1]=c,a[g]= f.join(":")),h=d=!0):2>f.length&&(a.splice(g,1),h=!0);h&&(b=a.join("&"));!d&&c&&(0<b.length&&(b+="&"),b+=e+":"+c);return b}var k=s.ue||{},t=3024E7,n=ue_csm.document||l.document,r=null,d;a:{try{d=l.localStorage;break a}catch(u){}d=void 0}k.count&&k.count("csm.cookieSize",document.cookie.length);k.cookie={get:p,set:m,updateCsmHit:function(b,e,c){try{var a;if(!(a=r)){var f;a:{try{if(d&&d.getItem){f=d.getItem("csm-hit");break a}}catch(k){}f=void 0}a=f||p("csm-hit")||"{}"}a=q(a,b,e);r=a=q(a,"t",+new Date); try{d&&d.setItem&&d.setItem("csm-hit",a)}catch(h){}m("csm-hit",a,c)}catch(g){"function"==typeof l.ueLogError&&ueLogError(Error("Cookie manager: "+g.message),{logLevel:"WARN"})}}}})(ue_csm,window); (function(l,e){function c(b){b="";var c=a.isBFT?"b":"s",d=""+a.oid,g=""+a.lid,h=d;d!=g&&20==g.length&&(c+="a",h+="-"+g);a.tabid&&(b=a.tabid+"+");b+=c+"-"+h;b!=f&&100>b.length&&(f=b,a.cookie?a.cookie.updateCsmHit(m,b+("|"+ +new Date)):e.cookie="csm-hit="+b+("|"+ +new Date)+n+"; path=/")}function p(){f=0}function d(b){!0===e[a.pageViz.propHid]?f=0:!1===e[a.pageViz.propHid]&&c({type:"visible"})}var n="; expires="+(new Date(+new Date+6048E5)).toGMTString(),m="tb",f,a=l.ue||{},k=a.pageViz&&a.pageViz.event&& a.pageViz.propHid;a.attach&&(a.attach("click",c),a.attach("keyup",c),k||(a.attach("focus",c),a.attach("blur",p)),k&&(a.attach(a.pageViz.event,d,e),d({})));a.aftb=1})(ue_csm,ue_csm.document); ue_csm.ue.stub(ue,"impression"); ue.stub(ue,"trigger"); if(window.ue&&uet) { uet('bb'); } } </script> <script>window.ue && ue.count && ue.count('CSMLibrarySize', 3172)</script> <!-- sp:end-feature:csm:head-close --> <!-- sp:feature:head-close --> <script> window.P && P.register('bb'); if (typeof ues === 'function') { ues('t0', 'portal-bb', new Date()); ues('ctb', 'portal-bb', 1); } </script> </head><!-- sp:end-feature:head-close --> <!-- sp:feature:start-body --> <body class="a-m-fr a-aui_72554-c a-aui_a11y_6_837773-c a-aui_killswitch_csa_logger_372963-c a-aui_pci_risk_banner_210084-c a-aui_template_weblab_cache_333406-c a-aui_tnr_v2_180836-c a-bw_aui_cxc_alert_measurement_1074111-c"><div id="a-page"><script type="a-state" data-a-state="{"key":"a-wlab-states"}">{"AUI_A11Y_6_837773":"C","AUI_TNR_V2_180836":"C","AUI_TEMPLATE_WEBLAB_CACHE_333406":"C","BW_AUI_CXC_ALERT_MEASUREMENT_1074111":"C","AUI_72554":"C","AUI_KILLSWITCH_CSA_LOGGER_372963":"C","AUI_PCI_RISK_BANNER_210084":"C"}</script><script>typeof uex === 'function' && uex('ld', 'portal-bb', {wb: 1})</script><!-- sp:end-feature:start-body --> <!-- sp:feature:csm:body-open --> <img height="1" width="1" style='display:none;visibility:hidden;' src='//fls-eu.amazon.fr/1/batch/1/OP/A13V1IB3VIYZZH:258-2477753-5488862:74HCJVK5ZY1QW82XSHCC$uedata=s:%2Frd%2Fuedata%3Fstaticb%26id%3D74HCJVK5ZY1QW82XSHCC:0' alt="" onload="window.ue_sbl && window.ue_sbl();"/> <script> !function(){function n(n,t){var r=i(n);return t&&(r=r("instance",t)),r}var r=[],c=0,i=function(t){return function(){var n=c++;return r.push([t,[].slice.call(arguments,0),n,{time:Date.now()}]),i(n)}};n._s=r,this.csa=n}();; csa('Config', {}); if (window.csa) { csa("Config", { 'Application': 'Retail:Prod:www.amazon.fr', 'Events.Namespace': 'csa', 'ObfuscatedMarketplaceId': 'A13V1IB3VIYZZH', 'Events.SushiEndpoint': 'https://unagi.amazon.fr/1/events/com.amazon.csm.csa.prod', 'CacheDetection.RequestID': "74HCJVK5ZY1QW82XSHCC", 'CacheDetection.Callback': window.ue && ue.reset, 'LCP.elementDedup': 1, 'lob': '1' }); csa("Events")("setEntity", { page: {requestId: "74HCJVK5ZY1QW82XSHCC", meaningful: "interactive"}, session: {id: "258-2477753-5488862"} }); } !function(r){var e,i,o="splice",u=r.csa,f={},c={},a=r.csa._s,s=0,l=0,g=-1,h={},v={},d={},n=Object.keys,p=function(){};function t(n,t){return u(n,t)}function m(n,t){var r=c[n]||{};k(r,t),c[n]=r,l++,S(U,0)}function w(n,t,r){var i=!0;return t=D(t),r&&r.buffered&&(i=(d[n]||[]).every(function(n){return!1!==t(n)})),i?(h[n]||(h[n]=[]),h[n].push(t),function(){!function(n,t){var r=h[n];r&&r[o](r.indexOf(t),1)}(n,t)}):p}function b(n,t){if(t=D(t),n in v)return t(v[n]),p;return w(n,function(n){return t(n),!1})}function y(n,t){if(u("Errors")("logError",n),f.DEBUG)throw t||n}function E(){return Math.abs(4294967295*Math.random()|0).toString(36)}function D(n,t){return function(){try{return n.apply(this,arguments)}catch(n){y(n.message||n,n)}}}function S(n,t){return r.setTimeout(D(n),t)}function U(){for(var n=0;n<a.length;){var t=a[n],r=t[0]in c;if(!r&&!i)return void(s=a.length);r?(a[o](s=n,1),I(t)):n++}g=l}function I(n){var t=c[n[0]],r=n[1],i=r[0];if(!t||!t[i])return y("Undefined function: "+t+"/"+i);e=n[3],c[n[2]]=t[i].apply(t,r.slice(1))||{},e=0}function O(){i=1,U()}function k(t,r){n(r).forEach(function(n){t[n]=r[n]})}b("$beforeunload",O),m("Config",{instance:function(n){k(f,n)}}),u.plugin=D(function(n){n(t)}),t.config=f,t.register=m,t.on=w,t.once=b,t.blank=p,t.emit=function(n,t,r){for(var i=h[n]||[],e=0;e<i.length;)!1===i[e](t)?i[o](e,1):e++;v[n]=t||{},r&&r.buffered&&(d[n]||(d[n]=[]),100<=d[n].length&&d[n].shift(),d[n].push(t||{}))},t.UUID=function(){return[E(),E(),E(),E()].join("-")},t.time=function(n){var t=e?new Date(e.time):new Date;return"ISO"===n?t.toISOString():t.getTime()},t.error=y,t.warn=function(n,t){if(u("Errors")("logWarn",n),f.DEBUG)throw t||n},t.exec=D,t.timeout=S,t.interval=function(n,t){return r.setInterval(D(n),t)},(t.global=r).csa._s.push=function(n){n[0]in c&&(!a.length||i)?(I(n),a.length&&g!==l&&U()):a[o](s++,0,n)},U(),S(function(){S(O,f.SkipMissingPluginsTimeout||5e3)},1)}("undefined"!=typeof window?window:global);csa.plugin(function(o){var f="addEventListener",e="requestAnimationFrame",t=o.exec,r=o.global,u=o.on;o.raf=function(n){if(r[e])return r[e](t(n))},o.on=function(n,e,t,r){if(n&&"function"==typeof n[f]){var i=o.exec(t);return n[f](e,i,r),function(){n.removeEventListener(e,i,r)}}return"string"==typeof n?u(n,e,t,r):o.blank}});csa.plugin(function(o){var t,n,r={},e="localStorage",c="sessionStorage",a="local",i="session",u=o.exec;function s(e,t){var n;try{r[t]=!!(n=o.global[e]),n=n||{}}catch(e){r[t]=!(n={})}return n}function f(){t=t||s(e,a),n=n||s(c,i)}function l(e){return e&&e[i]?n:t}o.store=u(function(e,t,n){f();var o=l(n);return e?t?void(o[e]=t):o[e]:Object.keys(o)}),o.storageSupport=u(function(){return f(),r}),o.deleteStored=u(function(e,t){f();var n=l(t);if("function"==typeof e)for(var o in n)n.hasOwnProperty(o)&&e(o,n[o])&&delete n[o];else delete n[e]})});csa.plugin(function(n){n.types={ovl:function(n){var r=[];if(n)for(var i in n)n.hasOwnProperty(i)&&r.push(n[i]);return r}}});csa.plugin(function(a){var e=a.config,n="Errors",c="fcsmln",s=e["KillSwitch."+n];function r(n){return function(e){a("Metrics",{producerId:"csa",dimensions:{message:e}})("recordMetric",n,1)}}function t(r){var t,o,l=a("Events",{producerId:r.producerId,lob:e.lob||"0"}),i=["name","type","csm","adb"],u={url:"pageURL",file:"f",line:"l",column:"c"};this.log=function(e){if(!s&&!function(e){if(!e)return!0;for(var n in e)return!1;return!0}(e)){var n=r.logOptions||{ent:{page:["pageType","subPageType","requestId"]}};l("log",function(n){return t=a.UUID(),o={messageId:t,schemaId:r.schemaId||"<ns>.Error.6",errorMessage:n.m||null,attribution:n.attribution||null,logLevel:"FATAL",url:null,file:null,line:null,column:null,stack:n.s||[],context:n.cinfo||{},metadata:{}},n.logLevel&&(o.logLevel=""+n.logLevel),i.forEach(function(e){n[e]&&(o.metadata[e]=n[e])}),c in n&&(o.metadata[c]=n[c]+""),"INFO"===n.logLevel||Object.keys(u).forEach(function(e){"number"!=typeof n[u[e]]&&"string"!=typeof n[u[e]]||(o[e]=""+n[u[e]])}),o}(e),n)}}}a.register(n,{instance:function(e){return new t(e||{})},logError:r("jsError"),logWarn:r("jsWarn")})});csa.plugin(function(o){var r,e,n,t,a,i="function",u="willDisappear",f="$app.",p="$document.",c="focus",s="blur",d="active",l="resign",$=o.global,b=o.exec,m=o.config["Transport.AnonymizeRequests"]||!1,g=o("Events"),h=$.location,v=$.document||{},y=$.P||{},P=(($.performance||{}).navigation||{}).type,w=o.on,k=o.emit,E=v.hidden,T={};h&&v&&(w($,"beforeunload",D),w($,"pagehide",D),w(v,"visibilitychange",R(p,function(){return v.visibilityState||"unknown"})),w(v,c,R(p+c)),w(v,s,R(p+s)),y.when&&y.when("mash").execute(function(e){e&&(w(e,"appPause",R(f+"pause")),w(e,"appResume",R(f+"resume")),R(f+"deviceready")(),$.cordova&&$.cordova.platformId&&R(f+cordova.platformId)(),w(v,d,R(f+d)),w(v,l,R(f+l)))}),e=$.app||{},n=b(function(){k(f+"willDisappear"),D()}),a=typeof(t=e[u])==i,e[u]=b(function(){n(),a&&t()}),$.app||($.app=e),"complete"===v.readyState?A():w($,"load",A),E?S():x(),o.on("$app.blur",S),o.on("$app.focus",x),o.on("$document.blur",S),o.on("$document.focus",x),o.on("$document.hidden",S),o.on("$document.visible",x),o.register("SPA",{newPage:I}),I({transitionType:{0:"hard",1:"refresh",2:"back-button"}[P]||"unknown"}));function I(n,e){var t=!!r,a=(e=e||{}).keepPageAttributes;t&&(k("$beforePageTransition"),k("$pageTransition")),t&&!a&&g("removeEntity","page"),r=o.UUID(),a?T.id=r:T={schemaId:"<ns>.PageEntity.2",id:r,url:m?h.href.split("?")[0]:h.href,server:h.hostname,path:h.pathname,referrer:m?v.referrer.split("?")[0]:v.referrer,title:v.title},Object.keys(n||{}).forEach(function(e){T[e]=n[e]}),g("setEntity",{page:T}),k("$pageChange",T,{buffered:1}),t&&k("$afterPageTransition")}function A(){k("$load"),k("$ready"),k("$afterload")}function D(){k("$ready"),k("$beforeunload"),k("$unload"),k("$afterunload")}function S(){E||(k("$visible",!1,{buffered:1}),E=!0)}function x(){E&&(k("$visible",!0,{buffered:1}),E=!1)}function R(n,t){return b(function(){var e=typeof t==i?n+t():n;k(e)})}});csa.plugin(function(c){var e="Events",n="UNKNOWN",s="id",a="all",i="messageId",o="timestamp",u="producerId",r="application",f="obfuscatedMarketplaceId",d="entities",l="schemaId",p="version",v="attributes",g="<ns>",b="lob",t="session",h=c.config,m=(c.global.location||{}).host,I=h[e+".Namespace"]||"csa_other",y=h.Application||"Other"+(m?":"+m:""),O=h["Transport.AnonymizeRequests"]||!1,E=c("Transport"),U={},A=function(e,t){Object.keys(e).forEach(t)};function N(n,i,o){A(i,function(e){var t=o===a||(o||{})[e];e in n||(n[e]={version:1,id:i[e][s]||c.UUID()}),S(n[e],i[e],t)})}function S(t,n,i){A(n,function(e){!function(e,t,n){return"string"!=typeof t&&e!==p?c.error("Attribute is not of type string: "+e):!0===n||1===n||(e===s||!!~(n||[]).indexOf(e))}(e,n[e],i)||(t[e]=n[e])})}function k(o,e,r){A(e,function(e){var t=o[e];if(t[l]){var n={},i={};n[s]=t[s],n[u]=t[u]||r[u],n[l]=t[l],n[p]=t[p]++,n[v]=i,w(n,r),S(i,t,1),D(i),E("log",n)}})}function w(e,t){e[o]=function(e){return"number"==typeof e&&(e=new Date(e).toISOString()),e||c.time("ISO")}(e[o]),e[i]=e[i]||c.UUID(),e[r]=y,e[f]=h.ObfuscatedMarketplaceId||n,e[l]=e[l].replace(g,I),t&&t[b]&&(e[b]=t[b])}function D(e){delete e[p],delete e[l],delete e[u]}function T(o){var r={};this.log=function(e,t){var n={},i=(t||{}).ent;return e?"string"!=typeof e[l]?c.error("A valid schema id is required for the event"):(w(e,o),N(n,U,i),N(n,r,i),N(n,e[d]||{},i),A(n,function(e){D(n[e])}),e[u]=o[u],e[d]=n,t&&t[b]&&(e[b]=t[b]),void E("log",e,t)):c.error("The event cannot be undefined")},this.setEntity=function(e){O&&delete e[t],N(r,e,a),k(r,e,o)}}h["KillSwitch."+e]||c.register(e,{setEntity:function(e){O&&delete e[t],c.emit("$entities.set",e,{buffered:1}),N(U,e,a),k(U,e,{producerId:"csa",lob:h[b]||"0"})},removeEntity:function(e){delete U[e]},instance:function(e){return new T(e)}})});csa.plugin(function(s){var c,g="Transport",l="post",f="preflight",r="csa.cajun.",i="store",a="deleteStored",u="sendBeacon",t="__merge",e="messageId",n=".FlushInterval",o=0,d=s.config[g+".BufferSize"]||2e3,h=s.config[g+".RetryDelay"]||1500,p=s.config[g+".AnonymizeRequests"]||!1,v={},y=0,m=[],E=s.global,R=E.document,b=s.timeout,k=E.Object.keys,w=s.config[g+n]||5e3,I=w,O=s.config[g+n+".BackoffFactor"]||1,S=s.config[g+n+".BackoffLimit"]||3e4,B=0;function T(n){if(864e5<s.time()-+new Date(n.timestamp))return s.warn("Event is too old: "+n);y<d&&(n[e]in v||(v[n[e]]=n,y++),"function"==typeof n[t]&&n[t](v[n[e]]),!B&&o&&(B=b(q,function(){var n=I;return I=Math.min(n*O,S),n}())))}function q(){m.forEach(function(e){var o=[];k(v).forEach(function(n){var t=v[n];e.accepts(t)&&o.push(t)}),o.length&&(e.chunks?e.chunks(o).forEach(function(n){D(e,n)}):D(e,o))}),v={},B=0}function D(t,e){function o(){s[a](r+n)}var n=s.UUID();s[i](r+n,JSON.stringify(e)),[function(n,t,e){var o=E.navigator||{},r=E.cordova||{};if(p)return 0;if(!o[u]||!n[l])return 0;n[f]&&r&&"ios"===r.platformId&&!c&&((new Image).src=n[f]().url,c=1);var i=n[l](t);if(!i.type&&o[u](i.url,i.body))return e(),1},function(n,t,e){if(!n[l])return 0;var o=n[l](t),r=o.url,i=o.body,c=o.type,f=new XMLHttpRequest,a=0;function u(n,t,e){f.open("POST",n),f.withCredentials=!p,e&&f.setRequestHeader("Content-Type",e),f.send(t)}return f.onload=function(){f.status<299?e():s.config[g+".XHRRetries"]&&a<3&&b(function(){u(r,i,c)},++a*h)},u(r,i,c),1}].some(function(n){try{return n(t,e,o)}catch(n){}})}k&&(s.once("$afterload",function(){o=1,function(e){(s[i]()||[]).forEach(function(n){if(!n.indexOf(r))try{var t=s[i](n);s[a](n),JSON.parse(t).forEach(e)}catch(n){s.error(n)}})}(T),s.on(R,"visibilitychange",q,!1),q()}),s.once("$afterunload",function(){o=1,q()}),s.on("$afterPageTransition",function(){y=0,I=w}),s.register(g,{log:T,register:function(n){m.push(n)}}))});csa.plugin(function(n){var r=n.config["Events.SushiEndpoint"];n("Transport")("register",{accepts:function(n){return n.schemaId},post:function(n){var t=n.map(function(n){return{data:n}});return{url:r,body:JSON.stringify({events:t})}},preflight:function(){var n,t=/\/\/(.*?)\//.exec(r);return t&&t[1]&&(n="https://"+t[1]+"/ping"),{url:n}},chunks:function(n){for(var t=[];500<n.length;)t.push(n.splice(0,500));return t.push(n),t}})});csa.plugin(function(n){var t,a,o,r,e=n.config,i="PageViews",d=e[i+".ImpressionMinimumTime"]||1e3,s="hidden",c="innerHeight",l="innerWidth",g="renderedTo",f=g+"Viewed",m=g+"Meaningful",u=g+"Impressed",p=1,h=2,v=3,w=4,P=5,y="loaded",I=7,b=8,T=n.global,S=n.on,E=n("Events",{producerId:"csa",lob:e.lob||"0"}),K=T.document,V={},$={},M=P,R=e["KillSwitch."+i],H=e["KillSwitch.PageRender"],W=e["KillSwitch.PageImpressed"];function j(e){if(!V[I]){if(V[e]=n.time(),e!==v&&e!==y||(t=t||V[e]),t&&M===w){if(a=a||V[e],!R)(i={})[m]=t-o,i[f]=a-o,k("PageView.5",i);r=r||n.timeout(x,d)}var i;if(e!==P&&e!==p&&e!==h||(clearTimeout(r),r=0),e!==p&&e!==h||H||k("PageRender.4",{transitionType:e===p?"hard":"soft"}),e===I&&!W)(i={})[m]=t-o,i[f]=a-o,i[u]=V[e]-o,k("PageImpressed.3",i)}}function k(e,i){$[e]||(i.schemaId="<ns>."+e,E("log",i,{ent:"all"}),$[e]=1)}function q(){0===T[c]&&0===T[l]?(M=b,n("Events")("setEntity",{page:{viewport:"hidden-iframe"}})):M=K[s]?P:w,j(M)}function x(){j(I),r=0}function z(){var e=o?h:p;V={},$={},a=t=0,o=n.time(),j(e),q()}function A(){var e=K.readyState;"interactive"===e&&j(v),"complete"===e&&j(y)}K&&void 0!==K[s]?(z(),S(K,"visibilitychange",q,!1),S(K,"readystatechange",A,!1),S("$afterPageTransition",z),S("$timing:loaded",A),n.once("$load",A)):n.warn("Page visibility not supported")});csa.plugin(function(c){var s=c.config["Interactions.ParentChainLength"]||35,e="click",r="touches",f="timeStamp",o="length",u="pageX",g="pageY",p="pageXOffset",h="pageYOffset",m=250,v=5,d=200,l=.5,t={capture:!0,passive:!0},X=c.global,Y=c.emit,n=c.on,x=X.Math.abs,a=(X.document||{}).documentElement||{},y={x:0,y:0,t:0,sX:0,sY:0},N={x:0,y:0,t:0,sX:0,sY:0};function b(t){if(t.id)return"//*[@id='"+t.id+"']";var e=function(t){var e,n=1;for(e=t.previousSibling;e;e=e.previousSibling)e.nodeName===t.nodeName&&(n+=1);return n}(t),n=t.nodeName;return 1!==e&&(n+="["+e+"]"),t.parentNode&&(n=b(t.parentNode)+"/"+n),n}function I(t,e,n){var a=c("Content",{target:n}),i={schemaId:"<ns>.ContentInteraction.2",interaction:t,interactionData:e,messageId:c.UUID()};if(n){var r=b(n);r&&(i.attribution=r);var o=function(t){for(var e=t,n=e.tagName,a=!1,i=t?t.href:null,r=0;r<s;r++){if(!e||!e.parentElement){a=!0;break}n=(e=e.parentElement).tagName+"/"+n,i=i||e.href}return a||(n=".../"+n),{pc:n,hr:i}}(n);o.pc&&(i.interactionData.parentChain=o.pc),o.hr&&(i.interactionData.href=o.hr)}a("log",i),Y("$content.interaction",{e:i,w:a})}function i(t){I(e,{interactionX:""+t.pageX,interactionY:""+t.pageY},t.target)}function C(t){if(t&&t[r]&&1===t[r][o]){var e=t[r][0];N=y={e:t.target,x:e[u],y:e[g],t:t[f],sX:X[p],sY:X[h]}}}function D(t){if(t&&t[r]&&1===t[r][o]&&y&&N){var e=t[r][0],n=t[f],a=n-N.t,i={e:t.target,x:e[u],y:e[g],t:n,sX:X[p],sY:X[h]};N=i,d<=a&&(y=i)}}function E(t){if(t){var e=x(y.x-N.x),n=x(y.y-N.y),a=x(y.sX-N.sX),i=x(y.sY-N.sY),r=t[f]-y.t;if(m<1e3*e/r&&v<e||m<1e3*n/r&&v<n){var o=n<e;o&&a&&e*l<=a||!o&&i&&n*l<=i||I((o?"horizontal":"vertical")+"-swipe",{interactionX:""+y.x,interactionY:""+y.y,endX:""+N.x,endY:""+N.y},y.e)}}}n(a,e,i,t),n(a,"touchstart",C,t),n(a,"touchmove",D,t),n(a,"touchend",E,t)});csa.plugin(function(s){var a,o,t,c,e,n="MutationObserver",l="observe",i="disconnect",f="_csa_flt",b="_csa_llt",d="_csa_mr",p="_csa_mi",v="lastChild",m="length",h={childList:!0,subtree:!0},_=10,g=25,r=1e3,y=4,u=s.global,k=u.document,w=k.body||k.documentElement,I=Date.now,L=[],O=[],B=[],M=0,x=0,C=0,D=1,E=[],F=[],S=0,V=s.blank;I&&u[n]&&(M=0,o=new u[n]($),(t=new u[n](Y))[l](w,{attributes:!0,subtree:!0,attributeFilter:["src"],attributeOldValue:!0}),V=s.on(u,"scroll",j,{passive:!0}),s.once("$ready",A),D&&(z(),e=s.interval(q,r)),s.register("SpeedIndexBuffers",{getBuffers:function(e){e&&(A(),j(),e(M,E,L,O,B),o&&o[i](),t&&t[i](),V())},registerListener:function(e){a=e},replayModuleIsLive:function(){s.timeout(A,0)}}));function Y(e){L.push({t:I(),m:e})}function $(e){O.push({t:I(),m:e}),C=1,a&&a()}function j(){C&&(B.push({t:I(),y:x}),x=u.pageYOffset,C=0)}function q(){var e=I();(!c||r<e-c)&&z()}function z(){for(var e=w,t=I(),n=[],i=[],r=0,u=0;e;)e[f]?++r:(e[f]=t,n.push(e),u=1),i[m]<y&&i.push(e),e[p]=S,e[b]=t,e=e[v];u&&(r<F[m]&&function(e){for(var t=e,n=F[m];t<n;t++){var i=F[t];if(i){if(i[d])break;if(i[p]<S){i[d]=1,o[l](i,h);break}}}}(r),F=i,E.push({t:t,m:n}),++S,C=u,a&&a()),D&&s.timeout(z,u?_:g),c=t}function A(){D&&(D=0,e&&u.clearInterval(e),e=null,z(),o[l](w,h))}}); var ue_dsbl_ss_um = false; csa.plugin(function(b){var a=b.global,e=a.uet,g=a.uex,h=a.ue,c=a.Object,k=0,d={largestContentfulPaint:"lcp",visuallyLoaded50:"vl50",visuallyLoaded90:"vl90",visuallyLoaded100:"vl100"};a.ue_dsbl_ss_um||(d.speedIndex="si",d.atfSpeedIndex="atfsi");b&&e&&g&&c.keys&&h&&(b.once("$ditched.beforemitigation",function(){k=1}),c.keys(d).forEach(function(a){b.on("$timing:"+a,function(b){var f=d[a];if(h.isl||k){var c="csa:"+f;e(f,c,void 0,b);g("at",c)}else e(f,void 0,void 0,b)})}))}); window.rx = { 'rid':'74HCJVK5ZY1QW82XSHCC', 'sid':'258-2477753-5488862', 'c':{ 'rxp':'/rd/uedata' }}; </script> <script>window.ue && ue.count && ue.count('CSMLibrarySize', 16252)</script> <!-- sp:end-feature:csm:body-open --> <!-- sp:feature:cookie-consent-banner --> <span class="a-declarative" data-action="sp-cc" data-csa-c-type="widget" data-csa-c-func-deps="aui-da-sp-cc" data-sp-cc="{"customerId":"null","rejectAllAction":"/privacyprefs/sp/consent/v2/rejectall","sessionId":"258-2477753-5488862","userId":"258-2477753-5488862"}"><form id="sp-cc" method="post" action="/privacyprefs/sp/consent/v2/acceptall"><input type="hidden" name="anti-csrftoken-a2z" value="hEPtal6na4UFx8++deilgYTWCKLiuBt9OseCfoycz2ptAAAAAGeyhrdhN2VjYjQ1OS01ZjY3LTQ4NjMtYTZkZi0zYjJhNGFjODIyMmY="/><input type="hidden" name="timeStamp" value="1739753143552"/><input type="hidden" name="locale" value="fr_FR"/><input type="hidden" name="isMobile" value="false"/><input type="hidden" name="userType" value="UNAUTHENTICATED"/><input type="hidden" name="sessionId" value="258-2477753-5488862"/><input type="hidden" name="treatmentName" value="EXP_OFF"/><input type="hidden" name="marketplace" value="A13V1IB3VIYZZH"/><input type="hidden" name="oCT" value="ads"/><div class="sp-cc-text"><h4 class="a-spacing-small">Cookies et choix publicitaires</h4><p class="a-spacing-none"><p>Si vous y consentez, nous pourrons utiliser vos informations personnelles provenant de ces <a href="/gp/help/customer/display.html?nodeId=T1fdzp9ecINEaVWTyY">Services Amazon</a> pour personnaliser les publicités que nous vous proposons sur d'autres services. Par exemple, nous pourrons utiliser votre historique des vidéos regardées sur Prime Video pour personnaliser les publicités que nous affichons sur nos Boutiques ou sur Fire TV. Nous pourrons également utiliser des informations personnelles provenant de tiers (comme des informations démographiques, par exemple).</p><p>De plus, si vous y consentez, nous utiliserons également des cookies pour compléter votre expérience d'achat dans les boutiques Amazon, comme indiqué dans notre <a href="/gp/help/customer/display.html?nodeId=201890250&ref_=footer_cookies_notice">Politique relative aux cookies</a>. Votre choix s'applique à l'utilisation des cookies publicitaires internes et tiers sur ce service. Les cookies stockent des informations standard relatives à un appareil, telles qu'un identifiant unique, ou y accèdent. Les <a href="/privacyprefs/retail/partners">96 tiers</a> qui utilisent des cookies sur ce service le font dans le but d'afficher et de mesurer des publicités personnalisées, de générer des informations sur l'audience, et de développer et d'améliorer des produits.</p><p>Dans tous les cas, nous utilisons des cookies et des outils similaires, qui sont nécessaires pour vous permettre d'effectuer des achats, d'améliorer votre expérience d'achat et de fournir nos services, comme indiqué dans notre <a href="/gp/help/customer/display.html?nodeId=201890250&ref_=footer_cookies_notice">Politique relative aux cookies</a>. Nous utilisons également ces cookies pour comprendre comment les clients utilisent nos services (par exemple, en mesurant les visites de sites) afin de pouvoir apporter des améliorations. Cliquez sur Refuser pour refuser, ou sur Personnaliser pour faire des choix publicitaires plus détaillés, ou pour en savoir plus. Vous pouvez modifier vos choix à tout moment en accédant à la section <a href="/privacyprefs/retail?oCT=ads&ref_=portal_banner_cpp">Cookies et choix publicitaires</a>. Pour en savoir plus sur la manière dont Amazon utilise les cookies et les informations personnelles, telles que l'historique des commandes sur la Boutique ou l'historique des vidéos regardées, et à quelles fins, consultez notre <a href="/gp/help/customer/display.html?nodeId=201909010&ref_=footer_privacy">Déclaration de confidentialité</a> et notre <a href="/gp/help/customer/display.html?nodeId=201890250&ref_=footer_cookies_notice">Politique relative aux cookies</a>.</p></p><div id="sp-cc-error" class="a-box a-alert-inline a-alert-inline-error aok-hidden a-spacing-top-base" role="alert"><div class="a-box-inner a-alert-container"><i class="a-icon a-icon-alert"></i><div class="a-alert-content">Désolé, un problème s'est produit lors de l'enregistrement de vos préférences. Veuillez réessayer.</div></div></div></div><div class="sp-cc-buttons-container"><div class="sp-cc-buttons"><span class="a-button a-button-primary"><span class="a-button-inner"><input id="sp-cc-accept" tabindex="1" name="accept" class="a-button-input celwidget" type="submit" value="all"/><span class="a-button-text" aria-hidden="true">Accepter</span></span></span><span class="a-button a-button-base"><span class="a-button-inner"><button id="sp-cc-rejectall-link" tabindex="2" class="a-button-text a-text-center celwidget" type="button">Refuser</button></span></span><div class="sp-cc-customize-container"><a id="sp-cc-customize" class="a-size-base a-align-center a-link-normal" href="/privacyprefs/retail?oCT=ads&ref_=portal_banner_cpp">Personnaliser</a></div></div></div></form></span><script>P.register('privcon-sp-consent-banner-ready');</script><!-- sp:end-feature:cookie-consent-banner --> <!-- sp:feature:nav-inline-js --> <!-- NAVYAAN JS --> <script type="text/javascript">!function(n){function e(n,e){return{m:n,a:function(n){return[].slice.call(n)}(e)}}document.createElement("header");var r=function(n){function u(n,r,u){n[u]=function(){a._replay.push(r.concat(e(u,arguments)))}}var a={};return a._sourceName=n,a._replay=[],a.getNow=function(n,e){return e},a.when=function(){var n=[e("when",arguments)],r={};return u(r,n,"run"),u(r,n,"declare"),u(r,n,"publish"),u(r,n,"build"),r.depends=n,r.iff=function(){var r=n.concat([e("iff",arguments)]),a={};return u(a,r,"run"),u(a,r,"declare"),u(a,r,"publish"),u(a,r,"build"),a},r},u(a,[],"declare"),u(a,[],"build"),u(a,[],"publish"),u(a,[],"importEvent"),r._shims.push(a),a};r._shims=[],n.$Nav||(n.$Nav=r("rcx-nav")),n.$Nav.make||(n.$Nav.make=r)}(window)</script><script type="text/javascript"> $Nav.importEvent('navbarJS-beaconbelt'); $Nav.declare('img.sprite', { 'png32': 'https://m.media-amazon.com/images/G/08/gno/sprites/nav-sprite-global-1x-reorg-privacy._CB541717678_.png', 'png32-2x': 'https://m.media-amazon.com/images/G/08/gno/sprites/nav-sprite-global-2x-reorg-privacy._CB541717678_.png' }); $Nav.declare('img.timeline', { 'timeline-icon-2x': 'https://m.media-amazon.com/images/G/08/gno/sprites/timeline_sprite_2x._CB443581408_.png' }); window._navbarSpriteUrl = 'https://m.media-amazon.com/images/G/08/gno/sprites/nav-sprite-global-1x-reorg-privacy._CB541717678_.png'; $Nav.declare('img.pixel', 'https://m.media-amazon.com/images/G/08/x-locale/common/transparent-pixel._CB485934981_.gif'); </script> <img src="https://m.media-amazon.com/images/G/08/gno/sprites/nav-sprite-global-1x-reorg-privacy._CB541717678_.png" style="display:none" alt=""/> <script type="text/javascript">var nav_t_after_preload_sprite = + new Date();</script> <script> (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('navCF').execute(function() { (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://images-eu.ssl-images-amazon.com/images/I/51na2k2njbL._RC|71uj8emQiSL.js,01w4L3R-4KL.js,01mtJ+nefCL.js,7141nHAySCL.js,41jBieyCvYL.js,01wXnKULArL.js,01+pnQJuQ0L.js,21PMP-WgxTL.js,41lXbNNGwGL.js,51HrkAbbpLL.js,31XO9BO1OrL.js,11lw6J7z8iL.js,31+UifI0MIL.js,01VYGE8lGhL.js,01tDwkxEoCL.js_.js?AUIClients/NavDesktopUberAsset#desktop.language-fr.fr.878681-T1.1079958-T1.803398-T1.1089549-T1.948355-T2.1126664-T1.1121224-T1'); }); </script> <!-- sp:end-feature:nav-inline-js --> <!-- sp:feature:nav-skeleton --> <!-- sp:end-feature:nav-skeleton --> <!-- sp:feature:navbar --> <!--Pilu --> <!-- NAVYAAN --> <!-- navmet initial definition --> <script type='text/javascript'> if(window.navmet===undefined) { window.navmet=[]; if (window.performance && window.performance.timing && window.ue_t0) { var t = window.performance.timing; var now = + new Date(); window.navmet.basic = { 'networkLatency': (t.responseStart - t.fetchStart), 'navFirstPaint': (now - t.responseStart), 'NavStart': (now - window.ue_t0) }; window.navmet.push({key:"NavFirstPaintStart",end:+new Date(),begin:window.ue_t0}); } } if (window.ue_t0) { window.navmet.push({key:"NavMainStart",end:+new Date(),begin:window.ue_t0}); } </script> <script type='text/javascript'>window.navmet.tmp=+new Date();</script> <script type='text/javascript'> // Nav start should be logged at this place only if request is NOT progressively loaded. // For progressive loading case this metric is logged as part of skeleton. // Presence of skeleton signals that request is progressively loaded. if(!document.getElementById("navbar-skeleton")) { window.uet && uet('ns'); } window._navbar = (function (o) { o.componentLoaded = o.loading = function(){}; o.browsepromos = {}; o.issPromos = []; return o; }(window._navbar || {})); window._navbar.declareOnLoad = function () { window.$Nav && $Nav.declare('page.load'); }; if (window.addEventListener) { window.addEventListener("load", window._navbar.declareOnLoad, false); } else if (window.attachEvent) { window.attachEvent("onload", window._navbar.declareOnLoad); } else if (window.$Nav) { $Nav.when('page.domReady').run("OnloadFallbackSetup", function () { window._navbar.declareOnLoad(); }); } window.$Nav && $Nav.declare('logEvent.enabled', 'false'); window.$Nav && $Nav.declare('config.lightningDeals', {}); </script> <style mark="aboveNavInjectionCSS" type="text/css"> div#navSwmHoliday.nav-focus {border: none;margin: 0;} #nav-flyout-ewc .nav-flyout-buffer-left { display: none; } #nav-flyout-ewc .nav-flyout-buffer-right { display: none; } </style> <script mark="aboveNavInjectionJS" type="text/javascript"> try { window.$Nav && $Nav.when('$').run('defineIsArray', function(jQuery) { if(jQuery.isArray===undefined) { jQuery.isArray=function(param) { if(param.length===undefined) { return false; } return true; }; } }); window.$Nav && $Nav.when('$','$F','config','logEvent','panels','phoneHome','dataPanel','flyouts.renderPromo','flyouts.sloppyTrigger','flyouts.accessibility','util.mouseOut','util.onKey','debug.param').build('flyouts.buildSubPanels',function($,$F,config,logEvent,panels,phoneHome,dataPanel,renderPromo,createSloppyTrigger,a11yHandler,mouseOutUtility,onKey,debugParam){var flyoutDebug=debugParam('navFlyoutClick');return function(flyout,event){var linkKeys=[];$('.nav-item',flyout.elem()).each(function(){var $item=$(this);linkKeys.push({link:$item,panelKey:$item.attr('data-nav-panelkey')});});if(linkKeys.length===0){return;} var visible=false;var $parent=$('<div class=\'nav-subcats\'></div>').appendTo(flyout.elem());var panelGroup=flyout.getName()+'SubCats';var hideTimeout=null;var sloppyTrigger=createSloppyTrigger($parent);var showParent=function(){if(hideTimeout){clearTimeout(hideTimeout);hideTimeout=null;} if(visible){return;} var height=$('#nav-flyout-shopAll').height();$parent.css({'height': height});$parent.animate({width:'show'},{duration:200,complete:function(){$parent.css({overflow:'visible'});}});visible=true;};var hideParentNow=function(){$parent.stop().css({overflow:'hidden',display:'none',width:'auto',height:'auto'});panels.hideAll({group:panelGroup});visible=false;if(hideTimeout){clearTimeout(hideTimeout);hideTimeout=null;}};var hideParent=function(){if(!visible){return;} if(hideTimeout){clearTimeout(hideTimeout);hideTimeout=null;} hideTimeout=setTimeout(hideParentNow,10);};flyout.onHide(function(){sloppyTrigger.disable();hideParentNow();this.elem().hide();});var addPanel=function($link,panelKey){var panel=dataPanel({className:'nav-subcat',dataKey:panelKey,groups:[panelGroup],spinner:false,visible:false});if(!flyoutDebug){var mouseout=mouseOutUtility();mouseout.add(flyout.elem());mouseout.action(function(){panel.hide();});mouseout.enable();} var a11y=a11yHandler({link:$link,onEscape:function(){panel.hide();$link.focus();}});var logPanelInteraction=function(promoID,wlTriggers){var logNow=$F.once().on(function(){var panelEvent=$.extend({},event,{id:promoID});if(config.browsePromos&&!!config.browsePromos[promoID]){panelEvent.bp=1;} logEvent(panelEvent);phoneHome.trigger(wlTriggers);});if(panel.isVisible()&&panel.hasInteracted()){logNow();}else{panel.onInteract(logNow);}};panel.onData(function(data){renderPromo(data.promoID,panel.elem());logPanelInteraction(data.promoID,data.wlTriggers);});panel.onShow(function(){var columnCount=$('.nav-column',panel.elem()).length;panel.elem().addClass('nav-colcount-'+columnCount);showParent();var $subCatLinks=$('.nav-subcat-links > a',panel.elem());var length=$subCatLinks.length;if(length>0){var firstElementLeftPos=$subCatLinks.eq(0).offset().left;for(var i=1;i<length;i++){if(firstElementLeftPos===$subCatLinks.eq(i).offset().left){$subCatLinks.eq(i).addClass('nav_linestart');}} if($('span.nav-title.nav-item',panel.elem()).length===0){var catTitle=$.trim($link.html());catTitle=catTitle.replace(/ref=sa_menu_top/g,'ref=sa_menu');var $subPanelTitle=$('<span class=\'nav-title nav-item\'>'+ catTitle+'</span>');panel.elem().prepend($subPanelTitle);}} $link.addClass('nav-active');});panel.onHide(function(){$link.removeClass('nav-active');hideParent();a11y.disable();sloppyTrigger.disable();});panel.onShow(function(){a11y.elems($('a, area',panel.elem()));});sloppyTrigger.register($link,panel);if(flyoutDebug){$link.click(function(){if(panel.isVisible()){panel.hide();}else{panel.show();}});} var panelKeyHandler=onKey($link,function(){if(this.isEnter()||this.isSpace()){panel.show();}},'keydown',false);$link.focus(function(){panelKeyHandler.bind();}).blur(function(){panelKeyHandler.unbind();});panel.elem().appendTo($parent);};var hideParentAndResetTrigger=function(){hideParent();sloppyTrigger.disable();};for(var i=0;i<linkKeys.length;i++){var item=linkKeys[i];if(item.panelKey){addPanel(item.link,item.panelKey);}else{item.link.mouseover(hideParentAndResetTrigger);}}};}); } catch ( err ) { if ( window.$Nav ) { window.$Nav.when('metrics', 'logUeError').run(function(metrics, log) { metrics.increment('NavJS:AboveNavInjection:error'); log(err.toString(), { 'attribution': 'rcx-nav', 'logLevel': 'FATAL' }); }); } } </script> <noscript> <style type="text/css"><!-- #navbar #nav-shop .nav-a:hover { color: #ff9900; text-decoration: underline; } #navbar #nav-search .nav-search-facade, #navbar #nav-tools .nav-icon, #navbar #nav-shop .nav-icon, #navbar #nav-subnav .nav-hasArrow .nav-arrow { display: none; } #navbar #nav-search .nav-search-submit, #navbar #nav-search .nav-search-scope { display: block; } #nav-search .nav-search-scope { padding: 0 5px; } #navbar #nav-search .nav-search-dropdown { position: relative; top: 5px; height: 23px; font-size: 14px; opacity: 1; filter: alpha(opacity = 100); } --></style> </noscript> <script type='text/javascript'>window.navmet.push({key:'PreNav',end:+new Date(),begin:window.navmet.tmp});</script> <a id='nav-top'></a> <nav id="shortcut-menu" class="nav-assistant" aria-label="Menu des raccourcis" tabindex="-1" role="navigation" > <h2 id="nav-assistant-links-heading" class="nav-assistant-heading nav-assistant-headers-font">Passer à</h2> <ul aria-labelledby="nav-assistant-links-heading" class="nav-assistant-links-container"> <li class="nav-assistant-list-item"> <a href="#skippedLink" id="nav-assist-skip-to-main-content" aria-label="contenu principal" tabindex="0" data-target="#skippedLink" data-behavior="navigate" data-nav-assist-menu-item-index="0" class="nav-assistant-link nav-assistant-menu-item nav-assistant-link-item a-color-base a-color-link " > Contenu principal </a> </li> </ul> <hr class="nav-assistant-separator" aria-hidden="true" /> <h2 id="shortcuts-heading" class="nav-assistant-heading nav-assistant-headers-font font-color"> Raccourcis clavier </h2> <ul class="keyboard-shortcuts-list-container" aria-labelledby="shortcuts-heading"> <li class="nav-assistant-list-item"> <a id="nav-assist-search" role="link" tabindex="-1" class="nav-assistant-menu-item nav-assistant-link-item nav-assistant-keyboard-shortcut-item keyboard-shortcut-menu-container a-color-base a-color-link " data-nav-assist-menu-item-index="1" data-behavior="navigate" data-actuators="[{"eventCode":"Slash","eventKey":"÷","isShiftRequired":false},{"eventCode":"Digit7","eventKey":"\\","isShiftRequired":true},{"eventCode":"Period","eventKey":"\\","isShiftRequired":true},{"eventCode":"Slash","eventKey":"/","isShiftRequired":false},{"eventCode":"Digit7","eventKey":"/","isShiftRequired":true},{"eventCode":"Period","eventKey":"/","isShiftRequired":true},{"eventKey":"/","isShiftRequired":false}]" data-target="#twotabsearchtextbox" aria-label="Rechercher, alt, barre oblique" > <div class="keyboard-shortcut-container" aria-hidden="true"> <span class="shortcut-name nav-assistant-card-font">Rechercher</span> <div class="shortcut-keys-container" dir="ltr"> <span class="shortcut-key nav-assistant-card-font font-color">alt</span> <span class="plus-sign-color">+</span> <span class="shortcut-key nav-assistant-card-font font-color">/</span> </div> </div> </a> </li> <li class="nav-assistant-list-item"> <a id="nav-assist-cart" role="link" tabindex="-1" class="nav-assistant-menu-item nav-assistant-link-item nav-assistant-keyboard-shortcut-item keyboard-shortcut-menu-container a-color-base a-color-link " data-nav-assist-menu-item-index="2" data-behavior="navigate" data-actuators="[{"eventKey":"Ç","eventCode":"KeyC","isShiftRequired":true},{"eventKey":"¢","eventCode":"KeyC","isShiftRequired":true},{"eventKey":"C","isShiftRequired":true}]" data-target="/gp/cart/view.html/?ref_=nav_assist" aria-label="Panier, shift, alt, c" > <div class="keyboard-shortcut-container" aria-hidden="true"> <span class="shortcut-name nav-assistant-card-font">Panier</span> <div class="shortcut-keys-container" dir="ltr"> <span class="shortcut-key nav-assistant-card-font font-color">shift</span> <span class="plus-sign-color">+</span> <span class="shortcut-key nav-assistant-card-font font-color">alt</span> <span class="plus-sign-color">+</span> <span class="shortcut-key nav-assistant-card-font font-color">C</span> </div> </div> </a> </li> <li class="nav-assistant-list-item"> <a id="nav-assist-home" role="link" tabindex="-1" class="nav-assistant-menu-item nav-assistant-link-item nav-assistant-keyboard-shortcut-item keyboard-shortcut-menu-container a-color-base a-color-link " data-nav-assist-menu-item-index="3" data-behavior="navigate" data-actuators="[{"eventKey":"Ó","eventCode":"KeyH","isShiftRequired":true},{"eventKey":"Î","eventCode":"KeyH","isShiftRequired":true},{"eventKey":"H","isShiftRequired":true}]" data-target="/?ref_=nav_assist" aria-label="Accueil, shift, alt, h" > <div class="keyboard-shortcut-container" aria-hidden="true"> <span class="shortcut-name nav-assistant-card-font">Accueil</span> <div class="shortcut-keys-container" dir="ltr"> <span class="shortcut-key nav-assistant-card-font font-color">shift</span> <span class="plus-sign-color">+</span> <span class="shortcut-key nav-assistant-card-font font-color">alt</span> <span class="plus-sign-color">+</span> <span class="shortcut-key nav-assistant-card-font font-color">H</span> </div> </div> </a> </li> <li class="nav-assistant-list-item"> <a id="nav-assist-your-orders" role="link" tabindex="-1" class="nav-assistant-menu-item nav-assistant-link-item nav-assistant-keyboard-shortcut-item keyboard-shortcut-menu-container a-color-base a-color-link " data-nav-assist-menu-item-index="4" data-behavior="navigate" data-actuators="[{"eventKey":"Ø","eventCode":"KeyO","isShiftRequired":true},{"eventKey":"Œ","eventCode":"KeyO","isShiftRequired":true},{"eventKey":"O","isShiftRequired":true}]" data-target="/gp/css/order-history/?ref_=nav_assist" aria-label="Vos commandes, shift, alt, o" > <div class="keyboard-shortcut-container" aria-hidden="true"> <span class="shortcut-name nav-assistant-card-font">Commandes</span> <div class="shortcut-keys-container" dir="ltr"> <span class="shortcut-key nav-assistant-card-font font-color">shift</span> <span class="plus-sign-color">+</span> <span class="shortcut-key nav-assistant-card-font font-color">alt</span> <span class="plus-sign-color">+</span> <span class="shortcut-key nav-assistant-card-font font-color">O</span> </div> </div> </a> </li> <li class="nav-assistant-list-item"> <button id="nav-assist-show-shortcuts" role="button" tabindex="-1" class="nav-assistant-menu-item nav-assistant-link-item nav-assistant-keyboard-shortcut-item keyboard-shortcut-menu-container a-color-base a-color-link nav-assistant-link-button" data-nav-assist-menu-item-index="5" data-behavior="show-hide" data-actuators="[{"eventKey":"¸","eventCode":"KeyZ","isShiftRequired":true},{"eventKey":"ˇ","eventCode":"KeyY","isShiftRequired":true},{"eventKey":"Å","eventCode":"KeyW","isShiftRequired":true},{"eventKey":"Z","eventCode":"KeyZ","isShiftRequired":true},{"eventKey":"Z","eventCode":"KeyY","isShiftRequired":true},{"eventKey":"Z","eventCode":"KeyW","isShiftRequired":true},{"eventKey":"Z","isShiftRequired":true}]" data-target="a[data-nav-assist-menu-item-index="0"]" aria-label="Afficher/masquer les raccourcis, shift, alt, z" > <div class="keyboard-shortcut-container" aria-hidden="true"> <span class="shortcut-name nav-assistant-card-font">Afficher/masquer les raccourcis</span> <div class="shortcut-keys-container" dir="ltr"> <span class="shortcut-key nav-assistant-card-font font-color">shift</span> <span class="plus-sign-color">+</span> <span class="shortcut-key nav-assistant-card-font font-color">alt</span> <span class="plus-sign-color">+</span> <span class="shortcut-key nav-assistant-card-font font-color">Z</span> </div> </div> </button> </li> </ul> <div id="nav-assist-shortcut-help" > <div class="shortcut-help-container"> <div class="shortcut-help-item-container"> <div class="icon-container"><i class="a-icon a-icon-info a-icon-mini shortcut-help-icon"></i></div> <div class="help-text-container"> <span class="shortcut-help-text font-color">Pour vous déplacer entre les articles, utilisez les flèches vers le haut ou vers le bas de votre clavier.</span> </div> </div> </div> </div> </nav> <script type='text/javascript'>window.navmet.main=+new Date();</script> <header id="navbar-main" class = "nav-opt-sprite nav-flex nav-locale-fr nav-lang-fr nav-ssl nav-unrec nav-progressive-attribute"> <div id='navbar' cel_widget_id='Navigation-desktop-navbar' role='navigation' class="nav-sprite-v1 celwidget nav-bluebeacon nav-a11y-t1 bold-focus-hover layout2 nav-flex layout3 layout3-alt nav-packard-glow hamburger nav-progressive-attribute" aria-label="Principal"> <div id='nav-belt'> <div class='nav-left'> <script type='text/javascript'>window.navmet.tmp=+new Date();</script> <div id="nav-logo" > <a href="/ref=nav_logo" id="nav-logo-sprites" class="nav-logo-link nav-progressive-attribute" aria-label="Amazon.fr"> <span class="nav-sprite nav-logo-base"></span> <span id="logo-ext" class="nav-sprite nav-logo-ext nav-progressive-content"></span> <span class="nav-logo-locale">.fr</span> </a> </div> <script type='text/javascript'>window.navmet.push({key:'Logo',end:+new Date(),begin:window.navmet.tmp});</script> <div id="nav-global-location-slot"> <span id="nav-global-location-data-modal-action" class="a-declarative nav-progressive-attribute" data-a-modal='{"width":375, "closeButton":"true","popoverLabel":"Choisissez votre emplacement", "ajaxHeaders":{"anti-csrftoken-a2z":"hJL4XI0Spww8ogTe6wpRsmXhGJa04zoA2cNBLfeBtABOAAAAAGeyhrcAAAAB"}, "name":"glow-modal", "url":"/portal-migration/hz/glow/get-rendered-address-selections?deviceType=desktop&pageType=PromotionsDiscoveryHz&storeContext=NoStoreName&actionSource=desktop-modal", "footer":null,"header":"Choisissez votre emplacement"}' data-action="a-modal"> <a id="nav-global-location-popover-link" role="button" tabindex="0" class="nav-a nav-a-2 a-popover-trigger a-declarative nav-progressive-attribute" href=""> <div class="nav-sprite nav-progressive-attribute" id="nav-packard-glow-loc-icon"></div> <div id="glow-ingress-block"> <span class="nav-line-1 nav-progressive-content" id="glow-ingress-line1"> Livraison à 44000 Nantes </span> <span class="nav-line-2 nav-progressive-content" id="glow-ingress-line2"> Mettre à jour l’emplacement </span> </div> </a> </span> <input data-addnewaddress="add-new" id="unifiedLocation1ClickAddress" name="dropdown-selection" type="hidden" value="add-new" class="nav-progressive-attribute" /> <input data-addnewaddress="add-new" id="ubbShipTo" name="dropdown-selection-ubb" type="hidden" value="add-new" class="nav-progressive-attribute"/> <input id="glowValidationToken" name="glow-validation-token" type="hidden" value="hJL4XI0Spww8ogTe6wpRsmXhGJa04zoA2cNBLfeBtABOAAAAAGeyhrcAAAAB" class="nav-progressive-attribute"/> <input id="glowDestinationType" name="glow-destination-type" type="hidden" value="REALM_DEFAULT" class="nav-progressive-attribute"/> </div> <div id="nav-global-location-toaster-script-container" class="nav-progressive-content"> </div> </div> <div class='nav-fill'> <script type='text/javascript'>window.navmet.tmp=+new Date();</script> <div id="nav-search"> <div id="nav-bar-left"></div> <form id="nav-search-bar-form" accept-charset="utf-8" action="/s/ref=nb_sb_noss" class="nav-searchbar nav-progressive-attribute" method="GET" name="site-search" role="search" > <div id="nav-search-bar-internationalization-key" class="nav-progressive-content"> <input type="hidden" name="__mk_fr_FR" value="ÅMÅŽÕÑ"> </div> <div class="nav-left"> <div id="nav-search-dropdown-card"> <div class="nav-search-scope nav-sprite"> <div class="nav-search-facade" data-value="search-alias=aps"> <span id="nav-search-label-id" class="nav-search-label nav-progressive-content">Toutes nos catégories</span> <i class="nav-icon"></i> </div> <label id="searchDropdownDescription" for="searchDropdownBox" class="nav-progressive-attribute" style="display:none">Sélectionnez la section dans laquelle vous souhaitez faire votre recherche.</label> <select aria-describedby="searchDropdownDescription" class="nav-search-dropdown searchSelect nav-progressive-attrubute nav-progressive-search-dropdown" data-nav-digest="JHJg3K+vc6VeAV+n7PcK3FXFqaE=" data-nav-selected="0" id="searchDropdownBox" name="url" style="display: block;" tabindex="0" title="Rechercher dans" > <option selected="selected" value="search-alias=aps">Toutes nos catégories</option> <option value="search-alias=alexa-skills">Alexa Skills</option> <option value="search-alias=amazon-global-store">Amazon Global Store</option> <option value="search-alias=warehouse-deals">Amazon Seconde main</option> <option value="search-alias=pets">Animalerie</option> <option value="search-alias=amazon-devices">Appareils Amazon</option> <option value="search-alias=mobile-apps">Applis & Jeux</option> <option value="search-alias=automotive">Auto et Moto</option> <option value="search-alias=fashion-luggage">Bagages et accessoires de voyage</option> <option value="search-alias=beauty">Beauté et Parfum</option> <option value="search-alias=luxury-beauty">Beauté Premium</option> <option value="search-alias=gift-cards">Boutique chèques-cadeaux</option> <option value="search-alias=digital-text">Boutique Kindle</option> <option value="search-alias=diy">Bricolage</option> <option value="search-alias=baby">Bébés & Puériculture</option> <option value="search-alias=kitchen">Cuisine & Maison</option> <option value="search-alias=dvd">DVD & Blu-ray</option> <option value="search-alias=grocery">Epicerie</option> <option value="search-alias=office-products">Fournitures de bureau</option> <option value="search-alias=appliances">Gros électroménager</option> <option value="search-alias=handmade">Handmade</option> <option value="search-alias=electronics">High-Tech</option> <option value="search-alias=hpc">Hygiène et Santé</option> <option value="search-alias=computers">Informatique</option> <option value="search-alias=mi">Instruments de musique & Sono</option> <option value="search-alias=garden">Jardin</option> <option value="search-alias=toys">Jeux et Jouets</option> <option value="search-alias=videogames">Jeux vidéo</option> <option value="search-alias=stripbooks">Livres</option> <option value="search-alias=audible">Livres audio Audible</option> <option value="search-alias=software">Logiciels</option> <option value="search-alias=lighting">Luminaires et Eclairage</option> <option value="search-alias=luxury">Luxury Stores</option> <option value="search-alias=fashion">Mode</option> <option value="search-alias=fashion-womens">Vêtements, chaussures et bijoux pour femmes</option> <option value="search-alias=fashion-mens">Vêtements, chaussures et bijoux pour hommes</option> <option value="search-alias=fashion-girls">Vêtements, chaussures et bijoux pour filles</option> <option value="search-alias=fashion-boys">Vêtements, chaussures et bijoux pour garçons</option> <option value="search-alias=fashion-baby">Vêtements, chaussures et bijoux pour bébés</option> <option value="search-alias=under-ten-dollars">Moins de 10€</option> <option value="search-alias=popular">Musique : CD & Vinyles</option> <option value="search-alias=classical">Musique classique</option> <option value="search-alias=instant-video">Prime Video</option> <option value="search-alias=specialty-aps-sns">Prévoyez et Économisez</option> <option value="search-alias=industrial">Secteur industriel et scientifique</option> <option value="search-alias=sports">Sports et loisirs</option> <option value="search-alias=digital-music">Téléchargement de musique</option> <option value="search-alias=todays-deals">Ventes Flash</option> </select> </div> </div> </div> <div class="nav-fill"> <div class="nav-search-field "> <div class="ac-input-container"> <div class="ac-live-field" id="ac-liveField" role="status" aria-atomic="true" aria-live="polite"></div> <div class="ac-input-overlay" aria-hidden="true"> <span class="ac-ghost" id="ac-predictive-text"> <span class="ac-current-input" id="ac-prefix"></span><span class="ac-ghost-suggestion" id="ac-prediction"></span> </span> </div> <label for="twotabsearchtextbox" style="display: none;">Rechercher Amazon.fr</label> <input type="text" id="twotabsearchtextbox" value="" name="field-keywords" autocomplete="off" placeholder="Rechercher Amazon.fr" class="nav-input nav-progressive-attribute" dir="auto" tabindex="0" aria-label="Rechercher Amazon.fr" role="searchbox" aria-autocomplete="list" aria-controls="sac-autocomplete-results-container" aria-expanded="false" aria-haspopup="grid" spellcheck="false" > </div> </div> <div id="nav-iss-attach"></div> </div> <div class="nav-right"> <div class="nav-search-submit nav-sprite"> <span id="nav-search-submit-text" class="nav-search-submit-text nav-sprite nav-progressive-attribute" aria-label="Go"> <input id="nav-search-submit-button" type="submit" class="nav-input nav-progressive-attribute" value="Go" tabindex="0"> </span> </div> </div> </form> </div> <script type='text/javascript'>window.navmet.push({key:'Search',end:+new Date(),begin:window.navmet.tmp});</script> </div> <div class='nav-right'> <script type='text/javascript'>window.navmet.tmp=+new Date();</script> <div id='nav-tools' class="layoutToolbarPadding"> <a href="/customer-preferences/edit?ie=UTF8&preferencesReturnUrl=%2F&ref_=topnav_lang" id="icp-nav-flyout" class="nav-a nav-a-2 icp-link-style-2" aria-label="Choisissez une langue pour vos achats sur Amazon France. La sélection actuelle est Français (FR). "> <span class="icp-nav-link-inner"> <span class="nav-line-1"> </span> <span class="nav-line-2"> <span class="icp-nav-flag icp-nav-flag-fr icp-nav-flag-lop" role="img" aria-label="France"></span> <div>FR</div> <span class="nav-icon nav-arrow"></span> </span> </span> </a> <a href="https://www.amazon.fr/ap/signin?openid.pape.max_auth_age=0&openid.return_to=https%3A%2F%2Fwww.amazon.fr%2Fpromotion%2Fpsp%2FAHSTCFJQ0HC6U%2F%3F_encoding%3DUTF8%26_encoding%3DUTF8%26content-id%3Damzn1.sym.ebe65939-71c5-430e-9d13-ae6dfe997564%26pd_rd_r%3Db2d27c04-578f-4209-b889-2f3790b29e70%26pd_rd_w%3D3uZHA%26pd_rd_wg%3DgrhoS%26pf_rd_p%3Debe65939-71c5-430e-9d13-ae6dfe997564%26pf_rd_r%3D0Q88X5MYBXAXJM8SRKC4%26ref_%3Dnav_ya_signin&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.assoc_handle=frflex&openid.mode=checkid_setup&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0" class="nav-a nav-a-2 nav-progressive-attribute" data-nav-ref="nav_ya_signin" data-nav-role="signin" data-ux-jq-mouseenter="true" id="nav-link-accountList" tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav-link-accountList" data-csa-c-content-id="nav_ya_signin" aria-controls="nav-flyout-accountList" > <div class="nav-line-1-container"><span id="nav-link-accountList-nav-line-1" class="nav-line-1 nav-progressive-content">Bonjour, Identifiez-vous</span></div> <span class="nav-line-2 ">Compte et listes<span class="nav-icon nav-arrow"></span> </span> </a> <a href="/gp/css/order-history?ref_=nav_orders_first" class="nav-a nav-a-2 nav-progressive-attribute" id="nav-orders" tabindex="0"> <span class="nav-line-1">Retours</span> <span class="nav-line-2">et commandes<span class="nav-icon nav-arrow"></span></span> </a> <a href="/gp/cart/view.html?ref_=nav_cart" aria-label="0 articles dans le panier" class="nav-a nav-a-2 nav-progressive-attribute" id="nav-cart"> <div id="nav-cart-count-container"> <span id="nav-cart-count" aria-hidden="true" class="nav-cart-count nav-cart-0 nav-progressive-attribute nav-progressive-content">0</span> <span class="nav-cart-icon nav-sprite"></span> </div> <div id="nav-cart-text-container" class=" nav-progressive-attribute"> <span aria-hidden="true" class="nav-line-1"> </span> <span aria-hidden="true" class="nav-line-2"> Panier <span class="nav-icon nav-arrow"></span> </span> </div> </a> </div> <script type='text/javascript'>window.navmet.push({key:'Tools',end:+new Date(),begin:window.navmet.tmp});</script> </div> </div> <div id='nav-main' class='nav-sprite'> <div class='nav-left'> <script type='text/javascript'>window.navmet.tmp=+new Date();</script> <a href="/gp/site-directory?ref_=nav_em_js_disabled" id="nav-hamburger-menu" role="button" aria-label="Ouvrir le menu Toutes les catégories" aria-expanded="false" data-csa-c-type="widget" data-csa-c-slot-id="HamburgerMenuDesktop" data-csa-c-interaction-events="click" > <i class="hm-icon nav-sprite"></i> <span class="hm-icon-label">Toutes</span> </a> <script type="text/javascript"> var hmenu = document.getElementById("nav-hamburger-menu"); hmenu.setAttribute("href", "javascript: void(0)"); window.navHamburgerMetricLogger = function() { if (window.ue && window.ue.count) { var metricName = "Nav:Hmenu:IconClickActionPending"; window.ue.count(metricName, (ue.count(metricName) || 0) + 1); } window.$Nav && $Nav.declare("navHMenuIconClicked",!0); window.$Nav && $Nav.declare("navHMenuIconClickedNotReadyTimeStamp", Date.now()); }; hmenu.addEventListener("click", window.navHamburgerMetricLogger); window.$Nav && $Nav.declare('hamburgerMenuIconAvailableOnLoad', false); </script> <script type='text/javascript'>window.navmet.push({key:'HamburgerMenuIcon',end:+new Date(),begin:window.navmet.tmp});</script> </div> <div class='nav-fill'> <div id="nav-shop"> </div> <div id='nav-xshop-container'> <div id='nav-xshop' class="nav-progressive-content"> <script type='text/javascript'>window.navmet.tmp=+new Date();</script> <a href="/gp/bestsellers/?ref_=nav_cs_bestsellers" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_0" data-csa-c-content-id="nav_cs_bestsellers">Meilleures ventes</a> <a href="/amazonbasics/?field-lbr_brands_browse-bin=AmazonBasics&ref_=nav_cs_amazonbasics" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_1" data-csa-c-content-id="nav_cs_amazonbasics">Amazon Basics</a> <a href="/gp/new-releases/?ref_=nav_cs_newreleases" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_2" data-csa-c-content-id="nav_cs_newreleases">Dernières Nouveautés</a> <a href="/deals?ref_=nav_cs_gb" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_3" data-csa-c-content-id="nav_cs_gb">Ventes Flash</a> <a href="/b/?node=2383619031&ld=AZFRGNOSellC&ref_=nav_cs_sell" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_4" data-csa-c-content-id="nav_cs_sell">Vendre sur Amazon</a> <a href="/gcx/-/gfhz/?ref_=nav_cs_giftfinder" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_5" data-csa-c-content-id="nav_cs_giftfinder">Idées cadeaux</a> <a href="/livre-achat-occasion-litterature-roman/b/?ie=UTF8&node=301061&ref_=nav_cs_books" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_6" data-csa-c-content-id="nav_cs_books">Livres</a> <a href="/cheques-cartes-cadeaux/b/?ie=UTF8&node=2524127031&ref_=nav_cs_gc" aria-expanded="false" class="nav-a " data-ux-jq-mouseenter="true" id="nav_link_gift_cards" tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_link_gift_cards" data-csa-c-content-id="nav_cs_gc"><span>Cartes cadeaux</span><span class="nav-icon nav-arrow"></span></a> <a href="/b/?node=14839058031&ref_=nav_cs_shoppertoolkit" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_8" data-csa-c-content-id="nav_cs_shoppertoolkit">Guide de l’acheteur</a> <a href="/cuisine-maison-%C3%A9lectrom%C3%A9nager/b/?ie=UTF8&node=57004031&ref_=nav_cs_home" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_9" data-csa-c-content-id="nav_cs_home">Cuisine et maison</a> <a href="/photo-TV-mp3-Hifi-GPS/b/?ie=UTF8&node=13921051&ref_=nav_cs_electronics" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_10" data-csa-c-content-id="nav_cs_electronics">High-Tech</a> <a href="/jeux-video-consoles-portables-accessoires-pc/b/?ie=UTF8&node=530490&ref_=nav_cs_video_games" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_11" data-csa-c-content-id="nav_cs_video_games">Jeux vidéo</a> <a href="/jeux-jouets/b/?ie=UTF8&node=322086011&ref_=nav_cs_toys" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_12" data-csa-c-content-id="nav_cs_toys">Jeux et Jouets</a> <a href="/bebe-puericulture/b/?ie=UTF8&node=206617031&ref_=nav_cs_baby" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_13" data-csa-c-content-id="nav_cs_baby">Bébé</a> <a href="/Livres-audio-Audible-Originals/b/?ie=UTF8&node=17941536031&ref_=nav_cs_audible" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_14" data-csa-c-content-id="nav_cs_audible">Audible</a> <a href="/music/player?ref_=nav_cs_music" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_15" data-csa-c-content-id="nav_cs_music">Musique</a> <a href="/prime?ref_=nav_cs_primelink_nonmember" aria-expanded="false" class="nav-a " data-ux-jq-mouseenter="true" id="nav-link-amazonprime" tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav-link-amazonprime" data-csa-c-content-id="nav_cs_primelink_nonmember"><span>Prime</span><span class="nav-icon nav-arrow"></span></a> <a href="/informatique-ordinateurs-imprimantes-r%C3%A9seaux-composants/b/?ie=UTF8&node=340858031&ref_=nav_cs_pc" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_17" data-csa-c-content-id="nav_cs_pc">Informatique</a> <a href="/gp/browse.html?node=11961521031&ref_=nav_cs_fashion" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_18" data-csa-c-content-id="nav_cs_fashion">Mode</a> <a href="/hygi%C3%A8ne-sant%C3%A9-soins-du-corps/b/?ie=UTF8&node=197861031&ref_=nav_cs_hpc" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_19" data-csa-c-content-id="nav_cs_hpc">Santé et produits d’hygiène</a> <a href="/Amazon-Custom/b/?ie=UTF8&node=14578059031&ref_=nav_cs_custom" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_20" data-csa-c-content-id="nav_cs_custom">Produits personnalisés</a> <a href="/Voiture-et-moto/b/?ie=UTF8&node=1571265031&ref_=nav_cs_automotive" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_21" data-csa-c-content-id="nav_cs_automotive">Auto et moto</a> <a href="/Parfums-cosm%C3%A9tiques/b/?ie=UTF8&node=197858031&ref_=nav_cs_beauty" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_22" data-csa-c-content-id="nav_cs_beauty">Beauté</a> <a href="/sports-loisirs-fitness/b/?ie=UTF8&node=325614031&ref_=nav_cs_sports" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_23" data-csa-c-content-id="nav_cs_sports">Sports & Activités en plein-air</a> <a href="/gp/browse.html/?node=27173183031&ref_=nav_cs_freeshipping" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_24" data-csa-c-content-id="nav_cs_freeshipping">Livraison gratuite</a> <a href="/auto-deliveries/landing?ref_=nav_cs_sns" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_25" data-csa-c-content-id="nav_cs_sns">Prévoyez et Économisez</a> <a href="/gp/help/customer/display.html?nodeId=508510&ref_=nav_cs_help" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_26" data-csa-c-content-id="nav_cs_help">Service Client</a> <a href="/stores/AmazonEssentials/page/CE0FC6C4-43F9-40B2-BE1B-514CDFDB6D32?ref_=nav_cs_amazonessentials" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_27" data-csa-c-content-id="nav_cs_amazonessentials">Amazon Essentials</a> <a href="/gp/video/ssoredirect/?pvp=/ref%3Ddvm_crs_nav_fr_xs_s_dk_disco_eg_al?ref_=nav_cs_sadFR1" class="nav-a " tabindex="0" data-csa-c-type="link" data-csa-c-slot-id="nav_cs_28" data-csa-c-content-id="nav_cs_sadFR1">Prime Video</a> <script type='text/javascript'>window.navmet.push({key:'CrossShop',end:+new Date(),begin:window.navmet.tmp});</script> </div> </div> </div> <div class='nav-right'> <script type='text/javascript'>window.navmet.tmp=+new Date();</script><!-- Navyaan SWM --> <div id="nav-swmslot"> <div id="navSwmHoliday" style="height: 39px; width: 400px; overflow: hidden; position: relative; "> <a aria-label="La boutique du Carnaval" href="/carnival-store25/?_encoding=UTF8&ref_=nav_swm_en_SWM&pf_rd_p=3150ee92-8fd9-4382-8b09-1a3e04d33521&pf_rd_s=nav-sitewide-msg&pf_rd_t=4201&pf_rd_i=navbar-4201&pf_rd_m=A13V1IB3VIYZZH&pf_rd_r=74HCJVK5ZY1QW82XSHCC" class="nav-imageHref" > <img alt="La boutique du Carnaval" src="https://m.media-amazon.com/images/G/08/EU-STORES/2025/xPF/Q1/02Feb/CARNIVAL/EU5/TRAFFIC/Exp_HP_Dt_SWMS_400x39_20kb._CB551566792_.jpg"> </a> </div> </div><script type='text/javascript'>window.navmet.push({key:'SWM',end:+new Date(),begin:window.navmet.tmp});</script> </div> </div> <div id='nav-subnav-toaster'></div> <div id="nav-progressive-subnav"> <script type='text/javascript'>window.navmet.tmp=+new Date();</script> <div id='nav-subnav' data-category="generic"> <a href="/b/?ie=UTF8&node=405320&ref_=topnav_storetab_x" class="nav-a nav-b" aria-label="Amazon.fr" > <span class="nav-a-content"> Amazon.fr </span> </a> <a href="/ulp/view/?_encoding=UTF8&ref=hubm_fr_subnav&ref_=sv_x_1" class="nav-a" aria-label="Points de retrait Amazon Hub" > <span class="nav-a-content"> Points de retrait Amazon Hub </span> </a> <a href="/promotions-bons-plans/b/?ie=UTF8&node=51375011&ref_=sv_x_2" class="nav-a nav-hasArrow" aria-haspopup="true" aria-expanded="false" aria-label="Ventes Flash, Vous êtes actuellement sur une liste déroulante. Pour ouvrir cette liste déroulante, appuyez sur Entrée." data-nav-flyout-full-width="1" data-nav-key="ab:auto-subnav-flyout-xiste-content-5,auto-subnav-flyout-xiste-promo-5:generic-subnav-flyout" data-handler="generic-subnav-flyout" data-slots="auto-subnav-flyout-xiste-content-5,auto-subnav-flyout-xiste-promo-5"> <span class="nav-a-content"> Ventes Flash </span> <span class="nav-arrow"></span> </a> <a href="/selection-outlet/b/?ie=UTF8&node=10056877031&ref_=sv_x_3" class="nav-a" aria-label="Outlet" > <span class="nav-a-content"> Outlet </span> </a> <a href="/b/?ie=UTF8&node=6162654031&ref_=sv_x_4" class="nav-a" aria-label="Coupons" > <span class="nav-a-content"> Coupons </span> </a> <a href="/gp/bestsellers/?ie=UTF8&ref_=sv_x_5" class="nav-a nav-hasArrow" aria-haspopup="true" aria-expanded="false" aria-label="Meilleures ventes, Vous êtes actuellement sur une liste déroulante. Pour ouvrir cette liste déroulante, appuyez sur Entrée." data-nav-flyout-full-width="1" data-nav-key="ab:auto-subnav-flyout-xiste-content-1,auto-subnav-flyout-xiste-promo-1:generic-subnav-flyout" data-handler="generic-subnav-flyout" data-slots="auto-subnav-flyout-xiste-content-1,auto-subnav-flyout-xiste-promo-1"> <span class="nav-a-content"> Meilleures ventes </span> <span class="nav-arrow"></span> </a> <a href="/b/?ie=UTF8&node=1325595031&ref_=sv_x_6" class="nav-a" aria-label="Amazon Seconde main" > <span class="nav-a-content"> Amazon Seconde main </span> </a> <a href="/b/?ie=UTF8&node=5853980031&ref_=sv_x_7" class="nav-a nav-hasArrow" aria-haspopup="true" aria-expanded="false" aria-label="Nos idées cadeaux, Vous êtes actuellement sur une liste déroulante. Pour ouvrir cette liste déroulante, appuyez sur Entrée." data-nav-flyout-full-width="1" data-nav-key="ab:auto-subnav-flyout-xiste-content-3,auto-subnav-flyout-xiste-promo-3:generic-subnav-flyout" data-handler="generic-subnav-flyout" data-slots="auto-subnav-flyout-xiste-content-3,auto-subnav-flyout-xiste-promo-3"> <span class="nav-a-content"> Nos idées cadeaux </span> <span class="nav-arrow"></span> </a> <a href="/b/?ie=UTF8&node=2383619031&ref_=sv_x_8" class="nav-a nav-hasArrow" aria-haspopup="true" aria-expanded="false" aria-label="Services Amazon, Vous êtes actuellement sur une liste déroulante. Pour ouvrir cette liste déroulante, appuyez sur Entrée." data-nav-flyout-full-width="1" data-nav-key="ab:auto-subnav-flyout-xiste-content-4,auto-subnav-flyout-xiste-promo-4:generic-subnav-flyout" data-handler="generic-subnav-flyout" data-slots="auto-subnav-flyout-xiste-content-4,auto-subnav-flyout-xiste-promo-4"> <span class="nav-a-content"> Services Amazon </span> <span class="nav-arrow"></span> </a> <!-- nav-linktree-subnav - 'generic' --> </div> <script type='text/javascript'>window.navmet.push({key:'Subnav',end:+new Date(),begin:window.navmet.tmp});</script> </div> </div> </header> <script type='text/javascript'>window.navmet.push({key:'NavBar',end:+new Date(),begin:window.navmet.main});</script> <script type="text/javascript"> if (window.ue_t0) { window.navmet.push({key:"NavMainPaintEnd",end:+new Date(),begin:window.ue_t0}); window.navmet.push({key:"NavFirstPaintEnd",end:+new Date(),begin:window.ue_t0}); } </script> <script type='text/javascript'> <!-- window.$Nav && $Nav.declare('config.fixedBarBeacon',false); window.$Nav && $Nav.when("data").run(function(data) { data({"freshTimeout":{"template":{"name":"flyoutError","data":{"error":{"title":"<style>#nav-flyout-fresh{width:269px;padding:0;}#nav-flyout-fresh .nav-flyout-content{padding:0;}</style><a href='/amazonfresh'><img src='https://images-eu.ssl-images-amazon.com/images/G/02/omaha/images/yoda/flyout_72dpi._V270092858_.png' /></a>"}}}},"cartTimeout":{"template":{"name":"flyoutError","data":{"error":{"button":{"text":"Votre panier","url":"/gp/cart/view.html?ref_=nav_err_cart_timeout"},"title":" ","paragraph":"Impossible d'accéder à votre panier pour l'instant"}}}},"primeTimeout":{"template":{"name":"flyoutError","data":{"error":{"title":"<a href='/gp/prime?ref_=nav_prime_btn_fb'><img src='https://images-eu.ssl-images-amazon.com/images/G/02/prime/yourprime/yourprime-widget-piv-fallback._V310089192_.jpg' /></a>"}}}},"ewcTimeout":{"template":{"name":"flyoutError","data":{"error":{"button":{"text":"Votre panier","url":"/gp/cart/view.html?ref_=nav_err_ewc_timeout"},"title":" ","paragraph":"Il y a un problème récupérer votre panier dès maintenant"}}}},"errorWishlist":{"template":{"name":"flyoutError","data":{"error":{"button":{"text":"Votre liste d'envies","url":"/gp/registry/wishlist/?ref_=nav_err_wishlist"},"title":" ","paragraph":"Il ya un problème récupération de la liste en ce moment"}}}},"emptyWishlist":{"template":{"name":"flyoutError","data":{"error":{"button":{"text":"Votre liste d'envies","url":"/gp/registry/wishlist/?ref_=nav_err_empty_wishlist"},"title":" ","paragraph":"Votre liste est vide"}}}},"yourAccountContent":{"template":{"name":"flyoutError","data":{"error":{"button":{"text":"Votre compte","url":"/gp/css/homepage.html?ref_=nav_err_youraccount"},"title":" ","paragraph":"Il ya un problème récupération de la liste en ce moment"}}}},"shopAllTimeout":{"template":{"name":"flyoutError","data":{"error":{"paragraph":"Il ya un problème récupération de la liste en ce moment"}}}},"kindleTimeout":{"template":{"name":"flyoutError","data":{"error":{"paragraph":"Il ya un problème récupération de la liste en ce moment"}}}}}); }); window.$Nav && $Nav.when("util.templates").run("FlyoutErrorTemplate", function(templates) { templates.add("flyoutError", "<# if(error.title) { #><span class='nav-title'><#=error.title #></span><# } #><# if(error.paragraph) { #><p class='nav-paragraph'><#=error.paragraph #></p><# } #><# if(error.button) { #><a href='<#=error.button.url #>' class='nav-action-button' ><span class='nav-action-inner'><#=error.button.text #></span></a><# } #>"); }); if (typeof uet == 'function') { uet('bb', 'iss-init-pc', {wb: 1}); } if (!window.$SearchJS && window.$Nav) { window.$SearchJS = $Nav.make('sx'); } var opts = { host: "completion.amazon.co.uk/search/complete" , marketId: "5" , obfuscatedMarketId: "A13V1IB3VIYZZH" , searchAliases: [] , filterAliases: [] , pageType: "PromotionsDiscoveryHz" , requestId: "74HCJVK5ZY1QW82XSHCC" , sessionId: "258-2477753-5488862" , language: "fr_FR" , customerId: "" , asin: "" , b2b: 0 , fresh: 0 , isJpOrCn: 0 , isUseAuiIss: 1 }; var issOpts = { fallbackFlag: 1 , isDigitalFeaturesEnabled: 0 , isWayfindingEnabled: 0 , dropdown: "select.searchSelect" , departmentText: "dans {department}" , suggestionText: "Suggestions de recherche" , recentSearchesTreatment: "C" , authorSuggestionText: "Explorer les livres de XXAUTHXX" , translatedStringsMap: {"sx-recent-searches":"Recherches récentes","sx-your-recent-search":"Inspiré par votre recherche récente"} , biaTitleText: "" , biaPurchasedText: "" , biaViewAllText: "" , biaViewAllManageText: "" , biaAndText: "" , biaManageText: "" , biaWeblabTreatment: "" , issNavConfig: {} , np: 0 , issCorpus: [] , cf: 1 , removeDeepNodeISS: "" , trendingTreatment: "C" , useAPIV2: "" , opfSwitch: "" , isISSDesktopRefactorEnabled: "1" , useServiceHighlighting: "true" , isInternal: 0 , isAPICachingDisabled: true , isBrowseNodeScopingEnabled: false , isStorefrontTemplateEnabled: false , disableAutocompleteOnFocus: "" }; if (opts.isUseAuiIss === 1 && window.$Nav) { window.$Nav.when('sx.iss').run('iss-mason-init', function(iss){ var issInitObj = buildIssInitObject(opts, issOpts, true); new iss.IssParentCoordinator(issInitObj); $SearchJS.declare('canCreateAutocomplete', issInitObj); }); } else if (window.$SearchJS) { var iss; // BEGIN Deprecated globals var issHost = opts.host , issMktid = opts.marketId , issSearchAliases = opts.searchAliases , updateISSCompletion = function() { iss.updateAutoCompletion(); }; // END deprecated globals $SearchJS.when('jQuery', 'search-js-autocomplete-lib').run('autocomplete-init', initializeAutocomplete); $SearchJS.when('canCreateAutocomplete').run('createAutocomplete', createAutocomplete); } // END conditional for window.$SearchJS function initializeAutocomplete(jQuery) { var issInitObj = buildIssInitObject(opts, issOpts); $SearchJS.declare("canCreateAutocomplete", issInitObj); } // END initializeAutocomplete function initSearchCsl(searchCSL, issInitObject) { searchCSL.init( opts.pageType, (window.ue && window.ue.rid) || opts.requestId ); $SearchJS.declare("canCreateAutocomplete", issInitObject); } // END initSearchCsl function createAutocomplete(issObject) { iss = new AutoComplete(issObject); $SearchJS.publish("search-js-autocomplete", iss); logMetrics(); } // END createAutocomplete function buildIssInitObject(opts, issOpts, isNewIss) { var issInitObj = { src: opts.host , sessionId: opts.sessionId , requestId: opts.requestId , mkt: opts.marketId , obfMkt: opts.obfuscatedMarketId , pageType: opts.pageType , language: opts.language , customerId: opts.customerId , fresh: opts.fresh , b2b: opts.b2b , aliases: opts.searchAliases , fb: issOpts.fallbackFlag , isDigitalFeaturesEnabled: issOpts.isDigitalFeaturesEnabled , isWayfindingEnabled: issOpts.isWayfindingEnabled , issPrimeEligible: issOpts.issPrimeEligible , deptText: issOpts.departmentText , sugText: issOpts.suggestionText , filterAliases: opts.filterAliases , biaWidgetUrl: opts.biaWidgetUrl , recentSearchesTreatment: issOpts.recentSearchesTreatment , authorSuggestionText: issOpts.authorSuggestionText , translatedStringsMap: issOpts.translatedStringsMap , biaTitleText: "" , biaPurchasedText: "" , biaViewAllText: "" , biaViewAllManageText: "" , biaAndText: "" , biaManageText: "" , biaWeblabTreatment: "" , issNavConfig: issOpts.issNavConfig , cf: issOpts.cf , ime: opts.isJpOrCn , mktid: opts.marketId , qs: opts.isJpOrCn , issCorpus: issOpts.issCorpus , deepNodeISS: { searchAliasAccessor: function($) { return (window.SearchPageAccess && window.SearchPageAccess.searchAlias()) || $('select.searchSelect').children().attr('data-root-alias'); }, searchAliasDisplayNameAccessor: function() { return (window.SearchPageAccess && window.SearchPageAccess.searchAliasDisplayName()); } } , removeDeepNodeISS: issOpts.removeDeepNodeISS , trendingTreatment: issOpts.trendingTreatment , useAPIV2: issOpts.useAPIV2 , opfSwitch: issOpts.opfSwitch , isISSDesktopRefactorEnabled: issOpts.isISSDesktopRefactorEnabled , useServiceHighlighting: issOpts.useServiceHighlighting , isInternal: issOpts.isInternal , isAPICachingDisabled: issOpts.isAPICachingDisabled , isBrowseNodeScopingEnabled: issOpts.isBrowseNodeScopingEnabled , isStorefrontTemplateEnabled: issOpts.isStorefrontTemplateEnabled , disableAutocompleteOnFocus: issOpts.disableAutocompleteOnFocus , asin: opts.asin }; // If we aren't using the new ISS then we need to add these properties if (!isNewIss) { issInitObj.dd = issOpts.dropdown; // The element with id searchDropdownBox doesn't exist in C. issInitObj.imeSpacing = issOpts.imeSpacing; issInitObj.isNavInline = 1; issInitObj.triggerISSOnClick = 0; issInitObj.sc = 1; issInitObj.np = issOpts.np; } return issInitObj; } // END buildIssInitObject function logMetrics() { if (typeof uet == 'function' && typeof uex == 'function') { uet('be', 'iss-init-pc', { wb: 1 }); uex('ld', 'iss-init-pc', { wb: 1 }); } } // END logMetrics window.$Nav && $Nav.declare('config.navDeviceType','desktop'); window.$Nav && $Nav.declare('config.navDebugHighres',false); window.$Nav && $Nav.declare('config.pageType','PromotionsDiscoveryHz'); window.$Nav && $Nav.declare('config.subPageType','null'); window.$Nav && $Nav.declare('config.dynamicMenuUrl','\x2Fgp\x2Fnavigation\x2Fajax\x2Fdynamic\x2Dmenu.html'); window.$Nav && $Nav.declare('config.dismissNotificationUrl','\x2Fgp\x2Fnavigation\x2Fajax\x2Fdismissnotification.html'); window.$Nav && $Nav.declare('config.enableDynamicMenus',true); window.$Nav && $Nav.declare('config.isInternal',false); window.$Nav && $Nav.declare('config.isBackup',false); window.$Nav && $Nav.declare('config.isRecognized',false); window.$Nav && $Nav.declare('config.transientFlyoutTrigger','\x23nav\x2Dtransient\x2Dflyout\x2Dtrigger'); window.$Nav && $Nav.declare('config.subnavFlyoutUrl','\x2Fnav\x2Fajax\x2FsubnavFlyout'); window.$Nav && $Nav.declare('config.isSubnavFlyoutMigrationEnabled',true); window.$Nav && $Nav.declare('config.recordEvUrl','\x2Fgp\x2Fnavigation\x2Fajax\x2Frecordevent.html'); window.$Nav && $Nav.declare('config.recordEvInterval',15000); window.$Nav && $Nav.declare('config.sessionId','258\x2D2477753\x2D5488862'); window.$Nav && $Nav.declare('config.requestId','74HCJVK5ZY1QW82XSHCC'); window.$Nav && $Nav.declare('config.alexaListEnabled',true); window.$Nav && $Nav.declare('config.readyOnATF',false); window.$Nav && $Nav.declare('config.dynamicMenuArgs',{"rid":"74HCJVK5ZY1QW82XSHCC","isFullWidthPrime":0,"isPrime":0,"dynamicRequest":1,"weblabs":"","isFreshRegionAndCustomer":"","primeMenuWidth":310}); window.$Nav && $Nav.declare('config.customerName',false); window.$Nav && $Nav.declare('config.customerCountryCode',null); window.$Nav && $Nav.declare('config.yourAccountPrimeURL',null); window.$Nav && $Nav.declare('config.yourAccountPrimeHover',true); window.$Nav && $Nav.declare('config.searchBackState',{}); window.$Nav && $Nav.declare('nav.inline'); (function (i) { if(window._navbarSpriteUrl) { i.onload = function() {window.uet && uet('ne')}; i.src = window._navbarSpriteUrl; } }(new Image())); window.$Nav && $Nav.declare('config.autoFocus',false); window.$Nav && $Nav.declare('config.responsiveTouchAgents',["ieTouch"]); window.$Nav && $Nav.declare('config.responsiveGW',false); window.$Nav && $Nav.declare('config.pageHideEnabled',false); window.$Nav && $Nav.declare('config.sslTriggerType','null'); window.$Nav && $Nav.declare('config.sslTriggerRetry',0); window.$Nav && $Nav.declare('config.doubleCart',false); window.$Nav && $Nav.declare('config.signInOverride',true); window.$Nav && $Nav.declare('config.signInTooltip',true); window.$Nav && $Nav.declare('config.isPrimeMember',false); window.$Nav && $Nav.declare('config.packardGlowTooltip',false); window.$Nav && $Nav.declare('config.packardGlowFlyout',false); window.$Nav && $Nav.declare('config.rightMarginAlignEnabled',true); window.$Nav && $Nav.declare('config.flyoutAnimation',false); window.$Nav && $Nav.declare('config.campusActivation','null'); window.$Nav && $Nav.declare('config.primeTooltip',false); window.$Nav && $Nav.declare('config.primeDay',false); window.$Nav && $Nav.declare('config.disableBuyItAgain',false); window.$Nav && $Nav.declare('config.enableCrossShopBiaFlyout',false); window.$Nav && $Nav.declare('config.pseudoPrimeFirstBrowse',null); window.$Nav && $Nav.declare('config.csYourAccount',false); window.$Nav && $Nav.declare('config.cartFlyoutDisabled',true); window.$Nav && $Nav.declare('config.isTabletBrowser',false); window.$Nav && $Nav.declare('config.HmenuProximityArea',[200,200,200,200]); window.$Nav && $Nav.declare('config.HMenuIsProximity',true); window.$Nav && $Nav.declare('config.isPureAjaxALF',false); window.$Nav && $Nav.declare('config.accountListFlyoutRedesign',false); window.$Nav && $Nav.declare('config.navfresh',false); window.$Nav && $Nav.declare('config.isFreshRegion',false); if (window.ue && ue.tag) { ue.tag('navbar'); }; window.$Nav && $Nav.declare('config.blackbelt',true); window.$Nav && $Nav.declare('config.beaconbelt',true); window.$Nav && $Nav.declare('config.accountList',true); window.$Nav && $Nav.declare('config.iPadTablet',false); window.$Nav && $Nav.declare('config.searchapiEndpoint',false); window.$Nav && $Nav.declare('config.timeline',false); window.$Nav && $Nav.declare('config.timelineAsinPriceEnabled',false); window.$Nav && $Nav.declare('config.timelineDeleteEnabled',false); window.$Nav && $Nav.declare('config.extendedFlyout',false); window.$Nav && $Nav.declare('config.flyoutCloseDelay',600); window.$Nav && $Nav.declare('config.pssFlag',0); window.$Nav && $Nav.declare('config.isPrimeTooltipMigrated',false); window.$Nav && $Nav.declare('config.hashCustomerAndSessionId','e787f2f1041632a6f167bba8f7bc62e981770ece'); window.$Nav && $Nav.declare('config.isExportMode',false); window.$Nav && $Nav.declare('config.languageCode','fr_FR'); window.$Nav && $Nav.declare('config.environmentVFI','AmazonNavigationCards\x2Fdevelopment\x2DP200106280\x40B6296722403\x2DAL2_aarch64'); window.$Nav && $Nav.declare('config.isHMenuBrowserCacheDisable',false); window.$Nav && $Nav.declare('config.signInUrlWithRefTag','https\x3A\x2F\x2Fwww.amazon.fr\x2Fap\x2Fsignin\x3Fopenid.pape.max_auth_age\x3D0\x26openid.return_to\x3Dhttps\x253A\x252F\x252Fwww.amazon.fr\x252Fpromotion\x252Fpsp\x252FAHSTCFJQ0HC6U\x252F\x253F_encoding\x253DUTF8\x2526_encoding\x253DUTF8\x2526content\x2Did\x253Damzn1.sym.ebe65939\x2D71c5\x2D430e\x2D9d13\x2Dae6dfe997564\x2526pd_rd_r\x253Db2d27c04\x2D578f\x2D4209\x2Db889\x2D2f3790b29e70\x2526pd_rd_w\x253D3uZHA\x2526pd_rd_wg\x253DgrhoS\x2526pf_rd_p\x253Debe65939\x2D71c5\x2D430e\x2D9d13\x2Dae6dfe997564\x2526pf_rd_r\x253D0Q88X5MYBXAXJM8SRKC4\x2526ref_\x253DnavSignInUrlRefTagPlaceHolder\x26openid.identity\x3Dhttp\x253A\x252F\x252Fspecs.openid.net\x252Fauth\x252F2.0\x252Fidentifier_select\x26openid.assoc_handle\x3Dfrflex\x26openid.mode\x3Dcheckid_setup\x26openid.claimed_id\x3Dhttp\x253A\x252F\x252Fspecs.openid.net\x252Fauth\x252F2.0\x252Fidentifier_select\x26openid.ns\x3Dhttp\x253A\x252F\x252Fspecs.openid.net\x252Fauth\x252F2.0'); window.$Nav && $Nav.declare('config.regionalStores',[]); window.$Nav && $Nav.declare('config.isALFRedesignPT2',false); window.$Nav && $Nav.declare('config.isNavALFRegistryGiftList',false); window.$Nav && $Nav.declare('config.marketplaceId','A13V1IB3VIYZZH'); window.$Nav && $Nav.declare('config.exportTransitionState',null); window.$Nav && $Nav.declare('config.enableAeeXopFlyout',false); window.$Nav && $Nav.declare('config.isPrimeFlyoutMigrationEnabled',false); window.$Nav && $Nav.declare('config.isAjaxPaymentNotificationMigrated',false); window.$Nav && $Nav.declare('config.isAjaxPaymentSuppressNotificationMigrated',true); if (window.P && typeof window.P.declare === "function" && typeof window.P.now === "function") { window.P.now('packardGlowIngressJsEnabled').execute(function(glowEnabled) { if (!glowEnabled) { window.P.declare('packardGlowIngressJsEnabled', true); } }); window.P.now('packardGlowStoreName').execute(function(storeName) { if (!storeName) { window.P.declare('packardGlowStoreName','generic'); } }); } window.$Nav && $Nav.declare('configComplete'); --> </script> <a id="skippedLink" tabindex="-1"></a> <script type='text/javascript'>window.navmet.MainEnd = new Date();</script> <script type="text/javascript"> if (window.ue_t0) { window.navmet.push({key:"NavMainEnd",end:+new Date(),begin:window.ue_t0}); } </script> <!-- sp:end-feature:navbar --> <!-- sp:feature:configured-sitewide-before-host-atf-assets --> <!-- sp:end-feature:configured-sitewide-before-host-atf-assets --> <!-- sp:feature:host-atf --> <!-- ATF content --> <body class="a-m-fr a-aui_72554-c a-aui_a11y_6_837773-c a-aui_amzn_img_959719-c a-aui_amzn_img_gate_959718-c a-aui_killswitch_csa_logger_372963-c a-aui_pci_risk_banner_210084-c a-aui_template_weblab_cache_333406-c a-aui_tnr_v2_180836-c a-bw_aui_cxc_alert_measurement_1074111-c"><div id="a-page"><script type="a-state" data-a-state="{"key":"a-wlab-states"}">{"AUI_KILLSWITCH_CSA_LOGGER_372963":"C"}</script> <script> //Height of the cart (46px) and banner (60px), used to set offset from footer const stickyCartHeight = 106; window.P.when("A", "a-popover", "ready").register("common_module", function (A, popover) { let $ = A.$; return { isEmpty: function (obj) { return (typeof obj == "undefined" || obj == null || obj == "" || obj == "null" || obj == "Null" || obj == "NULL"); }, isNotEmpty: function (obj) { return !this.isEmpty(obj); }, gotoAnchor: function (selector) { if ($(selector) && $(selector).offset()) { const isOnVisibleScreen = $(selector).offset().top + $(selector).outerHeight() > $(window).scrollTop(); if (!isOnVisibleScreen && $(selector)[0]) { $(selector)[0].scrollIntoView(); } } }, createPopover: function (triggerSelector, preloadContentName, activate = "onclick", width = "auto", height = "auto", position = "triggerVertical") { let $trigger = $(triggerSelector); let options = { "name": preloadContentName, "activate": activate, "max-width": Math.max(500, window.innerWidth / 2), "max-height": window.innerHeight / 2, "width": width, "height": height, "position": position, "overflow": "scroll", "closeButton": true, }; popover.create($trigger, options); }, hidePopover: function(preloadContentName) { if (popover.get(preloadContentName)) { popover.get(preloadContentName).hide(); } }, // Change styles when elements are focused/activated focus: function (allElements, element) { allElements.removeClass("a-text-bold"); element.addClass("a-text-bold"); }, // removes existing parameters and adds new parameter for reftag setReftag: function (reftag) { const url = new URL(window.location.href); url.searchParams.set('ref', reftag); url.searchParams.delete('source'); window.history.replaceState(null, null, url); }, // append ref parameter to existing parameters appendReftag: function (reftag) { const url = new URL(window.location.href); url.searchParams.append('ref', reftag); window.history.replaceState(null, null, url); }, // Sets product category parameter setProductCategory: function (category) { const url = new URL(window.location.href); url.searchParams.set('productCategory', category); window.history.pushState(null, null, url); }, // Reset product category resetProductCategory: function () { const url = new URL(window.location.href); url.searchParams.set('productCategory', ''); window.history.pushState(null, null, url); }, clientSideMetrics: function(data) { $.ajax({ type: "GET", url: "/promotion/psp/csm", data: $.param(data, true), dataType: "json", contentType: "application/x-www-form-urlencoded; charset=UTF-8", }); } } }); if (true || false) { //On-scroll function that controls when the sticky cart appears and disappears window.onscroll = function() {myFunction() function myFunction() { window.P.when("A", "ready").execute(function (A) { let $ = A.$; /* * Safari when making sticky cart hide and reappear adds an "overflow:hidden" property * This is undesired because it makes cart not appear once opened */ $("#topCart_gridItem").css("overflow",""); //Sticky cart is displayed in between the bounds of 100 pixels and once the footer is reached if (scrollY > 100 & document.getElementById("navFooter").getBoundingClientRect().top >= stickyCartHeight) { $("#topBannerContainer").show(10).addClass("stickyBanner"); $("#topCart_gridItem").show(10).addClass("topStickyCart"); $("#bannerId").addClass("hidden"); $("#promotionSchedule").addClass("hidden"); } else if (scrollY < 100) { /* * Browsers toggle CSS values display: block and display: none when using the .hide() * and .show() methods. There is some inconsistency where in rare cases this toggling * does not occur and therefore leaves it on display: none when display: block is desired. * Adding the CSS ourselves ensures that we do not rely on this toggle to happen. */ $("#topBannerContainer").removeClass("stickyBanner").css("display", "block"); $("#topCart_gridItem").removeClass("topStickyCart").css("display", "block"); $("#bannerId").removeClass("hidden"); $("#promotionSchedule").removeClass("hidden"); } else { $("#topBannerContainer").hide(10).addClass("stickyBanner"); $("#topCart_gridItem").hide(10).addClass("topStickyCart"); $("#bannerId").removeClass("hidden"); $("#promotionSchedule").removeClass("hidden"); } }); }} } window.P.when("A", "ready").execute(function (A) { let $ = A.$; // Set min-width of PSP page, getting the value from navbar if ($("#navbar")) { $("#promotionShoppingPageGlobalContainer").css("min-width", $("#navbar").css("min-width")); } if ($("#navbar-backup-backup")) { $("#promotionShoppingPageGlobalContainer").css("min-width", $("#navbar-backup-backup").css("min-width")); } // Hide rhf-container, this holds the SP sign-in button and recommendation $("#rhf").hide(); $("#rhf-container").hide(); }); window.P.when("A", "ready").execute(function (A) { let $ = A.$; let signInURL = "/ap/signin?_encoding=UTF8&openid.assoc_handle=" + "amzn_pdhs_fr" + "&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select" + "&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select" + "&openid.mode=checkid_setup&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0" + "&openid.ns.pape=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fpape%2F1.0" + "&openid.pape.max_auth_age=0&openid.return_to=" + window.location.href + "&" + "ref=psp_pc_log"; if ($("#signInButton")) { $("#signInButton").attr("href", signInURL); } if ($("#primeExclusiveSignInLink")) { $("#primeExclusiveSignInLink").attr("href", signInURL); } if ($("#clipCouponSignIn") && true) { $("#clipCouponSignIn").attr("href", signInURL); } }); window.P.when("A", "common_module", "ready").execute(function (A, commonModule) { let $ = A.$; if ($("#todaysDeal") && commonModule.isNotEmpty($("#todaysDeal"))) { $("#todaysDeal").attr("href", "/gp/goldbox"); $("#amazonCoupon").attr("href", "/deals?bubble-id=deals-collection-coupons"); } }); </script> <script> let isClipped = false; let isQualified = false; let hasBeenAutoRedeem = false; //TODO: Need to handle All Department case for Stockup and Save. isFilterOrSort has to be set correctly in places to function Alldepartments in refinements correctly. /** isFilterOrSort is true if any filter or sort refinement has been selected. isFilterOrSort is only false if there are no refinements specified. * Carousels are only shown if they are enabled and isFilterOrSort is false (that is, that no refinements have been selected) * if any refinements have been selected, the PSP will render like normal (without any carousels) */ let isFilterOrSort = false; let loadRenderLoadProductInfoListAjaxRequest; let isServerResponseEmpty = false; let totalCloneTime = 0; let totalRenderTime = 0; let carouselRenderTimes = []; let pageRenderEndTime; let productCategoryToReftagSuffix = new Map(); // only used for carousel view to store reftagSuffix for a productCategory // Comma separated Amabot slots let amabotSlots = "promo-shopping-page-bottom-1"; let SUSPageId = "stockupandsave"; // Adding this code block to initialize any uninitialized carousels with the suggestion from - https://sage.amazon.com/questions/142988#143036 // Copied the code from AUI documentation - https://evergreen.corp.amazon.com/aui/v3/components/carousel/api-overview/ window.P.when("a-carousel-framework").register("init-faster", function (framework) { P.when("cf").execute(function () { // 'cf' is a marker to ensure when javascript executes, the markup for carousel is present on the page. framework.createAll(); framework.initializeAll(); }); }); window.P.when("common_module", "jQuery").register("queryParameterAjax_module", function (commonModule, $) { // QueryParameter Model, should contain corresponding attributes of model on the backend side. let reftag = ""; let carousel; // count of currently visible products on the page const SUS_VISIBLE_PRODUCTS_COUNT = false ? 3 : 6; let asinToIntervalIdMap = new Map(); let asinToEndsInTimeMap = new Map(); let lightningDealAsins = []; let refinementToCarouselMap = new Map(); let availableProductCategories = []; const redirectAsin = ""; const redirectMerchantId = ""; let productCategory = ""; const queryParameter = { "promotionId": "AHSTCFJQ0HC6U", // if numberOfProductSelections > 1, then it is BXGY promotion, so the productSelection here will be "0" which will be looking at qualifying item by default. // If numberOfProductSelections <= 1, then no need for this field as there is only one productSelection so make it "" "applicabilityIndex": "", "productCategory": productCategory, "subProductCategory": "", "avgCustomerReview": "0", // TODO default to 1, but I didn't find any customerReview in ES "priceTierMin": "", "priceTierMax": "", "bestSeller": "0", "searchKeyword": "", "sortBy": "1", "sortId": [], "redirectAsin": redirectAsin, "redirectMerchantId": redirectMerchantId, "isDebug": 0, "includedDebugMethods": [], "isVPC": false, "promotionMerchantId": "A1X6FK5RDHNB96", "isSNSOnly": false, "isSUSOnly": false, "isCarouselPilot": false, "isPreview": false, "defaultGroupingId": "", "recordedGroupingIds": [], "selectedBrands": [], }; return { cachedPromotionShoppingPageResponse: null, cachedRecordedGroupingIds: [], queryParameterKeys: { "promotionId": "promotionId", "applicabilityIndex": "applicabilityIndex", "productCategory": "productCategory", "subProductCategory": "subProductCategory", "avgCustomerReview": "avgCustomerReview", "priceTierMin": "priceTierMin", "priceTierMax": "priceTierMax", "bestSeller": "bestSeller", "searchKeyword": "searchKeyword", "sortBy": "sortBy", "sortId": "sortId", "recordedGroupingIds": "recordedGroupingIds", "selectedBrands": "selectedBrands", }, reset: function () { queryParameter["applicabilityIndex"] = ""; queryParameter["productCategory"] = ""; queryParameter["subProductCategory"] = ""; queryParameter["avgCustomerReview"] = "0"; queryParameter["priceTierMin"] = ""; queryParameter["priceTierMax"] = ""; queryParameter["bestSeller"] = "0"; queryParameter["searchKeyword"] = ""; queryParameter["sortBy"] = "1"; queryParameter["sortId"] = []; queryParameter["redirectAsin"] = redirectAsin; queryParameter["redirectMerchantId"] = redirectMerchantId; queryParameter["includedDebugMethods"] = []; queryParameter["defaultGroupingId"] = ""; queryParameter["recordedGroupingIds"] = []; queryParameter["selectedBrands"] = []; this.cachedPromotionShoppingPageResponse = null; this.cachedRecordedGroupingIds = []; reftag = ""; asinToIntervalIdMap = new Map(); asinToEndsInTimeMap = new Map(); lightningDealAsins = []; $("#productInfoList").empty(); this.firstPageLoad(); }, resetSelection: function () { let that = this; $("#resetSelection").click(function() { that.reset(); // for cart $("#keywordSearchInputText").val(""); // keyword // applicabilityIndex $("#viewList [data-name=qualifyingItemsRadio]").attr("checked", true) $("#viewList [data-name=benefitItemsRadio]").attr("checked", false) // department $("#brandList .progressBarTierText").attr("checked", false); // review $("#reviewStarOptionsClear").addClass("hidden"); $("[data-name=reviewStartOptions]").removeClass("a-text-bold"); // price tiers + custom input range $("#priceTierClear").addClass("hidden"); $("[data-name=priceTierOptions]").removeClass("a-text-bold"); $("#minPriceInput").val(""); $("#maxPriceInput").val(""); // bestseller $("#bestSellerCheckbox").attr("checked", false); // sort by P.when("a-dropdown").execute(function (dropdown) { dropdown.getSelect("sortBy_dropdownSelect").setValue("1"); }); // for mobile $("[name=menuButton]").removeClass("menuButtonFocus"); $("#viewBox").empty(); $("#departmentBox").empty(); $("#brandsBox").empty(); $("#customerReviewBox").empty(); $("#priceTierBox").empty(); $("#bestsellerBox").empty(); $("#sortByBox").empty(); that.showClearButton(); $($("#sortByText [name=menuButton]")[0]).addClass("menuButtonFocus"); }); }, // public function getValue: function (key) { return queryParameter[key]; }, // public function showMore: function (key, value) { if (queryParameter[key] != value) { this.getRefTag(key, value); queryParameter[key] = value; } // 1. render page from cache let startTime = new Date().getTime(); this.renderProductInfoList(); let endTime = new Date().getTime(); let data = { "startTime" : startTime, "endTime" : endTime, "metricsName": "productInfoListShowMore" } commonModule.clientSideMetrics(data); // 2. cache next page this.loadProductInfoList(); }, // public function: refinement, keyword search, sort by use case filterOrSort: function (key, value) { //removes redirect item from first in product grid after refinement queryParameter["redirectAsin"] = ""; queryParameter["redirectMerchantId"] = ""; if (key == "productCategory") { productCategory = value; } if (key === this.queryParameterKeys.selectedBrands) { queryParameter[this.queryParameterKeys.priceTierMin] = ""; queryParameter[this.queryParameterKeys.priceTierMax] = ""; $("#minPriceInput").val(""); $("#maxPriceInput").val(""); $("#priceTierClear").addClass("hidden"); if (queryParameter[key].indexOf(value) !== -1) { queryParameter[key].splice(queryParameter[key].indexOf(value), 1); } else { queryParameter[key].push(value); } this.getRefTag(key, value); this.firstPageLoad(); } else { if (queryParameter[key] != value) { // Per discussion with UXD, for now only reset price tier when selecting departments this.checkIsResetNeededForPriceTier(key); queryParameter[key] = value; this.getRefTag(key, value); this.firstPageLoad(); } } }, // public function: refinement, keyword search, sort by use case filterOrSort2: function (key1, value1, key2, value2) { //removes redirect item from first in product grid after refinement queryParameter["redirectAsin"] = ""; queryParameter["redirectMerchantId"] = ""; if (queryParameter[key1] != value1 || queryParameter[key2] != value2) { if (queryParameter[key1] != value1 && queryParameter[key2] != value2) { this.getRefTag(key1, value1); queryParameter[key1] = value1; this.getRefTag(key2, value2); queryParameter[key2] = value2; this.checkIsResetNeededForPriceTier(key1); this.checkIsResetNeededForPriceTier(key2); commonModule.setReftag("psp_pc_re_pmin_"); commonModule.appendReftag("psp_pc_re_pmax_"); } else if (queryParameter[key1] != value1 ) { this.getRefTag(key1, value1); queryParameter[key1] = value1; this.checkIsResetNeededForPriceTier(key1); commonModule.setReftag("psp_pc_re_pmin_"); } else { this.getRefTag(key2, value2); queryParameter[key2] = value2; this.checkIsResetNeededForPriceTier(key2); commonModule.setReftag("psp_pc_re_pmax_"); } this.firstPageLoad(); } }, checkIsResetNeededForPriceTier: function (key) { if (key === this.queryParameterKeys.productCategory || key === this.queryParameterKeys.subProductCategory || key === this.queryParameterKeys.applicabilityIndex) { queryParameter[this.queryParameterKeys.priceTierMin] = ""; queryParameter[this.queryParameterKeys.priceTierMax] = ""; queryParameter[this.queryParameterKeys.selectedBrands] = []; $("#minPriceInput").val(""); $("#maxPriceInput").val(""); $("#priceTierClear").addClass("hidden"); if (key === this.queryParameterKeys.productCategory) { queryParameter[this.queryParameterKeys.subProductCategory] = ""; } } }, checkFilterOrSort: function () { return !(commonModule.isEmpty(queryParameter["applicabilityIndex"]) && commonModule.isEmpty(queryParameter["productCategory"]) && (commonModule.isEmpty(queryParameter["subProductCategory"])) && commonModule.isEmpty(queryParameter["searchKeyword"]) && (commonModule.isEmpty(queryParameter["avgCustomerReview"]) || queryParameter["avgCustomerReview"] == "0") && ((commonModule.isEmpty(queryParameter["priceTierMin"]) || queryParameter["priceTierMin"] == "") && (commonModule.isEmpty(queryParameter["priceTierMax"]) || queryParameter["priceTierMax"] == "")) && (commonModule.isEmpty(queryParameter["bestSeller"]) || queryParameter["bestSeller"] == "0") && (commonModule.isEmpty(queryParameter["sortBy"]) || queryParameter["sortBy"] == "1") && (commonModule.isEmpty(queryParameter["selectedBrands"]) || queryParameter["selectedBrands"].length == 0)); }, // private function firstPageLoad: function () { if (loadRenderLoadProductInfoListAjaxRequest && loadRenderLoadProductInfoListAjaxRequest.readyState != 4) { loadRenderLoadProductInfoListAjaxRequest.abort(); } // 0. make sure that isFilterOrSort is set correctly before any loading takes place so that SUS renders correctly with passed category value isFilterOrSort = this.checkFilterOrSort(); // 1. render refinement this.loadRenderRefinement(); this.ensureHowToClaimExpanderExpanded(); // 2. load and render product and cache 2nd page this.cachedPromotionShoppingPageResponse = null; this.cachedRecordedGroupingIds = []; queryParameter["sortId"] = []; $("#productInfoList").empty(); this.loadRenderLoadProductInfoList(); }, // private function: load and render product and cache 2nd page loadRenderLoadProductInfoList: function () { if (commonModule.isEmpty(this.cachedPromotionShoppingPageResponse) || !this.cachedPromotionShoppingPageResponse["reachBottom"]) { let startTime = new Date().getTime(); let that = this; let productInfoListParam = { "promotionId": queryParameter["promotionId"], "avgCustomerReview": queryParameter["avgCustomerReview"], "priceTierMin" : queryParameter["priceTierMin"], "priceTierMax" : queryParameter["priceTierMax"], "bestSeller": queryParameter["bestSeller"], "sortId": JSON.stringify(queryParameter["sortId"]), "applicabilityIndex": queryParameter["applicabilityIndex"], "productCategory": queryParameter["productCategory"], "searchKeyword": queryParameter["searchKeyword"], "redirectAsin": queryParameter["redirectAsin"], "redirectMerchantId": queryParameter["redirectMerchantId"], "productCategories": JSON.stringify(availableProductCategories), "subProductCategory": queryParameter["subProductCategory"], "selectedBrands": JSON.stringify(queryParameter["selectedBrands"]), "promotionMerchantId": queryParameter["promotionMerchantId"], "isSNSOnly": queryParameter["isSNSOnly"], "isSUSOnly": queryParameter["isSUSOnly"], "isCarouselPilot": queryParameter["isCarouselPilot"], "isPrimeShippingEligible": "PROMOTION_ENDED_RECENTLY" != "CUSTOMER_PRIME_INELIGIBLE", "isPreview": "false", "isFirstPageLoadRequest": !isFilterOrSort, "recordedGroupingIds": JSON.stringify(queryParameter["recordedGroupingIds"]), "anti-csrftoken-a2z": 'hLDJNH0l8Skatr21ECZymhUAHA1pq71la2J9KRHWrtYnAAAAAGeyhrcAAAAB' }; this.showSpin(); loadRenderLoadProductInfoListAjaxRequest = $.ajax({ type: "POST", url: this.getProductInfoControllerURL(), data: productInfoListParam, dataType: "json", contentType: "application/x-www-form-urlencoded; charset=UTF-8", success: function (promotionShoppingPageResponse) { let serverCallEndTime = new Date().getTime(); if (false) { appendDebugJSON("product_info_list", promotionShoppingPageResponse["debugJson"]); } that.cachedPromotionShoppingPageResponse = promotionShoppingPageResponse; // We show the Show More button after calling for product List that.renderProductInfoList(); let endTime = new Date().getTime(); that.recordSUSLatencyMetrics(startTime, serverCallEndTime, "susServerCall") that.recordSUSLatencyMetrics(startTime, endTime, "susFirstPageLoad"); that.recordSUSLatencyMetrics(startTime, startTime + totalRenderTime, "renderAsinFunction"); that.recordSUSLatencyMetrics(startTime, startTime + totalCloneTime, "cloneAsinFunction"); carouselRenderTimes.forEach(time => that.recordSUSLatencyMetrics(startTime, startTime + time, "perCarouselRender")); that.recordVisibleProductsRenderTime(startTime, pageRenderEndTime); let data = { "startTime" : startTime, "endTime" : endTime, "metricsName": "productInfoListFirstPageLoad" } commonModule.clientSideMetrics(data); if (!promotionShoppingPageResponse["reachBottom"] && commonModule.isNotEmpty(queryParameter["sortId"])) { that.loadProductInfoList(); } }, error: function () { $("#pspSpinner").addClass("hidden"); $("#a-page").removeClass("halfOpacity"); $("#a-page").attr("disabled", false); // Only add hideSpin here because renderProductInfoList will hideSpin when rendering that.hideSpin(); } }); } }, // private function loadProductInfoList: function () { if (commonModule.isEmpty(this.cachedPromotionShoppingPageResponse) || !this.cachedPromotionShoppingPageResponse["reachBottom"]) { queryParameter["recordedGroupingIds"] = this.cachedRecordedGroupingIds; let productInfoListParam = { "promotionId": queryParameter["promotionId"], "avgCustomerReview": queryParameter["avgCustomerReview"], "priceTierMin" : queryParameter["priceTierMin"], "priceTierMax" : queryParameter["priceTierMax"], "bestSeller": queryParameter["bestSeller"], "sortId": JSON.stringify(queryParameter["sortId"]), "applicabilityIndex": queryParameter["applicabilityIndex"], "productCategory": queryParameter["productCategory"], "searchKeyword": queryParameter["searchKeyword"], "redirectAsin": queryParameter["redirectAsin"], "redirectMerchantId": queryParameter["redirectMerchantId"], "productCategories": JSON.stringify(availableProductCategories), "subProductCategory": queryParameter["subProductCategory"], "selectedBrands": JSON.stringify(queryParameter["selectedBrands"]), "promotionMerchantId": queryParameter["promotionMerchantId"], "isSNSOnly": queryParameter["isSNSOnly"], "isSUSOnly": queryParameter["isSUSOnly"], "isCarouselPilot": queryParameter["isCarouselPilot"], "isPrimeShippingEligible": "PROMOTION_ENDED_RECENTLY" != "CUSTOMER_PRIME_INELIGIBLE", "isPreview": "false", "recordedGroupingIds": JSON.stringify(queryParameter["recordedGroupingIds"]), "anti-csrftoken-a2z": 'hLDJNH0l8Skatr21ECZymhUAHA1pq71la2J9KRHWrtYnAAAAAGeyhrcAAAAB' }; let that = this; $("#showMoreBtnContainer").addClass("hidden"); $.ajax({ type: "POST", url: this.getProductInfoControllerURL(), data: productInfoListParam, dataType: "json", contentType: "application/x-www-form-urlencoded; charset=UTF-8", success: function (promotionShoppingPageResponse) { if (false) { appendDebugJSON("product_info_list", promotionShoppingPageResponse["debugJson"]); } that.cachedPromotionShoppingPageResponse = promotionShoppingPageResponse; if (!false || isFilterOrSort ) { // We show the Show More button after calling for product List $("#showMoreBtnContainer").removeClass("hidden"); // If a promotion has outdated ES records, then it is more likely it has a false positive show more button shown at last page, since the ES records available for last page can be fewer. if (promotionShoppingPageResponse["reachBottom"]) { // If we are at last page, then we do a check to see if there are productInfos available, if not hide the show more button if (commonModule.isEmpty(promotionShoppingPageResponse) || commonModule.isEmpty(promotionShoppingPageResponse["viewModels"]["PRODUCT_INFO_LIST"])) { $("#showMoreBtnContainer").addClass("hidden"); } } } }, error: function () { $("#pspSpinner").addClass("hidden"); $("#a-page").removeClass("halfOpacity"); $("#a-page").attr("disabled", false); } }); } }, // private function renderAsinFaceOutTemplate: function (productInfo, productGrid, dpLink, ldMerchantToAsins) { productGrid.attr("data-asin", productInfo["asin"]); productGrid.attr("data-merchant", productInfo["merchantId"]); // 2. Fill in corresponding data queryParameter["sortId"] = productInfo["sortId"]; // Best Seller badge if (commonModule.isNotEmpty(productInfo["badgeType"])) { productGrid.find("div[name=bestSellerBadgeBox]").removeClass("invisible"); } // Image this.renderImageForProductGrid(productInfo, productGrid, dpLink); // Title productGrid.find("div[name=productTitleBox]").find("[data-name=productTitle]").text(productInfo["title"]); productGrid.find("div[name=productTitleBox]").find("[data-name=productTitle]").attr("href", dpLink); // ByLineInfoV2 productGrid.find("[data-name=productByLineInfoV2]").text(productInfo["byLineInfoV2"]); // empty span added to fill up line so that alignment doesn't break when no brand name is given if (commonModule.isEmpty(productInfo["byLineInfoV2"])) { productGrid.find("[data-name=productByLineInfoV2]").html('<span class="inlineBlock"></span>'); productGrid.find("[data-name=productByLineInfoV2]").addClass("invisible"); } // Review if (commonModule.isNotEmpty(productInfo["customerReviewsSummary"])) { let productCustomerReviewBox = productGrid.find("[name=productCustomerReviewBox]"); productCustomerReviewBox.find("[name=productReviewStars]").addClass(productInfo["customerReviewsSummary"]["reviewStarCss"]); productCustomerReviewBox.find("[name=productReviewStars]").attr("title", productInfo["customerReviewsSummary"]["displayString"]); productCustomerReviewBox.find("[name=productReviewRating]").text(productInfo["customerReviewsSummary"]["displayString"]); productCustomerReviewBox.find("[name=productReviewRatingShortString]").text(productInfo["customerReviewsSummary"]["shortDisplayString"]); if (commonModule.isNotEmpty(productInfo["customerReviewsSummary"]["count"])) { productCustomerReviewBox.find("[name=productReviewCount]").text(productInfo["customerReviewsSummary"]["count"]); } productCustomerReviewBox.removeClass("invisible"); } // Limited Time Deal if (productInfo["lightningDeal"]) { productGrid.find("div[name=limitedTimeDeal]").removeClass("hidden"); // If LTD is present, variable spacing is added to maintain alignment. productGrid.find("[name=variableSpacing]").removeClass("displayNone"); let ldBarPercentSection = productGrid.find("div[name=ldBarPercentSection]"); ldBarPercentSection.removeClass("hidden"); this.startLdEndTimer(productInfo["secondsLeftToClaim"], productInfo["asin"]); this.displayLdEndTime(ldBarPercentSection, productInfo["asin"]); ldBarPercentSection.find("[name=ldFilledBar]").width(productInfo["percentageClaimedBar"]); ldBarPercentSection.find("[data-name=percentClaimed]").text(productInfo["percentageClaimed"]); if (!lightningDealAsins.includes(productInfo["asin"])) { lightningDealAsins.push(productInfo["asin"]); let merchantId = productInfo["merchantId"]; if (!ldMerchantToAsins[merchantId]) { ldMerchantToAsins[merchantId] = []; } ldMerchantToAsins[merchantId].push(productInfo["asin"]); } } // price let price = this.renderPriceForProductGrid(productInfo, productGrid); // SNS Description if (commonModule.isNotEmpty(productInfo["snsPromotionMessage"])) { let snsPromotionMessageBox = productGrid.find("[name=productSNSPromotionMessageBox]") snsPromotionMessageBox.find("[data-name=snsPromotionMessage]").html(productInfo["snsPromotionMessage"]) snsPromotionMessageBox.removeClass("hidden"); } // Prime & delivery // Badge let deliveryInfoBox = productGrid.find("[name=productDeliveryBox]"); if (commonModule.isNotEmpty(productInfo["deliveryBadge"])) { deliveryInfoBox.find("[name=deliveryBadge]").html(productInfo["deliveryBadge"]); deliveryInfoBox.find("[name=deliveryBadge]").removeClass("invisible"); deliveryInfoBox.removeClass("invisible"); } else { // empty span added to maintain alignment when a delivery badge is not present deliveryInfoBox.find("[name=deliveryBadge]").html('<span class="inlineBlock"></span>'); } // Message if (commonModule.isNotEmpty(productInfo["deliveryMessage"])) { deliveryInfoBox.find("[data-name=deliveryMessage]").html(productInfo["deliveryMessage"]); deliveryInfoBox.find("[data-name=deliveryMessage]").removeClass("invisible"); deliveryInfoBox.removeClass("invisible"); } else { // empty span added to maintain alignment when a delivery message is not present deliveryInfoBox.find("[data-name=deliveryMessage]").html('<span class="inlineBlock"></span>'); } // Availability let productAvailabilityBox = productGrid.find("[name=productAvailabilityBox]"); if (commonModule.isNotEmpty(productInfo["availabilityMessage"]) && productInfo["lightningDeal"] == false) { productAvailabilityBox.find("[data-name=availabilityMessage]").text(productInfo["availabilityMessage"]) productAvailabilityBox.removeClass("invisible"); } else { // empty span added to maintain alignment when an availability message is not present productAvailabilityBox.find("[data-name=availabilityMessage]").html('<span class="inlineBlock"></span>'); } return price; }, // private function renderVariationalAsinFaceOutTemplate: function (productInfo, productGrid, dpLink, ldMerchantToAsins, productCategory) { let previousAsin = productGrid.attr("data-asin"); this.renderAsinFaceOutTemplate(productInfo, productGrid, dpLink, ldMerchantToAsins) // Stop previous displaying lightning deal timer, if any. if (commonModule.isNotEmpty(previousAsin) && asinToIntervalIdMap.has(previousAsin)) { clearInterval(asinToIntervalIdMap.get(previousAsin)); asinToIntervalIdMap.delete(previousAsin); } productGrid.attr("data-asin", productInfo["asin"]); productGrid.attr("data-merchant", productInfo["merchantId"]); // Add to cart / LD (View Item/View options) let addToCartBtnBox = productGrid.find("div[name=addToCartBtnBox]"); let selectBtnBox = productGrid.find("[name=selectBtnBox]"); let ldBarPercentSection = productGrid.find("div[name=ldBarPercentSection]"); let viewItemBtnBox = productGrid.find("[name=viewItemBtnBox]"); if (productInfo["blockATCAsin"]) { // Render the select button for blockATCAsin offers selectBtnBox.removeClass("hidden"); selectBtnBox.find("[name=selectBtn]").attr("href", dpLink); addToCartBtnBox.addClass("hidden"); productGrid.find("div[name=limitedTimeDeal]").addClass("hidden"); ldBarPercentSection.addClass("hidden"); viewItemBtnBox.addClass("hidden"); } else if (productInfo["lightningDeal"] || (false)) { // View Item, as discussed with frontend UX designer, showing View item here viewItemBtnBox.removeClass("hidden"); viewItemBtnBox.find("[name=viewItemBtn]").attr("href", dpLink); addToCartBtnBox.find("[name=addToCartBtn]").addClass("hidden"); addToCartBtnBox.find("[name=addVariationalASINToCartBtn]").addClass("hidden"); addToCartBtnBox.addClass("hidden"); selectBtnBox.addClass("hidden"); if (!productInfo["lightningDeal"]) { ldBarPercentSection.addClass("hidden"); } else { ldBarPercentSection.removeClass("hidden"); } } else { productGrid.find("div[name=limitedTimeDeal]").addClass("hidden"); ldBarPercentSection.addClass("hidden"); viewItemBtnBox.addClass("hidden"); selectBtnBox.addClass("hidden"); if (productInfo["parentAsin"] || commonModule.isEmpty(productInfo["offerListingId"])) { // See options addToCartBtnBox.removeClass("hidden"); addToCartBtnBox.find("[name=seeOptionsBtn]").removeClass("hidden"); addToCartBtnBox.find("[name=seeOptionsBtn]").attr("href", productInfo["detailPageLink"]); } else { // Add to cart let data_json = { "asin": productInfo["asin"], "offerListingId": productInfo["offerListingId"], "merchantId": productInfo["merchantId"], "canonicalAsin": productInfo["canonicalAsin"], "quantity": productInfo["quantity"], "minimumOrderQuantity": productInfo["minimumOrderQuantity"] }; // set reftagSuffix only for carousel view if (false && !isFilterOrSort) { data_json["reftagSuffix"] = productCategoryToReftagSuffix.get(productCategory); } // with color selector, after switched a color, customer need to chooes from the size dropdown again addToCartBtnBox.removeClass("hidden"); addToCartBtnBox.find("[name=addToCartBtn]").addClass("hidden"); addToCartBtnBox.find("[name=addVariationalASINToCartBtn]").removeClass("hidden"); addToCartBtnBox.find("[type=submit]").attr("data-json", JSON.stringify(data_json)); addToCartBtnBox.find("[type=submit]").addClass("inputCursorDisabled"); } } // redeem coupon, logic to execute only once is in the redeemCoupon method this.redeemCoupon(productInfo["asin"], productInfo["offerListingId"]); }, // private function renderAsinFaceOut: function (productInfo, productGrid, dpLink, ldMerchantToAsins, productCategory) { let startTime = new Date().getTime(); let price = this.renderAsinFaceOutTemplate(productInfo, productGrid, dpLink, ldMerchantToAsins) // productVariationData let variationalEntries = new Map(Object.entries(productInfo["variationData"])); if (variationalEntries.size > 0) { productGrid.find("div[name=productVariationDataForPlainAsin").removeClass("hidden"); let notFirst = false; for (let [key, value] of variationalEntries) { if (key !== "order") { if (notFirst){ productGrid.find("[data-name=productVariationDataForPlainAsin]").append('<li class="sc-product-variation clamp1 variationItem" aria-label=""><span class="a-size-base a-text-bold" aria-label="">' + key + ":" + '</span><span class="a-size-small" aria-label=""> ' + value + '</span></li>'); } else { productGrid.find("[data-name=productVariationDataForPlainAsin]").append('<li class="sc-product-variation clamp1" aria-label=""><span class="a-size-base a-text-bold" aria-label="">' + key + ":" + '</span><span class="a-size-small" aria-label=""> ' + value + '</span></li>'); } notFirst = true } } if(notFirst){ // variable spacing productGrid.find("[name=variableSpacing]").removeClass("displayNone"); // adding margin to LTD productGrid.find("div[name=limitedTimeDeal]").addClass("limitedTimeDealSpacing"); } } let addToCartBtnBox = productGrid.find("div[name=addToCartBtnBox]"); // Add to cart / LD (View Item/View options) / Select (GiftCard offers) if (productInfo["blockATCAsin"]) { // Render the select button for blockATCAsin offers let selectBtnBox = productGrid.find("[name=selectBtnBox]"); selectBtnBox.removeClass("hidden"); selectBtnBox.find("[name=selectBtn]").attr("href", dpLink); addToCartBtnBox.addClass("hidden"); } else if (productInfo["lightningDeal"] || (false)) { // View Item let viewItemBtnBox = productGrid.find("[name=viewItemBtnBox]"); viewItemBtnBox.removeClass("hidden"); viewItemBtnBox.find("[name=viewItemBtn]").attr("href", dpLink); addToCartBtnBox.addClass("hidden"); } else { if (productInfo["parentAsin"] || commonModule.isEmpty(productInfo["offerListingId"])) { // See options addToCartBtnBox.find("[name=seeOptionsBtn]").removeClass("hidden"); addToCartBtnBox.find("[name=seeOptionsBtn]").attr("href", productInfo["detailPageLink"]); } else { // Add to cart let data_json = { "asin": productInfo["asin"], "price": price, "quantity": productInfo["quantity"], "minimumOrderQuantity": productInfo["minimumOrderQuantity"], "offerListingId": productInfo["offerListingId"], "merchantId": productInfo["merchantId"], "canonicalAsin": productInfo["canonicalAsin"], }; // set reftagSuffix only for carousel view if (false && !isFilterOrSort) { data_json["reftagSuffix"] = productCategoryToReftagSuffix.get(productCategory); } addToCartBtnBox.find("[name=addToCartBtn]").removeClass("hidden"); addToCartBtnBox.find("[type=submit]").attr("data-json", JSON.stringify(data_json)); } } // redeem coupon, logic to execute only once is in the redeemCoupon method this.redeemCoupon(productInfo["asin"], productInfo["offerListingId"]); totalRenderTime += (new Date().getTime() - startTime); }, renderVariationalDataForFaceOut: function (productGrid, productInfo, dpLink, productCategory) { let previousAsin = productGrid.attr("data-asin"); let ldMerchantToAsins = {}; // Stop previous displaying lightning deal timer, if any. if (asinToIntervalIdMap.has(previousAsin)) { clearInterval(asinToIntervalIdMap.get(previousAsin)); asinToIntervalIdMap.delete(previousAsin); } productGrid.attr("data-asin", productInfo["asin"]); productGrid.attr("data-merchant", productInfo["merchantId"]); // Best Seller badge if (commonModule.isNotEmpty(productInfo["badgeType"])) { productGrid.find("div[name=bestSellerBadgeBox]").removeClass("invisible"); } else { productGrid.find("div[name=bestSellerBadgeBox]").addClass("invisible"); } // Image this.renderImageForProductGrid(productInfo, productGrid, dpLink); // Title productGrid.find("div[name=productTitleBox]").find("[data-name=productTitle]").text(productInfo["title"]); productGrid.find("div[name=productTitleBox]").find("[data-name=productTitle]").attr("href", dpLink); // Limited Time Deal if (productInfo["lightningDeal"]) { productGrid.find("div[name=limitedTimeDeal]").removeClass("hidden"); // If LTD is present, variable spacing is added to maintain alignment. productGrid.find("[name=variableSpacing]").removeClass("displayNone"); let ldBarPercentSection = productGrid.find("div[name=ldBarPercentSection]"); ldBarPercentSection.removeClass("hidden"); this.displayLdEndTime(ldBarPercentSection, productInfo["asin"]); ldBarPercentSection.find("[name=ldFilledBar]").width(productInfo["percentageClaimedBar"]); ldBarPercentSection.find("[data-name=percentClaimed]").text(productInfo["percentageClaimed"]); if (!lightningDealAsins.includes(productInfo["asin"])) { lightningDealAsins.push(productInfo["asin"]); let merchantId = productInfo["merchantId"]; if (!ldMerchantToAsins[merchantId]) { ldMerchantToAsins[merchantId] = []; } ldMerchantToAsins[merchantId].push(productInfo["asin"]); this.continuousUpdateClaim(ldMerchantToAsins); } } else { let ldBarPercentSection = productGrid.find("div[name=ldBarPercentSection]"); productGrid.find("div[name=limitedTimeDeal]").addClass("hidden"); ldBarPercentSection.addClass("hidden"); } // price let price = this.renderPriceForProductGrid(productInfo, productGrid); // SNS Description if (commonModule.isNotEmpty(productInfo["snsPromotionMessage"])) { let snsPromotionMessageBox = productGrid.find("[name=productSNSPromotionMessageBox]") snsPromotionMessageBox.find("[data-name=snsPromotionMessage]").html(productInfo["snsPromotionMessage"]) snsPromotionMessageBox.removeClass("hidden"); } else { let snsPromotionMessageBox = productGrid.find("[name=productSNSPromotionMessageBox]") snsPromotionMessageBox.addClass("hidden"); } // Prime & delivery let deliveryInfoBox = productGrid.find("[name=productDeliveryBox]"); if (commonModule.isNotEmpty(productInfo["deliveryMessage"])) { deliveryInfoBox.find("[data-name=productDelivery]").html(productInfo["deliveryMessage"]); deliveryInfoBox.removeClass("invisible"); deliveryInfoBox.removeClass("hidden"); } else { deliveryInfoBox.addClass("invisible"); deliveryInfoBox.addClass("hidden") } // Availability if (commonModule.isNotEmpty(productInfo["availabilityMessage"]) && productInfo["lightningDeal"] == false) { let productAvailabilityBox = productGrid.find("[name=productAvailabilityBox]"); productAvailabilityBox.find("[data-name=availabilityMessage]").text(productInfo["availabilityMessage"]) productAvailabilityBox.removeClass("invisible"); productAvailabilityBox.removeClass("hidden"); } else { let productAvailabilityBox = productGrid.find("[name=productAvailabilityBox]"); productAvailabilityBox.addClass("invisible"); // empty span added to maintain alignment when an availability message is not present productAvailabilityBox.find("[data-name=availabilityMessage]").html('<span class="inlineBlock"></span>'); } // Add to cart / LD (View Item/View options) let addToCartBtnBox = productGrid.find("div[name=addToCartBtnBox]"); if (productInfo["blockATCAsin"]) { // Render the select button for blockATCAsin offers let selectBtnBox = productGrid.find("[name=selectBtnBox]"); selectBtnBox.removeClass("hidden"); selectBtnBox.find("[name=selectBtn]").attr("href", dpLink); addToCartBtnBox.addClass("hidden"); } else if (productInfo["lightningDeal"] || false) { // View Item let viewItemBtnBox = productGrid.find("[name=viewItemBtnBox]"); viewItemBtnBox.removeClass("hidden"); viewItemBtnBox.find("[name=viewItemBtn]").attr("href", dpLink); addToCartBtnBox.find("[name=addToCartBtn]").addClass("hidden"); addToCartBtnBox.find("[name=addVariationalASINToCartBtn]").addClass("hidden"); addToCartBtnBox.addClass("hidden"); } else { let viewItemBtnBox = productGrid.find("[name=viewItemBtnBox]"); viewItemBtnBox.addClass("hidden"); if (productInfo["parentAsin"] || commonModule.isEmpty(productInfo["offerListingId"])) { // See options addToCartBtnBox.find("[name=seeOptionsBtn]").removeClass("hidden"); addToCartBtnBox.find("[name=seeOptionsBtn]").attr("href", productInfo["detailPageLink"]); } else { // Add to cart let data_json = { "asin": productInfo["asin"], "offerListingId": productInfo["offerListingId"], "price": price, "quantity": productInfo["quantity"], "minimumOrderQuantity": productInfo["minimumOrderQuantity"], "merchantId": productInfo["merchantId"], "canonicalAsin": productInfo["canonicalAsin"], }; // set reftagSuffix only for carousel view if (false && !isFilterOrSort) { data_json["reftagSuffix"] = productCategoryToReftagSuffix.get(productCategory); } addToCartBtnBox.find("[name=addVariationalASINToCartBtn]").addClass("hidden"); addToCartBtnBox.find("[name=addToCartBtn]").removeClass("hidden"); addToCartBtnBox.find("[data-name=addToCartBtn]").attr("data-json", JSON.stringify(data_json)); addToCartBtnBox.find("[data-name=addToCartBtn]").removeClass("inputCursorDisabled"); } addToCartBtnBox.removeClass("hidden"); } // redeem coupon, logic to execute only once is in the redeemCoupon method this.redeemCoupon(productInfo["asin"], productInfo["offerListingId"]); }, processVariationalData: function (variationalData) { let processedVariationalData = ""; let variationalEntries = new Map(Object.entries(variationalData)) for (let [key, value] of variationalEntries) { if (key === "order") { break } processedVariationalData += key + value; } return processedVariationalData; }, // private function renderVariationColorDimension: function (productInfo, productGrid, productInfos, ldMerchantToAsins, productCategory) { let nonMetadataColorMap = new Map(); let hasMetadataColorMap = new Map(); let colorNameToMetadataMap = new Map(); // data comes in sorted way by sortId, recording popular rank of color for (let i = 0; i < productInfos.length; i += 1) { if (!colorNameToMetadataMap.has(productInfos[i]["variationData"]["color_name"])) { colorNameToMetadataMap.set(productInfos[i]["variationData"]["color_name"], productInfos[i]["variationData"]["color_metadata"]); if (commonModule.isNotEmpty(productInfos[i]["variationData"]["color_metadata"])) { hasMetadataColorMap.set(productInfos[i]["variationData"]["color_name"], []); } else { nonMetadataColorMap.set(productInfos[i]["variationData"]["color_name"], []); } } } // after we get the ranked color metadatas, then we resort to detail page displaying order to display size in a organized way productInfos.sort((a, b) => (parseInt(a["variationData"]["order"]) - parseInt(b["variationData"]["order"]))) for (let i = 0; i < productInfos.length; i += 1) { if (commonModule.isNotEmpty(productInfos[i]["variationData"]["color_metadata"])) { hasMetadataColorMap.get(productInfos[i]["variationData"]["color_name"]).push(productInfos[i]); } else { nonMetadataColorMap.get(productInfos[i]["variationData"]["color_name"]).push(productInfos[i]); } } if (commonModule.isEmpty(productInfo["variationData"]["color_metadata"]) && hasMetadataColorMap.size > 0) { // if the most popular variational children doesn't have color metadata, rerendering ASIN faceout with the ranked first one has the color metadata productInfo = hasMetadataColorMap.values().next().value.at(0); this.renderVariationalAsinFaceOutTemplate(productInfo, productGrid, this.getDpLinkForProductInfo(productInfo, productCategory), ldMerchantToAsins, productCategory); } // we need at least two available color metadata to render color selector if (hasMetadataColorMap.size > 1) { // displaying color selector section productGrid.find("[name=productVariationData]").removeClass("hidden"); productGrid.find("[name=productVariationDataColorSelector]").removeClass("hidden"); productGrid.find("div[name=limitedTimeDeal]").addClass("paddingTop16"); // rendering color selector and return selected color's productInfoList to render size dropdown productInfos = this.renderVariationalColorDots(productGrid, hasMetadataColorMap, colorNameToMetadataMap, nonMetadataColorMap, ldMerchantToAsins, productCategory); } else if (hasMetadataColorMap.size === 1) { // since we only have one available colorMetadata, we will also render this color in a single asin faceout // checking if the colorMetadata available productInfos contains the original product used to render this productGrid template, if so render in place productInfos = hasMetadataColorMap.values().next().value; if (productInfos.find(product => product["sortId"].at(0) === productInfo["sortId"].at(0) && product["asin"] === productInfo["asin"])) { if (productInfos.length > 1) { this.renderVariationalAsinFaceOutTemplate(productInfos[0], productGrid, this.getDpLinkForProductInfo(productInfos[0], productCategory), ldMerchantToAsins, productCategory); this.renderSizeDropDown(productInfos[0], productGrid, productInfos, ldMerchantToAsins, productCategory); } else { this.renderVariationalAsinFaceOutTemplate(productInfos[0], productGrid, this.getDpLinkForProductInfo(productInfos[0], productCategory), ldMerchantToAsins, productCategory); this.renderVariationalToPlainAsin(productInfos[0], productGrid, productCategory); } } productInfos = []; } else { productInfos = []; // if it is redirectOffer and redirectOffer not having color metadata and the related offer do not as well, then keep the redirectoffer in plain asin faceout // the redirect asin faceout will only be handled here as its sortId is empty. However, the same product may show up again in another asin faceout if there are similar Asins valid for a selector if (queryParameter["redirectAsin"] === productInfo["asin"] && queryParameter["redirectMerchantId"] === productInfo["merchantId"]) { this.renderVariationalToPlainAsin(productInfo, productGrid, productCategory); } } // for colors not having color metadata at all for (let nonColorMetadataProductInfoList of nonMetadataColorMap.values()) { // checking if the nonColorMetadataProductInfoList contains the original product used to render this productGrid template, if so render in place // redirectOffer will not handled in this if as redirectOffer's sortId is empty if (nonColorMetadataProductInfoList.find(product => product["sortId"].at(0) === productInfo["sortId"].at(0) && product["asin"] === productInfo["asin"])) { if (nonColorMetadataProductInfoList.length > 1) { this.renderVariationalAsinFaceOutTemplate(nonColorMetadataProductInfoList[0], productGrid, this.getDpLinkForProductInfo(nonColorMetadataProductInfoList[0], productCategory), ldMerchantToAsins, productCategory); this.renderSizeDropDown(nonColorMetadataProductInfoList[0], productGrid, nonColorMetadataProductInfoList, ldMerchantToAsins, productCategory); } else { this.renderVariationalAsinFaceOutTemplate(nonColorMetadataProductInfoList[0], productGrid, this.getDpLinkForProductInfo(nonColorMetadataProductInfoList[0], productCategory), ldMerchantToAsins, productCategory); this.renderVariationalToPlainAsin(nonColorMetadataProductInfoList[0], productGrid, productCategory); } } else { // if not contains the original productInfo, render in newly created productGrid let anotherColorProductGrid = $("#productGridTemplate [name=productGrid]").clone(); if (nonColorMetadataProductInfoList.length > 1) { this.renderVariationalAsinFaceOutTemplate(nonColorMetadataProductInfoList[0], anotherColorProductGrid, this.getDpLinkForProductInfo(nonColorMetadataProductInfoList[0], productCategory), ldMerchantToAsins, productCategory); this.renderSizeDropDown(nonColorMetadataProductInfoList[0], anotherColorProductGrid, nonColorMetadataProductInfoList, ldMerchantToAsins); } else { // if redirectOffer's corresponding original sort order compliant offer is treated as plain Asin, then don't show it again // here checking if it is not the same offer as redirectOffer, rendering if (!(queryParameter["redirectAsin"] === productInfo["asin"] && queryParameter["redirectMerchantId"] === productInfo["merchantId"]) || (nonColorMetadataProductInfoList[0]["asin"] !== productInfo["asin"] || queryParameter["redirectMerchantId"] !== productInfo["merchantId"])) { this.renderVariationalAsinFaceOutTemplate(nonColorMetadataProductInfoList[0], anotherColorProductGrid, this.getDpLinkForProductInfo(nonColorMetadataProductInfoList[0], productCategory), ldMerchantToAsins, productCategory); this.renderVariationalToPlainAsin(nonColorMetadataProductInfoList[0], anotherColorProductGrid); } else { // If it is the same offer as redirectOffer, skipping continue; } } $("#productInfoList").append(anotherColorProductGrid); } } return productInfos; }, // private function - which only render color dots when more than two color metadata available renderVariationalColorDots: function (productGrid, hasMetadataColorMap, colorNameToMetadataMap, nonMetadataColorMap, ldMerchantToAsins, productCategory) { let that = this; let dotMaximumNumber = 0; let colorIndexCounter = 0; let popoverIcon = productGrid.find("[name=seeMoreColors] a i") let hasMetadataColorList = Array.from(hasMetadataColorMap.keys()); // variables depends on device type let colorMetadataInPopoverContent; let colorDotClass; let popoverType; // Initializing variables based on device type if (true) { dotMaximumNumber = 6; popoverType = "a-popover"; colorMetadataInPopoverContent = '<ul class="listNonDecrot">'; colorDotClass = "colorDotInPopover"; } else { dotMaximumNumber = 3; popoverType = "a-modal"; colorMetadataInPopoverContent = '<ul class="listNonDecrotNonDesktop">'; colorDotClass = "colorDotInPopoverNonDesktop"; } for (let i = 0; i < Math.min(dotMaximumNumber, hasMetadataColorList.length); i++) { let timer; let colorName = hasMetadataColorList.at(i); let colorMetadata = colorNameToMetadataMap.get(colorName); let colorDot = productGrid.find("#ColorSelectorColorDotDivTemplate div").clone(); colorDot.find("[name=ColorSelectorColorDotInnerFill]").css("background-color", colorMetadata) colorDot.attr("data-color-index", colorIndexCounter++); if (true) { P.when("A", "a-tooltip", "ready").execute(function (A, popover) { let instance = popover.get(colorDot); instance.attrs("dataStrategy", "inline"); instance.attrs("activate", "onclick"); instance.update({"content": hasMetadataColorList.at(colorDot.attr("data-color-index"))}); colorDot.mouseenter(function (event) { event.preventDefault(); timer = setTimeout(function () { instance.show(); }, 500); }).mouseleave(function (event) { event.preventDefault(); clearTimeout(timer); instance.hide(); }); // make the popover trigger invisible so that it will actually occupy a place and thus connected with colordot // make the trigger flexDisplay so that the trigger will be located at the same place at the color dot colorDot.find("i").addClass("invisible"); colorDot.find("i").addClass("flexDisplay"); }); } colorDot.hover(function (event) { event.preventDefault(); colorDot.addClass("colorDotMouseover") }, function (event) { event.preventDefault(); colorDot.removeClass("colorDotMouseover") }); colorDot.click(function (event) { event.preventDefault(); productGrid.find(".colorDotSelected").removeClass("colorDotSelected"); colorDot.addClass("colorDotSelected"); // displaying selected color name in color dots popover productGrid.find("[name=seeMoreColors] a").text(hasMetadataColorList.at(colorDot.attr("data-color-index"))); // showing popover icon productGrid.find("[name=seeMoreColors] i").removeClass("hidden"); productGrid.find("[name=seeMoreColors] a").append(popoverIcon); productGrid.find("[name=seeMoreColors]").removeClass("hidden"); // rendering selected color's size dropdown if applicable let productInfos = hasMetadataColorMap.get(hasMetadataColorList.at(colorDot.attr("data-color-index"))); that.renderVariationalAsinFaceOutTemplate(productInfos[0], productGrid, that.getDpLinkForProductInfo(productInfos[0], productCategory), ldMerchantToAsins, productCategory); that.renderSizeDropDown(productInfos[0], productGrid, productInfos, ldMerchantToAsins, productCategory); }) productGrid.find("#productVariationDataColorSelectorDotList").append(colorDot); // highlight leftmost color dot if (i == 0) { colorDot.addClass("colorDotSelected"); } } // control the max width to make it only shows full name when there is enough space left if (true) { productGrid.find("[name=seeMoreColors]").css("max-width", productGrid.find("[name=productInnerGrid]").width() - productGrid.find("#productVariationDataColorSelectorDotList").width() - 5); productGrid.find("[name=seeMoreColors] a").css("max-width", productGrid.find("[name=productInnerGrid]").width() - productGrid.find("#productVariationDataColorSelectorDotList").width() - 23); productGrid.find("[name=seeMoreColors]").css("min-width", 20); } else { productGrid.find("[name=seeMoreColors]").css("max-width", productGrid.find("[name=productInnerGrid]").width() - productGrid.find("#productVariationDataColorSelectorDotList").width() - 0.5 * parseFloat(getComputedStyle(document.documentElement).fontSize)); productGrid.find("[name=seeMoreColors] a").css("max-width", productGrid.find("[name=productInnerGrid]").width() - productGrid.find("#productVariationDataColorSelectorDotList").width() - 2.3 * parseFloat(getComputedStyle(document.documentElement).fontSize)); productGrid.find("[name=seeMoreColors]").css("min-width", 2 * parseFloat(getComputedStyle(document.documentElement).fontSize)); } // rendering popover for color dots when available color metadata exceeds maximum allowed number of color dots. { colorIndexCounter = 0; for (let i = 0; i < hasMetadataColorList.length; i++) { let colorName = hasMetadataColorList.at(i); let colorMetadata = colorNameToMetadataMap.get(colorName); if (i == 0) { colorMetadataInPopoverContent += '<li class="popoverDropdownLi popoverDropdownActiveLi" data-color-index=' + colorIndexCounter++ + '><div class=""><span class="' + colorDotClass + '"style="background-color:' + colorMetadata + ';border-radius:8.5px;width:17px;height:17px;float:left;"></span><span>' + colorName + '</span></div></li>' } else { colorMetadataInPopoverContent += '<li class="popoverDropdownLi" data-color-index=' + colorIndexCounter++ + '><div class=""><span class="' + colorDotClass + '"style="background-color:' + colorMetadata + ';border-radius:8.5px;width:17px;height:17px;float:left;"></span><span>' + colorName + '</span></div></li>' } } colorMetadataInPopoverContent += '</ul>' // displaying color dots popover if ((hasMetadataColorList.length - dotMaximumNumber) > 0) { productGrid.find("[name=seeMoreColors]").removeClass("hidden"); productGrid.find("[name=seeMoreColors] a").text("+" + (hasMetadataColorList.length - dotMaximumNumber) + " plus"); productGrid.find("[name=seeMoreColors] a").css("outline", "none"); productGrid.find("[name=seeMoreColors] a").addClass("seeMoreColorsControl"); } P.when("A", popoverType, "ready").execute(function (A, popover) { let instance = popover.get(productGrid.find("[name=seeMoreColors]")); instance.attrs("dataStrategy", "inline"); instance.attrs("activate", "onclick"); instance.update({"content" : colorMetadataInPopoverContent}); instance.attrs("closeButton", false); instance.attrs("padding", "none"); if (popoverType === "a-popover") { instance.attrs("position", "triggerVertical"); instance.attrs("max-height", "300px"); } else { instance.attrs("header", "Couleur :"); instance.attrs("max-width", "30rem"); instance.attrs("max-height", "60rem"); instance.attrs("min-width", "20rem"); } }); productGrid.find("[name=seeMoreColors]").click(function (event) { event.preventDefault(); P.when("A", popoverType, "ready").execute(function (A, popover) { // rendering highlight effect for selected color dot in color dots popover let instance = popover.get(productGrid.find("[name=seeMoreColors]")); let colorIndex = productGrid.find(".colorDotSelected").attr("data-color-index"); instance.getContent().find("li").removeClass("popoverDropdownActiveLi"); instance.getContent().find("[data-color-index=" + colorIndex + "]").addClass("popoverDropdownActiveLi"); // bind window scroll one time monitoring event $(window).one("scroll", function (event) { event.preventDefault(); if (instance.isActive()) { instance.hide(); } }) // bind click event for color dot items in color dots popover instance.getContent().find("li").click(function () { event.preventDefault(); instance.getContent().find("li").removeClass("popoverDropdownActiveLi"); $(this).addClass("popoverDropdownActiveLi"); productGrid.find("[name=seeMoreColors] a").text($(this).text()); productGrid.find("[name=seeMoreColors] a").append(popoverIcon); instance.hide(); // replace last color dot in productGrid with selected color dot if selected color is only resides in color dots popover if ($(this).attr("data-color-index") >= dotMaximumNumber - 1 && productGrid.find(".productVariationDataColorSelectorDotDiv").last().attr("data-color-index") != $(this).attr("data-color-index")) { productGrid.find(".productVariationDataColorSelectorDotDiv").last().attr("data-color-index", $(this).attr("data-color-index")); productGrid.find(".productVariationDataColorSelectorDotDiv").last().find(".ColorSelectorColorDotInnerFill").css("background-color", colorNameToMetadataMap.get(hasMetadataColorList.at($(this).attr("data-color-index")))); // update tooltip of the last color dot for desktop if (true) { P.when("A", "a-tooltip", "ready").execute(function (A, popover) { let instance = popover.get(productGrid.find(".productVariationDataColorSelectorDotDiv").last()); instance.update({"content": hasMetadataColorList.at(productGrid.find(".productVariationDataColorSelectorDotDiv").last().attr("data-color-index"))}); }); } } productGrid.find(".productVariationDataColorSelectorDotDiv").removeClass("colorDotSelected"); productGrid.find("#productVariationDataColorSelectorDotList").find("[data-color-index=" + $(this).attr("data-color-index") + "]").addClass("colorDotSelected"); // render size dropdown for selected color let productInfos = hasMetadataColorMap.get(hasMetadataColorList.at($(this).attr("data-color-index"))); that.renderVariationalAsinFaceOutTemplate(productInfos[0], productGrid, that.getDpLinkForProductInfo(productInfos[0], productCategory), ldMerchantToAsins, productCategory); that.renderSizeDropDown(productInfos[0], productGrid, productInfos, ldMerchantToAsins, productCategory); }) // render hover effect for items in color dots popover instance.getContent().find("li").hover(function (event) { event.preventDefault(); $(this).addClass("popoverDropdownLiMouseover"); }, function (event) { event.preventDefault(); $(this).removeClass("popoverDropdownLiMouseover"); } ) }); }) } return hasMetadataColorMap.get(hasMetadataColorList.at(0)); }, // private function renderVariationalDropDown: function (productInfo, productGrid, productInfos, ldMerchantToAsins, productCategory) { let that = this; let productInfosInDropdown; let ungroupedProductInfoList = []; if (commonModule.isEmpty(productInfo["variationData"]["order"])) { this.renderVariationalToPlainAsin(productInfo, productGrid, productCategory); return; } let standardGroupIndex = this.processVariationalData(productInfo["variationData"]); let passedProductInfoList = []; for (let i = 0; i < productInfos.length; i += 1) { let groupIndex = this.processVariationalData(productInfos[i]["variationData"]); if (standardGroupIndex === groupIndex) { passedProductInfoList.push(productInfos[i]); } else { ungroupedProductInfoList.push(productInfos[i]); } } if (passedProductInfoList.length > 1) { if (commonModule.isNotEmpty(productInfo["variationData"]["color_name"])) { // only when there are multiple colors have the metadata, will productInfosInDropdown not being empty. productInfosInDropdown = that.renderVariationColorDimension(productInfo, productGrid, productInfos, ldMerchantToAsins, productCategory); } else { passedProductInfoList.sort((a, b) => (parseInt(a["variationData"]["order"]) - parseInt(b["variationData"]["order"]))) productInfosInDropdown = passedProductInfoList; } if (commonModule.isNotEmpty(productInfosInDropdown) && productInfosInDropdown.length > 0) { // those, rendering size dropdown for color dots occupied productGrid or rendering size dropdown for 'size' only variational family, which must have more than 1 children this.renderSizeDropDown(productInfosInDropdown[0], productGrid, productInfosInDropdown, ldMerchantToAsins, productCategory); } } else { this.renderVariationalToPlainAsin(productInfo, productGrid, productCategory); } // render leftover ungrouped asins for (let i = 0; i < ungroupedProductInfoList.length; ++i) { // 1. Create the product cell by cloning the grid template, clone the product grid template from productInfoList.jsp#productGridTemplate[name=productGrid] let productGrid = $("#productGridTemplate [name=productGrid]").clone(); this.renderAsinFaceOut(ungroupedProductInfoList[i], productGrid, this.getDpLink(ungroupedProductInfoList, i, productCategory), ldMerchantToAsins, productCategory); // 3. Append the product cell to the product list $("#productInfoList").append(productGrid); } }, // private function renderSizeDropDown: function (productInfo, productGrid, productInfos, ldMerchantToAsins, productCategory) { let that = this; // showing outdate indexed product in another productGrids let ungroupedProductInfoList = []; let standardGroupIndex = this.processVariationalData(productInfo["variationData"]); let passedProductInfoList = []; for (let i = 0; i < productInfos.length; i += 1) { let groupIndex = this.processVariationalData(productInfos[i]["variationData"]); if (standardGroupIndex === groupIndex) { passedProductInfoList.push(productInfos[i]); } else { ungroupedProductInfoList.push(productInfos[i]); } } // if no size dimension no handling at all if (productInfo["variationData"]["size_name"]) { // if there are more than 1 size, render size dropdown if (passedProductInfoList.length > 1) { productGrid.find("[name=chooseSizePromptBox]").removeClass("invisible"); // re-display hidden dropdown if (true) { productGrid.find(".desktopDropdown").removeClass("hidden"); } else if (false) { productGrid.find(".mobileDropdown").removeClass("hidden"); } else { productGrid.find(".tabletDropdown").removeClass("hidden"); } // hide size label since we are showing dropdown now productGrid.find(".marginForSizeLabel").addClass("hidden"); // rendering dropdown const dropDownIdPrefix = 'VariationalDropDown'; // use the new number as dropdownId to unbind previously bound events P.when("a-dropdown", "A", "ready").execute(function (dropdown, A) { productGrid.find("[name=productVariationData]").removeClass("hidden"); productGrid.find("[name=productVariationDataSizeSelector]").removeClass("hidden"); // variable spacing productGrid.find("[name=variableSpacing]").removeClass("displayNone"); // adding margin to LTD productGrid.find("div[name=limitedTimeDeal]").addClass("limitedTimeDealSpacing"); productGrid.find("[name=productVariationDataDropDown]").attr("id", dropDownIdPrefix + passedProductInfoList[0]["sortId"].at(0)); let sizeDropdown = dropdown.getSelect(productGrid.find("[name=productVariationDataDropDown]")); let dropdownSelectEvent = "a:dropdown:" + productGrid.find("[name=productVariationDataDropDown]").attr("id") + ":select"; // removes size options for previous selected color sizeDropdown.removeOptions(Array.from(Array(sizeDropdown.getOptions().size()).keys())); for (let i = 0; i < passedProductInfoList.length; i += 1) { if (passedProductInfoList[i]["lightningDeal"]) { that.startLdEndTimer(passedProductInfoList[i]["secondsLeftToClaim"], passedProductInfoList[i]["asin"]); } let variationDataMap = new Map(Object.entries(passedProductInfoList[i]["variationData"])); sizeDropdown.addOption({ text: variationDataMap.get("size_name"), value: i.toString() }, i); } A.on(dropdownSelectEvent, function (data) { that.renderVariationalDataForFaceOut(productGrid, passedProductInfoList[data.value], that.getDpLink(passedProductInfoList, data.value, productCategory), productCategory) productGrid.find("[name=chooseSizePromptBox]").addClass("invisible"); }); }) } else { that.renderTheOnlySizeAvailable(productInfo, productGrid, productCategory); } } else { // when only color dimension available productGrid.find("[name=chooseSizePromptBox]").addClass("invisible"); that.rerenderATCForNonSelectableProductGrid(passedProductInfoList[0], productGrid, productCategory); } // render leftover ungrouped asins for (let i = 0; i < ungroupedProductInfoList.length; ++i) { // 1. Create the product cell by cloning the grid template, clone the product grid template from productInfoList.jsp#productGridTemplate[name=productGrid] let productGrid = $("#productGridTemplate [name=productGrid]").clone(); this.renderAsinFaceOut(ungroupedProductInfoList[i], productGrid, this.getDpLink(ungroupedProductInfoList, i, productCategory), ldMerchantToAsins, productCategory); // 3. Append the product cell to the product list $("#productInfoList").append(productGrid); } }, // private function renderTheOnlySizeAvailable: function (productInfo, productGrid, productCategory) { // productVariationData productGrid.find("[name=chooseSizePromptBox]").addClass("invisible"); // hide size dropdown && showing size label if (true) { productGrid.find(".desktopDropdown").addClass("hidden"); } else if (false) { productGrid.find(".mobileDropdown").addClass("hidden"); } else { productGrid.find(".tabletDropdown").addClass("hidden"); } productGrid.find("[name=productVariationDataSizeSelector]").removeClass("hidden"); productGrid.find(".marginForSizeLabel").removeClass("hidden"); productGrid.find(".marginForSizeLabel").text(productInfo["variationData"]["size_name"]); this.rerenderATCForNonSelectableProductGrid(productInfo, productGrid, productCategory); }, // private function renderVariationalToPlainAsin: function (productInfo, productGrid, productCategory) { // productVariationData productGrid.find("[name=chooseSizePromptBox]").addClass("invisible"); productGrid.find("[name=productVariationData]").addClass("hidden"); this.getVariationalDataForAsin(productInfo["asin"], productGrid); this.rerenderATCForNonSelectableProductGrid(productInfo, productGrid, productCategory); }, // private function - rerender addToCart Button related sections rerenderATCForNonSelectableProductGrid: function (productInfo, productGrid, productCategory) { // price let price; if (productInfo["priceInfo"]["priceToPay"]) { price = productInfo["priceInfo"]["priceToPay"]["displayString"]; } // Add to cart / LD (View Item/View options) let viewItemBtnBox = productGrid.find("[name=viewItemBtnBox]"); let addToCartBtnBox = productGrid.find("div[name=addToCartBtnBox]"); if (productInfo["blockATCAsin"]) { // Render the select button for blockATCAsin offers let selectBtnBox = productGrid.find("[name=selectBtnBox]"); selectBtnBox.removeClass("hidden"); selectBtnBox.find("[name=selectBtn]").attr("href", this.getDpLinkForProductInfo(productInfo, productCategory)); addToCartBtnBox.addClass("hidden"); } else if (productInfo["lightningDeal"] || false) { // View Item viewItemBtnBox.removeClass("hidden"); viewItemBtnBox.find("[name=viewItemBtn]").attr("href", this.getDpLinkForProductInfo(productInfo, productCategory)); addToCartBtnBox.find("[name=addVariationalASINToCartBtn]").addClass("hidden"); addToCartBtnBox.addClass("hidden"); } else { viewItemBtnBox.addClass("hidden"); if (productInfo["parentAsin"] || commonModule.isEmpty(productInfo["offerListingId"])) { // See options addToCartBtnBox.find("[name=seeOptionsBtn]").removeClass("hidden"); addToCartBtnBox.find("[name=seeOptionsBtn]").attr("href", productInfo["detailPageLink"]); } else { // Add to cart let data_json = { "asin": productInfo["asin"], "offerListingId": productInfo["offerListingId"], "price": price, "quantity": productInfo["quantity"], "merchantId": productInfo["merchantId"], "canonicalAsin": productInfo["canonicalAsin"], "minimumOrderQuantity": productInfo["minimumOrderQuantity"] }; // set reftagSuffix only for carousel view if (false && !isFilterOrSort) { data_json["reftagSuffix"] = productCategoryToReftagSuffix.get(productCategory); } addToCartBtnBox.find("[name=addVariationalASINToCartBtn]").addClass("hidden"); addToCartBtnBox.find("[name=addToCartBtn]").removeClass("hidden"); addToCartBtnBox.find("[data-name=addToCartBtn]").attr("data-json", JSON.stringify(data_json)); addToCartBtnBox.find("[data-name=addToCartBtn]").removeClass("inputCursorDisabled"); } } // redeem coupon, logic to execute only once is in the redeemCoupon method this.redeemCoupon(productInfo["asin"], productInfo["offerListingId"]); }, // private function renderAsVariationalAsin: function (productInfo, productGrid, dpLink, ldMerchantToAsins, productCategory) { let startTime = new Date().getTime(); let that = this; that.renderVariationalAsinFaceOutTemplate(productInfo, productGrid, dpLink, ldMerchantToAsins, productCategory); let currentSortId = queryParameter["sortId"]; queryParameter["defaultGroupingIdForColorAndSize"] = productInfo["defaultGroupingIdForColorAndSize"]; that.cachedRecordedGroupingIds.push(productInfo["defaultGroupingIdForColorAndSize"]); queryParameter["recordedGroupingIds"] = []; $.ajax({ type: "GET", url: "/promotion/psp/productInfoListForVariationalAsin", data: $.param(queryParameter, true), dataType: "json", contentType: "application/x-www-form-urlencoded; charset=UTF-8", success: function (productInfos) { let variationalAsinDataPopulatedBack = false; if (productInfos.length <= 1) { that.renderVariationalToPlainAsin(productInfo, productGrid, productCategory); } else { // Populating VariationalData from SubWorkflow back to MajorWorkflow for (let productInfoEntry of productInfos) { if (productInfo["asin"] === productInfoEntry["asin"]) { productInfo["variationData"] = productInfoEntry["variationData"]; variationalAsinDataPopulatedBack = true; break; } } if (variationalAsinDataPopulatedBack) { that.renderVariationalDropDown(productInfo, productGrid, productInfos, ldMerchantToAsins, productCategory); } else { that.renderVariationalToPlainAsin(productInfo, productGrid, productCategory); let newProductGrid = $("#productGridTemplate [name=productGrid]").clone(); that.renderVariationalAsinFaceOutTemplate(productInfos[0], newProductGrid, that.getDpLink(productInfos, 0, productCategory), ldMerchantToAsins, productCategory); that.renderVariationalDropDown(productInfos[0], newProductGrid, productInfos, ldMerchantToAsins, productCategory); // 3. Append the product cell to the product list $("#productInfoList").append(productGrid); $("#productInfoList").append(newProductGrid); } } }, error: function () { that.renderVariationalToPlainAsin(productInfo, productGrid, productCategory); } }) queryParameter["sortId"] = currentSortId; queryParameter["recordedGroupingIds"] = that.cachedRecordedGroupingIds; queryParameter["defaultGroupingId"] = ""; queryParameter["defaultGroupingIdForColorAndSize"] = ""; totalRenderTime += (new Date().getTime() - startTime); }, // private function renderPriceForProductGrid: function (productInfo, productGrid) { let price; if (productInfo["priceInfo"]["priceToPay"] || productInfo["priceInfo"]["pricePerUnit"] || productInfo["priceInfo"]["basicPrice"]) { let productPriceBox = productGrid.find("div[name=productPriceBox]"); price = productInfo["priceInfo"]["priceToPay"]["displayString"]; productPriceBox.find("[name=productPriceToPay]").attr("aria-label", productInfo["priceInfo"]["priceToPay"]["displayString"]); productPriceBox.find(".a-price-symbol").text(productInfo["priceInfo"]["priceToPay"]["symbol"]); productPriceBox.find(".a-price-whole").text(productInfo["priceInfo"]["priceToPay"]["whole"]); productPriceBox.find(".a-price-decimal").text(productInfo["priceInfo"]["priceToPay"]["separator"]); productPriceBox.find(".a-price-fraction").text(productInfo["priceInfo"]["priceToPay"]["fraction"]); if (productInfo["priceInfo"]["symbolLast"]) { productPriceBox.find("[name=symbolLast]").removeClass("hidden"); } else { productPriceBox.find("[name=symbolFirst]").removeClass("hidden"); } if (productInfo["priceInfo"]["pricePerUnit"]) { productPriceBox.find("[name=pricePerUnit]").text("("+productInfo["priceInfo"]["pricePerUnit"]+")"); productPriceBox.find("[name=pricePerUnit]").attr("aria-label", productInfo["priceInfo"]["pricePerUnit"]); } if (productInfo["priceInfo"]["bottlingDepositFeeDE"]) { productPriceBox.find("[name=bottlingDepositFee]").text(productInfo["priceInfo"]["bottlingDepositFeeDE"]); productPriceBox.find("[name=bottlingDepositFee]").attr("aria-label", productInfo["priceInfo"]["bottlingDepositFeeDE"]); } if (productInfo["priceInfo"]["basicPrice"]) { if(false) { productPriceBox.find("[name=basicPrice]").text(productInfo["priceInfo"]["basicPrice"]["displayString"]); productPriceBox.find("[name=basicPrice]").attr("aria-label", productInfo["priceInfo"]["basicPrice"]["displayString"]); } else if (false) { //Buy1 - Show Omnibus if applicable if (productInfo["priceInfo"]["basisPriceType"] == "OMNIBUS_PRICE" || productInfo["priceInfo"]["basisPriceType"] == "OMNIBUS_PRICE_STRIKETHROUGH") { //Handle Omnibus Price for EU //Message var omnibusPriceMessage = productInfo["priceInfo"]["basisPriceLabel"] + ": " + productInfo["priceInfo"]["basicPrice"]["displayString"]; productGrid.find("[name=omnibusContainer").removeClass("hidden") productGrid.find("[name=omnibusPrice]").text(omnibusPriceMessage); productGrid.find("[name=omnibusPrice]").attr("aria-label", omnibusPriceMessage); //Popover productGrid.find("[id=omnibusPopoverAction]").attr("data-a-popover", "{\"inlineContent\":\"" + productInfo["priceInfo"]["basisPricePopover"] + "\"}"); productGrid.find("[id=omnibusPopover]").attr("class", "a-popover-trigger a-declarative a-size-small"); //remove hidden //variable spacing productGrid.find("[name=variableSpacing]").removeClass("displayNone"); //adding margin to LTD productGrid.find("div[name=limitedTimeDeal]").addClass("limitedTimeDealSpacing"); //adding margin to dropdown productGrid.find("[name=productVariationData]").addClass("selectorMargin"); //adding margin to attributes productGrid.find("div[name=productVariationDataForPlainAsin").addClass("attributesMargin"); } else { //Handle Strikethrough Price for non-EU productPriceBox.find("[name=basicPrice]").text(productInfo["priceInfo"]["basicPrice"]["displayString"]); productPriceBox.find("[name=basicPrice]").attr("aria-label", productInfo["priceInfo"]["basicPrice"]["displayString"]); } } else if (productInfo["priceInfo"]["basicPriceType"] != "OMNIBUS_PRICE") { //buy X - Don't show Omnibus productPriceBox.find("[name=basicPrice]").text(productInfo["priceInfo"]["basicPrice"]["displayString"]); productPriceBox.find("[name=basicPrice]").attr("aria-label", productInfo["priceInfo"]["basicPrice"]["displayString"]); } } productPriceBox.removeClass("invisible"); } return price }, // private function renderImageForProductGrid: function (productInfo, productGrid, dpLink) { let productImageBox = productGrid.find("div[name=productImageBox]"); productImageBox.find("img[name='productImage']").attr("src", productInfo["imgURL"]); productImageBox.find("img[name='productImage']").attr("alt", productInfo["imgAlt"]); productImageBox.find("img[name='productImage']").attr("title", productInfo["imgAlt"]); productImageBox.find("[data-name='productImageUrl']").attr("href", dpLink); }, getVariationalDataForAsin: function (asin, productGrid) { let getItemVariationalDataRequest = { "asin": asin }; $.ajax({ type: "GET", url: "/promotion/twister/variationalData", data: getItemVariationalDataRequest, contentType: 'application/x-www-form-urlencoded; charset=UTF-8;', success: function (variationalData) { let variationalEntries = new Map(Object.entries(variationalData)); if (variationalEntries.size > 0) { productGrid.find("div[name=productVariationDataForPlainAsin").removeClass("hidden"); let notFirst = false; for (let [key, value] of variationalEntries) { if (notFirst){ productGrid.find("[data-name=productVariationDataForPlainAsin]").append('<li class="sc-product-variation clamp1 variationItem" aria-label=""><span class="a-size-base a-text-bold" aria-label="">' + key + ":" + '</span><span class="a-size-base" aria-label=""> ' + value + '</span></li>'); } else { productGrid.find("[data-name=productVariationDataForPlainAsin]").append('<li class="sc-product-variation clamp1" aria-label=""><span class="a-size-base a-text-bold" aria-label="">' + key + ":" + '</span><span class="a-size-base" aria-label=""> ' + value + '</span></li>'); } notFirst = true } if(notFirst){ // variable spacing productGrid.find("[name=variableSpacing]").removeClass("displayNone"); // adding margin to LTD productGrid.find("div[name=limitedTimeDeal]").addClass("limitedTimeDealSpacing"); } } } }) }, // private function renderProductInfoList: function () { let startTime = new Date().getTime(); let promotionShoppingPageResponse = this.cachedPromotionShoppingPageResponse; let productInfoArray; let pageId = "AHSTCFJQ0HC6U"; const redundantProductInfoListContainer = document.getElementsByClassName("productInfoListContainer"); // since Amabot content is currently supported for "Carousel" view, // this method cleans any leftover content when user switches between carousel and grid view this.cleanupAmabotContent(); if (false && !isFilterOrSort) { // setting productInfoArray to empty list if the response is null or undefined productInfoArray = promotionShoppingPageResponse["viewModels"]["PRODUCT_INFO_LIST_SUS"] || []; productInfoArray = productInfoArray.slice(0, 7); // only hide productInfoListContainer if we have products to show in carousel if (productInfoArray.length !== 0) { redundantProductInfoListContainer[0].classList.add("hidden"); } this.mapProductCategoryToCarousel("productInfoCarousel", productInfoArray); this.hideUnusedCarousels("productInfoCarousel", productInfoArray); $("#productInfoListCarouselContainer").removeClass("hidden"); $("#productGridTemplate [name=productGrid]").removeClass("productGrid"); $("#productGridTemplate [name=productGrid]").addClass("productGridForSUS"); // For SUS workflow, if the productInfoMap is empty then we need to call the addProductToPage method to render the error page. if (productInfoArray.length === 0) { isServerResponseEmpty = true; // This method is called to render the error page. this.addProductToPage("", [], startTime, false) } for (let productInfoForSUS of productInfoArray) { let carosuelRenderStartTime = new Date().getTime(); // Store reftagSuffix for a productCategory productCategoryToReftagSuffix.set(productInfoForSUS.productCategory, productInfoForSUS.reftagSuffix); $("#productInfoList").addClass("hidden"); let carouselName = refinementToCarouselMap.get(productInfoForSUS["productCategory"]); // only rendering the visible products on the page first. let visibleProductInfos = productInfoForSUS["productInfos"].slice(0, SUS_VISIBLE_PRODUCTS_COUNT); this.addProductToPage(productInfoForSUS["productCategory"], visibleProductInfos, startTime, false); this.hideEmptyResponseCarousel(carouselName, productInfoForSUS["productInfos"]); carouselRenderTimes.push(new Date().getTime() - carosuelRenderStartTime); } this.initializeCarousels(productInfoArray); this.hideEmptyCarouselCards(productInfoArray); // This call is Carousel view specific. if (false) { pageId = SUSPageId; } this.renderAmabotContent(pageId); const carouselElement = document.getElementsByClassName("a-carousel"); for (let i = 0; i < carouselElement.length; i++) { carouselElement[i].classList.add("displayFlex"); } const carouselCardElement = document.getElementsByClassName("a-carousel-card"); for (let i = 0; i < carouselCardElement.length; i++) { carouselCardElement[i].classList.add("displayFlex"); } } else { // show productInfoListContainer redundantProductInfoListContainer[0].classList.remove("hidden"); $("#productInfoListCarouselContainer").addClass("hidden"); $("#productInfoList").removeClass("hidden"); $("#productGridTemplate [name=productGrid]").addClass("productGrid"); let productInfoList = promotionShoppingPageResponse["viewModels"]["PRODUCT_INFO_LIST"]; if (!productInfoList || productInfoList.length === 0) { isServerResponseEmpty = true; } this.addProductToPage("", productInfoList, startTime, false); } this.hideSpin(); pageRenderEndTime = new Date().getTime(); // rendering rest of the products which are not currently visible on the page. if (false && !isFilterOrSort) { for (let productInfo of productInfoArray) { if (productInfo["productInfos"] && productInfo["productInfos"].length >= SUS_VISIBLE_PRODUCTS_COUNT) { let restOfProductInfos = productInfo["productInfos"].slice(SUS_VISIBLE_PRODUCTS_COUNT); this.addProductToPage(productInfo["productCategory"], restOfProductInfos, startTime, true); } } } }, // This method removes any previously loaded amabot content cleanupAmabotContent: function () { let slots = amabotSlots.split(","); for (const slot of slots) { $("#" + slot).empty(); } }, // This method renders the content received from amabotContent controller to its specific slot. renderAmabotContent: function (pageId) { let amabotRequest = { "pageId": pageId, "slots": amabotSlots }; $.ajax({ type: "GET", url: "/promotion/psp/amabotContent", data: amabotRequest, dataType: "json", contentType: "application/x-www-form-urlencoded; charset=UTF-8", success: function (slotToContent) { if (slotToContent) { let slots = amabotSlots.split(","); for (const slot of slots) { let slotElement = $("#" + slot); let content = slotToContent[slot]; if (slotElement && content) { slotElement.append(content); } } } }, error: function (e) { console.log(e.status); console.log(e.responseText); } }); }, // capture stock up and save carousel and base page latency metrics recordSUSLatencyMetrics: function (startTime, endTime, metricsPrefix) { if ((false || false) && !isFilterOrSort && !isServerResponseEmpty) { let metricsName = metricsPrefix; metricsName += false ? "_carousel" : "_base"; metricsName += false ? "_mobile" : "_desktop"; metricsName += false ? "_cp" : ""; let data = { "startTime" : startTime, "endTime" : endTime, "metricsName": metricsName } commonModule.clientSideMetrics(data); } }, // capture render times for products that are visible on the page recordVisibleProductsRenderTime: function (startTime, endTime) { if ((false || false) && !isFilterOrSort && !isServerResponseEmpty) { let metricsName = false ? "SUS_Carousel_Page" : "SUS_Base_Page"; metricsName += false ? "_cp" : ""; let data = { "startTime" : startTime, "endTime" : endTime, "metricsName": metricsName } commonModule.clientSideMetrics(data); } }, initializeCarousels: function (productInfoArray) { P.when("a-carousel-framework", "ready").execute("get-the-carousel", function (framework) { for (let i = 0; i < productInfoArray.length; i++) { let carouselElement = document.getElementById(refinementToCarouselMap.get(productInfoArray[i]["productCategory"])); let carousel = framework.getCarousel(carouselElement); carousel.setAttr("set_size", productInfoArray[i]["productInfos"].length); $("#productInfoCarousel_" + i).attr("data-a-carousel-options", "{\"name\":\"productInfoCarousel_" + i + "\",\"set_size\":\"" + productInfoArray[i]["productInfos"].length + "\",\"auto_adjust_height\":\"true\"}"); } }); }, hideEmptyCarouselCards: function (productInfoArray) { for (let i = 0; i < productInfoArray.length; i++) { let productInfoLength = productInfoArray[i]["productInfos"].length; let cards = $("#productInfoCarousel_" + i).children().children().children(); cards = cards.children(".a-carousel-viewport").children().children(); cards.slice(productInfoLength).empty(); } }, hideEmptyResponseCarousel: function(carouselName, productInfo) { if (productInfo.length == 0) { $("#" + carouselName).addClass("hidden"); } }, addProductToPage: function (productCategory, productInfoList, startTime, deferredRendering) { // If pass-in promotionShoppingPageResponse doesn't exist, render from cached promotionShoppingPageResponse let promotionShoppingPageResponse = this.cachedPromotionShoppingPageResponse; if (!deferredRendering) { this.showSpin(); } // show error message or render product list // Only looking at 100% valid productInfo to avoid showing empty page instead of the correct error page let filteredProductInfoList = productInfoList.filter(productInfo => productInfo["failedGroupingId"] === false); if (commonModule.isEmpty(promotionShoppingPageResponse) || commonModule.isEmpty(filteredProductInfoList)) { $("#showMoreBtnContainer").addClass("hidden"); let endTime = new Date().getTime(); if (commonModule.isEmpty(queryParameter["sortId"]) || queryParameter["sortId"] == [] || queryParameter["sortId"].length == 0) { // No selection if (commonModule.isEmpty(queryParameter["productCategory"]) && commonModule.isEmpty(queryParameter["searchKeyword"]) && (commonModule.isEmpty(queryParameter["avgCustomerReview"]) || queryParameter["avgCustomerReview"] == "0") && ((commonModule.isEmpty(queryParameter["priceTierMin"]) || queryParameter["priceTierMin"] == "") && (commonModule.isEmpty(queryParameter["priceTierMax"]) || queryParameter["priceTierMax"] == "")) && (commonModule.isEmpty(queryParameter["bestSeller"]) || queryParameter["bestSeller"] == "0") && (commonModule.isEmpty(queryParameter["sortBy"]) || queryParameter["sortBy"] == "1")) { $("#errorMessageWithSelection").addClass("hidden"); $("#errorMessageWithSuppressedProducts").addClass("hidden"); $("#errorMessageWithoutSelection").removeClass("hidden"); let data = { "startTime": startTime, "endTime": endTime, "promotionId": "AHSTCFJQ0HC6U", "metricsName" : "productInfoListErrorPage" } commonModule.clientSideMetrics(data); } else { let data = { "startTime": startTime, "endTime": endTime, "promotionId": "AHSTCFJQ0HC6U", "metricsName" : "productInfoListErrorPageRefinements" } commonModule.clientSideMetrics(data); $("#errorMessageWithoutSelection").addClass("hidden"); $("#errorMessageWithSuppressedProducts").addClass("hidden"); $("#errorMessageWithSelection").removeClass("hidden"); } } } //Check first ASIN to see if it suppressed do to legal requirements in JP and show error page else if (this.isProductRestricted(productInfoList)) { $("#showMoreBtnContainer").addClass("hidden"); $("#errorMessageWithoutSelection").addClass("hidden"); $("#errorMessageWithSelection").addClass("hidden"); $("#errorMessageWithSuppressedProducts").removeClass("hidden"); $("#couponClippingContainer").addClass("hidden"); } // No errors found render product asin grid else { $("#errorMessageWithoutSelection").addClass("hidden"); $("#errorMessageWithSelection").addClass("hidden"); $("#errorMessageWithSuppressedProducts").addClass("hidden"); if (!false || isFilterOrSort) { $("#showMoreBtnContainer").removeClass("hidden"); } let ldMerchantToAsins = {}; for (let i = 0; i < productInfoList.length; ++i) { if (productInfoList[i] != undefined && !productInfoList[i]["failedGroupingId"]) { // 1. Create the product cell by cloning the grid template, clone the product grid template from productInfoList.jsp#productGridTemplate[name=productGrid] let cloneStartTime = new Date().getTime(); let productGrid = $("#productGridTemplate [name=productGrid]").clone(); totalCloneTime += (new Date().getTime() - cloneStartTime); let productInfoPosInCarousel = deferredRendering ? i + SUS_VISIBLE_PRODUCTS_COUNT : i; if (productInfoList[i]["defaultGroupingId"] != undefined) { if (true === productInfoList[i]["variationalAsin"]) { this.renderAsVariationalAsin(productInfoList[i], productGrid, this.getDpLink(productInfoList, i, productCategory), ldMerchantToAsins, productCategory) // 3. Append the product cell to the product list // We still need productInfoList since search and sort still required us to revert back to the productInfoList UI. $("#productInfoList").append(productGrid); if (false && !isFilterOrSort) { // Append the product cell to the product carousel this.setCarouselElement(refinementToCarouselMap.get(productCategory), productGrid, productInfoPosInCarousel); } } else { this.renderAsinFaceOut(productInfoList[i], productGrid, this.getDpLink(productInfoList, i, productCategory), ldMerchantToAsins, productCategory) // 3. Append the product cell to the product list // We still need productInfoList since search and sort still required us to revert back to the productInfoList UI. $("#productInfoList").append(productGrid); if (false && !isFilterOrSort) { // Append the product cell to the product carousel this.setCarouselElement(refinementToCarouselMap.get(productCategory), productGrid, productInfoPosInCarousel); } } } else { this.renderAsinFaceOut(productInfoList[i], productGrid, this.getDpLink(productInfoList, i, productCategory), ldMerchantToAsins, productCategory); // 3. Append the product cell to the product list // We still need productInfoList since search and sort still required us to revert back to the productInfoList UI. $("#productInfoList").append(productGrid); if (false && !isFilterOrSort) { // Append the product cell to the product carousel this.setCarouselElement(refinementToCarouselMap.get(productCategory), productGrid, productInfoPosInCarousel); } } } else if (productInfoList[i] != undefined && productInfoList[i]["failedGroupingId"]) { let that = this; let productInfoPosInCarousel = deferredRendering ? i + SUS_VISIBLE_PRODUCTS_COUNT : i; let currentSortId = queryParameter["sortId"]; queryParameter["defaultGroupingIdForColorAndSize"] = productInfoList[i]["defaultGroupingIdForColorAndSize"]; queryParameter["recordedGroupingIds"] = []; // reset sortId to original failed one queryParameter["sortId"] = productInfoList[i]["sortId"]; $.ajax({ type: "GET", url: "/promotion/psp/productInfoListForVariationalAsin", data: $.param(queryParameter, true), dataType: "json", contentType: "application/x-www-form-urlencoded; charset=UTF-8", success: function (productInfos) { let backupProductGrid = $("#productGridTemplate [name=productGrid]").clone(); if (productInfos.length === 1) { that.renderVariationalAsinFaceOutTemplate(productInfos[0], backupProductGrid, that.getDpLinkForProductInfo(productInfos[0], productCategory), ldMerchantToAsins, productCategory); that.renderVariationalToPlainAsin(productInfos[0], backupProductGrid, productCategory); $("#productInfoList").append(backupProductGrid); if (false && !isFilterOrSort) { // Append the product cell to the product carousel this.setCarouselElement(refinementToCarouselMap.get(productCategory), productGrid, productInfoPosInCarousel); } } else if (productInfos.length > 1) { that.renderVariationalAsinFaceOutTemplate(productInfos[0], backupProductGrid, that.getDpLinkForProductInfo(productInfos[0], productCategory), ldMerchantToAsins, productCategory); that.renderVariationalDropDown(productInfos[0], backupProductGrid, productInfos, ldMerchantToAsins, productCategory); $("#productInfoList").append(backupProductGrid); if (false && !isFilterOrSort) { // Append the product cell to the product carousel this.setCarouselElement(refinementToCarouselMap.get(productCategory), productGrid, productInfoPosInCarousel); } } }, error: function (e) { console.log(e.status); console.log(e.responseText); } }) queryParameter["sortId"] = currentSortId; queryParameter["recordedGroupingIds"] = that.cachedRecordedGroupingIds; queryParameter["defaultGroupingIdForColorAndSize"] = ""; } } // Lightning Deal claim percentage update this.continuousUpdateClaim(ldMerchantToAsins); // Hide the Show More button if product list is null or the ES data set has been exhausted if (commonModule.isEmpty(promotionShoppingPageResponse) || promotionShoppingPageResponse["reachBottom"] || queryParameter["sortId"] == null) { $("#showMoreBtnContainer").addClass("hidden"); } } }, setCarouselElement: function (name, productGrid, i) { P.when("a-carousel-framework", "ready").execute("get-the-carousel", function (framework) { // This carousel actually does have an id, so lets just use that since the lookup is faster carousel = framework.getCarousel(document.getElementById(name)); // Since carousel doesn't allow adding or removing any items after the initialization // we created 20 placeholers item, and use the getAttr("fetchedItems") API call to // fetch all the items into a list, then splice the list to replace an item with one // single ASIN faceout, then use setAttr to make the change onto the carousel. let fetchedItems = carousel.getAttr("fetchedItems"); fetchedItems.splice(i, 1, productGrid[0]); carousel.setAttr("fetchedItems", fetchedItems); if (true) { let addToCartBtnBox = productGrid.find("div[name=addToCartBtnBox]"); addToCartBtnBox.find("span[name= addToCartBtn]").find(".addToCartBtn").removeClass("addToCartBtn"); addToCartBtnBox.find("span[name= addVariationalASINToCartBtn]").find(".addToCartBtn").removeClass("addToCartBtn"); } }); }, mapProductCategoryToCarousel(carouselName, productInfoArray) { for (let i = 0; i < productInfoArray.length; i++) { refinementToCarouselMap.set(productInfoArray[i]["productCategory"], carouselName + "_" + i); //TODO: Need to implement internationalization for See all // See All link must be present only for product categories. product categories starts after Recommendations and Buy it again. if (!productInfoArray[i]["recommendationWidget"]) { let productCategory = productInfoArray[i]["productCategory"]; let totalResults = productInfoArray[i]["totalResults"]; let seeAllText = this.getSeeAllText(totalResults); let carouselHeading = $("#" + carouselName + "_" + i).children("#aCarouselHeading").children().eq(0); carouselHeading.children().html('<b>'+ productCategory + '</b> <a id="'+productCategory+'" data-name="carouselListItemText" data-value="'+productCategory+'" class="a-link-normal carouselLink" href="javascript:void(0)">'+seeAllText+'</a>'); carouselHeading.addClass("a-span16"); carouselHeading.removeClass("a-span8"); } else { $("#" + carouselName + "_" + i).children("#aCarouselHeading").children().eq(0).children() .html('<b>'+ productInfoArray[i]["productCategory"] + '</b>'); } } }, // returns a string like "See all (N+ items)", where N is either 1000, 500, 200, 100, 30 getSeeAllText: function (count) { let bucket = 0; let seeAll = "Afficher tout"; let items = "articles"; // bucketing logic is similar to https://code.amazon.com/packages/PromotionsDiscoveryHorizonteService/blobs/0b1c7522bb02a187e3ceec69746085a51ad26534/--/src/com/amazon/pdhs/psp/service/impl/GetRefinementServiceImpl.java#L230-L244 // 10% buffer due to late check. if (count > 1100) { bucket = 900; } else if (count > 550) { bucket = 400; } else if (count > 220) { bucket = 100; } else if (count > 110) { bucket = 50; } else if (count > 33) { bucket = 20; } else { return seeAll; } return seeAll + " (" + bucket + "+ " + items + ")"; }, // public function ensureHowToClaimExpanderExpanded: function () { // Sometimes the AUI expander may not fully always expand, manually ensure it to be fully expanded $('#HowToClaimExpander').height(""); }, loadRenderRefinement: function () { let that = this; queryParameter["recordedGroupingIds"] = []; let refinementParam = { "promotionId": queryParameter["promotionId"], "avgCustomerReview": queryParameter["avgCustomerReview"], "priceTierMin" : queryParameter["priceTierMin"], "priceTierMax" : queryParameter["priceTierMax"], "bestSeller": queryParameter["bestSeller"], "sortId": JSON.stringify(queryParameter["sortId"]), "applicabilityIndex": queryParameter["applicabilityIndex"], "productCategory": queryParameter["productCategory"], "redirectAsin": queryParameter["redirectAsin"], "redirectMerchantId": queryParameter["redirectMerchantId"], "isSUSOnly": queryParameter["isSUSOnly"], "isCarouselPilot": queryParameter["isCarouselPilot"], "searchKeyword": queryParameter["searchKeyword"], "subProductCategory": queryParameter["subProductCategory"], "selectedBrands": JSON.stringify(queryParameter["selectedBrands"]) }; $.ajax({ type: "GET", url: "/promotion/psp/refinement" + reftag, data: refinementParam, contentType: "application/x-www-form-urlencoded; charset=UTF-8", success: function (promotionShoppingPageResponse) { if (commonModule.isNotEmpty(promotionShoppingPageResponse)) { if (false) { appendDebugJSON("refinement", promotionShoppingPageResponse["debugJson"]); } that.renderRefinement(promotionShoppingPageResponse["viewModels"]["REFINEMENT"]); } }, error: function (e) { console.log(e.status); console.log(e.responseText); } }); }, // private function renderRefinement: function (refinement) { // Department // Set product category of redirect asin if present if (commonModule.isNotEmpty(refinement["preSelectedProductCategory"])) { queryParameter[this.queryParameterKeys.productCategory] = refinement["preSelectedProductCategory"]; } // Check PDA response to know if it is BXGY promotion, for non BXGY promotions, this field would be "" if (queryParameter[this.queryParameterKeys.applicabilityIndex] === "0" || queryParameter[this.queryParameterKeys.applicabilityIndex] === "1") { $("#view").removeClass("hidden"); if (!false) { let viewPhoneDesktop = $("#viewList"); $("#department").addClass("paddingTop16"); viewPhoneDesktop.find("[type=radio]").prop("checked", false); viewPhoneDesktop.find("[type=radio]").eq([queryParameter[this.queryParameterKeys.applicabilityIndex]]).prop("checked", true); } } if (queryParameter[this.queryParameterKeys.applicabilityIndex] === "0") { $("#keywordSearchInputText").attr("placeholder", "Rechercher des articles admissibles") } if (queryParameter[this.queryParameterKeys.applicabilityIndex] === "1") { $("#keywordSearchInputText").attr("placeholder", "Rechercher des articles d’avantage") } let subCategoryDisplayDesktopNumber = 5; let availableProductCategories = refinement["availableProductCategories"]; let availableSubCategories = new Map(); if (commonModule.isNotEmpty(refinement["subProductCategories"])) { availableSubCategories = new Map(Object.entries(refinement["subProductCategories"])); } if (commonModule.isEmpty(availableProductCategories) || availableProductCategories.length == 0) { queryParameter[this.queryParameterKeys.productCategory] = ""; queryParameter[this.queryParameterKeys.subProductCategory] = ""; } $("#departmentList").empty(); $("#departmentListPhone").empty(); $("#anyDepartment").addClass("hidden"); for (let i in availableProductCategories) { if ($("#departmentList")) { let departmentListItemClone = $("#departmentListItemTemplate li").clone(); let currentCategoryItem = departmentListItemClone.find("[data-name=departmentListItemText]"); currentCategoryItem.text(availableProductCategories[i]); currentCategoryItem.attr("data-value", availableProductCategories[i]); if (this.getValue(this.queryParameterKeys.productCategory) == availableProductCategories[i] && commonModule.isNotEmpty(availableProductCategories[i])) { commonModule.focus($("[data-name=departmentListItemText]"), $(currentCategoryItem)); $("#anyDepartment").removeClass("hidden"); } $("#departmentList").append(departmentListItemClone); if (commonModule.isNotEmpty(availableSubCategories) && availableSubCategories.size > 0 && commonModule.isNotEmpty(availableSubCategories.get(availableProductCategories[i])) && availableSubCategories.get(availableProductCategories[i]).length > 0) { $("#departmentList li").last().append("<div name='subCategoryList' class='paddingLeft16'></div>"); $("#departmentList li").last().find("[name=subCategoryList]").append($("#departmentSubCategoryListTemplate").children().clone()); for (let subCategoryIndex in availableSubCategories.get(availableProductCategories[i])) { { let subCategoryItemClone = $("#departmentSubCategoryItemTemplate li").clone(); let currentSubCategoryItem = subCategoryItemClone.find("[data-name=departmentListSubCategoryItemText]"); currentSubCategoryItem.text(availableSubCategories.get(availableProductCategories[i])[subCategoryIndex]); currentSubCategoryItem.attr("data-value", availableSubCategories.get(availableProductCategories[i])[subCategoryIndex]); if (this.getValue(this.queryParameterKeys.productCategory) === availableProductCategories[i] && this.getValue(this.queryParameterKeys.subProductCategory) === availableSubCategories.get(availableProductCategories[i])[subCategoryIndex]) { commonModule.focus($("[data-name=departmentListSubCategoryItemText]"), $(currentSubCategoryItem)); departmentListItemClone.find("[name=subCategoryList]").children().prepend(subCategoryItemClone); if (subCategoryIndex == subCategoryDisplayDesktopNumber) { departmentListItemClone.find("[name=subCategoryList] li").last().addClass("hidden"); } } else { if (subCategoryIndex >= subCategoryDisplayDesktopNumber) { subCategoryItemClone.addClass("hidden"); } departmentListItemClone.find("[name=subCategoryList]").children().append(subCategoryItemClone); } } } // rendering see more if (availableSubCategories.get(availableProductCategories[i]).length > subCategoryDisplayDesktopNumber) { // No need to render selectedSubCategory anymore, directly adding see more let subCategoryItemClone = $("#departmentSubCategoryItemTemplate li").clone(); let currentSubCategoryItem = subCategoryItemClone.find("[data-name=departmentListSubCategoryItemText]"); let expander = $("#itemExpanderTemplate").children().clone(); let expanderName = availableProductCategories[i].replace(/\s/g, "_"); expander.attr("data-a-expander-name", expanderName); currentSubCategoryItem.attr("data-name", "subCategoryExpander"); currentSubCategoryItem.append(expander); P.when('A', 'ready').execute(function(A) { A.on('a:expander:' + expanderName + ':toggle:expand', function(data) { departmentListItemClone.find("[name=subCategoryList] li").removeClass("hidden"); }); A.on('a:expander:' + expanderName + ':toggle:collapse', function(data) { let subCategories = departmentListItemClone.find("[name=subCategoryList] li"); if (subCategories.length > subCategoryDisplayDesktopNumber) { subCategories.slice(subCategoryDisplayDesktopNumber, subCategories.length - 1).addClass("hidden"); } }); }); departmentListItemClone.find("[name=subCategoryList]").children().append(subCategoryItemClone); } } } // Phone if ($("#departmentListPhone")) { let departmentBoxPhoneClone = $("#departmentBoxTemplate > div").clone(); departmentBoxPhoneClone.text(availableProductCategories[i]); departmentBoxPhoneClone.attr("aria-label", availableProductCategories[i]); departmentBoxPhoneClone.attr("data-key", "productCategory"); departmentBoxPhoneClone.attr("data-value", availableProductCategories[i]); departmentBoxPhoneClone.attr("data-target", "departmentBox"); if (this.getValue(this.queryParameterKeys.productCategory) == availableProductCategories[i] && commonModule.isNotEmpty(availableProductCategories[i])) { departmentBoxPhoneClone.addClass("menuButtonFocus"); // weblab check for subCategory if (commonModule.isNotEmpty(availableSubCategories.get(availableProductCategories[i])) && availableSubCategories.get(availableProductCategories[i]).length > 0) { $("#subCategoryListPhone").removeClass("hidden"); // render selected product category // clear previous content $("#categoryTraversalTree").removeClass("hidden").children().not("#AnyProductCategory").empty(); $("#categoryTraversalTree").find(".horizontalMargin5").remove(); // render new content $("#categoryTraversalTree").append($("#categoryTraversalTreeNodeTemplate > span").clone()); let productCategoryTreeNode = $("#middleProductCategory").text(this.getValue(this.queryParameterKeys.productCategory)); productCategoryTreeNode.attr("data-value1", this.getValue(this.queryParameterKeys.productCategory)); productCategoryTreeNode.attr("data-value2", ""); productCategoryTreeNode.addClass("a-color-base"); $("#categoryTraversalTree").append(productCategoryTreeNode); // if have selected subProductCategory if (commonModule.isNotEmpty(this.getValue(this.queryParameterKeys.subProductCategory))) { // doesn't bind leaf node with click to reset category related refinements $("#categoryTraversalTree").append($("#categoryTraversalTreeNodeTemplate > span").clone()); let subProductCategoryTreeNode = $("#leafProductCategory").text(this.getValue(this.queryParameterKeys.subProductCategory)); subProductCategoryTreeNode.attr("data-value1", this.getValue(this.queryParameterKeys.productCategory)); subProductCategoryTreeNode.attr("data-value2", this.getValue(this.queryParameterKeys.subProductCategory)); $("#middleProductCategory").removeClass("a-color-base"); subProductCategoryTreeNode.addClass("a-color-base"); $("#categoryTraversalTree").append(subProductCategoryTreeNode); // render selected subCategory only let subCategoryBoxPhoneClone = $("#subCategoryBoxTemplate > div").clone(); subCategoryBoxPhoneClone.text(this.getValue(this.queryParameterKeys.subProductCategory)); subCategoryBoxPhoneClone.attr("aria-label", this.getValue(this.queryParameterKeys.subProductCategory)); subCategoryBoxPhoneClone.attr("data-key", "subProductCategory"); subCategoryBoxPhoneClone.attr("data-value", this.getValue(this.queryParameterKeys.subProductCategory)); subCategoryBoxPhoneClone.attr("data-id", this.getValue(this.queryParameterKeys.subProductCategory).replace("'", "'")); subCategoryBoxPhoneClone.attr("data-target", "departmentBox"); subCategoryBoxPhoneClone.addClass("menuButtonFocus"); $("#subCategoryListPhone").find(".subCategoryBoxNode").remove(); $("#subCategoryListPhone").append(subCategoryBoxPhoneClone); } else { $("#subCategoryListPhone").find(".subCategoryBoxNode").remove(); // since no selected subCategory, displaying all the subCategories available for (let subCategoryIndex in availableSubCategories.get(availableProductCategories[i])) { let subCategoryBoxPhoneClone = $("#subCategoryBoxTemplate > div").clone(); subCategoryBoxPhoneClone.text(availableSubCategories.get(availableProductCategories[i])[subCategoryIndex]); subCategoryBoxPhoneClone.attr("aria-label", availableSubCategories.get(availableProductCategories[i])[subCategoryIndex]); subCategoryBoxPhoneClone.attr("data-id", availableSubCategories.get(availableProductCategories[i])[subCategoryIndex].replace("'", "'")); subCategoryBoxPhoneClone.attr("data-key", "subProductCategory"); subCategoryBoxPhoneClone.attr("data-value", availableSubCategories.get(availableProductCategories[i])[subCategoryIndex]); subCategoryBoxPhoneClone.attr("data-target", "departmentBox"); $("#subCategoryListPhone").append(subCategoryBoxPhoneClone); } } $("#departmentListPhone").addClass("hidden"); } } else { $("#subCategoryListPhone").addClass("hidden"); $("#departmentListPhone").removeClass("hidden"); } $("#departmentListPhone").append(departmentBoxPhoneClone); // if on first page load with category and filterPanel does not contain a category menuButton yet, then add button if (this.getValue(this.queryParameterKeys.productCategory) == availableProductCategories[i] && commonModule.isNotEmpty(availableProductCategories[i])) { let filterPanelMenuButton = $("#departmentBox > .menuButton[data-key='productCategory'][data-value='" + queryParameter[this.queryParameterKeys.productCategory] + "']"); if(filterPanelMenuButton.length == 0) { $("#departmentBox").append(departmentBoxPhoneClone.clone()); } } } } // Brands $("#brandList").empty(); $("#brands").addClass("hidden"); $("#brandListPhone").find("[name=menuButton]").remove(); $("#brandListPhone").find("[name=subBrandList]").addClass("hidden"); let brandsDisplayDesktopNumber = 7; let brandsMobileBrandsNoAlphabeticalSoltsNumber = 6; let brandsMobileBrandsNoSoltsNumber = 10; let availableBrands = refinement["availableBrands"]; let alphabeticalCounter = 0; if (commonModule.isNotEmpty(availableBrands) && availableBrands.length > 0) { $("#brands").removeClass("hidden"); if ($("#brandListPhone") && availableBrands.length > brandsMobileBrandsNoSoltsNumber) { availableBrands.sort((a, b) => a.localeCompare(b)); } if ($("#brandListPhone") && this.getValue(this.queryParameterKeys.selectedBrands).length == 0) { $("#brandsBox").empty(); } for (let i in availableBrands) { // Desktop & Tablet if ($("#brandList")) { let brandListItemClone = $("#brandListItemTemplate li").clone(); let currentBrandCheckText = brandListItemClone.find("[data-name=brandListItemCheckText]"); let currentBrandCheckBox = brandListItemClone.find("[data-name=brandListItemCheckBox]"); currentBrandCheckText.text(availableBrands[i]); currentBrandCheckText.attr("data-value", availableBrands[i]); currentBrandCheckBox.attr("data-value", availableBrands[i]); if (this.getValue(this.queryParameterKeys.selectedBrands).includes(availableBrands[i]) && commonModule.isNotEmpty(availableBrands[i])) { $(currentBrandCheckText).addClass("a-text-bold"); brandListItemClone.find("[name=brandsCheckbox]").prop("checked", true); $("#brandList").prepend(brandListItemClone); if (i == brandsDisplayDesktopNumber) { $("#brandList").last().addClass("hidden"); } } else { if (i >= brandsDisplayDesktopNumber) { brandListItemClone.addClass("hidden"); } $("#brandList").append(brandListItemClone); } } // Mobile if ($("#brandListPhone")) { let brandBoxPhoneClone = $("#brandBoxTemplate > div").clone(); brandBoxPhoneClone.text(availableBrands[i]); brandBoxPhoneClone.attr("aria-label", availableBrands[i]); brandBoxPhoneClone.attr("data-key", "selectedBrands"); brandBoxPhoneClone.attr("data-value", availableBrands[i]); brandBoxPhoneClone.attr("data-id", availableBrands[i].replace("'", "'")); brandBoxPhoneClone.attr("data-target", "brandsBox"); if (this.getValue(this.queryParameterKeys.selectedBrands).includes(availableBrands[i]) && commonModule.isNotEmpty(availableBrands[i])) { brandBoxPhoneClone.addClass("menuButtonFocus"); } if (availableBrands.length <= brandsMobileBrandsNoSoltsNumber) { $("#brandListPhone").append(brandBoxPhoneClone); } else { let code = availableBrands[i].charCodeAt(0); if (code == 35 || ((code > 47 && code < 58))) { // # or 0 - 9 $("#subBrandList0-#").removeClass("hidden").append(brandBoxPhoneClone); } else if ((code > 64 && code < 71) || (code > 96 && code < 103)) { // A-F or a-f $("#subBrandListA-F").removeClass("hidden").append(brandBoxPhoneClone); alphabeticalCounter += 1; } else if ((code > 70 && code < 78) || (code > 102 && code < 110)) { // G-M or g-m $("#subBrandListG-M").removeClass("hidden").append(brandBoxPhoneClone); alphabeticalCounter += 1; } else if ((code > 77 && code < 91) || (code > 109 && code < 123)) { // N-Z or n-z $("#subBrandListN-Z").removeClass("hidden").append(brandBoxPhoneClone); alphabeticalCounter += 1; } else { // other character $("#subBrandListOther").removeClass("hidden").append(brandBoxPhoneClone); $("#subBrandListOther").find("#otherSubBrandTitle").removeClass("hidden"); } } } } if (alphabeticalCounter == 0) { if ($("#subBrandList0-#").find(".menuButton").length == 0) { $("#subBrandListOther").find("#otherSubBrandTitle").addClass("hidden"); } } else if (alphabeticalCounter <= brandsMobileBrandsNoAlphabeticalSoltsNumber) { $("#subBrandListG-M").find(".displayBlock").addClass("hidden"); $("#subBrandListN-Z").find(".displayBlock").addClass("hidden"); $("#subBrandListA-F").removeClass("hidden").find(".displayBlock").removeClass("hidden").find("span").text("A-Z"); } else { $("#subBrandListG-M").find(".displayBlock").removeClass("hidden"); $("#subBrandListN-Z").find(".displayBlock").removeClass("hidden"); $("#subBrandListA-F").removeClass("hidden").find(".displayBlock").removeClass("hidden").find("span").text("A-F"); } // rendering see more if ($("#brandList")) { if (availableBrands.length > brandsDisplayDesktopNumber) { // No need to render selectedSubCategory anymore, directly adding see more let brandListItemClone = $("#brandListItemTemplate li").clone(); let currentBrandCheckText = brandListItemClone.find("[data-name=brandListItemCheckText]"); let currentBrandCheckBox = brandListItemClone.find("[data-name=brandListItemCheckBox]"); let expander = $("#itemExpanderTemplate").children().clone(); let expanderName = "brandListExpander"; currentBrandCheckBox.addClass("hidden"); expander.attr("data-a-expander-name", expanderName); currentBrandCheckText.attr("data-name", "brandsExpander"); currentBrandCheckText.append(expander); P.when('A', 'ready').execute(function (A) { A.on('a:expander:' + expanderName + ':toggle:expand', function (data) { $("#brandList").children().removeClass("hidden"); }); A.on('a:expander:' + expanderName + ':toggle:collapse', function (data) { let availableBrands = $("#brandList").children(); if (availableBrands.length > brandsDisplayDesktopNumber) { availableBrands.slice(brandsDisplayDesktopNumber, availableBrands.length - 1).addClass("hidden"); } }); }); $("#brandList").append(brandListItemClone); } } } // Price Tiers let that = this; if (false) { $("#priceTier").removeClass("hidden"); let priceTierRanges = refinement["priceTierRangeResult"]; $("#priceTierList").empty(); $("#priceTierListPhone").empty(); if ($("#priceTierListPhone")) { if (commonModule.isEmpty(this.getValue(this.queryParameterKeys.priceTierMin)) && commonModule.isEmpty(this.getValue(this.queryParameterKeys.priceTierMax))) { $("#priceTierBox").empty(); } } for (let i in priceTierRanges) { if ($("#priceTierList")) { let priceTierListItemClone = $("#priceTierListItemTemplate li").clone(); let currentPriceTier = priceTierListItemClone.find("[data-name=priceTierOptions]"); let currentPriceTierText = priceTierListItemClone.find("[data-name=priceTierOptionsText]"); let priceMin = priceTierRanges[i]["priceMin"]; let priceMax = priceTierRanges[i]["priceMax"]; currentPriceTier.attr("data-value", i); currentPriceTier.attr("min-price", priceMin); currentPriceTier.attr("max-price", priceMax); currentPriceTier.attr("id", "priceTier" + i); if (priceMin == "" || priceMin == 0) { currentPriceTierText.text("Moins de " + priceTierRanges[i]["priceMaxCurrency"]); } else if (priceMax == "") { currentPriceTierText.text(priceTierRanges[i]["priceMinCurrency"] + " et plus"); } else { currentPriceTierText.text(priceTierRanges[i]["priceMinCurrency"] + " à " + priceTierRanges[i]["priceMaxCurrency"]); } if (commonModule.isEmpty(this.getValue(this.queryParameterKeys.priceTierMin)) && commonModule.isEmpty(this.getValue(this.queryParameterKeys.priceTierMax))) { currentPriceTier.removeClass("hidden"); } if (priceTierRanges[i]["hasEmptyDocCount"] && commonModule.isEmpty(this.getValue(this.queryParameterKeys.priceTierMin)) && commonModule.isEmpty(this.getValue(this.queryParameterKeys.priceTierMax))) { currentPriceTier.contents().unwrap(); currentPriceTierText.removeClass("a-color-base"); currentPriceTierText.addClass("a-color-disabled"); currentPriceTierText.addClass("inputCursorDisabled"); } if (this.getValue(this.queryParameterKeys.priceTierMin) == priceTierRanges[i]["priceMin"] && this.getValue(this.queryParameterKeys.priceTierMax) == priceTierRanges[i]["priceMax"]) { currentPriceTier.removeClass("hidden"); commonModule.focus($("[data-name=priceTierOptions]"), $(currentPriceTier)); } currentPriceTier.click(function () { if ($(this).attr("data-value") != "") { that.filterOrSort2(that.queryParameterKeys.priceTierMin, $(this).attr("min-price"), that.queryParameterKeys.priceTierMax, $(this).attr("max-price")); $("#minPriceInput").val($(this).attr("min-price")); $("#maxPriceInput").val($(this).attr("max-price")); } commonModule.gotoAnchor("#toolbarGridContainer"); { $("#priceTierClear").removeClass("hidden"); $("#priceTierList [data-name=priceTierOptions]").addClass("hidden"); $("#priceTierList .inputCursorDisabled").addClass("hidden"); commonModule.focus($("#priceTierList"), $(this)); $(this).removeClass("hidden"); } }) $("#priceTierList").append(priceTierListItemClone); } // Phone $("#priceTierPhone").removeClass("hidden"); if ($("#priceTierListPhone")) { let priceTierBoxPhoneClone = $("#priceTierBoxTemplate > div").clone(); if (priceTierRanges[i]["priceMin"] == "" || priceTierRanges[i]["priceMin"] == 0) { priceTierBoxPhoneClone.text("Moins de " + priceTierRanges[i]["priceMaxCurrency"]); } else if (priceTierRanges[i]["priceMax"] == "") { priceTierBoxPhoneClone.text(priceTierRanges[i]["priceMinCurrency"] + " et plus"); } else { priceTierBoxPhoneClone.text(priceTierRanges[i]["priceMinCurrency"] + " à " + priceTierRanges[i]["priceMaxCurrency"]); } priceTierBoxPhoneClone.attr("data-value", i); priceTierBoxPhoneClone.attr("min-price", priceTierRanges[i]["priceMin"]); priceTierBoxPhoneClone.attr("max-price", priceTierRanges[i]["priceMax"]); priceTierBoxPhoneClone.attr("data-key1", this.queryParameterKeys.priceTierMin); priceTierBoxPhoneClone.attr("data-key2", this.queryParameterKeys.priceTierMax); if (this.getValue(this.queryParameterKeys.priceTierMin) == priceTierRanges[i]["priceMin"] && this.getValue(this.queryParameterKeys.priceTierMax) == priceTierRanges[i]["priceMax"]) { priceTierBoxPhoneClone.addClass("menuButtonFocus"); } if (priceTierRanges[i]["hasEmptyDocCount"]) { priceTierBoxPhoneClone.removeClass("menuButtonFocus"); priceTierBoxPhoneClone.addClass("menuButtonDisable"); priceTierBoxPhoneClone.children().prop('disabled', true); } priceTierBoxPhoneClone.click(function () { let target = "#" + $(this).attr("data-target"); if ($(this).hasClass("menuButtonFocus")) { $(this).removeClass("menuButtonFocus"); that.filterOrSort2($(this).attr("data-key1"), "", $(this).attr("data-key2"), ""); $(target).empty(); } else { $(this).parent().find("[name=menuButton]").removeClass("menuButtonFocus"); $(this).addClass("menuButtonFocus"); that.filterOrSort2($(this).attr("data-key1"), $(this).attr("min-price"), $(this).attr("data-key2"), $(this).attr("max-price")); $(target).empty(); $(target).append($(this).clone()); $(target).find("[name=menuButton]").click(function () { let InnerTarget = "#" + $(this).attr("data-target"); if ($(this).hasClass("menuButtonFocus")) { $(this).removeClass("menuButtonFocus"); that.filterOrSort2($(this).attr("data-key1"), "", $(this).attr("data-key2"), ""); $(InnerTarget).empty(); } }); } that.showClearButton(); }) $("#priceTierListPhone").append(priceTierBoxPhoneClone); } } } // Customer Review: since the count is calculated pre late check, which is not precise. We don't render the count for now let avgCustomerReviewResults = refinement["avgCustomerReviewResults"]; if (commonModule.isNotEmpty(avgCustomerReviewResults)) { // TODO render count for each rank; } let bestSellerResults = refinement["bestSellerResults"]; // Bestseller: since the count is calculated pre late check, which is not precise. We don't render the count for now if (commonModule.isNotEmpty(bestSellerResults) && commonModule.isNotEmpty(bestSellerResults["TOP_SELLER"]) && bestSellerResults["TOP_SELLER"] > 0) { $("#bestSeller").show(); // TODO render count for bestseller; } else { $("#bestSeller").hide(); } // Result found desktop if ($("#resultsFound")) { if (refinement["resultFound"].toString().length > 0) { $("#resultsFound").html(refinement["resultFound"] + " - " + '<span class="a-size-base a-color-secondary">Le prix peut varier en fonction de la sélection</span>'); } else { $("#resultsFound").html('<span class="a-size-base a-color-secondary">Le prix peut varier en fonction de la sélection</span>'); } } // Result found phone if ($("#showResults")) { $("#showResults").html(refinement["resultFoundPhone"]); $("#showResultsBox").attr("aria-label", refinement["resultFoundPhone"]) } this.showClearButton(); }, //private function redeemCoupon: function (asin, offerListingId) { // Set for coupon clipping let isAutoRedeem = this.shouldAutoRedeem(); if (commonModule.isNotEmpty(isAutoRedeem) && isAutoRedeem && !hasBeenAutoRedeem) { hasBeenAutoRedeem = true; let redeemPromotionParam = { "promotionId": "AHSTCFJQ0HC6U", "asin": asin, "offerListingId": offerListingId, 'anti-csrftoken-a2z': 'hC9ywFMhz6vpw0RV2rZVn0GDUII3LatbXEJf0pb3BU3fAAAAAGeyhrcAAAAB', 'source': "clp" }; $.ajax({ type: "POST", url: "/promotion/redeem/", data: redeemPromotionParam, contentType: 'application/x-www-form-urlencoded; charset=UTF-8;', success: function () { isClipped = true; $("#couponClippingConfirmationBox").removeClass("hidden"); $("#couponClippingConfirmationBox").addClass("inlineBlock"); }, error: function (e) { } }); } }, // private function startLdEndTimer: function (countDownSeconds, asin) { if (!asinToEndsInTimeMap.has(asin)) { // Update the count down every 1 second setInterval(function () { countDownSeconds--; asinToEndsInTimeMap.set(asin, countDownSeconds); if (countDownSeconds < 0) { clearInterval(); asinToEndsInTimeMap.set(asin, countDownSeconds); } }, 1000); } }, //private function displayLdEndTime: function (ldBarPercentSection, asin) { let that = this; let tagElement = ldBarPercentSection.find("[name=dealTimeLeft]"); // Update the count down every 1 second let intervalId = setInterval(function () { let countDownSeconds = asinToEndsInTimeMap.get(asin); let hours = "0" + Math.floor((countDownSeconds % (60 * 60 * 24)) / (60 * 60)); let minutes = "0" + Math.floor((countDownSeconds % (60 * 60)) / (60)); let seconds = "0" + Math.floor((countDownSeconds % (60))); tagElement.text(hours.slice(-2) + ":" + minutes.slice(-2) + ":" + seconds.slice(-2)); if (countDownSeconds < 0) { clearInterval(); if (asinToIntervalIdMap.has(asin)) { asinToIntervalIdMap.delete(asin); } tagElement.text("00:00:00"); that.setDealHasEnded(ldBarPercentSection.find("[data-name=endsInTime]")); } }, 1000); asinToIntervalIdMap.set(asin, intervalId); }, updateClaim: function (ldMerchantToAsins) { let that = this; $.ajax({ type: "GET", url: "/promotion/ld/claim", data: $.param(ldMerchantToAsins, true), traditional: true, dataType: "json", success: function (data) { let viewModels = data["viewModels"]; let ldClaim = viewModels["LD_CLAIM"]; for (let i = 0; i < ldClaim.length; i++) { let productGrid = $("#productInfoList").find("li[data-asin=" + ldClaim[i]["asin"] + "][data-merchant=" + ldClaim[i]["merchantId"] + "]"); if (productGrid !== undefined) { let ldBarPercentSection = productGrid.find("div[name=ldBarPercentSection]"); if (ldClaim[i]["dealAvailable"]) { ldBarPercentSection.find("[name=ldFilledBar]").width(ldClaim[i]["percentageClaimedBar"]); ldBarPercentSection.find("[data-name=percentClaimed]").text(ldClaim[i]["percentageClaimed"]); } else { that.setDealHasEnded(ldBarPercentSection.find("[data-name=endsInTime]")); } } } }, error: function (e) { } }); }, // private function getDpLink: function (productInfoList, i, productCategory) { // set reftagSuffix only for carousel view if (false && !isFilterOrSort) { let reftagSuffix = productCategoryToReftagSuffix.get(productCategory); return productInfoList[i]["detailPageLink"] + "&ref=" + "psp_pc_a_" + "AHSTCFJQ0HC6U" + "_" + reftagSuffix; } return productInfoList[i]["detailPageLink"] + "&ref=" + "psp_pc_a_" + "AHSTCFJQ0HC6U"; }, // private function getDpLinkForProductInfo: function (productInfo, productCategory) { // set reftagSuffix only for carousel view if (false && !isFilterOrSort) { let reftagSuffix = productCategoryToReftagSuffix.get(productCategory); return productInfo["detailPageLink"] + "&ref=" + "psp_pc_a_" + "AHSTCFJQ0HC6U" + "_" + reftagSuffix; } return productInfo["detailPageLink"] + "&ref=" + "psp_pc_a_" + "AHSTCFJQ0HC6U"; }, setDealHasEnded: function (endsInTime) { endsInTime.text("L'offre promotionnelle est terminée"); endsInTime.removeClass("a-color-success"); endsInTime.addClass("a-color-error"); }, continuousUpdateClaim: function (ldMerchantToAsins) { if (Object.keys(ldMerchantToAsins).length > 0) { let that = this; // updates ever 10 seconds (10 * 1000 milliseconds) continuously setInterval(function () { that.updateClaim(ldMerchantToAsins); }, 10000); } }, // private function getRefTag: function (key, value) { //Filter has been toggled off so no reftag is necessary if (value === "") { reftag = ""; return; } reftag = "?ref=" switch (key) { case "applicabilityIndex": reftag += "psp_pc_pd_"; break; case "bestSeller": reftag += "psp_pc_re_best"; break; case "sortBy": reftag += "psp_pc_so_" + value; break; case"productCategory": reftag += "psp_pc_re_" + value; break; case "avgCustomerReview": reftag += "psp_pc_re_cr_" + value; break; case "priceTierMin": reftag += "psp_pc_re_pmin_"; case "priceTierMax": reftag += "psp_pc_re_pmax_"; break; case "searchKeyword": reftag += "psp_pc_se_box"; break; case "seeAll": reftag += "psp_pc_see_all_" + value; break; case "sortId": reftag += "_see_more"; } }, // private function getProductInfoControllerURL() { if (false && !isFilterOrSort) { return "/promotion/psp/productInfoListForSUS"; } return "/promotion/psp/productInfoList"; }, // private function // We generate 10 placeholder carousels by default to accommodate maximum 10 product category (cannot create // extra after the initialization. // However, we don't necessary get all 10 carousels every time, so we hide the rest of the placeholder // carousel after runtime hideUnusedCarousels: function (carouselName, availableProductCategories) { for (let i = 6; i >= availableProductCategories.length; i--) { $("#" + carouselName + "_" + i).addClass("hidden"); } }, // private function showSpin: function () { // Show PSP page spinning $("#a-page").attr("disabled", true); $("#a-page").addClass("halfOpacity"); $("#pspSpinner").removeClass("hidden"); }, // private function hideSpin: function () { // Hide PSP page spinning $("#pspSpinner").addClass("hidden"); $("#a-page").removeClass("halfOpacity"); $("#a-page").attr("disabled", false); }, showClearButton: function() { let menuButtons = $("#refinementMenu [name=menuButton].menuButtonFocus").not("#Featured-1"); if (menuButtons.length > 0) { $("#clearFiltersBox").removeClass("hidden").addClass("inlineBlock"); } else { $("#clearFiltersBox").addClass("hidden").removeClass("inlineBlock"); } }, //private function isProductRestricted: function(productInfoList) { if (false) { let firstAsin = productInfoList[0]; return firstAsin !== undefined && firstAsin["restrictedErrorPage"]; } return false; }, //private function shouldAutoRedeem: function() { let autoRedeem = "false" === "true" && !(this.isProductRestricted(this.cachedPromotionShoppingPageResponse["viewModels"]["PRODUCT_INFO_LIST"])); if (false) { autoRedeem = "false" === "true" && !(this.isProductRestricted(this.cachedPromotionShoppingPageResponse["viewModels"]["PRODUCT_INFO_LIST_SUS"])); } return autoRedeem; } } }); window.P.when("queryParameterAjax_module", "ready").execute(function (queryParameterAjaxModule) { // We only want this to happen when we want to show the productList and refinements. if ("PROMOTION_ENDED_RECENTLY" == "CUSTOMER_ELIGIBLE" || false) { queryParameterAjaxModule.firstPageLoad(queryParameterAjaxModule.queryParameterKeys.promotionId, "AHSTCFJQ0HC6U", true, true); } queryParameterAjaxModule.resetSelection(); }); </script> <style> .freeze { height: 100%; overflow: hidden; } .invisible { visibility: hidden !important; } .a-carousel-card .invisible { visibility: hidden !important; display: none !important; } .a-carousel { display: inline-flex !important; } .a-carousel-card { display: inline-flex !important; } .hidden { display: none !important; } .inlineBlock { display: inline-block !important; } .textAlignCenter { text-align: center; } .textAlignStart { text-align: start; } .textAlignEnd { text-align: end; } .alignCenter { margin: 0 auto !important; } .verticalAlignCenter { position: relative; top: 50%; transform: translateY(-50%); } .verticalAlignMiddle { vertical-align: middle; } .fixCenter { position: fixed; top: 50%; left: 50%; z-index: 200; } .zIndex700 { z-index: 700 !important; } .asinFaceoutCartScrim { pointer-events: none; opacity: 0.6; cursor: not-allowed; } /* * For some spans we have to preserve the whitespace inorder to hide the element while preserve the space on the page. * Otherwise the element doesn't occupy any space on the page. */ .preserveWhiteSpace { white-space: pre; } .backGroundGreen { background: #94ed88 !important; } .backgroundWhite { background-color: #FFFFFF; } .backgroundSnow { background-color: #EAEDED; } .backgroundQualified{ background-color: #E4FDBF } .a_color_success { color: #058552 !important; } .claimedBar-module-bar { background: #D5DBDB; } .claimedBar-module-filledBar { background: #E55D16; height: 6px; } .a-color-disabled { color: #6F7373 !important; } [data-a-badge-color=psp_lightning_deal_red] { background-color: #B12704!important; color: #B12704!important; } [data-a-badge-color=psp_cloud] { color: #fff!important; } .clamp1 { -webkit-line-clamp: 1; } .clamp2 { -webkit-line-clamp: 2; } .clamp3 { -webkit-line-clamp: 3; } .clamp1, .clamp2, .clamp3 { overflow: hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-box-orient: vertical; hyphens: auto; } .textCursorPointer { cursor: pointer; } .textCursorPointer:hover { color: #c45500 !important; } .flexDisplay, .inlineFlexDisplay { flex-flow: nowrap row; justify-content: flex-start; align-items: center; align-content: flex-start; height:100%; } .flexDisplay { display: flex; } .alignFlexStart { align-items: flex-start; } .paddingInlineSmall { padding-inline: 12px; } .flexShrink { flex: 0 1 0; } .flexEquallyGrow { flex: 1 1 0; } .inlineFlexDisplay { display: inline-flex; } .flexWrap { flex-wrap: wrap; } .fillContentFlex { flex: 1 0 0; } .flexGrow1 { flex-grow: 1; } .stickyCart { position: -webkit-sticky; position: sticky; /*overflow-x: hidden;*/ z-index: 100; } .stickyRefinement { position: -webkit-sticky; position: sticky; overflow-x: hidden; z-index: 10; } .relative { position: relative !important; } .inputCursorDisabled { cursor:not-allowed !important; } /* make sure buttons being rendered properly on Chrome */ button:focus, input[type="submit"] { outline: none; box-shadow: none; } button:focus:not(:focus-visible), input[type="submit"] { outline: 0 !important; box-shadow: none !important; } button, html [type="button"], [type="reset"], [type="submit"] { -webkit-appearance: button; } .halfOpacity { opacity: 0.5; filter: alpha(opacity=50); filter: "alpha(opacity=50)"; -moz-opacity: 0.5; -khtml-opacity: 0.5; pointer-events: none; } /* This css is used to set on a div which covers all the region of the page. Used when cart is opened on all platforms and refinement menu on mobile*/ .maskArea { position: fixed; bottom: 0px; left: 0px; width: 100%; background-color: #000000; opacity: 0.15; } #maskAreaCart.maskArea { z-index: 25 !important; } #maskAreaFilter.maskArea { z-index: 1900 !important; } /* Review start icon */ .pspStar.a-icon { background-image: url(/promotion/static/css/pspIcon.png) !important; background-size: 512px 256px; } .pspStar.a-star-medium-4 { background-position: -2px -84px !important; } .pspStar.a-star-medium-3 { background-position: -293px -180px !important; } .pspStar.a-star-medium-2 { background-position: -99px -132px !important; } .pspStar.a-star-medium-1 { background-position: -390px -228px !important; } .a-icon.a-star-small-5 { background-position: -166px -36px !important; } .pspStar.a-star-small-4-5 { background-position: -84px -28px !important; } .pspStar.a-star-small-4 { background-position: -84px -8px !important; } .pspStar.a-star-small-3-5 { background-position: -181px -56px !important; } .pspStar.a-star-small-3 { background-position: -84px -48px !important; } .pspStar.a-star-small-2-5 { background-position: -99px -68px !important; } .pspStar.a-star-small-2 { background-position: -181px -76px !important; } .pspStar.a-star-small-1-5 { background-position: -390px -164px !important; } .pspStar.a-star-small-1 { background-position: -375px -144px !important; } .pspStar.a-star-small-0-5 { background-position: -278px -120px !important; } .pspStar.a-star-small-0 { background-position: -278px -100px !important; } .a-size-mini { font-size: 12px !important; line-height: 16px !important; } .claimedBar-module-timerAndPercent { display: flex; justify-content: space-between; } .imageSquare { position: absolute; margin: auto; top: 0; bottom: 0; left: 0; right: 0; max-width: 100%; max-height: 100%; } </style> <style> .marginLeftAuto { margin-left: auto; } .marginLeft4 { margin-left: 4px; } .marginLeft6 { margin-left: 6px; } .marginLeft8 { margin-left: 8px; } .marginLeft10 { margin-left: 10px; } .marginLeft16 { margin-left: 16px; } .marginLeft24 { margin-left: 24px; } .marginRight16 { margin-right: 16px; } .marginRight24 { margin-right: 24px; } .marginTop16 { margin-top: 16px !important; } .marginBottom16 { margin-bottom: 16px !important; } .paddingLeft4 { padding-left: 4px; } .paddingLeft6 { padding-left: 6px; } .paddingLeft8 { padding-left: 8px; } .paddingLeft10 { padding-left: 10px; } .paddingLeft12 { padding-left: 12px; } .paddingLeft16 { padding-left: 16px; } .paddingRight12 { padding-right: 12px; } .paddingRight4 { padding-right: 4px; } .paddingRight6 { padding-right: 6px; } .paddingRight8 { padding-right: 8px; } .marginTop0 { margin-top: 0px !important; } .paddingTop4 { padding-top: 4px !important; } .paddingTop6 { padding-top: 6px !important; } .paddingTop8 { padding-top: 8px !important; } .paddingTop12 { padding-top: 12px !important; } .paddingTop16 { padding-top: 16px !important; } .paddingTop20 { padding-top: 20px !important; } .paddingTop32 { padding-top: 32px !important; } .paddingTop40 { padding-top: 40px !important; } .marginBottom0 { margin-bottom: 0px !important; } .paddingBottom2 { padding-bottom: 2px !important; } .paddingBottom6 { padding-bottom: 6px !important; } .paddingBottom8 { padding-bottom: 8px !important; } .paddingBottom12 { padding-bottom: 12px !important; } .paddingBottom16 { padding-bottom: 16px !important; } .paddingBottom20 { padding-bottom: 20px !important; } .paddingBottom32 { padding-bottom: 32px !important; } .paddingBottom40 { padding-bottom: 40px !important; } .marginBottom48 { margin-bottom: 48px !important; } .marginTop4 { margin-top: 4px !important; } .marginTop2 { margin-top: 2px !important; } .marginTop1 { margin-top: 1px !important; } .height6 { height: 6px !important; } .marginTop8 { margin-top: 8px !important; } </style> <style> /* Grid layout: https://css-tricks.com/snippets/css/complete-guide-grid/ */ /* * When window size is greater than 1500px 4 columns are shows, * from which 1st and 4th ones are blank except for the banner and toolbar shadow to stretch to the both ends. * The 1st and 4th have the lowest priority to show and will be shrank first and then the 3rd column with minmax, and then last the refinement column */ .gridContainer { width: 100%; height: 100%; display: grid; place-content: center center; place-items: center center; grid-auto-flow: row; grid-template-columns: 1fr 250px minmax(750px, 1250px) 1fr; grid-template-areas: "topCart_gridItem topCart_gridItem topCart_gridItem topCart_gridItem " "topBanner_gridItem topBanner_gridItem topBanner_gridItem topBanner_gridItem " ". warning_gridItem warning_gridItem . " ". deals_gridItem deals_gridItem . " ". topClaim_gridItem topClaim_gridItem . " ". topCouponAndQualification_gridItem topCouponAndQualification_gridItem . " "toolbar_gridItem toolbar_gridItem toolbar_gridItem toolbar_gridItem " ". refinement_gridItem productInfoList_gridItem . " ". refinement_gridItem showMore_gridItem . " ". signIn_gridItem signIn_gridItem . " ". primeExclusive_gridItem primeExclusive_gridItem . "; } /* When window size is less than 1500px, 2 columns are shown, and 2nd column is shrank first */ @media screen and (max-width: 1500px) { .gridContainer { grid-template-columns: 250px minmax(750px, 1250px); grid-template-areas: "topCart_gridItem topCart_gridItem " "topBanner_gridItem topBanner_gridItem " "warning_gridItem warning_gridItem " "deals_gridItem deals_gridItem " "topClaim_gridItem topClaim_gridItem " "topCouponAndQualification_gridItem topCouponAndQualification_gridItem " "toolbar_gridItem toolbar_gridItem " "refinement_gridItem productInfoList_gridItem " "refinement_gridItem showMore_gridItem " "signIn_gridItem signIn_gridItem " "primeExclusive_gridItem primeExclusive_gridItem "; } } </style> <style> .promotionHowToClaimMessage { width: 33%; } .expanderHeight { height: 80px !important; } .paddingLeftExpander { padding-left: 33.8%; } .paddingBottom6{ padding-bottom: 0.6% !important; } .paddingBottom17 { padding-bottom:30px !important; } .paddingTopPer8{ padding-top:0.7%; } .paddingBottomPer8{ padding-bottom: 0.7%; } @media screen and (max-width: 1366px) { .promotionHowToClaimMessage { width: 50%; } } </style> <style> .topCouponAndQualificationContainer { width: 100%; height: auto; } </style> <style> .topQualificationInfoContainer { height: 5rem; color: green; margin-left: 0; margin-right: 0; } </style> <style> .couponClippingButtonWidth { min-width: 130px !important; } </style> <style> .divider { width: 40%; } /* Tablet experience */ @media screen and (max-width: 1366px) { .divider { width: 60%; } } </style> <style> .qualificationPosition { width: 100%; position: absolute; left: 50%; transform: translateX(-50%) translateY(-50%); z-index: -1; } .topCartGoToCartBtn { min-width: 130px; } </style> <style> .cartItemGrid { align-self: auto; width: 110px; margin: 0px 24px; list-style: none; } .cartItemImageBox { width: 105px; height: 105px; } .cartItemTitleBox { height: 48px; } .cartItemListFlex { /* Flex layout */ display: flex; flex-flow: row nowrap; align-items: center; align-content: center; overflow-x: auto; list-style: none; margin: 0 !important; width: 100%; } /* CSS "justify-content: center" has a major known flaw as it allows overflow outside the flex layout without allowing to scroll back to the left and causes data loss. The fix for this "justify-content: center safe" is only supported on Firefox. A workaround for this is setting the "margin: auto" to the first and last child. */ .cartItemGrid:first-child { margin-left: auto; padding-left: 3px; } .cartItemGrid:last-child { margin-right: auto; } .cartMessageMaxQuantityRestriction { position: relative; padding-right: 35px; padding-left: 0px; padding-top: 10px; padding-bottom: 0px; font-weight: bold; font-size: small; width: 150px; } .cartMessageMinQuantityRestriction { position: relative; padding-right: 35px; padding-left: 0px; padding-top: 10px; padding-bottom: 0px; font-weight: bold; font-size: small; width: 150px; } </style> <style> .keywordSearchInputText { width: 250px; padding-left: 24px !important; } </style> <style> .refinementFlexContainer { position: static; top: 100px; } .refinementDivider { border-right: 1px solid #ddd; } .s-ref-small-padding-left { padding-left:4px; } .s-ref-price-currency { position:absolute; margin-top: 7px; line-height:30px; font-size:100%; } .s-ref-price-range { width:67px; margin-top:6px !important; } .s-ref-price-range-extra { width:75px; margin-top:6px !important; } html[dir=rtl] .s-ref-price-padding-extra { padding-left: 0 !important; padding-right: 2px; } .s-ref-price-padding { padding-left:16px !important; } .s-ref-price-padding-extra { padding-left:32px !important; } .s-small-margin { margin-left:2px; margin-right:4px; } .s-back-arrow { width:6px; height:10px; background-repeat:no-repeat; background-image:url(https://m.media-amazon.com/images/S/sash/5wejH04P3ogfQ-4.svg) } .s-inline-block{ display:inline-block } .dispInlineBlock { display: inline-block; } </style> <style> .productGridForSUS { align-self: auto; height: auto; max-width: 100%; width: 100%; } .productGrid { align-self: auto; height: auto; max-width: 25%; width: 100%; padding-left : 12px; padding-right : 12px; } .productTitle { height: 48px; margin-top: 4px; } .brandName { margin-top: 4px; } .customerReview { margin-top: 2px; } html[dir=rtl] .customerReview i { transform: scaleX(-1); } html[dir=rtl] #customerReview i { transform: scaleX(-1); } .productPriceBox { margin-top: 8px;; } .bestSellerBadgeBox { margin-top: 16px; } .sizePromptMargin { margin-top: 11px !important; } .viewItemBtnBox, .selectItemBtnBox, .addToCartBtnBox { margin-bottom: 24px; } @media only screen and (max-width: 1090px) { .productGrid { align-self: auto; height: auto; flex: 0 0 33% !important; } } .productInnerGrid { width:100%; } .faceout_border { border-bottom: 2px solid #ddd; } .addToCartBtn { width: 80% } .backGroundTransparent{ background: transparent !important; } </style> <style> .showMoreBtn { width: 216px; } </style> <style> .signInButtonSize { width: 216px; } </style> <style> .primeExclusiveButtonSize { width: 150px; } </style> <style> .progressBarHeight { height:10px !important; } .progressBarFloat { float: left; width: 100%; } .cartProgressIndicatorBox { width: 724px; height: 95px; margin: auto; padding-top: 8px; position: relative; } .cartProgressBox { width: 100%; border-bottom: 1px solid; border-bottom-color: #D5D9D9; padding: 0 8px; } .progressBarTierDivider { height:8px !important; width: 3px !important; position: absolute; background: #000000; float: left; margin-top: 1px; } .cartProgressIndicatorBarIdClass { } .progressBarTierText { float: left; height: 0px; } .floatLeftOnly { float: left; } .cartBenefitUnlockedAlert { float: left; width: 0px; white-space: nowrap; } .cartProgressMessage { } .cartProgressLeftBottomBox { display: inline-block; left: 0; position: absolute; top: 55px; text-align: start; max-width: 21rem; } .cartProgressRightBottomBox { display: inline-block; right: 0; position: absolute; top: 55px; } .marginLeft5 { margin-left: 5px; } .cartIcon { top:3px; } .cartProgressIndicatorContainer { display: inline-flex; width: 100%; height: auto; padding: 8px 150px 3px 150px; flex-direction: column; justify-content: flex-start; align-items: center; gap: 8px; } .cartProgressIndicatorBoxAB { display: inline-flex; width: 725px; flex-direction: column; justify-content: flex-start; align-items: center; gap: 4px; } .cartProgressIndicatorBenefitBox { display: inline-flex; justify-content: center; align-items: flex-start; gap: 4px; } .cartProgressIndicatorBarContainer { display: inline-flex; width: 100%; height:100%; justify-content: center; align-items: center; gap: 4px; } .cartProgressIndicatorBar { height:16px !important; } .cartProgressIndicatorThreshold { flex: 0 0 auto; /* This ensures the item doesn't grow or shrink, so the x item(s): $Y.yy takes always one line exactly*/ text-align: end; position: relative; } .cartProgressIndicatorBottomBox { display: flex; width: 100%; margin-top: 4px; gap: 8px; } .cartProgressIndicatorLeftBottomBox { flex: 1 1 auto; /* Allow flexibility to grow, shrink, and fill the container */ text-align: start; } .cartProgressIndicatorRightBottomBox { flex: 0 0 auto; /* This ensures the item doesn't grow or shrink, so the x item(s): $Y.yy takes always one line exactly*/ text-align: end; } </style> <style> .centered-container { text-align: left; width: 40%; position: relative; left: 50%; /* position the left edge of the element at the middle of the parent */ transform: translate(-50%, 0); /* This is a shorthand of translateX(-50%) and translateY(0%) */ } [dir="rtl"] { .centered-container { right: 50%; /* position the right edge of the element in rtl at the middle of the parent */ transform: translate(50%, 0); /* This is a shorthand of translateX(50%) and translateY(0%) */ } } .popover-trigger { .a-icon.a-icon-popover { display: none; !important } } .popover-container { padding-inline: 24px; padding-top: 15px; padding-bottom: 26px; } .vertical-divider { width: 1px; height: 20px; color: #BBBFBF; margin-inline: 16px; } </style> <style> .promotionShoppingPageGlobalContainer { direction: ltr; } .topBanner_gridItem { grid-area: topBanner_gridItem; width: 100%; height: 100%; } .topClaim_gridItem { grid-area: topClaim_gridItem; width: 100%; height: 100%; } .topCouponAndQualification_gridItem { grid-area: topCouponAndQualification_gridItem; width: 100%; height: auto; padding-bottom: 24px !important; } .topCart_gridItem { grid-area: topCart_gridItem; width: 100%; height: 100%; } .topCart_phone_gridItem { grid-area: topCart_phone_gridItem; width: 100%; height: 100%; top: 0; } .refinement_gridItem { grid-area: refinement_gridItem; width: 100%; height: 100%; } .refinement_phone_gridItem { grid-area: refinement_phone_gridItem; width: 100%; height: 100%; } .refinement_phone_gridItem_top5 { top: 7.1rem; } .refinement_phone_gridItem_top8 { top: 8.8rem; } .refinement_phone_gridItem_top3x { top: 35.8rem; } .toolbar_gridItem { width: 100%; height: 100%; } .toolbar_gridItem { grid-area: toolbar_gridItem; } .toolbar_phone_gridItem { grid-area: toolbar_phone_gridItem; width: 100%; height: 100%; } .productInfoList_gridItem { grid-area: productInfoList_gridItem; width: 100%; height: 100%; z-index: 9; } .productInfoCarousel_gridItem { grid-area: productInfoCarousel_gridItem; width: 100%; height: 100%; } .showMore_gridItem { grid-area: showMore_gridItem; place-self: center center; width: 100%; height: 100%; } .warning_gridItem { grid-area: warning_gridItem; place-self: center center; width: 100%; height: 100%; } .deals_gridItem { grid-area: deals_gridItem; place-self: center center; width: 100%; height: 100%; } .signIn_gridItem { grid-area: signIn_gridItem; place-self: center center; width: 100%; height: 100%; } .primeExclusive_gridItem { grid-area: primeExclusive_gridItem; place-self: center center; width: 100%; height: 100%; } .promo-shopping-page-bottom-1 { grid-area: promo-shopping-page-bottom-1; place-self: center center; width: 100%; height: 100%; } .colorYellow { background-color: yellow; display: inline-block; } .a-popover-wrapper { direction: ltr; } .a-popover-inner { text-align: start; } .priceVaryStatement { margin-left:2.5vmin; } </style> <span id="pspSpinner" class="a-spinner a-spinner-medium fixCenter hidden"></span> <!-- Lucid jsp file is responsible for loading Lucid page level attributes --> <div id="promotionShoppingPageGlobalContainer" class="promotionShoppingPageGlobalContainer" data-csa-c-type = "widget" data-csa-c-painter = "promotion-shopping-page" data-csa-c-owner = "PromotionsDiscovery" data-csa-c-op-log-render = "" data-csa-c-contentId = "amzn1.promotion.AHSTCFJQ0HC6U" > <input type="hidden" id="queryModel_promotionId" name="queryModel.promotionId" value="AHSTCFJQ0HC6U"/> <div class="gridContainer"> <div id="topCart_gridItem" class="topCart_gridItem textAlignCenter"> <!-- This jsp file is responsible for loading the PSP Cart Preview, SubTotal and GoToCart Button --> </div> <div id="topCart_phone_gridItem" class="topCart_phone_gridItem textAlignCenter stickyCart"> <!-- This jsp file is responsible for loading the PSP Cart Preview, SubTotal and GoToCart Button --> </div> <div id="topBanner_gridItem" class="topBanner_gridItem textAlignCenter"> <!-- This jsp file is responsible for loading the Promotion Title and Promotion Schedule --> <style> .titleBox { width: 90%; color: #232F3E; } .stickyBanner{ height: 60px; width: 100%; top: 0; position: fixed; z-index: 25; } </style> <div id="topBannerContainer" class="textAlignCenter" role="group" style="background: #94ed88 !important" aria-label="Titre de la promotion"> <div class="alignCenter" style="width: 90%; color: #232F3E;"> <div id="promotionTitle" style="padding-top: 8px !important;"> <h1><span class="a-size-extra-large a-text-bold">4 nettoyeurs de toilettes pour 8 €</span></h1> </div> <div id="promotionSchedule" class="paddingTop12 paddingBottom16"> <span class="a-size-base inlineBlock">Du 21 nov. 2024 au 02 déc. 2024</span> </div> </div> </div> </div> <div id="topClaim_gridItem" class="topClaim_gridItem textAlignCenter"> <!-- This jsp file is responsible for loading the PromotionDescription, HowToClaimMessage and Terms and conditions --> </div> <div id="toolbar_gridItem" class="toolbar_gridItem"> <!-- This jsp file is responsible for loading the toolbar showing the ResultsFoundMessage, SearchBar and SortBy Feature --> </div> <div id="toolbar_phone_gridItem" class="toolbar_phone_gridItem textAlignCenter"> <!-- This jsp file is responsible for loading the toolbar showing the ResultsFoundMessage, SearchBar and SortBy Feature --> </div> <div id="refinement_gridItem" class="refinement_gridItem textAlignStart"> <!-- This jsp file is responsible for loading the PSP Cart Preview, SubTotal and GoToCart Button --> </div> <div id="refinement_phone_gridItem" class="refinement_phone_gridItem refinement_phone_gridItem_top5 stickyRefinement"> <!-- This jsp file is responsible for loading the PSP refinement Department, Sort By --> </div> <div id="productInfoList_gridItem" class="productInfoList_gridItem"> <!-- This jsp file is responsible for loading the ProductInfoList --> </div> <div id="showMore_gridItem" class="showMore_gridItem textAlignCenter"> <!-- This jsp file is responsible for loading the showMore button --> </div> <div id="promo-shopping-page-bottom-1" class="promo-shopping-page-bottom-1"> </div> <div id="warning_gridItem" class="warning_gridItem textAlignCenter"> <!-- This jsp file is responsible for showing the warning messages --> <script> window.P.when("common_module", 'jQuery').execute(function (commonModule, $) { commonModule.createPopover($("[data-name=promotionTermsAndConditions]"), "promotionTermsAndConditionsPreload"); }); </script> <div class="hidden"> <div id="promotionHowToClaimTerms" class="inlineBlock textAlignStart"> <a data-name="promotionTermsAndConditions" href="javascript:void(0)" role="button" class="a-popover-trigger a-declarative"> <span class="a-size-base">Conditions</span> <i class="a-icon a-icon-popover"></i></a> </div> </div> <div> <div class="a-popover-preload" id="a-popover-promotionTermsAndConditionsPreload"> <script> window.P.when("jQuery", "ready").execute(function ($) { $.ajax({ type: "GET", url: "/promotion/details/popup/AHSTCFJQ0HC6U", success: function (data) { $("#tncContent").html(data); }, error: function (e) { } }); }); </script> <div id="tncContent"> </div> </div> </div> <script> window.P.when("jQuery", "ready").execute(function ($) { $("#termsWarning").append(" ").append($("#promotionHowToClaimTerms")); }); </script> <style> .warningAlert { max-width: 90%; color: #8c6e00; } </style> <div id="warningContainer" class="paddingTop40 textAlignCenter"> <div class="a-box a-alert a-alert-warning inlineBlock warningAlert" aria-live="polite" aria-atomic="true"><div class="a-box-inner a-alert-container"><i class="a-icon a-icon-alert"></i><div class="a-alert-content"> <span id="warning">La promotion est terminée</span> <span id="termsWarning" class="inlineBlock"></span> </div></div></div> </div> </div> <div id="deals_gridItem" class="deals_gridItem textAlignCenter"> <!-- This jsp file is responsible for showing the deals link --> <style> .dealsContainer { width:90%; } </style> <div id="dealsContainer" class="paddingTop32 paddingBottom40 textAlignCenter inlineBlock dealsContainer"> <span class="a-size-medium-plus a-text-bold">Économisez dès maintenant en découvrant nos <a id="todaysDeal">offres du jour</a> et les <a id="amazonCoupon">coupons Amazon</a></span> </div> </div> <div id="signIn_gridItem" class="signIn_gridItem textAlignCenter"> <!-- This jsp file is responsible for loading the SignIn link --> </div> <div id="primeExclusive_gridItem" class="primeExclusive_gridItem textAlignCenter"> <!-- This jsp file is responsible for showing prime sign in/sign up when the promotion is prime exclusive --> </div> </div> </div> </div></body> </html> <!--&&&Portal&Delimiter&&&--><!-- sp:end-feature:host-atf --> <!-- sp:feature:nav-btf --> <!-- NAVYAAN BTF START --> <script type="text/javascript"> window.$Nav && $Nav.when("data").run(function (data) { data({ "accountListContent": { "html": "<div id='nav-al-container'><div id='nav-al-signin'><div id='nav-flyout-ya-signin' class='nav-flyout-content nav-flyout-accessibility'><a href='https://www.amazon.fr/ap/signin?openid.pape.max_auth_age=0&openid.return_to=https%3A%2F%2Fwww.amazon.fr%2Fpromotion%2Fpsp%2FAHSTCFJQ0HC6U%2F%3F_encoding%3DUTF8%26_encoding%3DUTF8%26content-id%3Damzn1.sym.ebe65939-71c5-430e-9d13-ae6dfe997564%26pd_rd_r%3Db2d27c04-578f-4209-b889-2f3790b29e70%26pd_rd_w%3D3uZHA%26pd_rd_wg%3DgrhoS%26pf_rd_p%3Debe65939-71c5-430e-9d13-ae6dfe997564%26pf_rd_r%3D0Q88X5MYBXAXJM8SRKC4%26ref_%3Dnav_signin&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.assoc_handle=frflex&openid.mode=checkid_setup&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0' rel='nofollow' class='nav-action-signin-button' data-nav-role='signin' data-nav-ref='nav_signin'><span class='nav-action-inner'>Identifiez-vous</span></a><div id='nav-flyout-ya-newCust' class='nav_pop_new_cust nav-flyout-content nav-flyout-accessibility'>Nouveau client ? <a href='https://www.amazon.fr/ap/register?openid.pape.max_auth_age=0&openid.return_to=https%3A%2F%2Fwww.amazon.fr%2Fpromotion%2Fpsp%2FAHSTCFJQ0HC6U%2F%3F_encoding%3DUTF8%26_encoding%3DUTF8%26content-id%3Damzn1.sym.ebe65939-71c5-430e-9d13-ae6dfe997564%26pd_rd_r%3Db2d27c04-578f-4209-b889-2f3790b29e70%26pd_rd_w%3D3uZHA%26pd_rd_wg%3DgrhoS%26pf_rd_p%3Debe65939-71c5-430e-9d13-ae6dfe997564%26pf_rd_r%3D0Q88X5MYBXAXJM8SRKC4%26ref_%3Dnav_newcust&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.assoc_handle=frflex&openid.mode=checkid_setup&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0' rel='nofollow' class='nav-a' aria-label='Vous découvrez Amazon ? Commencez ici pour créer un compte'>Commencer ici.</a></div></div></div><div id='nav-al-wishlist' class='nav-al-column nav-tpl-itemList nav-flyout-content nav-flyout-accessibility'><div class='nav-title' id='nav-al-title' role='heading' aria-level='6'>Vos listes d'envies</div><ul><li><a href='/hz/wishlist/ls?triggerElementID=createList&ref_=nav_ListFlyout_navFlyout_createList_lv_redirect' class='nav-link nav-item'><span class='nav-text'>Créer une liste</span></a></li><li><a href='/wedding/home?ref_=nav_ListFlyout_gno_listpop_wr' class='nav-link nav-item'><span class='nav-text'>Liste de mariage</span></a></li><li><a href='/baby-reg/homepage?ref_=nav_ListFlyout_gno_listpop_br' class='nav-link nav-item'><span class='nav-text'>Liste de naissance</span></a></li><li><a href='/discover?ref_=nav_ListFlyout_sbl' class='nav-link nav-item'><span class='nav-text'>Découvrez votre style</span></a></li><li><a href='/showroom?ref_=nav_ListFlyout_srm_your_desk_wl_fr' class='nav-link nav-item'><span class='nav-text'>Explorez le showroom</span></a></li></ul></div><div id='nav-al-your-account' class='nav-al-column nav-template nav-flyout-content nav-tpl-itemList nav-flyout-accessibility'><div class='nav-title' role='heading' aria-level='6'>Votre compte</div><ul><li><a href='/gp/css/homepage.html?ref_=nav_AccountFlyout_ya' class='nav-link nav-item'><span class='nav-text'>Votre compte</span></a></li><li><a id='nav_prefetch_yourorders' href='/gp/css/order-history?ref_=nav_AccountFlyout_orders' class='nav-link nav-item'><span class='nav-text'>Vos commandes</span></a></li><li><a href='https://sell.amazon.fr/vendre-sur-internet?refTag=sell&ld=AZFRSOA_flyout' class='nav-link nav-item'><span class='nav-text'>Votre compte vendeur</span></a></li><li><a href='/hz/wishlist/ls?requiresSignIn=1&ref_=nav_AccountFlyout_wl' class='nav-link nav-item'><span class='nav-text'>Votre liste d'envies</span></a></li><li><a href='/gp/yourstore?ref_=nav_AccountFlyout_recs' class='nav-link nav-item'><span class='nav-text'>Vos recommandations</span></a></li><li><a href='/yourpets?ref_=nav_AccountFlyout_ya_pp' class='nav-link nav-item'><span class='nav-text'>Vos animaux de compagnie</span></a></li><li><a href='/auto-deliveries?ref_=nav_AccountFlyout_sns' class='nav-link nav-item'><span class='nav-text'>Vos Livraisons Programmées</span></a></li><li><a href='/hz5/yourmembershipsandsubscriptions?ref_=nav_AccountFlyout_digital_subscriptions' class='nav-link nav-item'><span class='nav-text'>Adhésions et abonnements</span></a></li><li><a href='/gp/primecentral?ref_=nav_AccountFlyout_prime' class='nav-link nav-item'><span class='nav-text'>Votre compte Amazon Prime</span></a></li><li><a href='/hz/mycd/myx?pageType=content&ref_=nav_AccountFlyout_myk' class='nav-link nav-item'><span class='nav-text'>Gérer votre contenu et vos appareils</span></a></li><li><a href='/gp/kindle/ku/ku_central?ref_=nav_AccountFlyout_ku' class='nav-link nav-item'><span class='nav-text'>Votre Abonnement Kindle</span></a></li><li><a href='https://music.amazon.fr?ref=nav_youraccount_cldplyr' class='nav-link nav-item'><span class='nav-text'>Votre bibliothèque musicale</span></a></li><li><a href='/gp/video/ssoredirect?pvp=/ref%3Ddvm_crs_gno_fr_xs_s_dk_nav_eg_al_yracc_0_u&ref_=nav_AccountFlyout_dvm_crs_gno_fr_xs_s_dk_nav_eg_al_yracc_0_u' class='nav-link nav-item'><span class='nav-text'>Votre Prime Video</span></a></li><li><a href='/photos?ref_=nav_AccountFlyout_photos' class='nav-link nav-item'><span class='nav-text'>Vos Amazon Photos</span></a></li><li><a href='/gp/swvgdtt/your-account/manage-downloads.html?ref_=nav_AccountFlyout_gsl' class='nav-link nav-item'><span class='nav-text'>Votre Bibliothèque de jeux et logiciels</span></a></li><li><a href='/gp/mas/your-account/myapps?ref_=nav_AccountFlyout_aad' class='nav-link nav-item'><span class='nav-text'>Vos applis et vos appareils</span></a></li><li><a href='/gp/browse.html?node=14310146031&ref_=nav_AccountFlyout_frb2b_reg_bottom' class='nav-link nav-item'><span class='nav-text'>Créer un compte professionnel gratuit</span></a></li></ul></div></div>" }, "tooltipContent": { "html": "" }, "signinContent": { "html": "<div id='nav-signin-tooltip'><a href='https://www.amazon.fr/ap/signin?openid.pape.max_auth_age=0&openid.return_to=https%3A%2F%2Fwww.amazon.fr%2Fpromotion%2Fpsp%2FAHSTCFJQ0HC6U%2F%3F_encoding%3DUTF8%26_encoding%3DUTF8%26content-id%3Damzn1.sym.ebe65939-71c5-430e-9d13-ae6dfe997564%26pd_rd_r%3Db2d27c04-578f-4209-b889-2f3790b29e70%26pd_rd_w%3D3uZHA%26pd_rd_wg%3DgrhoS%26pf_rd_p%3Debe65939-71c5-430e-9d13-ae6dfe997564%26pf_rd_r%3D0Q88X5MYBXAXJM8SRKC4%26ref_%3Dnav_custrec_signin&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.assoc_handle=frflex&openid.mode=checkid_setup&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0' class='nav-action-signin-button' data-nav-role='signin' data-nav-ref='nav_custrec_signin'><span class='nav-action-inner'>Identifiez-vous</span></a><div class='nav-signin-tooltip-footer'>Nouveau client ? <a href='https://www.amazon.fr/ap/register?openid.pape.max_auth_age=0&openid.return_to=https%3A%2F%2Fwww.amazon.fr%2Fpromotion%2Fpsp%2FAHSTCFJQ0HC6U%2F%3F_encoding%3DUTF8%26_encoding%3DUTF8%26content-id%3Damzn1.sym.ebe65939-71c5-430e-9d13-ae6dfe997564%26pd_rd_r%3Db2d27c04-578f-4209-b889-2f3790b29e70%26pd_rd_w%3D3uZHA%26pd_rd_wg%3DgrhoS%26pf_rd_p%3Debe65939-71c5-430e-9d13-ae6dfe997564%26pf_rd_r%3D0Q88X5MYBXAXJM8SRKC4%26ref_%3Dnav_custrec_newcust&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.assoc_handle=frflex&openid.mode=checkid_setup&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0' class='nav-a' aria-label='Vous découvrez Amazon ? Commencez ici pour créer un compte'>Commencer ici.</a></div></div>" }, "templates": {"itemList":"<# var hasColumns = (function () { var checkColumns = function (_items) { if (!_items) { return false; } for (var i=0; i<_items.length; i++) { if (_items[i].columnBreak || (_items[i].items && checkColumns(_items[i].items))) { return true; } } return false; }; return checkColumns(items);}()); #><# if(hasColumns) { #> <# if(items[0].image && items[0].image.src) { #> <div class='nav-column nav-column-first nav-column-image'> <# } else if (items[0].greeting) { #> <div class='nav-column nav-column-first nav-column-greeting'> <# } else { #> <div class='nav-column nav-column-first'> <# } #><# } #><# var renderItems = function(items) { #> <# jQuery.each(items, function (i, item) { #> <# if(hasColumns && item.columnBreak) { #> <# if(item.image && item.image.src) { #> </div><div class='nav-column nav-column-notfirst nav-column-break nav-column-image'> <# } else if (item.greeting) { #> </div><div class='nav-column nav-column-notfirst nav-column-break nav-column-greeting'> <# } else { #> </div><div class='nav-column nav-column-notfirst nav-column-break'> <# } #> <# } #> <# if(item.dividerBefore) { #> <div class='nav-divider'></div> <# } #> <# if(item.text || item.content) { #> <# if(item.url) { #> <a href='<#=item.url #>' class='nav-link <# } else {#> <span class=' <# } #> <# if(item.panelKey) { #> nav-hasPanel <# } #> <# if(item.items) { #> nav-title <# } #> <# if(item.decorate == 'carat') { #> nav-carat <# } #> <# if(item.decorate == 'nav-action-button') { #> nav-action-button <# } #> nav-item' <# if(item.extra) { #> <#=item.extra #> <# } #> <# if(item.id) { #> id='<#=item.id #>' <# } #> <# if(item.dataNavRole) { #> data-nav-role='<#=item.dataNavRole #>' <# } #> <# if(item.dataNavRef) { #> data-nav-ref='<#=item.dataNavRef #>' <# } #> <# if(item.panelKey) { #> data-nav-panelkey='<#=item.panelKey #>' role='navigation' aria-label='<#=item.text#>' <# } #> <# if(item.subtextKey) { #> data-nav-subtextkey='<#=item.subtextKey #>' <# } #> <# if(item.image && item.image.height > 16) { #> style='line-height:<#=item.image.height #>px;' <# } #> > <# if(item.decorate == 'carat') { #> <i class='nav-icon'></i> <# } #> <# if(item.image && item.image.src) { #> <img class='nav-image' src='<#=item.image.src #>' style='height:<#=item.image.height #>px; width:<#=item.image.width #>px;' /> <# } #> <# if(item.text) { #> <span class='nav-text<# if(item.classname) { #> <#=item.classname #><# } #>'><#=item.text#><# if(item.badgeText) { #> <span class='nav-badge'><#=item.badgeText#></span> <# } #></span> <# } else if (item.content) { #> <span class='nav-content'><# jQuery.each(item.content, function (j, cItem) { #><# if(cItem.url && cItem.text) { #><a href='<#=cItem.url #>' class='nav-a'><#=cItem.text #></a><# } else if (cItem.text) { #><#=cItem.text#><# } #><# }); #></span> <# } #> <# if(item.subtext) { #> <span class='nav-subtext'><#=item.subtext #></span> <# } #> <# if(item.url) { #> </a> <# } else {#> </span> <# } #> <# } #> <# if(item.image && item.image.src) { #> <# if(item.url) { #> <a href='<#=item.url #>'> <# } #> <img class='nav-image' <# if(item.id) { #> id='<#=item.id #>' <# } #> src='<#=item.image.src #>' <# if (item.alt) { #> alt='<#= item.alt #>'<# } #>/> <# if(item.url) { #> </a> <# } #> <# } #> <# if(item.items) { #> <div class='nav-panel'> <# renderItems(item.items); #> </div> <# } #> <# }); #><# }; #><# renderItems(items); #><# if(hasColumns) { #> </div><# } #>","subnav":"<# if (obj && obj.type === 'vertical') { #> <# jQuery.each(obj.rows, function (i, row) { #> <# if (row.flyoutElement === 'button') { #> <div class='nav_sv_fo_v_button' <# if (row.elementStyle) { #> style='<#= row.elementStyle #>' <# } #> > <a href='<#=row.url #>' class='nav-action-button nav-sprite'> <#=row.text #> </a> </div> <# } else if (row.flyoutElement === 'list' && row.list) { #> <# jQuery.each(row.list, function (j, list) { #> <div class='nav_sv_fo_v_column <#=(j === 0) ? 'nav_sv_fo_v_first' : '' #>'> <ul class='<#=list.elementClass #>'> <# jQuery.each(list.linkList, function (k, link) { #> <# if (k === 0) { link.elementClass += ' nav_sv_fo_v_first'; } #> <li class='<#=link.elementClass #>'> <# if (link.url) { #> <a href='<#=link.url #>' class='nav_a'><#=link.text #></a> <# } else { #> <span class='nav_sv_fo_v_span'><#=link.text #></span> <# } #> </li> <# }); #> </ul> </div> <# }); #> <# } else if (row.flyoutElement === 'link') { #> <# if (row.topSpacer) { #> <div class='nav_sv_fo_v_clear'></div> <# } #> <div class='<#=row.elementClass #>'> <a href='<#=row.url #>' class='nav_sv_fo_v_lmargin nav_a'> <#=row.text #> </a> </div> <# } #> <# }); #><# } else if (obj) { #> <div class='nav_sv_fo_scheduled'> <#= obj #> </div><# } #>","htmlList":"<# jQuery.each(items, function (i, item) { #> <div class='nav-item'> <#=item #> </div><# }); #>"} }) }) </script> <script type="text/javascript"> window.$Nav && $Nav.declare('config.flyoutURL', null); window.$Nav && $Nav.declare('btf.lite'); window.$Nav && $Nav.declare('btf.full'); window.$Nav && $Nav.declare('btf.exists'); (window.AmazonUIPageJS ? AmazonUIPageJS : P).register('navCF'); </script> <script type="text/javascript"> window.$Nav && $Nav.when('$').run('CBIMarketplaceRedirectOverlayNavyaan', function($) { $.ajax({ type: 'POST', url: '/cross_border_interstitial_sp/render', data: JSON.stringify({ marketplaceId: 'A13V1IB3VIYZZH', localCountryCode: 'FR', customerId: null, sessionId: '258\x2D2477753\x2D5488862', deviceType: 'DESKTOP', referrer: '', url: '\x2Fpromotion\x2Fpsp\x2FAHSTCFJQ0HC6U\x2F', pageType: 'PromotionsDiscoveryHz', languageOfPreference: 'fr_FR', queryParams: {}, interstitialRequestType: 'CBI', weblabTreatmentMap: {"CROSS_BORDER_INTERSTITIAL_IE_966371":"C","CBI_355055":"C","NARX_INTERSTITIAL_NEW_CX_372291":"C","MWEB_CROSS_BORDER_INTERSTITIAL_IE_966379":"C","NARX_INTERSTITIAL_AUI_MIGRATION_446901":"C","TEST_ACS_CONFIGURATION_486322":"C","CROSS_BORDER_INTERSTITIAL_ACS_SHADOW_TESTING_486317":"C","INTERSTITIAL_PROTOTYPE_IP_ADDRESS_BR_598850":"C","NARX_INTERSTITIAL_LAMBDA_CLOUD_AUTH_880645":"C","CBI_ROBOT_MITIGATION_943387":"C","CBI_REDISPLAY_INTERSTITIAL_1008859":"C","INTERSTITIAL_GEOLOCATION_TRACKING_1139410":"C"} }), contentType: "application/json", dataType: "html", success: function(data) { if (data) { $('body').append(data); } } }); }); </script> <!-- NAVYAAN BTF END --> <!-- sp:end-feature:nav-btf --> <!-- sp:feature:host-btf --> <!-- BTF content --><!-- sp:end-feature:host-btf --> <!-- sp:feature:aui-preload --> <!-- sp:end-feature:aui-preload --> <!-- sp:feature:nav-footer --> <!-- NAVYAAN FOOTER START --> <!-- WITH MOZART --> <div id='rhf' class='copilot-secure-display' style='clear: both;' role='complementary' aria-label='Vos articles vus récemment et vos recommandations en vedette'> <div class='rhf-frame' style='display: none;'> <br> <div id='rhf-container'> <div class='rhf-loading-outer'> <table class='rhf-loading-middle'> <tr> <td class='rhf-loading-inner'> <img src='https://m.media-amazon.com/images/G/08/personalization/ybh/loading-4x-gray._CB485916902_.gif'> </td> </tr> </table> </div> <div id='rhf-context'> <script type='application/json'> { "rhfHandlerParams":{"currentPageType":"PromotionsDiscoveryHz","currentSubPageType":"","excludeAsin":"","fieldKeywords":"","k":"","keywords":"","search":"","auditEnabled":"","previewCampaigns":"","forceWidgets":"","searchAlias":""} } </script> </div> </div> <noscript> <div class='rhf-border'> <div class='rhf-header'> Vos articles vus récemment et vos recommandations en vedette </div> <div class='rhf-footer'> <div class='rvi-container'> <div class='ybh-edit'> <div class='ybh-edit-arrow'> › </div> <div class='ybh-edit-link'> <a href='/gp/history'> Afficher ou modifier votre historique de navigation </a> </div> </div> <span class='no-rvi-message'> Après avoir consulté un produit, regardez ici pour revenir simplement sur les pages qui vous intéressent. </span> </div> </div> </div> </noscript> <div id='rhf-error' style='display: none;'> <div class='rhf-border'> <div class='rhf-header'> Vos articles vus récemment et vos recommandations en vedette </div> <div class='rhf-footer'> <div class='rvi-container'> <div class='ybh-edit'> <div class='ybh-edit-arrow'> › </div> <div class='ybh-edit-link'> <a href='/gp/history'> Afficher ou modifier votre historique de navigation </a> </div> </div> <span class='no-rvi-message'> Après avoir consulté un produit, regardez ici pour revenir simplement sur les pages qui vous intéressent. </span> </div> </div> </div> </div> <br> </div> </div> <div class="navLeftFooter nav-sprite-v1" id="navFooter"> <a href="javascript:void(0)" id="navBackToTop" aria-label="Retour en haut" > <div class="navFooterBackToTop"> <span class="navFooterBackToTopText"> Retour en haut </span> </div> </a> <div class="navFooterVerticalColumn navAccessibility" role="presentation"> <div class="navFooterVerticalRow navAccessibility" style="display: table-row;"> <div class="navFooterLinkCol navAccessibility"> <div class="navFooterColHead" role="heading" aria-level="6">Pour mieux nous connaître</div> <ul> <li class="nav_first"> <a href="/gp/redirect.html?location=https%3A%2F%2Famazon.fr%2Fp%2Ffeature%2Fk6wxgxw88w7z78q%3Fref_%3Dfooter_cs_nav_bn_ab&source=nav_linktree&token=46F384329066BC949A5AC1169AE8B6C51D5ADE86" class="nav_a">À propos d'Amazon</a> </li> <li > <a href="/gp/browse.html?node=202589011&ref_=footer_gw_m_b_careers" class="nav_a">Carrières</a> </li> <li > <a href="https://durabilite.aboutamazon.fr/?utm_source=gateway&utm_medium=footer&ref_=susty_footer" class="nav_a">Durabilité</a> </li> <li class="nav_last "> <a href="https://www.amazon.science" class="nav_a">Amazon Science</a> </li> </ul> </div> <div class="navFooterColSpacerInner navAccessibility"></div> <div class="navFooterLinkCol navAccessibility"> <div class="navFooterColHead" role="heading" aria-level="6">Gagnez de l'argent</div> <ul> <li class="nav_first"> <a href="https://services.amazon.fr/sell.html?ld=AZFRSOAFooter&ref_=sdfr_soa" class="nav_a">Vendez sur Amazon</a> </li> <li > <a href="https://services.amazon.fr/services/vendre-aux-professionnels/avantages.html?ref=azfrb2brf&ld=AZFRB2BRetailFooter" class="nav_a">Vendez sur Amazon Business</a> </li> <li > <a href="https://services.amazon.fr/handmade.htm?ref=azfrsoafoo&ld=AZFRHNDFooter" class="nav_a">Vendez sur Amazon Handmade</a> </li> <li > <a href="https://sell.amazon.fr/proprietaires-de-marques/?ref_=AOFRABRLGNRFOOT&ld=AZFRBrandRegFooter#inscrivez-votre-marque" class="nav_a">Protégez et développez votre marque</a> </li> <li > <a href="https://partenaires.amazon.fr" class="nav_a">Devenez Partenaire</a> </li> <li > <a href="https://services.amazon.fr/services/expedie-par-amazon/outils-et-avantages.html/ref=az_fr_fba_ft?ld=AZFRFBAFooter" class="nav_a">Expédié par Amazon</a> </li> <li > <a href="https://supply.amazon.com/?ref_=footer_sta&lang=fr-FR" class="nav_a">Livrer à Amazon</a> </li> <li > <a href="https://advertising.amazon.fr/products-self-serve?ref_=ext_amzn_ftr" class="nav_a">Faites la promotion de vos produits</a> </li> <li > <a href="https://kdp.amazon.com/?language=fr_FR" class="nav_a">Auto-publiez votre livre</a> </li> <li > <a href="https://pay.amazon.com/fr?ld=AWREFRAPAFooter" class="nav_a">Amazon Pay</a> </li> <li class="nav_last nav_a_carat"> <span class="nav_a_carat" aria-hidden="true">›</span><a href="https://www.amazon.fr/b/?node=17751878031" class="nav_a">Voir plus : Gagner de l'argent avec nous</a> </li> </ul> </div> <div class="navFooterColSpacerInner navAccessibility"></div> <div class="navFooterLinkCol navAccessibility"> <div class="navFooterColHead" role="heading" aria-level="6">Moyens de paiement Amazon</div> <ul> <li class="nav_first"> <a href="/dp/B08HYJJ7TY?plattr=ACOMFO&ie=UTF-8&ref_=b2b_sow_sbcc_fr_acom_omp_na_footer_nca_202112" class="nav_a">Carte Amazon Business Amex</a> </li> <li > <a href="/gp/help/customer/display.html?nodeId=201267600&ref_=footer_payment" class="nav_a">Cartes de paiement</a> </li> <li > <a href="/gp/browse.html?node=15933160031&ref_=footer_4xcb" class="nav_a">Paiement en plusieurs fois</a> </li> <li > <a href="/gp/help/customer/display.html?nodeId=200233750&ref_=footer_tfx" class="nav_a">Convertisseur de devises Amazon</a> </li> <li > <a href="/gp/browse.html?node=2524127031&ref_=footer_giftcards" class="nav_a">Cartes cadeaux</a> </li> <li > <a href="/gp/gc/create?ref_=footer_reload" class="nav_a">Recharge en ligne</a> </li> <li class="nav_last "> <a href="/gp/browse.html?node=15420612031&ref_=footer_purchase_code" class="nav_a">Recharge en point de vente</a> </li> </ul> </div> <div class="navFooterColSpacerInner navAccessibility"></div> <div class="navFooterLinkCol navAccessibility"> <div class="navFooterColHead" role="heading" aria-level="6">Besoin d'aide ?</div> <ul> <li class="nav_first"> <a href="/gp/css/order-history?ref_=footer_hp_ss_comp_tmp" class="nav_a">Voir ou suivre vos commandes</a> </li> <li > <a href="/gp/help/customer/display.html?nodeId=548566&ref_=footer_shiprates" class="nav_a">Tarifs et options de livraison</a> </li> <li > <a href="/gp/subs/primeclub/signup/main.html?ref_=footer_prime" class="nav_a">Amazon Prime</a> </li> <li > <a href="/gp/css/returns/homepage.html?ref_=footer_hy_f_4" class="nav_a">Retours et remplacements</a> </li> <li > <a href="/gp/help/customer/display.html?nodeId=201843130&ref_=footer_gw_legalg" class="nav_a">Garantie légale</a> </li> <li > <a href="https://www.amazon.fr/your-product-safety-alerts?ref_=footer_bsx_ypsa" class="nav_a">Rappels et alertes de sécurité des produits</a> </li> <li > <a href="/gp/browse.html?node=22380237031&ref_=footer_disposal" class="nav_a">Recyclage (y compris les équipements électriques et électroniques)</a> </li> <li > <a href="/gp/help/customer/display.html?nodeId=GE2WLMMQBF4T5WMN&ref_=footer_info_mkpl" class="nav_a">Infos sur notre Marketplace</a> </li> <li > <a href="/gp/browse.html?node=541319031&ref_=footer_mobapp" class="nav_a">Application Amazon Mobile</a> </li> <li > <a href="/gp/help/customer/display.html?nodeId=559912&ref_=footer_gw_m_b_cs" class="nav_a">Service Client</a> </li> <li > <a href="/gp/help/customer/display.html?nodeId=GUUVBZ8WGVFP8R8X&ref_=footer_gw_access" class="nav_a">Accessibilité</a> </li> <li > <a href="/registries?ref_=nav_footer_registry_giftlist_desktop" class="nav_a">Liste de cadeaux</a> </li> <li class="nav_last "> <a href="/gp/help/customer/display.html?nodeId=TLtMJsPGBmJPpN3hvy&ref_=footer_report_illegal_content" class="nav_a">Signaler un contenu illégal</a> </li> </ul> </div> </div> </div> <div class="nav-footer-line"></div> <div class="navFooterLine navFooterLinkLine navFooterPadItemLine"> <span> <div class="navFooterLine navFooterLogoLine"> <a aria-label="Amazon France Home" lang="en" href="/?_encoding=UTF8&ref_=footer_logo"> <div class="nav-logo-base nav-sprite"></div> </a> </div> </span> <span class="icp-container-desktop"><div class="navFooterLine"> <style type="text/css"> #icp-touch-link-language { display: none; } </style> <a href="/customer-preferences/edit?ie=UTF8&preferencesReturnUrl=%2F&ref_=footer_lang" role="button" aria-haspopup="true" aria-label="Choisissez une langue pour vos achats. La sélection actuelle est Français. " aria-owns="nav-flyout-icp-footer-flyout" class="icp-button" id="icp-touch-link-language"> <div class="icp-nav-globe-img-2 icp-button-globe-2"></div><span class="icp-color-base">Français</span><span class="nav-arrow icp-up-down-arrow"></span> </a> <style type="text/css"> #icp-touch-link-country { display: none; } </style> <a href="/customer-preferences/country?ie=UTF8&preferencesReturnUrl=%2F&ref_=footer_icp_cp" role="button" aria-label="Choisissez un pays/région pour vos achats. La sélection actuelle est France." class="icp-button" id="icp-touch-link-country"> <span class="icp-flag-3 icp-flag-3-fr"></span><span class="icp-color-base">France</span> </a> </div></span> </div> <div class="navFooterLine navFooterLinkLine navFooterDescLine" aria-label="Plus d'informations sur Amazon"> <div class="navFooterMoreOnAmazon navFooterMoreOnAmazonWrapper" aria-label="Plus d'informations sur Amazon"> <ul> <li class="navFooterDescItem"><a href=https://music.amazon.fr?ref=dm_aff_amz_fr class="nav_a"><h5 class="navFooterDescItem_heading">Amazon Music</h5><span class="navFooterDescText">Écoutez des millions<br>de chansons</span></a></li><li class="navFooterDescSpacer" aria-hidden="true" style="width: 4%"></li> <li class="navFooterDescItem"><a href=https://www.abebooks.fr class="nav_a"><h5 class="navFooterDescItem_heading">AbeBooks</h5><span class="navFooterDescText">Livres, art<br>& articles de collection</span></a></li><li class="navFooterDescSpacer" aria-hidden="true" style="width: 4%"></li> <li class="navFooterDescItem"><a href=https://aws.amazon.com/fr/what-is-cloud-computing/?sc_channel=EL&sc_campaign=FR_amazonfooter class="nav_a"><h5 class="navFooterDescItem_heading">Amazon Web Services</h5><span class="navFooterDescText">Services de Cloud<br>Computing Flexibles</span></a></li><li class="navFooterDescSpacer" aria-hidden="true" style="width: 4%"></li> <li class="navFooterDescItem"><a href=https://www.audible.fr class="nav_a"><h5 class="navFooterDescItem_heading">Audible</h5><span class="navFooterDescText">Livres audio<br>télécharger</span></a></li><li class="navFooterDescSpacer" aria-hidden="true" style="width: 4%"></li> <li class="navFooterDescItem"><a href=https://kdp.amazon.com/?language=fr_FR class="nav_a"><h5 class="navFooterDescItem_heading">Kindle Direct Publishing</h5><span class="navFooterDescText">Auto-publiez facilement<br>vos livres au format numérique</span></a></li></ul> <ul> <li class="navFooterDescItem"><a href=/gp/browse.html?node=3581943031&ref_=footer_wrhsdls class="nav_a"><h5 class="navFooterDescItem_heading">Amazon Seconde main</h5><span class="navFooterDescText">Produits d'occasion ou emballage ouvert</span></a></li><li class="navFooterDescSpacer" aria-hidden="true" style="width: 4%"></li> <li class="navFooterDescItem"><a href=https://www.shopbop.com/fr/welcome class="nav_a"><h5 class="navFooterDescItem_heading">Shopbop</h5><span class="navFooterDescText">Vêtements de Marque<br>& Mode</span></a></li><li class="navFooterDescSpacer" aria-hidden="true" style="width: 4%"></li> <li class="navFooterDescItem"><a href=https://advertising.amazon.fr/?ref=footer_advtsing_fr class="nav_a"><h5 class="navFooterDescItem_heading">Amazon Advertising</h5><span class="navFooterDescText"> Ciblez, attirez et <br>fidélisez vos clients </span></a></li><li class="navFooterDescSpacer" aria-hidden="true" style="width: 4%"></li> <li class="navFooterDescItem"><a href=/gp/browse.html?node=14310146031&ref_=nav_footer_business class="nav_a"><h5 class="navFooterDescItem_heading">Amazon Business</h5><span class="navFooterDescText">Paiement 30 jours. Hors TVA.<br>Pour les professionnels.</span></a></li><li class="navFooterDescSpacer" aria-hidden="true" style="width: 4%"></li> <li class="navFooterDescItem" aria-hidden="true"> </li> </ul> </div> </div> <div class="navFooterLine navFooterLinkLine navFooterPadItemLine navFooterCopyright"> <ul><li class="nav_first"><a href="/gp/help/customer/display.html?nodeId=201909000&ref_=footer_cou" id="" class="nav_a">Conditions générales de vente</a> </li><li ><a href="/gp/help/customer/display.html?nodeId=201909010&ref_=footer_privacy" id="" class="nav_a">Vos informations personnelles</a> </li><li ><a href="/gp/help/customer/display.html?nodeId=201890250&ref_=footer_cookies_notice" id="" class="nav_a">Cookies</a> </li><li class="nav_last"><a href="/gp/help/customer/display.html?nodeId=201909150&ref_=footer_Interest_Based_Ads_Notice" id="" class="nav_a">Annonces basées sur vos centres d’intérêt</a> </li></ul><span>© 1996-2025, Amazon.com Inc. ou ses affiliés</span> </div> </div> <div id="sis_pixel_r2" aria-hidden="true" style="height:1px; position: absolute; left: -1000000px; top: -1000000px;"></div><script>(function(a,b){a.attachEvent?a.attachEvent("onload",b):a.addEventListener&&a.addEventListener("load",b,!1)})(window,function(){setTimeout(function(){var el=document.getElementById("sis_pixel_r2");el&&(el.innerHTML='<iframe id="DAsis" src="//aax-eu.amazon-adsystem.com/s/iu3?d=amazon.fr&slot=navFooter&old_oo=0&ts=1739753143612&s=AcQ5PZA3Z4J_zcQElMqi1wqLyYcoIR0nauztQUH1rEls&gdpr_consent=&gdpr_consent_avl=&cb=1739753143612" width="1" height="1" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" tabindex="-1" sandbox></iframe>');var event=new Event("SISPixelCardLoaded");document.dispatchEvent(event);},300)});</script> <!-- NAVYAAN FOOTER END --> <!-- sp:end-feature:nav-footer --> <!-- sp:feature:configured-sitewide-assets --> <script> (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('afterLoad').execute(function() { (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/41enQvbo0+L.js?AUIClients/AmazonLightsaberPageAssets#1061544-T1'); }); </script> <script> (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('afterLoad').execute(function() { (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/11RhjigBo3L.js?AUIClients/WebFlowIngressJs'); }); </script> <!-- sp:end-feature:configured-sitewide-assets --> <!-- sp:feature:customer-behavior-js --> <script type="text/javascript">if (window.ue && ue.tag) { ue.tag('FWCIMEnabled'); }</script> <script> (window.AmazonUIPageJS ? AmazonUIPageJS : P).when('afterLoad').execute(function() { (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/71EOqyQDjOL.js?AUIClients/FWCIMAssets'); }); </script> <!-- sp:end-feature:customer-behavior-js --> <!-- sp:feature:cookie-consent-js-body --> <script> (window.AmazonUIPageJS ? AmazonUIPageJS : P).load.js('https://m.media-amazon.com/images/I/11O92i0Q4lL.js?AUIClients/PRIVCONAssets-body'); </script> <!-- sp:end-feature:cookie-consent-js-body --> <!-- sp:feature:csm:body-close --> <div id='be' style="display:none;visibility:hidden;"><form name='ue_backdetect' action="get"><input type="hidden" name='ue_back' value='1' /></form> <script type="text/javascript"> window.ue_ibe = (window.ue_ibe || 0) + 1; if (window.ue_ibe === 1) { (function(e,c){function h(b,a){f.push([b,a])}function g(b,a){if(b){var c=e.head||e.getElementsByTagName("head")[0]||e.documentElement,d=e.createElement("script");d.async="async";d.src=b;d.setAttribute("crossorigin","anonymous");a&&a.onerror&&(d.onerror=a.onerror);a&&a.onload&&(d.onload=a.onload);c.insertBefore(d,c.firstChild)}}function k(){ue.uels=g;for(var b=0;b<f.length;b++){var a=f[b];g(a[0],a[1])}ue.deffered=1}var f=[];c.ue&&(ue.uels=h,c.ue.attach&&c.ue.attach("load",k))})(document,window); if (window.ue && window.ue.uels) { var cel_widgets = [ { "c":"celwidget" },{ "s":"#nav-swmslot > div", "id_gen":function(elem, index){ return 'nav_sitewide_msg'; } } ]; ue.uels("https://images-eu.ssl-images-amazon.com/images/I/31A20iwacNL.js"); } var ue_mbl=ue_csm.ue.exec(function(h,a){function s(c){b=c||{};a.AMZNPerformance=b;b.transition=b.transition||{};b.timing=b.timing||{};if(a.csa){var d;b.timing.transitionStart&&(d=b.timing.transitionStart);b.timing.processStart&&(d=b.timing.processStart);d&&(csa("PageTiming")("mark","nativeTransitionStart",d),csa("PageTiming")("mark","transitionStart",d))}h.ue.exec(t,"csm-android-check")()&&b.tags instanceof Array&&(c=-1!=b.tags.indexOf("usesAppStartTime")||b.transition.type?!b.transition.type&&-1< b.tags.indexOf("usesAppStartTime")?"warm-start":void 0:"view-transition",c&&(b.transition.type=c));n=null;"reload"===e._nt&&h.ue_orct||"intrapage-transition"===e._nt?u(b):"undefined"===typeof e._nt&&f&&f.timing&&f.timing.navigationStart&&a.history&&"function"===typeof a.History&&"object"===typeof a.history&&a.history.length&&1!=a.history.length&&(b.timing.transitionStart=f.timing.navigationStart);p&&e.ssw(q,""+(b.timing.transitionStart||n||""));c=b.transition;d=e._nt?e._nt:void 0;c.subType=d;a.ue&& a.ue.tag&&a.ue.tag("has-AMZNPerformance");e.isl&&a.uex&&a.uex("at","csm-timing");v()}function w(c){a.ue&&a.ue.count&&a.ue.count("csm-cordova-plugin-failed",1)}function t(){return a.cordova&&a.cordova.platformId&&"android"==a.cordova.platformId}function u(){if(p){var c=e.ssw(q),a=function(){},x=e.count||a,a=e.tag||a,k=b.timing.transitionStart,g=c&&!c.e&&c.val;n=c=g?+c.val:null;k&&g&&k>c?(x("csm.jumpStart.mtsDiff",k-c||0),a("csm-rld-mts-gt")):k&&g?a("csm-rld-mts-leq"):g?k||a("csm-rld-mts-no-new"):a("csm-rld-mts-no-old")}f&& f.timing&&f.timing.navigationStart?b.timing.transitionStart=f.timing.navigationStart:delete b.timing.transitionStart}function v(){try{a.P.register("AMZNPerformance",function(){return b})}catch(c){}}function r(){if(!b)return"";ue_mbl.cnt=null;var c=b.timing,d=b.transition,d=["mts",l(c.transitionStart),"mps",l(c.processStart),"mtt",d.type,"mtst",d.subType,"mtlt",d.launchType];a.ue&&a.ue.tag&&(c.fr_ovr&&a.ue.tag("fr_ovr"),c.fcp_ovr&&a.ue.tag("fcp_ovr"),d.push("fr_ovr",l(c.fr_ovr),"fcp_ovr",l(c.fcp_ovr))); for(var c="",e=0;e<d.length;e+=2){var f=d[e],g=d[e+1];"undefined"!==typeof g&&(c+="&"+f+"="+g)}return c}function l(a){if("undefined"!==typeof a&&"undefined"!==typeof m)return a-m}function y(a,d){b&&(m=d,b.timing.transitionStart=a,b.transition.type="view-transition",b.transition.subType="ajax-transition",b.transition.launchType="normal",ue_mbl.cnt=r)}var e=h.ue||{},m=h.ue_t0,q="csm-last-mts",p=1===h.ue_sswmts,n,f=a.performance,b;if(a.P&&a.P.when&&a.P.register)return 1===a.ue_fnt&&(m=a.aPageStart|| h.ue_t0),a.P.when("CSMPlugin").execute(function(a){a.buildAMZNPerformance&&a.buildAMZNPerformance({successCallback:s,failCallback:w})}),{cnt:r,ajax:y}},"mobile-timing")(ue_csm,ue_csm.window); (function(d){d._uess=function(){var a="";screen&&screen.width&&screen.height&&(a+="&sw="+screen.width+"&sh="+screen.height);var b=function(a){var b=document.documentElement["client"+a];return"CSS1Compat"===document.compatMode&&b||document.body["client"+a]||b},c=b("Width"),b=b("Height");c&&b&&(a+="&vw="+c+"&vh="+b);return a}})(ue_csm); (function(a){function d(a){c&&c("log",a)}var b=document.ue_backdetect,c=a.csa&&a.csa("Errors",{producerId:"csa",logOptions:{ent:"all"}});a.ue_err.buffer&&c&&(a.ue_err.buffer.forEach(d),a.ue_err.buffer.push=d);b&&b.ue_back&&a.ue&&(a.ue.bfini=b.ue_back.value);a.uet&&a.uet("be");a.onLdEnd&&(window.addEventListener?window.addEventListener("load",a.onLdEnd,!1):window.attachEvent&&window.attachEvent("onload",a.onLdEnd));a.ueh&&a.ueh(0,window,"load",a.onLd,1);a.ue&&a.ue.tag&&(a.ue_furl?(b=a.ue_furl.replace(/\./g, "-"),a.ue.tag(b)):a.ue.tag("nofls"))})(ue_csm); (function(g,h){function d(a,d){var b={};if(!e||!f)try{var c=h.sessionStorage;c?a&&("undefined"!==typeof d?c.setItem(a,d):b.val=c.getItem(a)):f=1}catch(g){e=1}e&&(b.e=1);return b}var b=g.ue||{},a="",f,e,c,a=d("csmtid");f?a="NA":a.e?a="ET":(a=a.val,a||(a=b.oid||"NI",d("csmtid",a)),c=d(b.oid),c.e||(c.val=c.val||0,d(b.oid,c.val+1)),b.ssw=d);b.tabid=a})(ue_csm,ue_csm.window); (function(a){var e={rc:1,hob:1,hoe:1,ntd:1,rd_:1,_rd:1};"function"===typeof window.addEventListener&&window.addEventListener("pageshow",function(b){if(b&&b.persisted&&(b=+new Date,b={clickTime:b-1,pageVisible:b},"object"===typeof b&&"object"===typeof a.ue.markers&&"object"===typeof a.ue&&"function"===typeof a.uex)){if("function"===typeof a.uet){for(var c in a.ue.markers)!a.ue.markers.hasOwnProperty(c)||c in e||a.uet(c,void 0,void 0,b.pageVisible);a.uet("tc",void 0,void 0,b.clickTime);a.uet("ty",void 0, void 0,b.clickTime+2)}(c=document.ue_backdetect)&&c.ue_back&&(a.ue.bfini=+c.ue_back.value+1);a.ue.isBFonMshop=!0;a.ue.isBFCache=!0;a.ue.t0=b.clickTime;a.ue.viz=["visible:0"];"function"===typeof a.ue.tag&&(a.ue.tag("cacheSourceMemory"),a.ue.tag("history-navigation-page-cache"));c=ue_csm.csa&&ue_csm.csa("SPA");var d=ue_csm.csa&&ue_csm.csa("PageTiming");c&&d&&(c("newPage",{transitionType:"history-navigation-page-cache"},{keepPageAttributes:!0}),d("mark","transitionStart",b.clickTime));"function"===typeof a.uex&& a.uex("ld",void 0,void 0,a.ue.t.ld);delete a.ue.isBFonMshop;delete a.ue.isBFCache}})})(ue_csm); ue_csm.ue.exec(function(e,f){var a=e.ue||{},b=a._wlo,d;if(a.ssw){d=a.ssw("CSM_previousURL").val;var c=f.location,b=b?b:c&&c.href?c.href.split("#")[0]:void 0;c=(b||"")===a.ssw("CSM_previousURL").val;!c&&b&&a.ssw("CSM_previousURL",b);d=c?"reload":d?"intrapage-transition":"first-view"}else d="unknown";a._nt=d},"NavTypeModule")(ue_csm,window); ue_csm.ue.exec(function(c,a){function g(a){a.run(function(e){d.tag("csm-feature-"+a.name+":"+e);d.isl&&c.uex("at")})}if(a.addEventListener)for(var d=c.ue||{},f=[{name:"touch-enabled",run:function(b){var e=function(){a.removeEventListener("touchstart",c,!0);a.removeEventListener("mousemove",d,!0)},c=function(){b("true");e()},d=function(){b("false");e()};a.addEventListener("touchstart",c,!0);a.addEventListener("mousemove",d,!0)}}],b=0;b<f.length;b++)g(f[b])},"csm-features")(ue_csm,window); (function(a,e){function d(a){b&&b("recordCounter",a.c,a.v)}var c=e.images,b=a.csa&&a.csa("Metrics",{producerId:"csa"});c&&c.length&&a.ue.count("totalImages",c.length);a.ue.cv.buffer&&b&&(a.ue.cv.buffer.forEach(d),a.ue.cv.buffer.push=d)})(ue_csm,document); (function(b){function c(){var d=[];a.log&&a.log.isStub&&a.log.replay(function(a){e(d,a)});a.clog&&a.clog.isStub&&a.clog.replay(function(a){e(d,a)});d.length&&(a._flhs+=1,n(d),p(d))}function g(){a.log&&a.log.isStub&&(a.onflush&&a.onflush.replay&&a.onflush.replay(function(a){a[0]()}),a.onunload&&a.onunload.replay&&a.onunload.replay(function(a){a[0]()}),c())}function e(d,b){var c=b[1],f=b[0],e={};a._lpn[c]=(a._lpn[c]||0)+1;e[c]=f;d.push(e)}function n(b){q&&(a._lpn.csm=(a._lpn.csm||0)+1,b.push({csm:{k:"chk", f:a._flhs,l:a._lpn,s:"inln"}}))}function p(a){if(h)a=k(a),b.navigator.sendBeacon(l,a);else{a=k(a);var c=new b[f];c.open("POST",l,!0);c.setRequestHeader&&c.setRequestHeader("Content-type","text/plain");c.send(a)}}function k(a){return JSON.stringify({rid:b.ue_id,sid:b.ue_sid,mid:b.ue_mid,mkt:b.ue_mkt,sn:b.ue_sn,reqs:a})}var f="XMLHttpRequest",q=1===b.ue_ddq,a=b.ue,r=b[f]&&"withCredentials"in new b[f],h=b.navigator&&b.navigator.sendBeacon,l="//"+b.ue_furl+"/1/batch/1/OE/",m=b.ue_fci_ft||5E3;a&&(r||h)&& (a._flhs=a._flhs||0,a._lpn=a._lpn||{},a.attach&&(a.attach("beforeunload",a.exec(g,"fcli-bfu")),a.attach("pagehide",a.exec(g,"fcli-ph"))),m&&b.setTimeout(a.exec(c,"fcli-t"),m),a._ffci=a.exec(c))})(window); (function(k,c){function l(a,b){return a.filter(function(a){return a.initiatorType==b})}function f(a,c){if(b.t[a]){var g=b.t[a]-b._t0,e=c.filter(function(a){return 0!==a.responseEnd&&m(a)<g}),f=l(e,"script"),h=l(e,"link"),k=l(e,"img"),n=e.map(function(a){return a.name.split("/")[2]}).filter(function(a,b,c){return a&&c.lastIndexOf(a)==b}),q=e.filter(function(a){return a.duration<p}),s=g-Math.max.apply(null,e.map(m))<r|0;"af"==a&&(b._afjs=f.length);return a+":"+[e[d],f[d],h[d],k[d],n[d],q[d],s].join("-")}} function m(a){return a.responseEnd-(b._t0-c.timing.navigationStart)}function n(){var a=c[h]("resource"),d=f("cf",a),g=f("af",a),a=f("ld",a);delete b._rt;b._ld=b.t.ld-b._t0;b._art&&b._art();return[d,g,a].join("_")}var p=20,r=50,d="length",b=k.ue,h="getEntriesByType";b._rre=m;b._rt=c&&c.timing&&c[h]&&n})(ue_csm,window.performance); (function(c,d){var b=c.ue,a=d.navigator;b&&b.tag&&a&&(a=a.connection||a.mozConnection||a.webkitConnection)&&a.type&&b.tag("netInfo:"+a.type)})(ue_csm,window); (function(c,d){function h(a,b){for(var c=[],d=0;d<a.length;d++){var e=a[d],f=b.encode(e);if(e[k]){var g=b.metaSep,e=e[k],l=b.metaPairSep,h=[],m=void 0;for(m in e)e.hasOwnProperty(m)&&h.push(m+"="+e[m]);e=h.join(l);f+=g+e}c.push(f)}return c.join(b.resourceSep)}function s(a){var b=a[k]=a[k]||{};b[t]||(b[t]=c.ue_mid);b[u]||(b[u]=c.ue_sid);b[f]||(b[f]=c.ue_id);b.csm=1;a="//"+c.ue_furl+"/1/"+a[v]+"/1/OP/"+a[w]+"/"+a[x]+"/"+h([a],y);if(n)try{n.call(d[p],a)}catch(g){c.ue.sbf=1,(new Image).src=a}else(new Image).src= a}function q(){g&&g.isStub&&g.replay(function(a,b,c){a=a[0];b=a[k]=a[k]||{};b[f]=b[f]||c;s(a)});l.impression=s;g=null}if(!(1<c.ueinit)){var k="metadata",x="impressionType",v="foresterChannel",w="programGroup",t="marketplaceId",u="session",f="requestId",p="navigator",l=c.ue||{},n=d[p]&&d[p].sendBeacon,r=function(a,b,c,d){return{encode:d,resourceSep:a,metaSep:b,metaPairSep:c}},y=r("","?","&",function(a){return h(a.impressionData,z)}),z=r("/",":",",",function(a){return a.featureName+":"+h(a.resources, A)}),A=r(",","@","|",function(a){return a.id}),g=l.impression;n?q():(l.attach("load",q),l.attach("beforeunload",q));try{d.P&&d.P.register&&d.P.register("impression-client",function(){})}catch(B){c.ueLogError(B,{logLevel:"WARN"})}}})(ue_csm,window); var ue_pty = "PromotionsDiscoveryHz"; var ue_adb = 4; var ue_adb_rtla = 1; ue_csm.ue.exec(function(y,a){function t(){if(d&&f){var a;a:{try{a=d.getItem(g);break a}catch(c){}a=void 0}if(a)return b=a,!0}return!1}function u(){if(a.fetch)fetch(m).then(function(a){if(!a.ok)throw Error(a.statusText);return a.text?a.text():null}).then(function(b){b?(-1<b.indexOf("window.ue_adb_chk = 1")&&(a.ue_adb_chk=1),n()):h()})["catch"](h);else e.uels(m,{onerror:h,onload:n})}function h(){b=k;l();if(f)try{d.setItem(g,b)}catch(a){}}function n(){b=1===a.ue_adb_chk?p:k;l();if(f)try{d.setItem(g, b)}catch(c){}}function q(){a.ue_adb_rtla&&c&&0<c.ec&&!1===r&&(c.elh=null,ueLogError({m:"Hit Info",fromOnError:1},{logLevel:"INFO",adb:b}),r=!0)}function l(){e.tag(b);e.isl&&a.uex&&uex("at",b);s&&s.updateCsmHit("adb",b);c&&0<c.ec?q():a.ue_adb_rtla&&c&&(c.elh=q)}function v(){return b}if(a.ue_adb){a.ue_fadb=a.ue_fadb||10;var e=a.ue,k="adblk_yes",p="adblk_no",m="https://m.media-amazon.com/images/G/01/csm/showads.v2.js?bannerid=_ad-sidebar",b="adblk_unk",d;a:{try{d=a.localStorage;break a}catch(z){}d=void 0}var g= "csm:adb",c=a.ue_err,s=e.cookie,f=void 0!==a.localStorage,w=Math.random()>1-1/a.ue_fadb,r=!1,x=t();w||!x?u():l();a.ue_isAdb=v;a.ue_isAdb.unk="adblk_unk";a.ue_isAdb.no=p;a.ue_isAdb.yes=k}},"adb")(document,window); (function(c,l,m){function h(a){if(a)try{if(a.id)return"//*[@id='"+a.id+"']";var b,d=1,e;for(e=a.previousSibling;e;e=e.previousSibling)e.nodeName===a.nodeName&&(d+=1);b=d;var c=a.nodeName;1!==b&&(c+="["+b+"]");a.parentNode&&(c=h(a.parentNode)+"/"+c);return c}catch(f){return"DETACHED"}}function f(a){if(a&&a.getAttribute)return a.getAttribute(k)?a.getAttribute(k):f(a.parentElement)}var k="data-cel-widget",g=!1,d=[];(c.ue||{}).isBF=function(){try{var a=JSON.parse(localStorage["csm-bf"]||"[]"),b=0<=a.indexOf(c.ue_id); a.unshift(c.ue_id);a=a.slice(0,20);localStorage["csm-bf"]=JSON.stringify(a);return b}catch(d){return!1}}();c.ue_utils={getXPath:h,getFirstAscendingWidget:function(a,b){c.ue_cel&&c.ue_fem?!0===g?b(f(a)):d.push({element:a,callback:b}):b()},notifyWidgetsLabeled:function(){if(!1===g){g=!0;for(var a=f,b=0;b<d.length;b++)if(d[b].hasOwnProperty("callback")&&d[b].hasOwnProperty("element")){var c=d[b].callback,e=d[b].element;"function"===typeof c&&"function"===typeof a&&c(a(e))}d=null}},extractStringValue:function(a){if("string"=== typeof a)return a}}})(ue_csm,window,document); (function(a){a.ue_cel||(a.ue_cel=function(){function m(a,r){r?r.r=u:r={r:u,c:1};D||(!ue_csm.ue_sclog&&r.clog&&b.clog?b.clog(a,r.ns||s,r):r.glog&&b.glog?b.glog(a,r.ns||s,r):b.log(a,r.ns||s,r))}function n(a,b){"function"===typeof p&&p("log",{schemaId:t+".RdCSI.1",eventType:a,clientData:b},{ent:{page:["requestId"]}})}function c(){var a=q.length;if(0<a){for(var r=[],c=0;c<a;c++){var d=q[c].api;d.ready()?(d.on({ts:b.d,ns:s}),g.push(q[c]),m({k:"mso",n:q[c].name,t:b.d()})):r.push(q[c])}q=r}}function f(){if(!f.executed){for(var a= 0;a<g.length;a++)g[a].api.off&&g[a].api.off({ts:b.d,ns:s});B();m({k:"eod",t0:b.t0,t:b.d()},{c:1,il:1});f.executed=1;for(a=0;a<g.length;a++)q.push(g[a]);g=[];d(v);d(A)}}function B(a){m({k:"hrt",t:b.d()},{c:1,il:1,n:a});y=Math.min(w,e*y);z()}function z(){d(A);A=k(function(){B(!0)},y)}function x(){f.executed||B()}var l=a.window,k=l.setTimeout,d=l.clearTimeout,e=1.5,w=l.ue_cel_max_hrt||3E4,t="robotdetection",q=[],g=[],s=a.ue_cel_ns||"cel",v,A,b=a.ue,F=a.uet,C=a.uex,u=b.rid,D=a.ue_dsbl_cel,h=l.csa,p,y= l.ue_cel_hrt_int||3E3,E=l.requestAnimationFrame||function(a){a()};h&&(p=h("Events",{producerId:t}));if(b.isBF)m({k:"bft",t:b.d()});else{"function"==typeof F&&F("bb","csmCELLSframework",{wb:1});k(c,0);b.onunload(f);if(b.onflush)b.onflush(x);v=k(f,6E5);z();"function"==typeof C&&C("ld","csmCELLSframework",{wb:1});return{registerModule:function(a,r){q.push({name:a,api:r});m({k:"mrg",n:a,t:b.d()});c()},reset:function(a){m({k:"rst",t0:b.t0,t:b.d()});q=q.concat(g);g=[];for(var r=q.length,e=0;e<r;e++)q[e].api.off(), q[e].api.reset();u=a||b.rid;c();d(v);v=k(f,6E5);f.executed=0},timeout:function(a,b){return k(function(){E(function(){f.executed||a()})},b)},log:m,csaEventLog:n,off:f}}}())})(ue_csm); (function(a){a.ue_pdm||!a.ue_cel||a.ue.isBF||(a.ue_pdm=function(){function m(){try{var b=d.screen;if(b){var c={w:b.width,aw:b.availWidth,h:b.height,ah:b.availHeight,cd:b.colorDepth,pd:b.pixelDepth};g&&g.w===c.w&&g.h===c.h&&g.aw===c.aw&&g.ah===c.ah&&g.pd===c.pd&&g.cd===c.cd||(g=c,g.t=t(),g.k="sci",F(g),D&&h("sci",{h:(g.h||"0")+""}))}var k=e.body||{},f=e.documentElement||{},n={w:Math.max(k.scrollWidth||0,k.offsetWidth||0,f.clientWidth||0,f.scrollWidth||0,f.offsetWidth||0),h:Math.max(k.scrollHeight|| 0,k.offsetHeight||0,f.clientHeight||0,f.scrollHeight||0,f.offsetHeight||0)};s&&s.w===n.w&&s.h===n.h||(s=n,s.t=t(),s.k="doi",F(s));w=a.ue_cel.timeout(m,q);A+=1}catch(p){d.ueLogError&&ueLogError(p,{attribution:"csm-cel-page-module",logLevel:"WARN"})}}function n(){x("ebl","default",!1)}function c(){x("efo","default",!0)}function f(){x("ebl","app",!1)}function B(){x("efo","app",!0)}function z(){d.setTimeout(function(){e[E]?x("ebl","pageviz",!1):x("efo","pageviz",!0)},0)}function x(a,b,c){v!==c&&(F({k:a, t:t(),s:b},{ff:!0===c?0:1}),D&&h(a,{t:(t()||"0")+"",s:b}));v=c}function l(){b.attach&&(p&&b.attach(y,z,e),G&&P.when("mash").execute(function(a){a&&a.addEventListener&&(a.addEventListener("appPause",f),a.addEventListener("appResume",B))}),b.attach("blur",n,d),b.attach("focus",c,d))}function k(){b.detach&&(p&&b.detach(y,z,e),G&&P.when("mash").execute(function(a){a&&a.removeEventListener&&(a.removeEventListener("appPause",f),a.removeEventListener("appResume",B))}),b.detach("blur",n,d),b.detach("focus", c,d))}var d=a.window,e=a.document,w,t,q,g,s,v=null,A=0,b=a.ue,F=a.ue_cel.log,C=a.uet,u=a.uex,D=d.csa,h=a.ue_cel.csaEventLog,p=!!b.pageViz,y=p&&b.pageViz.event,E=p&&b.pageViz.propHid,G=d.P&&d.P.when;"function"==typeof C&&C("bb","csmCELLSpdm",{wb:1});return{on:function(a){q=a.timespan||500;t=a.ts;l();a=d.location;F({k:"pmd",o:a.origin,p:a.pathname,t:t()});m();"function"==typeof u&&u("ld","csmCELLSpdm",{wb:1})},off:function(a){clearTimeout(w);k();b.count&&b.count("cel.PDM.TotalExecutions",A)},ready:function(){return e.body&& a.ue_cel&&a.ue_cel.log},reset:function(){g=s=null}}}(),a.ue_cel&&a.ue_cel.registerModule("page module",a.ue_pdm))})(ue_csm); (function(a){a.ue_vpm||!a.ue_cel||a.ue.isBF||(a.ue_vpm=function(){function m(){var a=z(),b={w:k.innerWidth,h:k.innerHeight,x:k.pageXOffset,y:k.pageYOffset};c&&c.w==b.w&&c.h==b.h&&c.x==b.x&&c.y==b.y||(b.t=a,b.k="vpi",c=b,e(c,{clog:1}),s&&v("vpi",{t:(c.t||"0")+"",h:(c.h||"0")+"",y:(c.y||"0")+"",w:(c.w||"0")+"",x:(c.x||"0")+""}));f=0;x=z()-a;l+=1}function n(){f||(f=a.ue_cel.timeout(m,B))}var c,f,B,z,x=0,l=0,k=a.window,d=a.ue,e=a.ue_cel.log,w=a.uet,t=a.uex,q=d.attach,g=d.detach,s=k.csa,v=a.ue_cel.csaEventLog; "function"==typeof w&&w("bb","csmCELLSvpm",{wb:1});return{on:function(a){z=a.ts;B=a.timespan||100;m();q&&(q("scroll",n),q("resize",n));"function"==typeof t&&t("ld","csmCELLSvpm",{wb:1})},off:function(a){clearTimeout(f);g&&(g("scroll",n),g("resize",n));d.count&&(d.count("cel.VPI.TotalExecutions",l),d.count("cel.VPI.TotalExecutionTime",x),d.count("cel.VPI.AverageExecutionTime",x/l))},ready:function(){return a.ue_cel&&a.ue_cel.log},reset:function(){c=void 0},getVpi:function(){return c}}}(),a.ue_cel&& a.ue_cel.registerModule("viewport module",a.ue_vpm))})(ue_csm); (function(a){if(!a.ue_fem&&a.ue_cel&&a.ue_utils){var m=a.ue||{},n=a.window,c=n.document;!m.isBF&&!a.ue_fem&&c.querySelector&&n.getComputedStyle&&[].forEach&&(a.ue_fem=function(){function f(a,b){return a>b?3>a-b:3>b-a}function B(a,b){var c=n.pageXOffset,d=n.pageYOffset,k;a:{try{if(a){var e=a.getBoundingClientRect(),g,m=0===a.offsetWidth&&0===a.offsetHeight;c:{for(var h=a.parentNode,p=e.left||0,w=e.top||0,q=e.width||0,s=e.height||0;h&&h!==document.body;){var l;d:{try{var r=void 0;if(h)var t=h.getBoundingClientRect(), r={x:t.left||0,y:t.top||0,w:t.width||0,h:t.height||0};else r=void 0;l=r;break d}catch(I){}l=void 0}var u=window.getComputedStyle(h),v="hidden"===u.overflow,x=v||"hidden"===u.overflowX,y=v||"hidden"===u.overflowY,z=w+s-1<l.y+1||w+1>l.y+l.h-1;if((p+q-1<l.x+1||p+1>l.x+l.w-1)&&x||z&&y){g=!0;break c}h=h.parentNode}g=!1}k={x:e.left+c||0,y:e.top+d||0,w:e.width||0,h:e.height||0,d:(m||g)|0}}else k=void 0;break a}catch(J){}k=void 0}if(k&&!a.cel_b)a.cel_b=k,D({n:a.getAttribute(A),w:a.cel_b.w,h:a.cel_b.h,d:a.cel_b.d, x:a.cel_b.x,y:a.cel_b.y,t:b,k:"ewi",cl:a.className},{clog:1});else{if(c=k)c=a.cel_b,d=k,c=d.d===c.d&&1===d.d?!1:!(f(c.x,d.x)&&f(c.y,d.y)&&f(c.w,d.w)&&f(c.h,d.h)&&c.d===d.d);c&&(a.cel_b=k,D({n:a.getAttribute(A),w:a.cel_b.w,h:a.cel_b.h,d:a.cel_b.d,x:a.cel_b.x,y:a.cel_b.y,t:b,k:"ewi"},{clog:1}))}}function z(d,e){var f;f=d.c?c.getElementsByClassName(d.c):d.id?[c.getElementById(d.id)]:c.querySelectorAll(d.s);d.w=[];for(var g=0;g<f.length;g++){var h=f[g];if(h){if(!h.getAttribute(A)){var l=h.getAttribute("cel_widget_id")|| (d.id_gen||u)(h,g)||h.id;h.setAttribute(A,l)}d.w.push(h);k(Q,h,e)}}!1===C&&(F++,F===b.length&&(C=!0,a.ue_utils.notifyWidgetsLabeled()))}function x(a,b){h.contains(a)||D({n:a.getAttribute(A),t:b,k:"ewd"},{clog:1})}function l(a){K.length&&ue_cel.timeout(function(){if(s){for(var b=R(),c=!1;R()-b<g&&!c;){for(c=S;0<c--&&0<K.length;){var d=K.shift();T[d.type](d.elem,d.time)}c=0===K.length}U++;l(a)}},0)}function k(a,b,c){K.push({type:a,elem:b,time:c})}function d(a,c){for(var d=0;d<b.length;d++)for(var e= b[d].w||[],h=0;h<e.length;h++)k(a,e[h],c)}function e(){M||(M=a.ue_cel.timeout(function(){M=null;var c=v();d(W,c);for(var e=0;e<b.length;e++)k(X,b[e],c);0===b.length&&!1===C&&(C=!0,a.ue_utils.notifyWidgetsLabeled());l(c)},q))}function w(){M||N||(N=a.ue_cel.timeout(function(){N=null;var a=v();d(Q,a);l(a)},q))}function t(){return y&&E&&h&&h.contains&&h.getBoundingClientRect&&v}var q=50,g=4.5,s=!1,v,A="data-cel-widget",b=[],F=0,C=!1,u=function(){},D=a.ue_cel.log,h,p,y,E,G=n.MutationObserver||n.WebKitMutationObserver|| n.MozMutationObserver,r=!!G,H,I,O="DOMAttrModified",L="DOMNodeInserted",J="DOMNodeRemoved",N,M,K=[],U=0,S=null,W="removedWidget",X="updateWidgets",Q="processWidget",T,V=n.performance||{},R=V.now&&function(){return V.now()}||function(){return Date.now()};"function"==typeof uet&&uet("bb","csmCELLSfem",{wb:1});return{on:function(d){function k(){if(t()){T={removedWidget:x,updateWidgets:z,processWidget:B};if(r){var a={attributes:!0,subtree:!0};H=new G(w);I=new G(e);H.observe(h,a);I.observe(h,{childList:!0, subtree:!0});I.observe(p,a)}else y.call(h,O,w),y.call(h,L,e),y.call(h,J,e),y.call(p,L,w),y.call(p,J,w);e()}}h=c.body;p=c.head;y=h.addEventListener;E=h.removeEventListener;v=d.ts;b=a.cel_widgets||[];S=d.bs||5;m.deffered?k():m.attach&&m.attach("load",k);"function"==typeof uex&&uex("ld","csmCELLSfem",{wb:1});s=!0},off:function(){t()&&(I&&(I.disconnect(),I=null),H&&(H.disconnect(),H=null),E.call(h,O,w),E.call(h,L,e),E.call(h,J,e),E.call(p,L,w),E.call(p,J,w));m.count&&m.count("cel.widgets.batchesProcessed", U);s=!1},ready:function(){return a.ue_cel&&a.ue_cel.log},reset:function(){b=a.cel_widgets||[]}}}(),a.ue_cel&&a.ue_fem&&a.ue_cel.registerModule("features module",a.ue_fem))}})(ue_csm); (function(a){!a.ue_mcm&&a.ue_cel&&a.ue_utils&&!a.ue.isBF&&(a.ue_mcm=function(){function m(a,d){var e=a.srcElement||a.target||{},f={k:n,w:(d||{}).ow||(B.body||{}).scrollWidth,h:(d||{}).oh||(B.body||{}).scrollHeight,t:(d||{}).ots||c(),x:a.pageX,y:a.pageY,p:l.getXPath(e),n:e.nodeName};z&&"function"===typeof z.now&&a.timeStamp&&(f.dt=(d||{}).odt||z.now()-a.timeStamp,f.dt=parseFloat(f.dt.toFixed(2)));a.button&&(f.b=a.button);e.href&&(f.r=l.extractStringValue(e.href));e.id&&(f.i=e.id);e.className&&e.className.split&& (f.c=e.className.split(/\s+/));x(f,{c:1})}var n="mcm",c,f=a.window,B=f.document,z=f.performance,x=a.ue_cel.log,l=a.ue_utils;return{on:function(k){c=k.ts;a.ue_cel_stub&&a.ue_cel_stub.replayModule(n,m);f.addEventListener&&f.addEventListener("mousedown",m,!0)},off:function(a){f.addEventListener&&f.removeEventListener("mousedown",m,!0)},ready:function(){return a.ue_cel&&a.ue_cel.log},reset:function(){}}}(),a.ue_cel&&a.ue_cel.registerModule("mouse click module",a.ue_mcm))})(ue_csm); (function(a){a.ue_mmm||!a.ue_cel||a.ue.isBF||(a.ue_mmm=function(m){function n(a,b){var c={x:a.pageX||a.x||0,y:a.pageY||a.y||0,t:l()};!b&&p&&(c.t-p.t<B||c.x==p.x&&c.y==p.y)||(p=c,u.push(c))}function c(){if(u.length){F=H.now();for(var a=0;a<u.length;a++){var c=u[a],d=a;y=u[h];E=c;var e=void 0;if(!(e=2>d)){e=void 0;a:if(u[d].t-u[d-1].t>f)e=0;else{for(e=h+1;e<d;e++){var g=y,k=E,l=u[e];G=(k.x-g.x)*(g.y-l.y)-(g.x-l.x)*(k.y-g.y);if(G*G/((k.x-g.x)*(k.x-g.x)+(k.y-g.y)*(k.y-g.y))>z){e=0;break a}}e=1}e=!e}(r= e)?h=d-1:D.pop();D.push(c)}C=H.now()-F;s=Math.min(s,C);v=Math.max(v,C);A=(A*b+C)/(b+1);b+=1;q({k:x,e:D,min:Math.floor(1E3*s),max:Math.floor(1E3*v),avg:Math.floor(1E3*A)},{c:1});u=[];D=[];h=0}}var f=100,B=20,z=25,x="mmm1",l,k,d=a.window,e=d.document,w=d.setInterval,t=a.ue,q=a.ue_cel.log,g,s=1E3,v=0,A=0,b=0,F,C,u=[],D=[],h=0,p,y,E,G,r,H=m&&m.now&&m||Date.now&&Date||{now:function(){return(new Date).getTime()}};return{on:function(a){l=a.ts;k=a.ns;t.attach&&t.attach("mousemove",n,e);g=w(c,3E3)},off:function(a){k&& (p&&n(p,!0),c());clearInterval(g);t.detach&&t.detach("mousemove",n,e)},ready:function(){return a.ue_cel&&a.ue_cel.log},reset:function(){u=[];D=[];h=0;p=null}}}(window.performance),a.ue_cel&&a.ue_cel.registerModule("mouse move module",a.ue_mmm))})(ue_csm); ue_csm.ue.exec(function(b,c){var e=function(){},f=function(){return{send:function(b,d){if(d&&b){var a;if(c.XDomainRequest)a=new XDomainRequest,a.onerror=e,a.ontimeout=e,a.onprogress=e,a.onload=e,a.timeout=0;else if(c.XMLHttpRequest){if(a=new XMLHttpRequest,!("withCredentials"in a))throw"";}else a=void 0;if(!a)throw"";a.open("POST",b,!0);a.setRequestHeader&&a.setRequestHeader("Content-type","text/plain");a.send(d)}},isSupported:!0}}(),g=function(){return{send:function(c,d){if(c&&d)if(navigator.sendBeacon(c, d))b.ue_sbuimp&&b.ue&&b.ue.ssw&&b.ue.ssw("eelsts","scs");else throw"";},isSupported:!!navigator.sendBeacon&&!(c.cordova&&c.cordova.platformId&&"ios"==c.cordova.platformId)}}();b.ue._ajx=f;b.ue._sBcn=g},"Transportation-clients")(ue_csm,window); ue_csm.ue.exec(function(b,k){function B(){for(var a=0;a<arguments.length;a++){var c=arguments[a];try{var g;if(c.isSupported){var f=u.buildPayload(l,e);g=c.send(K,f)}else throw dummyException;return g}catch(d){}}a={m:"All supported clients failed",attribution:"CSMSushiClient_TRANSPORTATION_FAIL",f:"sushi-client.js",logLevel:"ERROR"};C(a,k.ue_err_chan||"jserr");b.ue_err.buffer&&b.ue_err.buffer.push(a)}function m(){if(e.length){for(var a=0;a<n.length;a++)n[a]();B(d._sBcn||{},d._ajx||{});e=[];h={};l= {};v=w=r=x=0}}function L(){var a=new Date,c=function(a){return 10>a?"0"+a:a};return Date.prototype.toISOString?a.toISOString():a.getUTCFullYear()+"-"+c(a.getUTCMonth()+1)+"-"+c(a.getUTCDate())+"T"+c(a.getUTCHours())+":"+c(a.getUTCMinutes())+":"+c(a.getUTCSeconds())+"."+String((a.getUTCMilliseconds()/1E3).toFixed(3)).slice(2,5)+"Z"}function y(a){try{return JSON.stringify(a)}catch(c){}return null}function D(a,c,g,f){var q=!1;f=f||{};s++;if(s==E){var p={m:"Max number of Sushi Logs exceeded",f:"sushi-client.js", logLevel:"ERROR",attribution:"CSMSushiClient_MAX_CALLS"};C(p,k.ue_err_chan||"jserr");b.ue_err.buffer&&b.ue_err.buffer.push(p)}if(p=!(s>=E))(p=a&&-1<a.constructor.toString().indexOf("Object")&&c&&-1<c.constructor.toString().indexOf("String")&&g&&-1<g.constructor.toString().indexOf("String"))||M++;p&&(d.count&&d.count("Event:"+g,1),a.producerId=a.producerId||c,a.schemaId=a.schemaId||g,a.timestamp=L(),c=Date.now?Date.now():+new Date,g=Math.random().toString().substring(2,12),a.messageId=b.ue_id+"-"+ c+"-"+g,f&&!f.ssd&&(a.sessionId=a.sessionId||b.ue_sid,a.requestId=a.requestId||b.ue_id,a.obfuscatedMarketplaceId=a.obfuscatedMarketplaceId||b.ue_mid),(c=y(a))?(c=c.length,(e.length==N||r+c>O)&&m(),r+=c,a={data:u.compressEvent(a)},e.push(a),(f||{}).n?0===F?m():v||(v=k.setTimeout(m,F)):w||(w=k.setTimeout(m,P)),q=!0):q=!1);!q&&b.ue_int&&console.error("Invalid JS Nexus API call");return q}function G(){if(!H){for(var a=0;a<z.length;a++)z[a]();for(a=0;a<n.length;a++)n[a]();e.length&&(b.ue_sbuimp&&b.ue&& b.ue.ssw&&(a=y({dct:l,evt:e}),b.ue.ssw("eeldata",a),b.ue.ssw("eelsts","unk")),B(d._sBcn||{}));H=!0}}function I(a){z.push(a)}function J(a){n.push(a)}var E=1E3,N=499,O=524288,t=function(){},d=b.ue||{},C=d.log||t,Q=b.uex||t;(b.uet||t)("bb","ue_sushi_v1",{wb:1});var K=b.ue_surl||"https://unagi-na.amazon.com/1/events/com.amazon.csm.nexusclient.gamma",R=["messageId","timestamp"],A="#",e=[],h={},l={},r=0,x=0,M=0,s=0,z=[],n=[],H=!1,v,w,F=void 0===b.ue_hpsi?1E3:b.ue_hpsi,P=void 0===b.ue_lpsi?1E4:b.ue_lpsi, u=function(){function a(a){h[a]=A+x++;l[h[a]]=a;return h[a]}function c(b){if(!(b instanceof Function)){if(b instanceof Array){for(var f=[],d=b.length,e=0;e<d;e++)f[e]=c(b[e]);return f}if(b instanceof Object){f={};for(d in b)b.hasOwnProperty(d)&&(f[h[d]?h[d]:a(d)]=-1===R.indexOf(d)?c(b[d]):b[d]);return f}return"string"===typeof b&&(b.length>(A+x).length||b.charAt(0)===A)?h[b]?h[b]:a(b):b}}return{compressEvent:c,buildPayload:function(){return y({cs:{dct:l},events:e})}}}();(function(){if(d.event&&d.event.isStub){if(b.ue_sbuimp&& b.ue&&b.ue.ssw){var a=b.ue.ssw("eelsts").val;if(a&&"unk"===a&&(a=b.ue.ssw("eeldata").val)){var c;a:{try{c=JSON.parse(a);break a}catch(g){}c=null}c&&c.evt instanceof Array&&c.dct instanceof Object&&(e=c.evt,l=c.dct,e&&l&&(m(),b.ue.ssw("eeldata","{}"),b.ue.ssw("eelsts","scs")))}}d.event.replay(function(a){a[3]=a[3]||{};a[3].n=1;D.apply(this,a)});d.onSushiUnload.replay(function(a){I(a[0])});d.onSushiFlush.replay(function(a){J(a[0])})}})();d.attach("beforeunload",G);d.attach("pagehide",G);d._cmps=u;d.event= D;d.event.reset=function(){s=0};d.onSushiUnload=I;d.onSushiFlush=J;try{k.P&&k.P.register&&k.P.register("sushi-client",t)}catch(S){b.ueLogError(S,{logLevel:"WARN"})}Q("ld","ue_sushi_v1",{wb:1})},"Nxs-JS-Client")(ue_csm,window); ue_csm.ue_unrt = 1500; (function(d,b,t){function u(a,g){var c=a.srcElement||a.target||{},b={k:v,t:g.t,dt:g.dt,x:a.pageX,y:a.pageY,p:e.getXPath(c),n:c.nodeName};a.button&&(b.b=a.button);c.type&&(b.ty=c.type);c.href&&(b.r=e.extractStringValue(c.href));c.id&&(b.i=c.id);c.className&&c.className.split&&(b.c=c.className.split(/\s+/));h+=1;e.getFirstAscendingWidget(c,function(a){b.wd=a;d.ue.log(b,r)})}function w(a){if(!x(a.srcElement||a.target)){m+=1;n=!0;var g=f=d.ue.d(),c;p&&"function"===typeof p.now&&a.timeStamp&&(c=p.now()- a.timeStamp,c=parseFloat(c.toFixed(2)));s=b.setTimeout(function(){u(a,{t:g,dt:c})},y)}}function z(a){if(a){var b=a.filter(A);a.length!==b.length&&(q=!0,k=d.ue.d(),n&&q&&(k&&f&&d.ue.log({k:B,t:f,m:Math.abs(k-f)},r),l(),q=!1,k=0))}}function A(a){if(!a)return!1;var b="characterData"===a.type?a.target.parentElement:a.target;if(!b||!b.hasAttributes||!b.attributes)return!1;var c={"class":"gw-clock gw-clock-aria s-item-container-height-auto feed-carousel using-mouse kfs-inner-container".split(" "),id:["dealClock", "deal_expiry_timer","timer"],role:["timer"]},d=!1;Object.keys(c).forEach(function(a){var e=b.attributes[a]?b.attributes[a].value:"";(c[a]||"").forEach(function(a){-1!==e.indexOf(a)&&(d=!0)})});return d}function x(a){if(!a)return!1;var b=(e.extractStringValue(a.nodeName)||"").toLowerCase(),c=(e.extractStringValue(a.type)||"").toLowerCase(),d=(e.extractStringValue(a.href)||"").toLowerCase();a=(e.extractStringValue(a.id)||"").toLowerCase();var f="checkbox color date datetime-local email file month number password radio range reset search tel text time url week".split(" "); if(-1!==["select","textarea","html"].indexOf(b)||"input"===b&&-1!==f.indexOf(c)||"a"===b&&-1!==d.indexOf("http")||-1!==["sitbreaderrightpageturner","sitbreaderleftpageturner","sitbreaderpagecontainer"].indexOf(a))return!0}function l(){n=!1;f=0;b.clearTimeout(s)}function C(){b.ue.onunload(function(){ue.count("armored-cxguardrails.unresponsive-clicks.violations",h);ue.count("armored-cxguardrails.unresponsive-clicks.violationRate",h/m*100||0)})}if(b.MutationObserver&&b.addEventListener&&Object.keys&& d&&d.ue&&d.ue.log&&d.ue_unrt&&d.ue_utils){var y=d.ue_unrt,r="cel",v="unr_mcm",B="res_mcm",p=b.performance,e=d.ue_utils,n=!1,f=0,s=0,q=!1,k=0,h=0,m=0;b.addEventListener&&(b.addEventListener("mousedown",w,!0),b.addEventListener("beforeunload",l,!0),b.addEventListener("visibilitychange",l,!0),b.addEventListener("pagehide",l,!0));b.ue&&b.ue.event&&b.ue.onSushiUnload&&b.ue.onunload&&C();(new MutationObserver(z)).observe(t,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}})(ue_csm,window,document); ue_csm.ue.exec(function(g,e){if(e.ue_err){var f="";e.ue_err.errorHandlers||(e.ue_err.errorHandlers=[]);e.ue_err.errorHandlers.push({name:"fctx",handler:function(a){if(!a.logLevel||"FATAL"===a.logLevel)if(f=g.getElementsByTagName("html")[0].innerHTML){var b=f.indexOf("var ue_t0=ue_t0||+new Date();");if(-1!==b){var b=f.substr(0,b).split(String.fromCharCode(10)),d=Math.max(b.length-10-1,0),b=b.slice(d,b.length-1);a.fcsmln=d+b.length+1;a.cinfo=a.cinfo||{};for(var c=0;c<b.length;c++)a.cinfo[d+c+1+""]= b[c]}b=f.split(String.fromCharCode(10));a.cinfo=a.cinfo||{};if(!(a.f||void 0===a.l||a.l in a.cinfo))for(c=+a.l-1,d=Math.max(c-5,0),c=Math.min(c+5,b.length-1);d<=c;d++)a.cinfo[d+1+""]=b[d]}}})}},"fatals-context")(document,window); (function(m,b){function c(k){function f(a){a&&"string"===typeof a&&(a=(a=a.match(/^(?:https?:)?\/\/(.*?)(\/|$)/i))&&1<a.length?a[1]:null,a&&a&&("number"===typeof e[a]?e[a]++:e[a]=1))}function d(a){var e=10,d=+new Date;a&&a.timeRemaining?e=a.timeRemaining():a={timeRemaining:function(){return Math.max(0,e-(+new Date-d))}};for(var c=b.performance.getEntries(),k=e;g<c.length&&k>n;)c[g].name&&f(c[g].name),g++,k=a.timeRemaining();g>=c.length?h(!0):l()}function h(a){if(!a){a=m.scripts;var c;if(a)for(var d= 0;d<a.length;d++)(c=a[d].getAttribute("src"))&&"undefined"!==c&&f(c)}0<Object.keys(e).length&&(p&&ue_csm.ue&&ue_csm.ue.event&&(a={domains:e,pageType:b.ue_pty||null,subPageType:b.ue_spty||null,pageTypeId:b.ue_pti||null},ue_csm.ue_sjslob&&(a.lob=ue_csm.ue_lob||"0"),ue_csm.ue.event(a,"csm","csm.CrossOriginDomains.2")),b.ue_ext=e)}function l(){!0===k?d():b.requestIdleCallback?b.requestIdleCallback(d):b.requestAnimationFrame?b.requestAnimationFrame(d):b.setTimeout(d,100)}function c(){if(b.performance&& b.performance.getEntries){var a=b.performance.getEntries();!a||0>=a.length?h(!1):l()}else h(!1)}var e=b.ue_ext||{};b.ue_ext||c();return e}function q(){setTimeout(c,r)}var s=b.ue_dserr||!1,p=!0,n=1,r=2E3,g=0;b.ue_err&&s&&(b.ue_err.errorHandlers||(b.ue_err.errorHandlers=[]),b.ue_err.errorHandlers.push({name:"ext",handler:function(b){if(!b.logLevel||"FATAL"===b.logLevel){var f=c(!0),d=[],h;for(h in f){var f=h,g=f.match(/amazon(\.com?)?\.\w{2,3}$/i);g&&1<g.length||-1!==f.indexOf("amazon-adsystem.com")|| -1!==f.indexOf("amazonpay.com")||-1!==f.indexOf("cloudfront-labs.amazonaws.com")||d.push(h)}b.ext=d}}}));b.ue&&b.ue.isl?c():b.ue&&ue.attach&&ue.attach("load",q)})(document,window); var ue_wtc_c = 3; ue_csm.ue.exec(function(b,e){function l(){for(var a=0;a<f.length;a++)a:for(var d=s.replace(A,f[a])+g[f[a]]+t,c=arguments,b=0;b<c.length;b++)try{c[b].send(d);break a}catch(e){}g={};f=[];n=0;k=p}function u(){B?l(q):l(C,q)}function v(a,m,c){r++;if(r>w)d.count&&1==r-w&&(d.count("WeblabTriggerThresholdReached",1),b.ue_int&&console.error("Number of max call reached. Data will no longer be send"));else{var h=c||{};h&&-1<h.constructor.toString().indexOf(D)&&a&&-1<a.constructor.toString().indexOf(x)&&m&&-1< m.constructor.toString().indexOf(x)?(h=b.ue_id,c&&c.rid&&(h=c.rid),c=h,a=encodeURIComponent(",wl="+a+"/"+m),2E3>a.length+p?(2E3<k+a.length&&u(),void 0===g[c]&&(g[c]="",f.push(c)),g[c]+=a,k+=a.length,n||(n=e.setTimeout(u,E))):b.ue_int&&console.error("Invalid API call. The input provided is over 2000 chars.")):d.count&&(d.count("WeblabTriggerImproperAPICall",1),b.ue_int&&console.error("Invalid API call. The input provided does not match the API protocol i.e ue.trigger(String, String, Object)."))}}function F(){d.trigger&& d.trigger.isStub&&d.trigger.replay(function(a){v.apply(this,a)})}function y(){z||(f.length&&l(q),z=!0)}var t=":1234",s="//"+b.ue_furl+"/1/remote-weblab-triggers/1/OE/"+b.ue_mid+":"+b.ue_sid+":PLCHLDR_RID$s:wl-client-id%3DCSMTriger",A="PLCHLDR_RID",E=b.wtt||1E4,p=s.length+t.length,w=b.mwtc||2E3,G=1===e.ue_wtc_c,B=3===e.ue_wtc_c,H=e.XMLHttpRequest&&"withCredentials"in new e.XMLHttpRequest,x="String",D="Object",d=b.ue,g={},f=[],k=p,n,z=!1,r=0,C=function(){return{send:function(a){if(H){var b=new e.XMLHttpRequest; b.open("GET",a,!0);G&&(b.withCredentials=!0);b.send()}else throw"";}}}(),q=function(){return{send:function(a){(new Image).src=a}}}();e.encodeURIComponent&&(d.attach&&(d.attach("beforeunload",y),d.attach("pagehide",y)),F(),d.trigger=v)},"client-wbl-trg")(ue_csm,window); (function(k,d,h){function f(a,c,b){a&&a.indexOf&&0===a.indexOf("http")&&0!==a.indexOf("https")&&l(s,c,a,b)}function g(a,c,b){a&&a.indexOf&&(location.href.split("#")[0]!=a&&null!==a&&"undefined"!==typeof a||l(t,c,a,b))}function l(a,c,b,e){m[b]||(e=u&&e?n(e):"N/A",d.ueLogError&&d.ueLogError({message:a+c+" : "+b,logLevel:v,stack:"N/A"},{attribution:e}),m[b]=1,p++)}function e(a,c){if(a&&c)for(var b=0;b<a.length;b++)try{c(a[b])}catch(d){}}function q(){return d.performance&&d.performance.getEntriesByType? d.performance.getEntriesByType("resource"):[]}function n(a){if(a.id)return"//*[@id='"+a.id+"']";var c;c=1;var b;for(b=a.previousSibling;b;b=b.previousSibling)b.nodeName==a.nodeName&&(c+=1);b=a.nodeName;1!=c&&(b+="["+c+"]");a.parentNode&&(b=n(a.parentNode)+"/"+b);return b}function w(){var a=h.images;a&&a.length&&e(a,function(a){var b=a.getAttribute("src");f(b,"img",a);g(b,"img",a)})}function x(){var a=h.scripts;a&&a.length&&e(a,function(a){var b=a.getAttribute("src");f(b,"script",a);g(b,"script",a)})} function y(){var a=h.styleSheets;a&&a.length&&e(a,function(a){if(a=a.ownerNode){var b=a.getAttribute("href");f(b,"style",a);g(b,"style",a)}})}function z(){if(A){var a=q();e(a,function(a){f(a.name,a.initiatorType)})}}function B(){e(q(),function(a){g(a.name,a.initiatorType)})}function r(){var a;a=d.location&&d.location.protocol?d.location.protocol:void 0;"https:"==a&&(z(),w(),x(),y(),B(),p<C&&setTimeout(r,D))}var s="[CSM] Insecure content detected ",t="[CSM] Ajax request to same page detected ",v="WARN", m={},p=0,D=k.ue_nsip||1E3,C=5,A=1==k.ue_urt,u=!0;ue_csm.ue_disableNonSecure||(d.performance&&d.performance.setResourceTimingBufferSize&&d.performance.setResourceTimingBufferSize(300),r())})(ue_csm,window,document); var ue_aa_a = ""; if (ue.trigger && (ue_aa_a === "C" || ue_aa_a === "T1")) { ue.trigger("UEDATA_AA_SERVERSIDE_ASSIGNMENT_CLIENTSIDE_TRIGGER_190249", ue_aa_a); } (function(f,b){function g(){try{b.PerformanceObserver&&"function"===typeof b.PerformanceObserver&&(a=new b.PerformanceObserver(function(b){c(b.getEntries())}),a.observe(d))}catch(h){k()}}function m(){for(var h=d.entryTypes,a=0;a<h.length;a++)c(b.performance.getEntriesByType(h[a]))}function c(a){if(a&&Array.isArray(a)){for(var c=0,e=0;e<a.length;e++){var d=l.indexOf(a[e].name);if(-1!==d){var g=Math.round(b.performance.timing.navigationStart+a[e].startTime);f.uet(n[d],void 0,void 0,g);c++}}l.length=== c&&k()}}function k(){a&&a.disconnect&&"function"===typeof a.disconnect&&a.disconnect()}if("function"===typeof f.uet&&b.performance&&"object"===typeof b.performance&&b.performance.getEntriesByType&&"function"===typeof b.performance.getEntriesByType&&b.performance.timing&&"object"===typeof b.performance.timing&&"number"===typeof b.performance.timing.navigationStart){var d={entryTypes:["paint"]},l=["first-paint","first-contentful-paint"],n=["fp","fcp"],a;try{m(),g()}catch(p){f.ueLogError(p,{logLevel:"ERROR", attribution:"performanceMetrics"})}}})(ue_csm,window); if (window.csa) { csa("Events")("setEntity", { page:{pageType: "PromotionsDiscoveryHz", subPageType: "", pageTypeId: ""} }); } csa.plugin(function(c){var m="transitionStart",n="pageVisible",e="PageTiming",t="visibilitychange",s="$latency.visible",i=c.global,r=(i.performance||{}).timing,a=["navigationStart","unloadEventStart","unloadEventEnd","redirectStart","redirectEnd","fetchStart","domainLookupStart","domainLookupEnd","connectStart","connectEnd","secureConnectionStart","requestStart","responseStart","responseEnd","domLoading","domInteractive","domContentLoadedEventStart","domContentLoadedEventEnd","domComplete","loadEventStart","loadEventEnd"],u=c.config,o=i.Math,l=o.max,g=o.floor,d=i.document||{},f=(r||{}).navigationStart,v=f,p=0,S=null;if(i.Object.keys&&[].forEach&&!u["KillSwitch."+e]){if(!r||null===f||f<=0||void 0===f)return c.error("Invalid navigation timing data: "+f);S=new E({schemaId:"<ns>.PageLatency.6",producerId:"csa"}),"boolean"!=typeof d.hidden&&"string"!=typeof d.visibilityState||!d.removeEventListener?c.emit(s):b()?(c.emit(s),I(n,f)):c.on(d,t,function e(){b()&&(v=c.time(),d.removeEventListener(t,e),I(m,v),I(n,v),c.emit(s))}),c.once("$unload",h),c.once("$load",h),c.on("$pageTransition",function(){v=c.time()}),c.register(e,{mark:I,instance:function(e){return new E(e)}})}function E(e){var i,r=null,a=e.ent||{page:["pageType","subPageType","requestId"]},o=e.logger||c("Events",{producerId:e.producerId,lob:u.lob||"0"});if(!e||!e.producerId||!e.schemaId)return c.error("The producer id and schema Id must be defined for PageLatencyInstance.");function d(){return i||v}function n(){r=c.UUID()}this.mark=function(n,t){if(null!=n)return t=t||c.time(),n===m&&(i=t),c.once(s,function(){o("log",{messageId:r,__merge:function(e){e.markers[n]=function(e,n){return l(0,n-(e||v))}(d(),t),e.markerTimestamps[n]=g(t)},markers:{},markerTimestamps:{},navigationStartTimestamp:d()?new Date(d()).toISOString():null,schemaId:e.schemaId},{ent:a})}),t},n(),c.on("$beforePageTransition",n)}function I(e,n){e===m&&(v=n);var t=S.mark(e,n);c.emit("$timing:"+e,t)}function h(){if(!p){for(var e=0;e<a.length;e++)r[a[e]]&&I(a[e],r[a[e]]);p=1}}function b(){return!d.hidden||"visible"===d.visibilityState}});csa.plugin(function(c){var f,u,l="length",a="parentElement",t="target",i="getEntriesByName",e=null,r="_csa_flt",o="_csa_llt",s="previousSibling",d="visuallyLoaded",n="client",g="offset",h="scroll",m="Width",p="Height",v=n+m,y=n+p,E=g+m,S=g+p,x=h+m,O=h+p,b="_osrc",w="_elt",I="_eid",T=10,_=5,L=15,N=100,k=c.global,B=c.timeout,H=k.Math,W=H.max,C=H.floor,F=H.ceil,M=k.document||{},R=M.body||{},Y=M.documentElement||{},P=k.performance||{},X=(P.timing||{}).navigationStart,$=Date.now,D=Object.values||(c.types||{}).ovl,J=c("PageTiming"),V=c("SpeedIndexBuffers"),j=[],q=[],z=[],A=[],G=[],K=[],Q=.1,U=.1,Z=0,ee=0,ne=!0,te=0,ie=0,re=1==c.config["SpeedIndex.ForceReplay"],oe=0,ae=1,fe=0,ce={},ue=[],le=0;function se(){for(var e=$(),n=0;f;){if(0!==f[l]){if(!1!==f.h(f[0])&&f.shift(),n++,!re&&n%T==0&&$()-e>_)break}else f=f.n}Z=0,f&&(Z||(!0===M.hidden?(re=1,se()):c.timeout(se,0)))}function de(e,n,t,i,r){fe=C(e),j=n,q=t,z=i,K=r;var o=M.createTreeWalker(M.body,NodeFilter.SHOW_TEXT,null,null),a={w:k.innerWidth,h:k.innerHeight,x:k.pageXOffset,y:k.pageYOffset};M.body[w]=e,A.push({w:o,vp:a}),G.push({img:M.images,iter:0}),j.h=ge,(j.n=q).h=he,(q.n=z).h=me,(z.n=A).h=pe,(A.n=G).h=ve,(G.n=K).h=ye,f=j,se()}function ge(e){e.m.forEach(function(e){for(var n=e;n&&(e===n||!n[r]||!n[o]);)n[r]||(n[r]=e[r]),n[o]||(n[o]=e[o]),n[w]=n[r]-X,n=n[s]})}function he(e){e.m.forEach(function(e){var n=e[t];b in n||(n[b]=e.oldValue)})}function me(n){n.m.forEach(function(e){e[t][w]=n.t-X})}function pe(e){for(var n,t=e.vp,i=e.w,r=T;(n=i.nextNode())&&0<r;){r-=1;var o=(n[a]||{}).nodeName;"SCRIPT"!==o&&"STYLE"!==o&&"NOSCRIPT"!==o&&"BODY"!==o&&0!==(n.nodeValue||"").trim()[l]&&be(n[a],Ee(n),t)}return!n}function ve(e){for(var n={w:k.innerWidth,h:k.innerHeight,x:k.pageXOffset,y:k.pageYOffset},t=T;e.iter<e.img[l]&&0<t;){var i,r=e.img[e.iter],o=Oe(r),a=o&&Ee(o)||Ee(r);o?(o[w]=a,i=xe(o.querySelector('[aria-posinset="1"] img')||r)||a,r=o):i=xe(r)||a,ie&&u<i&&(i=a),be(r,i,n),e.iter+=1,t-=1}return e.img[l]<=e.iter}function ye(e){var n=[],i=0,r=0,o=ee,t=k.innerHeight||W(R[O]||0,R[S]||0,Y[y]||0,Y[O]||0,Y[S]||0),a=C(e.y/N),f=F((e.y+t)/N);ue.slice(a,f).forEach(function(e){(e.elems||[]).forEach(function(e){e.lt in n||(n[e.lt]={}),e.id in n[e.lt]||(i+=(n[e.lt][e.id]=e).a)})}),D(n).forEach(function(e){D(e).forEach(function(e){var n=1-r/i,t=W(e.lt,o);le+=n*(t-o),o=t,function(e,n){var t;for(;Q<=1&&Q-.01<=e;)we(d+(t=(100*Q).toFixed(0)),n.lt),"50"!==t&&"90"!==t||c("Content",{target:n.e})("mark",d+t,X+F(n.lt||0)),Q+=U}((r+=e.a)/i,e)})}),ee=e.t-X,K[l]<=1&&(we("speedIndex",le),we(d+"0",fe)),ne&&(ne=!1,we("atfSpeedIndex",le))}function Ee(e){for(var n=e[a],t=L;n&&0<t;){if(n[w]||0===n[w])return W(n[w],fe);n=n.parentElement,t-=1}}function Se(e,n){if(e){if(!e.indexOf("data:"))return Ee(n);var t=P[i](e)||[];if(0<t[l])return W(F(t[0].responseEnd||0),fe)}}function xe(e){return Se(e[b],e)||Se(e.currentSrc,e)||Se(e.src,e)}function Oe(e){for(var n=10,t=e.parentElement;t&&0<n;){if(t.classList&&t.classList.contains("a-carousel-viewport"))return t;t=t.parentElement,n-=1}return null}function be(e,n,t){if((n||0===n)&&!e[I]){var i=e.getBoundingClientRect(),r=i.width*i.height,o=t.w||W(R[x]||0,R[E]||0,Y[v]||0,Y[x]||0,Y[E]||0)||i.right,a=i.width/2,f=ae++;if(0!=r&&!(a<i.right-o||i.right<a)){for(var c={e:e,lt:n,a:r,id:f},u=C((i.top+t.y)/N),l=F((i.top+t.y+i.height)/N),s=u;s<=l;s++)s in ue||(ue[s]={elems:[],lt:0}),ue[s].elems.push(c);e[I]=f}}}function we(e,n){J("mark",e,X+F((ce[e]=n)||0))}function Ie(e){oe||(V("getBuffers",de),oe=1)}X&&D&&P[i]&&(V("registerListener",function(){ie&&(clearTimeout(te),te=B(Ie.bind(e,"Mut"),2500))}),c.once("$unload",function(){re=1,Ie()}),c.once("$load",function(){ie=1,u=$()-X,te=B(Ie.bind(e,"Ld"),2500)}),c.once("$timing:functional",Ie.bind(e,"Fn")),V("replayModuleIsLive"),c.register("SpeedIndex",{getMarkers:function(e){e&&e(JSON.parse(JSON.stringify(ce)))}}))});csa.plugin(function(e){var m=!!e.config["LCP.elementDedup"],t=!1,n=e("PageTiming"),r=e.global.PerformanceObserver,a=e.global.performance;function i(){return a.timing.navigationStart}function o(){t||function(o){var l=new r(function(e){var t=e.getEntries();if(0!==t.length){var n=t[t.length-1];if(m&&""!==n.id&&n.element&&"IMG"===n.element.tagName){for(var r={},a=t[0],i=0;i<t.length;i++)t[i].id in r||(""!==t[i].id&&(r[t[i].id]=!0),a.startTime<t[i].startTime&&(a=t[i]));n=a}l.disconnect(),o({startTime:n.startTime,renderTime:n.renderTime,loadTime:n.loadTime})}});try{l.observe({type:"largest-contentful-paint",buffered:!0})}catch(e){}}(function(e){e&&(t=!0,n("mark","largestContentfulPaint",Math.floor(e.startTime+i())),e.renderTime&&n("mark","largestContentfulPaint.render",Math.floor(e.renderTime+i())),e.loadTime&&n("mark","largestContentfulPaint.load",Math.floor(e.loadTime+i())))})}r&&a&&a.timing&&(e.once("$unload",o),e.once("$load",o),e.register("LargestContentfulPaint",{}))});csa.plugin(function(r){var e=r("Metrics",{producerId:"csa"}),n=r.global.PerformanceObserver;n&&(n=new n(function(r){var t=r.getEntries();if(0===t.length||!t[0].processingStart||!t[0].startTime)return;!function(r){r=r||0,n.disconnect(),0<=r?e("recordMetric","firstInputDelay",r):e("recordMetric","firstInputDelay.invalid",1)}(t[0].processingStart-t[0].startTime)}),function(){try{n.observe({type:"first-input",buffered:!0})}catch(r){}}())});csa.plugin(function(d){var e="Metrics",g=d.config,f=0;function r(i){var c,t,e=i.producerId,r=i.logger,o=r||d("Events",{producerId:e,lob:g.lob||"0"}),s=(i||{}).dimensions||{},u={},n=-1;if(!e&&!r)return d.error("Either a producer id or custom logger must be defined");function a(){n!==f&&(c=d.UUID(),t=d.UUID(),u={},n=f)}this.recordMetric=function(r,n){var e=i.logOptions||{ent:{page:["pageType","subPageType","requestId"]}};e.debugMetric=i.debugMetric,a(),o("log",{messageId:c,schemaId:i.schemaId||"<ns>.Metric.4",metrics:{},dimensions:s,__merge:function(e){e.metrics[r]=n}},e)},this.recordCounter=function(r,e){var n=i.logOptions||{ent:{page:["pageType","subPageType","requestId"]}};if("string"!=typeof r||"number"!=typeof e||!isFinite(e))return d.error("Invalid type given for counter name or counter value: "+r+"/"+e);a(),r in u||(u[r]={});var c=u[r];"f"in c||(c.f=e),c.c=(c.c||0)+1,c.s=(c.s||0)+e,c.l=e,o("log",{messageId:t,schemaId:i.schemaId||"<ns>.InternalCounters.3",c:{},__merge:function(e){r in e.c||(e.c[r]={}),c.fs||(c.fs=1,e.c[r].f=c.f),1<c.c&&(e.c[r].s=c.s,e.c[r].l=c.l,e.c[r].c=c.c)}},n)}}g["KillSwitch."+e]||(new r({producerId:"csa"}).recordMetric("baselineMetricEvent",1),d.on("$beforePageTransition",function(){f++}),d.register(e,{instance:function(e){return new r(e||{})}}))});csa.plugin(function(s){var n=s.config,r=(s.global.performance||{}).timing,c=(r||{}).navigationStart||s.time(),g=0;function e(){g+=1}function i(i){i=i||{};var o=s.UUID(),t=g,r=i.producerId,e=i.logger,a=e||s("Events",{producerId:r,lob:n.lob||"0"});if(!r&&!e)return s.error("Either a producer id or custom logger must be defined");this.mark=function(e,r){var n=(void 0===r?s.time():r)-c;t!==g&&(t=g,o=s.UUID()),a("log",{messageId:o,schemaId:i.schemaId||"<ns>.Timer.1",markers:{},__merge:function(r){r.markers[e]=n}},i.logOptions)}}r&&(e(),s.on("$beforePageTransition",e),s.register("Timers",{instance:function(r){return new i(r||{})}}))});csa.plugin(function(t){var e="takeRecords",i="disconnect",n="function",o=t("Metrics",{producerId:"csa"}),c=t("PageTiming"),a=t.global,u=t.timeout,r=t.on,f=a.PerformanceObserver,m=0,l=!1,s=0,d=a.performance,h=a.document,v=null,y=!1,g=t.blank;function p(){l||(l=!0,clearTimeout(v),typeof f[e]===n&&f[e](),typeof f[i]===n&&f[i](),o("recordMetric","documentCumulativeLayoutShift",m),c("mark","cumulativeLayoutShiftLastTimestamp",Math.floor(s+d.timing.navigationStart)))}f&&d&&d.timing&&h&&(f=new f(function(t){v&&clearTimeout(v);t.getEntries().forEach(function(t){t.hadRecentInput||(m+=t.value,s<t.startTime&&(s=t.startTime))}),v=u(p,5e3)}),function(){try{f.observe({type:"layout-shift",buffered:!0}),v=u(p,5e3)}catch(t){}}(),g=r(h,"click",function(t){y||(y=!0,o("recordMetric","documentCumulativeLayoutShiftToFirstInput",m),g())}),r(h,"visibilitychange",function(){"hidden"===h.visibilityState&&p()}),t.once("$unload",p))});csa.plugin(function(e){var t,n=e.global,r=n.PerformanceObserver,c=e("Metrics",{producerId:"csa"}),o=0,i=0,a=-1,l=n.Math,f=l.max,u=l.ceil;if(r){t=new r(function(e){e.getEntries().forEach(function(e){var t=e.duration;o+=t,i+=t,a=f(t,a)})});try{t.observe({type:"longtask",buffered:!0})}catch(e){}t=new r(function(e){0<e.getEntries().length&&(i=0,a=-1)});try{t.observe({type:"largest-contentful-paint",buffered:!0})}catch(e){}e.on("$unload",g),e.on("$beforePageTransition",g)}function g(){c("recordMetric","totalBlockingTime",u(i||0)),c("recordMetric","totalBlockingTimeInclLCP",u(o||0)),c("recordMetric","maxBlockingTime",u(a||0)),i=o=0,a=-1}});csa.plugin(function(o){var e="CacheDetection",r="csa-ctoken-",c=o.store,t=o.deleteStored,n=o.config,i=n[e+".RequestID"],a=n[e+".Callback"],s=o.global,u=s.document||{},d=s.Date,l=o("Events"),f=o("Events",{producerId:"csa",lob:n.lob||"0"});function p(e){try{var c=u.cookie.match(RegExp("(^| )"+e+"=([^;]+)"));return c&&c[2].trim()}catch(e){}}n["KillSwitch."+e]||(function(){var e=function(){var e=p("cdn-rid");if(e)return{r:e,s:"cdn"}}()||function(){if(o.store(r+i))return{r:o.UUID().toUpperCase().replace(/-/g,"").slice(0,20),s:"device"}}()||{},c=e.r,n=e.s;if(!!c){var t=p("session-id");!function(e,c,n,t){l("setEntity",{page:{pageSource:"cache",requestId:e,cacheRequestId:i,cacheSource:t},session:{id:n}})}(c,0,t,n),"device"===n&&f("log",{schemaId:"<ns>.CacheImpression.2"},{ent:"all"}),a&&a(c,t,n)}}(),c(r+i,d.now()+36e5),o.once("$load",function(){var n=d.now();t(function(e,c){return 0==e.indexOf(r)&&parseInt(c)<n})}))});csa.plugin(function(u){var i,t="Content",e="MutationObserver",n="addedNodes",a="querySelectorAll",f="matches",r="getAttributeNames",o="getAttribute",s="dataset",c="widget",l="producerId",d="slotId",h="iSlotId",g={ent:{element:1,page:["pageType","subPageType","requestId"]}},p=5,m=u.config[t+".BubbleUp.SearchDepth"]||35,y=u.config[t+".SearchPage"]||0,v="csaC",b=v+"Id",E="logRender",w={},I=u.config,O=I[t+".Selectors"]||[],C=I[t+".WhitelistedAttributes"]||{href:1,class:1},N=I[t+".EnableContentEntities"],S=I["KillSwitch.ContentRendered"],k=u.global,A=k.document||{},U=A.documentElement,L=k.HTMLElement,R={},_=[],j=function(t,e,n,i){var o=this,r=u("Events",{producerId:t||"csa",lob:I.lob||"0"});e.type=e.type||c,o.id=e.id,o.l=r,o.e=e,o.el=n,o.rt=i,o.dlo=g,o.op=W(n,"csaOp"),o.log=function(t,e){r("log",t,e||g)},o.entities=function(t){t(e)},e.id&&r("setEntity",{element:e})},x=j.prototype;function D(t){var e=(t=t||{}).element,n=t.target;return e?function(t,e){var n;n=t instanceof L?K(t)||Y(e[l],t,z,u.time()):R[t.id]||H(e[l],0,t,u.time());return n}(e,t):n?M(n):u.error("No element or target argument provided.")}function M(t){var e=function(t){var e=null,n=0;for(;t&&n<m;){if(n++,P(t,b)){e=t;break}t=t.parentElement}return e}(t);return e?K(e):new j("csa",{id:null},null,u.time())}function P(t,e){if(t&&t.dataset)return t.dataset[e]}function T(t,e,n){_.push({n:n,e:t,t:e}),B()}function q(){for(var t=u.time(),e=0;0<_.length;){var n=_.shift();if(w[n.n](n.e,n.t),++e%10==0&&u.time()-t>p)break}i=0,_.length&&B()}function B(){i=i||u.raf(q)}function X(t,e,n){return{n:t,e:e,t:n}}function Y(t,e,n,i){var o=u.UUID(),r={id:o},c=M(e);return e[s][b]=o,n(r,e),c&&c.id&&(r.parentId=c.id),H(t,e,r,i)}function $(t){return isNaN(t)?null:Math.round(t)}function H(t,e,n,i){N&&(n.schemaId="<ns>.ContentEntity.2"),n.id=n.id||u.UUID();var o=new j(t,n,e,i);return function(t){return!S&&((t.op||{}).hasOwnProperty(E)||y)}(o)&&function(t,e){var n={},i=u.exec($);t.el&&(n=t.el.getBoundingClientRect()),t.log({schemaId:"<ns>.ContentRender.3",timestamp:e,width:i(n.width),height:i(n.height),positionX:i(n.left+k.pageXOffset),positionY:i(n.top+k.pageYOffset)})}(o,i),u.emit("$content.register",o),R[n.id]=o}function K(t){return R[(t[s]||{})[b]]}function W(n,i){var o={};return r in(n=n||{})&&Object.keys(n[s]).forEach(function(t){if(!t.indexOf(i)&&i.length<t.length){var e=function(t){return(t[0]||"").toLowerCase()+t.slice(1)}(t.slice(i.length));o[e]=n[s][t]}}),o}function z(t,e){r in e&&(function(t,e){var n=W(t,v);Object.keys(n).forEach(function(t){e[t]=n[t]})}(e,t),d in t&&(t[h]=t[d]),function(e,n){(e[r]()||[]).forEach(function(t){t in C&&(n[t]=e[o](t))})}(e,t))}U&&A[a]&&k[e]&&(O.push({selector:"*[data-csa-c-type]",entity:z}),O.push({selector:".celwidget",entity:function(t,e){z(t,e),t[d]=t[d]||e[o]("cel_widget_id")||e.id,t.legacyId=e[o]("cel_widget_id")||e.id,t.type=t.type||c}}),w[1]=function(t,e){t.forEach(function(t){t[n]&&t[n].constructor&&"NodeList"===t[n].constructor.name&&Array.prototype.forEach.call(t[n],function(t){_.unshift(X(2,t,e))})})},w[2]=function(r,c){a in r&&f in r&&O.forEach(function(t){for(var e=t.selector,n=r[f](e),i=r[a](e),o=i.length-1;0<=o;o--)_.unshift(X(3,{e:i[o],s:t},c));n&&_.unshift(X(3,{e:r,s:t},c))})},w[3]=function(t,e){var n=t.e;K(n)||Y("csa",n,t.s.entity,e)},w[4]=function(){u.register(t,{instance:D})},new k[e](function(t){T(t,u.time(),1)}).observe(U,{childList:!0,subtree:!0}),T(U,u.time(),2),T(null,u.time(),4),u.on("$content.export",function(e){Object.keys(e).forEach(function(t){x[t]=e[t]})}))});csa.plugin(function(o){var i,t="ContentImpressions",e="KillSwitch.",n="IntersectionObserver",r="getAttribute",s="dataset",c="intersectionRatio",a="csaCId",m=1e3,l=o.global,f=o.config,u=f[e+t],v=f[e+t+".ContentViews"],g=((l.performance||{}).timing||{}).navigationStart||o.time(),d={};function h(t){t&&(t.v=1,function(t){t.vt=o.time(),t.el.log({schemaId:"<ns>.ContentView.4",timeToViewed:t.vt-t.el.rt,pageFirstPaintToElementViewed:t.vt-g})}(t))}function I(t){t&&!t.it&&(t.i=o.time()-t.is>m,function(t){t.it=o.time(),t.el.log({schemaId:"<ns>.ContentImpressed.3",timeToImpressed:t.it-t.el.rt,pageFirstPaintToElementImpressed:t.it-g})}(t))}!u&&l[n]&&(i=new l[n](function(t){var n=o.time();t.forEach(function(t){var e=function(t){if(t&&t[r])return d[t[s][a]]}(t.target);if(e){o.emit("$content.intersection",{meta:e.el,t:n,e:t});var i=t.intersectionRect;t.isIntersecting&&0<i.width&&0<i.height&&(v||e.v||h(e),.5<=t[c]&&!e.is&&(e.is=n,e.timer=o.timeout(function(){I(e)},m))),t[c]<.5&&!e.it&&e.timer&&(l.clearTimeout(e.timer),e.is=0,e.timer=0)}})},{threshold:[0,.5,.99]}),o.on("$content.register",function(t){var e=t.el;e&&(d[t.id]={el:t,v:0,i:0,is:0,vt:0,it:0},i.observe(e))}))});csa.plugin(function(e){e.config["KillSwitch.ContentLatency"]||e.emit("$content.export",{mark:function(t,n){var o=this;o.t||(o.t=e("Timers",{logger:o.l,schemaId:"<ns>.ContentLatency.4",logOptions:o.dlo})),o.t("mark",t,n)}})});csa.plugin(function(t){function n(i,e,o){var c={};function r(t,n,e){t in c&&o<=n-c[t].s&&(function(n,e,i){if(!p)return;E(function(t){T(n,t),t.w[n][e]=a((t.w[n][e]||0)+i)})}(t,i,n-c[t].d),c[t].d=n),e||delete c[t]}this.update=function(t,n){n.isIntersecting&&e<=n.intersectionRatio?function(t,n){t in c||(c[t]={s:n,d:n})}(t,u()):r(t,u())},this.stopAll=function(t){var n=u();for(var e in c)r(e,n,t)},this.reset=function(){var t=u();for(var n in c)c[n].s=t,c[n].d=t}}var e=t.config,u=t.time,i="ContentInteractionsSummary",o=e[i+".FlushInterval"]||5e3,c=e[i+".FlushBackoff"]||1.5,r=t.global,s=t.on,a=Math.floor,f=(r.document||{}).documentElement||{},l=((r.performance||{}).timing||{}).responseStart||t.time(),d=o,m=0,p=!0,v=t.UUID(),g=t("Events",{producerId:"csa",lob:e.lob||"0"}),w=new n("it0",0,0),I=new n("it50",.5,1e3),h=new n("it100",.99,0),b={},A={};function $(){w.stopAll(!0),I.stopAll(!0),h.stopAll(!0),S()}function C(){w.reset(),I.reset(),h.reset(),S()}function S(){d&&(clearTimeout(m),m=t.timeout($,d),d*=c)}function U(n){E(function(t){T(n,t),t.w[n].mc=(t.w[n].mc||0)+1})}function E(t){g("log",{messageId:v,schemaId:"<ns>.ContentInteractionsSummary.2",w:{},__merge:t},{ent:{page:["requestId"]}})}function T(t,n){t in n.w||(n.w[t]={})}e["KillSwitch."+i]||(s("$content.intersection",function(t){if(t&&t.meta&&t.e){var n=t.meta.id;if(n in b){var e=t.e.boundingClientRect||{};e.width<5||e.height<5||(w.update(n,t.e),I.update(n,t.e),h.update(n,t.e),!t.e.isIntersecting||n in A||(A[n]=1,function(n,e){E(function(t){T(n,t),t.w[n].ttfv=a(e)})}(n,u()-l)))}}}),s("$content.register",function(t){(t.e||{}).slotId&&(b[t.id]={},function(e){E(function(t){var n=e.id;T(n,t),t.w[n].sid=(e.e||{}).slotId,t.w[n].cid=(e.e||{}).contentId})}(t))}),s("$beforePageTransition",function(){$(),C(),v=t.UUID(),S()}),s("$beforeunload",function(){w.stopAll(),I.stopAll(),h.stopAll(),d=null}),s("$visible",function(t){t?C():($(),clearTimeout(m)),p=t},{buffered:1}),s(f,"click",function(t){for(var n=t.target,e=25;n&&0<e;){var i=(n.dataset||{}).csaCId;i&&U(i),n=n.parentElement,e-=1}},{capture:!0,passive:!0}),S())});csa.plugin(function(d){var t,o,e="normal",c="reload",i="history",s="new-tab",n="ajax",r=1,a=2,u="lastActive",l="lastInteraction",f="used",p="csa-tabbed-browsing",y="visibilityState",g="page",v="experience",b="request",I="initialized",m={"back-memory-cache":1,"tab-switch":1,"history-navigation-page-cache":1},h="TabbedBrowsing",T="<ns>."+h+".4",S="visible",w=d.global,x=d.config,P=d("Events",{producerId:"csa",lob:x.lob||"0"}),q=w.location||{},z=w.document,A=w.JSON,C=((w.performance||{}).navigation||{}).type,E=d.store,O=d.on,$=d.storageSupport(),k=!1,R={},j={},B={},J={},K={},M=!1,N=!1,D=!1,F=0,G=x["CSA.isRunningInsideMShop"];function H(e){try{return A.parse(E(p,void 0,{session:e})||"{}")||{}}catch(e){d.error('Could not parse storage value for key "'+p+'": '+e)}return{}}function L(e,i){E(p,A.stringify(i||{}),{session:e})}function Q(e){var i=j.tid||e.id,t={},n=R[u]||{};for(var r in n)n.hasOwnProperty(r)&&(t[r]=n[r]);!G&&t.tid!==i||(t.tid=i,t.pid=e.id,t.ent=K),J={pid:e.id,tid:i,ent:K,lastInteraction:j[l]||{},initialized:!0},B={lastActive:t,lastInteraction:R[l]||{},time:d.time(),initialized:!0}}function U(e){var i=e===s,t=z.referrer,n=!(t&&t.length)||!~t.indexOf(q.origin||""),r=i&&!G&&n,a={type:e,toTabId:J.tid,toPageId:J.pid,transitTime:d.time()-R.time||null};r||function(e,i,t){var n=e===c,r=i||G&&!(j[I]&&j.ent)?R[u]||{}:j,a=R[l]||{},d=j[l]||{},o=i||G&&!(d.id&&!d[f])?a:d;t.fromTabId=r.tid,t.fromPageId=r.pid;var s=r.ent||{};s.rid&&(t.fromRequestId=s.rid||null),s.ety&&(t.fromExperienceType=s.ety||null),s.esty&&(t.fromExperienceSubType=s.esty||null),n||!o.id||o[f]||(t.interactionId=o.id||null,o.sid&&(t.interactionSlotId=o.sid||null),a.id===o.id&&(a[f]=!0),d.id===o.id&&(d[f]=!0))}(e,i,a),P("log",{navigation:a,schemaId:T},{ent:{page:["pageType","subPageType","requestId"]}})}function V(e){D=function(e){return e&&e in m}(e.transitionType),function(){R=H(!1),j=H(!0);var e=R[l],i=j[l],t=!1,n=!1;e&&i&&e.id===i.id&&e[f]!==i[f]&&(t=!e[f],n=!i[f],i[f]=e[f]=!0,t&&L(!1,R),n&&L(!0,j))}(),Q(e),M=!0,function(e){var i,t;i=X(),t=Z(!0),(i||t)&&Q(e)}(e),F=1}function W(){k&&!D?U(n):(k=!0,function(){if(C===a||D)U(i);else if(C===r)U(j[I]?c:s);else{U(j[I]||G&&R[I]?e:s)}}())}function X(){var e=t,i={};return!!(M&&e&&e.e&&e.w)&&(e.w("entities",function(e){i=e||{}}),j[l]={id:e.e.messageId,sid:i.slotId,used:!(R[l]={id:e.e.messageId,sid:i.slotId,used:!1})},!(t=null))}function Y(e,i,t,n){var r=!1,a=e[u];return N?(!a||a.tid!==J.tid||!a[S]||a.pid!==t||!a.ent&&n||n&&function(e,i){var t=e||{},n=i||{};return t.rid!==n.rid||t.ety!==n.ety||t.esty!==n.esty}(a.ent,n))&&(e[u]={visible:!0,pid:t,tid:i,ent:n},r=!0):!G&&a&&a.tid===J.tid&&a[S]&&(r=!(a[S]=!1)),r}function Z(e){var i=!1;if(N=G&&e||z[y]===S,M){var t=R[u]||{};i=Y(R,j.tid||t.tid||J.tid,j.pid||t.pid||J.pid,j.ent||t.ent||J.ent)}return i}x["KillSwitch."+h]||$.local&&$.session&&A&&z&&y in z&&(o=function(){try{return w.self!==w.top}catch(e){return!0}}(),O("$entities.set",function(e){if(!o&&e){var i=(e[b]||{}).id||(e[g]||{}).requestId,t=(e[v]||{}).experienceType||(e[g]||{}).pageType,n=(e[v]||{}).experienceSubType||(e[g]||{}).subPageType,r=!K.rid&&i||!K.ety&&t||!K.esty&&n;if(K.rid=K.rid||i,K.ety=K.ety||t,K.esty=K.esty||n,r&&F){var a=R[u]||{};a.tid===j.tid&&(a.ent=K,L(!1,R)),j.ent=K,L(!0,j)}}},{buffered:1}),O("$pageChange",function(e){o||(V(e),W(),L(!1,B),L(!0,J),j=J,R=B)},{buffered:1}),O("$content.interaction",function(e){t=e,X()&&(L(!1,R),L(!0,j))}),O(z,"visibilitychange",function(){!o&&Z()&&L(!1,R)},{capture:!1,passive:!0}))});csa.plugin(function(c){var e=c("Metrics",{producerId:"csa"});c.on(c.global,"pageshow",function(c){c&&c.persisted&&e("recordMetric","bfCache",1)})});csa.plugin(function(n){var e,t,i,o,r,a,c,u,f,s,l,d,p,g,m,v,h,b,y="hasFocus",S="$app.",T="avail",$="client",w="document",I="inner",P="offset",D="screen",C="scroll",E="Width",F="Height",O=T+E,q=T+F,x=$+E,z=$+F,H=I+E,K=I+F,M=P+E,W=P+F,X=C+E,Y=C+F,j="up",k="down",A="none",B=20,G=n.config,J=G["KillSwitch.PageInteractionsSummary"],L=n("Events",{producerId:"csa",lob:G.lob||"0"}),N=1,Q=n.global||{},R=n.time,U=n.on,V=n.once,Z=Q[w]||{},_=Q[D]||{},nn=Q.Math||{},en=nn.abs,tn=nn.max,on=nn.ceil,rn=((Q.performance||{}).timing||{}).responseStart,an=function(){return Z[y]()},cn=1,un=100,fn={},sn=1,ln=0,dn=0,pn=k,gn=A;function mn(){c=t=o=r=e,i=d=0,a=u=f=s=l=0,pn=k,gn=A,dn=ln=0,yn(),bn()}function vn(){rn&&!o&&(c=on((o=p)-rn),sn=1)}function hn(){var n=m-i;(!t||t&&t<=p)&&(n&&(++a,sn=dn=1),i=m,n),function(){if(gn=d<m?k:j,pn!==gn){var n=en(m-d);B<n&&(++l,ln&&!dn&&++a,pn=gn,sn=ln=1,d=m,dn=0)}else dn=0,d=m}(),t=p+un}function bn(){u=on(tn(u,m+b)),g&&(f=on(tn(f,g+h))),sn=1}function yn(){p=R(),g=en(Q.pageXOffset||0),m=tn(Q.pageYOffset||0,0),v=0<g||0<m,h=Q[H]||0,b=Q[K]||0}function Sn(){yn(),vn(),hn(),bn()}function Tn(){if(r){var n=on(R()-r);s+=n,r=e,sn=0<n}}function $n(){r=r||R()}function wn(n,e,t,i){e[n+E]=on(t||0),e[n+F]=on(i||0)}function In(n){var e=n===fn,t=an();if(t||sn){if(!e){if(!N)return;N=0,t&&Tn()}var i=function(){var n={},e=Z.documentElement||{},t=Z.body||{};return wn("availableScreen",n,_[O],_[q]),wn(w,n,tn(t[X]||0,t[M]||0,e[x]||0,e[X]||0,e[M]||0),tn(t[Y]||0,t[W]||0,e[z]||0,e[Y]||0,e[W]||0)),wn(D,n,_.width,_.height),wn("viewport",n,Q[H],Q[K]),n}(),o=function(){var n={scrollCounts:a,reachedDepth:u,horizontalScrollDistance:f,dwellTime:s,vScrollDirChanges:l};return"number"==typeof c&&(n.clientTimeToFirstScroll=c),n}();e?sn=0:(mn(),rn=R(),t&&(r=rn)),L("log",{activity:o,dimensions:i,schemaId:"<ns>.PageInteractionsSummary.3"},{ent:{page:["pageType","subPageType","requestId"]}})}}function Pn(){Tn(),In(fn)}function Dn(n,e){return function(){cn=e,n()}}function Cn(){an=function(){return cn},cn&&!r&&(r=R())}"function"!=typeof Z[y]||J||(mn(),v&&vn(),U(Q,C,Sn,{passive:!0}),U(Q,"blur",Pn),U(Q,"focus",Dn($n,1)),V(S+"android",Cn),V(S+"ios",Cn),U(S+"pause",Dn(Pn,0)),U(S+"resume",Dn($n,1)),U(S+"resign",Dn(Pn,0)),U(S+"active",Dn($n,1)),an()&&(r=rn||R()),V("$beforeunload",In),U("$beforeunload",In),U("$document.hidden",Pn),U("$beforePageTransition",In),U("$afterPageTransition",function(){sn=N=1}))});csa.plugin(function(e){var o,n,r="Navigator",a="<ns>."+r+".5",i=e.global,c=e.config,d=i.navigator||{},t=d.connection||{},l=i.Math.round,u=e("Events",{producerId:"csa",lob:c.lob||"0"});function v(){o={network:{downlink:void 0,downlinkMax:void 0,rtt:void 0,type:void 0,effectiveType:void 0,saveData:void 0},language:void 0,doNotTrack:void 0,hardwareConcurrency:void 0,deviceMemory:void 0,cookieEnabled:void 0,webdriver:void 0},w(),o.language=d.language||null,o.doNotTrack=function(){switch(d.doNotTrack){case"1":return"enabled";case"0":return"disabled";case"unspecified":return d.doNotTrack;default:return null}}(),o.hardwareConcurrency="hardwareConcurrency"in d?l(d.hardwareConcurrency||0):null,o.deviceMemory="deviceMemory"in d?l(d.deviceMemory||0):null,o.cookieEnabled="cookieEnabled"in d?d.cookieEnabled:null,o.webdriver="webdriver"in d?d.webdriver:null}function k(){u("log",{network:(n={},Object.keys(o.network).forEach(function(e){n[e]=o.network[e]+""}),n),language:o.language,doNotTrack:o.doNotTrack,hardwareConcurrency:o.hardwareConcurrency,deviceMemory:o.deviceMemory,cookieEnabled:o.cookieEnabled,webdriver:o.webdriver,schemaId:a},{ent:{page:["pageType","subPageType","requestId"]}})}function w(){!function(n){Object.keys(o.network).forEach(function(e){o.network[e]=n[e]})}({downlink:"downlink"in t?l(t.downlink||0):null,downlinkMax:"downlinkMax"in t?l(t.downlinkMax||0):null,rtt:"rtt"in t?(t.rtt||0).toFixed():null,type:t.type||null,effectiveType:t.effectiveType||null,saveData:"saveData"in t?t.saveData:null})}function f(){w(),k()}function y(){v(),k()}c["KillSwitch."+r]||(v(),k(),e.on("$afterPageTransition",y),e.on(t,"change",f))}); (function(e,h,s){var l={},q=function(d,c,b,k){var g={};try{if(5<=k)return{};c=c||h;b=b||d;for(var n,f=Object.keys(b),a,e=0;e<f.length;e++)a=f[e],n=b[a],"object"!==typeof n||Array.isArray(n)?g[a]=c[a]:g[a]=null==c[a]?null:q(d,c[a],b[a],k+1)}catch(l){m(l,"JS exception in collecting-")}return g},p=function(d,c,b,k){var g=[];try{if(5<=k)return[];b=b||c;for(var e=Object.keys(b),f=0;f<e.length;f++){var a=e[f];if("object"!=typeof b[a]||null==b[a]||Array.isArray(b[a]))switch(!0){case !0===d[a]:g[f]=1;break; case !1===d[a]:g[f]=0;break;case 0===d[a]:g[f]=0;break;case null!=d[a]:g[f]=d[a];break;default:g[f]=null}else g[f]=null!=d[a]?p(d[a],c,b[a],k+1):p({},c,b[a],k+1)}}catch(h){m(h,"JS exception in compression-")}return g},m=function(d,c){e.ueLogError&&e.ueLogError(d,{logLevel:"ERROR",attribution:"A9TQForensics",message:c})},r=function(d,c){try{var b={vfrd:1===d?"2":"3"};"object"===typeof c?b.info=JSON.stringify(c):"string"===typeof c&&(b.info=c);return{server:window.location.hostname,fmp:b}}catch(e){return m(e, "JS exception in constructing pixel - "),{server:window.location.hostname,fmp:{vfrd:0}}}};(function(d,c){try{try{l.CP=h.callPhantom?1:0,l.PE=h.PhantomEmitter?1:0,l.PA=h.__phantomas?1:0,l.PJ=/PhantomJS/.test(navigator.userAgent)?1:0,h.a9tqDerivedFeatures=l}catch(b){m(b,"JS exception in evaluation-")}var k=q(d,c,null,0);try{h.a9tqDerivedFeatures=null,delete h.a9tqDerivedFeatures}catch(g){m(g,"ex in deleting derivedFeatures-")}var n=p(k,d,null,0);try{e.ue&&e.ue.event&&e.ue.event(r(0,n),"a9_tq","a9_tq.FraudMetrics.3")}catch(f){m(f, "JS exception in logging-")}}catch(a){m(a,"JS exception in full flow-")}})({window:{innerHeight:0,innerWidth:0,outerWidth:0,outerHeight:0,length:0,mousemove:"",click:"",callPhantom:"",__phantomas:"",PhantomEmitter:"",_phantom:"",_WEBDRIVER_ELEM_CACHE:"",domAutomationController:"",domAutomation:"",spawn:"",emit:"",Buffer:"",TEMPORARY:"",Components:{classes:"",wdIStatus:"",wdIMouse:"",wdICoordinate:"",interfaces:"","interface":{nsICommandProcessor:""}},netscape:{security:{privilegemanager:""}},isExternalUrlSafeForNavigation:0, opera:{_browserjsran:""}},screen:{availHeight:0,availWidth:0,width:0,height:0,colorDepth:0,pixelDepth:0,orientation:{angle:0,onchange:0},devicePixelRatio:""},navigator:{appCodeName:"",appName:"",appVersion:"",deviceMemory:0,doNotTrack:0,hardwareConcurrency:0,language:"",maxTouchPoints:0,product:"",productSub:0,vendor:"",vendorSub:"",userAgent:"",languages:[],platform:"",webdriver:0,msLaunchUri:"",permissions:""},document:{id:"",height:"",width:"",style:{position:"",top:"",left:"",visibility:"",opacity:"", hidden:"",webkitHidden:"",msHidden:"",mozHidden:""}},a9tqDerivedFeatures:{CP:"",PE:"",PA:"",PJ:""}},h)})(ue_csm,window,document); ue.exec(function(d,c){function g(e,c){e&&ue.tag(e+c);return!!e}function n(){for(var e=RegExp("^https://(.*\.(images|ssl-images|media)-amazon\.com|"+c.location.hostname+")/images/","i"),d={},h=0,k=c.performance.getEntriesByType("resource"),l=!1,b,a,m,f=0;f<k.length;f++)if(a=k[f],0<a.transferSize&&a.transferSize>=a.encodedBodySize&&(b=e.exec(String(a.name)))&&3===b.length){a:{b=a.serverTiming||[];for(a=0;a<b.length;a++)if("provider"===b[a].name){b=b[a].description;break a}b=void 0}b&&(l||(l=g(b,"_cdn_fr")), a=d[b]=(d[b]||0)+1,a>h&&(m=b,h=a))}g(m,"_cdn_mp")}d.ue&&"function"===typeof d.ue.tag&&c.performance&&c.location&&n()},"cdnTagging")(ue_csm,window); } (n=>{var A;n.RXVM=function(r){var i=n([1,function(n){n.u.t[m(n)]=h(n)},2,function(n){n.i[0].t[m(n)]=h(n)},3,h,4,function(n){var r=h(n),t=h(n),n=h(n);b(n)||(n[t]=r)},10,function(n){n.u.o.push(h(n))},12,function(n){for(var r=F(n);0<r--;)n.v.push(S(n))},30,function(n){return!h(n)},42,function(){},43,function(n){for(var r=F(n);0<r--;)n.u.t.push(n.l.pop())},45,a(!0),44,a(!1),48,v(0,y),49,v(1,y),50,v(2,y),51,v(-1,y),52,v(0,_),53,v(1,_),54,v(2,_),55,v(-1,_),58,function(n){p(n,x(n))},59,l(!0),60,l(!1),64,function(n){var r=x(n),t=w(n,n.u._);return p(n,r),t},65,function(n){var r=F(n),t=x(n),u=w(n,n.u._);n.u.t[r]=u,p(n,t)}]),o={40:function(n,r){return"__rx_cls"in n?n.__rx_cls===r.__rx_ref:n instanceof r}},t=(o[20]=Math.pow,s(16,"+"),s(17,"-"),s(18,"*"),s(19,"/"),s(21,"%"),s(22,"&"),s(23,"|"),s(24,"^"),s(25,"<<"),s(26,">>"),s(27,">>>"),s(28,"&&"),s(29,"||"),s(31,">"),s(33,">="),s(32,"<"),s(34,"<="),s(35,"=="),s(36,"==="),s(37,"!="),s(38,"!=="),s(39," in "),n([10,A,11,null,14,!0,15,!1])),u=n([1,function(n){return n.h},17,F,18,function(n){n=m(n)|m(n)<<8|m(n)<<16|m(n)<<24;return n=2147483647<n?-4294967295+n-1:n},19,function(n){for(var r=[],t=0;t<4;t++)r.push(m(n));return new Float32Array(new Uint8Array(r).buffer)[0]},12,S,13,function(n){return n.v[F(n)]},20,function(){return[]},21,function(n){for(var r=F(n),t=[];0<r--;)t.unshift(h(n));return t},22,function(){return{}},23,function(n){for(var r=F(n)/2,t={};0<r--;){var u=h(n);t[h(n)]=u}return t},32,function(n){return n.u.t[F(n)]},33,function(n){return n.i[0].t[F(n)]},48,function(n){var r=h(n),n=h(n);return b(n)?n:("function"==typeof(r=n[r])&&(r.__rx_this=n),r)},51,function(n){var r=h(n),t=0;return b(r)?r:function(){return{value:r[t],done:!(t++<r.length)}}},50,function(n){return n.u.o.pop()},52,function(n){return typeof h(n)}]);function e(n){for(;(r=n).u&&r.u._<r.p.length;){r=m(n);n.h=f(r,n)}var r}function f(n,r){var t,u;return n in o?(t=h(r),u=h(r),o[n](u,t)):n in i?i[n](r):void k("e2:"+n+":"+r.u._)}function c(n,r){return{m:n,_:n,t:[],o:[],F:r}}function n(n){for(var r={},t=0;t<n.length;t+=2)r[n[t]]=n[t+1];return r}function a(i){return function(n){var r=i?h(n):A,t=n.i.pop(),u=A,u=t.F?t.t[0]:r;return n.l=[],n.u=n.i[n.i.length-1],d(n,n.u.m),u}}function v(u,i){return function(n){var r=h(n),t=u;for(-1===u&&(t=F(n));0<t--;)n.l.push(h(n));if(n.h=A,r)return i(r,n)}}function l(u){return function(n){var r=h(n),t=x(n);(u&&r||!r&&!u)&&p(n,t)}}function s(u,i){o[u]=function(n,r){var t=Function("a","b","return a"+i+"b");return(o[u]=t)(n,r)}}function _(n,r){var t;if(n.__rx_ref&&n.S===r){var u=c(n.__rx_ref,!0);u.t.push({__rx_cls:n.__rx_ref}),r.i.push(u),r.u=u,d(r,u.m)}else if("function"==typeof n){u=r.l.reverse().splice(0),u=Function.prototype.bind.apply(n,[null].concat(u));try{t=new u,r.l=[]}catch(n){}}else k("e5:"+n+":"+r.u._);return t}function y(n,r){var t;if(n.__rx_ref&&n.S===r){var u=c(n.__rx_ref);u.t.push(n.__rx_this||this),r.i.push(u),r.u=u,d(r,u.m)}else if("function"==typeof n){u=r.l.reverse().splice(0);try{t=n.apply(n.__rx_this||this,u),r.l=[]}catch(n){}}else k("e4:"+n);return t}function h(n){var r=m(n);return 0<(128&r)?f(127&r,n):r in t?t[r]:r in u?u[r](n):void k("e3:"+r)}function w(t,u){var n=g(function(){var n=c(u),r=n.t;return r.push(this),r.push.apply(r,arguments),t.i.push(n),t.u=n,d(t,n.m),e(t),t.h});return n.__rx_ref=u,n.S=t,n}function b(n){return(n===A||null===n)&&(r&&k("e10"+n),1)}function d(n,r){n.g=r%127+37}function p(n,r){n.u._+=r}function m(n){return n.p[n.u._++]^n.g}function x(n){n=m(n)|m(n)<<8;return n=32767<n?-65535+n-1:n}function F(n){for(var r,t=0,u=0,i=n.u._;t+=(127&(r=n.p[i+u]^n.g))*Math.pow(2,7*u),u+=1,0<(128&r););return p(n,u),t}function S(n){for(var r=F(n),t="";0<r--;)t+=String.fromCharCode(m(n));return t}function g(n){return function(){try{return n.apply(this,arguments)}catch(n){k(n)}}}function k(n){if(r)throw Error(n)}this.execute=g(function(n,r){var t,u;return 82!==n[0]&&88!==n[1]?k("e1"):(n=n,t=3,(u=c(0)).t[0]=(r=r)||{},u._=t,d(r={p:n,h:0,i:[u],u:u,l:[],v:[],g:0},0),e(t=r),t)})}})("undefined"==typeof window?global:window); (n=>{for(var i="undefined"==typeof window?n:window,t=0,n="addEventListener",f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),u=[],r=i.rx||{},o=r.c||{},e=o.rxp||"/rd/uedata",a=o.fi||5e3,c={},d={},w=[],v=0,x=0;x<f.length;x++)u[f[x]]=x;function y(n,r){return function(){try{return n.apply(this,arguments)}catch(n){h(n.message||n,n)}}}function h(n,r){n=(""+(n||"")).substring(0,100),w.push(t),w.push(n.length);for(var i=0;i<n.length;i++)w.push(n.charCodeAt(i));if(o.DEBUG)throw r||n;U()}function l(n,r){r=y(r),n in d||(d[n]=[]),d[n].push(r),n in c&&r()}function s(n,r){n in c||(c[n]=r,(d[n]||[]).forEach(function(n){n(r)}))}function m(n){for(var r=0,i=0,t="",o=0;o<n.length;o+=1)for(i+=8,r=r<<8|n[o];6<=i;)t+=f[r>>i-6],r&=255>>8-(i-=6);return 0<i&&(t+=f[r<<6-i]),t}function A(n){for(var r=0,i=0,t=[],o=0;o<n.length&&"="!==n[o];o+=1)for(i+=6,r=r<<6|u[n[o]];8<=i;)t.push(r>>i-8),r&=255>>8-(i-=8);return new Uint8Array(t)}function U(){!v&&0<a&&(setTimeout(y(g),a),v=1)}function g(){if((v=0)===w.length)return"";rx.ep(w,p),w=[]}function p(n){n=m(new Uint8Array(n));n=e+"?rid="+rx.rid+"&sid="+rx.sid+"&rx="+n;(new Image).src=n}function b(n){s("load",n)}function E(n){b(n),s("unload",n),g()}(i.rx=r).err=h,r.r=y(l),r.e=y(s),r.exec=y,r.p=y(function(n,r){s("rxm:"+n,r),w.push(255&n),w=w.concat(r),U()}),r.ex64=y(function(r,n){l(n||"init",function(){var n;i.RXVM&&(n=A(r),i.$RX||(i.$RX=new i.RXVM),$RX.execute(n,i))})}),r.e64=y(m),r.d64=y(A),r.erc4=y(function(){var n=rx.ep4(w);return rx.rid+"#"+m(new Uint8Array(n))}),s("init",{}),n in i&&(i[n]("load",y(b)),i[n]("beforeunload",y(E)),i[n]("pagehide",y(E)))})(window); rx.ex64("UlgBKT0nV10vcExLUR1kV1dEXCNJQEtCUU0hUU1ASy9KS0ZKSFVJQFFALUZESUlHREZOJ0JRIWhEUU0gQ0lKSlchYURRQCZLSlImVkBRLnBMS1EWF2RXV0RcI0dQQ0NAVyNWUEdRSUAiQEtGV1xVUSFLREhAImRgdghmZ2YjQUxCQFZRInZtZAgXEBMgYWBncGIhQF1ARiZXTEEmVkxBJCQVKCUFJSQnuDMVKSRGBSQkJrgVKSNGV1xVUUoFJRUpLUhWZldcVVFKBSVkImMlXnRARXh0VHVFeHdVdHR3dHR2ZHVJ1UV4d1V0VXZRdURFeX8WHRQHNhoREDQBVXRVdn90cUdVdlV3dHblZHRVdk+kilhVd2QtPiVrQ0FEcGBCYEFEcGBDYEFgQmBBRGBEYENgQWxkLOsldF1eXEteW0teWk5fXllOX15YTl9eV05fY/9O311/V05fW39Xf1d/XF5Xz05ef1dluaBeV05fY/9O311/V3FfXlrKTt9dz2/Kb1Jdf15/V39ez29/V39cf1psfldcf1p/V39cXlfPTl5/V2WWoF5XTl9j/29SXX9df1cQX15Yyk7fXc9OXn9YXlnKTt9dz29/WH9cf1lsfldcf1l/WH9cbm9TWy8qLDd/W8dvyk7fXc9vf1l/XG9/WH9cf1xvf1d/XV5Xz05ef1dl+aByf1tkL20lGDEPlBMyPjA+MwIDPjATMhMxHjIJAzMPlBMyPjcbMzcTMT42EzJzIDN2bWxRWXxcbFBaLjkvKTAofFxwOTI3AT43EzIeEzIfZC69JVR9Q+LhXnvhXnl+f1NPT3J1T3J2Xn9sbpd4fnV+Tk9yd09yeF5/TWJ+T3J5T3J/Xn9+fH5KT3J+Xn/vT3J9X35ue357fkpPcnNef2p+X3x8T3JyfnV+Sk9yfl5/TXV+Tk9ydF97TU1PcnRfe257X35MT3JwT3JxXnx8X3tee2h5bv9+cn1eeXN9FglybnJvdX5NXnVffU1TZClQJbedoAK9mZ2csKyskZaskZW9nI+NdJudlp2trJGUrJGbvZyugZ2skZqskZy9nJ2enamskZ29nAyskZ68nY2YnZ+dqayRkL2ciZ28np+skZGdlp2prJGdvZyulp2trJGXvJ+urqyRl7yfjZi8na69lbyfvZmxnWQoKyS9lKe3kbaXl5eXp7eRtpSXlJekppuEppuYt5W2l5uFnJfW/ZYQOg4LNjoaOxs6OT46CAs3MlJWS1RJT3BeQgs2NRo4Pi45NzxfXlhJQktPNjQ0LD8quzo2OTYqNisbOjc4SVpMMTp7JjurgYKEoIG8sI2UoYKMgIShhIyF39/l8uuhga2hhDE6CRoxCQkWOpyXpLecpKSXlZekppuEppuYt5W2lJuFnJfWvZZoQnFzT0YwLyogJmNCUlNSQ0FFQn9zTldiQU9DR2JFT0YcHCYxKmJCbmJFnJekt5ykpJeSl6qmm4K3lLOWp6aalff6+qaakcbk+fv/5fO3loOUtpK2lZyXkqSaksnJ8+S3l7oUFSgwBSQFLi8kIRcpJ0BVBSQUFSgwBSQFKS8kIRcpJkBVEQUkGbkVKDIFJBUoMwUkMSUUFSgwBSQFKBckFSgyBSQVKDMFJA==","load"); rx.ex64("UlgBKSAhQUpLQCBTRElQQCBDSUpKVydXXSFAXUBGJCQVKSFoRFFNBSVkJ5gleVNTUGJeVD43PDUmOnJTU1FDUlNWYXJTYnJWU1dTU1RiX1NyV272XWJfUnJXWFJTUcJyVHJRaI2tU1XPQ1LBclByUVNaQ1JTW2FyU2JyW1NYU1NUYl9Tclhu9l1iX1JyWEJSU1rCxkNQw3JVclRyWmiLrWNiXlYhIyAmc1PBclByWlNZU2NiX1BzU3JQREOtrVFTWFNjYl9Qc1NyVURDra1RU1hTY2JfUHNTcllEQ62tUVNYU1FHUWBgYH9TZCZlJb+VpbWWtJWVlpW5gZIChWuVpIWWtJYOhZykhZa0lgKFa5WkhZW0lg6FnKSFlbSWAoVrlaSFlLSWDoWcpIWUtJYUFSghFSgmBSUFJy8kIRcpJ1ZEFSgmBSUUFSghFSgmBSUFJi8kIRcpJlZERxUoJgUl","load"); rx.ex64("UlgBKS8sUkBHQVdMU0BXI2pHT0BGUSFOQFxWIkxLQUBdakMhQUpLQCBTRElQQCBkV1dEXCN2XEhHSkkgdVdKXVwnV10kJDQ1JCc0JCQmuDMVKSxLRFNMQkRRSlcFJSQhuDMVKS1BSkZQSEBLUQUlZCA2JbK1BgaolJLo9Pnh7+rx//DsuZhkIyglGh2tlxEwPTAAPTARM2QiZyVrcHFMQ3FMQGBBYEFAQHJAcWFAQENAQEJxTERhQ33lTnFMRWFDWEFwcUxCYUJNRSIlIh5lUEFAfUBDQWxPe5G+bE5kLZQlrba3ioW3ioamh6aHhoa0hrenhoaFhoaEt4qCp4W7I4i3ioOnhQ+HtreKhKeEi4HYxvX15v6mloeGm4YhioGnhJsjt4qBpoe3p4Smh4a7hoWHqom2t4qEp4SLgNjU/url6OumloeGm4YhioCnhJsjt4qApoe3p4Smh4a7hoWHqom2t4qEp4SLgdjX9ej//qaWh4abhiGKj6eEmyO3io+mh7enhKaHhruGhYeqib3meKqIZCwFJRQTo5kfPjI1XV9SUm5WX1BKUVOZHz4yNmFOVl9QSlFTZC/hJUhTUm5vARAHAxYHJw4HDwcMFkNmbmQBAwwUAxFjY2NTUm5oBQcWIQ0MFgcaFkJjbmcVBwAFDmNgY178QmBgYk9sU1JubgUHFicaFgcMEQsNDEJgbns1JyAlLj0GBwAXBT0QBwwGBxAHED0LDAQNYVJudTcsLyMxKScmPTAnLCYnMCcwPTUnICUuY2hjU1JubgUHFjIDEAMPBxYHEEJgUGNhY17GaEJhYGJPbFNSb2FCYW5pMRULBBYxCgMGBxBDc2JjT2NkLgYlBgGIHCAnRUJCSV5kSUVLRFgNLBwgJ0NZWEleZElFS0RYDSxkKQ4leX73Y19ZOj09NiEEOjcnO3JTY19YMD86Nj0nBDo3JzvORWNfVzE8NypyVyQoMC0FKQUuBS8FLAUtBSIFIwUgZCtCJbyXl4eWl5SHlqo2ppqQ+vP48eL+t5u2lKyWp6aakvPu8/Wmm5+3lqa2lLebppeXlZeqMpy2lZWWl5WYqraVnJaXlwEPtpSHl7aXl5QGh5e2lKwjaaSmmpfmppuft5aDlLaXt5S3l7oXFSkkVxUoLAUlBSspIUlKREE=","load"); rx.ex64("UlgBKS81REFBYFNAS1FpTFZRQEtAVyxISlBWQEFKUksiSEpQVkBQVTZXQEhKU0BgU0BLUWlMVlFAS0BXJ1ddLFFMSEB2UURIVS5VQFdDSldIREtGQCZLSlIhQF1ARiRXJCQ0BSQnNCokJjIhKykiRkRVUVBXQCspIlVEVlZMU0AkIbgzFSktQUpGUEhAS1EFJSQgFSkhaERRTQUlJCMrJCw0JSQuMWQpOSV6Y2BdUHFUU3FTcVddUWNgXVBxVFNxU3FYXVJ8ZCg6JVpydn9DQH1zUXRzUXNRd31xQ0B9c1F0c1FzUXh9clxkKwwlua8NspWSk7+RlZyio5+Q4PLxo56XspOymJmSoaOfkuOjnpeyk6Gykr9kKjMlakBxcUxGcUxHYEFcQHFMRGFAQ0tAbWQ1GyVwWmtrVlxrVl16W0Zaa1Zee1paWVpaWMp6UXtZWVLLSlp6UmprV18rLigzelB7WGf6ell6Ul1ba3pVa3pWdxQVKC0VKCEFJQUqJCIkFBUoLRUoIQUlBTUkLSQXFSgsFSghBSUFKSkhSUpEQRcVKCwVKCEFJQUrKSNQS0lKREE=","load"); rx.ex64("UlgBKSIsSEpQVkBISlNAJ1ddJlZERyFGQExJIVVQVk0mREdWJFckJDQEJCc07SQkJjTaJCQhMiErKSJGRFVRUFdAKykiVURWVkxTQCQguDMVKS1BSkZQSEBLUQUlJCMVKSFoRFFNBSUkLSskKDQlJCsxJCoxZDU6JbStrpKO//r62+j78OrS9+3q+/D77L+bnb+av5mTnrJkNAAlaEBKTXFyTlEwJy8tNCcHNCcsNg4rMTYnLCcwY0dBY0ZjRU9CbmQ3YCVBV/VKY2prR2ljZFpbZmlbZmpKa0plampqWltmaVtmakprSmRhalpbZ20IBAUICh9LallqampZW2dqG1tmakprS2pKakdkNnkkHjQFBTk2W1pCBTk+RVBHU1pHWFRbVlAUNSg0BTk8QVxYUGZBVFhFFTQ0NzQ0NqgkNQU5MEVUUlBtFTQ0MagkNQU5MEVUUlBsFTQJqZEUPhUxkRQ/FTY0NRkJqaoUN6QUPBU3FDw5NTc8Pzc/Pzc+Pzc5PwmTPxQ8QDUHBTkwVEFUWwcUM6QUPxU2pBQ+FTE0MDQEBTkxRkRHQRQzpaEkN6QVNhQ/oSQ3pBUxFD4/NAQFODYUMwc0MzQJqJEUPBU3kSQ1FTM+NQQFODEUOyQ1Dyg1BAU4NhQzpyTdMqakFDwVNxUzNDI0BAU4MRQ7FTIJkz8UOXU1BAU4MBQzpBQ5FTAkNKcFOTdlfBQzJDc/NAQFODAUM6QUORUwPzQHBTk2WFxbFDMHBzQ9NAQFODEUOqck3TIVPTc4pSQ0FDg3PBU3Nz8VNjc+FTE3ORUwCaoUNhQ4MzUFFCcFFCQZFBUpIUBdQEYVKCQFJQU2JCIkFxUoIxUoJAUlBTUpIUlKREEXFSgjFSgkBSUFNykjUEtJSkRB","load"); rx.ex64("UlgBKSYjVkZXSklJJ1ddJFckJDQHJCc07SQkJjTaJCQhMiErKSJGRFVRUFdAKykiVURWVkxTQCQgFSkhaERRTQUlJCMrJC40JSQpMWQoOiVfRkV5ZRQRETADEBsBORwGARAbEAdUdXZUcVRyeHVZZCsAJbKanperqJSL6v319+793e799uzU8evs/fb96rmYm7mcuZ+VmLRkKg4laH7cY0RDQm5ARE1zck5BMSMgck9DY0JjTkNDQ3ByTkMyck9DY0JiQ2NDbmQ1iiVacEFBfXIfHgZBfXoBFAMXHgMcEB8SFFBxbHBBfXgFGBwUIgUQHAFRcHBzcHBy7GBxQX12AhIDHh0dKFBxTe3uUHPgUHlRc1B5eHFzeXtzeHtze3tN13tQeUdxQEF9chATAlB04FB4UXJwdXBAQX11EhQYHVB042CZduLgUHlRc1F1cHRwQEF9dQEEAhlQfVF0c3rhYHBQenN5UXNzeFFyTe5QclB6d3FBUH5BUH9dFBUpIUBdQEYVKCQFJQU1JCIkFxUoJxUoJAUlBSgpIUlKREEXFSgnFSgkBSUFKikjUEtJSkRB","load"); rx.ex64("UlgBKSghaERRTTZXQEhKU0BgU0BLUWlMVlFAS0BXLEhKUFZASEpTQCBGSUxGTiNWRldKSUkmUURCJ1ddIEZKUEtRIkZJTEBLUX0iRklMQEtRfCJWRldKSUl8IUBdQEY1REFBYFNAS1FpTFZRQEtAVyQkuDMVKS1BSkZQSEBLUQUlJCe4MxUpJ1BABSUkJhUpJlBAXQUlJCEVKSFWVFdRFSglBSUkIBUpJlVKUhUoJQUlJCMVKSZER1YVKCUFJSQiMiErKSJVRFZWTFNAKykiRkRVUVBXQCQtNEEkLDRBJC8uJC4uJCkuJCguJCsuJCouJDU0JSQ0NCVkNwwliJGSr6ODoqGDpYOor6CRkq+jg6Khg6WDqa+hkZKvo4OioYOlg66vpo5kNkAlemxgXVVxUmVQYWBdVXFSXEY4MSN9IyQiPz43fTk+JDUiMTMkOT8+bMxxU2BcUzkjPHFSWVBicVNdVlxSMSRsYF1XcVJLUGJgXVdxUkFRXEEDJCI/PjcZPiQ1IjEzJDk/PmBxQnxkMT8lETsGpqUrOgo3Mxo7pSs6CjcyGjs5OgobKRZkMHwlc1lkxP5TeVb+U3lVaVhqeV1JWsl5VWhVUHhZUllqeV1JWsl5VmhVUXhZUllIampSWWl5XGpZWllaSch4WnlJZPl5UHlJW1hoeUtaVWhVUHhZWlZoVVF4WXRkMwslHTcKkD0XOSQ2Bxcwpxc5Bjs8FzYmNxcmNCY3CpcXPxcmNTYGFyU0OQY7PBc2GmQydiVCWVhlY1hlbkloSX1qYmlZWGVjWGVuSWhJfGpjaVlYZWNYZW5JaEl+amRpW1hlZEloa0lvSWJlaltYZWRJaGtJb0ljZWtbWGVkSWhrSW9JZGVsRBcVKSRXFSgjBSUFMikhSUpEQQ==","load"); rx.ex64("UlgBKScmUURCJ1ddJCS4MxUpLUFKRlBIQEtRBSUkJ7gzFSknUEAFJSQmFSkmUEBdBSVkIXUlcFpua1ddCT48HiMrelvLV1NmcwAFYAZwcst7WldecwUne3JRWmprV142Oi84M2tXXTg0NDAyPnpaaVpZWmtrV18vKTI2a0pZe1lHWntZdlpkIBolGzEMAD0wETIEMAEAPTARMqAQMTwiQkgdWFlXWFVDRB1RU0RZX14KDKwRMwA8M1lDXBEyOTACETM9MTwyUUQcZCN3JVlCUnd+cnJyckJDf3YAAx8aB1Nyf3IzcENicnJvclNycnFyT1NxWnNCQ393EgccEVJzU3FycHJCQ395EBsSATAcFxYyB1NwYnNyd3JCUnZTd18XFSkkVxUoJAUlBSMpIUlKREE=","load"); /* ◬ */ </script> </div> <noscript> <img height="1" width="1" style='display:none;visibility:hidden;' src='//fls-eu.amazon.fr/1/batch/1/OP/A13V1IB3VIYZZH:258-2477753-5488862:74HCJVK5ZY1QW82XSHCC$uedata=s:%2Frd%2Fuedata%3Fnoscript%26id%3D74HCJVK5ZY1QW82XSHCC:0' alt=""/> </noscript> <script>window.ue && ue.count && ue.count('CSMLibrarySize', 81368)</script> <!-- sp:end-feature:csm:body-close --> </div></body></html> <!-- _ .__(.)< (MEOW) \___) ~~~~~~~~~~~~~~~~~~--> <!-- sp:eh:6M2tIIi16gbKLJRQJSXj0hAoMhHMum1RPuFgKRxoIFtOXEPGS2aJ6XDWThLRJeFTdOTXZbcA7xbp7T4IQ5YINoJ6L4KPbWIuN6Khx5Jmnt+dcN0NA7gxqySIxeY= -->