Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Price Floors module rejects valid bids ? #8565

Closed
matthieularere-msq opened this issue Jun 15, 2022 · 16 comments · Fixed by #8655
Closed

Price Floors module rejects valid bids ? #8565

matthieularere-msq opened this issue Jun 15, 2022 · 16 comments · Fixed by #8655
Assignees
Labels

Comments

@matthieularere-msq
Copy link
Contributor

Type of issue

bug

Description

In prebid's console log lines I can see bid which are rejected by the price floor module but as far as I understand they are valid bids. For example see attached screenshot, where floorValue 0.25 is set in currency EUR, a 0.2886 USD bid is received, converted to 0.2761 EUR but is rejected.

Steps to reproduce

I noticed this behavior on this page https://www.marmiton.org/?pbjs_debug=true after a few refreshs.

Is there something I missed with the reason why this bid was rejected ?

Thanks.

@dgirardi
Copy link
Collaborator

I do not see a screenshot in the OP - it would help to get an example of a bid you believe should not have been rejected together with your prebid configuration.

Trying on that website I saw this - does it qualify?
rejectedBid

in that particular case the cpmAfterAdjustments is below the 0.25 floor. You have some adjustment logic but from my end it's not obvious how it works:

cpmadjustment

You should be able to set floors on unadjusted CPMs with the enforcement.bidAdjustment config option for the priceFloors module.

@dgirardi dgirardi moved this from Triage to Needs OP in Prebid.js Tactical Issues table Jun 15, 2022
@jlquaccia
Copy link
Collaborator

Starting to look into and work on this ticket today

@matthieularere-msq
Copy link
Contributor Author

Hi @dgirardi indeed that an example of rejected bids I see and where I don't understand why they are considering their cpm is higher than the floor value.

@dgirardi
Copy link
Collaborator

