Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md4
-rw-r--r--core/Tracker/Action.php19
-rw-r--r--core/Tracker/ActionPageview.php2
-rw-r--r--core/Tracker/Request.php4
-rw-r--r--js/piwik.js14
-rw-r--r--js/piwik.min.js10
-rw-r--r--matomo.js10
-rw-r--r--piwik.js10
-rw-r--r--tests/PHPUnit/Integration/Tracker/ActionTest.php39
-rw-r--r--tests/javascript/index.php70
10 files changed, 128 insertions, 54 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a4b369281b..bf309b9c9f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -61,6 +61,10 @@ These are only recommendations (because we will keep backward compatibility for
* These API methods have been removed: `Referrers.getKeywordsForPageUrl` and `Referrers.getKeywordsForPageTitle`. Use `Referrers.getKeywords` instead in combination with a `entryPageUrl` or `entryPageTitle` segment.
* The parameter `alias` from the API methods `UsersManager.addUser` and `UsersManager.updateUser` has been removed.
+#### HTTP Tracking API
+
+* An optional new tracking parameter called `ca` has been added which can be used for tracking requests that aren't page views see [#16569](https://github.com/matomo-org/matomo/issues/16569)
+
### PHP Plugin API
#### New PHP events
diff --git a/core/Tracker/Action.php b/core/Tracker/Action.php
index 5003f6f279..bd0cc078ca 100644
--- a/core/Tracker/Action.php
+++ b/core/Tracker/Action.php
@@ -110,9 +110,28 @@ abstract class Action
return $action;
}
+ if (self::isCustomActionRequest($request)) {
+ throw new Exception('Request was meant for a plugin which is no longer activated. Request needs to be ignored.');
+ }
+
return new ActionPageview($request);
}
+ /**
+ * Returns true if the tracking request was meant for some action that isn't the page view. See
+ * https://github.com/matomo-org/matomo/pull/16570 for more details. Basically, plugins that implement a tracker
+ * action should send a `ca=1` tracking parameter along the request so it doesn't get executed should the plugin
+ * be disabled but the JS tracker is still cached and keeps on sending these requests.
+ *
+ * @param Request $request
+ * @return bool
+ * @throws Exception
+ */
+ public static function isCustomActionRequest(Request $request)
+ {
+ return $request->hasParam('ca') && $request->getParam('ca');
+ }
+
private static function getPriority(Action $actionType)
{
$key = array_search($actionType->getActionType(), self::$factoryPriority);
diff --git a/core/Tracker/ActionPageview.php b/core/Tracker/ActionPageview.php
index ed073ee1ab..2dcb9045c8 100644
--- a/core/Tracker/ActionPageview.php
+++ b/core/Tracker/ActionPageview.php
@@ -39,7 +39,7 @@ class ActionPageview extends Action
public static function shouldHandle(Request $request)
{
- return true;
+ return !Action::isCustomActionRequest($request);
}
public function getIdActionUrlForEntryAndExitIds()
diff --git a/core/Tracker/Request.php b/core/Tracker/Request.php
index 0d6c449ab7..fbefb5cc63 100644
--- a/core/Tracker/Request.php
+++ b/core/Tracker/Request.php
@@ -423,6 +423,10 @@ class Request
'c_n' => array('', 'string'),
'c_t' => array('', 'string'),
'c_i' => array('', 'string'),
+
+ // custom action request. Recommended when a plugin declares its own action handler/requestprocessor
+ // refs https://github.com/matomo-org/matomo/issues/16569
+ 'ca' => array(0, 'int'),
);
if (isset($this->paramsCache[$name])) {
diff --git a/js/piwik.js b/js/piwik.js
index 21cd59f0e6..15d09505ab 100644
--- a/js/piwik.js
+++ b/js/piwik.js
@@ -1834,6 +1834,10 @@ if (typeof window.Matomo !== 'object') {
params += 'c_t='+ encodeWrapper(target);
}
+ if (params) {
+ params += '&ca=1';
+ }
+
return params;
},
buildImpressionRequestParams: function (name, piece, target)
@@ -1845,6 +1849,10 @@ if (typeof window.Matomo !== 'object') {
params += '&c_t=' + encodeWrapper(target);
}
+ if (params) {
+ params += '&ca=1';
+ }
+
return params;
},
buildContentBlock: function (node)
@@ -3829,6 +3837,7 @@ if (typeof window.Matomo !== 'object') {
}
request += '&ec_items=' + encodeWrapper(windowAlias.JSON.stringify(items));
}
+ request += '&ca=1';
request = getRequest(request, configCustomData, 'ecommerce');
sendRequest(request, configTrackerPause);
@@ -4236,7 +4245,8 @@ if (typeof window.Matomo !== 'object') {
return 'e_c=' + encodeWrapper(category)
+ '&e_a=' + encodeWrapper(action)
+ (isDefined(name) ? '&e_n=' + encodeWrapper(name) : '')
- + (isDefined(value) ? '&e_v=' + encodeWrapper(value) : '');
+ + (isDefined(value) ? '&e_v=' + encodeWrapper(value) : '')
+ + '&ca=1';
}
/*
@@ -4273,7 +4283,7 @@ if (typeof window.Matomo !== 'object') {
* Log the goal with the server
*/
function logGoal(idGoal, customRevenue, customData, callback) {
- var request = getRequest('idgoal=' + idGoal + (customRevenue ? '&revenue=' + customRevenue : ''), customData, 'goal');
+ var request = getRequest('idgoal=' + idGoal + (customRevenue ? '&revenue=' + customRevenue : '') + '&ca=1', customData, 'goal');
sendRequest(request, configTrackerPause, callback);
}
diff --git a/js/piwik.min.js b/js/piwik.min.js
index 1cfafdb429..5dfc24fc6f 100644
--- a/js/piwik.min.js
+++ b/js/piwik.min.js
@@ -25,8 +25,8 @@ var aq="."+this.LEGACY_CONTENT_CLASS;var ao="["+this.CONTENT_ATTR+"]";var ar=ae.
ao=ae.findFirstNodeHavingAttribute(ap,this.CONTENT_PIECE_ATTR);if(!ao){ao=ae.findFirstNodeHavingClass(ap,this.CONTENT_PIECE_CLASS)}if(!ao){ao=ae.findFirstNodeHavingClass(ap,this.LEGACY_CONTENT_PIECE_CLASS)}if(ao){return ao}return ap},findTargetNodeNoDefault:function(ao){if(!ao){return}var ap=ae.findFirstNodeHavingAttributeWithValue(ao,this.CONTENT_TARGET_ATTR);if(ap){return ap}ap=ae.findFirstNodeHavingAttribute(ao,this.CONTENT_TARGET_ATTR);if(ap){return ap}ap=ae.findFirstNodeHavingClass(ao,this.CONTENT_TARGET_CLASS);if(ap){return ap}ap=ae.findFirstNodeHavingClass(ao,this.LEGACY_CONTENT_TARGET_CLASS);if(ap){return ap}},findTargetNode:function(ao){var ap=this.findTargetNodeNoDefault(ao);if(ap){return ap}return ao},findContentName:function(ap){if(!ap){return}var at=ae.findFirstNodeHavingAttributeWithValue(ap,this.CONTENT_NAME_ATTR);if(at){return ae.getAttributeValueFromNode(at,this.CONTENT_NAME_ATTR)}var ao=this.findContentPiece(ap);if(ao){return this.removeDomainIfIsInLink(ao)}if(ae.hasNodeAttributeWithValue(ap,"title")){return ae.getAttributeValueFromNode(ap,"title")
}var aq=this.findPieceNode(ap);if(ae.hasNodeAttributeWithValue(aq,"title")){return ae.getAttributeValueFromNode(aq,"title")}var ar=this.findTargetNode(ap);if(ae.hasNodeAttributeWithValue(ar,"title")){return ae.getAttributeValueFromNode(ar,"title")}},findContentPiece:function(ap){if(!ap){return}var ar=ae.findFirstNodeHavingAttributeWithValue(ap,this.CONTENT_PIECE_ATTR);if(ar){return ae.getAttributeValueFromNode(ar,this.CONTENT_PIECE_ATTR)}var ao=this.findPieceNode(ap);var aq=this.findMediaUrlInNode(ao);if(aq){return this.toAbsoluteUrl(aq)}},findContentTarget:function(aq){if(!aq){return}var ar=this.findTargetNode(aq);if(ae.hasNodeAttributeWithValue(ar,this.CONTENT_TARGET_ATTR)){return ae.getAttributeValueFromNode(ar,this.CONTENT_TARGET_ATTR)}var ap;if(ae.hasNodeAttributeWithValue(ar,"href")){ap=ae.getAttributeValueFromNode(ar,"href");return this.toAbsoluteUrl(ap)}var ao=this.findPieceNode(aq);if(ae.hasNodeAttributeWithValue(ao,"href")){ap=ae.getAttributeValueFromNode(ao,"href");return this.toAbsoluteUrl(ap)
}},isSameDomain:function(ao){if(!ao||!ao.indexOf){return false}if(0===ao.indexOf(this.getLocation().origin)){return true}var ap=ao.indexOf(this.getLocation().host);if(8>=ap&&0<=ap){return true}return false},removeDomainIfIsInLink:function(aq){var ap="^https?://[^/]+";var ao="^.*//[^/]+";if(aq&&aq.search&&-1!==aq.search(new RegExp(ap))&&this.isSameDomain(aq)){aq=aq.replace(new RegExp(ao),"");if(!aq){aq="/"}}return aq},findMediaUrlInNode:function(at){if(!at){return}var aq=["img","embed","video","audio"];var ao=at.nodeName.toLowerCase();if(-1!==M(aq,ao)&&ae.findFirstNodeHavingAttributeWithValue(at,"src")){var ar=ae.findFirstNodeHavingAttributeWithValue(at,"src");return ae.getAttributeValueFromNode(ar,"src")}if(ao==="object"&&ae.hasNodeAttributeWithValue(at,"data")){return ae.getAttributeValueFromNode(at,"data")}if(ao==="object"){var au=ae.findNodesByTagName(at,"param");if(au&&au.length){var ap;for(ap=0;ap<au.length;ap++){if("movie"===ae.getAttributeValueFromNode(au[ap],"name")&&ae.hasNodeAttributeWithValue(au[ap],"value")){return ae.getAttributeValueFromNode(au[ap],"value")
-}}}var av=ae.findNodesByTagName(at,"embed");if(av&&av.length){return this.findMediaUrlInNode(av[0])}}},trim:function(ao){return a(ao)},isOrWasNodeInViewport:function(au){if(!au||!au.getBoundingClientRect||au.nodeType!==1){return true}var at=au.getBoundingClientRect();var ar=G.documentElement||{};var aq=at.top<0;if(aq&&au.offsetTop){aq=(au.offsetTop+at.height)>0}var ap=ar.clientWidth;if(S.innerWidth&&ap>S.innerWidth){ap=S.innerWidth}var ao=ar.clientHeight;if(S.innerHeight&&ao>S.innerHeight){ao=S.innerHeight}return((at.bottom>0||aq)&&at.right>0&&at.left<ap&&((at.top<ao)||aq))},isNodeVisible:function(ap){var ao=i(ap);var aq=this.isOrWasNodeInViewport(ap);return ao&&aq},buildInteractionRequestParams:function(ao,ap,aq,ar){var at="";if(ao){at+="c_i="+s(ao)}if(ap){if(at){at+="&"}at+="c_n="+s(ap)}if(aq){if(at){at+="&"}at+="c_p="+s(aq)}if(ar){if(at){at+="&"}at+="c_t="+s(ar)}return at},buildImpressionRequestParams:function(ao,ap,aq){var ar="c_n="+s(ao)+"&c_p="+s(ap);if(aq){ar+="&c_t="+s(aq)}return ar
-},buildContentBlock:function(aq){if(!aq){return}var ao=this.findContentName(aq);var ap=this.findContentPiece(aq);var ar=this.findContentTarget(aq);ao=this.trim(ao);ap=this.trim(ap);ar=this.trim(ar);return{name:ao||"Unknown",piece:ap||"Unknown",target:ar||""}},collectContent:function(ar){if(!ar||!ar.length){return[]}var aq=[];var ao,ap;for(ao=0;ao<ar.length;ao++){ap=this.buildContentBlock(ar[ao]);if(J(ap)){aq.push(ap)}}return aq},setLocation:function(ao){this.location=ao},getLocation:function(){var ao=this.location||S.location;if(!ao.origin){ao.origin=ao.protocol+"//"+ao.hostname+(ao.port?":"+ao.port:"")}return ao},toAbsoluteUrl:function(ap){if((!ap||String(ap)!==ap)&&ap!==""){return ap}if(""===ap){return this.getLocation().href}if(ap.search(/^\/\//)!==-1){return this.getLocation().protocol+ap}if(ap.search(/:\/\//)!==-1){return ap}if(0===ap.indexOf("#")){return this.getLocation().origin+this.getLocation().pathname+ap}if(0===ap.indexOf("?")){return this.getLocation().origin+this.getLocation().pathname+ap
+}}}var av=ae.findNodesByTagName(at,"embed");if(av&&av.length){return this.findMediaUrlInNode(av[0])}}},trim:function(ao){return a(ao)},isOrWasNodeInViewport:function(au){if(!au||!au.getBoundingClientRect||au.nodeType!==1){return true}var at=au.getBoundingClientRect();var ar=G.documentElement||{};var aq=at.top<0;if(aq&&au.offsetTop){aq=(au.offsetTop+at.height)>0}var ap=ar.clientWidth;if(S.innerWidth&&ap>S.innerWidth){ap=S.innerWidth}var ao=ar.clientHeight;if(S.innerHeight&&ao>S.innerHeight){ao=S.innerHeight}return((at.bottom>0||aq)&&at.right>0&&at.left<ap&&((at.top<ao)||aq))},isNodeVisible:function(ap){var ao=i(ap);var aq=this.isOrWasNodeInViewport(ap);return ao&&aq},buildInteractionRequestParams:function(ao,ap,aq,ar){var at="";if(ao){at+="c_i="+s(ao)}if(ap){if(at){at+="&"}at+="c_n="+s(ap)}if(aq){if(at){at+="&"}at+="c_p="+s(aq)}if(ar){if(at){at+="&"}at+="c_t="+s(ar)}if(at){at+="&ca=1"}return at},buildImpressionRequestParams:function(ao,ap,aq){var ar="c_n="+s(ao)+"&c_p="+s(ap);if(aq){ar+="&c_t="+s(aq)
+}if(ar){ar+="&ca=1"}return ar},buildContentBlock:function(aq){if(!aq){return}var ao=this.findContentName(aq);var ap=this.findContentPiece(aq);var ar=this.findContentTarget(aq);ao=this.trim(ao);ap=this.trim(ap);ar=this.trim(ar);return{name:ao||"Unknown",piece:ap||"Unknown",target:ar||""}},collectContent:function(ar){if(!ar||!ar.length){return[]}var aq=[];var ao,ap;for(ao=0;ao<ar.length;ao++){ap=this.buildContentBlock(ar[ao]);if(J(ap)){aq.push(ap)}}return aq},setLocation:function(ao){this.location=ao},getLocation:function(){var ao=this.location||S.location;if(!ao.origin){ao.origin=ao.protocol+"//"+ao.hostname+(ao.port?":"+ao.port:"")}return ao},toAbsoluteUrl:function(ap){if((!ap||String(ap)!==ap)&&ap!==""){return ap}if(""===ap){return this.getLocation().href}if(ap.search(/^\/\//)!==-1){return this.getLocation().protocol+ap}if(ap.search(/:\/\//)!==-1){return ap}if(0===ap.indexOf("#")){return this.getLocation().origin+this.getLocation().pathname+ap}if(0===ap.indexOf("?")){return this.getLocation().origin+this.getLocation().pathname+ap
}if(0===ap.search("^[a-zA-Z]{2,11}:")){return ap}if(ap.search(/^\//)!==-1){return this.getLocation().origin+ap}var ao="(.*/)";var aq=this.getLocation().origin+this.getLocation().pathname.match(new RegExp(ao))[0];return aq+ap},isUrlToCurrentDomain:function(ap){var aq=this.toAbsoluteUrl(ap);if(!aq){return false}var ao=this.getLocation().origin;if(ao===aq){return true}if(0===String(aq).indexOf(ao)){if(":"===String(aq).substr(ao.length,1)){return false}return true}return false},setHrefAttribute:function(ap,ao){if(!ap||!ao){return}ae.setAnyAttribute(ap,"href",ao)},shouldIgnoreInteraction:function(ao){if(ae.hasNodeAttribute(ao,this.CONTENT_IGNOREINTERACTION_ATTR)){return true}if(ae.hasNodeCssClass(ao,this.CONTENT_IGNOREINTERACTION_CLASS)){return true}if(ae.hasNodeCssClass(ao,this.LEGACY_CONTENT_IGNOREINTERACTION_CLASS)){return true}return false}};function W(ap,at){if(at){return at}ap=v.toAbsoluteUrl(ap);if(z(ap,"?")){var ar=ap.indexOf("?");ap=ap.slice(0,ar)}if(Q(ap,"matomo.php")){ap=f(ap,"matomo.php".length)
}else{if(Q(ap,"piwik.php")){ap=f(ap,"piwik.php".length)}else{if(Q(ap,".php")){var ao=ap.lastIndexOf("/");var aq=1;ap=ap.slice(0,ao+aq)}}}if(Q(ap,"/js/")){ap=f(ap,"js/".length)}return ap}function N(av){var ax="Matomo_Overlay";var ap=new RegExp("index\\.php\\?module=Overlay&action=startOverlaySession&idSite=([0-9]+)&period=([^&]+)&date=([^&]+)(&segment=.*)?$");var aq=ap.exec(G.referrer);if(aq){var at=aq[1];if(at!==String(av)){return false}var au=aq[2],ao=aq[3],ar=aq[4];if(!ar){ar=""}else{if(ar.indexOf("&segment=")===0){ar=ar.substr("&segment=".length)}}S.name=ax+"###"+au+"###"+ao+"###"+ar}var aw=S.name.split("###");return aw.length===4&&aw[0]===ax}function Z(ap,av,aq){var au=S.name.split("###"),at=au[1],ao=au[2],ar=au[3],aw=W(ap,av);n(aw+"plugins/Overlay/client/client.js?v=1",function(){Matomo_Overlay_Client.initialize(aw,aq,at,ao,ar)})}function u(){var aq;try{aq=S.frameElement}catch(ap){return true}if(J(aq)){return(aq&&String(aq.nodeName).toLowerCase()==="iframe")?true:false}try{return S.self!==S.top
}catch(ao){return true}}function P(cd,b9){var bJ=this,bd="mtm_consent",cC="mtm_cookie_consent",cL="mtm_consent_removed",b4=aa(G.domain,S.location.href,K()),cT=L(b4[0]),bN=o(b4[1]),bo=o(b4[2]),cR=false,ch="GET",c8=ch,aI="application/x-www-form-urlencoded; charset=UTF-8",cv=aI,aE=cd||"",bI="",cY="",b6=b9||"",bz="",bO="",a4,bj="",c5=["7z","aac","apk","arc","arj","asf","asx","avi","azw3","bin","csv","deb","dmg","doc","docx","epub","exe","flv","gif","gz","gzip","hqx","ibooks","jar","jpg","jpeg","js","mobi","mp2","mp3","mp4","mpg","mpeg","mov","movie","msi","msp","odb","odf","odg","ods","odt","ogg","ogv","pdf","phps","png","ppt","pptx","qt","qtm","ra","ram","rar","rpm","rtf","sea","sit","tar","tbz","tbz2","bz","bz2","tgz","torrent","txt","wav","wma","wmv","wpd","xls","xlsx","xml","z","zip"],ay=[cT],bA=[],bL=[],a8=[],bK=500,cV=true,cI,a5,bR,bP,ao,co=["pk_campaign","mtm_campaign","piwik_campaign","matomo_campaign","utm_campaign","utm_source","utm_medium"],bH=["pk_kwd","mtm_kwd","piwik_kwd","matomo_kwd","utm_term"],bk="_pk_",av="pk_vid",aZ=180,cW,bq,bS=false,bm=false,cP,be,bw,cJ=33955200000,cm=1800000,c4=15768000000,a2=true,bF=false,bh=false,bQ=false,aQ=false,cb,bW={},cl={},bn={},bu=200,cr={},cZ={},c6={},ca=[],ce=false,cA=false,ap=false,c7=false,cM=false,aN=false,bc=u(),cw=null,cX=null,aR,bB,b7=am,bp,aL,cp=0,bv=["id","ses","cvar","ref"],cz=false,bC=null,cK=[],ax=T++,aw=false;
@@ -42,11 +42,11 @@ var dj;for(dj in dl){if(Object.prototype.hasOwnProperty.call(dl,dj)){dk.push(dj)
}dh+="&pf_dm1="+(h.timing.domInteractive-h.timing.domLoading)}if(h&&h.timing&&h&&h.timing.domComplete&&h.timing.domInteractive){if(h.timing.domComplete<h.timing.domInteractive){return}dh+="&pf_dm2="+(h.timing.domComplete-h.timing.domInteractive)}if(h&&h.timing&&h&&h.timing.loadEventEnd&&h.timing.loadEventStart){if(h.timing.loadEventEnd<h.timing.loadEventStart){return}dh+="&pf_onl="+(h.timing.loadEventEnd-h.timing.loadEventStart)}return di+dh}function cq(dj,dE,dF){var dD,di=new Date(),dr=Math.round(di.getTime()/1000),dn,dB,dk=1024,dK,ds,dA=aQ,dl=aT("ses"),dy=aT("ref"),dv=aT("cvar"),dw=aD(dl),dC=bM(),dG=a4||bN,dp,dh;if(bm){aF()}if(cP){return""}var dx=aY();var du=G.characterSet||G.charset;if(!du||du.toLowerCase()==="utf-8"){du=null}dp=dC[0];dh=dC[1];dn=dC[2];dB=dC[3];if(!dw){if(!bw||!dp.length){for(dD in co){if(Object.prototype.hasOwnProperty.call(co,dD)){dp=e(dG,co[dD]);if(dp.length){break}}}for(dD in bH){if(Object.prototype.hasOwnProperty.call(bH,dD)){dh=e(dG,bH[dD]);if(dh.length){break}}}}dK=d(bo);
ds=dB.length?d(dB):"";if(dK.length&&!aV(dK)&&(!bw||!ds.length||aV(ds))){dB=bo}if(dB.length||dp.length){dn=dr;dC=[dp,dh,dn,b2(dB.slice(0,dk))];dc(dy,S.JSON.stringify(dC),c4,bq,cW,bS)}}dj+="&idsite="+b6+"&rec=1&r="+String(Math.random()).slice(2,8)+"&h="+di.getHours()+"&m="+di.getMinutes()+"&s="+di.getSeconds()+"&url="+s(b2(dG))+(bo.length?"&urlref="+s(b2(bo)):"")+((bz&&bz.length)?"&uid="+s(bz):"")+"&_id="+dx.uuid+"&_idn="+dx.newVisitor+(dp.length?"&_rcn="+s(dp):"")+(dh.length?"&_rck="+s(dh):"")+"&_refts="+dn+(String(dB).length?"&_ref="+s(b2(dB.slice(0,dk))):"")+(du?"&cs="+s(du):"")+"&send_image=0";var dJ=cH();for(dD in dJ){if(Object.prototype.hasOwnProperty.call(dJ,dD)){dj+="&"+dD+"="+dJ[dD]}}var dI=[];if(dE){for(dD in dE){if(Object.prototype.hasOwnProperty.call(dE,dD)&&/^dimension\d+$/.test(dD)){var dm=dD.replace("dimension","");dI.push(parseInt(dm,10));dI.push(String(dm));dj+="&"+dD+"="+s(dE[dD]);delete dE[dD]}}}if(dE&&B(dE)){dE=null}for(dD in cr){if(Object.prototype.hasOwnProperty.call(cr,dD)){dj+="&"+dD+"="+s(cr[dD])
}}for(dD in bn){if(Object.prototype.hasOwnProperty.call(bn,dD)){var dt=(-1===M(dI,dD));if(dt){dj+="&dimension"+dD+"="+s(bn[dD])}}}if(dE){dj+="&data="+s(S.JSON.stringify(dE))}else{if(ao){dj+="&data="+s(S.JSON.stringify(ao))}}function dq(dL,dM){var dN=S.JSON.stringify(dL);if(dN.length>2){return"&"+dM+"="+s(dN)}return""}var dH=dg(bW);var dz=dg(cl);dj+=dq(dH,"cvar");dj+=dq(dz,"e_cvar");if(aQ){dj+=dq(aQ,"_cvar");for(dD in dA){if(Object.prototype.hasOwnProperty.call(dA,dD)){if(aQ[dD][0]===""||aQ[dD][1]===""){delete aQ[dD]}}}if(bQ){dc(dv,S.JSON.stringify(aQ),cm,bq,cW,bS)}}if(a2&&bF&&!bh){dj=aA(dj);bh=true}if(aL){dj+="&pv_id="+aL}aM(dx);cc();dj+=ac(dF,{tracker:bJ,request:dj});if(cY.length){dj+="&"+cY}if(A(cb)){dj=cb(dj)}return dj}bR=function a7(){var dh=new Date();dh=dh.getTime();if(!cX){return false}if(cX+a5<=dh){bJ.ping();return true}return false};function br(dk,dj,dp,dl,dh,ds){var dn="idgoal=0",di=new Date(),dq=[],dr,dm=String(dk).length;if(dm){dn+="&ec_id="+s(dk)}dn+="&revenue="+dj;if(String(dp).length){dn+="&ec_st="+dp
-}if(String(dl).length){dn+="&ec_tx="+dl}if(String(dh).length){dn+="&ec_sh="+dh}if(String(ds).length){dn+="&ec_dt="+ds}if(cZ){for(dr in cZ){if(Object.prototype.hasOwnProperty.call(cZ,dr)){if(!J(cZ[dr][1])){cZ[dr][1]=""}if(!J(cZ[dr][2])){cZ[dr][2]=""}if(!J(cZ[dr][3])||String(cZ[dr][3]).length===0){cZ[dr][3]=0}if(!J(cZ[dr][4])||String(cZ[dr][4]).length===0){cZ[dr][4]=1}dq.push(cZ[dr])}}dn+="&ec_items="+s(S.JSON.stringify(dq))}dn=cq(dn,ao,"ecommerce");bG(dn,bK);if(dm){cZ={}}}function bZ(dh,dl,dk,dj,di,dm){if(String(dh).length&&J(dl)){br(dh,dl,dk,dj,di,dm)}}function bt(dh){if(J(dh)){br("",dh,"","","","")}}function b0(di,dk,dj){aL=bg();var dh=cq("action_name="+s(al(di||bj)),dk,"log");if(!bh){dh=aA(dh)}bG(dh,bK,dj)}function a0(dj,di){var dk,dh="(^| )(piwik[_-]"+di+"|matomo[_-]"+di;if(dj){for(dk=0;dk<dj.length;dk++){dh+="|"+dj[dk]}}dh+=")( |$)";return new RegExp(dh)}function aU(dh){return(aE&&dh&&0===String(dh).indexOf(aE))}function ct(dl,dh,dm,di){if(aU(dh)){return 0}var dk=a0(bL,"download"),dj=a0(a8,"link"),dn=new RegExp("\\.("+c5.join("|")+")([?&#]|$)","i");
+}if(String(dl).length){dn+="&ec_tx="+dl}if(String(dh).length){dn+="&ec_sh="+dh}if(String(ds).length){dn+="&ec_dt="+ds}if(cZ){for(dr in cZ){if(Object.prototype.hasOwnProperty.call(cZ,dr)){if(!J(cZ[dr][1])){cZ[dr][1]=""}if(!J(cZ[dr][2])){cZ[dr][2]=""}if(!J(cZ[dr][3])||String(cZ[dr][3]).length===0){cZ[dr][3]=0}if(!J(cZ[dr][4])||String(cZ[dr][4]).length===0){cZ[dr][4]=1}dq.push(cZ[dr])}}dn+="&ec_items="+s(S.JSON.stringify(dq))}dn+="&ca=1";dn=cq(dn,ao,"ecommerce");bG(dn,bK);if(dm){cZ={}}}function bZ(dh,dl,dk,dj,di,dm){if(String(dh).length&&J(dl)){br(dh,dl,dk,dj,di,dm)}}function bt(dh){if(J(dh)){br("",dh,"","","","")}}function b0(di,dk,dj){aL=bg();var dh=cq("action_name="+s(al(di||bj)),dk,"log");if(!bh){dh=aA(dh)}bG(dh,bK,dj)}function a0(dj,di){var dk,dh="(^| )(piwik[_-]"+di+"|matomo[_-]"+di;if(dj){for(dk=0;dk<dj.length;dk++){dh+="|"+dj[dk]}}dh+=")( |$)";return new RegExp(dh)}function aU(dh){return(aE&&dh&&0===String(dh).indexOf(aE))}function ct(dl,dh,dm,di){if(aU(dh)){return 0}var dk=a0(bL,"download"),dj=a0(a8,"link"),dn=new RegExp("\\.("+c5.join("|")+")([?&#]|$)","i");
if(dj.test(dl)){return"link"}if(di||dk.test(dl)||dn.test(dh)){return"download"}if(dm){return 0}return"link"}function au(di){var dh;dh=di.parentNode;while(dh!==null&&J(dh)){if(ae.isLinkElement(di)){break}di=dh;dh=di.parentNode}return di}function da(dm){dm=au(dm);if(!ae.hasNodeAttribute(dm,"href")){return}if(!J(dm.href)){return}var dl=ae.getAttributeValueFromNode(dm,"href");var di=dm.pathname||ck(dm.href);var dn=dm.hostname||d(dm.href);var dp=dn.toLowerCase();var dj=dm.href.replace(dn,dp);var dk=new RegExp("^(javascript|vbscript|jscript|mocha|livescript|ecmascript|mailto|tel):","i");if(!dk.test(dj)){var dh=ct(dm.className,dj,ar(dp,di),ae.hasNodeAttribute(dm,"download"));if(dh){return{type:dh,href:dj}}}}function aP(dh,di,dj,dk){var dl=v.buildInteractionRequestParams(dh,di,dj,dk);if(!dl){return}return cq(dl,null,"contentInteraction")}function bb(dh,di){if(!dh||!di){return false}var dj=v.findTargetNode(dh);if(v.shouldIgnoreInteraction(dj)){return false}dj=v.findTargetNodeNoDefault(dh);if(dj&&!U(dj,di)){return false
}return true}function cs(dj,di,dl){if(!dj){return}var dh=v.findParentContentNode(dj);if(!dh){return}if(!bb(dh,dj)){return}var dk=v.buildContentBlock(dh);if(!dk){return}if(!dk.target&&dl){dk.target=dl}return v.buildInteractionRequestParams(di,dk.name,dk.piece,dk.target)}function aW(di){if(!ca||!ca.length){return false}var dh,dj;for(dh=0;dh<ca.length;dh++){dj=ca[dh];if(dj&&dj.name===di.name&&dj.piece===di.piece&&dj.target===di.target){return true}}return false}function aX(dh){return function(dl){if(!dh){return}var dj=v.findParentContentNode(dh);var di;if(dl){di=dl.target||dl.srcElement}if(!di){di=dh}if(!bb(dj,di)){return}if(!dj){return false}var dm=v.findTargetNode(dj);if(!dm||v.shouldIgnoreInteraction(dm)){return false}var dk=da(dm);if(c7&&dk&&dk.type){return dk.type}return bJ.trackContentInteractionNode(di,"click")}}function b1(dj){if(!dj||!dj.length){return}var dh,di;for(dh=0;dh<dj.length;dh++){di=v.findTargetNode(dj[dh]);if(di&&!di.contentInteractionTrackingSetupDone){di.contentInteractionTrackingSetupDone=true;
-an(di,"click",aX(di))}}}function by(dj,dk){if(!dj||!dj.length){return[]}var dh,di;for(dh=0;dh<dj.length;dh++){if(aW(dj[dh])){dj.splice(dh,1);dh--}else{ca.push(dj[dh])}}if(!dj||!dj.length){return[]}b1(dk);var dl=[];for(dh=0;dh<dj.length;dh++){di=cq(v.buildImpressionRequestParams(dj[dh].name,dj[dh].piece,dj[dh].target),undefined,"contentImpressions");if(di){dl.push(di)}}return dl}function cy(di){var dh=v.collectContent(di);return by(dh,di)}function a9(di){if(!di||!di.length){return[]}var dh;for(dh=0;dh<di.length;dh++){if(!v.isNodeVisible(di[dh])){di.splice(dh,1);dh--}}if(!di||!di.length){return[]}return cy(di)}function aG(dj,dh,di){var dk=v.buildImpressionRequestParams(dj,dh,di);return cq(dk,null,"contentImpression")}function c9(dk,di){if(!dk){return}var dh=v.findParentContentNode(dk);var dj=v.buildContentBlock(dh);if(!dj){return}if(!di){di="Unknown"}return aP(di,dj.name,dj.piece,dj.target)}function cO(di,dk,dh,dj){return"e_c="+s(di)+"&e_a="+s(dk)+(J(dh)?"&e_n="+s(dh):"")+(J(dj)?"&e_v="+s(dj):"")
-}function at(dj,dl,dh,dk,dn,dm){if(!Y(dj)||!Y(dl)){ak("Error while logging event: Parameters `category` and `action` must not be empty or filled with whitespaces");return false}var di=cq(cO(dj,dl,dh,dk),dn,"event");bG(di,bK,dm)}function b8(dh,dk,di,dl){var dj=cq("search="+s(dh)+(dk?"&search_cat="+s(dk):"")+(J(di)?"&search_count="+di:""),dl,"sitesearch");bG(dj,bK)}function cS(dh,dl,dk,dj){var di=cq("idgoal="+dh+(dl?"&revenue="+dl:""),dk,"goal");bG(di,bK,dj)}function c0(dk,dh,dp,dn,dj){var dm=dh+"="+s(b2(dk));var di=cs(dj,"click",dk);if(di){dm+="&"+di}var dl=cq(dm,dp,"link");bG(dl,bK,dn)}function bU(di,dh){if(di!==""){return di+dh.charAt(0).toUpperCase()+dh.slice(1)}return dh}function cg(dm){var dl,dh,dk=["","webkit","ms","moz"],dj;if(!be){for(dh=0;dh<dk.length;dh++){dj=dk[dh];if(Object.prototype.hasOwnProperty.call(G,bU(dj,"hidden"))){if(G[bU(dj,"visibilityState")]==="prerender"){dl=true}break}}}if(dl){an(G,dj+"visibilitychange",function di(){G.removeEventListener(dj+"visibilitychange",di,false);
+an(di,"click",aX(di))}}}function by(dj,dk){if(!dj||!dj.length){return[]}var dh,di;for(dh=0;dh<dj.length;dh++){if(aW(dj[dh])){dj.splice(dh,1);dh--}else{ca.push(dj[dh])}}if(!dj||!dj.length){return[]}b1(dk);var dl=[];for(dh=0;dh<dj.length;dh++){di=cq(v.buildImpressionRequestParams(dj[dh].name,dj[dh].piece,dj[dh].target),undefined,"contentImpressions");if(di){dl.push(di)}}return dl}function cy(di){var dh=v.collectContent(di);return by(dh,di)}function a9(di){if(!di||!di.length){return[]}var dh;for(dh=0;dh<di.length;dh++){if(!v.isNodeVisible(di[dh])){di.splice(dh,1);dh--}}if(!di||!di.length){return[]}return cy(di)}function aG(dj,dh,di){var dk=v.buildImpressionRequestParams(dj,dh,di);return cq(dk,null,"contentImpression")}function c9(dk,di){if(!dk){return}var dh=v.findParentContentNode(dk);var dj=v.buildContentBlock(dh);if(!dj){return}if(!di){di="Unknown"}return aP(di,dj.name,dj.piece,dj.target)}function cO(di,dk,dh,dj){return"e_c="+s(di)+"&e_a="+s(dk)+(J(dh)?"&e_n="+s(dh):"")+(J(dj)?"&e_v="+s(dj):"")+"&ca=1"
+}function at(dj,dl,dh,dk,dn,dm){if(!Y(dj)||!Y(dl)){ak("Error while logging event: Parameters `category` and `action` must not be empty or filled with whitespaces");return false}var di=cq(cO(dj,dl,dh,dk),dn,"event");bG(di,bK,dm)}function b8(dh,dk,di,dl){var dj=cq("search="+s(dh)+(dk?"&search_cat="+s(dk):"")+(J(di)?"&search_count="+di:""),dl,"sitesearch");bG(dj,bK)}function cS(dh,dl,dk,dj){var di=cq("idgoal="+dh+(dl?"&revenue="+dl:"")+"&ca=1",dk,"goal");bG(di,bK,dj)}function c0(dk,dh,dp,dn,dj){var dm=dh+"="+s(b2(dk));var di=cs(dj,"click",dk);if(di){dm+="&"+di}var dl=cq(dm,dp,"link");bG(dl,bK,dn)}function bU(di,dh){if(di!==""){return di+dh.charAt(0).toUpperCase()+dh.slice(1)}return dh}function cg(dm){var dl,dh,dk=["","webkit","ms","moz"],dj;if(!be){for(dh=0;dh<dk.length;dh++){dj=dk[dh];if(Object.prototype.hasOwnProperty.call(G,bU(dj,"hidden"))){if(G[bU(dj,"visibilityState")]==="prerender"){dl=true}break}}}if(dl){an(G,dj+"visibilitychange",function di(){G.removeEventListener(dj+"visibilitychange",di,false);
dm()});return}dm()}function bs(){var di=bJ.getVisitorId();var dh=aJ();return di+dh}function ci(dh){if(!dh){return}if(!ae.hasNodeAttribute(dh,"href")){return}var di=ae.getAttributeValueFromNode(dh,"href");if(!di||aU(di)){return}if(!bJ.getVisitorId()){return}di=j(di,av);var dj=bs();di=F(di,av,dj);ae.setAnyAttribute(dh,"href",di)}function bl(dk){var dl=ae.getAttributeValueFromNode(dk,"href");if(!dl){return false}dl=String(dl);var di=dl.indexOf("//")===0||dl.indexOf("http://")===0||dl.indexOf("https://")===0;if(!di){return false}var dh=dk.pathname||ck(dk.href);var dj=(dk.hostname||d(dk.href)).toLowerCase();if(ar(dj,dh)){if(!cG(cT,L(dj))){return true}return false}return false}function cF(dh){var di=da(dh);if(di&&di.type){di.href=o(di.href);c0(di.href,di.type,undefined,null,dh);return}if(cM){dh=au(dh);if(bl(dh)){ci(dh)}}}function cu(){return G.all&&!G.addEventListener}function cU(dh){var dj=dh.which;var di=(typeof dh.button);if(!dj&&di!=="undefined"){if(cu()){if(dh.button&1){dj=1}else{if(dh.button&2){dj=3
}else{if(dh.button&4){dj=2}}}}else{if(dh.button===0||dh.button==="0"){dj=1}else{if(dh.button&1){dj=2}else{if(dh.button&2){dj=3}}}}}return dj}function bT(dh){switch(cU(dh)){case 1:return"left";case 2:return"middle";case 3:return"right"}}function a1(dh){return dh.target||dh.srcElement}function aC(dh){return function(dk){dk=dk||S.event;var dj=bT(dk);var dl=a1(dk);if(dk.type==="click"){var di=false;if(dh&&dj==="middle"){di=true}if(dl&&!di){cF(dl)}}else{if(dk.type==="mousedown"){if(dj==="middle"&&dl){aR=dj;bB=dl}else{aR=bB=null}}else{if(dk.type==="mouseup"){if(dj===aR&&dl===bB){cF(dl)}aR=bB=null}else{if(dk.type==="contextmenu"){cF(dl)}}}}}}function aq(dj,di){var dh=typeof di;if(dh==="undefined"){di=true}an(dj,"click",aC(di),false);if(di){an(dj,"mouseup",aC(di),false);an(dj,"mousedown",aC(di),false);an(dj,"contextmenu",aC(di),false)}}function bE(dj,dl){ap=true;var dk,di=a0(bA,"ignore"),dm=G.links,dh=null,dn=null;if(dm){for(dk=0;dk<dm.length;dk++){dh=dm[dk];if(!di.test(dh.className)){dn=typeof dh.matomoTrackers;
if("undefined"===dn){dh.matomoTrackers=[]}if(-1===M(dh.matomoTrackers,dl)){dh.matomoTrackers.push(dl);aq(dh,dj)}}}}}function aS(di,dl,dm){if(ce){return true}ce=true;var dn=false;var dk,dj;function dh(){dn=true}m(function(){function dp(dr){setTimeout(function(){if(!ce){return}dn=false;dm.trackVisibleContentImpressions();dp(dr)},dr)}function dq(dr){setTimeout(function(){if(!ce){return}if(dn){dn=false;dm.trackVisibleContentImpressions()}dq(dr)},dr)}if(di){dk=["scroll","resize"];for(dj=0;dj<dk.length;dj++){if(G.addEventListener){G.addEventListener(dk[dj],dh,false)}else{S.attachEvent("on"+dk[dj],dh)}}dq(100)}if(dl&&dl>0){dl=parseInt(dl,10);dp(dl)}})}var bD={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var dh=this.requests;this.requests=[];if(dh.length===1){bG(dh[0],bK)}else{dd(dh,bK)}},canQueue:function(){return !l&&this.enabled},pushMultiple:function(di){if(!this.canQueue()){dd(di,bK);return}var dh;for(dh=0;dh<di.length;dh++){this.push(di[dh])}},push:function(dh){if(!dh){return
diff --git a/matomo.js b/matomo.js
index 1cfafdb429..5dfc24fc6f 100644
--- a/matomo.js
+++ b/matomo.js
@@ -25,8 +25,8 @@ var aq="."+this.LEGACY_CONTENT_CLASS;var ao="["+this.CONTENT_ATTR+"]";var ar=ae.
ao=ae.findFirstNodeHavingAttribute(ap,this.CONTENT_PIECE_ATTR);if(!ao){ao=ae.findFirstNodeHavingClass(ap,this.CONTENT_PIECE_CLASS)}if(!ao){ao=ae.findFirstNodeHavingClass(ap,this.LEGACY_CONTENT_PIECE_CLASS)}if(ao){return ao}return ap},findTargetNodeNoDefault:function(ao){if(!ao){return}var ap=ae.findFirstNodeHavingAttributeWithValue(ao,this.CONTENT_TARGET_ATTR);if(ap){return ap}ap=ae.findFirstNodeHavingAttribute(ao,this.CONTENT_TARGET_ATTR);if(ap){return ap}ap=ae.findFirstNodeHavingClass(ao,this.CONTENT_TARGET_CLASS);if(ap){return ap}ap=ae.findFirstNodeHavingClass(ao,this.LEGACY_CONTENT_TARGET_CLASS);if(ap){return ap}},findTargetNode:function(ao){var ap=this.findTargetNodeNoDefault(ao);if(ap){return ap}return ao},findContentName:function(ap){if(!ap){return}var at=ae.findFirstNodeHavingAttributeWithValue(ap,this.CONTENT_NAME_ATTR);if(at){return ae.getAttributeValueFromNode(at,this.CONTENT_NAME_ATTR)}var ao=this.findContentPiece(ap);if(ao){return this.removeDomainIfIsInLink(ao)}if(ae.hasNodeAttributeWithValue(ap,"title")){return ae.getAttributeValueFromNode(ap,"title")
}var aq=this.findPieceNode(ap);if(ae.hasNodeAttributeWithValue(aq,"title")){return ae.getAttributeValueFromNode(aq,"title")}var ar=this.findTargetNode(ap);if(ae.hasNodeAttributeWithValue(ar,"title")){return ae.getAttributeValueFromNode(ar,"title")}},findContentPiece:function(ap){if(!ap){return}var ar=ae.findFirstNodeHavingAttributeWithValue(ap,this.CONTENT_PIECE_ATTR);if(ar){return ae.getAttributeValueFromNode(ar,this.CONTENT_PIECE_ATTR)}var ao=this.findPieceNode(ap);var aq=this.findMediaUrlInNode(ao);if(aq){return this.toAbsoluteUrl(aq)}},findContentTarget:function(aq){if(!aq){return}var ar=this.findTargetNode(aq);if(ae.hasNodeAttributeWithValue(ar,this.CONTENT_TARGET_ATTR)){return ae.getAttributeValueFromNode(ar,this.CONTENT_TARGET_ATTR)}var ap;if(ae.hasNodeAttributeWithValue(ar,"href")){ap=ae.getAttributeValueFromNode(ar,"href");return this.toAbsoluteUrl(ap)}var ao=this.findPieceNode(aq);if(ae.hasNodeAttributeWithValue(ao,"href")){ap=ae.getAttributeValueFromNode(ao,"href");return this.toAbsoluteUrl(ap)
}},isSameDomain:function(ao){if(!ao||!ao.indexOf){return false}if(0===ao.indexOf(this.getLocation().origin)){return true}var ap=ao.indexOf(this.getLocation().host);if(8>=ap&&0<=ap){return true}return false},removeDomainIfIsInLink:function(aq){var ap="^https?://[^/]+";var ao="^.*//[^/]+";if(aq&&aq.search&&-1!==aq.search(new RegExp(ap))&&this.isSameDomain(aq)){aq=aq.replace(new RegExp(ao),"");if(!aq){aq="/"}}return aq},findMediaUrlInNode:function(at){if(!at){return}var aq=["img","embed","video","audio"];var ao=at.nodeName.toLowerCase();if(-1!==M(aq,ao)&&ae.findFirstNodeHavingAttributeWithValue(at,"src")){var ar=ae.findFirstNodeHavingAttributeWithValue(at,"src");return ae.getAttributeValueFromNode(ar,"src")}if(ao==="object"&&ae.hasNodeAttributeWithValue(at,"data")){return ae.getAttributeValueFromNode(at,"data")}if(ao==="object"){var au=ae.findNodesByTagName(at,"param");if(au&&au.length){var ap;for(ap=0;ap<au.length;ap++){if("movie"===ae.getAttributeValueFromNode(au[ap],"name")&&ae.hasNodeAttributeWithValue(au[ap],"value")){return ae.getAttributeValueFromNode(au[ap],"value")
-}}}var av=ae.findNodesByTagName(at,"embed");if(av&&av.length){return this.findMediaUrlInNode(av[0])}}},trim:function(ao){return a(ao)},isOrWasNodeInViewport:function(au){if(!au||!au.getBoundingClientRect||au.nodeType!==1){return true}var at=au.getBoundingClientRect();var ar=G.documentElement||{};var aq=at.top<0;if(aq&&au.offsetTop){aq=(au.offsetTop+at.height)>0}var ap=ar.clientWidth;if(S.innerWidth&&ap>S.innerWidth){ap=S.innerWidth}var ao=ar.clientHeight;if(S.innerHeight&&ao>S.innerHeight){ao=S.innerHeight}return((at.bottom>0||aq)&&at.right>0&&at.left<ap&&((at.top<ao)||aq))},isNodeVisible:function(ap){var ao=i(ap);var aq=this.isOrWasNodeInViewport(ap);return ao&&aq},buildInteractionRequestParams:function(ao,ap,aq,ar){var at="";if(ao){at+="c_i="+s(ao)}if(ap){if(at){at+="&"}at+="c_n="+s(ap)}if(aq){if(at){at+="&"}at+="c_p="+s(aq)}if(ar){if(at){at+="&"}at+="c_t="+s(ar)}return at},buildImpressionRequestParams:function(ao,ap,aq){var ar="c_n="+s(ao)+"&c_p="+s(ap);if(aq){ar+="&c_t="+s(aq)}return ar
-},buildContentBlock:function(aq){if(!aq){return}var ao=this.findContentName(aq);var ap=this.findContentPiece(aq);var ar=this.findContentTarget(aq);ao=this.trim(ao);ap=this.trim(ap);ar=this.trim(ar);return{name:ao||"Unknown",piece:ap||"Unknown",target:ar||""}},collectContent:function(ar){if(!ar||!ar.length){return[]}var aq=[];var ao,ap;for(ao=0;ao<ar.length;ao++){ap=this.buildContentBlock(ar[ao]);if(J(ap)){aq.push(ap)}}return aq},setLocation:function(ao){this.location=ao},getLocation:function(){var ao=this.location||S.location;if(!ao.origin){ao.origin=ao.protocol+"//"+ao.hostname+(ao.port?":"+ao.port:"")}return ao},toAbsoluteUrl:function(ap){if((!ap||String(ap)!==ap)&&ap!==""){return ap}if(""===ap){return this.getLocation().href}if(ap.search(/^\/\//)!==-1){return this.getLocation().protocol+ap}if(ap.search(/:\/\//)!==-1){return ap}if(0===ap.indexOf("#")){return this.getLocation().origin+this.getLocation().pathname+ap}if(0===ap.indexOf("?")){return this.getLocation().origin+this.getLocation().pathname+ap
+}}}var av=ae.findNodesByTagName(at,"embed");if(av&&av.length){return this.findMediaUrlInNode(av[0])}}},trim:function(ao){return a(ao)},isOrWasNodeInViewport:function(au){if(!au||!au.getBoundingClientRect||au.nodeType!==1){return true}var at=au.getBoundingClientRect();var ar=G.documentElement||{};var aq=at.top<0;if(aq&&au.offsetTop){aq=(au.offsetTop+at.height)>0}var ap=ar.clientWidth;if(S.innerWidth&&ap>S.innerWidth){ap=S.innerWidth}var ao=ar.clientHeight;if(S.innerHeight&&ao>S.innerHeight){ao=S.innerHeight}return((at.bottom>0||aq)&&at.right>0&&at.left<ap&&((at.top<ao)||aq))},isNodeVisible:function(ap){var ao=i(ap);var aq=this.isOrWasNodeInViewport(ap);return ao&&aq},buildInteractionRequestParams:function(ao,ap,aq,ar){var at="";if(ao){at+="c_i="+s(ao)}if(ap){if(at){at+="&"}at+="c_n="+s(ap)}if(aq){if(at){at+="&"}at+="c_p="+s(aq)}if(ar){if(at){at+="&"}at+="c_t="+s(ar)}if(at){at+="&ca=1"}return at},buildImpressionRequestParams:function(ao,ap,aq){var ar="c_n="+s(ao)+"&c_p="+s(ap);if(aq){ar+="&c_t="+s(aq)
+}if(ar){ar+="&ca=1"}return ar},buildContentBlock:function(aq){if(!aq){return}var ao=this.findContentName(aq);var ap=this.findContentPiece(aq);var ar=this.findContentTarget(aq);ao=this.trim(ao);ap=this.trim(ap);ar=this.trim(ar);return{name:ao||"Unknown",piece:ap||"Unknown",target:ar||""}},collectContent:function(ar){if(!ar||!ar.length){return[]}var aq=[];var ao,ap;for(ao=0;ao<ar.length;ao++){ap=this.buildContentBlock(ar[ao]);if(J(ap)){aq.push(ap)}}return aq},setLocation:function(ao){this.location=ao},getLocation:function(){var ao=this.location||S.location;if(!ao.origin){ao.origin=ao.protocol+"//"+ao.hostname+(ao.port?":"+ao.port:"")}return ao},toAbsoluteUrl:function(ap){if((!ap||String(ap)!==ap)&&ap!==""){return ap}if(""===ap){return this.getLocation().href}if(ap.search(/^\/\//)!==-1){return this.getLocation().protocol+ap}if(ap.search(/:\/\//)!==-1){return ap}if(0===ap.indexOf("#")){return this.getLocation().origin+this.getLocation().pathname+ap}if(0===ap.indexOf("?")){return this.getLocation().origin+this.getLocation().pathname+ap
}if(0===ap.search("^[a-zA-Z]{2,11}:")){return ap}if(ap.search(/^\//)!==-1){return this.getLocation().origin+ap}var ao="(.*/)";var aq=this.getLocation().origin+this.getLocation().pathname.match(new RegExp(ao))[0];return aq+ap},isUrlToCurrentDomain:function(ap){var aq=this.toAbsoluteUrl(ap);if(!aq){return false}var ao=this.getLocation().origin;if(ao===aq){return true}if(0===String(aq).indexOf(ao)){if(":"===String(aq).substr(ao.length,1)){return false}return true}return false},setHrefAttribute:function(ap,ao){if(!ap||!ao){return}ae.setAnyAttribute(ap,"href",ao)},shouldIgnoreInteraction:function(ao){if(ae.hasNodeAttribute(ao,this.CONTENT_IGNOREINTERACTION_ATTR)){return true}if(ae.hasNodeCssClass(ao,this.CONTENT_IGNOREINTERACTION_CLASS)){return true}if(ae.hasNodeCssClass(ao,this.LEGACY_CONTENT_IGNOREINTERACTION_CLASS)){return true}return false}};function W(ap,at){if(at){return at}ap=v.toAbsoluteUrl(ap);if(z(ap,"?")){var ar=ap.indexOf("?");ap=ap.slice(0,ar)}if(Q(ap,"matomo.php")){ap=f(ap,"matomo.php".length)
}else{if(Q(ap,"piwik.php")){ap=f(ap,"piwik.php".length)}else{if(Q(ap,".php")){var ao=ap.lastIndexOf("/");var aq=1;ap=ap.slice(0,ao+aq)}}}if(Q(ap,"/js/")){ap=f(ap,"js/".length)}return ap}function N(av){var ax="Matomo_Overlay";var ap=new RegExp("index\\.php\\?module=Overlay&action=startOverlaySession&idSite=([0-9]+)&period=([^&]+)&date=([^&]+)(&segment=.*)?$");var aq=ap.exec(G.referrer);if(aq){var at=aq[1];if(at!==String(av)){return false}var au=aq[2],ao=aq[3],ar=aq[4];if(!ar){ar=""}else{if(ar.indexOf("&segment=")===0){ar=ar.substr("&segment=".length)}}S.name=ax+"###"+au+"###"+ao+"###"+ar}var aw=S.name.split("###");return aw.length===4&&aw[0]===ax}function Z(ap,av,aq){var au=S.name.split("###"),at=au[1],ao=au[2],ar=au[3],aw=W(ap,av);n(aw+"plugins/Overlay/client/client.js?v=1",function(){Matomo_Overlay_Client.initialize(aw,aq,at,ao,ar)})}function u(){var aq;try{aq=S.frameElement}catch(ap){return true}if(J(aq)){return(aq&&String(aq.nodeName).toLowerCase()==="iframe")?true:false}try{return S.self!==S.top
}catch(ao){return true}}function P(cd,b9){var bJ=this,bd="mtm_consent",cC="mtm_cookie_consent",cL="mtm_consent_removed",b4=aa(G.domain,S.location.href,K()),cT=L(b4[0]),bN=o(b4[1]),bo=o(b4[2]),cR=false,ch="GET",c8=ch,aI="application/x-www-form-urlencoded; charset=UTF-8",cv=aI,aE=cd||"",bI="",cY="",b6=b9||"",bz="",bO="",a4,bj="",c5=["7z","aac","apk","arc","arj","asf","asx","avi","azw3","bin","csv","deb","dmg","doc","docx","epub","exe","flv","gif","gz","gzip","hqx","ibooks","jar","jpg","jpeg","js","mobi","mp2","mp3","mp4","mpg","mpeg","mov","movie","msi","msp","odb","odf","odg","ods","odt","ogg","ogv","pdf","phps","png","ppt","pptx","qt","qtm","ra","ram","rar","rpm","rtf","sea","sit","tar","tbz","tbz2","bz","bz2","tgz","torrent","txt","wav","wma","wmv","wpd","xls","xlsx","xml","z","zip"],ay=[cT],bA=[],bL=[],a8=[],bK=500,cV=true,cI,a5,bR,bP,ao,co=["pk_campaign","mtm_campaign","piwik_campaign","matomo_campaign","utm_campaign","utm_source","utm_medium"],bH=["pk_kwd","mtm_kwd","piwik_kwd","matomo_kwd","utm_term"],bk="_pk_",av="pk_vid",aZ=180,cW,bq,bS=false,bm=false,cP,be,bw,cJ=33955200000,cm=1800000,c4=15768000000,a2=true,bF=false,bh=false,bQ=false,aQ=false,cb,bW={},cl={},bn={},bu=200,cr={},cZ={},c6={},ca=[],ce=false,cA=false,ap=false,c7=false,cM=false,aN=false,bc=u(),cw=null,cX=null,aR,bB,b7=am,bp,aL,cp=0,bv=["id","ses","cvar","ref"],cz=false,bC=null,cK=[],ax=T++,aw=false;
@@ -42,11 +42,11 @@ var dj;for(dj in dl){if(Object.prototype.hasOwnProperty.call(dl,dj)){dk.push(dj)
}dh+="&pf_dm1="+(h.timing.domInteractive-h.timing.domLoading)}if(h&&h.timing&&h&&h.timing.domComplete&&h.timing.domInteractive){if(h.timing.domComplete<h.timing.domInteractive){return}dh+="&pf_dm2="+(h.timing.domComplete-h.timing.domInteractive)}if(h&&h.timing&&h&&h.timing.loadEventEnd&&h.timing.loadEventStart){if(h.timing.loadEventEnd<h.timing.loadEventStart){return}dh+="&pf_onl="+(h.timing.loadEventEnd-h.timing.loadEventStart)}return di+dh}function cq(dj,dE,dF){var dD,di=new Date(),dr=Math.round(di.getTime()/1000),dn,dB,dk=1024,dK,ds,dA=aQ,dl=aT("ses"),dy=aT("ref"),dv=aT("cvar"),dw=aD(dl),dC=bM(),dG=a4||bN,dp,dh;if(bm){aF()}if(cP){return""}var dx=aY();var du=G.characterSet||G.charset;if(!du||du.toLowerCase()==="utf-8"){du=null}dp=dC[0];dh=dC[1];dn=dC[2];dB=dC[3];if(!dw){if(!bw||!dp.length){for(dD in co){if(Object.prototype.hasOwnProperty.call(co,dD)){dp=e(dG,co[dD]);if(dp.length){break}}}for(dD in bH){if(Object.prototype.hasOwnProperty.call(bH,dD)){dh=e(dG,bH[dD]);if(dh.length){break}}}}dK=d(bo);
ds=dB.length?d(dB):"";if(dK.length&&!aV(dK)&&(!bw||!ds.length||aV(ds))){dB=bo}if(dB.length||dp.length){dn=dr;dC=[dp,dh,dn,b2(dB.slice(0,dk))];dc(dy,S.JSON.stringify(dC),c4,bq,cW,bS)}}dj+="&idsite="+b6+"&rec=1&r="+String(Math.random()).slice(2,8)+"&h="+di.getHours()+"&m="+di.getMinutes()+"&s="+di.getSeconds()+"&url="+s(b2(dG))+(bo.length?"&urlref="+s(b2(bo)):"")+((bz&&bz.length)?"&uid="+s(bz):"")+"&_id="+dx.uuid+"&_idn="+dx.newVisitor+(dp.length?"&_rcn="+s(dp):"")+(dh.length?"&_rck="+s(dh):"")+"&_refts="+dn+(String(dB).length?"&_ref="+s(b2(dB.slice(0,dk))):"")+(du?"&cs="+s(du):"")+"&send_image=0";var dJ=cH();for(dD in dJ){if(Object.prototype.hasOwnProperty.call(dJ,dD)){dj+="&"+dD+"="+dJ[dD]}}var dI=[];if(dE){for(dD in dE){if(Object.prototype.hasOwnProperty.call(dE,dD)&&/^dimension\d+$/.test(dD)){var dm=dD.replace("dimension","");dI.push(parseInt(dm,10));dI.push(String(dm));dj+="&"+dD+"="+s(dE[dD]);delete dE[dD]}}}if(dE&&B(dE)){dE=null}for(dD in cr){if(Object.prototype.hasOwnProperty.call(cr,dD)){dj+="&"+dD+"="+s(cr[dD])
}}for(dD in bn){if(Object.prototype.hasOwnProperty.call(bn,dD)){var dt=(-1===M(dI,dD));if(dt){dj+="&dimension"+dD+"="+s(bn[dD])}}}if(dE){dj+="&data="+s(S.JSON.stringify(dE))}else{if(ao){dj+="&data="+s(S.JSON.stringify(ao))}}function dq(dL,dM){var dN=S.JSON.stringify(dL);if(dN.length>2){return"&"+dM+"="+s(dN)}return""}var dH=dg(bW);var dz=dg(cl);dj+=dq(dH,"cvar");dj+=dq(dz,"e_cvar");if(aQ){dj+=dq(aQ,"_cvar");for(dD in dA){if(Object.prototype.hasOwnProperty.call(dA,dD)){if(aQ[dD][0]===""||aQ[dD][1]===""){delete aQ[dD]}}}if(bQ){dc(dv,S.JSON.stringify(aQ),cm,bq,cW,bS)}}if(a2&&bF&&!bh){dj=aA(dj);bh=true}if(aL){dj+="&pv_id="+aL}aM(dx);cc();dj+=ac(dF,{tracker:bJ,request:dj});if(cY.length){dj+="&"+cY}if(A(cb)){dj=cb(dj)}return dj}bR=function a7(){var dh=new Date();dh=dh.getTime();if(!cX){return false}if(cX+a5<=dh){bJ.ping();return true}return false};function br(dk,dj,dp,dl,dh,ds){var dn="idgoal=0",di=new Date(),dq=[],dr,dm=String(dk).length;if(dm){dn+="&ec_id="+s(dk)}dn+="&revenue="+dj;if(String(dp).length){dn+="&ec_st="+dp
-}if(String(dl).length){dn+="&ec_tx="+dl}if(String(dh).length){dn+="&ec_sh="+dh}if(String(ds).length){dn+="&ec_dt="+ds}if(cZ){for(dr in cZ){if(Object.prototype.hasOwnProperty.call(cZ,dr)){if(!J(cZ[dr][1])){cZ[dr][1]=""}if(!J(cZ[dr][2])){cZ[dr][2]=""}if(!J(cZ[dr][3])||String(cZ[dr][3]).length===0){cZ[dr][3]=0}if(!J(cZ[dr][4])||String(cZ[dr][4]).length===0){cZ[dr][4]=1}dq.push(cZ[dr])}}dn+="&ec_items="+s(S.JSON.stringify(dq))}dn=cq(dn,ao,"ecommerce");bG(dn,bK);if(dm){cZ={}}}function bZ(dh,dl,dk,dj,di,dm){if(String(dh).length&&J(dl)){br(dh,dl,dk,dj,di,dm)}}function bt(dh){if(J(dh)){br("",dh,"","","","")}}function b0(di,dk,dj){aL=bg();var dh=cq("action_name="+s(al(di||bj)),dk,"log");if(!bh){dh=aA(dh)}bG(dh,bK,dj)}function a0(dj,di){var dk,dh="(^| )(piwik[_-]"+di+"|matomo[_-]"+di;if(dj){for(dk=0;dk<dj.length;dk++){dh+="|"+dj[dk]}}dh+=")( |$)";return new RegExp(dh)}function aU(dh){return(aE&&dh&&0===String(dh).indexOf(aE))}function ct(dl,dh,dm,di){if(aU(dh)){return 0}var dk=a0(bL,"download"),dj=a0(a8,"link"),dn=new RegExp("\\.("+c5.join("|")+")([?&#]|$)","i");
+}if(String(dl).length){dn+="&ec_tx="+dl}if(String(dh).length){dn+="&ec_sh="+dh}if(String(ds).length){dn+="&ec_dt="+ds}if(cZ){for(dr in cZ){if(Object.prototype.hasOwnProperty.call(cZ,dr)){if(!J(cZ[dr][1])){cZ[dr][1]=""}if(!J(cZ[dr][2])){cZ[dr][2]=""}if(!J(cZ[dr][3])||String(cZ[dr][3]).length===0){cZ[dr][3]=0}if(!J(cZ[dr][4])||String(cZ[dr][4]).length===0){cZ[dr][4]=1}dq.push(cZ[dr])}}dn+="&ec_items="+s(S.JSON.stringify(dq))}dn+="&ca=1";dn=cq(dn,ao,"ecommerce");bG(dn,bK);if(dm){cZ={}}}function bZ(dh,dl,dk,dj,di,dm){if(String(dh).length&&J(dl)){br(dh,dl,dk,dj,di,dm)}}function bt(dh){if(J(dh)){br("",dh,"","","","")}}function b0(di,dk,dj){aL=bg();var dh=cq("action_name="+s(al(di||bj)),dk,"log");if(!bh){dh=aA(dh)}bG(dh,bK,dj)}function a0(dj,di){var dk,dh="(^| )(piwik[_-]"+di+"|matomo[_-]"+di;if(dj){for(dk=0;dk<dj.length;dk++){dh+="|"+dj[dk]}}dh+=")( |$)";return new RegExp(dh)}function aU(dh){return(aE&&dh&&0===String(dh).indexOf(aE))}function ct(dl,dh,dm,di){if(aU(dh)){return 0}var dk=a0(bL,"download"),dj=a0(a8,"link"),dn=new RegExp("\\.("+c5.join("|")+")([?&#]|$)","i");
if(dj.test(dl)){return"link"}if(di||dk.test(dl)||dn.test(dh)){return"download"}if(dm){return 0}return"link"}function au(di){var dh;dh=di.parentNode;while(dh!==null&&J(dh)){if(ae.isLinkElement(di)){break}di=dh;dh=di.parentNode}return di}function da(dm){dm=au(dm);if(!ae.hasNodeAttribute(dm,"href")){return}if(!J(dm.href)){return}var dl=ae.getAttributeValueFromNode(dm,"href");var di=dm.pathname||ck(dm.href);var dn=dm.hostname||d(dm.href);var dp=dn.toLowerCase();var dj=dm.href.replace(dn,dp);var dk=new RegExp("^(javascript|vbscript|jscript|mocha|livescript|ecmascript|mailto|tel):","i");if(!dk.test(dj)){var dh=ct(dm.className,dj,ar(dp,di),ae.hasNodeAttribute(dm,"download"));if(dh){return{type:dh,href:dj}}}}function aP(dh,di,dj,dk){var dl=v.buildInteractionRequestParams(dh,di,dj,dk);if(!dl){return}return cq(dl,null,"contentInteraction")}function bb(dh,di){if(!dh||!di){return false}var dj=v.findTargetNode(dh);if(v.shouldIgnoreInteraction(dj)){return false}dj=v.findTargetNodeNoDefault(dh);if(dj&&!U(dj,di)){return false
}return true}function cs(dj,di,dl){if(!dj){return}var dh=v.findParentContentNode(dj);if(!dh){return}if(!bb(dh,dj)){return}var dk=v.buildContentBlock(dh);if(!dk){return}if(!dk.target&&dl){dk.target=dl}return v.buildInteractionRequestParams(di,dk.name,dk.piece,dk.target)}function aW(di){if(!ca||!ca.length){return false}var dh,dj;for(dh=0;dh<ca.length;dh++){dj=ca[dh];if(dj&&dj.name===di.name&&dj.piece===di.piece&&dj.target===di.target){return true}}return false}function aX(dh){return function(dl){if(!dh){return}var dj=v.findParentContentNode(dh);var di;if(dl){di=dl.target||dl.srcElement}if(!di){di=dh}if(!bb(dj,di)){return}if(!dj){return false}var dm=v.findTargetNode(dj);if(!dm||v.shouldIgnoreInteraction(dm)){return false}var dk=da(dm);if(c7&&dk&&dk.type){return dk.type}return bJ.trackContentInteractionNode(di,"click")}}function b1(dj){if(!dj||!dj.length){return}var dh,di;for(dh=0;dh<dj.length;dh++){di=v.findTargetNode(dj[dh]);if(di&&!di.contentInteractionTrackingSetupDone){di.contentInteractionTrackingSetupDone=true;
-an(di,"click",aX(di))}}}function by(dj,dk){if(!dj||!dj.length){return[]}var dh,di;for(dh=0;dh<dj.length;dh++){if(aW(dj[dh])){dj.splice(dh,1);dh--}else{ca.push(dj[dh])}}if(!dj||!dj.length){return[]}b1(dk);var dl=[];for(dh=0;dh<dj.length;dh++){di=cq(v.buildImpressionRequestParams(dj[dh].name,dj[dh].piece,dj[dh].target),undefined,"contentImpressions");if(di){dl.push(di)}}return dl}function cy(di){var dh=v.collectContent(di);return by(dh,di)}function a9(di){if(!di||!di.length){return[]}var dh;for(dh=0;dh<di.length;dh++){if(!v.isNodeVisible(di[dh])){di.splice(dh,1);dh--}}if(!di||!di.length){return[]}return cy(di)}function aG(dj,dh,di){var dk=v.buildImpressionRequestParams(dj,dh,di);return cq(dk,null,"contentImpression")}function c9(dk,di){if(!dk){return}var dh=v.findParentContentNode(dk);var dj=v.buildContentBlock(dh);if(!dj){return}if(!di){di="Unknown"}return aP(di,dj.name,dj.piece,dj.target)}function cO(di,dk,dh,dj){return"e_c="+s(di)+"&e_a="+s(dk)+(J(dh)?"&e_n="+s(dh):"")+(J(dj)?"&e_v="+s(dj):"")
-}function at(dj,dl,dh,dk,dn,dm){if(!Y(dj)||!Y(dl)){ak("Error while logging event: Parameters `category` and `action` must not be empty or filled with whitespaces");return false}var di=cq(cO(dj,dl,dh,dk),dn,"event");bG(di,bK,dm)}function b8(dh,dk,di,dl){var dj=cq("search="+s(dh)+(dk?"&search_cat="+s(dk):"")+(J(di)?"&search_count="+di:""),dl,"sitesearch");bG(dj,bK)}function cS(dh,dl,dk,dj){var di=cq("idgoal="+dh+(dl?"&revenue="+dl:""),dk,"goal");bG(di,bK,dj)}function c0(dk,dh,dp,dn,dj){var dm=dh+"="+s(b2(dk));var di=cs(dj,"click",dk);if(di){dm+="&"+di}var dl=cq(dm,dp,"link");bG(dl,bK,dn)}function bU(di,dh){if(di!==""){return di+dh.charAt(0).toUpperCase()+dh.slice(1)}return dh}function cg(dm){var dl,dh,dk=["","webkit","ms","moz"],dj;if(!be){for(dh=0;dh<dk.length;dh++){dj=dk[dh];if(Object.prototype.hasOwnProperty.call(G,bU(dj,"hidden"))){if(G[bU(dj,"visibilityState")]==="prerender"){dl=true}break}}}if(dl){an(G,dj+"visibilitychange",function di(){G.removeEventListener(dj+"visibilitychange",di,false);
+an(di,"click",aX(di))}}}function by(dj,dk){if(!dj||!dj.length){return[]}var dh,di;for(dh=0;dh<dj.length;dh++){if(aW(dj[dh])){dj.splice(dh,1);dh--}else{ca.push(dj[dh])}}if(!dj||!dj.length){return[]}b1(dk);var dl=[];for(dh=0;dh<dj.length;dh++){di=cq(v.buildImpressionRequestParams(dj[dh].name,dj[dh].piece,dj[dh].target),undefined,"contentImpressions");if(di){dl.push(di)}}return dl}function cy(di){var dh=v.collectContent(di);return by(dh,di)}function a9(di){if(!di||!di.length){return[]}var dh;for(dh=0;dh<di.length;dh++){if(!v.isNodeVisible(di[dh])){di.splice(dh,1);dh--}}if(!di||!di.length){return[]}return cy(di)}function aG(dj,dh,di){var dk=v.buildImpressionRequestParams(dj,dh,di);return cq(dk,null,"contentImpression")}function c9(dk,di){if(!dk){return}var dh=v.findParentContentNode(dk);var dj=v.buildContentBlock(dh);if(!dj){return}if(!di){di="Unknown"}return aP(di,dj.name,dj.piece,dj.target)}function cO(di,dk,dh,dj){return"e_c="+s(di)+"&e_a="+s(dk)+(J(dh)?"&e_n="+s(dh):"")+(J(dj)?"&e_v="+s(dj):"")+"&ca=1"
+}function at(dj,dl,dh,dk,dn,dm){if(!Y(dj)||!Y(dl)){ak("Error while logging event: Parameters `category` and `action` must not be empty or filled with whitespaces");return false}var di=cq(cO(dj,dl,dh,dk),dn,"event");bG(di,bK,dm)}function b8(dh,dk,di,dl){var dj=cq("search="+s(dh)+(dk?"&search_cat="+s(dk):"")+(J(di)?"&search_count="+di:""),dl,"sitesearch");bG(dj,bK)}function cS(dh,dl,dk,dj){var di=cq("idgoal="+dh+(dl?"&revenue="+dl:"")+"&ca=1",dk,"goal");bG(di,bK,dj)}function c0(dk,dh,dp,dn,dj){var dm=dh+"="+s(b2(dk));var di=cs(dj,"click",dk);if(di){dm+="&"+di}var dl=cq(dm,dp,"link");bG(dl,bK,dn)}function bU(di,dh){if(di!==""){return di+dh.charAt(0).toUpperCase()+dh.slice(1)}return dh}function cg(dm){var dl,dh,dk=["","webkit","ms","moz"],dj;if(!be){for(dh=0;dh<dk.length;dh++){dj=dk[dh];if(Object.prototype.hasOwnProperty.call(G,bU(dj,"hidden"))){if(G[bU(dj,"visibilityState")]==="prerender"){dl=true}break}}}if(dl){an(G,dj+"visibilitychange",function di(){G.removeEventListener(dj+"visibilitychange",di,false);
dm()});return}dm()}function bs(){var di=bJ.getVisitorId();var dh=aJ();return di+dh}function ci(dh){if(!dh){return}if(!ae.hasNodeAttribute(dh,"href")){return}var di=ae.getAttributeValueFromNode(dh,"href");if(!di||aU(di)){return}if(!bJ.getVisitorId()){return}di=j(di,av);var dj=bs();di=F(di,av,dj);ae.setAnyAttribute(dh,"href",di)}function bl(dk){var dl=ae.getAttributeValueFromNode(dk,"href");if(!dl){return false}dl=String(dl);var di=dl.indexOf("//")===0||dl.indexOf("http://")===0||dl.indexOf("https://")===0;if(!di){return false}var dh=dk.pathname||ck(dk.href);var dj=(dk.hostname||d(dk.href)).toLowerCase();if(ar(dj,dh)){if(!cG(cT,L(dj))){return true}return false}return false}function cF(dh){var di=da(dh);if(di&&di.type){di.href=o(di.href);c0(di.href,di.type,undefined,null,dh);return}if(cM){dh=au(dh);if(bl(dh)){ci(dh)}}}function cu(){return G.all&&!G.addEventListener}function cU(dh){var dj=dh.which;var di=(typeof dh.button);if(!dj&&di!=="undefined"){if(cu()){if(dh.button&1){dj=1}else{if(dh.button&2){dj=3
}else{if(dh.button&4){dj=2}}}}else{if(dh.button===0||dh.button==="0"){dj=1}else{if(dh.button&1){dj=2}else{if(dh.button&2){dj=3}}}}}return dj}function bT(dh){switch(cU(dh)){case 1:return"left";case 2:return"middle";case 3:return"right"}}function a1(dh){return dh.target||dh.srcElement}function aC(dh){return function(dk){dk=dk||S.event;var dj=bT(dk);var dl=a1(dk);if(dk.type==="click"){var di=false;if(dh&&dj==="middle"){di=true}if(dl&&!di){cF(dl)}}else{if(dk.type==="mousedown"){if(dj==="middle"&&dl){aR=dj;bB=dl}else{aR=bB=null}}else{if(dk.type==="mouseup"){if(dj===aR&&dl===bB){cF(dl)}aR=bB=null}else{if(dk.type==="contextmenu"){cF(dl)}}}}}}function aq(dj,di){var dh=typeof di;if(dh==="undefined"){di=true}an(dj,"click",aC(di),false);if(di){an(dj,"mouseup",aC(di),false);an(dj,"mousedown",aC(di),false);an(dj,"contextmenu",aC(di),false)}}function bE(dj,dl){ap=true;var dk,di=a0(bA,"ignore"),dm=G.links,dh=null,dn=null;if(dm){for(dk=0;dk<dm.length;dk++){dh=dm[dk];if(!di.test(dh.className)){dn=typeof dh.matomoTrackers;
if("undefined"===dn){dh.matomoTrackers=[]}if(-1===M(dh.matomoTrackers,dl)){dh.matomoTrackers.push(dl);aq(dh,dj)}}}}}function aS(di,dl,dm){if(ce){return true}ce=true;var dn=false;var dk,dj;function dh(){dn=true}m(function(){function dp(dr){setTimeout(function(){if(!ce){return}dn=false;dm.trackVisibleContentImpressions();dp(dr)},dr)}function dq(dr){setTimeout(function(){if(!ce){return}if(dn){dn=false;dm.trackVisibleContentImpressions()}dq(dr)},dr)}if(di){dk=["scroll","resize"];for(dj=0;dj<dk.length;dj++){if(G.addEventListener){G.addEventListener(dk[dj],dh,false)}else{S.attachEvent("on"+dk[dj],dh)}}dq(100)}if(dl&&dl>0){dl=parseInt(dl,10);dp(dl)}})}var bD={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var dh=this.requests;this.requests=[];if(dh.length===1){bG(dh[0],bK)}else{dd(dh,bK)}},canQueue:function(){return !l&&this.enabled},pushMultiple:function(di){if(!this.canQueue()){dd(di,bK);return}var dh;for(dh=0;dh<di.length;dh++){this.push(di[dh])}},push:function(dh){if(!dh){return
diff --git a/piwik.js b/piwik.js
index 1cfafdb429..5dfc24fc6f 100644
--- a/piwik.js
+++ b/piwik.js
@@ -25,8 +25,8 @@ var aq="."+this.LEGACY_CONTENT_CLASS;var ao="["+this.CONTENT_ATTR+"]";var ar=ae.
ao=ae.findFirstNodeHavingAttribute(ap,this.CONTENT_PIECE_ATTR);if(!ao){ao=ae.findFirstNodeHavingClass(ap,this.CONTENT_PIECE_CLASS)}if(!ao){ao=ae.findFirstNodeHavingClass(ap,this.LEGACY_CONTENT_PIECE_CLASS)}if(ao){return ao}return ap},findTargetNodeNoDefault:function(ao){if(!ao){return}var ap=ae.findFirstNodeHavingAttributeWithValue(ao,this.CONTENT_TARGET_ATTR);if(ap){return ap}ap=ae.findFirstNodeHavingAttribute(ao,this.CONTENT_TARGET_ATTR);if(ap){return ap}ap=ae.findFirstNodeHavingClass(ao,this.CONTENT_TARGET_CLASS);if(ap){return ap}ap=ae.findFirstNodeHavingClass(ao,this.LEGACY_CONTENT_TARGET_CLASS);if(ap){return ap}},findTargetNode:function(ao){var ap=this.findTargetNodeNoDefault(ao);if(ap){return ap}return ao},findContentName:function(ap){if(!ap){return}var at=ae.findFirstNodeHavingAttributeWithValue(ap,this.CONTENT_NAME_ATTR);if(at){return ae.getAttributeValueFromNode(at,this.CONTENT_NAME_ATTR)}var ao=this.findContentPiece(ap);if(ao){return this.removeDomainIfIsInLink(ao)}if(ae.hasNodeAttributeWithValue(ap,"title")){return ae.getAttributeValueFromNode(ap,"title")
}var aq=this.findPieceNode(ap);if(ae.hasNodeAttributeWithValue(aq,"title")){return ae.getAttributeValueFromNode(aq,"title")}var ar=this.findTargetNode(ap);if(ae.hasNodeAttributeWithValue(ar,"title")){return ae.getAttributeValueFromNode(ar,"title")}},findContentPiece:function(ap){if(!ap){return}var ar=ae.findFirstNodeHavingAttributeWithValue(ap,this.CONTENT_PIECE_ATTR);if(ar){return ae.getAttributeValueFromNode(ar,this.CONTENT_PIECE_ATTR)}var ao=this.findPieceNode(ap);var aq=this.findMediaUrlInNode(ao);if(aq){return this.toAbsoluteUrl(aq)}},findContentTarget:function(aq){if(!aq){return}var ar=this.findTargetNode(aq);if(ae.hasNodeAttributeWithValue(ar,this.CONTENT_TARGET_ATTR)){return ae.getAttributeValueFromNode(ar,this.CONTENT_TARGET_ATTR)}var ap;if(ae.hasNodeAttributeWithValue(ar,"href")){ap=ae.getAttributeValueFromNode(ar,"href");return this.toAbsoluteUrl(ap)}var ao=this.findPieceNode(aq);if(ae.hasNodeAttributeWithValue(ao,"href")){ap=ae.getAttributeValueFromNode(ao,"href");return this.toAbsoluteUrl(ap)
}},isSameDomain:function(ao){if(!ao||!ao.indexOf){return false}if(0===ao.indexOf(this.getLocation().origin)){return true}var ap=ao.indexOf(this.getLocation().host);if(8>=ap&&0<=ap){return true}return false},removeDomainIfIsInLink:function(aq){var ap="^https?://[^/]+";var ao="^.*//[^/]+";if(aq&&aq.search&&-1!==aq.search(new RegExp(ap))&&this.isSameDomain(aq)){aq=aq.replace(new RegExp(ao),"");if(!aq){aq="/"}}return aq},findMediaUrlInNode:function(at){if(!at){return}var aq=["img","embed","video","audio"];var ao=at.nodeName.toLowerCase();if(-1!==M(aq,ao)&&ae.findFirstNodeHavingAttributeWithValue(at,"src")){var ar=ae.findFirstNodeHavingAttributeWithValue(at,"src");return ae.getAttributeValueFromNode(ar,"src")}if(ao==="object"&&ae.hasNodeAttributeWithValue(at,"data")){return ae.getAttributeValueFromNode(at,"data")}if(ao==="object"){var au=ae.findNodesByTagName(at,"param");if(au&&au.length){var ap;for(ap=0;ap<au.length;ap++){if("movie"===ae.getAttributeValueFromNode(au[ap],"name")&&ae.hasNodeAttributeWithValue(au[ap],"value")){return ae.getAttributeValueFromNode(au[ap],"value")
-}}}var av=ae.findNodesByTagName(at,"embed");if(av&&av.length){return this.findMediaUrlInNode(av[0])}}},trim:function(ao){return a(ao)},isOrWasNodeInViewport:function(au){if(!au||!au.getBoundingClientRect||au.nodeType!==1){return true}var at=au.getBoundingClientRect();var ar=G.documentElement||{};var aq=at.top<0;if(aq&&au.offsetTop){aq=(au.offsetTop+at.height)>0}var ap=ar.clientWidth;if(S.innerWidth&&ap>S.innerWidth){ap=S.innerWidth}var ao=ar.clientHeight;if(S.innerHeight&&ao>S.innerHeight){ao=S.innerHeight}return((at.bottom>0||aq)&&at.right>0&&at.left<ap&&((at.top<ao)||aq))},isNodeVisible:function(ap){var ao=i(ap);var aq=this.isOrWasNodeInViewport(ap);return ao&&aq},buildInteractionRequestParams:function(ao,ap,aq,ar){var at="";if(ao){at+="c_i="+s(ao)}if(ap){if(at){at+="&"}at+="c_n="+s(ap)}if(aq){if(at){at+="&"}at+="c_p="+s(aq)}if(ar){if(at){at+="&"}at+="c_t="+s(ar)}return at},buildImpressionRequestParams:function(ao,ap,aq){var ar="c_n="+s(ao)+"&c_p="+s(ap);if(aq){ar+="&c_t="+s(aq)}return ar
-},buildContentBlock:function(aq){if(!aq){return}var ao=this.findContentName(aq);var ap=this.findContentPiece(aq);var ar=this.findContentTarget(aq);ao=this.trim(ao);ap=this.trim(ap);ar=this.trim(ar);return{name:ao||"Unknown",piece:ap||"Unknown",target:ar||""}},collectContent:function(ar){if(!ar||!ar.length){return[]}var aq=[];var ao,ap;for(ao=0;ao<ar.length;ao++){ap=this.buildContentBlock(ar[ao]);if(J(ap)){aq.push(ap)}}return aq},setLocation:function(ao){this.location=ao},getLocation:function(){var ao=this.location||S.location;if(!ao.origin){ao.origin=ao.protocol+"//"+ao.hostname+(ao.port?":"+ao.port:"")}return ao},toAbsoluteUrl:function(ap){if((!ap||String(ap)!==ap)&&ap!==""){return ap}if(""===ap){return this.getLocation().href}if(ap.search(/^\/\//)!==-1){return this.getLocation().protocol+ap}if(ap.search(/:\/\//)!==-1){return ap}if(0===ap.indexOf("#")){return this.getLocation().origin+this.getLocation().pathname+ap}if(0===ap.indexOf("?")){return this.getLocation().origin+this.getLocation().pathname+ap
+}}}var av=ae.findNodesByTagName(at,"embed");if(av&&av.length){return this.findMediaUrlInNode(av[0])}}},trim:function(ao){return a(ao)},isOrWasNodeInViewport:function(au){if(!au||!au.getBoundingClientRect||au.nodeType!==1){return true}var at=au.getBoundingClientRect();var ar=G.documentElement||{};var aq=at.top<0;if(aq&&au.offsetTop){aq=(au.offsetTop+at.height)>0}var ap=ar.clientWidth;if(S.innerWidth&&ap>S.innerWidth){ap=S.innerWidth}var ao=ar.clientHeight;if(S.innerHeight&&ao>S.innerHeight){ao=S.innerHeight}return((at.bottom>0||aq)&&at.right>0&&at.left<ap&&((at.top<ao)||aq))},isNodeVisible:function(ap){var ao=i(ap);var aq=this.isOrWasNodeInViewport(ap);return ao&&aq},buildInteractionRequestParams:function(ao,ap,aq,ar){var at="";if(ao){at+="c_i="+s(ao)}if(ap){if(at){at+="&"}at+="c_n="+s(ap)}if(aq){if(at){at+="&"}at+="c_p="+s(aq)}if(ar){if(at){at+="&"}at+="c_t="+s(ar)}if(at){at+="&ca=1"}return at},buildImpressionRequestParams:function(ao,ap,aq){var ar="c_n="+s(ao)+"&c_p="+s(ap);if(aq){ar+="&c_t="+s(aq)
+}if(ar){ar+="&ca=1"}return ar},buildContentBlock:function(aq){if(!aq){return}var ao=this.findContentName(aq);var ap=this.findContentPiece(aq);var ar=this.findContentTarget(aq);ao=this.trim(ao);ap=this.trim(ap);ar=this.trim(ar);return{name:ao||"Unknown",piece:ap||"Unknown",target:ar||""}},collectContent:function(ar){if(!ar||!ar.length){return[]}var aq=[];var ao,ap;for(ao=0;ao<ar.length;ao++){ap=this.buildContentBlock(ar[ao]);if(J(ap)){aq.push(ap)}}return aq},setLocation:function(ao){this.location=ao},getLocation:function(){var ao=this.location||S.location;if(!ao.origin){ao.origin=ao.protocol+"//"+ao.hostname+(ao.port?":"+ao.port:"")}return ao},toAbsoluteUrl:function(ap){if((!ap||String(ap)!==ap)&&ap!==""){return ap}if(""===ap){return this.getLocation().href}if(ap.search(/^\/\//)!==-1){return this.getLocation().protocol+ap}if(ap.search(/:\/\//)!==-1){return ap}if(0===ap.indexOf("#")){return this.getLocation().origin+this.getLocation().pathname+ap}if(0===ap.indexOf("?")){return this.getLocation().origin+this.getLocation().pathname+ap
}if(0===ap.search("^[a-zA-Z]{2,11}:")){return ap}if(ap.search(/^\//)!==-1){return this.getLocation().origin+ap}var ao="(.*/)";var aq=this.getLocation().origin+this.getLocation().pathname.match(new RegExp(ao))[0];return aq+ap},isUrlToCurrentDomain:function(ap){var aq=this.toAbsoluteUrl(ap);if(!aq){return false}var ao=this.getLocation().origin;if(ao===aq){return true}if(0===String(aq).indexOf(ao)){if(":"===String(aq).substr(ao.length,1)){return false}return true}return false},setHrefAttribute:function(ap,ao){if(!ap||!ao){return}ae.setAnyAttribute(ap,"href",ao)},shouldIgnoreInteraction:function(ao){if(ae.hasNodeAttribute(ao,this.CONTENT_IGNOREINTERACTION_ATTR)){return true}if(ae.hasNodeCssClass(ao,this.CONTENT_IGNOREINTERACTION_CLASS)){return true}if(ae.hasNodeCssClass(ao,this.LEGACY_CONTENT_IGNOREINTERACTION_CLASS)){return true}return false}};function W(ap,at){if(at){return at}ap=v.toAbsoluteUrl(ap);if(z(ap,"?")){var ar=ap.indexOf("?");ap=ap.slice(0,ar)}if(Q(ap,"matomo.php")){ap=f(ap,"matomo.php".length)
}else{if(Q(ap,"piwik.php")){ap=f(ap,"piwik.php".length)}else{if(Q(ap,".php")){var ao=ap.lastIndexOf("/");var aq=1;ap=ap.slice(0,ao+aq)}}}if(Q(ap,"/js/")){ap=f(ap,"js/".length)}return ap}function N(av){var ax="Matomo_Overlay";var ap=new RegExp("index\\.php\\?module=Overlay&action=startOverlaySession&idSite=([0-9]+)&period=([^&]+)&date=([^&]+)(&segment=.*)?$");var aq=ap.exec(G.referrer);if(aq){var at=aq[1];if(at!==String(av)){return false}var au=aq[2],ao=aq[3],ar=aq[4];if(!ar){ar=""}else{if(ar.indexOf("&segment=")===0){ar=ar.substr("&segment=".length)}}S.name=ax+"###"+au+"###"+ao+"###"+ar}var aw=S.name.split("###");return aw.length===4&&aw[0]===ax}function Z(ap,av,aq){var au=S.name.split("###"),at=au[1],ao=au[2],ar=au[3],aw=W(ap,av);n(aw+"plugins/Overlay/client/client.js?v=1",function(){Matomo_Overlay_Client.initialize(aw,aq,at,ao,ar)})}function u(){var aq;try{aq=S.frameElement}catch(ap){return true}if(J(aq)){return(aq&&String(aq.nodeName).toLowerCase()==="iframe")?true:false}try{return S.self!==S.top
}catch(ao){return true}}function P(cd,b9){var bJ=this,bd="mtm_consent",cC="mtm_cookie_consent",cL="mtm_consent_removed",b4=aa(G.domain,S.location.href,K()),cT=L(b4[0]),bN=o(b4[1]),bo=o(b4[2]),cR=false,ch="GET",c8=ch,aI="application/x-www-form-urlencoded; charset=UTF-8",cv=aI,aE=cd||"",bI="",cY="",b6=b9||"",bz="",bO="",a4,bj="",c5=["7z","aac","apk","arc","arj","asf","asx","avi","azw3","bin","csv","deb","dmg","doc","docx","epub","exe","flv","gif","gz","gzip","hqx","ibooks","jar","jpg","jpeg","js","mobi","mp2","mp3","mp4","mpg","mpeg","mov","movie","msi","msp","odb","odf","odg","ods","odt","ogg","ogv","pdf","phps","png","ppt","pptx","qt","qtm","ra","ram","rar","rpm","rtf","sea","sit","tar","tbz","tbz2","bz","bz2","tgz","torrent","txt","wav","wma","wmv","wpd","xls","xlsx","xml","z","zip"],ay=[cT],bA=[],bL=[],a8=[],bK=500,cV=true,cI,a5,bR,bP,ao,co=["pk_campaign","mtm_campaign","piwik_campaign","matomo_campaign","utm_campaign","utm_source","utm_medium"],bH=["pk_kwd","mtm_kwd","piwik_kwd","matomo_kwd","utm_term"],bk="_pk_",av="pk_vid",aZ=180,cW,bq,bS=false,bm=false,cP,be,bw,cJ=33955200000,cm=1800000,c4=15768000000,a2=true,bF=false,bh=false,bQ=false,aQ=false,cb,bW={},cl={},bn={},bu=200,cr={},cZ={},c6={},ca=[],ce=false,cA=false,ap=false,c7=false,cM=false,aN=false,bc=u(),cw=null,cX=null,aR,bB,b7=am,bp,aL,cp=0,bv=["id","ses","cvar","ref"],cz=false,bC=null,cK=[],ax=T++,aw=false;
@@ -42,11 +42,11 @@ var dj;for(dj in dl){if(Object.prototype.hasOwnProperty.call(dl,dj)){dk.push(dj)
}dh+="&pf_dm1="+(h.timing.domInteractive-h.timing.domLoading)}if(h&&h.timing&&h&&h.timing.domComplete&&h.timing.domInteractive){if(h.timing.domComplete<h.timing.domInteractive){return}dh+="&pf_dm2="+(h.timing.domComplete-h.timing.domInteractive)}if(h&&h.timing&&h&&h.timing.loadEventEnd&&h.timing.loadEventStart){if(h.timing.loadEventEnd<h.timing.loadEventStart){return}dh+="&pf_onl="+(h.timing.loadEventEnd-h.timing.loadEventStart)}return di+dh}function cq(dj,dE,dF){var dD,di=new Date(),dr=Math.round(di.getTime()/1000),dn,dB,dk=1024,dK,ds,dA=aQ,dl=aT("ses"),dy=aT("ref"),dv=aT("cvar"),dw=aD(dl),dC=bM(),dG=a4||bN,dp,dh;if(bm){aF()}if(cP){return""}var dx=aY();var du=G.characterSet||G.charset;if(!du||du.toLowerCase()==="utf-8"){du=null}dp=dC[0];dh=dC[1];dn=dC[2];dB=dC[3];if(!dw){if(!bw||!dp.length){for(dD in co){if(Object.prototype.hasOwnProperty.call(co,dD)){dp=e(dG,co[dD]);if(dp.length){break}}}for(dD in bH){if(Object.prototype.hasOwnProperty.call(bH,dD)){dh=e(dG,bH[dD]);if(dh.length){break}}}}dK=d(bo);
ds=dB.length?d(dB):"";if(dK.length&&!aV(dK)&&(!bw||!ds.length||aV(ds))){dB=bo}if(dB.length||dp.length){dn=dr;dC=[dp,dh,dn,b2(dB.slice(0,dk))];dc(dy,S.JSON.stringify(dC),c4,bq,cW,bS)}}dj+="&idsite="+b6+"&rec=1&r="+String(Math.random()).slice(2,8)+"&h="+di.getHours()+"&m="+di.getMinutes()+"&s="+di.getSeconds()+"&url="+s(b2(dG))+(bo.length?"&urlref="+s(b2(bo)):"")+((bz&&bz.length)?"&uid="+s(bz):"")+"&_id="+dx.uuid+"&_idn="+dx.newVisitor+(dp.length?"&_rcn="+s(dp):"")+(dh.length?"&_rck="+s(dh):"")+"&_refts="+dn+(String(dB).length?"&_ref="+s(b2(dB.slice(0,dk))):"")+(du?"&cs="+s(du):"")+"&send_image=0";var dJ=cH();for(dD in dJ){if(Object.prototype.hasOwnProperty.call(dJ,dD)){dj+="&"+dD+"="+dJ[dD]}}var dI=[];if(dE){for(dD in dE){if(Object.prototype.hasOwnProperty.call(dE,dD)&&/^dimension\d+$/.test(dD)){var dm=dD.replace("dimension","");dI.push(parseInt(dm,10));dI.push(String(dm));dj+="&"+dD+"="+s(dE[dD]);delete dE[dD]}}}if(dE&&B(dE)){dE=null}for(dD in cr){if(Object.prototype.hasOwnProperty.call(cr,dD)){dj+="&"+dD+"="+s(cr[dD])
}}for(dD in bn){if(Object.prototype.hasOwnProperty.call(bn,dD)){var dt=(-1===M(dI,dD));if(dt){dj+="&dimension"+dD+"="+s(bn[dD])}}}if(dE){dj+="&data="+s(S.JSON.stringify(dE))}else{if(ao){dj+="&data="+s(S.JSON.stringify(ao))}}function dq(dL,dM){var dN=S.JSON.stringify(dL);if(dN.length>2){return"&"+dM+"="+s(dN)}return""}var dH=dg(bW);var dz=dg(cl);dj+=dq(dH,"cvar");dj+=dq(dz,"e_cvar");if(aQ){dj+=dq(aQ,"_cvar");for(dD in dA){if(Object.prototype.hasOwnProperty.call(dA,dD)){if(aQ[dD][0]===""||aQ[dD][1]===""){delete aQ[dD]}}}if(bQ){dc(dv,S.JSON.stringify(aQ),cm,bq,cW,bS)}}if(a2&&bF&&!bh){dj=aA(dj);bh=true}if(aL){dj+="&pv_id="+aL}aM(dx);cc();dj+=ac(dF,{tracker:bJ,request:dj});if(cY.length){dj+="&"+cY}if(A(cb)){dj=cb(dj)}return dj}bR=function a7(){var dh=new Date();dh=dh.getTime();if(!cX){return false}if(cX+a5<=dh){bJ.ping();return true}return false};function br(dk,dj,dp,dl,dh,ds){var dn="idgoal=0",di=new Date(),dq=[],dr,dm=String(dk).length;if(dm){dn+="&ec_id="+s(dk)}dn+="&revenue="+dj;if(String(dp).length){dn+="&ec_st="+dp
-}if(String(dl).length){dn+="&ec_tx="+dl}if(String(dh).length){dn+="&ec_sh="+dh}if(String(ds).length){dn+="&ec_dt="+ds}if(cZ){for(dr in cZ){if(Object.prototype.hasOwnProperty.call(cZ,dr)){if(!J(cZ[dr][1])){cZ[dr][1]=""}if(!J(cZ[dr][2])){cZ[dr][2]=""}if(!J(cZ[dr][3])||String(cZ[dr][3]).length===0){cZ[dr][3]=0}if(!J(cZ[dr][4])||String(cZ[dr][4]).length===0){cZ[dr][4]=1}dq.push(cZ[dr])}}dn+="&ec_items="+s(S.JSON.stringify(dq))}dn=cq(dn,ao,"ecommerce");bG(dn,bK);if(dm){cZ={}}}function bZ(dh,dl,dk,dj,di,dm){if(String(dh).length&&J(dl)){br(dh,dl,dk,dj,di,dm)}}function bt(dh){if(J(dh)){br("",dh,"","","","")}}function b0(di,dk,dj){aL=bg();var dh=cq("action_name="+s(al(di||bj)),dk,"log");if(!bh){dh=aA(dh)}bG(dh,bK,dj)}function a0(dj,di){var dk,dh="(^| )(piwik[_-]"+di+"|matomo[_-]"+di;if(dj){for(dk=0;dk<dj.length;dk++){dh+="|"+dj[dk]}}dh+=")( |$)";return new RegExp(dh)}function aU(dh){return(aE&&dh&&0===String(dh).indexOf(aE))}function ct(dl,dh,dm,di){if(aU(dh)){return 0}var dk=a0(bL,"download"),dj=a0(a8,"link"),dn=new RegExp("\\.("+c5.join("|")+")([?&#]|$)","i");
+}if(String(dl).length){dn+="&ec_tx="+dl}if(String(dh).length){dn+="&ec_sh="+dh}if(String(ds).length){dn+="&ec_dt="+ds}if(cZ){for(dr in cZ){if(Object.prototype.hasOwnProperty.call(cZ,dr)){if(!J(cZ[dr][1])){cZ[dr][1]=""}if(!J(cZ[dr][2])){cZ[dr][2]=""}if(!J(cZ[dr][3])||String(cZ[dr][3]).length===0){cZ[dr][3]=0}if(!J(cZ[dr][4])||String(cZ[dr][4]).length===0){cZ[dr][4]=1}dq.push(cZ[dr])}}dn+="&ec_items="+s(S.JSON.stringify(dq))}dn+="&ca=1";dn=cq(dn,ao,"ecommerce");bG(dn,bK);if(dm){cZ={}}}function bZ(dh,dl,dk,dj,di,dm){if(String(dh).length&&J(dl)){br(dh,dl,dk,dj,di,dm)}}function bt(dh){if(J(dh)){br("",dh,"","","","")}}function b0(di,dk,dj){aL=bg();var dh=cq("action_name="+s(al(di||bj)),dk,"log");if(!bh){dh=aA(dh)}bG(dh,bK,dj)}function a0(dj,di){var dk,dh="(^| )(piwik[_-]"+di+"|matomo[_-]"+di;if(dj){for(dk=0;dk<dj.length;dk++){dh+="|"+dj[dk]}}dh+=")( |$)";return new RegExp(dh)}function aU(dh){return(aE&&dh&&0===String(dh).indexOf(aE))}function ct(dl,dh,dm,di){if(aU(dh)){return 0}var dk=a0(bL,"download"),dj=a0(a8,"link"),dn=new RegExp("\\.("+c5.join("|")+")([?&#]|$)","i");
if(dj.test(dl)){return"link"}if(di||dk.test(dl)||dn.test(dh)){return"download"}if(dm){return 0}return"link"}function au(di){var dh;dh=di.parentNode;while(dh!==null&&J(dh)){if(ae.isLinkElement(di)){break}di=dh;dh=di.parentNode}return di}function da(dm){dm=au(dm);if(!ae.hasNodeAttribute(dm,"href")){return}if(!J(dm.href)){return}var dl=ae.getAttributeValueFromNode(dm,"href");var di=dm.pathname||ck(dm.href);var dn=dm.hostname||d(dm.href);var dp=dn.toLowerCase();var dj=dm.href.replace(dn,dp);var dk=new RegExp("^(javascript|vbscript|jscript|mocha|livescript|ecmascript|mailto|tel):","i");if(!dk.test(dj)){var dh=ct(dm.className,dj,ar(dp,di),ae.hasNodeAttribute(dm,"download"));if(dh){return{type:dh,href:dj}}}}function aP(dh,di,dj,dk){var dl=v.buildInteractionRequestParams(dh,di,dj,dk);if(!dl){return}return cq(dl,null,"contentInteraction")}function bb(dh,di){if(!dh||!di){return false}var dj=v.findTargetNode(dh);if(v.shouldIgnoreInteraction(dj)){return false}dj=v.findTargetNodeNoDefault(dh);if(dj&&!U(dj,di)){return false
}return true}function cs(dj,di,dl){if(!dj){return}var dh=v.findParentContentNode(dj);if(!dh){return}if(!bb(dh,dj)){return}var dk=v.buildContentBlock(dh);if(!dk){return}if(!dk.target&&dl){dk.target=dl}return v.buildInteractionRequestParams(di,dk.name,dk.piece,dk.target)}function aW(di){if(!ca||!ca.length){return false}var dh,dj;for(dh=0;dh<ca.length;dh++){dj=ca[dh];if(dj&&dj.name===di.name&&dj.piece===di.piece&&dj.target===di.target){return true}}return false}function aX(dh){return function(dl){if(!dh){return}var dj=v.findParentContentNode(dh);var di;if(dl){di=dl.target||dl.srcElement}if(!di){di=dh}if(!bb(dj,di)){return}if(!dj){return false}var dm=v.findTargetNode(dj);if(!dm||v.shouldIgnoreInteraction(dm)){return false}var dk=da(dm);if(c7&&dk&&dk.type){return dk.type}return bJ.trackContentInteractionNode(di,"click")}}function b1(dj){if(!dj||!dj.length){return}var dh,di;for(dh=0;dh<dj.length;dh++){di=v.findTargetNode(dj[dh]);if(di&&!di.contentInteractionTrackingSetupDone){di.contentInteractionTrackingSetupDone=true;
-an(di,"click",aX(di))}}}function by(dj,dk){if(!dj||!dj.length){return[]}var dh,di;for(dh=0;dh<dj.length;dh++){if(aW(dj[dh])){dj.splice(dh,1);dh--}else{ca.push(dj[dh])}}if(!dj||!dj.length){return[]}b1(dk);var dl=[];for(dh=0;dh<dj.length;dh++){di=cq(v.buildImpressionRequestParams(dj[dh].name,dj[dh].piece,dj[dh].target),undefined,"contentImpressions");if(di){dl.push(di)}}return dl}function cy(di){var dh=v.collectContent(di);return by(dh,di)}function a9(di){if(!di||!di.length){return[]}var dh;for(dh=0;dh<di.length;dh++){if(!v.isNodeVisible(di[dh])){di.splice(dh,1);dh--}}if(!di||!di.length){return[]}return cy(di)}function aG(dj,dh,di){var dk=v.buildImpressionRequestParams(dj,dh,di);return cq(dk,null,"contentImpression")}function c9(dk,di){if(!dk){return}var dh=v.findParentContentNode(dk);var dj=v.buildContentBlock(dh);if(!dj){return}if(!di){di="Unknown"}return aP(di,dj.name,dj.piece,dj.target)}function cO(di,dk,dh,dj){return"e_c="+s(di)+"&e_a="+s(dk)+(J(dh)?"&e_n="+s(dh):"")+(J(dj)?"&e_v="+s(dj):"")
-}function at(dj,dl,dh,dk,dn,dm){if(!Y(dj)||!Y(dl)){ak("Error while logging event: Parameters `category` and `action` must not be empty or filled with whitespaces");return false}var di=cq(cO(dj,dl,dh,dk),dn,"event");bG(di,bK,dm)}function b8(dh,dk,di,dl){var dj=cq("search="+s(dh)+(dk?"&search_cat="+s(dk):"")+(J(di)?"&search_count="+di:""),dl,"sitesearch");bG(dj,bK)}function cS(dh,dl,dk,dj){var di=cq("idgoal="+dh+(dl?"&revenue="+dl:""),dk,"goal");bG(di,bK,dj)}function c0(dk,dh,dp,dn,dj){var dm=dh+"="+s(b2(dk));var di=cs(dj,"click",dk);if(di){dm+="&"+di}var dl=cq(dm,dp,"link");bG(dl,bK,dn)}function bU(di,dh){if(di!==""){return di+dh.charAt(0).toUpperCase()+dh.slice(1)}return dh}function cg(dm){var dl,dh,dk=["","webkit","ms","moz"],dj;if(!be){for(dh=0;dh<dk.length;dh++){dj=dk[dh];if(Object.prototype.hasOwnProperty.call(G,bU(dj,"hidden"))){if(G[bU(dj,"visibilityState")]==="prerender"){dl=true}break}}}if(dl){an(G,dj+"visibilitychange",function di(){G.removeEventListener(dj+"visibilitychange",di,false);
+an(di,"click",aX(di))}}}function by(dj,dk){if(!dj||!dj.length){return[]}var dh,di;for(dh=0;dh<dj.length;dh++){if(aW(dj[dh])){dj.splice(dh,1);dh--}else{ca.push(dj[dh])}}if(!dj||!dj.length){return[]}b1(dk);var dl=[];for(dh=0;dh<dj.length;dh++){di=cq(v.buildImpressionRequestParams(dj[dh].name,dj[dh].piece,dj[dh].target),undefined,"contentImpressions");if(di){dl.push(di)}}return dl}function cy(di){var dh=v.collectContent(di);return by(dh,di)}function a9(di){if(!di||!di.length){return[]}var dh;for(dh=0;dh<di.length;dh++){if(!v.isNodeVisible(di[dh])){di.splice(dh,1);dh--}}if(!di||!di.length){return[]}return cy(di)}function aG(dj,dh,di){var dk=v.buildImpressionRequestParams(dj,dh,di);return cq(dk,null,"contentImpression")}function c9(dk,di){if(!dk){return}var dh=v.findParentContentNode(dk);var dj=v.buildContentBlock(dh);if(!dj){return}if(!di){di="Unknown"}return aP(di,dj.name,dj.piece,dj.target)}function cO(di,dk,dh,dj){return"e_c="+s(di)+"&e_a="+s(dk)+(J(dh)?"&e_n="+s(dh):"")+(J(dj)?"&e_v="+s(dj):"")+"&ca=1"
+}function at(dj,dl,dh,dk,dn,dm){if(!Y(dj)||!Y(dl)){ak("Error while logging event: Parameters `category` and `action` must not be empty or filled with whitespaces");return false}var di=cq(cO(dj,dl,dh,dk),dn,"event");bG(di,bK,dm)}function b8(dh,dk,di,dl){var dj=cq("search="+s(dh)+(dk?"&search_cat="+s(dk):"")+(J(di)?"&search_count="+di:""),dl,"sitesearch");bG(dj,bK)}function cS(dh,dl,dk,dj){var di=cq("idgoal="+dh+(dl?"&revenue="+dl:"")+"&ca=1",dk,"goal");bG(di,bK,dj)}function c0(dk,dh,dp,dn,dj){var dm=dh+"="+s(b2(dk));var di=cs(dj,"click",dk);if(di){dm+="&"+di}var dl=cq(dm,dp,"link");bG(dl,bK,dn)}function bU(di,dh){if(di!==""){return di+dh.charAt(0).toUpperCase()+dh.slice(1)}return dh}function cg(dm){var dl,dh,dk=["","webkit","ms","moz"],dj;if(!be){for(dh=0;dh<dk.length;dh++){dj=dk[dh];if(Object.prototype.hasOwnProperty.call(G,bU(dj,"hidden"))){if(G[bU(dj,"visibilityState")]==="prerender"){dl=true}break}}}if(dl){an(G,dj+"visibilitychange",function di(){G.removeEventListener(dj+"visibilitychange",di,false);
dm()});return}dm()}function bs(){var di=bJ.getVisitorId();var dh=aJ();return di+dh}function ci(dh){if(!dh){return}if(!ae.hasNodeAttribute(dh,"href")){return}var di=ae.getAttributeValueFromNode(dh,"href");if(!di||aU(di)){return}if(!bJ.getVisitorId()){return}di=j(di,av);var dj=bs();di=F(di,av,dj);ae.setAnyAttribute(dh,"href",di)}function bl(dk){var dl=ae.getAttributeValueFromNode(dk,"href");if(!dl){return false}dl=String(dl);var di=dl.indexOf("//")===0||dl.indexOf("http://")===0||dl.indexOf("https://")===0;if(!di){return false}var dh=dk.pathname||ck(dk.href);var dj=(dk.hostname||d(dk.href)).toLowerCase();if(ar(dj,dh)){if(!cG(cT,L(dj))){return true}return false}return false}function cF(dh){var di=da(dh);if(di&&di.type){di.href=o(di.href);c0(di.href,di.type,undefined,null,dh);return}if(cM){dh=au(dh);if(bl(dh)){ci(dh)}}}function cu(){return G.all&&!G.addEventListener}function cU(dh){var dj=dh.which;var di=(typeof dh.button);if(!dj&&di!=="undefined"){if(cu()){if(dh.button&1){dj=1}else{if(dh.button&2){dj=3
}else{if(dh.button&4){dj=2}}}}else{if(dh.button===0||dh.button==="0"){dj=1}else{if(dh.button&1){dj=2}else{if(dh.button&2){dj=3}}}}}return dj}function bT(dh){switch(cU(dh)){case 1:return"left";case 2:return"middle";case 3:return"right"}}function a1(dh){return dh.target||dh.srcElement}function aC(dh){return function(dk){dk=dk||S.event;var dj=bT(dk);var dl=a1(dk);if(dk.type==="click"){var di=false;if(dh&&dj==="middle"){di=true}if(dl&&!di){cF(dl)}}else{if(dk.type==="mousedown"){if(dj==="middle"&&dl){aR=dj;bB=dl}else{aR=bB=null}}else{if(dk.type==="mouseup"){if(dj===aR&&dl===bB){cF(dl)}aR=bB=null}else{if(dk.type==="contextmenu"){cF(dl)}}}}}}function aq(dj,di){var dh=typeof di;if(dh==="undefined"){di=true}an(dj,"click",aC(di),false);if(di){an(dj,"mouseup",aC(di),false);an(dj,"mousedown",aC(di),false);an(dj,"contextmenu",aC(di),false)}}function bE(dj,dl){ap=true;var dk,di=a0(bA,"ignore"),dm=G.links,dh=null,dn=null;if(dm){for(dk=0;dk<dm.length;dk++){dh=dm[dk];if(!di.test(dh.className)){dn=typeof dh.matomoTrackers;
if("undefined"===dn){dh.matomoTrackers=[]}if(-1===M(dh.matomoTrackers,dl)){dh.matomoTrackers.push(dl);aq(dh,dj)}}}}}function aS(di,dl,dm){if(ce){return true}ce=true;var dn=false;var dk,dj;function dh(){dn=true}m(function(){function dp(dr){setTimeout(function(){if(!ce){return}dn=false;dm.trackVisibleContentImpressions();dp(dr)},dr)}function dq(dr){setTimeout(function(){if(!ce){return}if(dn){dn=false;dm.trackVisibleContentImpressions()}dq(dr)},dr)}if(di){dk=["scroll","resize"];for(dj=0;dj<dk.length;dj++){if(G.addEventListener){G.addEventListener(dk[dj],dh,false)}else{S.attachEvent("on"+dk[dj],dh)}}dq(100)}if(dl&&dl>0){dl=parseInt(dl,10);dp(dl)}})}var bD={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var dh=this.requests;this.requests=[];if(dh.length===1){bG(dh[0],bK)}else{dd(dh,bK)}},canQueue:function(){return !l&&this.enabled},pushMultiple:function(di){if(!this.canQueue()){dd(di,bK);return}var dh;for(dh=0;dh<di.length;dh++){this.push(di[dh])}},push:function(dh){if(!dh){return
diff --git a/tests/PHPUnit/Integration/Tracker/ActionTest.php b/tests/PHPUnit/Integration/Tracker/ActionTest.php
index 69e60a6e08..c6579b7895 100644
--- a/tests/PHPUnit/Integration/Tracker/ActionTest.php
+++ b/tests/PHPUnit/Integration/Tracker/ActionTest.php
@@ -13,6 +13,7 @@ use Piwik\Plugins\SitesManager\API;
use Piwik\Tests\Framework\Fixture;
use Piwik\Tests\Framework\Mock\FakeAccess;
use Piwik\Tracker\Action;
+use Piwik\Tracker\ActionPageview;
use Piwik\Tracker\PageUrl;
use Piwik\Tracker\Request;
use Piwik\Plugin\Manager as PluginManager;
@@ -35,7 +36,7 @@ class ActionTest extends IntegrationTestCase
$section['campaign_keyword_var_name'] = 'piwik_kwd,matomo_kwd,utm_term,test_piwik_kwd';
Config::getInstance()->Tracker = $section;
- PluginManager::getInstance()->loadPlugins(array('SitesManager'));
+ PluginManager::getInstance()->loadPlugins(array('Actions', 'SitesManager'));
Fixture::loadAllTranslations();
}
@@ -52,6 +53,39 @@ class ActionTest extends IntegrationTestCase
FakeAccess::$superUser = true;
}
+ public function test_isCustomActionRequest()
+ {
+ $request = new Request(array('ca' => '1'));
+ $this->assertTrue(Action::isCustomActionRequest($request));
+
+ $request = new Request(array('ca' => '0'));
+ $this->assertFalse(Action::isCustomActionRequest($request));
+
+ $request = new Request(array());
+ $this->assertFalse(Action::isCustomActionRequest($request));
+ }
+
+ public function test_factory_notDefaultsToPageViewWhenCustomPluginRequest()
+ {
+ $this->expectException(\Exception::class);
+ $this->expectExceptionMessage('Request was meant for a plugin which is no longer activated. Request needs to be ignored.');
+ $this->setUpRootAccess();
+ $idSite = API::getInstance()->addSite("site1", array('http://example.org'));
+ $request = new Request(array('ca' => '1', 'idsite' => $idSite));
+
+ Action::factory($request);
+ }
+
+ public function test_factory_defaultsToPageviewWhenNotCustomPluginRequest()
+ {
+ $this->setUpRootAccess();
+ $idSite = API::getInstance()->addSite("site1", array('http://example.org'));
+ $request = new Request(array('idsite' => $idSite));
+
+ $action = Action::factory($request);
+ $this->assertTrue($action instanceof ActionPageview);
+ }
+
public function getTestUrls()
{
$campaignNameParam = 'test_campaign_name';
@@ -383,7 +417,6 @@ class ActionTest extends IntegrationTestCase
*/
public function testExtractUrlAndActionNameFromRequest($request, $expected)
{
- PluginManager::getInstance()->loadPlugins(array('Actions', 'SitesManager'));
$this->setUpRootAccess();
$idSite = API::getInstance()->addSite("site1", array('http://example.org'));
$request['idsite'] = $idSite;
@@ -397,7 +430,7 @@ class ActionTest extends IntegrationTestCase
'type' => $action->getActionType(),
);
- $this->assertEquals($processed, $expected);
+ $this->assertEquals($expected, $processed);
}
public function provideContainerConfig()
diff --git a/tests/javascript/index.php b/tests/javascript/index.php
index c699107c1e..ca1fab7222 100644
--- a/tests/javascript/index.php
+++ b/tests/javascript/index.php
@@ -1311,11 +1311,15 @@ function PiwikTest() {
}
function assertImpressionRequestParams(name, piece, target, expected, message) {
- strictEqual(content.buildImpressionRequestParams(name, piece, target), expected, message);
+ strictEqual(content.buildImpressionRequestParams(name, piece, target), expected + '&ca=1', message);
}
function assertInteractionRequestParams(interaction, name, piece, target, expected, message) {
- strictEqual(content.buildInteractionRequestParams(interaction, name, piece, target), expected, message);
+ var actual = content.buildInteractionRequestParams(interaction, name, piece, target);
+ if (actual) {
+ expected = expected + '&ca=1';
+ }
+ strictEqual(actual, expected, message);
}
function assertShouldIgnoreInteraction(id, message) {
@@ -1822,7 +1826,7 @@ function PiwikTest() {
strictEqual(actual.indexOf(expectedStartsWith), 0, message + " " + actual + ' should start with ' + expectedStartsWith);
- var expectedString = '&idsite=1&rec=1';
+ var expectedString = '&ca=1&idsite=1&rec=1';
strictEqual(actual.indexOf(expectedString), expectedStartsWith.length, 'did not find ' + expectedString + ' in ' + actual);
// make sure it contains all those other tracking stuff directly afterwards so we can assume it did append
// the other request stuff and we also make sure to compare the whole custom string as we check from
@@ -1905,25 +1909,25 @@ function PiwikTest() {
strictEqual(actual, undefined, 'appendContentInteractionToRequestIfPossible, the content block node was clicked but it is not the target');
actual = tracker.appendContentInteractionToRequestIfPossible(_s('#ex104'));
- strictEqual(actual, 'c_n=' + toEncodedAbsolutePath('img.jpg') + '&c_p=' + toEncodedAbsoluteUrl('img.jpg'), 'appendContentInteractionToRequestIfPossible, the actual target node was clicked');
+ strictEqual(actual, 'c_n=' + toEncodedAbsolutePath('img.jpg') + '&c_p=' + toEncodedAbsoluteUrl('img.jpg') + '&ca=1', 'appendContentInteractionToRequestIfPossible, the actual target node was clicked');
actual = tracker.appendContentInteractionToRequestIfPossible(_s('#ex104'), 'clicki');
- strictEqual(actual, 'c_i=clicki&c_n=' + toEncodedAbsolutePath('img.jpg') + '&c_p=' + toEncodedAbsoluteUrl('img.jpg'), 'appendContentInteractionToRequestIfPossible, with interaction');
+ strictEqual(actual, 'c_i=clicki&c_n=' + toEncodedAbsolutePath('img.jpg') + '&c_p=' + toEncodedAbsoluteUrl('img.jpg') + '&ca=1', 'appendContentInteractionToRequestIfPossible, with interaction');
actual = tracker.appendContentInteractionToRequestIfPossible(_s('#ex104_inner'));
- strictEqual(actual, 'c_n=' + toEncodedAbsolutePath('img.jpg') + '&c_p=' + toEncodedAbsoluteUrl('img.jpg'), 'appendContentInteractionToRequestIfPossible, block node is target node and any node within it was clicked which is good, we build a request');
+ strictEqual(actual, 'c_n=' + toEncodedAbsolutePath('img.jpg') + '&c_p=' + toEncodedAbsoluteUrl('img.jpg') + '&ca=1', 'appendContentInteractionToRequestIfPossible, block node is target node and any node within it was clicked which is good, we build a request');
actual = tracker.appendContentInteractionToRequestIfPossible(_s('#ex104_inner'));
- strictEqual(actual, 'c_n=' + toEncodedAbsolutePath('img.jpg') + '&c_p=' + toEncodedAbsoluteUrl('img.jpg'), 'appendContentInteractionToRequestIfPossible, a node within a target node was clicked which is googd');
+ strictEqual(actual, 'c_n=' + toEncodedAbsolutePath('img.jpg') + '&c_p=' + toEncodedAbsoluteUrl('img.jpg') + '&ca=1', 'appendContentInteractionToRequestIfPossible, a node within a target node was clicked which is googd');
actual = tracker.appendContentInteractionToRequestIfPossible(_s('#ex105_target'));
- strictEqual(actual, 'c_n=' + toEncodedAbsolutePath('img.jpg') + '&c_p=' + toEncodedAbsoluteUrl('img.jpg') + '&c_t=http%3A%2F%2Fwww.example.com', 'appendContentInteractionToRequestIfPossible, target node was clicked which is good');
+ strictEqual(actual, 'c_n=' + toEncodedAbsolutePath('img.jpg') + '&c_p=' + toEncodedAbsoluteUrl('img.jpg') + '&c_t=http%3A%2F%2Fwww.example.com&ca=1', 'appendContentInteractionToRequestIfPossible, target node was clicked which is good');
actual = tracker.appendContentInteractionToRequestIfPossible(_s('#ex105_withinTarget'));
- strictEqual(actual, 'c_n=' + toEncodedAbsolutePath('img.jpg') + '&c_p=' + toEncodedAbsoluteUrl('img.jpg') + '&c_t=http%3A%2F%2Fwww.example.com', 'appendContentInteractionToRequestIfPossible, a node within target node was clicked which is googd');
+ strictEqual(actual, 'c_n=' + toEncodedAbsolutePath('img.jpg') + '&c_p=' + toEncodedAbsoluteUrl('img.jpg') + '&c_t=http%3A%2F%2Fwww.example.com&ca=1', 'appendContentInteractionToRequestIfPossible, a node within target node was clicked which is googd');
actual = tracker.appendContentInteractionToRequestIfPossible(_s('#ex104_inner'), 'click', 'fallbacktarget');
- strictEqual(actual, 'c_i=click&c_n=' + toEncodedAbsolutePath('img.jpg') + '&c_p=' + toEncodedAbsoluteUrl('img.jpg') + '&c_t=fallbacktarget', 'appendContentInteractionToRequestIfPossible, if no target found we can specify a default target');
+ strictEqual(actual, 'c_i=click&c_n=' + toEncodedAbsolutePath('img.jpg') + '&c_p=' + toEncodedAbsoluteUrl('img.jpg') + '&c_t=fallbacktarget&ca=1', 'appendContentInteractionToRequestIfPossible, if no target found we can specify a default target');
@@ -4142,9 +4146,9 @@ if ($mysql) {
ok( /search=search%20Keyword&idsite=1/.test(results), "site search, no cat, no results count ");
// Test events
- ok( /(e_c=Event%20Category&e_a=Event%20Action&idsite=1).*(&e_cvar=%7B%221%22%3A%5B%22cvarEventName%22%2C%22cvarEventValue%22%5D%2C%222%22%3A%5B%22cookiename2EVENT%22%2C%22cookievalue2EVENT%22%5D%7D)/.test(results), "event Category + Action + Custom Variable");
- ok( /e_c=Event%20Category2&e_a=Event%20Action2&e_n=Event%20Name2&idsite=1/.test(results), "event Category + Action + Name");
- ok( /e_c=Event%20Category3&e_a=Event%20Action3&e_n=Event%20Name3&e_v=3.333&idsite=1/.test(results), "event Category + Action + Name + Value");
+ ok( /(e_c=Event%20Category&e_a=Event%20Action&ca=1&idsite=1).*(&e_cvar=%7B%221%22%3A%5B%22cvarEventName%22%2C%22cvarEventValue%22%5D%2C%222%22%3A%5B%22cookiename2EVENT%22%2C%22cookievalue2EVENT%22%5D%7D)/.test(results), "event Category + Action + Custom Variable");
+ ok( /e_c=Event%20Category2&e_a=Event%20Action2&e_n=Event%20Name2&ca=1&idsite=1/.test(results), "event Category + Action + Name");
+ ok( /e_c=Event%20Category3&e_a=Event%20Action3&e_n=Event%20Name3&e_v=3.333&ca=1&idsite=1/.test(results), "event Category + Action + Name + Value");
// ecommerce view
ok( /(EcommerceView).*(&_pkc=CATEGORY%20HERE&_pks=SKU&_pkn=NAME)/.test(results), "ecommerce view");
@@ -4153,13 +4157,13 @@ if ($mysql) {
ok( /(MultipleCategories).*(&_pkc=%5B%22CATEGORY1%22%2C%22CATEGORY2%22%5D&_pks=SKUMultiple&_pkn=)/.test(results), "ecommerce view multiple categories");
// Ecommerce order
- ok( /idgoal=0&ec_id=ORDER%20ID%20YES&revenue=666.66&ec_st=333&ec_tx=222&ec_sh=111&ec_dt=1&ec_items=%5B%5B%22SKU%20PRODUCT%22%2C%22random%22%2C%22random%20PRODUCT%20CATEGORY%22%2C11.1111%2C2%5D%2C%5B%22SKU%20ONLY%20SKU%22%2C%22%22%2C%22%22%2C0%2C1%5D%2C%5B%22SKU%20ONLY%20NAME%22%2C%22PRODUCT%20NAME%202%22%2C%22%22%2C0%2C1%5D%2C%5B%22SKU%20NO%20PRICE%20NO%20QUANTITY%22%2C%22PRODUCT%20NAME%203%22%2C%22CATEGORY%22%2C0%2C1%5D%2C%5B%22SKU%20ONLY%22%2C%22%22%2C%22%22%2C0%2C1%5D%5D/.test( results ), "logEcommerceOrder() with items" );
+ ok( /idgoal=0&ec_id=ORDER%20ID%20YES&revenue=666.66&ec_st=333&ec_tx=222&ec_sh=111&ec_dt=1&ec_items=%5B%5B%22SKU%20PRODUCT%22%2C%22random%22%2C%22random%20PRODUCT%20CATEGORY%22%2C11.1111%2C2%5D%2C%5B%22SKU%20ONLY%20SKU%22%2C%22%22%2C%22%22%2C0%2C1%5D%2C%5B%22SKU%20ONLY%20NAME%22%2C%22PRODUCT%20NAME%202%22%2C%22%22%2C0%2C1%5D%2C%5B%22SKU%20NO%20PRICE%20NO%20QUANTITY%22%2C%22PRODUCT%20NAME%203%22%2C%22CATEGORY%22%2C0%2C1%5D%2C%5B%22SKU%20ONLY%22%2C%22%22%2C%22%22%2C0%2C1%5D%5D&ca=1/.test( results ), "logEcommerceOrder() with items" );
// Cart update
- ok( /idgoal=0&revenue=555.55&ec_items=%5B%5B%22SKU%20PRODUCT%22%2C%22random%22%2C%22random%20PRODUCT%20CATEGORY%22%2C11.1111%2C2%5D%2C%5B%22SKU%20ONLY%20SKU%22%2C%22%22%2C%22%22%2C0%2C1%5D%2C%5B%22SKU%20ONLY%20NAME%22%2C%22PRODUCT%20NAME%202%22%2C%22%22%2C0%2C1%5D%2C%5B%22SKU%20NO%20PRICE%20NO%20QUANTITY%22%2C%22PRODUCT%20NAME%203%22%2C%22CATEGORY%22%2C0%2C1%5D%2C%5B%22SKU%20ONLY%22%2C%22%22%2C%22%22%2C0%2C1%5D%5D/.test( results ), "logEcommerceCartUpdate() with items" );
+ ok( /idgoal=0&revenue=555.55&ec_items=%5B%5B%22SKU%20PRODUCT%22%2C%22random%22%2C%22random%20PRODUCT%20CATEGORY%22%2C11.1111%2C2%5D%2C%5B%22SKU%20ONLY%20SKU%22%2C%22%22%2C%22%22%2C0%2C1%5D%2C%5B%22SKU%20ONLY%20NAME%22%2C%22PRODUCT%20NAME%202%22%2C%22%22%2C0%2C1%5D%2C%5B%22SKU%20NO%20PRICE%20NO%20QUANTITY%22%2C%22PRODUCT%20NAME%203%22%2C%22CATEGORY%22%2C0%2C1%5D%2C%5B%22SKU%20ONLY%22%2C%22%22%2C%22%22%2C0%2C1%5D%5D&ca=1/.test( results ), "logEcommerceCartUpdate() with items" );
// Ecommerce order recorded twice, but each order empties the cart/list of items, so this order is empty of items
- ok( /idgoal=0&ec_id=ORDER%20WITHOUT%20ANY%20ITEM&revenue=777&ec_st=444&ec_tx=222&ec_sh=111&ec_dt=1&ec_items=%5B%5D/.test( results ), "logEcommerceOrder() called twice, second time has no item" );
+ ok( /idgoal=0&ec_id=ORDER%20WITHOUT%20ANY%20ITEM&revenue=777&ec_st=444&ec_tx=222&ec_sh=111&ec_dt=1&ec_items=%5B%5D&ca=1/.test( results ), "logEcommerceOrder() called twice, second time has no item" );
// parameters inserted by plugin hooks
ok( /testlog/.test( results ), "plugin hook log" );
@@ -4173,8 +4177,8 @@ if ($mysql) {
ok( /&uid=userid%40mydomain.org/.test( results ), "setUserId(userId) function");
// Testing the JavaScript Error Tracking
- ok( /e_c=JavaScript%20Errors&e_a=http%3A%2F%2Fpiwik.org%2Fpath%2Fto%2Ffile.js%3Fcb%3D34343%3A44%3A12&e_n=Uncaught%20Error%3A%20The%20message&idsite=1/.test( results ), "enableJSErrorTracking() function with predefined onerror event");
- ok( /e_c=JavaScript%20Errors&e_a=http%3A%2F%2Fpiwik.org%2Fpath%2Fto%2Ffile.js%3Fcb%3D3kfkf%3A45&e_n=Second%20Error%3A%20With%20less%20data&idsite=1/.test( results ), "enableJSErrorTracking() function without predefined onerror event and less parameters");
+ ok( /e_c=JavaScript%20Errors&e_a=http%3A%2F%2Fpiwik.org%2Fpath%2Fto%2Ffile.js%3Fcb%3D34343%3A44%3A12&e_n=Uncaught%20Error%3A%20The%20message&ca=1&idsite=1/.test( results ), "enableJSErrorTracking() function with predefined onerror event");
+ ok( /e_c=JavaScript%20Errors&e_a=http%3A%2F%2Fpiwik.org%2Fpath%2Fto%2Ffile.js%3Fcb%3D3kfkf%3A45&e_n=Second%20Error%3A%20With%20less%20data&ca=1&idsite=1/.test( results ), "enableJSErrorTracking() function without predefined onerror event and less parameters");
ok( /matomo.php\?action_name=twoTrackers&idsite=1&/.test( results ), "addTracker() trackPageView() sends request to both Piwik instances");
ok( /matomo.php\?action_name=twoTrackers&idsite=13&/.test( results ), "addTracker() trackPageView() sends request to both Piwik instances");
@@ -4477,13 +4481,13 @@ if ($mysql) {
var trackingRequests = [
null,
- 'c_n=' + toEncodedAbsolutePath('img1-en.jpg') + '&c_p=' + toEncodedAbsoluteUrl('img1-en.jpg'),
- 'c_n=img.jpg&c_p=img.jpg&c_t=http%3A%2F%2Fimg2.example.com',
- 'c_n=' + toEncodedAbsolutePath('img3-en.jpg') + '&c_p=' + toEncodedAbsoluteUrl('img3-en.jpg') + '&c_t=http%3A%2F%2Fimg3.example.com',
- 'c_n=My%20content%204&c_p=My%20content%204&c_t=http%3A%2F%2Fimg4.example.com',
- 'c_n=My%20Ad%205&c_p=http%3A%2F%2Fimg5.example.com%2Fpath%2Fxyz.jpg&c_t=' + originEncoded + '%2Fanylink5',
- 'c_n=http%3A%2F%2Fwww.example.com%2Fpath%2Fxyz.jpg&c_p=http%3A%2F%2Fwww.example.com%2Fpath%2Fxyz.jpg&c_t=http%3A%2F%2Fimg6.example.com',
- 'c_n=My%20Ad%207&c_p=Unknown&c_t=http%3A%2F%2Fimg7.example.com'
+ 'c_n=' + toEncodedAbsolutePath('img1-en.jpg') + '&c_p=' + toEncodedAbsoluteUrl('img1-en.jpg') + '&ca=1',
+ 'c_n=img.jpg&c_p=img.jpg&c_t=http%3A%2F%2Fimg2.example.com&ca=1',
+ 'c_n=' + toEncodedAbsolutePath('img3-en.jpg') + '&c_p=' + toEncodedAbsoluteUrl('img3-en.jpg') + '&c_t=http%3A%2F%2Fimg3.example.com&ca=1',
+ 'c_n=My%20content%204&c_p=My%20content%204&c_t=http%3A%2F%2Fimg4.example.com&ca=1',
+ 'c_n=My%20Ad%205&c_p=http%3A%2F%2Fimg5.example.com%2Fpath%2Fxyz.jpg&c_t=' + originEncoded + '%2Fanylink5&ca=1',
+ 'c_n=http%3A%2F%2Fwww.example.com%2Fpath%2Fxyz.jpg&c_p=http%3A%2F%2Fwww.example.com%2Fpath%2Fxyz.jpg&c_t=http%3A%2F%2Fimg6.example.com&ca=1',
+ 'c_n=My%20Ad%207&c_p=Unknown&c_t=http%3A%2F%2Fimg7.example.com&ca=1'
];
stop();
@@ -4532,8 +4536,8 @@ if ($mysql) {
secondRequest = 0;
}
- assertTrackingRequest(requests[firstRequest], 'c_n=MyName&c_p=Unknown');
- assertTrackingRequest(requests[secondRequest], 'c_n=Any%3A%2F%2FName&c_p=AnyPiece%3F&c_t=http%3A%2F%2Fwww.example.com');
+ assertTrackingRequest(requests[firstRequest], 'c_n=MyName&c_p=Unknown&ca=1');
+ assertTrackingRequest(requests[secondRequest], 'c_n=Any%3A%2F%2FName&c_p=AnyPiece%3F&c_t=http%3A%2F%2Fwww.example.com&ca=1');
// trackContentInteraction()
@@ -4550,8 +4554,8 @@ if ($mysql) {
secondRequest = 0;
}
- assertTrackingRequest(requests[firstRequest], 'c_i=Clicke&c_n=IntName&c_p=Unknown');
- assertTrackingRequest(requests[secondRequest], 'c_i=Clicki&c_n=IntN%3A%2Fame&c_p=IntPiece%3F&c_t=http%3A%2F%2Fint.example.com');
+ assertTrackingRequest(requests[firstRequest], 'c_i=Clicke&c_n=IntName&c_p=Unknown&ca=1');
+ assertTrackingRequest(requests[secondRequest], 'c_i=Clicki&c_n=IntN%3A%2Fame&c_p=IntPiece%3F&c_t=http%3A%2F%2Fint.example.com&ca=1');
// trackContentInteractionNode()
@@ -4561,7 +4565,7 @@ if ($mysql) {
requests = results.match(/<span\>(.*?)\<\/span\>/g);
requests.shift();
- assertTrackingRequest(requests[0], 'c_i=Clicki%3Fiii&c_n=My%20Ad%205&c_p=http%3A%2F%2Fimg5.example.com%2Fpath%2Fxyz.jpg&c_t=' + originEncoded + '%2Fanylink5');
+ assertTrackingRequest(requests[0], 'c_i=Clicki%3Fiii&c_n=My%20Ad%205&c_p=http%3A%2F%2Fimg5.example.com%2Fpath%2Fxyz.jpg&c_t=' + originEncoded + '%2Fanylink5&ca=1');
// enableTrackOnlyVisibleContent() && trackAllContentImpressions()
@@ -4808,7 +4812,7 @@ if ($mysql) {
var requests = results.match(/<span\>(.*?)\<\/span\>/g);
requests.shift();
- assertTrackingRequest(requests[0], 'c_i=click&c_n=img.jpg&c_p=img.jpg&c_t=http%3A%2F%2Fimg2.example.com');
+ assertTrackingRequest(requests[0], 'c_i=click&c_n=img.jpg&c_p=img.jpg&c_t=http%3A%2F%2Fimg2.example.com&ca=1');
results = fetchTrackedRequests(token2);
@@ -4817,7 +4821,7 @@ if ($mysql) {
requests = results.match(/<span\>(.*?)\<\/span\>/g);
requests.shift();
- assertTrackingRequest(requests[0], 'link=http%3A%2F%2Fimg2.example.com%2F&c_i=click&c_n=img.jpg&c_p=img.jpg&c_t=http%3A%2F%2Fimg2.example.com');
+ assertTrackingRequest(requests[0], 'link=http%3A%2F%2Fimg2.example.com%2F&c_i=click&c_n=img.jpg&c_p=img.jpg&c_t=http%3A%2F%2Fimg2.example.com&ca=1');
results = fetchTrackedRequests(token3);
@@ -4826,7 +4830,7 @@ if ($mysql) {
requests = results.match(/<span\>(.*?)\<\/span\>/g);
requests.shift();
- assertTrackingRequest(requests[0], 'link=http%3A%2F%2Fimg2.example.com%2F&c_i=click&c_n=img.jpg&c_p=img.jpg&c_t=http%3A%2F%2Fimg2.example.com');
+ assertTrackingRequest(requests[0], 'link=http%3A%2F%2Fimg2.example.com%2F&c_i=click&c_n=img.jpg&c_p=img.jpg&c_t=http%3A%2F%2Fimg2.example.com&ca=1');
results = fetchTrackedRequests(token4);