@matthieularere-msq because the CPM is being adjusted lower by your (or your colleagues') bidderSettings.standard.bidCpmAdjustment.

@matthieularere-msq
Copy link
Contributor Author

Should the cpm value already reflect the cpm after adjustment in contrast with originalCpm ?

@dgirardi
Copy link
Collaborator

Indeed it should - and I missed that - it looks like it may be adjusted twice. Looking into this.

@dgirardi
Copy link
Collaborator

dgirardi commented Jun 17, 2022

So, there are some quirks that make it confusing - but I believe the likely explanation is still that bidCpmAdjustment is the cause. To confirm it would help to capture network activity and check what the actual original CPM is for one of these bids.

The logic works like this: when a bid comes back from the backend, first it's passed through the currency module (priority 100), then the floors module (priority 50). At the end, just before it gets finally added to the auction, bidCpmAdjustment runs.

I believe what happens is:

  • The currency module converts cpm from USD to EUR and also sets originalCpm;
  • The floors module picks the EUR value, runs it through bidCpmAdjustment (because the "real" run has not happened yet), compares it to the floor and sees that it's lower, so it rejects the bid;
  • The final "bidCpmAdjustment" never runs - because the bid has been excluded at this point.

So the cpm and originalCpm you see logged are those set after currency conversion, but before CPM adjustment.

I'll see if I can get another one of those bids from the website in the OP to conclusively say this is the case - if it is, I don't think it's great, but I'm not sure how to "fix" it - my instinct is that a single originalCpm does not work well with multiple adjustment steps, but it's going to be hard to redesign.

@patmmccann
Copy link
Collaborator

patmmccann commented Jun 17, 2022

@robertrmartinez could you weigh in? Do you think this can be addressed straightforwardly?

@patmmccann patmmccann added the bug label Jun 17, 2022
@dgirardi
Copy link
Collaborator

dgirardi commented Jun 17, 2022

Here's the confirmation - this is a problem about the meaning of cpm / originalCpm rather than price floors.
This bid:
AdagioRejected

Corresponds to this response from Adagio:

{
  "id": "904981a1-3fc3-43de-8e93-33dfe418d28b",
  "bids": [
    {
      "requestId": "20dcc4233181c8e",
      "creativeId": "392890663",
      "cpm": 1.25314785,
      "currency": "USD",
      "ad": "\u003cimg width=\"0\" height=\"0\" border=\"0\" alt=\"\" style=\"display: none;\" src=\"https://c.4dex.io/bimp.gif?adu_code=pegasus_placeholder_banner_atf\u0026auction_id=a41fe775-0f14-4ed9-91db-94a53355f95e\u0026bid_id=6C283AA1-5EE3-4B9C-806F-E76ADA036EDA\u0026bidder=pubmatic\u0026breq_id=894eb09c-5ace-4c0a-a01a-4f4480e19658\u0026browser=chrome\u0026buid=1\u0026buids=3310\u0026category=\u0026cpm=1.46567\u0026crea_id=392890663\u0026ctry=USA\u0026curr=USD\u0026deal_id=\u0026dvc=2\u0026environment=desktop\u0026h=250\u0026lzy=0\u0026mt=ban\u0026net_cpm=1.25314785\u0026org_id=1110\u0026os=linux\u0026partid=2022061714\u0026pgtyp=\u0026plcmt=banner_atf\u0026pn=1\u0026pub_id=10308\u0026pv_id=38e96607-9b56-4a86-9c4c-9f88d5ea87e9\u0026rpmadc_smpl=1\u0026rule_id=1145\u0026seattyp=shared\u0026site=marmiton-org\u0026sspv=4.3.0-gcp-las\u0026subcategory=\u0026tiv=16\u0026url=https%3A%2F%2Fwww.marmiton.org%2F%3Fpbjs_debug%3Dtrue\u0026vr=0.5\u0026w=970\" /\u003e\u003cspan class=\"PubAPIAd\"  id=\"6C283AA1-5EE3-4B9C-806F-E76ADA036EDA\"\u003e\u003cDIV STYLE=\"position: absolute; left: 0px; top: 0px; visibility: hidden;\"\u003e\u003cIMG SRC=\"https://pagead2.googlesyndication.com/pagead/gen_204?id=xbid\u0026dbm_b=AKAmf-DvhS_G_cw3L_y0kvPmBJ7q8w-d326rIXZhYlw95LZAEGmJ9f08qL5pSZOIIoXv-bW8bji4eKJS2gaQfVW1wvJa8qw0svwzlIvqbRPBbGPrE6R7OvM\" BORDER=0 WIDTH=1 HEIGHT=1 ALT=\"\" STYLE=\"display:none\"\u003e\u003c/DIV\u003e\u003ciframe title=\"Blank\" src=\"https://googleads.g.doubleclick.net/xbbe/pixel?d=CM3knwEQgOefARinkqy7ATAB\u0026v=APEucNWgCv17xVKIZHVt68HxJyYuL_z_PGwhqLHDGxOVOQA2BTV9I-ZyDtdqs1aszIOYiAKf59BXPY9HsCQbeBoZiAak7siVoF5r1HHT8WFDMNxvQ7DAMdHB437HNIbIC6HesvQvYX_kCq4gimj0djK-9k-HnRLOaZgqA2HvL6oBrERYB83XA78h8q6B_bgcqsgsyPuVeLZx8No2ke9417wphk3rbBKgLWyt5DLwz_hfbNQ8EXNeBos_HoaH3Tok3nAg67c6jsyNv-_GeauLtJjX37yIkj5WKJX7FYuspcPwtMiYqvCi_S1I5flDedTVG-gnqXkcvOUVN8uaP2VvZXy56iwfdj6MW-XKhKd7O6JC5v4xqyKMJJhteNic2_VyDk1cVC-w70VQ60iyghm8gTta2i6iuhfZUbA7-AZ7t1SQ9BuO69VWhm5OTQzD9PumBXnRbWGLqaBydp-j_YxPg0VbRC96xVDKNQY2wL8t-3XA6HlcF2bFuaIM8rlBnUKxum47aMir17y_z2aywrPx_2Z8tRxBIOv6CzXOQ9mZVNRtI3vnglJPrvFj_eTyiGGIuj6qqTBVF1P92R5pV5n2u7ZAARWGIOtoBVMsWmMEl862RSEp83JeieGYUkkHBK6NKIySSi-bCi4uTNyzrg0vO2Y6EaLuJ0Kf9NArbpWmZtqwpPSDTKw5b3asYa1a57Ve3RKbwTvXjoybdV5FeV6OwnwlPBmydKy44NHEjErdTP_1QzDRZtcKLBwg3Y23g8qf3GoiM0g24mzKpsP7BHeSy4wdW0P3GM8g5KRQ3mlcl5EHZth_4E8eJZpSYK0DnJ893VFmv2qPqLou_r_x0EA8gWI3FB-s59tfTmeVMr2fTRAHDmDTHeD3_AXeKcIwNQwk4X41GxKn106zDFjIlUTvgJPXh3TJ7K1sqMSUtuBPdStPGWoKxRRKOqaw6uBtCi95znnhtgwZLL1yR7mWSHw8jJIre72Wz-1oSMfeWTcY83fhLnU7lHr89Yc_oV_Kgww_CMXhVC-8s4faiVoqXPspBUY9zGmrS9ygSvXvjnWRVQ7nPv0NYzktogzZ0G4Z4Po9Z5HX4zi191HC3_1fMaQecRPD-GXHY8CX3NU5NJvB5s98S3T4o4btky8\" style=\"display:none\" aria-hidden=\"true\"\u003e\u003c/iframe\u003e\u003cdiv\u003e\u003cdiv style=\"position:relative; display:block;\"\u003e\u003cdiv class=\"GoogleActiveViewClass\" id=\"DfaVisibilityIdentifier_2355884792\"\u003e\u003cscript data-jc=\"75\" data-jc-version=\"r20220615\" data-jc-flags=\"[\u0026quot;x%278442\u0026#39;921378y\u0026quot;]\"\u003e(function(){/*  Copyright The Closure Library Authors. SPDX-License-Identifier: Apache-2.0 */ var l=\"function\"==typeof Object.create?Object.create:function(a){function b(){}b.prototype=a;return new b},m;if(\"function\"==typeof Object.setPrototypeOf)m=Object.setPrototypeOf;else{var n;a:{var p={a:!0},q={};try{q.__proto__=p;n=q.a;break a}catch(a){}n=!1}m=n?function(a,b){a.__proto__=b;if(a.__proto__!==b)throw new TypeError(a+\" is not extensible\");return a}:null}var r=m,t=this||self;var u=new function(a,b){this.key=a;this.defaultValue=void 0===b?0:b;this.valueType=\"number\"}(\"100004\",16E3);/*  SPDX-License-Identifier: Apache-2.0 */ var v=Array.prototype.indexOf?function(a,b){return Array.prototype.indexOf.call(a,b,void 0)}:function(a,b){if(\"string\"===typeof a)return\"string\"!==typeof b||1!=b.length?-1:a.indexOf(b,0);for(var d=0;d\u003ca.length;d++)if(d in a\u0026\u0026a[d]===b)return d;return-1},w=Array.prototype.forEach?function(a,b){Array.prototype.forEach.call(a,b,void 0)}:function(a,b){for(var d=a.length,c=\"string\"===typeof a?a.split(\"\"):a,e=0;e\u003cd;e++)e in c\u0026\u0026b.call(void 0,c[e],e,a)},x=Array.prototype.map?function(a,b){return Array.prototype.map.call(a, b,void 0)}:function(a,b){for(var d=a.length,c=Array(d),e=\"string\"===typeof a?a.split(\"\"):a,f=0;f\u003cd;f++)f in e\u0026\u0026(c[f]=b.call(void 0,e[f],f,a));return c},y=Array.prototype.reduce?function(a,b,d){return Array.prototype.reduce.call(a,b,d)}:function(a,b,d){var c=d;w(a,function(e,f){c=b.call(void 0,c,e,f,a)});return c};function z(a){for(var b=[],d=0;d\u003ca;d++)b[d]=\"\";return b};function A(a){A[\" \"](a);return a}A[\" \"]=function(){};function B(a,b){if(a)for(var d in a)Object.prototype.hasOwnProperty.call(a,d)\u0026\u0026b(a[d],d,a)}var C=/https?:\\/\\/[^\\/]+/;function D(a){return(a=C.exec(a))\u0026\u0026a[0]||\"\"}function E(a){a=void 0===a?document:a;return a.createElement(\"img\")};function F(a,b,d){a.google_image_requests||(a.google_image_requests=[]);var c=E(a.document);if(d){var e=function(){if(d){var f=a.google_image_requests,g=v(f,c);0\u003c=g\u0026\u0026Array.prototype.splice.call(f,g,1)}c.removeEventListener\u0026\u0026c.removeEventListener(\"load\",e,!1);c.removeEventListener\u0026\u0026c.removeEventListener(\"error\",e,!1)};c.addEventListener\u0026\u0026c.addEventListener(\"load\",e,!1);c.addEventListener\u0026\u0026c.addEventListener(\"error\",e,!1)}c.src=b;a.google_image_requests.push(c)};var G=0;function H(a){var b=document.currentScript;return(b=void 0===b?null:b)\u0026\u0026b.getAttribute(\"data-jc\")===String(a)?b:document.querySelector('[data-jc=\"'+a+'\"]')};function I(){J||(J=new K);var a=J.g[u.key];if(\"proto\"===u.valueType){try{var b=JSON.parse(a);if(Array.isArray(b))return b}catch(d){}return u.defaultValue}return typeof a===typeof u.defaultValue?a:u.defaultValue};function K(){this.g={};var a=H(G);a=a\u0026\u0026a.getAttribute(\"data-jc-flags\")||\"\";try{var b=JSON.parse(a)[0];a=\"\";for(var d=0;d\u003cb.length;d++)a+=String.fromCharCode(b.charCodeAt(d)^\"\\u0003\\u0007\\u0003\\u0007\\b\\u0004\\u0004\\u0006\\u0005\\u0003\".charCodeAt(d%10));this.g=JSON.parse(a)}catch(c){}}var J,L=K;function M(){this.g={}}L.prototype=l(M.prototype);L.prototype.constructor=L; if(r)r(L,M);else for(var N in M)if(\"prototype\"!=N)if(Object.defineProperties){var O=Object.getOwnPropertyDescriptor(M,N);O\u0026\u0026Object.defineProperty(L,N,O)}else L[N]=M[N];L.l=M.prototype;var P=RegExp(\"^https?://(\\\\w|-)+\\\\.cdn\\\\.ampproject\\\\.(net|org)(\\\\?|/|$)\");function Q(a){a=a||R();for(var b=new S(t.location.href,!1),d=null,c=a.length-1,e=c;0\u003c=e;--e){var f=a[e];!d\u0026\u0026P.test(f.url)\u0026\u0026(d=f);if(f.url\u0026\u0026!f.h){b=f;break}}e=null;f=a.length\u0026\u0026a[c].url;0!=b.depth\u0026\u0026f\u0026\u0026(e=a[c]);return new T(b,e,d)} function R(){var a=t,b=[],d=null;do{var c=a;try{var e;if(e=!!c\u0026\u0026null!=c.location.href)b:{try{A(c.foo);e=!0;break b}catch(h){}e=!1}var f=e}catch(h){f=!1}if(f){var g=c.location.href;d=c.document\u0026\u0026c.document.referrer||null}else g=d,d=null;b.push(new S(g||\"\"));try{a=c.parent}catch(h){a=null}}while(a\u0026\u0026c!=a);c=0;for(a=b.length-1;c\u003c=a;++c)b[c].depth=a-c;c=t;if(c.location\u0026\u0026c.location.ancestorOrigins\u0026\u0026c.location.ancestorOrigins.length==b.length-1)for(a=1;a\u003cb.length;++a)g=b[a],g.url||(g.url=c.location.ancestorOrigins[a- 1]||\"\",g.h=!0);return b}function T(a,b,d){this.i=a;this.j=b;this.g=d}function S(a,b){this.url=a;this.h=!!b;this.depth=null};function U(a,b,d,c,e){var f=[];B(a,function(g,h){(g=V(g,b,d,c,e))\u0026\u0026f.push(h+\"=\"+g)});return f.join(b)}function V(a,b,d,c,e){if(null==a)return\"\";b=b||\"\u0026\";d=d||\",$\";\"string\"==typeof d\u0026\u0026(d=d.split(\"\"));if(a instanceof Array){if(c=c||0,c\u003cd.length){for(var f=[],g=0;g\u003ca.length;g++)f.push(V(a[g],b,d,c+1,e));return f.join(d[c])}}else if(\"object\"==typeof a)return e=e||0,2\u003ee?encodeURIComponent(U(a,b,d,c,e+1)):\"...\";return encodeURIComponent(String(a))};function W(a,b){this.g=a;this.depth=b}function X(){function a(h,k){return null==h?k:h}var b=R(),d=Math.max(b.length-1,0),c=Q(b);b=c.i;var e=c.j,f=c.g,g=[];f\u0026\u0026g.push(new W([f.url,f.h?2:0],a(f.depth,1)));e\u0026\u0026e!=f\u0026\u0026g.push(new W([e.url,2],0));b.url\u0026\u0026b!=f\u0026\u0026g.push(new W([b.url,0],a(b.depth,d)));c=x(g,function(h,k){return g.slice(0,g.length-k)});!b.url||(f||e)\u0026\u0026b!=f||(e=D(b.url))\u0026\u0026c.push([new W([e,1],a(b.depth,d))]);c.push([]);return x(c,function(h){return Y(d,h)})} function Y(a,b){var d=y(b,function(e,f){return Math.max(e,f.depth)},-1),c=z(d+2);c[0]=a;w(b,function(e){return c[e.depth+1]=e.g});return c}function Z(){var a=X();return x(a,function(b){return V(b)})};G=75; window.rfl=function(a){try{var b=Number(0===(I()||0)?2083:I()),d=Z();d.pop();var c=b-a.length-5;for(b=0;b\u003cd.length;b++){var e=encodeURIComponent(d[b]);if(e.length\u003c=c)return setTimeout(function(){var f=void 0===f?.01:f;if(!(Math.random()\u003ef)){var g=H(75);g=\"https://\"+(g\u0026\u0026\"true\"===g.getAttribute(\"data-jc-rcd\")?\"pagead2.googlesyndication-cn.com\":\"pagead2.googlesyndication.com\")+\"/pagead/gen_204?id=jca\u0026jc=75\u0026version=\";var h=(h=H(75))\u0026\u0026h.getAttribute(\"data-jc-version\")||\"unknown\";f=g+h+\"\u0026sample=\"+f;g=window; var k=void 0===k?!1:k;if(h=g.navigator)h=g.navigator.userAgent,h=/Chrome/.test(h)\u0026\u0026!/Edge/.test(h)?!0:!1;h\u0026\u0026g.navigator.sendBeacon?g.navigator.sendBeacon(f):F(g,f,void 0===k?!1:k)}},0),a+\"\u0026rfl=\"+e}return a}catch(f){}return a};}).call(this);\u003c/script\u003e\u003cscript\u003evar url = 'https://googleads.g.doubleclick.net/dbm/ad?dbm_c=AKAmf-BN_ujQ6A_39NIHNZWs_G-H7YA-HYBptvkN-nhuX3Xjvo733deqpwIjSWe-ALB6NY_f8w9fVj81DqFaziZM0WxuA52ZB4c5Wr9YOoebQ7rBylYIggfoDMU-2nc9RYpwFFcXBwob-sZ51TECenavYH7vAqEnsQ\u0026cry=1\u0026dbm_d=AKAmf-BiaBHYyEhQVzJtsrRFaJvnYMO5CbF5BPj0NvinNIY_OpB9nbMGZdoH_zbxD6mlAgcPpJWrHWPCg1FGzWeif2lkUYMioCT5ydioULidbCHVrSDo7XgqNSvfYhodze6Bgv_DRpAIdttLnl9QdB-8nJDAP7jtrFcgNm2bfvD7PNm8XPpVH2KkOIbIqeVDO51qutrMaXH-HHuwXCE_s5mzHMqYW85Qeg6u9MYs0qvfX-Kz82lI9xCGCGmEtM3zYO3L0s4FAT555n0t4iJJP2_zO0P8Yc3rKQcA_W2cOpewPKU9a7UKzIWdM7xKwGxVY-73JVR1_YSj09E98Kub7IQV-ltYydkBRMZ3DjXG-V5peT9LN11LCpEICuYXKFDqh8PrJUeqaGScK7LXwczDzbv886agfQFxfJJrGg4_TpFxhOwj_Z0HlWrVcRnEmrwufL5DkJ4xTFoiXRcdn-l5oY6xVWdxXUNhuaZrAY9ohJh8eUIW2ROJ3Nr-n5LTNBCuxEwBl3yeMXeTjQacoCu1jjq4gWSo4-xcsav_RUUfWbdgRKw3t2Rxrbp0YmICvUAW_o5NqRz-2NTLt3fk7Wua3Huxo4EbAdWp3vtm_G9_LCODCAntrO0yj7noD-zOHd5YfQbBFLgVvqk78zcWxeLLj5mz5fBjqm87YcRaZxOeHiSSrMYMDJyasCHZOcTl9rvms3Ei1oFRwufbejoKh3JvTSCHiI8MHHo2zoVtWe9eG4yy1Wm-SiVY0mZsdx_S7aj9BIlSjDaQ3ydV9DopdUB1d9f7yphdLcQvFugNBjw9-xc6ajr061qJddr_q5ZOuBlhgEFhbCR-VtQQi_kpfPmWqKbdodprwArlZKG1aW9ePn9IQvzDepwM6UBmuQA8dQzjU5Nt2EoMu38M59cOO2tholrhl43kNEMnTiTrEeytMLajD_Y7sbRDzNkkiZvixKG29WSFU1NlIpD3dlPnbE4-pnZ-IuyjPNFN8iENKK7lYnt1dLfGb8hxUkPwKoN7jB41biWN62BJEUfWaLl5nlslQxTrbZkG9_X5sHRY2o9sjpIux0SHyX9-TkZdKIqyAR-f3NLEK45zh8zlqc3JXXlcmlQs8TV7eeMUOpbuoQBIWrbG9XZacqN-Xsr5encVcz8ElXIcUAjlpzrXBA79_pV7eoXRu_y7qnKoBVO7qWDJ9NXENJSU3EQY9ZEEi5pIaPoYKJSXo7Sg8R5QRxXDHEclukB-p-acOAbb3b1g3ax3Oo-nsrQz2SFlPBdFsb-N-hmeQIfal_T8DuDX1cvnkEBbre8C64y7IAsMbAHXEBheDh8DMbY95H2Cne1vOPOsJ4oIiQCIPy_YCH70dUvugHtNaN3usxDMpR8d5L63ZXI0Q3XGgVXzgsRFXQ5f3aK-bKt_KLT6mHZxk6Sb9IsHh4tZGRipUGLIBvzeEIAelaxMkOjN1TnNo3JZHuh-4GrUCyPwDTrvwqMhEmqo6PI3SH8BOWbGA_n_up9rSJZqrRjZ2kq2oU1pu8fM2c6NkwxgOjJbVSo4_ZPtNigJ0s7YXSXSEvDBDZ75F2PMlsM2TbC1zNl29-isqBrMys-Xsug2OicQzswptr6q-Lz9pCogt0D3jLT8woPexOaPhObivjyqpkwqpOABwC-22MvhUm4uGygu5SLJAi0nEDCH02-ZJH5PyP3Sw5GvkYlzjqPrkI0imcp5eFcbxFOe5SVdktctEvKWfYq9-nrYMUhHCowcBNlrDgKviSuDZw-XOUOFcCuKAVD6jqnK4JmfPEXEws7eDYB2X3ANoMD3w_Ph1_3PWtGawGQVKxHe5KRXoRMa5rytdxRarYwVefeBG7qWhm-tVytcIPGPbpwax90K_hKSBKcPYgVA30Gte8MPL6C-OYP8TA5GbIDdcwpgqgioVM__WzKcjwOZL6fyG6OMzvu0sbHsGh0TLT63UvjXzSBGlYvuAsrWWjGh1Mj8bNyQcUacflCXR8kiaDP_f0TNToG5AcNg8iqS3bJipYYMK4ypoPZ6XCEtMi1gQ2e6KQTH27rrOt78gaFTdFgJMdo595BOJus-xC8A1zz0s-O6vJtEAPN4WtXHREMCGII49h5x-fiOeLy3Pq-r0YZFKfUHHZJJas41o2jCt0MBvbwI29UWCO0QvTWOl0cki1pdTOx2M9ARFOvCb3vTOkUit5narlPDXr1qWGkoJWpREgkNOkxWEwLLnjKyKef2BIzelfU-sLlgSNAIqQoIqgG2VelHr2gAOeP4BB_TILOz1j5rOXQJ3Qxwv2w6khLmJ-dI7vmaLsDsfUEwJghuYIhxH3RjYnrpqAnRSHK4NXvTjQI9qJiCVdxi9tV2_6ra64cEiREZqUo6J3XouyVo3M-qXo1DDrsgqR_keKn5UmO_fUv8TKYkv4lXKGXQY0nlMXp8AHQkHl6EolWeqRrVyq1Vk5DBwpDqimwyWtG2t_81IHB-67Ojj5L7VTgvPe0ggHMLBDowzq_PN947t_2Vwl6SqyiM_nozxy5TNzGAwJw4nqz2vvUiKwTyM6xWLs0RqU83Ge03YdnryV1huUNQqFe2Yp9OIOcmvz2DLfUu_761YGAu4Hvn67gvjDKtnvWeJaVowmwsANSBuBopy-O6kicWtMrHPwAih9aeNcVVSvqM-lt0UI05VOEWJhmaaDA7TjPr-Y5ZqIwVzsVPq58wJcMDKMoVkYZbJBGOuB10pMKaea5N56cwXHAqpHb1OeSznXMNg9716v45g4EGW2Zu6Eapg-WPWOcccYm9nD7RyGmsu3Nd5j0MWds7pXkIx7D-MGtv8OXkeo4ZmwWr2SqtLke6ZUqy3EA8_IBQW3Krsud3CarSem-OYMsgDMc2bzgbSThiz9Od6yV-gEzKRHusIYoztLFFnmJgnND73EqiFQECHLlCgtsWw0pIkcKfCFmQTWHZDoXLQoukJBQ0YN7mGd0HR1t4s2CT4jRQXJ6Y0YQ3rr0zI6dbahDYfgKebclLKNNvWVCXThC22bIJ76U0LnCkZ5pz4kGvFKuReXoU3C3x5oA2EqSoErP5ZJUrHVxK4H5iPeoWdl9dB_9g0oU80rAtBhXxsfXCZZoos_5jxaEdak4ONOrcVvv8_UsluXoQi76b0i5VpJmgbk3FSrU8Lwjl7dKag6POQgHh3UKi4CdOXwT9GeYPUnN4YFtzNDsvzlG7LZk8NYb1VfdStFnaSNdQzI9po2_XHF-xu3ZrwxebGT4Kr2wGSkPMRcRZl-ONplfUBRF2c9dIhTiaARW2bMFbmp46WSW7veF3F1RkxT-26SVP9gB1LhEa1GLkIg9E3qu2Z3Up3xquEOM1S8SHDn7Qcn4KuKn0LYWy_J0XHCJKt1DjCNCjuIhVj33v-shq2l2rIV3a4Khq_5a7IfPOsSozB9vqDBElN2JXexjzWMJjcUNPSHvsbx0CySFs4X2JhVpDPneLnuW8vEPiE9BNrx6l6JS750NZr91ZQRMm_tCv-IgnhmQQC5rU_yxWq-AEJUsD4jO15UCyt_vRY14GLZYlMqjv\u0026pr=6:1.744845\u0026cid=CAASEuRoPvAUHwF-nROeHEsAy3s8dg';document.write('\u003cscript src=\"' + (window.rfl ? window.rfl(url) : url) + '\"\u003e\u003c/s' + 'cript\u003e');\u003c/script\u003e\u003cSCRIPT language=\"JavaScript1.1\" SRC=\"https://fw.adsafeprotected.com/rjss/bgd/164425/58606508/xbbe/creative/adj?p=APEucNXfwsgcYXeWqRnuvBwgQG5hlto0nsp0m2G40htyhcg0WbXiw28\u0026d=CnkAoCZ_4FaKdr3SAVz0qHzWo5qAN5ZhH8fGE9vz677yYovvlXOgibNjWjl9zUFrCpiJltbe8_M-zBuTy9I1YXMbTFgZRzjgsKY76wlETcB0LCJfKjfBVOgg2u7h7aXdMfPFpwBgcq_Q0ZtNkJa8xZY6PEoo3R5OgmcOErkRAKAmf-DnQScW2C4TNCLAPBrx9TWuVfV6hjDnWMQtrDWriAPXCGwCS5ke3OyOfLAwEBjypiToyP5tsBb_aJED8zeiw8WD31cal0SNJSuNcZuz3B6E0vcrj0_gnpXkSAXL1d1CO0GUmt8PDSVYzB4r-3teciKOR2OOADgmOecD3tV-OtMQBLj_7eQXscrf_tbN22thU5QuP41F__SeoVULIpvp5eFukLY1HXw5QU-uwFXTDuJ7YV6LeTvnDypDkj2Rqohl9P9z5bi8d9xej7akl14zoRxsoamJtnfzF_vAeAAuv8_HyL4R4XLrz_6zaM1oO6vzGiRNrR9DbQE4riG3cJP8ZIN0sfJzyynTKjr9qTUHt0YLurVwWq6qDNg_BauwO-EV6Np8U0QBXo5aIoBgewC50p-r9C3u8Ab_359f42ntRlLB1fwgvRmhgCkxbF8D4qKc8L4fHfNLR5f_RVlMyT2kxVghc2EyS63okjTszLpvMx2ztXRRsBSg-Ti-ZzKY0Gg-lOqWcyBIZ5FOaw5ndtFahoLLQmGwNRZYbbXSqE4kuTCViDXrNlmAFN6KLpzVI_hNvbyUcDDIy_iodhr48JFTQ-gIT4SU1jRpYCWQ6s8n1zg0C8-xDYY0mS-f47J5rYoIIUFI6iYar0MumF5HZeOEJIsKS1a2lNOtzlxbMIArwdMJLGOTUhyGlkZK_m5-a_iShib9IOnIbFqjR_WY7IYEniZ_rE-O38nIjI-sioQ_-3CkKLAnzTDvAaTtmXUWDwSlsWENLku14rsX5tGDDD3q8c2wCBaa2IkNySwEnG2ROU4MInBQReYT9-Pn_LLqITBj-w_RvHmuq4cqKXFZPZW66f8gcOsRkmaIWjkKyfRnDmCTXD59BqdP_nV910dpQ20mXLNTg63YtP2koeolWRYTvBr3u1m76bER0iZlacdF2ZIcE9iNjzTIbUje_BmITsV2e1fvfLYi5-fEODCEqhzqhQT6HSFLvokhPSI1EzxChCUv446rNXMOYfy4VGLPpsLlmc6Bpf-tPR7iCXJZUZzi5irV8fywui9lapnRchRsEVxhhKNew7_xBKokdT2xqwDiMpsTAl_Jg_YD-f0XpnCiMT74lCIO3ol4-sTI9jXypVw63HGbkALZ2jcl0Im-fU4O83TGlfLd2OgjvNt727dKWfNKA4UL71ZFXRQmMBXsKTyXeTdeWP_mr75lm2QVkFOEz7JeciCoXM4s6WCee_wY4tsowDpShseupqeOkApNX0CMDAf29mO47LVNw3FefS4ftf2xALBS0MuqaKm0m4s2vHhEwFx9qlLKz2nYIyeTdpzXI3BZ67mZPpMGkEZRd4Wzh_PH_R6eiuEzv8dtBgjNPrNhLvyMNmak48qM_EZaoYUlkko8F6OM8tuENSBc99FVacDVnpLpg94gkt0Uir_6DJ5A-H7e5-zOmidZu0eSuSmtP1mLnPIVwaWAIhVuyLVV42h0v63P6h2p8ThwzZvxAWsNFzjYcW98Dlzv-lmzEoLoikpEqgHyJubOQO4QkxafN-yZ3EaKUxKUxMgSz8wEm2fYFTY-e07Z9cxjzKwE9JmkqSSpXcYyYOS901z527jWU0hixt5kPLRjt3bQALSAdZeUM48aRrrAvM1KPmSljKQOwuPjRAfj2qJKIpsX6v1cnjpxhPWdsr5PQDKgXCDvXuMN3-8AvSLP9Zfl2pfiJotb9UMrrr5kz269AfUZ9sBj7yOLrlPy5FyLMPTx9F2aryJO2VNwKPW79nt8Ofh-LIP4kjJyDJkRqcPwErkxJCPWn_O2LWkkcVu3a8QAdrKSqGVCX272RdZoFz6veW717zUz_Z0rhNn36NkfizdRi1BsiKu288uikwZXba9jSY3YhL6SvVgUEJwkq_1iz20oy_Gl4Dg8aG5pPEY3z5AuRJNWAwWFjZtz-qbAerFuVOj6blPCarILbXmSoufBOBIpHA6sGxC3yTbepsiMitHhhjEjh0vmdG6MMHaReiA1_cJ4TVqJJa8JvAHIYHHnCSJA8V9u5gQDKWF0AEOwO98Ui4fYfc9RwzYIyuOk2Wx3Vb4C5y8URGQblMs2Vs96qG35Tj2PcKP2qDnhvJ8CfYXJHzwHWbNoTmQpZ8E8MGc60uf0nlUdKzBAitRjBeck0nYDcvIvu3LZfu_QGR8NFhmGRwvyZkPST9gihrnu0y0OmODX6-QpL-RHgKdGvmodzOoKzadwRSh71tRwlGOhVtp4G7zvcSWQVGTfBlOYSdcFxDBkk5bftw-CMkg4z4PUsbo0wRTJCReVfzUQyxBf07bGC7O00kSQRuSw7LCOBj-owXavTvgUrlR2ciYn5ZeYWbHhicd9VOuyyFd1697Et6sprlfyksy22QW76jC5VeQ6KqfvIBnrKSJ5c_uX8htgB0W93sIzY4ETILgp04S8a6fWrK3N4QLHAGzCahv7qTz--yUJtncTqS8_CkoCD0I5Qh_Yb-Hot4GZAy6eLt1P3aWREFn9djp1-kp7-_pjgzRS5VmoNT0lHGI5-L2gVcm8qp_V_wvXtJtbUQerbv0x7u-AYoNij5RSu2p8071BOLF8ZHEF1-yX1Vk8CzTL0-HDCiyVoEXeOdhBOqR0mfOIMqNKTblWGnBSWzuuNsw-NKDlVkhTGoWHJ4d9fq0F5xg1q-C4Mwiq5K5g5M3s2RHf1TI9JSuVsXmz6hL2fDWLg-NTQbJOfRQoyiPxthVYjQaDuo67_bSC8YOmpsQwFgl8wJ66Skc0BcaTiiZHj2Lajt6NMurrudA5UI9g59pFAO9fPvCFcKvbpWN5qcarXS_fZW5uDwSkt0QV-wsELa6pHD4QOz_WpjfKUIjhSQoHHBCT_4QGe03f_qo_Kx6wURIKpo5mk4z7zt7tO9BUxrYno1tXBlUYuyi-uZFVlrsTF0-O1r-L3RxymmESXj9NgKd0gaxo9qy-4QJEHaxbWLCYDNwOrL-tJob_nFYvxRoWCAASEuRoPvAUHwF-nROeHEsAy3s8dmAB\u0026xfc=https%3A%2F%2Fclicktrack.pubmatic.com%2FAdServer%2FAdDisplayTrackerServlet%3FclickData%3DJnB1YklkPTE1OTExMCZzaXRlSWQ9NjY2ODg4JmFkSWQ9MzE5Mjg4MyZrYWRzaXplaWQ9MzImdGxkSWQ9MCZjYW1wYWlnbklkPTIyOTg3JmNyZWF0aXZlSWQ9MCZ1Y3JpZD0zNDc0OTkyMjU4OTU5MTExMzE0JmFkU2VydmVySWQ9MjQzJmltcGlkPTZDMjgzQUExLTVFRTMtNEI5Qy04MDZGLUU3NkFEQTAzNkVEQSZwYXNzYmFjaz0w_url%3D\"\u003e\u003c/SCRIPT\u003e\u003cNOSCRIPT\u003e\u003cA HREF=\"https://bid.g.doubleclick.net/xbbe/creative/jump?p=APEucNXfwsgcYXeWqRnuvBwgQG5hlto0nsp0m2G40htyhcg0WbXiw28\u0026d=CnkAoCZ_4FaKdr3SAVz0qHzWo5qAN5ZhH8fGE9vz677yYovvlXOgibNjWjl9zUFrCpiJltbe8_M-zBuTy9I1YXMbTFgZRzjgsKY76wlETcB0LCJfKjfBVOgg2u7h7aXdMfPFpwBgcq_Q0ZtNkJa8xZY6PEoo3R5OgmcOErkRAKAmf-DnQScW2C4TNCLAPBrx9TWuVfV6hjDnWMQtrDWriAPXCGwCS5ke3OyOfLAwEBjypiToyP5tsBb_aJED8zeiw8WD31cal0SNJSuNcZuz3B6E0vcrj0_gnpXkSAXL1d1CO0GUmt8PDSVYzB4r-3teciKOR2OOADgmOecD3tV-OtMQBLj_7eQXscrf_tbN22thU5QuP41F__SeoVULIpvp5eFukLY1HXw5QU-uwFXTDuJ7YV6LeTvnDypDkj2Rqohl9P9z5bi8d9xej7akl14zoRxsoamJtnfzF_vAeAAuv8_HyL4R4XLrz_6zaM1oO6vzGiRNrR9DbQE4riG3cJP8ZIN0sfJzyynTKjr9qTUHt0YLurVwWq6qDNg_BauwO-EV6Np8U0QBXo5aIoBgewC50p-r9C3u8Ab_359f42ntRlLB1fwgvRmhgCkxbF8D4qKc8L4fHfNLR5f_RVlMyT2kxVghc2EyS63okjTszLpvMx2ztXRRsBSg-Ti-ZzKY0Gg-lOqWcyBIZ5FOaw5ndtFahoLLQmGwNRZYbbXSqE4kuTCViDXrNlmAFN6KLpzVI_hNvbyUcDDIy_iodhr48JFTQ-gIT4SU1jRpYCWQ6s8n1zg0C8-xDYY0mS-f47J5rYoIIUFI6iYar0MumF5HZeOEJIsKS1a2lNOtzlxbMIArwdMJLGOTUhyGlkZK_m5-a_iShib9IOnIbFqjR_WY7IYEniZ_rE-O38nIjI-sioQ_-3CkKLAnzTDvAaTtmXUWDwSlsWENLku14rsX5tGDDD3q8c2wCBaa2IkNySwEnG2ROU4MInBQReYT9-Pn_LLqITBj-w_RvHmuq4cqKXFZPZW66f8gcOsRkmaIWjkKyfRnDmCTXD59BqdP_nV910dpQ20mXLNTg63YtP2koeolWRYTvBr3u1m76bER0iZlacdF2ZIcE9iNjzTIbUje_BmITsV2e1fvfLYi5-fEODCEqhzqhQT6HSFLvokhPSI1EzxChCUv446rNXMOYfy4VGLPpsLlmc6Bpf-tPR7iCXJZUZzi5irV8fywui9lapnRchRsEVxhhKNew7_xBKokdT2xqwDiMpsTAl_Jg_YD-f0XpnCiMT74lCIO3ol4-sTI9jXypVw63HGbkALZ2jcl0Im-fU4O83TGlfLd2OgjvNt727dKWfNKA4UL71ZFXRQmMBXsKTyXeTdeWP_mr75lm2QVkFOEz7JeciCoXM4s6WCee_wY4tsowDpShseupqeOkApNX0CMDAf29mO47LVNw3FefS4ftf2xALBS0MuqaKm0m4s2vHhEwFx9qlLKz2nYIyeTdpzXI3BZ67mZPpMGkEZRd4Wzh_PH_R6eiuEzv8dtBgjNPrNhLvyMNmak48qM_EZaoYUlkko8F6OM8tuENSBc99FVacDVnpLpg94gkt0Uir_6DJ5A-H7e5-zOmidZu0eSuSmtP1mLnPIVwaWAIhVuyLVV42h0v63P6h2p8ThwzZvxAWsNFzjYcW98Dlzv-lmzEoLoikpEqgHyJubOQO4QkxafN-yZ3EaKUxKUxMgSz8wEm2fYFTY-e07Z9cxjzKwE9JmkqSSpXcYyYOS901z527jWU0hixt5kPLRjt3bQALSAdZeUM48aRrrAvM1KPmSljKQOwuPjRAfj2qJKIpsX6v1cnjpxhPWdsr5PQDKgXCDvXuMN3-8AvSLP9Zfl2pfiJotb9UMrrr5kz269AfUZ9sBj7yOLrlPy5FyLMPTx9F2aryJO2VNwKPW79nt8Ofh-LIP4kjJyDJkRqcPwErkxJCPWn_O2LWkkcVu3a8QAdrKSqGVCX272RdZoFz6veW717zUz_Z0rhNn36NkfizdRi1BsiKu288uikwZXba9jSY3YhL6SvVgUEJwkq_1iz20oy_Gl4Dg8aG5pPEY3z5AuRJNWAwWFjZtz-qbAerFuVOj6blPCarILbXmSoufBOBIpHA6sGxC3yTbepsiMitHhhjEjh0vmdG6MMHaReiA1_cJ4TVqJJa8JvAHIYHHnCSJA8V9u5gQDKWF0AEOwO98Ui4fYfc9RwzYIyuOk2Wx3Vb4C5y8URGQblMs2Vs96qG35Tj2PcKP2qDnhvJ8CfYXJHzwHWbNoTmQpZ8E8MGc60uf0nlUdKzBAitRjBeck0nYDcvIvu3LZfu_QGR8NFhmGRwvyZkPST9gihrnu0y0OmODX6-QpL-RHgKdGvmodzOoKzadwRSh71tRwlGOhVtp4G7zvcSWQVGTfBlOYSdcFxDBkk5bftw-CMkg4z4PUsbo0wRTJCReVfzUQyxBf07bGC7O00kSQRuSw7LCOBj-owXavTvgUrlR2ciYn5ZeYWbHhicd9VOuyyFd1697Et6sprlfyksy22QW76jC5VeQ6KqfvIBnrKSJ5c_uX8htgB0W93sIzY4ETILgp04S8a6fWrK3N4QLHAGzCahv7qTz--yUJtncTqS8_CkoCD0I5Qh_Yb-Hot4GZAy6eLt1P3aWREFn9djp1-kp7-_pjgzRS5VmoNT0lHGI5-L2gVcm8qp_V_wvXtJtbUQerbv0x7u-AYoNij5RSu2p8071BOLF8ZHEF1-yX1Vk8CzTL0-HDCiyVoEXeOdhBOqR0mfOIMqNKTblWGnBSWzuuNsw-NKDlVkhTGoWHJ4d9fq0F5xg1q-C4Mwiq5K5g5M3s2RHf1TI9JSuVsXmz6hL2fDWLg-NTQbJOfRQoyiPxthVYjQaDuo67_bSC8YOmpsQwFgl8wJ66Skc0BcaTiiZHj2Lajt6NMurrudA5UI9g59pFAO9fPvCFcKvbpWN5qcarXS_fZW5uDwSkt0QV-wsELa6pHD4QOz_WpjfKUIjhSQoHHBCT_4QGe03f_qo_Kx6wURIKpo5mk4z7zt7tO9BUxrYno1tXBlUYuyi-uZFVlrsTF0-O1r-L3RxymmESXj9NgKd0gaxo9qy-4QJEHaxbWLCYDNwOrL-tJob_nFYvxRoWCAASEuRoPvAUHwF-nROeHEsAy3s8dmAB\u0026xfc=https%3A%2F%2Fclicktrack.pubmatic.com%2FAdServer%2FAdDisplayTrackerServlet%3FclickData%3DJnB1YklkPTE1OTExMCZzaXRlSWQ9NjY2ODg4JmFkSWQ9MzE5Mjg4MyZrYWRzaXplaWQ9MzImdGxkSWQ9MCZjYW1wYWlnbklkPTIyOTg3JmNyZWF0aXZlSWQ9MCZ1Y3JpZD0zNDc0OTkyMjU4OTU5MTExMzE0JmFkU2VydmVySWQ9MjQzJmltcGlkPTZDMjgzQUExLTVFRTMtNEI5Qy04MDZGLUU3NkFEQTAzNkVEQSZwYXNzYmFjaz0w_url%3D\"\u003e\u003cIMG SRC=\"https://fw.adsafeprotected.com/rfw/bgd/164425/58606507/xbbe/creative/ad?p=APEucNXfwsgcYXeWqRnuvBwgQG5hlto0nsp0m2G40htyhcg0WbXiw28\u0026d=CnkAoCZ_4FaKdr3SAVz0qHzWo5qAN5ZhH8fGE9vz677yYovvlXOgibNjWjl9zUFrCpiJltbe8_M-zBuTy9I1YXMbTFgZRzjgsKY76wlETcB0LCJfKjfBVOgg2u7h7aXdMfPFpwBgcq_Q0ZtNkJa8xZY6PEoo3R5OgmcOErkRAKAmf-DnQScW2C4TNCLAPBrx9TWuVfV6hjDnWMQtrDWriAPXCGwCS5ke3OyOfLAwEBjypiToyP5tsBb_aJED8zeiw8WD31cal0SNJSuNcZuz3B6E0vcrj0_gnpXkSAXL1d1CO0GUmt8PDSVYzB4r-3teciKOR2OOADgmOecD3tV-OtMQBLj_7eQXscrf_tbN22thU5QuP41F__SeoVULIpvp5eFukLY1HXw5QU-uwFXTDuJ7YV6LeTvnDypDkj2Rqohl9P9z5bi8d9xej7akl14zoRxsoamJtnfzF_vAeAAuv8_HyL4R4XLrz_6zaM1oO6vzGiRNrR9DbQE4riG3cJP8ZIN0sfJzyynTKjr9qTUHt0YLurVwWq6qDNg_BauwO-EV6Np8U0QBXo5aIoBgewC50p-r9C3u8Ab_359f42ntRlLB1fwgvRmhgCkxbF8D4qKc8L4fHfNLR5f_RVlMyT2kxVghc2EyS63okjTszLpvMx2ztXRRsBSg-Ti-ZzKY0Gg-lOqWcyBIZ5FOaw5ndtFahoLLQmGwNRZYbbXSqE4kuTCViDXrNlmAFN6KLpzVI_hNvbyUcDDIy_iodhr48JFTQ-gIT4SU1jRpYCWQ6s8n1zg0C8-xDYY0mS-f47J5rYoIIUFI6iYar0MumF5HZeOEJIsKS1a2lNOtzlxbMIArwdMJLGOTUhyGlkZK_m5-a_iShib9IOnIbFqjR_WY7IYEniZ_rE-O38nIjI-sioQ_-3CkKLAnzTDvAaTtmXUWDwSlsWENLku14rsX5tGDDD3q8c2wCBaa2IkNySwEnG2ROU4MInBQReYT9-Pn_LLqITBj-w_RvHmuq4cqKXFZPZW66f8gcOsRkmaIWjkKyfRnDmCTXD59BqdP_nV910dpQ20mXLNTg63YtP2koeolWRYTvBr3u1m76bER0iZlacdF2ZIcE9iNjzTIbUje_BmITsV2e1fvfLYi5-fEODCEqhzqhQT6HSFLvokhPSI1EzxChCUv446rNXMOYfy4VGLPpsLlmc6Bpf-tPR7iCXJZUZzi5irV8fywui9lapnRchRsEVxhhKNew7_xBKokdT2xqwDiMpsTAl_Jg_YD-f0XpnCiMT74lCIO3ol4-sTI9jXypVw63HGbkALZ2jcl0Im-fU4O83TGlfLd2OgjvNt727dKWfNKA4UL71ZFXRQmMBXsKTyXeTdeWP_mr75lm2QVkFOEz7JeciCoXM4s6WCee_wY4tsowDpShseupqeOkApNX0CMDAf29mO47LVNw3FefS4ftf2xALBS0MuqaKm0m4s2vHhEwFx9qlLKz2nYIyeTdpzXI3BZ67mZPpMGkEZRd4Wzh_PH_R6eiuEzv8dtBgjNPrNhLvyMNmak48qM_EZaoYUlkko8F6OM8tuENSBc99FVacDVnpLpg94gkt0Uir_6DJ5A-H7e5-zOmidZu0eSuSmtP1mLnPIVwaWAIhVuyLVV42h0v63P6h2p8ThwzZvxAWsNFzjYcW98Dlzv-lmzEoLoikpEqgHyJubOQO4QkxafN-yZ3EaKUxKUxMgSz8wEm2fYFTY-e07Z9cxjzKwE9JmkqSSpXcYyYOS901z527jWU0hixt5kPLRjt3bQALSAdZeUM48aRrrAvM1KPmSljKQOwuPjRAfj2qJKIpsX6v1cnjpxhPWdsr5PQDKgXCDvXuMN3-8AvSLP9Zfl2pfiJotb9UMrrr5kz269AfUZ9sBj7yOLrlPy5FyLMPTx9F2aryJO2VNwKPW79nt8Ofh-LIP4kjJyDJkRqcPwErkxJCPWn_O2LWkkcVu3a8QAdrKSqGVCX272RdZoFz6veW717zUz_Z0rhNn36NkfizdRi1BsiKu288uikwZXba9jSY3YhL6SvVgUEJwkq_1iz20oy_Gl4Dg8aG5pPEY3z5AuRJNWAwWFjZtz-qbAerFuVOj6blPCarILbXmSoufBOBIpHA6sGxC3yTbepsiMitHhhjEjh0vmdG6MMHaReiA1_cJ4TVqJJa8JvAHIYHHnCSJA8V9u5gQDKWF0AEOwO98Ui4fYfc9RwzYIyuOk2Wx3Vb4C5y8URGQblMs2Vs96qG35Tj2PcKP2qDnhvJ8CfYXJHzwHWbNoTmQpZ8E8MGc60uf0nlUdKzBAitRjBeck0nYDcvIvu3LZfu_QGR8NFhmGRwvyZkPST9gihrnu0y0OmODX6-QpL-RHgKdGvmodzOoKzadwRSh71tRwlGOhVtp4G7zvcSWQVGTfBlOYSdcFxDBkk5bftw-CMkg4z4PUsbo0wRTJCReVfzUQyxBf07bGC7O00kSQRuSw7LCOBj-owXavTvgUrlR2ciYn5ZeYWbHhicd9VOuyyFd1697Et6sprlfyksy22QW76jC5VeQ6KqfvIBnrKSJ5c_uX8htgB0W93sIzY4ETILgp04S8a6fWrK3N4QLHAGzCahv7qTz--yUJtncTqS8_CkoCD0I5Qh_Yb-Hot4GZAy6eLt1P3aWREFn9djp1-kp7-_pjgzRS5VmoNT0lHGI5-L2gVcm8qp_V_wvXtJtbUQerbv0x7u-AYoNij5RSu2p8071BOLF8ZHEF1-yX1Vk8CzTL0-HDCiyVoEXeOdhBOqR0mfOIMqNKTblWGnBSWzuuNsw-NKDlVkhTGoWHJ4d9fq0F5xg1q-C4Mwiq5K5g5M3s2RHf1TI9JSuVsXmz6hL2fDWLg-NTQbJOfRQoyiPxthVYjQaDuo67_bSC8YOmpsQwFgl8wJ66Skc0BcaTiiZHj2Lajt6NMurrudA5UI9g59pFAO9fPvCFcKvbpWN5qcarXS_fZW5uDwSkt0QV-wsELa6pHD4QOz_WpjfKUIjhSQoHHBCT_4QGe03f_qo_Kx6wURIKpo5mk4z7zt7tO9BUxrYno1tXBlUYuyi-uZFVlrsTF0-O1r-L3RxymmESXj9NgKd0gaxo9qy-4QJEHaxbWLCYDNwOrL-tJob_nFYvxRoWCAASEuRoPvAUHwF-nROeHEsAy3s8dmAB\u0026xfc=https%3A%2F%2Fclicktrack.pubmatic.com%2FAdServer%2FAdDisplayTrackerServlet%3FclickData%3DJnB1YklkPTE1OTExMCZzaXRlSWQ9NjY2ODg4JmFkSWQ9MzE5Mjg4MyZrYWRzaXplaWQ9MzImdGxkSWQ9MCZjYW1wYWlnbklkPTIyOTg3JmNyZWF0aXZlSWQ9MCZ1Y3JpZD0zNDc0OTkyMjU4OTU5MTExMzE0JmFkU2VydmVySWQ9MjQzJmltcGlkPTZDMjgzQUExLTVFRTMtNEI5Qy04MDZGLUU3NkFEQTAzNkVEQSZwYXNzYmFjaz0w_url%3D\" BORDER=0 WIDTH=970 HEIGHT=250 ALT=\"Advertisement\"\u003e\u003c/A\u003e\u003c/NOSCRIPT\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003ciframe width=\"0\" scrolling=\"no\" height=\"0\" frameborder=\"0\" src=\"https://ads.pubmatic.com/AdServer/js/showad.js#PIX\u0026ptask=DSP\u0026SPug=1\u0026fp=1\u0026mpc=10\u0026u=1F3AABE3-615E-40AD-A390-899AE3113A1A\u0026p=159110\u0026s=666888\u0026d=1\u0026cp=0\u0026sc=1\u0026rs=0\u0026os=0\u0026gdpr=1\u0026gdpr_consent=CPam0oAPam0oAAHABBENCTCsAP_AAH_AAAAAHfND_TrMYyNj-XZ9Nrs0eYxOxNSXo-wCjAaJAWgBAQKAIJQG0mAQpAHgBCACIAAEIiJBAQIlDCHACQAA4IABASEAIAiABBIIICIAgEAQAwAICBBDCcAAAQKYgAQEEAQAmgoAAAoiQAAAIAAABgAAAAAAAAAAAAAAABA1kAEwVJiABsSwwJJoQihRADCIICoBQAUQAQIAUAACAABBCASAgAAAAAAAAAAAAABEBAIABAIAAIAAAAPBAAACAAAAAAAAABAARAAAgAAAAAAAAAQDAAAAAQAAAAgACgECAAAAAASAAAAAAAAMAcpACAIsAtAdACAIsAtAJABAWgKAAgCOGAAQBHEAAIAjiQAEARwA.f_gAD_gAAAAA\" style=\"position:absolute;top:-15000px;left:-15000px\" vspace=\"0\" hspace=\"0\" marginwidth=\"0\" marginheight=\"0\" allowtransparency=\"true\" name=\"synciframe\"\u003e\u003c/iframe\u003e\u003ciframe width=\"0\" scrolling=\"no\" height=\"0\" frameborder=\"0\" src=\"https://aktrack.pubmatic.com/AdServer/AdDisplayTrackerServlet?operId=1\u0026pubId=159110\u0026siteId=666888\u0026adId=3192883\u0026adType=10\u0026adServerId=243\u0026kefact=1.628522\u0026kaxefact=1.628522\u0026kadNetFrequecy=0\u0026kadwidth=970\u0026kadheight=250\u0026kadsizeid=32\u0026kltstamp=1655476159\u0026indirectAdId=0\u0026adServerOptimizerId=2\u0026ranreq=0.1\u0026kpbmtpfact=1.744845\u0026dcId=1\u0026tldId=0\u0026passback=0\u0026svr=BID77459U\u0026adsver=_3183238267\u0026adsabzcid=0\u0026cls=BID\u0026ekefact=v4-sYp7JAABDXW5CKnY4dM4r4VMrXFqckyiGI1YvjpwUr8_S\u0026ekaxefact=v4-sYrfJAACSI2fXJV651g6OElzkVMTs0hvRikGflYSlKpri\u0026ekpbmtpfact=v4-sYsnJAADquaksOGtXMCX0cCgwOxsHRLjmfEXuK2d8Te3m\u0026enpp=v4-sYuDJAAA_U3h8MeiCsMnD6xOaPT6N73myFnldaB_Pfu5-\u0026pfi=1\u0026domId=8566818333696122961\u0026dc=SFO2\u0026pubBuyId=20367\u0026crID=392890663\u0026lpu=americanexpress.com\u0026ucrid=3474992258959111314\u0026campaignId=22987\u0026creativeId=0\u0026pctr=0.000000\u0026wDSPByrId=2617933\u0026wDspId=80\u0026wbId=3\u0026wrId=0\u0026wAdvID=746848\u0026wDspCampId=22856574\u0026isRTB=1\u0026rtbId=1978E84C-F587-480C-B4BE-3CB92C3DBC47\u0026imprId=6C283AA1-5EE3-4B9C-806F-E76ADA036EDA\u0026oid=6C283AA1-5EE3-4B9C-806F-E76ADA036EDA\u0026country=US\u0026carrierid=387\u0026cntryId=232\u0026domain=marmiton.org\u0026sec=1\u0026pmc=1\u0026pAuSt=2\u0026wops=0\u0026sURL=marmiton.org\u0026BrID=5\u0026oiabdvt=2\" style=\"position:absolute;top:-15000px;left:-15000px\" vspace=\"0\" hspace=\"0\" marginwidth=\"0\" marginheight=\"0\" allowtransparency=\"true\" name=\"pbeacon\"\u003e\u003c/iframe\u003e\u003c/span\u003e \u003c!-- PubMatic Ad Ends --\u003e\u003cimg width=\"0\" height=\"0\" border=\"0\" alt=\"\" style=\"display: none;\" src=\"https://c.4dex.io/imp.gif?adu_code=pegasus_placeholder_banner_atf\u0026auction_id=a41fe775-0f14-4ed9-91db-94a53355f95e\u0026bid_id=6C283AA1-5EE3-4B9C-806F-E76ADA036EDA\u0026bidder=pubmatic\u0026breq_id=894eb09c-5ace-4c0a-a01a-4f4480e19658\u0026browser=chrome\u0026buid=1\u0026buids=3310\u0026category=\u0026cpm=1.46567\u0026crea_id=392890663\u0026ctry=USA\u0026curr=USD\u0026deal_id=\u0026dvc=2\u0026environment=desktop\u0026h=250\u0026lzy=0\u0026mt=ban\u0026net_cpm=1.25314785\u0026org_id=1110\u0026os=linux\u0026partid=2022061714\u0026pgtyp=\u0026plcmt=banner_atf\u0026pn=1\u0026pub_id=10308\u0026pv_id=38e96607-9b56-4a86-9c4c-9f88d5ea87e9\u0026rpmadc_smpl=1\u0026rule_id=1145\u0026seattyp=shared\u0026site=marmiton-org\u0026sspv=4.3.0-gcp-las\u0026subcategory=\u0026tiv=16\u0026url=https%3A%2F%2Fwww.marmiton.org%2F%3Fpbjs_debug%3Dtrue\u0026vr=0.5\u0026w=970\" /\u003e",
      "width": 970,
      "height": 250,
      "ttl": 30,
      "netRevenue": true,
      "adUnitCode": "pegasus_placeholder_banner_atf",
      "lz": false,
      "bidder": "",
      "aDomain": [
        "americanexpress.com"
      ],
      "meta": {
        "advertiserDomains": [
          "americanexpress.com"
        ],
        "advertiserId": 746848,
        "networkId": 80
      },
      "mediaType": "banner"
    }
  ],
  "data": {
    "user_syncs": [
      {
        "html": "\u003ciframe id='adg-0-sync' height='0' width='0' marginwidth='0' marginheight='0' scrolling='no' frameborder='0' src='https://secure-assets.rubiconproject.com/utils/xapi/multi-sync.html?p=onfocus\u0026endpoint=us-west' style='border: 0px; display: none;'\u003e\u003c/iframe\u003e"
      }
    ],
    "adagiojs": {
      "sampling": {
        "avw": 0
      }
    }
  }
}

As you can see:

  • originalCpm matches the response from Adagio
  • cpm == originalCpm * conversionRate (1.2049 = 1.25314785 * 0.9615384615384615)
  • floorData.cpmAfterAdjustments is below the floor (0.93 < 1)
  • cpmAfterAdjustments matches your bidCpmAdjustment:
    CustomAdjust

@dgirardi
Copy link
Collaborator

Would it help if we added a sort of history log for changes to the CPM? Let's say a "normal" (non-rejected) bid contained something like:

{
  ...
  cpmAdjustments: [
     {
        reason: "currency",
        from: {
            currency: 'USD',
            cpm: 1.2
        },
        to: {
            currency: 'EUR',
            cpm: 1
        }
     },
     {
        reason: "bidCpmAdjustment",
        from: {
            currency: 'EUR',
            cpm: 1
        },
        to: {
            currency: 'EUR',
            cpm: 0.8
        },
     }
  ]
}

then this case would only contain the first and it should clear up confusion. (although, I'd still be wondering why my bidCpmAdjustment didn't run...)

@jlquaccia
Copy link
Collaborator

Agree with @dgirardi. From what I can gather about all of this (and from looking through the prebid docs), it seems as though the expected behavior is occurring (I think). However, I suppose the timeline of the cpm value adjustments could possibly be made a bit more transparent as mentioned above.

@robertrmartinez
Copy link
Collaborator

So what is the Action Item here?

@patmmccann
Copy link
Collaborator

perhaps we just need more explicit logging of rejected bids?

@robertrmartinez
Copy link
Collaborator

In my initial P.O.C of this I actually was just going to add a new event called BID_REJECTED that the price floors module would emit.

I decided not to do it for some reason, but I think this is probably the right thing to do now.

Maybe in the case of a BID_REJECTED there should NOT be a BID_RESPONSE event and vice versa.

But that might be a breaking change, so maybe for now we can just add in this new BID_REJECTED event to help?

@dgirardi
Copy link
Collaborator

dgirardi commented Jul 6, 2022

@robertrmartinez for this issue specifically, I don't think an a different event would have helped - I think; the log message would have beeen the same, showing the rejected bid with a half-adjusted cpm (I believe it would have looked the same in a rejection event, unless we want to open pandora's box and try to process those together with "real" bids?)
#8655 might be enough to clarify that the rejected bid was indeed below the floor.

@robertrmartinez
Copy link
Collaborator

Ah ok makes sense!

@patmmccann patmmccann moved this from Needs OP to Ready for Dev in Prebid.js Tactical Issues table Jul 6, 2022
Repository owner moved this from Ready for Dev to Done in Prebid.js Tactical Issues table Jul 11, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
5 participants