mmRequestCallbacks[1]({"Scripts":[{"Name":"Plugin_IntModule","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*!\n *\tintegrations-module 0.9.4\n *\t-- Maxymiser Integrations Module provides a standardized approach to develop and deploy 3rd party integrations.\n *\t-- https://gitlab.com/maxymiser-integrations/integrations-module/raw/master/src/integrations-module.min.js\n *\t-- git+ssh://git@gitlab.com/maxymiser-integrations/integrations-module.git\n *\t-- Built on 2015-10-30\n */\n!function(){function a(){function a(a,b){function i(b){return a=a||\"\",g(\"Integrations.register(\"+a+\"): \"+(b||\"\").toString())}var j,k;return b=e(b)?b:{},(a=(\"string\"==typeof a?a:\"\").toLowerCase().replace(/^\\s+|\\s+$/g,\"\"))?l[a]?(i(m.errors.alreadyRegistered),null):(b.name=a,j=h(b,{}),k={validate:c(j.validate)?j.validate:f,check:c(j.check)?j.check:f,interval:d(j.interval)?j.interval:50,timeout:d(j.timeout)?j.timeout:2e3,exec:c(j.exec)?j.exec:f,options:j},j=h(k,j),l[a]=j):(i(m.errors.missingRegisterName),null)}function i(a,b){b=e(b)?b:{};var c,d,f,g,i=new Deferred;if(a=(a||\"\").toLowerCase(),i.integrationName=a,!l[a])return m.reject(i,m.errors.unregisteredIntegration);if(c=h(l[a],{}),c=h(b,c),(f=c.validate(c))!==!0)return m.reject(i,f);if(d=c.campaign,(g=m.validateCampaignRequired(c,i))!==!0)return m.reject(i,g);if(c.isProduction=m.isProduction(),c.attributeMapRequired){var j=m.isValidAttributeMap(c.attributeMap);if(j!==!0)return m.reject(i,j)}return\"pending\"!==i.state()?i.promise():(\"never\"!==c.timeout&&m.setFailTimeout(c,i),m.check(c).then(function(){return m.exec(c)}).then(function(a){return c.result=a,m.resolve(i,c)}).fail(function(a){return m.reject(i,a)}),i.promise())}function j(a,b){a=(a||\"\").toLowerCase();var c=l[a];return c?(b=e(b)?b:{},l[a]=h(b,c),this):!1}function k(a){if(!a)return l;var b=(a||\"\").toLowerCase();return l[b]}var l={},m={errors:{missingRegisterName:\"Invalid integration reigstration. Name argument is required.\",missingRegisterExec:\"Missing `exec` for integration registration\",alreadyRegistered:\"Integration has already been registered\",missingRunName:\"Missing `name` for `integration.run`\",unregisteredIntegration:\"Unknown integration name\",noCampaignExperience:\"Integration was run before the campaign has generated\",noRedirectCampaign:\"Redirect Integration is not in a valid campaign scope\",noRedirectCampaignData:\"Redirect Integration is not on a generation page\",campaignRequired:\"Integration must be deployed within a campaign script\",failedToSaveRedirectData:\"Failed to save redirect data\"},HALFHOUR:1/48,isProduction:function(){function a(a){for(var c,d={},e=\"\",f=0;c=b(a+f++);)e+=c;e=decodeURIComponent(e);try{d=JSON.parse(e)}catch(g){}return d}function b(a){var b=new RegExp(\"(?:^|; )\"+encodeURIComponent(a).replace(/([.$?*|{}()\\[\\]\\\\\\/+^])/g,\"\\\\$1\")+\"=([^;]+)\"),c=(document.cookie.match(b)||[\"\",\"\"])[1];return decodeURIComponent(c)}for(var c=a(\"mmcore.store.p.\")||{},d=a(\"mmcore.store.s.\")||{},e=a(\"mmapi.store.p.\")||{},f=a(\"mmapi.store.s.\")||{},g=[c,d,e,f],h={\"mmparams.p\":1,\"mmparams.d\":1},i={un:1,cfgID:1,pruh:1},j=g.length;j--;){var k=g[j];for(var l in h||{})for(var m in i||{})if((k[l]||{})[m])return!1}return!0},isValidIntegrationName:function(a){return\"string\"==typeof a&&/^\\w+/.test(a)},isCampaignScope:function(a){return e(a)&&a.getName&&a.getExperience?!0:!1},getCampaignExperience:function(a){var b={};return m.isCampaignScope(a)&&(b=a.getExperience&&a.getExperience()||{}),Object.keys(b)?m.formatCampaignExperience(b):!1},formatCampaignExperience:function(a){a=e(a)?a:{};var b=[];for(var c in a)b.push(c+\":\"+a[c]);return b.join(\"|\")},getData:function(a){a=(a||\"\").toLowerCase();var b=visitor.getData(\"Integrations\");return b=e(b)?b:{},a&&(b[a]=b[a]||{}),b},setRedirectData:function(a,b){if(a=(a||\"\").toLowerCase(),!m.isCampaignScope(b))return!1;var c=m.getData(a),d=b.getName();return c[a][d]=c[a][d]||{},c[a][d].redirectData=b.getExperience(),visitor.setData(\"Integrations\",c,m.HALFHOUR),!0},removeRedirectData:function(a,b){if(a=(a||\"\").toLowerCase(),!m.isCampaignScope(b))return!1;var c=m.getData(a),d=b.getName();return c[a][d]=c[a][d]||{},c[a][d].redirectData=null,visitor.setData(\"Integrations\",c,m.HALFHOUR),!0},getRedirectData:function(a,b){if(a=(a||\"\").toLowerCase(),!m.isCampaignScope(b))return!1;var c=m.getData(a),d=b.getName();if(c[a][d]=c[a][d]||{},!c[a]||!c[a][d])return c[a]=c[a]||{},c[a][d]=c[a][d]||{},c[a][d].redirectData=null,visitor.setData(\"Integrations\",c,m.HALFHOUR),!1;for(var e in c[a])if(e===d)return c[a][e].redirectData;return!1},getSessionDate:function(a,b){var c=m.getData(a),d=c[a][b.getName()]||{},e=d.sessionDate;return e},setSessionDate:function(a,b){var c=m.getData(a),d=b.getName();c[a][d]=c[a][d]||{},c[a][d].sessionDate=(new Date).getTime(),visitor.setData(\"Integrations\",c,m.HALFHOUR)},resolve:function(a,b){return a.resolve(b),a.promise()},reject:function(a,b){var c=a.integrationName||\"unknown name\";return b=b||\"unknown reason\",g(\"Integration [\"+c+\"]: \"+b.toString()),a.reject(b),a.promise()},validateCampaignRequired:function(a,b){if(!a.campaignRequired)return a.oncePerSession?\"campaign option is required when using the oncePerSession option\":a.redirect?\"campaign option is required when using the redirect option\":!0;var c=a.campaign,d=m.isCampaignScope(c);if(d!==!0)return m.errors.campaignRequired;if(a.campaignExperience=m.getCampaignExperience(c),a.campaignExperience===!1&&!a.redirect)return m.errors.noCampaignExperience(a.name);if(a.oncePerSession){var e=m.getSessionDate(a.name,c);if(m.setSessionDate(a.name,c),(new Date).getTime()-m.HALFHOUR>e)return g(\"Integration [\"+a.name+\"]: data has already been sent this session\"),m.resolve(b,a),!0}if(a.redirect){var f=function(){var a=c.getElements();for(var b in a)return!0;return!1}();return f?c.isDefault()?!0:m.setRedirectData(a.name,c)?(m.resolve(b,a),!0):m.errors.failedToSaveRedirectData:(a.campaignExperience=m.getRedirectData(a.name,c),a.campaignExperience=m.formatCampaignExperience(a.campaignExperience),m.removeRedirectData(a.name,c),a.campaignExperience?!0:m.errors.noRedirectCampaignData)}return!0},setFailTimeout:function(a,b){!function(b){setTimeout(function(){setTimeout(function(){return\"pending\"===b.state()?m.reject(b,\"Integration timed out after \"+a.timeout+\"ms\"):void 0},0)},a.timeout+1)}(b)},isValidAttributeMap:function(a){if(!a)return\"Missing required attributeMap parameter\";if(!e(a)||!Object.keys(a).length)return\"The attributeMap parameter is empty or not an object\";for(var b in a){var c=a[b];if(\"string\"!=typeof b||!/^[a-zA-Z]+/.test(b))return\"Invalid attribute name in the attributeMap\";if(!e(c))return\"attributeMap values must be stored in an object\";if(!Object.keys(c).length)return\"attributeMap attribute object is empty\";for(var d in c)if(!/^\\w+$/.test(d)&&\"default\"!==d)return\"Invalid attribute ID in attributeMap\"}return!0},check:function(a){var c=new Deferred,d=!1;return function e(){var f=a.check.call(this,a);return b(f)?void setTimeout(function(){f.done(function(){return c.resolve()}).fail(function(a){return c.reject(a)})},0):f?void setTimeout(function(){c.resolve()},0):void(d||setTimeout(e,a.interval))}(),setTimeout(function(){d=!0},a.timeout),c.promise()},exec:function(a){var c=new Deferred,d=a.exec.call(this,a);return b(d)?(setTimeout(function(){d.done(function(a){return c.resolve(a)}).fail(function(a){return c.reject(a)})},0),c.promise()):(d===!0?m.resolve(c,a.result):m.reject(c,d),c.promise())}};return{register:a,run:i,setDefaults:j,get:k}}function b(a){return e(a)&&c(a.then)}function c(a){return\"function\"==typeof a}function d(a){return\"number\"==typeof a&&a>0}function e(a){return\"object\"==typeof a&&!!a}function f(){return!0}function g(a){window.mm_error=window.mm_error||\"\",window.mm_error+=a+\"\\n\"}function h(a,b){a=e(a)?a:{},b=e(b)?b:{};var c={};for(var d in b)c[d]=b[d];for(var f in a)c[f]=a[f];return c}if(\"object\"==typeof modules&&\"function\"==typeof modules.define){var i={autoDefine:!0,singleton:!0};modules.define(\"Integrations\",i,a)}else modules={require:function(){return new a}}}();","Order":-100,"HighLevelApiVersion":"1.6"},{"Name":"IM_AdobeAnalytics","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/*!\n *\tAdobeAnalytics 1.1.0\n *\t-- Maxymiser Adobe Analytics integration\n *\t-- https://gitlab.com/maxymiser-integrations/AdobeAnalytics/raw/master/src/AdobeAnalytics.min.js\n *\t-- git+ssh://git@gitlab.com/maxymiser-integrations/AdobeAnalytics.git\n *\t-- Built on 2015-12-11\n */\n!function(){var a={version:\"1.1.0\",validate:function(a){return a.eVar&&!b.isNumber(a.eVar)?b.errors.invalidEvar(a.eVar):a.prop&&!b.isNumber(a.prop)?b.errors.invalidProp(a.prop):a.sVariable&&!b.isSVariable(a.sVariable)?b.errors.invalidSVariable(a.sVariable):b.getParams(a).length?a.trackingServer?!0:b.errors.missingTrackingServer:b.errors.missingParameters},oncePerSession:!1,campaignRequired:!0,check:function(a){var c=b.getSVariable(a.sVariable);return c&&c.trackingServer===a.trackingServer},timeout:7e3,exec:function(a){return a.sync?(b.populateSyncData(a),!0):b.send(a)}},b={errors:{missingParameters:\"The `eVar` and/or `prop` option are required and missing\",invalidEvar:function(a){return\"Invalid eVar provided [\"+(a||\"\").toString()+\"]\"},invalidProp:function(a){return\"Invalid prop provided [\"+(a||\"\").toString()+\"]\"},invalidSVariable:function(a){return\"Invalid sVariable provided [\"+(a||\"\").toString()+\"] (must be `string` or `s object`)\"},missingTrackingServer:function(){return\"Missing trackingServer option\"}},isSVariable:function(a){return\"string\"==typeof a?/^\\w+/.test(a):\"object\"==typeof a?b.isSObject(a):!1},isSObject:function(a){return\"object\"==typeof a&&\"function\"==typeof a.t},getSVariable:function(a){return a&&\"string\"!=typeof a?b.isSObject(a)?a:!1:b.isSObject(window[a||\"s\"])?window[a||\"s\"]:!1},isNumber:function(a){return a&&(+a).toFixed(0)>0},send:function(a){var c=b.getParams(a),d=b.getSVariable(a.sVariable);d.linkTrackVars=c.join(\",\");for(var e=0;e<c.length;e++)d[c[e]]=a.campaign.getName()+\"=\"+a.campaignExperience;return d.tl(!0,\"o\",\"Maxymiser \"+(a.isProduction?\"Live\":\"QA\")),!0},getParams:function(a){var b=[];return a.eVar&&b.push(\"eVar\"+a.eVar),a.prop&&b.push(\"prop\"+a.prop),b},populateSyncData:function(a){var c=b.getParams(a);window.mm_adobe_data=window.mm_adobe_data||{};for(var d=c.length;d--;)window.mm_adobe_data[c[d]]=a.campaignExperience}};\"object\"==typeof modules&&\"function\"==typeof modules.define&&modules.require(\"Integrations\").register(\"Adobe Analytics\",a)}();","Order":-90,"HighLevelApiVersion":"1.6"},{"Name":"IM_Defaults","Type":"script","Attrs":{"type":"text/javascript"},"Data":"Integrations.setDefaults('Adobe Analytics', {\n\ttrackingServer: 'stats.economist.com',\n\tclientID: 'economistcomprod',\n\teVar: 51,\n\tprop: 51\n});","Order":-80,"HighLevelApiVersion":"1.6"},{"Name":"Module_Refreshed","Type":"script","Attrs":{"type":"text/javascript"},"Data":"/**\n * Detect page refreshes to prevent multiple false action tracking\n * mmAPI module\n *\n * @author Rafal‚ Maksymiuk (rafal.maksymiuk@gmail.com)\n * @date 23.11.2015\n */\n// https://gitlab.com/maxymiser-emea-travel-utils/cdapi-module-refreshed/blob/master/Module_Refreshed.js    \n\nmodules.define( 'Refreshed', { autoDefine: false, singleton: true }, function(){\n    \n    var sec = 5;\n    var cookie = 'pageRefreshed';\n    var initialised = false;\n    \n    /**\n     * Simple hashing function, to prevent storing to large strings in cookie\n     * \n     * @param {String} input hashed string\n     * @returns {String} hash\n     */\n    function hashCode( input ){\n        var hash = 0;\n        var char;\n        var i;\n\n        if ( input.length == 0 ) return hash;\n\n        for ( i = 0; i < input.length; i++ ) {\n            char = input.charCodeAt( i );\n            hash = ( ( hash << 5 ) - hash ) + char;\n            hash = hash & hash; // Convert to 32bit integer\n        }\n\n        return hash.toString();\n    }\n    \n    \n    /**\n     * Function for patching unload callbacks\n     */        \n    function exitEvent(){\n        cookies.set( 'mm_' + cookie, hashCode( encodeURI( location.href ) ), { expires: sec / (24 * 60 * 60)} );\n    }    \n\n    /**\n     * Init refreshed\n     */\n    function init(){\n        window.addEventListener( 'beforeunload', exitEvent );\n        window.addEventListener( 'unload', exitEvent );\n        window.addEventListener( 'pagehide', exitEvent );\n        \n        initialised = true;\n    };\n\n    /**\n     * Change default timeout\n     * \n     * @param {Number} [timeout] timeout to treat page load as refresh\n     */\n    this.setRefreshTimeout = function( timeout ){\n        if ( timeout ){\n            sec = timeout;\n        }\n    };\n      \n    /**\n     * Return refreshed page state\n     *\n     * @return {boolean} was page refreshed\n     */\n    this.isRegularLoad = function(){\n\n        //it can be only initialised once on current page\n        if ( !initialised ){\n            init();\n        }\n        return ( cookies.get( 'mm_' + cookie) !== hashCode( encodeURI( location.href )));\n    };\n      \n});","Order":-50,"HighLevelApiVersion":"1.6"},{"Name":"Act_ReturnVisit","Type":"script","Attrs":{"type":"text/javascript"},"Data":"// Action:\n//   ReturnVisit\n\n// Cookies\n//   mm_return_visit (180)\n//   mm_Session (0)\n\nvar restoreMMCoreCookies = function(cookiesArray) {\n\n\tvar cookieInfoObject;\n\tvar cookieName;\n\tvar cookieExpiration;\n\tvar cookieValue;\n\n\n\tfor (var i = 0; i < cookiesArray.length; i++) {\n\n\t\tcookieInfoObject = cookiesArray[i];\n\n\t\tcookieName = cookieInfoObject.name;\n\t\tcookieExpiration = cookieInfoObject.expires;\n\n\t\tcookieValue = cookies.get(cookieName);\n\n\t\tif (typeof cookieValue !== 'undefined') {\n\t\t\tvisitor.setData(cookieName, cookieValue, cookieExpiration);\n\t\t\tcookies.remove(cookieName);\n\t\t}\n\n\t}\n\n};\n\n// Restore mmcore cookies\nrestoreMMCoreCookies([\n\t{\n\t\t'name': 'mm_return_visit',\n\t\t'expires': 180\n\t}, {\n\t\t'name': 'mm_Session',\n\t\t'expires': 0\n\t}\n]);\n\n;(function act_ReturnVisits() {\n\tvar COOKIE_NAME = 'mm_return_visit';\n\tif (!visitor.getData('mm_Session')) {\n\t\tsetTimeout(function() { // wait all requests\n\t\t\tvar visitNum = 1 + Number(visitor.getData(COOKIE_NAME) || 0);\n\t\t\tif (!isNaN(visitNum)) {\n\t\t\t\tvisitor.setData(COOKIE_NAME, visitNum, 180);\n\t\t\t\tactions\n\t\t\t\t\t.set('ReturnVisit', 1, 'Visit' + visitNum)\n\t\t\t\t\t.send();\n\t\t\t}\n\t\t}, 2000);\n\t}\n}());","Order":-15,"HighLevelApiVersion":"1.6"},{"Name":"PCs_WholeSite","Type":"script","Attrs":{"type":"text/javascript"},"Data":"// PCs:\n//   RegwallViews\n//   SubwallViews\n//   LogInState\n//   Subscriber\n//   RegState\n//   ClickDepth\n//   Recency\n//   Loyalty\n//   Interaction\n//   Brand\n//   SignedIn\n//   VEI\n//   Referrer\n//   Entry\n//   SiteVersion\n//   OptlyEconomist\n\n// Client Cookies:\n//   ec_omniture_user_sub\n//   Econ.user.user\n//   ec_device\n//   optly_economist_test\n\n// MM Cookies:\n//   mm_RegwallViews (1)\n//   mm_SubwallViews (1)\n//   mm_Session (0)\n//   mm_PCObj (365)\n//   mm_entry_session (0)\n\n\n// Old storage coverage after CDAPI migration\nvar restoreMMCoreData = function() {\n\n\tvar restoreMMCorePCs = function () {\n\n\t\tvar oldPCsList = cookies.get('mm_pc');\n\t\tvar oldPCsArray = (oldPCsList ? oldPCsList.split('&') : []);\n\t\tvar pcValue, pcName;\n\t\tvar l = oldPCsArray.length;\n\n\t\tfor (var i = 0; i < l; i++) {\n\t\t\tpcName = oldPCsArray[i].split('=')[0];\n\t\t\tpcValue = oldPCsArray[i].split('=')[1];\n\t\t\tif (pcName && pcValue) {\n\t\t\t\tvisitor.storeAttr(pcName, pcValue);\n\t\t\t}\n\t\t}\n\n\t\tcookies.remove('mm_pc');\n\n\t};\n\n\tvar restoreMMCoreCookies = function(cookiesArray) {\n\n\t\tvar cookieInfoObject;\n\t\tvar cookieName;\n\t\tvar cookieExpiration;\n\t\tvar cookieValue;\n\n\n\t\tfor (var i = 0; i < cookiesArray.length; i++) {\n\n\t\t\tcookieInfoObject = cookiesArray[i];\n\n\t\t\tcookieName = cookieInfoObject.name;\n\t\t\tcookieExpiration = cookieInfoObject.expires;\n\n\t\t\tcookieValue = cookies.get(cookieName);\n\n\t\t\tif (typeof cookieValue !== 'undefined') {\n\t\t\t\tvisitor.setData(cookieName, cookieValue, cookieExpiration);\n\t\t\t\tcookies.remove(cookieName);\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\t// Restore mmcore PCs\n\trestoreMMCorePCs();\n\n\t// Restore mmcore cookies\n\trestoreMMCoreCookies([\n\t\t{\n\t\t\t'name': 'mm_RegwallViews',\n\t\t\t'expires': 1\n\t\t}, {\n\t\t\t'name': 'mm_SubwallViews',\n\t\t\t'expires': 1\n\t\t}, {\n\t\t\t'name': 'mm_PCObj',\n\t\t\t'expires': 365\n\t\t}, {\n\t\t\t'name': 'mm_Session',\n\t\t\t'expires': 0\n\t\t}, {\n\t\t\t'name': 'mm_entry_session',\n\t\t\t'expires': 0\n\t\t}\n\t]);\n\n};\n\n// Restore mmcore data as soon as possible\nrestoreMMCoreData();\n\n\t\n\nvar $ = window.jQuery;\nvar ecOmnitureUserSubCookie = cookies.get('ec_omniture_user_sub') || '';\nvar subscriber;\n\nvar logInState = JSON.parse(cookies.get('Econ.user.user') || '{\"name\": null}').name === null ? 'LoggedOut' : 'LoggedIn';\nvar regState = 'NotRegistered';\n\n\nfunction getPaywallPersCritVal(val, type) {\n\tswitch (val.toString()) {\n\t\tcase '1':\n\t\t\treturn type + '1';\n\n\t\tcase '2':\n\t\t\treturn type + '2';\n\n\t\tcase '3':\n\t\t\treturn type + '3';\n\n\t\tcase '4':\n\t\t\treturn type + '4';\n\n\t\tcase '5':\n\t\t\treturn type + '5';\n\n\t\tcase '6':\n\t\tcase '7':\n\t\t\treturn type + '6-7';\n\n\t\tcase '8':\n\t\tcase '9':\n\t\t\treturn type + '8-9';\n\n\t\tcase '10':\n\t\tdefault:\n\t\t\treturn type + '10plus';\n\t}\n}\n\nfunction handlePaywall(paywallName) {\n\tvar oldCookieVal,\n\t\tnewCookieVal,\n\t\ttype;\n\n\toldCookieVal = visitor.getData('mm_' + paywallName);\n\toldCookieVal = parseInt(oldCookieVal, 10);\n\ttype = paywallName.substring(0, 3);\n\n\tif (!oldCookieVal) {\n\t\toldCookieVal = 0;\n\t}\n\n\tnewCookieVal = oldCookieVal + 1;\n\n\tvisitor.setData('mm_' + paywallName, newCookieVal, 1);\n\tvisitor.storeAttr(paywallName, getPaywallPersCritVal(newCookieVal, type));\n}\n\nfunction setPaywallPersCrit() {\n\tvar val;\n\n\ttry {\n\t\tval = window.Drupal.settings.ec_wallpage.ec_wallpage_paywall_name.toLowerCase();\n\t\tif (val === 'article paywall anonymous') {\n\t\t\thandlePaywall('RegwallViews');\n\t\t} else if (val === 'article paywall registered') {\n\t\t\thandlePaywall('SubwallViews');\n\t\t}\n\t} catch (err) { /* silence */ }\n}\n\nswitch (true) {\n\t/*case 'bulk-ip':\n\t\tsubscriber = 'BulkIP';\n\t\tbreak;\n\n\tcase 'bulk-referrer':\n\t\tsubscriber = 'BulkReferrer';\n\t\tbreak;\n\n\tcase 'subscriber':\n\t\tsubscriber = 'DigitalPrint';\n\t\tbreak;\n\n\tcase 'print-subscriber':\n\t\tsubscriber = 'Print';\n\t\tbreak;\n\n\tcase 'digital-subscriber':\n\t\tsubscriber = 'Digital';\n\t\tbreak;\n\t*/\n\tcase (ecOmnitureUserSubCookie.toLowerCase().indexOf('ex-subscriber') !== -1):\n\tcase (ecOmnitureUserSubCookie.toLowerCase().indexOf('registered') !== -1):\n\t\tregState = 'Registered';\n\t\tsubscriber = 'NotSubscribed';\n\t\tbreak;\n\tcase (!ecOmnitureUserSubCookie):\n\t\tsubscriber = 'NotSubscribed';\n\t\tbreak;\n\tdefault:\n\t\tsubscriber = 'Subscribed';\n\t\tbreak;\n}\n\nvisitor.storeAttr('LogInState', logInState);\nvisitor.storeAttr('Subscriber', subscriber);\nvisitor.storeAttr('RegState', regState);\nsetPaywallPersCrit();\n\n\n// -----------------------------------\n// New Pers Criterions\n// -----------------------------------\n(function() {\n\tvar obj, PCs, temp, nowTime, filterAfterPoint;\n\n\tPCs = {\n\t\tClickDepth: 0,\n\t\tRecency: 0,\n\t\tLoyalty: 0,\n\t\tBrand: 0,\n\t\tInteraction: 0,\n\t\tSignedIn: 0\n\t};\n\n\tobj = visitor.getData('mm_PCObj');\n\n\tfilterAfterPoint = function(number) {\n\t\tnumber = Math.round(number * 100) * 0.01;\n\t\tnumber = (function() {\n\t\t\tswitch (true) {\n\t\t\t\tcase number < 0.05:\n\t\t\t\t\treturn 0;\n\t\t\t\tcase number < 0.15:\n\t\t\t\t\treturn 0.1;\n\t\t\t\tcase number < 0.25:\n\t\t\t\t\treturn 0.2;\n\t\t\t\tcase number < 0.35:\n\t\t\t\t\treturn 0.3;\n\t\t\t\tcase number < 0.45:\n\t\t\t\t\treturn 0.4;\n\t\t\t\tcase number < 0.55:\n\t\t\t\t\treturn 0.5;\n\t\t\t\tcase number < 0.65:\n\t\t\t\t\treturn 0.6;\n\t\t\t\tcase number < 0.75:\n\t\t\t\t\treturn 0.7;\n\t\t\t\tcase number < 0.85:\n\t\t\t\t\treturn 0.8;\n\t\t\t\tcase number < 0.95:\n\t\t\t\t\treturn 0.9;\n\t\t\t\tdefault:\n\t\t\t\t\treturn 1;\n\t\t\t}\n\t\t}());\n\n\t\treturn number;\n\t};\n\n\tif (obj) {\n\t\tobj = JSON.parse(obj);\n\t} else {\n\t\tobj = {\n\t\t\twFV: false,\n\t\t\tsD: [],\n\t\t\tss: [],\n\t\t\tcD: 0\n\t\t};\n\t}\n\n\tif (!visitor.getData('mm_Session')) {\n\n\t\tvisitor.setData('mm_Session', 1, 0);\n\n\t\ttemp = {\n\t\t\tt: new Date().getTime(),\n\t\t\tr: 0,\n\t\t\ti: 0,\n\t\t\ts: 0\n\t\t};\n\n\t\ttry {\n\t\t\tif (JSON.parse(cookies.get('Econ.user.user')).name) {\n\t\t\t\ttemp.s = 1;\n\t\t\t}\n\t\t} catch (e) {}\n\n\t\tif (document.referrer) { \n\t\t\ttemp.r = 1;\n\t\t}\n\t\tobj.ss.push(temp);\n\n\t\tif (obj.wFV) {\n\t\t\tobj.sD.push(obj.cD);\n\t\t\tobj.cD = 0;\n\t\t}\n\t} else {\n\t\tobj.cD += 1;\n\t}\n\n\tobj.wFV = 1;\n\n\tif (location.href.indexOf('/comments') + 1) {\n\t\tobj.ss[obj.ss.length - 1].i = 1;\n\t}\n\n\t// is it first visit\n\tif (obj.sD.length) {\n\t\t// -----------------------------------\n\t\t// ClickDepth\n\t\t// -----------------------------------\n\t\ttemp = 0;\n\t\t$.each(obj.sD, function(idx, val) {\n\t\t\tif (val < 4) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttemp += 1;\n\t\t});\n\n\t\ttemp = temp / obj.sD.length;\n\t\tPCs.ClickDepth = temp;\n\t\ttemp = filterAfterPoint(temp);\n\t\tvisitor.storeAttr('ClickDepth', 'Ci' + temp);\n\n\t\t// -----------------------------------\n\t\t// Recency\n\t\t// -----------------------------------\n\t\ttemp = 1;\n\t\tif (obj.ss.length > 1) {\n\t\t\ttemp = 0;\n\t\t\ttemp = obj.ss.slice(-2);\n\t\t\ttemp = (temp[1].t - temp[0].t) / (1000 * 60 * 60 * 24);\n\t\t\tif (temp < 1) {\n\t\t\t\ttemp = 1;\n\t\t\t}\n\t\t}\n\t\ttemp = 1 / temp;\n\t\tPCs.Recency = temp;\n\t\ttemp = filterAfterPoint(temp);\n\t\ttemp = 'Ri' + temp;\n\t\tvisitor.storeAttr('Recency', temp);\n\n\t\t// -----------------------------------\n\t\t// Loyalty\n\t\t// -----------------------------------\n\t\ttemp = 0;\n\t\tnowTime = new Date().getTime();\n\t\t$.each(obj.ss, function(idx, val) {\n\t\t\tvar difference = (nowTime - val.t) / (1000 * 60 * 60 * 24);\n\t\t\tif (difference > 28) {\n\t\t\t\treturn; }\n\t\t\t//\t\t\t\tvar difference = (nowTime - val.t) / (1000 * 60);\n\t\t\t//\t\t\t\tif ( difference > 30 ) { return; }\n\t\t\ttemp += 1;\n\t\t});\n\t\tif (!temp) { temp = 1; }\n\t\ttemp = 1 - 1 / temp;\n\t\tPCs.Loyalty = temp;\n\t\ttemp = filterAfterPoint(temp);\n\t\tvisitor.storeAttr('Loyalty', 'Li' + temp);\n\n\t\t// -----------------------------------\n\t\t// Interaction\n\t\t// -----------------------------------\n\t\ttemp = 0;\n\t\t$.each(obj.ss, function(idx, val) {\n\t\t\tif (obj.ss.length - 1 === idx) {\n\t\t\t\treturn; }\n\t\t\tif (!val.i) {\n\t\t\t\treturn; }\n\t\t\ttemp += 1;\n\t\t});\n\t\ttemp = temp / (obj.ss.length - 1);\n\t\tPCs.Interaction = temp;\n\t\ttemp = filterAfterPoint(temp);\n\t\tvisitor.storeAttr('Interaction', 'Ii' + temp);\n\t} else {\n\t\tvisitor.storeAttr('ClickDepth', 'New');\n\t\tvisitor.storeAttr('Recency', 'New');\n\t\tvisitor.storeAttr('Loyalty', 'New');\n\t\tvisitor.storeAttr('Interaction', 'New');\n\t}\n\n\t// -----------------------------------\n\t// Brand\n\t// -----------------------------------\n\ttemp = 0;\n\t$.each(obj.ss, function(idx, val) {\n\t\tif (val.r) {\n\t\t\treturn; }\n\t\ttemp += 1;\n\t});\n\ttemp = temp / obj.ss.length;\n\tPCs.Brand = temp;\n\ttemp = filterAfterPoint(temp);\n\tvisitor.storeAttr('Brand', 'Bi' + temp);\n\n\t// -----------------------------------\n\t// SignedIn\n\t// -----------------------------------\n\ttemp = 0;\n\tif (obj.ss.length > 0) {\n\t\t$.each(obj.ss, function(idx, val) {\n\t\t\tif (!val.s) {\n\t\t\t\treturn; }\n\t\t\ttemp += 1;\n\t\t});\n\t\ttemp = temp / obj.ss.length;\n\t}\n\ttemp = filterAfterPoint(temp);\n\tPCs.SignedIn = temp;\n\tvisitor.storeAttr('SignedIn', 'Si' + temp);\n\n\tif (obj.sD.length) {\n\t\t// -----------------------------------\n\t\t// VEI\n\t\t// -----------------------------------\n\t\ttemp = 0;\n\t\t$.each(PCs, function(idx, val) {\n\t\t\tif (val) {\n\t\t\t\ttemp += val;\n\t\t\t}\n\t\t});\n\t\ttemp = filterAfterPoint(temp / 6);\n\t\tvisitor.storeAttr('VEI', 'VEI' + temp);\n\t} else {\n\t\tvisitor.storeAttr('VEI', 'New');\n\t}\n\n\tobj.sD = obj.sD.slice(obj.sD.length - 25, obj.sD.length);\n\tobj.ss = obj.ss.slice(obj.ss.length - 25, obj.ss.length);\n\n\tvisitor.setData('mm_PCObj', JSON.stringify(obj), 365);\n\n}());\n\n/*\n * Referrer\n * */\n\nvar drf = document.referrer;\nswitch (true) {\n\t// referrer contains terms: “yahoo”, “google” or “bing”\n\t// THEN set PC [Referrer] = Search\n\tcase drf === \"\":\n\t\t{\n\t\t\tvisitor.storeAttr('Referrer', 'TypedBM');\n\t\t\tbreak;\n\t\t}\n\tcase !!drf.match(/^https?:\\/\\/[^?\\/]*(yahoo|google|bing)\\.\\w{1,3}(\\.\\w{2})?/i):\n\t\t{\n\t\t\tvisitor.storeAttr('Referrer', 'Search');\n\t\t\tbreak;\n\t\t}\n\tcase !!drf.match(/^https?:\\/\\/[^?\\/]*(facebook|reddit|digg)\\.\\w{1,3}(\\.\\w{2})?/i) || !!drf.match(/^https?:\\/\\/t\\.co\\/\\w+/i):\n\t\t{\n\t\t\tvisitor.storeAttr('Referrer', 'Social');\n\t\t\tbreak;\n\t\t}\n\tcase !drf.match(/^https?:\\/\\/[^?\\/]*economist.com/i):\n\t\t{\n\t\t\tvisitor.storeAttr('Referrer', 'External');\n\t\t\tbreak;\n\t\t}\n\tcase !!drf.match(/^https?:\\/\\/[^?\\/]*economist.com/i):\n\t\t{\n\t\t\tvisitor.storeAttr('Referrer', 'Internal');\n\t\t\tbreak;\n\t\t}\n\tdefault:\n\t\t{\n\t\t\tvisitor.storeAttr('Referrer', 'TypedBM');\n\t\t}\n}\n\n/*\n * Referrer [end]\n * */\n\n/*\n * Entry\n * */\n(function() {\n\tvar wlh = window.location.href,\n\t\tentryAttr = null,\n\t\t$mediator = $({});\n\n\tvar checkIsCategory = function($body) {\n\t\tvar isCategory = false,\n\t\t\tclassNames = [\n\t\t\t\t'page-all-blogs',\n\t\t\t\t'node-type-mtblog-site',\n\t\t\t\t//'page-latest-updates',\n\t\t\t\t'page-sections',\n\t\t\t\t'path-printedition-specialreports',\n\t\t\t\t//'node-type-channel',\n\t\t\t\t//'node-type-guest-network-forum',\n\t\t\t\t//'page-economics-a-to-z',\n\t\t\t\t'node-type-special-report',\n\t\t\t\t'page-topics' //,\n\t\t\t\t//'node-type-page',\n\t\t\t\t//'node-type-guest-network-forum',\n\t\t\t\t//'node-type-issue'\n\t\t\t];\n\n\t\t$.each(classNames, function(index, className) {\n\t\t\tif ($body.hasClass(className)) {\n\t\t\t\tisCategory = true;\n\t\t\t}\n\t\t});\n\n\t\treturn isCategory;\n\t};\n\n\tvar checkIsBlogArticle = function() {\n\t\treturn Boolean(wlh.match(/https?:\\/\\/www\\.economist\\.com\\/blogs.*/i));\n\t};\n\n\tvar runWaiter = function() {\n\t\tvar $body = $('body');\n\n\t\tif ($body.length) {\n\t\t\tentryAttr = (function() {\n\t\t\t\tvar isCategory = checkIsCategory($body);\n\n\t\t\t\tswitch (true) {\n\t\t\t\t\tcase $body.hasClass('node-type-article'):\n\t\t\t\t\t\treturn 'Article';\n\n\t\t\t\t\tcase isCategory:\n\t\t\t\t\t\treturn 'Category';\n\n\t\t\t\t\tcase !isCategory && checkIsBlogArticle():\n\t\t\t\t\t\treturn 'Blogs';\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn 'Blank';\n\t\t\t\t}\n\t\t\t})();\n\t\t\t$mediator.trigger('finishWait');\n\t\t} else {\n\t\t\tsetTimeout(runWaiter, 19);\n\t\t}\n\t};\n\n\tif (/https?:\\/\\/www\\.economist\\.com(\\/|#.*|\\?.*|\\/#.*|\\/\\?.*)?$/i.test(wlh)) {\n\t\tentryAttr = 'Homepage';\n\t} else if (/https?:\\/\\/subscriptions\\.economist\\.com.*/i.test(wlh)) {\n\t\tentryAttr = 'SubsPage';\n\t} else {\n\t\trunWaiter();\n\t}\n\n\n\t//set PC entry only once per session\n\tif (!visitor.getData('mm_entry_session')) {\n\t\tif (entryAttr === null) {\n\t\t\t$mediator.bind('finishWait', function() {\n\t\t\t\tvisitor.storeAttr('Entry', entryAttr);\n\t\t\t\tvisitor.setData('mm_entry_session', entryAttr, 0);\n\t\t\t});\n\t\t} else {\n\t\t\tvisitor.storeAttr('Entry', entryAttr);\n\t\t\tvisitor.setData('mm_entry_session', entryAttr, 0);\n\t\t}\n\t} else {\n\t\tvisitor.storeAttr('Entry', visitor.getData('mm_entry_session'));\n\t}\n})();\n\n\n// Detecting site version (Mobile or Desktop) Andrey Cherepovskiy 4 Nov 2014\n(function() {\n\n\tvar siteVersionAttr = 'Desktop';\n\n\tif (cookies.get('ec_device') === 'mobile-phone' || navigator.userAgent.toLowerCase().indexOf('iphone') !== -1) {\n\n\t\tsiteVersionAttr = 'Mobile';\n\n\t}\n\n\tvisitor.storeAttr('SiteVersion', siteVersionAttr);\n\n\n})();\n\n/*\n * optlyEconomist added on 30.04.2015 by Yuliya Pshinko\n * */\nif (cookies.get('optly_economist_test') === 'true') {\n\tvisitor.storeAttr('OptlyEconomist', 'True');\n} else {\n\tvisitor.storeAttr('OptlyEconomist', 'False');\n}","Order":-10,"HighLevelApiVersion":"1.6"},{"Name":"Acts_MobileGlobal","Type":"script","Attrs":{"type":"text/javascript"},"Data":"// Track subscriptions with a product breakdown.\n// Assign attributes based on product bought.\n\n// Actions:\n//   MobLogins\n//   MobsSubsArrivals\n//   Subscriptions\n\n// Cookies:\n//   mm-subs (1)\n//   MobLogin_clicked (0)\n//   mm-logged-in-state (365)\n//   mm-mob-subs-arrivals-attr (0)\n//   mm-mob-subs-entry-attr (0)\n\n// Client Cookies:\n//   Econ.user.user\n\nvar restoreMMCoreCookies = function(cookiesArray) {\n\n\tvar cookieInfoObject;\n\tvar cookieName;\n\tvar cookieExpiration;\n\tvar cookieValue;\n\n\n\tfor (var i = 0; i < cookiesArray.length; i++) {\n\n\t\tcookieInfoObject = cookiesArray[i];\n\n\t\tcookieName = cookieInfoObject.name;\n\t\tcookieExpiration = cookieInfoObject.expires;\n\n\t\tcookieValue = cookies.get(cookieName);\n\n\t\tif (typeof cookieValue !== 'undefined') {\n\t\t\tvisitor.setData(cookieName, cookieValue, cookieExpiration);\n\t\t\tcookies.remove(cookieName);\n\t\t}\n\n\t}\n\n};\n\n// Restore mmcore cookies\nrestoreMMCoreCookies([\n\t{\n\t\t'name': 'mm-subs',\n\t\t'expires': 1\n\t}, {\n\t\t'name': 'MobLogin_clicked',\n\t\t'expires': 0\n\t}, {\n\t\t'name': 'mm-logged-in-state',\n\t\t'expires': 365\n\t}, {\n\t\t'name': 'mm-mob-subs-arrivals-attr',\n\t\t'expires': 0\n\t}, {\n\t\t'name': 'mm-mob-subs-entry-attr',\n\t\t'expires': 0\n\t}\n]);\n\n\nvar $document = $(document);\nvar isSubscriptionProcess = window.location.hostname.indexOf('subscriptions.economist.com') !== -1;\nvar isSubscriptionConfirmation = isSubscriptionProcess && window.location.pathname.indexOf('index.php') !== -1;\nvar isPageReloadedByF5 = (visitor.getData('mm-subs') === location.pathname);\n\nvar getPrice = function(priceString) {\n\tvar clearPrices = [];\n\t(priceString || '').toString().replace(/(\\d{1,3}(?:\\D?\\d{3})*(?:\\D(\\d{0,2})|))(?:\\D|$)/gm, function() {\n\t\tvar d = arguments[2];\n\t\tvar zeros = !d ? \"00\" : (d.length === 1 ? \"0\" : \"\");\n\t\tclearPrices.push((arguments[1].replace(/\\D/g, \"\") + zeros) * 1);\n\t});\n\treturn clearPrices;\n};\n\nvar getRevenue = function($holder) {\n\tvar result;\n\tresult = getPrice($holder.text());\n\treturn result;\n};\n\nvar convertValues = function($currencyText, revenue) {\n\tvar exchangeRates, currentRate, finalPrice;\n\n\tcurrentRate = 1; // default value\n\texchangeRates = {\n\t\t'HK$': '0.078754',\n\t\t'US$': '0.610604',\n\t\t'NZ$': '0.500276',\n\t\t'A$': '0.540821',\n\t\t'C$': '0.569724',\n\t\t'S$': '0.482690',\n\t\t'$': '0.610604',\n\t\t'£': '1',\n\t\t'¥': '0.005868',\n\t\t'€': '0.834636',\n\t\t'NZD': '0.500276',\n\t\t'CHF': '0.681384',\n\t\t'CNY': '0.100576',\n\t\t'DKK': '0.111876',\n\t\t'INR': '0.009816',\n\t\t'MYR': '0.186665',\n\t\t'NOK': '0.099609',\n\t\t'PHP': '0.013740',\n\t\t'R': '0.059091',\n\t\t'SEK': '0.093306',\n\t\t'TWD': '0.020469',\n\t\t'W': '0.000577'\n\t};\n\n\t$.each(exchangeRates, function(currencySign, exchangeRate) {\n\t\tif ($currencyText.indexOf(currencySign) > -1) {\n\t\t\tcurrentRate = exchangeRate;\n\t\t\treturn false;\n\t\t}\n\t});\n\n\tfinalPrice = Math.ceil(revenue * currentRate);\n\tfinalPrice = isNaN(finalPrice) ? revenue : finalPrice;\n\n\treturn finalPrice;\n};\n\nvar trackAction = function(actionName, actionValue, attribute) {\n\tactions\n\t\t.set(actionName, actionValue, attribute)\n\t\t.send();\n};\n\nvar getAttrForMobSubsByTypeAction = function() {\n\t/*Attributes should have the following structure: UserProductTerm:\n\n\t First (User) Parameter\n\t Reg - User purchases a regular subscription\n\t Stu - User purchases a student subscription\n\t Gift - User purchases a gift subscription\n\n\t Second (Product) Parameter\n\t PrintDig - User purchases a print and digital subscription\n\t Print - User purchases a print only subscription\n\t Dig - User purchases a digital only subscription\n\n\t Third (Term) Parameter\n\t 12w - User purchases a 12 week subscription\n\t 1y - User purchases a 1 year subscription\n\t 2y - User purchases a 2 year subscription\n\t 3y - User purchases a 3 year subscription\n\t */\n\tvar subType = $('#sub_type_id').val(),\n\t\tuserParam = 'Gift',\n\t\tproductType = $('.css3_labelb:contains(Subscription type)').parent().text().toLowerCase(),\n\t\tproductParam = 'Dig',\n\t\tproductTerm = $('.css3_labelb:contains(Subscription term)').parent().text().toLowerCase(),\n\t\ttermParam = '3y';\n\n\tif (subType === 'personal') {\n\t\tuserParam = 'Reg';\n\t} else if (subType === 'student') {\n\t\tuserParam = 'Stu';\n\t}\n\n\tif (productType.match('print') && productType.match('digital')) {\n\t\tproductParam = 'PrintDig';\n\t} else if (productType.match('print')) {\n\t\tproductParam = 'Print';\n\t}\n\n\tif (productTerm.match('12 weeks')) {\n\t\ttermParam = '12w';\n\t} else if (productTerm.match('1 year')) {\n\t\ttermParam = '1y';\n\t} else if (productTerm.match('2 year')) {\n\t\ttermParam = '2y';\n\t} else if (productTerm.match('6 months')) {\n\t\ttermParam = '6m';\n\t}\n\n\treturn userParam + productParam + termParam;\n};\n\nvar trackMobLogins = function() {\n\n\tvar mobileLoginWasClicked = visitor.getData('MobLogin_clicked');\n\tvisitor.setData('MobLogin_clicked', '', -1);\n\n\t// For all pages except subscription process\n\tif (!isSubscriptionProcess) {\n\n\t\tif (window.jQuery && jQuery.fn.on) {\n\t\t\tjQuery(document).on('click', 'body.econmobile input.ec-button[name=op]', function() {\n\t\t\t\tvisitor.setData('MobLogin_clicked', '1', 0);\n\t\t\t});\n\t\t}\n\n\t\t// Login buttons handling\n\t\tvar userName = JSON.parse(cookies.get('Econ.user.user') || '{\"name\": null}').name;\n\t\tvar prevLoginState = visitor.getData('mm-logged-in-state');\n\n\t\t// Processing \"Logged Out --> Logged In\" journey\n\t\tif (userName && prevLoginState !== userName.toString()) {\n\t\t\tif (mobileLoginWasClicked) {\n\t\t\t\ttrackAction('MobLogins', 1);\n\t\t\t}\n\t\t\tvisitor.setData('mm-logged-in-state', userName, 365);\n\n\t\t// Processing \"Any State --> Logged Out\" journey\n\t\t} else if (!userName) {\n\t\t\tvisitor.setData('mm-logged-in-state', '', -1);\n\t\t}\n\n\t\t// For subscription pages only\n\t} else {\n\n\t\t$(document).ajaxComplete(function(event, xhr, settings) {\n\t\t\tif (settings.url.indexOf('api_request.php') !== -1) {\n\t\t\t\tvar data = $.parseJSON(xhr.responseText);\n\t\t\t\tif (data.status === 200 && data.api_uid && data.api_email) {\n\t\t\t\t\ttrackAction('MobLogins', 1);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t}\n\n};\n\nvar trackMobsSubsArrivals = function() {\n\n\t// For all pages except subscription process\n\tvar isOrderInfoPage = $('.css3_labelb:contains( Order tracking number)').length;\n\n\tif (!isSubscriptionProcess && $document.delegate) {\n\n\t\t$document.delegate('#paybarrier_subscription_link', 'click', function() {\n\n\t\t\tvar attr = '',\n\t\t\t\tpaywallName = '';\n\n\t\t\tif (\n\t\t\t\twindow.Drupal &&\n\t\t\t\twindow.Drupal.settings &&\n\t\t\t\twindow.Drupal.settings.ec_wallpage &&\n\t\t\t\twindow.Drupal.settings.ec_wallpage.ec_wallpage_paywall_name\n\t\t\t) {\n\n\t\t\t\tpaywallName = window.Drupal.settings.ec_wallpage.ec_wallpage_paywall_name;\n\n\t\t\t\tif (paywallName === 'Article Paywall Anonymous') {\n\t\t\t\t\tattr = 'Regwall';\n\t\t\t\t} else if (paywallName === 'Article Paywall Registered') {\n\t\t\t\t\tattr = 'Subwall';\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\tvisitor.setData('mm-mob-subs-arrivals-attr', attr, 0);\n\t\t\tvisitor.setData('mm-mob-subs-entry-attr', attr, 0);\n\t\t});\n\n\t\t$document.delegate('a:contains(Subscribe)', 'touchstart', function() {\n\t\t\tvisitor.setData('mm-mob-subs-arrivals-attr', 'Masthead', 0);\n\t\t\tvisitor.setData('mm-mob-subs-entry-attr', 'Masthead', 0);\n\t\t});\n\n\t\t$document.delegate('#view-subscription', 'touchstart', function() {\n\t\t\tvisitor.setData('mm-mob-subs-arrivals-attr', 'Overlay', 0);\n\t\t\tvisitor.setData('mm-mob-subs-entry-attr', 'Overlay', 0);\n\t\t});\n\n\t\t// For all subscription process pages except confirmation page\n\t} else if (isSubscriptionProcess && !isSubscriptionConfirmation) {\n\n\t\tvar attr = visitor.getData('mm-mob-subs-arrivals-attr') || '';\n\t\tif (window.location.search.indexOf('tagsrc=/GLB/RPWMA') !== -1) {\n\t\t\tattr = 'Regwall';\n\t\t}\n\t\tif (window.location.search.indexOf('tagsrc=/GLB/SPWMA') !== -1) {\n\t\t\tattr = 'Subwall';\n\t\t}\n\n\t\tevents.trigger('MobsSubsArrivals', {\n\t\t\tpath: attr\n\t\t});\n\n\t\ttrackAction('MobsSubsArrivals', 1, attr);\n\t\tvisitor.setData('mm-mob-subs-arrivals-attr', '', -1);\n\n\t\t//if user came from iframe (regwall or subwall)\n\t\tif (attr === 'Regwall' || attr === 'Subwall') {\n\t\t\tvisitor.setData('mm-mob-subs-entry-attr', attr, 0);\n\t\t}\n\n\t} else {\n\t\t//or thankYouID selector\n\t\tif (isOrderInfoPage) {\n\t\t\tif (!isPageReloadedByF5) {\n\n\t\t\t\tvar subscriptionRevenueHolder = $('.css3_labelb:contains(\"Subscription charge:\")').parent();\n\t\t\t\tvar subscriptionRevenue = getRevenue(subscriptionRevenueHolder)[0] || 0;\n\t\t\t\tvar convertedRevenueValue = convertValues(subscriptionRevenueHolder.text(), subscriptionRevenue);\n\t\t\t\tvar entryAttr = visitor.getData('mm-mob-subs-entry-attr') || '';\n\n\t\t\t\tevents.trigger('MobSubsByEntry', {\n\t\t\t\t\trevenue: convertedRevenueValue,\n\t\t\t\t\tpath: entryAttr\n\t\t\t\t});\n\t\t\t\tif (window.mmcore && mmcore.mediator) {\n\t\t\t\t\tmmcore.mediator.trigger('MobSubsByEntry', {\n\t\t\t\t\t\trevenue: convertedRevenueValue,\n\t\t\t\t\t\tpath: entryAttr\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tactions\n\t\t\t\t\t.set('MobSubsByEntry', convertedRevenueValue, entryAttr)\n\t\t\t\t\t.set('MobSubsByType', convertedRevenueValue, getAttrForMobSubsByTypeAction())\n\t\t\t\t\t.set('Subscriptions', convertedRevenueValue, getAttrForMobSubsByTypeAction())\n\t\t\t\t\t.send();\n\n\t\t\t\tvisitor.setData('mm-mob-subs-entry-attr', true, -1);\n\n\t\t\t}\n\t\t}\n\t}\n\tvisitor.setData('mm-subs', location.pathname, 1);\n\n};\n\nevents.domReady(function() {\n\ttry {\n\t\ttrackMobLogins();\n\t\ttrackMobsSubsArrivals();\n\t} catch (error) {\n\t\t// Exception processing\n\t}\n});","Order":-10,"HighLevelApiVersion":"1.6"},{"Name":"Page_ArticlePage","Type":"script","Attrs":{"type":"text/javascript"},"Data":"// Page:\n//   ArticlePage\n\n;(function () {\n\n\twhen(function() {\n\t\treturn (\n\t\t\twindow.utag_data &&\n\t\t\twindow.utag_data.node_type &&\n\t\t\t(\n\t\t\t\twindow.utag_data.node_type === 'article' ||\n\t\t\t\twindow.utag_data.node_type === 'essay' ||\n\t\t\t\twindow.utag_data.node_type === 'mtblog'\n\t\t\t)\n\t\t);\n\t}, function() {\n\t\treturn document.readyState === 'complete';\n\t}).done(function () {\n\t\tvisitor.requestPage('ArticlePage');\n\t});\n\n}());","Order":0,"HighLevelApiVersion":"1.6"},{"Name":"Acts_WholeSite","Type":"script","Attrs":{"type":"text/javascript"},"Data":"// 26.01.2015. Alexander Tytskiy.\n// Actions for successful registration completions\n\n// Actions:\n//   MobRegistrations\n//   Registrations2 \n//      Regwall, Overlay, Comment, Activate, Newsletter\n\n// Cookies:\n//   mm_regComment (0)\n//   mmRegisterTry (0)\n//   mm_regActivate (0)\n//   mm_regNewsletter (0)\n//   mmRWused (0)\n\n// Client Cookies:\n//   ec_omniture_user_sub\n\n\n;(function() {\n\n\tvar restoreMMCoreCookies = function(cookiesArray) {\n\n\t\tvar cookieInfoObject;\n\t\tvar cookieName;\n\t\tvar cookieExpiration;\n\t\tvar cookieValue;\n\n\n\t\tfor (var i = 0; i < cookiesArray.length; i++) {\n\n\t\t\tcookieInfoObject = cookiesArray[i];\n\n\t\t\tcookieName = cookieInfoObject.name;\n\t\t\tcookieExpiration = cookieInfoObject.expires;\n\n\t\t\tcookieValue = cookies.get(cookieName);\n\n\t\t\tif (typeof cookieValue !== 'undefined') {\n\t\t\t\tvisitor.setData(cookieName, cookieValue, cookieExpiration);\n\t\t\t\tcookies.remove(cookieName);\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\t// Restore mmcore cookies\n\trestoreMMCoreCookies([\n\t\t{\n\t\t\t'name': 'mm_regComment',\n\t\t\t'expires': 0\n\t\t}, {\n\t\t\t'name': 'mmRegisterTry',\n\t\t\t'expires': 0\n\t\t}, {\n\t\t\t'name': 'mm_regActivate',\n\t\t\t'expires': 0\n\t\t}, {\n\t\t\t'name': 'mm_regNewsletter',\n\t\t\t'expires': 0\n\t\t}, {\n\t\t\t'name': 'mmRWused',\n\t\t\t'expires': 0\n\t\t}\n\t]);\n\n\tvar delegateBody = function(events, selector, handler) {\n\n\t\tif (!window.jQuery) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (jQuery.fn.live) {\n\t\t\tjQuery(selector).live(events, handler);\n\t\t} else if (jQuery.fn.on) {\n\t\t\tjQuery('body').on(events, selector, handler);\n\t\t}\n\n\t};\n\n\tvar $ = window.jQuery;\n\n\t$(function() {\n\t\t// Registrations2 - Regwall and Overlay\n\t\t$(document).ajaxComplete(function(e, xhr, settings) {\n\n\t\t\tvar welcomeHeading;\n\n\t\t\tif ((settings.url.indexOf('/js/ec_wallpage_js_reg_form') !== -1 || settings.url.indexOf('/ec_overlay_reg_form') !== -1) &&\n\t\t\t\txhr.responseText.indexOf('Thank you for registering') !== -1) {\n\n\t\t\t\twelcomeHeading = $('.overlay-header h2').text().toLowerCase().indexOf('welcome to the economist') > -1;\n\n\t\t\t\tevents.trigger('Registrations');\n\n\t\t\t\tactions\n\t\t\t\t\t.postpone('MobRegistrations', '1')\n\t\t\t\t\t.postpone('Registrations2', '1', welcomeHeading ? 'Overlay' : 'Regwall')\n\t\t\t\t\t.send();\n\n\t\t\t}\n\t\t});\n\n\t\t// Registrations2 - Comment\n\t\tdelegateBody('submit', 'form.context-user_register_comment', function() {\n\t\t\tvisitor.setData('mm_regComment', '1', 0);\n\t\t});\n\n\t\tif (!$('form.context-user_register_comment').length &&\n\t\t\tvisitor.getData('mm_regComment')) {\n\n\t\t\tactions\n\t\t\t\t.set('MobRegistrations', '1')\n\t\t\t\t.set('Registrations2', '1', 'Comment')\n\t\t\t\t.send();\n\n\t\t\tvisitor.setData('mm_regComment', '', -1);\n\n\t\t}\n\t});\n\n\tif (visitor.getData('mmRegisterTry') && cookies.get('ec_omniture_user_sub')) {\n\n\t\twhen(function() {\n\t\t\t\treturn $('footer').length;\n\t\t\t}, events.domReady)\n\t\t\t.done(function() {\n\n\t\t\t\tvar isErrorPresent = $('.messages-error').length,\n\t\t\t\t\tisNoErrorField = $('#user-register .form-item-error:visible').size() === 0;\n\n\t\t\t\tif (!isErrorPresent && isNoErrorField) {\n\t\t\t\t\t(function() {\n\t\t\t\t\t\tvar attr = '';\n\t\t\t\t\t\tif (visitor.getData('mm_regActivate')) {\n\t\t\t\t\t\t\tattr = 'Activate';\n\t\t\t\t\t\t} else if (visitor.getData('mm_regNewsletter')) {\n\t\t\t\t\t\t\tattr = 'Newsletter';\n\t\t\t\t\t\t} else if (visitor.getData('mmRWused')) {\n\t\t\t\t\t\t\tattr = 'Regwall';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tactions\n\t\t\t\t\t\t\t.postpone('MobRegistrations', '1')\n\t\t\t\t\t\t\t.postpone('Registrations2', '1', attr);\n\t\t\t\t\t}());\n\n\t\t\t\t\tactions.send();\n\n\t\t\t\t\tvisitor.setData('mm_regNewsletter', '', -1);\n\t\t\t\t\tvisitor.setData('mm_regActivate', '', -1);\n\t\t\t\t\tvisitor.setData('mmRegisterTry', '', -1);\n\t\t\t\t\tvisitor.setData('mmRWused', '', -1);\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\t// Logic 2\n\tif (window.location.pathname === '/user/register') {\n\t\t$(function() {\n\n\t\t\tvar NOerrors;\n\n\t\t\tNOerrors = $('#user-register .form-item-error:visible').size() === 0;\n\n\t\t\tsetTimeout(function() {\n\n\t\t\t\t$('#user-register').submit(function() {\n\n\t\t\t\t\tNOerrors = $('#user-register .form-item-error:visible').size() === 0;\n\n\t\t\t\t\tif (NOerrors) {\n\n\t\t\t\t\t\tvisitor.setData('mmRegisterTry', true, 0);\n\n\t\t\t\t\t\tif (location.href.indexOf('destination=newsletters') + 1) {\n\t\t\t\t\t\t\tvisitor.setData('mm_regNewsletter', 1, 0);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif ($('#page-title:contains(Activate digital access)').length) {\n\t\t\t\t\t\t\tvisitor.setData('mm_regActivate', 1, 0);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (location.search.indexOf('rp=paywall')> -1) {\n\t\t\t\t\t\t\tvisitor.setData('mmRWused', 1, 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t}, 1000);\n\n\t\t\tif (NOerrors === false) {\n\t\t\t\tvisitor.setData('mm_regNewsletter', '', -1);\n\t\t\t\tvisitor.setData('mm_regActivate', '', -1);\n\t\t\t\tvisitor.setData('mmRegisterTry', '', -1);\n\t\t\t\tvisitor.setData('mmRWused', '', -1);\n\t\t\t}\n\n\t\t});\n\t}\n\n})();","Order":0,"HighLevelApiVersion":"1.6"},{"Name":"Acts_LoginProcess","Type":"script","Attrs":{"type":"text/javascript"},"Data":"// Actions:\n//   Logins2\n// Cookies:\n//   mm_loginForm (7)\n//   mm_socialLogin (365)\n// Client Cookies:\n//   Econ.user.user\n\nvar restoreMMCoreCookies = function(cookiesArray) {\n\n\tvar cookieInfoObject;\n\tvar cookieName;\n\tvar cookieExpiration;\n\tvar cookieValue;\n\n\n\tfor (var i = 0; i < cookiesArray.length; i++) {\n\n\t\tcookieInfoObject = cookiesArray[i];\n\n\t\tcookieName = cookieInfoObject.name;\n\t\tcookieExpiration = cookieInfoObject.expires;\n\n\t\tcookieValue = cookies.get(cookieName);\n\n\t\tif (typeof cookieValue !== 'undefined') {\n\t\t\tvisitor.setData(cookieName, cookieValue, cookieExpiration);\n\t\t\tcookies.remove(cookieName);\n\t\t}\n\n\t}\n\n};\n\n// Restore mmcore cookies set for more than a session\nrestoreMMCoreCookies([\n\t{\n\t\t'name': 'mm_loginForm',\n\t\t'expires': 7\n\t}, {\n\t\t'name': 'mm_socialLogin',\n\t\t'expires': 365\n\t}\n]);\n\nevents.domReady(function() {\n\n\tvar delegateBody = function(events, selector, handler) {\n\n\t\tif (!window.jQuery) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (jQuery.fn.live) {\n\t\t\tjQuery(selector).live(events, handler);\n\t\t} else if (jQuery.fn.on) {\n\t\t\tjQuery('body').on(events, selector, handler);\n\t\t}\n\n\t};\n\n\tvar userCookieObject,\n\t\tuserAlreadyExists = false;\n\n\tvar trackLoginAction = function(actionName, actionAttribute, cookieName) {\n\n\t\tif (userAlreadyExists) {\n\n\t\t\tactions.send(actionName, '1', actionAttribute);\n\n\t\t\t// Cookie clearance\n\t\t\tvisitor.setData(cookieName, '', -1);\n\n\t\t}\n\n\t};\n\n\t// Checking for user already exists\n\ttry {\n\t\tuserCookieObject = JSON.parse(cookies.get('Econ.user.user') || '{}');\n\t\tuserAlreadyExists = userCookieObject.name;\n\t} catch (e) {\n\t\t// Exception processing\n\t}\n\n\n\t// Function gathering cookie for standard login attribute.\n\t// Possible cookie values: Blank, Activate, Comment, Regwall\n\tvar loginAttributeToCookie = function(definiteAttr) {\n\t\tvisitor.setData('mm_loginForm', definiteAttr, 7);\n\t};\n\n\t// Function that binds to all possible standard login events\n\tvar standardLoginAttributeDetection = function() {\n\n\t\t// Covering login forms on \"/user\" pages\n\t\tif (window.location.pathname.indexOf('/user') > -1) {\n\n\t\t\tdelegateBody('click', '#user-login-block input[type=\"submit\"], #user-login input[type=\"submit\"]', function() {\n\n\t\t\t\t// If validation was passed\n\t\t\t\tif (!$(this).closest('form').find('.ec-error-msg').length) {\n\n\t\t\t\t\tif ($('#page-title:contains(Activate digital access)').length) {\n\t\t\t\t\t\tloginAttributeToCookie('Activate');\n\t\t\t\t\t} else if ($('.short-reg-comment-preview').length) {\n\t\t\t\t\t\tloginAttributeToCookie('Comment');\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Some unpredictable cases are tracked with blank attribute\n\t\t\t\t\t\tloginAttributeToCookie('Blank');\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t});\n\n\t\t\t// Covering login forms on all other pages\n\t\t} else {\n\t\t\t// Added check on regwall click from test25 (by Andrey Cherepovskiy)\n\t\t\tdelegateBody('click', '.show-login', function() {\n\t\t\t\tif (window.mmcore &&\n\t\t\t\t\tmmcore.T25 &&\n\t\t\t\t\tmmcore.T25.isRegwallLoginClicked) {\n\t\t\t\t\tmmcore.T25.isRegwallLoginClicked = false;\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tdelegateBody('submit', 'form[action*=\"www.economist.com/user/login?\"]', function() {\n\n\t\t\t\tif (window.mmcore &&\n\t\t\t\t\tmmcore.T25 &&\n\t\t\t\t\tmmcore.T25.isRegwallLoginClicked) {\n\t\t\t\t\tloginAttributeToCookie('Regwall');\n\t\t\t\t} else {\n\t\t\t\t\tloginAttributeToCookie('Blank');\n\t\t\t\t}\n\n\t\t\t});\n\n\n\n\t\t\t// Added case by Yulis Pshinko to track Regwall attribute from regwall or subwall popups\n\t\t\tif ($.fn.ajaxComplete) {\n\t\t\t\t$(document).ajaxComplete(function(e, xhr, settings) {\n\t\t\t\t\tif (/\\/ec-homepage\\/regov\\/js|\\/js\\/ec_wallpage_js_login_form/.test(settings.url) &&\n\t\t\t\t\t\txhr.responseText.indexOf('You will be redirected shortly.') + 1) {\n\t\t\t\t\t\tloginAttributeToCookie('Regwall');\n\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t};\n\n\t// Function that sets standard login action in case 'mm_loginForm' cookie appeared\n\tvar standardLoginAction = function() {\n\n\t\tvar standardLoginAttr = visitor.getData('mm_loginForm');\n\n\t\tif (standardLoginAttr) {\n\n\t\t\tif ($('.messages-error:contains(Your account already has full digital access.)').length ||\n\t\t\t\tstandardLoginAttr === 'Blank') {\n\n\t\t\t\tstandardLoginAttr = '';\n\t\t\t}\n\n\t\t\ttrackLoginAction('Logins2', standardLoginAttr, 'mm_loginForm');\n\n\t\t}\n\n\t};\n\n\t// Function that binds to all possible social links login events\n\tvar socialLinksLoginAttributeDetection = function() {\n\n\t\tif (window.janrain &&\n\t\t\twindow.janrain.engage &&\n\t\t\twindow.janrain.engage.signin &&\n\t\t\twindow.janrain.engage.signin.loginHandler) {\n\n\t\t\tvar _socialLoginHandler = window.janrain.engage.signin.loginHandler;\n\t\t\twindow.janrain.engage.signin.loginHandler = function() {\n\t\t\t\tvisitor.setData('mm_socialLogin', 'true', 365);\n\t\t\t\t_socialLoginHandler.apply(this, arguments);\n\t\t\t};\n\n\t\t} else {\n\n\t\t\t$(document).ajaxComplete(function(event, XMLHttpRequest, ajaxOptions) {\n\t\t\t\tif (ajaxOptions.url.indexOf('/ajax/login') + 1) {\n\n\t\t\t\t\t(function waitForLoginHandler() {\n\n\t\t\t\t\t\tif (window.janrain &&\n\t\t\t\t\t\t\twindow.janrain.engage &&\n\t\t\t\t\t\t\twindow.janrain.engage.signin &&\n\t\t\t\t\t\t\twindow.janrain.engage.signin.loginHandler) {\n\n\t\t\t\t\t\t\tvar _socialLoginHandler = window.janrain.engage.signin.loginHandler;\n\t\t\t\t\t\t\twindow.janrain.engage.signin.loginHandler = function() {\n\t\t\t\t\t\t\t\tvisitor.setData('mm_socialLogin', 'true', 365);\n\t\t\t\t\t\t\t\t_socialLoginHandler.apply(this, arguments);\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tsetTimeout(waitForLoginHandler, 100);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t})();\n\n\t\t\t\t}\n\t\t\t});\n\n\t\t}\n\n\t};\n\n\t// Function that sets social links login action in case 'mm_socialLogin' cookie appeared\n\tvar socialLinksLoginAction = function() {\n\n\t\tif (visitor.getData('mm_socialLogin')) {\n\t\t\ttrackLoginAction('Logins2', '', 'mm_socialLogin');\n\t\t}\n\n\t};\n\n\t// All these checks run on every page load throughout the site\n\t// These two for standard processing\n\tstandardLoginAttributeDetection();\n\tstandardLoginAction();\n\t// These two for social links processing\n\tsocialLinksLoginAttributeDetection();\n\tsocialLinksLoginAction();\n\n});","Order":0,"HighLevelApiVersion":"1.6"},{"Name":"Cookies_WholeSite","Type":"script","Attrs":{"type":"text/javascript"},"Data":"// Cookies:\n//   mm_attrSubsByEntry (0)\n//   mm_attrSubsByRoute (0)\n//   mm_FPsent (0)\n//   mm_PW (0)\n//   mm_UpsellsAttr (0)\n\n// Client Cookies:\n//   Econ.user.user\n\n;(function($) {\n\n\tif (!$ || !$.fn) {\n\t\treturn;\n\t}\n\n\tvar restoreMMCoreCookies = function(cookiesArray) {\n\n\t\tvar cookieInfoObject;\n\t\tvar cookieName;\n\t\tvar cookieExpiration;\n\t\tvar cookieValue;\n\n\n\t\tfor (var i = 0; i < cookiesArray.length; i++) {\n\n\t\t\tcookieInfoObject = cookiesArray[i];\n\n\t\t\tcookieName = cookieInfoObject.name;\n\t\t\tcookieExpiration = cookieInfoObject.expires;\n\n\t\t\tcookieValue = cookies.get(cookieName);\n\n\t\t\tif (typeof cookieValue !== 'undefined') {\n\t\t\t\tvisitor.setData(cookieName, cookieValue, cookieExpiration);\n\t\t\t\tcookies.remove(cookieName);\n\t\t\t}\n\n\t\t}\n\n\t};\n\n\t// Restore mmcore cookies\n\trestoreMMCoreCookies([\n\t\t{\n\t\t\t'name': 'mm_FPsent',\n\t\t\t'expires': 0\n\t\t}\n\t]);\n\n\tvar delegateBody = function(events, selector, handler) {\n\n\t\tif (!window.jQuery) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (jQuery.fn.live) {\n\t\t\tjQuery(selector).live(events, handler);\n\t\t} else if (jQuery.fn.on) {\n\t\t\tjQuery('body').on(events, selector, handler);\n\t\t}\n\n\t};\n\n\tvar lh = window.location.href;\n\tvar dr = document.referrer;\n\n\tevents.domReady(function() {\n\t\t// -----------------------------------\n\t\t// For action SubsByEntry\n\t\t// -----------------------------------\n\t\tdelegateBody('click', '#overlay-wrapper a[href*=\"subscriptions.economist.com\"]', function() {\n\n\t\t\tif (lh.indexOf('www.economist.com/ec-overlay/init/emptyframe') > -1) {\n\n\t\t\t\tvisitor.setData('mm_attrSubsByEntry', 'Overlay', 0);\n\n\t\t\t} else if (lh.indexOf('www.economist.com/ec-wallpage-js/init/emptyframe') > -1) {\n\n\t\t\t\tvar isLoggedIn;\n\t\t\t\ttry {\n\t\t\t\t\tisLoggedIn = Boolean(JSON.parse(cookies.get('Econ.user.user') || '{}').name);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tisLoggedIn = false;\n\t\t\t\t}\n\n\t\t\t\tif (isLoggedIn) {\n\t\t\t\t\tvisitor.setData('mm_attrSubsByEntry', 'Subwall', 0);\n\t\t\t\t} else {\n\t\t\t\t\tvisitor.setData('mm_attrSubsByEntry', 'Regwall', 0);\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t});\n\n\t\tdelegateBody('click', '#subslug-ad a', function() {\n\t\t\tvar attr, width;\n\n\t\t\twidth = parseFloat($(this).find('img').attr('width'), 10);\n\t\t\tattr = (width > 300) ? 'PencilSlugAd' : 'SlugAd';\n\n\t\t\tvisitor.setData('mm_attrSubsByEntry', attr, 0);\n\t\t});\n\n\t\t(function() {\n\t\t\tvar flag;\n\n\t\t\tdelegateBody('mouseover', '#block-ec_ads-pencil_slug_ad', function() {\n\t\t\t\tflag = true;\n\t\t\t});\n\n\t\t\tdelegateBody('mouseout', '#block-ec_ads-pencil_slug_ad', function() {\n\t\t\t\tflag = false;\n\t\t\t});\n\n\t\t\t$(window).blur(function() {\n\t\t\t\tif (!flag) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvisitor.setData('mm_attrSubsByEntry', 'PencilSlugAd', 0);\n\t\t\t});\n\t\t}());\n\n\t\t(function() {\n\t\t\tvar flag;\n\n\t\t\tdelegateBody('mouseover', '#block-ec_ads-subscription_ad', function() {\n\t\t\t\tflag = true;\n\t\t\t});\n\n\t\t\tdelegateBody('mouseout', '#block-ec_ads-subscription_ad', function() {\n\t\t\t\tflag = false;\n\t\t\t});\n\n\t\t\t$(window).blur(function() {\n\t\t\t\tif (!flag) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvisitor.setData('mm_attrSubsByEntry', 'SlugAd', 0);\n\t\t\t});\n\t\t}());\n\n\t\tdelegateBody('click', '.mh-user-menu a:contains(\"Subscribe to\"), .mh-user-menu .show-subscribe', function() {\n\t\t\tvisitor.setData('mm_attrSubsByEntry', 'Masthead', 0);\n\t\t});\n\n\t\tdelegateBody('mouseup', '#subscription_slider #main a', function() {\n\t\t\tvisitor.setData('mm_attrSubsByEntry', 'SliderAd', 0);\n\t\t});\n\t\tdelegateBody('click', '#superhero .cover-image-container a:contains(\"Subscribe\")', function() {\n\t\t\tvisitor.setData('mm_attrSubsByEntry', 'LatestIssue', 0);\n\t\t});\n\t\tdelegateBody('click', 'aside.site-index a:contains(\"Subscribe\")', function() {\n\t\t\tvisitor.setData('mm_attrSubsByEntry', 'Footer', 0);\n\t\t});\n\t\tif (lh.indexOf('//www.economist.com/printedition') > -1 && !/economist\\.com\\/printedition\\/(covers|specialreports)/i.test(lh)) {\n\t\t\tdelegateBody('click', '#column-content a:contains(\"Subscribe\")', function() {\n\t\t\t\tvisitor.setData('mm_attrSubsByEntry', 'PrintEd', 0);\n\t\t\t});\n\t\t}\n\t\tif (lh.indexOf('//www.economist.com/digital') > -1) {\n\t\t\tdelegateBody('click', '#digitalsubscribebutton', function() {\n\t\t\t\tvisitor.setData('mm_attrSubsByEntry', 'DigEd', 0);\n\t\t\t});\n\t\t}\n\t\tif ($('meta[property=\"og:type\"][content=\"article\"]').size() > 0) {\n\t\t\tdelegateBody('click', '#block-ec_components-print_sub a[href$=\"/products/subscribe\"]', function() {\n\t\t\t\tvisitor.setData('mm_attrSubsByEntry', 'UnderArticle', 0);\n\t\t\t});\n\t\t}\n\n\t\t(function() {\n\t\t\tvar flag;\n\n\t\t\tdelegateBody('mouseover', '#paywall-slug-size-ad', function() {\n\t\t\t\tflag = true;\n\t\t\t});\n\t\t\tdelegateBody('mouseout', '#paywall-slug-size-ad', function() {\n\t\t\t\tflag = false;\n\t\t\t});\n\n\t\t\t$(window).blur(function() {\n\t\t\t\tif (!flag) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvisitor.setData('mm_attrSubsByEntry', 'Regwall', 0);\n\t\t\t});\n\t\t}());\n\n\t\t//if we are on subscription page\n\t\tif (lh.indexOf('subscriptions.economist.com') !== -1) {\n\t\t\tif (/google/.test(dr) || /bing/.test(dr) || /yahoo/.test(dr) || /ask/.test(dr)) {\n\t\t\t\tvisitor.setData('mm_attrSubsByEntry', 'ExternalSearch', 0);\n\t\t\t} else if (dr !== '' && !/economist\\.com/.test(dr.split('/')[2]) && !/subscriptions\\.economist\\.com/.test(dr.split('/')[2]) && lh.indexOf('tagsrc=/GLB/SLG/') === -1) {\n\t\t\t\tvisitor.setData('mm_attrSubsByEntry', 'ExternalOther', 0);\n\t\t\t}\n\t\t}\n\n\n\t\t// -----------------------------------\n\t\t// For action SubsByType\n\t\t// -----------------------------------\n\t\tif (lh.indexOf('//www.economist.com/user/password') > -1) {\n\t\t\t$('#user-pass').submit(function() {\n\t\t\t\tvisitor.setData('mm_FPsent', 1, 0);\n\t\t\t});\n\t\t}\n\t\tif (lh.indexOf('//www.economist.com/user/password-reset') > -1) {\n\t\t\tif (visitor.getData('mm_FPsent')) {\n\t\t\t\tvisitor.setData('mm_PW', 1, 0);\n\t\t\t}\n\t\t}\n\t\tvisitor.setData('mm_FPsent', '', -1);\n\n\n\t\t// -----------------------------------\n\t\t// For action SubsByRoute\n\t\t// -----------------------------------\n\t\tdelegateBody('click', 'a.view-subscription-link', function() {\n\t\t\tvar $welcomeHeading = $('.overlay-header h2');\n\n\t\t\tif ($welcomeHeading.text().toLowerCase().indexOf('welcome to the economist') > -1) {\n\t\t\t\tvisitor.setData('mm_attrSubsByRoute', 1, 0);\n\t\t\t}\n\t\t});\n\n\n\t\t// Clear cookies for Upsells action for not TY Pages\n\t\tif (lh.indexOf('//subscriptions.economist.com/GLB/ECOM/') === -1 ||\n\t\t\tlh.indexOf('index.php') === -1) {\n\t\t\tvisitor.setData('mm_UpsellsAttr', '', -1);\n\t\t}\n\n\n\t});\n\n}(window.jQuery));","Order":0,"HighLevelApiVersion":"1.6"},{"Name":"IM_CrazyEgg","Type":"script","Attrs":{"type":"text/javascript"},"Data":"(function() {\n    var CrazyEgg = {\n        version: '0.0.1',\n        campaignRequired: true,\n        exec: function(integration) {\n            if (integration.multipage) {\n              window.CE_SNAPSHOT_NAME = integration.campaign.getName().toUpperCase() + '=' + integration.campaignExperience.toUpperCase() + '|' + window.location.pathname;\n            } else {\n              window.CE_SNAPSHOT_NAME = integration.campaign.getName().toUpperCase() + '=' + integration.campaignExperience.toUpperCase();\n            }\n        }\n    };\n\n    // Register and export\n    if (typeof modules === 'object' && typeof modules.define === 'function') {\n        modules.require('Integrations').register('CrazyEgg', CrazyEgg);\n    }\n})();","Order":-10,"HighLevelApiVersion":"1.6"},{"Name":"Plugin_CookiesModule","Type":"script","Attrs":{"type":"text/javascript"},"Data":"// Version: 0.1.0\n\nvar getCookieValuesArrayFromRegularStorage = function(name) {\n\tvar regExp = new RegExp('(?:^|; )' + encodeURIComponent(name).replace(/([.$?*|{}()\\[\\]\\\\\\/+^])/g, '\\\\$1') + '=([^;]+)', 'g');\n\tvar valuesArray = [];\n\tvar currentMatch;\n\n\twhile ((currentMatch = regExp.exec(document.cookie)) !== null) {\n\t\tvaluesArray.push(decodeURIComponent(currentMatch[1] || ''));\n\t}\n\n\treturn valuesArray;\n};\n\nvar checkCookieInMainCDAPIStorages = function(cookieNameToFind, isInfoRequired) {\n\n\tvar readCookieStorage = function(name) {\n\t\tvar res = {},\n\t\t\twhole = '',\n\t\t\ti = 0,\n\t\t\tchunk;\n\t\twhile ((chunk = getCookieValuesArrayFromRegularStorage(name + i++)[0])) {\n\t\t\twhole += chunk;\n\t\t}\n\t\twhole = decodeURIComponent(whole);\n\t\ttry {\n\t\t\tres = JSON.parse(whole);\n\t\t} catch (e) {}\n\t\treturn res;\n\t};\n\n\tvar mmapiP = readCookieStorage('mmapi.store.p.') || {};\n\tvar mmapiS = readCookieStorage('mmapi.store.s.') || {};\n\tvar storageTypes = [mmapiP, mmapiS];\n\n\tvar mmapiSiteLevelHeader = '\\nMMAPI site level cookie found:\\n\\n';\n\tvar mmapiCmapaignLevelHeaderByName = function(campaignName) {\n\t\treturn '\\nMMAPI camapign level cookie found (' + campaignName + '):\\n\\n';\n\t};\n\tvar mmapiSystemLevelHeader = '\\nMMAPI system cookie found:\\n\\n';\n\n\tvar getExpiraion = function(expirationPlusValue) {\n\n\t\tvar millisToDaysHoursMinutes = function(millis) {\n\t\t\tvar minutesPerDay = 60 * 24;\n\t\t\tvar seconds = Math.floor(millis / 1000);\n\t\t\tvar totalMinutes = Math.floor(seconds / 60);\n\n\t\t\tvar days = Math.floor(totalMinutes / minutesPerDay);\n\t\t\ttotalMinutes -= minutesPerDay * days;\n\t\t\tvar hours = Math.floor(totalMinutes / 60);\n\t\t\ttotalMinutes -= hours * 60;\n\t\t\tvar minutes = totalMinutes;\n\n\t\t\treturn (days ? days + 'd ' : '') +\n\t\t\t\t(hours ? hours + 'h ' : '') +\n\t\t\t\t(minutes ? minutes + 'm ' : '');\n\t\t};\n\n\t\tvar expDate = Number(expirationPlusValue.split('|')[0]);\n\t\tvar expGap = expDate - (new Date()).getTime();\n\t\tvar expData = expDate ? millisToDaysHoursMinutes(expGap) : 'session';\n\n\t\treturn '\\n\\nExpires in: ' + expData + '\\n\\n';\n\n\t};\n\n\tvar getClearValue = function(expirationPlusValue) {\n\t\treturn (expirationPlusValue.match(/\\|\"([^\"]+)\"/) || [])[1];\n\t};\n\n\tvar createMessage = function(header, cookieValue) {\n\n\t\tvar message;\n\n\t\tif (isInfoRequired) {\n\t\t\tmessage = (header +\n\t\t\t\tgetClearValue(cookieValue) +\n\t\t\t\tgetExpiraion(cookieValue) +\n\t\t\t\t'\\n\\n');\n\t\t} else {\n\t\t\tmessage = getClearValue(cookieValue);\n\t\t}\n\n\t\treturn message;\n\n\t};\n\n\tvar result = '';\n\tvar cookieValue;\n\n\tfor (var l = storageTypes.length; l--;) {\n\t\tvar storageType = storageTypes[l];\n\t\tfor (var storageKey in storageType) {\n\t\t\tfor (var existingCookieName in storageType[storageKey]) {\n\t\t\t\tif (cookieNameToFind === existingCookieName) {\n\t\t\t\t\tcookieValue = storageType[storageKey][existingCookieName];\n\t\t\t\t\tif (storageKey === 'mmengine') {\n\t\t\t\t\t\tresult += createMessage(mmapiSiteLevelHeader, cookieValue);\n\t\t\t\t\t} else if (storageKey.indexOf('mmparams') > -1) {\n\t\t\t\t\t\tresult += createMessage(mmapiSystemLevelHeader, cookieValue);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult += createMessage(mmapiCmapaignLevelHeaderByName(storageKey), cookieValue);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn result;\n\n};\n\nvar checkCookieInRegularCookieStorage = function(cookieNameToFind, isInfoRequired) {\n\n\tvar cookieValuesArray = getCookieValuesArrayFromRegularStorage(cookieNameToFind);\n\tvar cookieValue;\n\tvar result = '';\n\n\tfor (var i = 0; i < cookieValuesArray.length; i++) {\n\t\tcookieValue = cookieValuesArray[i];\n\t\tif (isInfoRequired) {\n\t\t\tresult += 'Regular cookie found:\\n' + cookieValue + '\\n\\n';\n\t\t} else {\n\t\t\tresult += cookieValue + '\\n\\n';\n\t\t}\n\t}\n\n\treturn result;\n\n};\n\n\nvar getCookie = function(cookieNameToFind, isInfoRequired) {\n\n\tvar result = '';\n\n\tresult +=\n\t\tcheckCookieInMainCDAPIStorages(cookieNameToFind, isInfoRequired) +\n\t\tcheckCookieInRegularCookieStorage(cookieNameToFind, isInfoRequired);\n\n\treturn console.log(\n\t\tresult.replace(/\\n\\n$/, '') ||\n\t\t'Cookie was not found in any of accessible storages'\n\t);\n\n};\n\nvar setRegularCookie = function(name, value, expiryDays, optionsObject) {\n\n\tvar expires, domain, expiryDate;\n\n\tif (typeof expiryDays === 'number' && expiryDays) {\n\n\t\texpiryDate = new Date();\n\t\texpiryDate.setTime(expiryDate.getTime() + expiryDays * 1000 * 60 * 60 * 24);\n\n\t\t// Includes implicit path setting for proper removal\n\t\tif (expiryDays < 0) {\n\t\t\texpires = '; path=/; expires=' + expiryDate.toUTCString();\n\t\t// Simple date in future logic\n\t\t} else {\n\t\t\texpires = '; expires=' + expiryDate.toUTCString();\n\t\t}\n\n\t}\n\n\t// Options are explicitly passed\n\tif (Object.prototype.toString.call(optionsObject) === '[object Object]') {\n\t\tif (typeof optionsObject.domainName === 'string' && optionsObject.domainName) {\n\t\t\tdomain = '; domain=' + encodeURIComponent(domainName);\n\t\t}\n\t}\n\n\tdocument.cookie =\n\t\tname + '=' +\n\t\tencodeURIComponent(value) +\n\t\t(expires || '') +\n\t\t(domain || '');\n\n};\n\nvar setVisitorCookie = function() {\n\treturn visitor.setData.apply(visitor, arguments);\n};\n\nif (typeof mmsystem === 'object') {\n\tmmsystem.debug = mmsystem.debug || {};\n\tmmsystem.debug.getCookie = getCookie;\n\tmmsystem.debug.setRegularCookie = setRegularCookie;\n\tmmsystem.debug.setVisitorCookie = setVisitorCookie;\n}","Order":0,"HighLevelApiVersion":"1.6"}],"Campaigns":[{"Name":"T47_Master","Type":"Master","CSName":"","HighLevelApiVersion":"1.6","Scripts":[],"Elements":[],"Recommendations":[]},{"Name":"T49_Master","Type":"Master","CSName":"","HighLevelApiVersion":"1.6","Scripts":[],"Elements":[],"Recommendations":[]},{"Name":"T47_RegWallRedesign","Type":"ABnMVT","CSName":"","HighLevelApiVersion":"1.6","Scripts":[{"Name":"T47_ReturnVisitAct","Type":"script","Attrs":{"type":"text/javascript"},"Data":"//T47_ReturnVisit\nvar sessionItem = visitor.getData('t47-session');\nvar campaignView = visitor.getData('t47-campaign-view');\nvar COOKIE_NAME = 't47_return_visit';\n\nevents.on('T47_Generated', function () {\n    visitor.setData('t47-campaign-view', 1, 365);\n});\n\nif (!sessionItem && campaignView) {\n    var visitNum = 1 + Number(visitor.getData(COOKIE_NAME) || 0);\n    if (!isNaN(visitNum)) {\n        visitor.setData(COOKIE_NAME, visitNum, 180);\n        actions\n            .set('T47_ReturnVisit', 1, 'Visit' + visitNum)\n            .send();\n    }\n}\n\nvisitor.setData('t47-session', 1, 0);","Order":0,"HighLevelApiVersion":"1.6"},{"Name":"T47_ArticleViewAct","Type":"script","Attrs":{"type":"text/javascript"},"Data":"//T47_ArticleView\n\nvar campaignGenerated = visitor.getData('mm-t47-generated');\nfunction saveAttr(attr){\n    visitor.setData('mm-t47-articleview-attr', attr, 90);\n}\n\nfunction _trackAct(attr, condition) {\n    if(condition) {\n        actions\n            .send('T47_ArticleView', 1, attr)\n    } else {\n        saveAttr(attr);\n    }\n}\n\nevents.on('ArticleViews', function(data){\n    _trackAct(data.blocker, campaignGenerated);\n});\n\nfunction renderListener(e) {\n    if (!campaignGenerated && e.data && e.data === 'T47_ArticleView') {\n        var attr = visitor.getData('mm-t47-articleview-attr');\n        visitor.setData('mm-t47-generated', 1, 365);\n        _trackAct(attr, true);\n    }\n}\n\nif (window.addEventListener) {\n    window.addEventListener(\"message\", renderListener);\n} else {\n    // IE8\n    window.attachEvent(\"onmessage\", renderListener);\n}\n\n","Order":0,"HighLevelApiVersion":"1.6"}],"Elements":[],"Recommendations":[]},{"Name":"T44_NewNewsletter","Type":"ABnMVT","CSName":"","HighLevelApiVersion":"1.6","Scripts":[{"Name":"T44_Checker","Type":"script","Attrs":{"type":"text/javascript"},"Data":"var  returnQty = 1,\n    is_barrier = false,\n    initChecker = function T44_Checker() {\n        var isParamPresent = /cid1=cust\\/ddnew\\/|cid1=cust\\/noenew\\//.test(location.search),\n            attr = '';\n\n\n        if (window.Drupal &&\n            window.Drupal.settings &&\n            window.Drupal.settings.ec_wallpage &&\n            window.Drupal.settings.ec_wallpage.ec_wallpage_paywall_name) {\n            if (/Article Paywall Anonymous|Article Paywall Registered/.test(window.Drupal.settings.ec_wallpage.ec_wallpage_paywall_name)) {\n                is_barrier = true;\n            }\n        }\n\n        if (isParamPresent) {\n            sessionStorage.setItem('mm_t44_test_page', location.pathname);\n\n\n            if(/cid1=cust\\/ddnew\\//.test(location.search)){\n                attr = 'DD';\n            }\n\n            if(/cid1=cust\\/noenew\\//.test(location.search)){\n                attr = 'New';\n            }\n\n            if(attr){\n                visitor.setAttr('T44_Newsletter', attr);\n            }\n            renderer\n                .unhideAfter('never')\n                .hide('body, #header-container', 't44_hidden_style')\n                .getContent('T44_NewNewsletter').then(function () {\n\n                campaign.setData('mm_t44_session', '1');\n\n                campaign.setData('mm_t44_viewed_test', '1', 180);\n                renderer.runVariantJs('A_NewNewsT44').show('t44_hidden_style');\n\n            });\n        }\n        if (sessionStorage) {\n            if (sessionStorage.getItem('mm_t44_set_limit')) {\n                sessionStorage.removeItem('mm_t44_set_limit');\n                jQuery.cookie('ec_limit', 'notallow', {path: '/', expires: 7});\n            }\n            if (sessionStorage.getItem('mm_t44_set_paywall')) {\n                sessionStorage.removeItem('mm_t44_set_paywall');\n                jQuery.cookie('ec_paywall_limit', '2', {path: '/', expires: 7});\n            }\n        }\n    };\n\n//we track this Analytics again for redirect on the next page.\nif(!is_barrier) {\n    Integrations.run('Adobe Analytics', {\n        campaign: campaign,\n        redirect: true\n    });\n}\n\nif(!campaign.getData('mm_t44_session') && campaign.getData('mm_t44_viewed_test')){\n    if(campaign.getData('mm_t44_returned')){\n        returnQty = campaign.getData('mm_t44_returned');\n        returnQty++;\n    }\n    actions\n        .set('T44_ReturnVisit', 1, returnQty)\n        .send()\n        .always(function(){\n        initChecker();\n        campaign.setData('mm_t44_session', '1');\n        campaign.setData('mm_t44_returned', returnQty, 90);\n    });\n} else {\n    initChecker();\n}\n","Order":10,"HighLevelApiVersion":"1.6"}],"Elements":[],"Recommendations":[]},{"Name":"T49_BTSAugustOverlay","Type":"ABnMVT","CSName":"","HighLevelApiVersion":"1.6","Scripts":[{"Name":"T49_Checker","Type":"script","Attrs":{"type":"text/javascript"},"Data":"var isShowed = campaign.getData('mm_t49_showed');\nvar logInState = visitor.getAttr('LogInState');\nvar subscriber = visitor.getAttr('Subscriber');\nvar urlsToExclude = [\n\t'www.economist.com/events-conferences/americas/',\n\t'http://www.economist.com/events-conferences/',\n\t'http://www.economist.com/events-conferences/emea'\n];\nvar isNotExcludedUrl = !(new RegExp(urlsToExclude.join('|')).test(location.href));\nvar isGeneration = logInState === 'LoggedIn' && subscriber === 'Subscribed' && !isShowed && isNotExcludedUrl;\nvar img = new Image();\nimg.src = '//service.maxymiser.net/cm/images-eu/1/1/1/25DF93EA1006902CF735EF6344636B766E29005C6180CB9157491C528D878E91/economist-com/T49-BTSAugustOverlay/backgroung.jpg';\n\nif (isGeneration) {\n\n\twhen(function () {\n\t\treturn window.jQuery;\n\t})\n\t\t.done(function () {\n\t\t\tvar $ = window.jQuery;\n\n\t\t\t//generate test only for desktop, don't generate for desktop view on tablets and phones\n\t\t\tif ($(window).width() > 980 && $(window).height() > 680) {\n\n\t\t\t\trenderer\n\t\t\t\t\t.getContent('T49')\n\t\t\t\t\t.done(function () {\n\t\t\t\t\t\trenderer.runVariantJs();\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t});\n\n}","Order":10,"HighLevelApiVersion":"1.6"}],"Elements":[],"Recommendations":[]},{"Name":"T20_WelOv_copy","Type":"ABnMVT","CSName":"","HighLevelApiVersion":"1.6","Scripts":[{"Name":"T20_Checker","Type":"script","Attrs":{"type":"text/javascript"},"Data":"//CDAPI migration Kate Nikolaeva 12.05.16\n\nvar my_timeout = false;\nevents.domReady(function () {\n    setTimeout(function () {\n        my_timeout = true;\n    }, 5000);\n});\n\n\nrenderer\n    .hide('#overlay-wrapper .col.main, #edit-newsletters-info-editors-pick + label', 'mm-t20-hidden-content')\n    .when(function () {\n        return window.jQuery && window.jQuery('title:contains(Overlay)').length && window.jQuery('.view-subscription-link').length;\n    }, function () {\n        return my_timeout;\n    })\n    .done(function () {\n        renderer\n            .getContent('T20')\n            .done(function () {\n                setTimeout(function () {\n                    renderer\n                        .runVariantJs()\n                        .showAll();\n                }, 500);\n\n            });\n    })\n    .fail(function () {\n        renderer\n            .showAll();\n    });","Order":1,"HighLevelApiVersion":"1.6"}],"Elements":[],"Recommendations":[]}],"MRRules":[],"PersistData":[{"Name":"srv","IsGlobal":false,"Value":"nycvwcgeu01","Expiration":365},{"Name":"pd","IsGlobal":false,"Value":"1395785600|AQAAAAoBQjOP3mGzDSger4MBAEMtcFvBv9NIDwAAAEMtcFvBv9NIAAAAAP//////////AAZEaXJlY3QBsw0BAAAAAAAAAAEAAP///////////////wMAqXcAAAAVW8zjsw0Ad5UAAAWzDbMN//8BAAABAAAAAAFCTwEARq0BAAAMgQAAAPbifR+zDQD/////AbMNsw3//wEAAAEAAAAAAbdkAQAWxwEAAGtKAAAAwLoa1LMNAP////8Bsw2zDf//AQAAAQAAAAABTuQAAKIlAQAAAAAAAUU=","Expiration":365},{"Name":"mmid","IsGlobal":true,"Value":"1805660061|AQAAAAozj95hsw0AAA==","Expiration":365}],"SiteInfo":[{"Url":"economist.com","ID":550}],"SystemData":[{"Version":"1.0","RequestId":1}],"GenInfo":{"T47_Master":{"element1":"t47_regwallredesign"},"T49_Master":{"element1":"t49_btsaugustoverlay"},"T20_Master_copy":{"element1":"t20_welov_copy"}},"ServerAttributes":{},"mmcoreResponse":"mmcore.SetCookie('mmid','1805660061|AQAAAAozj95hsw0AAA==',365,1);mmcore.SetCookie('pd','1395785600|AQAAAAoBQjOP3mGzDSger4MBAEMtcFvBv9NIDwAAAEMtcFvBv9NIAAAAAP//////////AAZEaXJlY3QBsw0BAAAAAAAAAAEAAP///////////////wMAqXcAAAAVW8zjsw0Ad5UAAAWzDbMN//8BAAABAAAAAAFCTwEARq0BAAAMgQAAAPbifR+zDQD/////AbMNsw3//wEAAAEAAAAAAbdkAQAWxwEAAGtKAAAAwLoa1LMNAP////8Bsw2zDf//AQAAAQAAAAABTuQAAKIlAQAAAAAAAUU=',365);mmcore.SetCookie('srv','nycvwcgeu01',365);(function(){if(typeof(mmcore.GenInfo)!='object')mmcore.GenInfo={};mmcore.EH=function(e){var s=e.message+'\\r\\n';if(!window.mm_error)window.mm_error=s;else window.mm_error+=s;};\r\nmmcore.GenInfo['T20_Master_copy']={'element1':'t20_welov_copy'};\r\ntry{\r\nif(window.mmcore){\n//Essentials\n// Maxymiser Core - Try Catch v0.0.0 http://gitlab.maxymiser.net/gts/mmcore-try-catch/tree/master\n(function(){'use strict';mmcore.tryCatch=function(){return function b(c,d){var e=arguments.length;return function(){try{return c.apply(this,arguments)}catch(a){try{mmcore.EH(a)}finally{1<e&&b(d)(a)}}}}}()})();\n\n// Maxymiser Essentials - Deferred v0.0.1\n(function(){var n,r,e,t,u,i,o,l,c,s,a,f,p=[].slice;r=\"pending\",t=\"resolved\",e=\"rejected\",l=function(n,r){return null!=n?n.hasOwnProperty(r):void 0},c=function(n){return l(n,\"length\")&&l(n,\"callee\")},s=function(n){return l(n,\"promise\")&&\"function\"==typeof(null!=n?n.promise:void 0)},o=function(n){return c(n)?o(Array.prototype.slice.call(n)):Array.isArray(n)?n.reduce(function(n,r){return Array.isArray(r)?n.concat(o(r)):(n.push(r),n)},[]):[n]},u=function(n,r){return 0>=n?r():function(){return--n<1?r.apply(this,arguments):void 0}},a=function(n,r){return function(){var e;return e=[n].concat(Array.prototype.slice.call(arguments,0)),r.apply(this,e)}},i=function(n,r,e){var t,u,i,l,c;for(l=o(n),c=[],u=0,i=l.length;i>u;u++)t=l[u],c.push(t.call.apply(t,[e].concat(p.call(r))));return c},n=function(){var u,l,c,a,f,h,g;return g=r,a=[],f=[],h=[],c={resolved:{},rejected:{},pending:{}},this.promise=function(u){var l,y;return u=u||{},u.state=function(){return g},y=function(n,e,t){return function(){return g===r&&e.push.apply(e,o(arguments)),n()&&i(arguments,c[t]),u}},u.done=y(function(){return g===t},a,t),u.fail=y(function(){return g===e},f,e),u.progress=y(function(){return g!==r},h,r),u.always=function(){var n;return(n=u.done.apply(u,arguments)).fail.apply(n,arguments)},l=function(r,e,t){var i,o;return o=new n,i=function(n,r,e){return u[n](e?function(){var n,t;return n=1<=arguments.length?p.call(arguments,0):[],t=e.apply(null,n),s(t)?t.done(o.resolve).fail(o.reject).progress(o.notify):o[r](t)}:o[r])},i(\"done\",\"resolve\",r),i(\"fail\",\"reject\",e),i(\"progress\",\"notify\",t),o},u.pipe=l,u.then=l,null==u.promise&&(u.promise=function(){return u}),u},this.promise(this),u=this,l=function(n,e,t){return function(){return g===r?(g=n,c[n]=arguments,i(e,c[n],t),u):this}},this.resolve=l(t,a),this.reject=l(e,f),this.notify=l(r,h),this.resolveWith=function(n,r){return l(t,a,n).apply(null,r)},this.rejectWith=function(n,r){return l(e,f,n).apply(null,r)},this.notifyWith=function(n,e){return l(r,h,n).apply(null,e)},this},f=function(){var r,e,t,i,l,c,a;if(e=o(arguments),1===e.length)return s(e[0])?e[0]:(new n).resolve(e[0]).promise();if(l=new n,!e.length)return l.resolve().promise();for(i=[],t=u(e.length,function(){return l.resolve.apply(l,i)}),e.forEach(function(n,r){return s(n)?n.done(function(){var n;return n=1<=arguments.length?p.call(arguments,0):[],i[r]=n.length>1?n:n[0],t()}):(i[r]=n,t())}),c=0,a=e.length;a>c;c++)r=e[c],s(r)&&r.fail(l.reject);return l.promise()},mmcore.Deferred=function(){return new n},mmcore.when=f}).call(this);\n\n// Maxymiser Essentials - Wait for v0.1.1\n!function(){\"use strict\";mmcore.waitFor=function(e,t){var i,o;return o=mmcore.Deferred(),o.isComplete=function(){return\"pending\"!==o.state()},t=t||{},t.interval=t.interval||50,t.isNotStoppedOnDocumentReadiness=t.isNotStoppedOnDocumentReadiness||!1,t.isNotPeriodicallyChecked=t.isNotPeriodicallyChecked||!1,i=function(){o.isComplete()||(e.call(o)&&o.resolve(),o.isComplete()||(!t.isNotStoppedOnDocumentReadiness&&(mmcore.$&&mmcore.$.isReady||!mmcore.$&&\"complete\"===document.readyState)?o.reject():t.isNotPeriodicallyChecked||setTimeout(i,t.interval)))},t.hasOwnProperty(\"initializer\")&&t.initializer.call(o),i(),o.isComplete()||(t.hasOwnProperty(\"timeout\")&&!function(){var e=setTimeout(o.reject,t.timeout);o.always(function(){clearTimeout(e)})}(),t.isNotStoppedOnDocumentReadiness||mmcore.AddDocLoadHandler(t.isNotPeriodicallyChecked?o.reject:i)),o.promise()}}();\n\n// Maxymiser Core - Campaign v0.3.0 http://gitlab.maxymiser.net/gts/mmcore-campaign/tree/master\n(function(){\"use strict\";function e(e,t){var n=false;for(var r=0;r<t.length;r++){if(t[r]===e){n=true}}return n}function n(e,t,n){this.name=e;this.maxyboxNames=t;this.prefix=n;this.preventDefaultRendering();this.preventDefaultHiding()}mmcore.Campaign=n;var t=function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s<o;s++){r=!!t(e[s],s);if(n!==r){i.push(e[s])}}return i};n.prototype.preventDefaultRendering=function(){var e=mmcore._r_mbs;var t=this.maxyboxNames;var n=t.length;while(n--){e[t[n]]=1}};n.prototype.preventDefaultHiding=function(){var n=this;mmcore.HideMaxyboxes=function(r){return function(){var i=arguments;mmcore.tryCatch(function(){i=t(i,function(t){return e(t,n.maxyboxNames)})})();if(i.length){return r.apply(this,i)}}}(mmcore.HideMaxyboxes)};n.prototype.hideContent=function(e,t){var n;var r;var i;var s;var o=document.getElementsByTagName(\"html\")[0];var u=o.getAttribute(\"class\");this.hidingClass=this.prefix+\"-hidden-content\";if(u!==null&&u===\"\"){u=this.hidingClass}else{u=u+\" \"+this.hidingClass}o.setAttribute(\"class\",u);if(arguments.length<2){t=\"left: -33554430px; position: absolute; top: -33554430px;\"}n=this.hidingClass;s=e.split(\",\");i=s.length;r=\"\";while(i--){r+=\".\"+n+\" \"+s[i]+\"{\"+t+\"}\"}mmcore.AttachStyle(r)};n.prototype.showContent=function(){if(this.hasOwnProperty(\"hidingClass\")){var e=document.getElementsByTagName(\"html\")[0];var t=e.getAttribute(\"class\");if(t!==null&&t!==\"\"){t=t.replace(this.hidingClass,\"\");e.setAttribute(\"class\",t)}}};n.prototype.getExperience=function(){return mmcore.GenInfo.hasOwnProperty(this.name)?mmcore.GenInfo[this.name]:null};n.prototype.hasNonDefaultExperience=function(){var e,t;e=this.getExperience();if(!e){return false}t=false;for(var n in e){if(e.hasOwnProperty(n)&&e[n]!==\"Default\"){t=true;return false}}return t};n.prototype.hasMaxybox=function(){return this.hasNonDefaultExperience()};n.prototype.renderMaxyboxes=function(){var n;var r;var i;r=this.maxyboxNames;if(arguments.length){r=t(arguments,function(t){return!e(t,r)})}n=this;for(i in mmcore._renderers){if(e(i,r)&&typeof mmcore._renderers[i]===\"function\"){mmcore._renderers[i].call(n)}}}})();\n\n// Maxymiser Essentials - Mediator 0.2.0\n(function(){\"use strict\";function e(){var e=function(){return((1+Math.random())*65536|0).toString(16).substring(1)};return e()+e()+\"-\"+e()+\"-\"+e()+\"-\"+e()+\"-\"+e()+e()+e()}function t(n,r,i){if(!(this instanceof t)){return new t(n,r,i)}this.id=e();this.fn=n;this.options=r;this.context=i;this.channel=null}function n(e,t){if(!(this instanceof n)){return new n(e)}this.namespace=e||\"\";this._subscribers=[];this._channels=[];this._parent=t;this.stopped=false}function r(){if(!(this instanceof r)){return new r}this._channels=new n(\"\")}t.prototype={update:function(e){if(e){this.fn=e.fn||this.fn;this.context=e.context||this.context;this.options=e.options||this.options;if(this.channel&&this.options&&this.options.priority!==undefined){this.channel.setPriority(this.id,this.options.priority)}}}};n.prototype={addSubscriber:function(e,n,r){var i=new t(e,n,r);if(n&&n.priority!==undefined){n.priority=n.priority>>0;if(n.priority<0){n.priority=0}if(n.priority>=this._subscribers.length){n.priority=this._subscribers.length-1}this._subscribers.splice(n.priority,0,i)}else{this._subscribers.push(i)}i.channel=this;return i},stopPropagation:function(){this.stopped=true},getSubscriber:function(e){var t=0,n=this._subscribers.length;for(t,n;t<n;t++){if(this._subscribers[t].id===e||this._subscribers[t].fn===e){return this._subscribers[t]}}},setPriority:function(e,t){var n=0,r=0,i,s,o,u;for(r=0,u=this._subscribers.length;r<u;r++){if(this._subscribers[r].id===e||this._subscribers[r].fn===e){break}n++}i=this._subscribers[n];s=this._subscribers.slice(0,n);o=this._subscribers.slice(n+1);this._subscribers=s.concat(o);this._subscribers.splice(t,0,i)},addChannel:function(e){this._channels[e]=new n((this.namespace?this.namespace+\":\":\"\")+e,this)},hasChannel:function(e){return this._channels.hasOwnProperty(e)},returnChannel:function(e){return this._channels[e]},removeSubscriber:function(e){var t=this._subscribers.length-1;if(!e){this._subscribers=[];return}for(t;t>=0;t--){if(this._subscribers[t].fn===e||this._subscribers[t].id===e){this._subscribers[t].channel=null;this._subscribers.splice(t,1)}}},publish:function(e){var t=0,n=this._subscribers.length,r=false,i,s,o,u;for(t,n;t<n;t++){r=false;if(!this.stopped){i=this._subscribers[t];if(i.options!==undefined&&typeof i.options.predicate===\"function\"){if(i.options.predicate.apply(i.context,e)){i.fn.apply(i.context,e);r=true}}else{o=this._subscribers.length;i.fn.apply(i.context,e);u=this._subscribers.length;n=u;if(u===o-1){t--}r=true}}if(r&&i.options&&i.options!==undefined){i.options.calls--;if(i.options.calls<1){this.removeSubscriber(i.id);n--;t--}}}if(this._parent){this._parent.publish(e)}this.stopped=false}};r.prototype={getChannel:function(e){var t=this._channels,n=e.split(\":\"),r=0,i=n.length;if(e===\"\"){return t}if(n.length>0){for(r,i;r<i;r++){if(!t.hasChannel(n[r])){t.addChannel(n[r])}t=t.returnChannel(n[r])}}return t},subscribe:function(e,t,n,r){var i=this.getChannel(e);n=n||{};r=r||{};return i.addSubscriber(t,n,r)},once:function(e,t,n,r){n=n||{};n.calls=1;return this.subscribe(e,t,n,r)},getSubscriber:function(e,t){return this.getChannel(t||\"\").getSubscriber(e)},remove:function(e,t){this.getChannel(e).removeSubscriber(t)},publish:function(e){var t=Array.prototype.slice.call(arguments,1),n=this.getChannel(e);t.push(n);this.getChannel(e).publish(t)}};r.prototype.on=r.prototype.subscribe;r.prototype.bind=r.prototype.subscribe;r.prototype.emit=r.prototype.publish;r.prototype.trigger=r.prototype.publish;r.prototype.off=r.prototype.remove;r.Channel=n;r.Subscriber=t;mmcore.mediator=new r})();\n\n\n// Media\n\n// Maxymiser Essentials - Request (Media team's fork) v0.3.0\n!function(){\"use strict\";var d,a=\"mmevents\",b=1e3,c=6*b,e=function(){d=mmcore.Deferred(),mmcore.request.promise=d.promise()};mmcore.request=function(b,f,g){var h=d;return e(),arguments.length||(b=a),mmcore.SetPageID(b),mmcore._async=!f,mmcore.CGRequest(h.resolve),setTimeout(mmcore.tryCatch(h.reject),g||c),h.promise()},e()}();\n\n// Maxymiser Essentials - GenInfoChanged event (Media team's fork) v0.0.0\n// Dependency: mmcore.mediator\n(function(){if(typeof window.JSON!=\"object\"){mmcore.EH(new Error(\"Plugin_Essentials.js says: 'GenInfoChanged' event won't fire, reason: native JSON object is not supported by browser\"));return}var e=function(){var e=mmcore.GenInfo,t=mmcore.GIStorage||{},n=[];mmcore.GIStorage=JSON.parse(JSON.stringify(e));for(var r in e){if(e.hasOwnProperty(r)){if(t[r]){for(var i in e[r]){if(e[r].hasOwnProperty(i)){if(t[r][i]!==e[r][i]){n.push(r);break}}}}else{n.push(r)}}}if(n.length){mmcore.mediator.trigger(\"GenInfoChanged\",n)}};mmcore.CGRequest=function(t){return function(n){n=n||function(){};return t.call(this,function(){e();n()})}}(mmcore.CGRequest);e()})();\n}\r\n}catch(err){mmcore.EH(err);}\r\ntry{\r\nif(window.mmcore){\nmmcore._IntegrationFactory=mmcore._IntegrationFactory||function(e){var t=mmcore._IntegrationFactory,n=function(e){mmcore.EH({message:\"[\"+(r?r:\"Integration\")+\"] \"+e})};if(!e||!e.name)return n(\"Missing build parameters.\");var r=e.name,i=e.validate,s=e.check,o=e.timeout||1e4,u=e.interval||50,a=e.exec,f=e.defaults||{};if(!r)return n(\"Invalid integration build, name is required.\");if(!a)return n(\"Invalid integration build, exec is required.\");t._version=\"1.0.7\";if(t[r])return t[r];var l=function(r){r=typeof r==\"object\"?r:{};for(var l in this.defaults)r.hasOwnProperty(l)||(r[l]=this.defaults[l]);for(var c in f)r.hasOwnProperty(c)||(r[c]=f[c]);r._verifyVersion=function(e){var n=t._version.match(/\\d+/g),r=e.match(/\\d+/g),i=Math.max(n.length,r.length);for(var s=0;s<i;s++)if(+n[s]<+r[s])return!1;return!0};if(r.campaign){var h=mmcore.GenInfo[r.campaign];if(r.redirect)if(h){for(var p in h);if(h[p].toLowerCase()!=\"default\")return mmcore.SetCookie(\"mm_redir_\"+r.campaign,JSON.stringify(h),0,1)}else try{h=JSON.parse(mmcore.GetCookie(\"mm_redir_\"+r.campaign,1))}catch(d){}if(!h)return n(\"Campaign not found: \"+r.campaign);var v=[],m=[],g=[];for(var y in h){var b=h[y];m.push(y),g.push(b),v.push(y+\":\"+b)}r.campaignInfo=r.campaign+\"=\"+v.join(\"|\"),r.elements=m,r.variants=g}r.isProduction=function(){var e=[\"cfgid\",\"opc.enabled\",\"opc.vis\",\"pt.enabled\",\"un\"];for(var t=0;t<e.length;t++)if(!!mmcore.GetParam(e[t]))return!1;return!0}();if(i){var w=i.call(e,r);if(w!==!0)return n(\"Data validation failed: \"+w)}var E=function(){if(r.modifiers)for(var t in r.modifiers)r.modifiers[t].call(this,r,e);var i=a.call(e,r);i!==!0&&n(\"Execution failed: \"+i)};if(s)if(s.call(e,r))E();else{var S=!1,x=setInterval(function(){s.call(e,r)&&(clearInterval(x),S=!0,E())},r.interval||u);mmcore.AddDocLoadHandler(function(){setTimeout(function(){if(S)return;clearInterval(x);var e=\"Integration timed out. Checks not passed.\";\"function\"==typeof r.fail&&r.fail(e),n(e)},r.timeout||o)})}else E()};return l._version=e._version,l.defaults={},mmcore._IntegrationFactory[r]=l,l},mmcore.Integrate=function(e,t){var n=mmcore._IntegrationFactory[e];n?n.call(n,t):mmcore.EH({message:\"Integration not installed: \"+e})}\n}\r\n}catch(err){mmcore.EH(err);}\r\ntry{\r\nif(window.mmcore){\n// Maxymiser Core - Attach Style v0.0.0 http://gitlab.maxymiser.net/gts/mmcore-attach-style/tree/master\n(function(){'use strict';mmcore.AttachStyle=function(){var c={STYLE_ID:\"mm-style\",createStyle:function(){var b=document.createElement(\"style\");b.type=\"text/css\";return b},appendCssToStyle:function(){var b,a;\"styleSheet\"in c.createStyle()?(b=function(a){return a.styleSheet.cssText},a=function(a,b){a.styleSheet.cssText=b}):(b=function(a){return a.innerHTML},a=function(a,b){a.innerHTML=b});return(c.appendCssToStyle=function(c,d){a(d,b(d)+c)}).apply(this,arguments)}};return function(b){var a=document.getElementById(c.STYLE_ID);a||(a=c.createStyle(),a.id=c.STYLE_ID,function(){this.parentNode.insertBefore(a,this)}.call(document.getElementsByTagName(\"head\")[0].lastChild));c.appendCssToStyle(b,a)}}()})();\n}\r\n}catch(err){mmcore.EH(err);}\r\ntry{\r\n// DEPRECATED\n// PLEASE REMOVE AFTER LAST DEPENDENCY EXPIRE:\n// T29\nif(window.mmcore){\n/**\n * Refresh plugin.\n * Exports mmcore.oncePerPageLoad() function.\n *\n * Execute function once per page load. Rule user left page defined by timeout in milliseconds.\n *\n * @author   gts media team\n * @version  0.1.0\n *\n * @param verbalID {String}   Verbal identifier to store our function as done\n * @param callback {Function} Function to execute once per page load\n * @param timeout  {Number}   Timeout in milliseconds (5000 per default)\n *\n * Example:\n *     mmcore.oncePerPageLoad('say1', function () {say(1)});\n *     mmcore.oncePerPageLoad('say2', function () {say(2)}, 7000);\n */\n\n(function () {\n\t/* jshint strict: false */\n\t/* jshint maxlen: false */\n\tvar mmcore = window.mmcore,\n\t\tSECOND = 1000;\n\n\tvar getCurrentTimestamp = function () {\n\t\treturn new Date().getTime();\n\t};\n\n\tvar manager = {\n\t\t_stack: [],\n\t\t_preventeds: {},\n\n\t\t_timestamp: getCurrentTimestamp(),\n\t\t_timeout: 5 * SECOND,\n\t\t_oldOnunloadFn: window.onunload,\n\t\t_isLocalStorageAvailable: false,\n\n\t\t_storage: window.localStorage,\n\t\t_keyName: 'mm_prevent_f5',\n\n\t\tgetCurrentTimestamp: getCurrentTimestamp,\n\n\t\t// Main API.\n\t\toncePerPageLoad: function (verbalID, callback, timeout) {\n\t\t\tvar item;\n\n\t\t\tverbalID = 'fn_' + verbalID;\n\t\t\ttimeout = timeout || 0;\n\n\t\t\tif (!manager._preventeds[verbalID]) {\n\t\t\t\tcallback.call(null);\n\t\t\t}\n\n\t\t\titem = manager._constructItem(verbalID, timeout);\n\n\t\t\tmanager._stack.push(item);\n\n\t\t\treturn manager;\n\t\t},\n\n\t\tinitialize: function () {\n\t\t\tmanager._isLocalStorageAvailable = manager.testLocalStorage();\n\n\t\t\tmanager\n\t\t\t\t._fillPreventeds()\n\t\t\t\t._cleanExpired()\n\t\t\t\t._bindEvents();\n\t\t},\n\n\t\ttestLocalStorage: function () {\n\t\t\tvar key = 'mm_test';\n\n\t\t\ttry {\n\t\t\t\tmanager._storage.setItem(key, key);\n\t\t\t\tmanager._storage.removeItem(key);\n\t\t\t\treturn true;\n\t\t\t} catch (error) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\tisEmptyObj: function (obj) {\n\t\t\tfor (var prop in obj) {\n\t\t\t\tif (obj.hasOwnProperty(prop)) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\n\t\t_fillPreventeds: function () {\n\t\t\ttry {\n\t\t\t\tif (manager._isLocalStorageAvailable) {\n\t\t\t\t\tmanager._preventeds = JSON.parse(manager._storage.getItem(manager._keyName)) || {};\n\t\t\t\t} else {\n\t\t\t\t\tmanager._preventeds = JSON.parse(mmcore.GetCookie(manager._keyName, true)) || {};\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tmanager._preventeds = {};\n\t\t\t}\n\n\t\t\treturn manager;\n\t\t},\n\n\t\t_bindEvents: function () {\n\t\t\twindow.onunload = function () {\n\t\t\t\tvar splitten;\n\n\t\t\t\tfor (var i = 0, len = manager._stack.length; i < len; i++) {\n\t\t\t\t\tsplitten = manager._stack[i].split(':');\n\t\t\t\t\tsplitten[1] = parseInt(splitten[1], 10);\n\n\t\t\t\t\tif (splitten[1]) {\n\t\t\t\t\t\tmanager._preventeds[splitten[0]] = {\n\t\t\t\t\t\t\ttimestamp: manager.getCurrentTimestamp(),\n\t\t\t\t\t\t\ttimeout: splitten[1]\n\t\t\t\t\t\t};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmanager._preventeds[splitten[0]] = {\n\t\t\t\t\t\t\ttimestamp: manager.getCurrentTimestamp()\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (manager.isEmptyObj(manager._preventeds)) {\n\t\t\t\t\tif (manager._isLocalStorageAvailable) {\n\t\t\t\t\t\tmanager._storage.removeItem(manager._keyName);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmmcore.SetCookie(manager._keyName, '', -1, true);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (manager._isLocalStorageAvailable) {\n\t\t\t\t\t\tmanager._storage.setItem(manager._keyName, JSON.stringify(manager._preventeds));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmmcore.SetCookie(manager._keyName, JSON.stringify(manager._preventeds), 0, true);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (manager._oldOnunloadFn) {\n\t\t\t\t\treturn manager._oldOnunloadFn.apply(this, arguments);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\treturn manager;\n\t\t},\n\n\t\t_cleanExpired: function () {\n\t\t\tvar isExpired = false,\n\t\t\t\ttimeout = 0;\n\n\t\t\tfor (var prop in manager._preventeds) {\n\t\t\t\tif (manager._preventeds.hasOwnProperty(prop)) {\n\t\t\t\t\ttimeout = manager._preventeds[prop].timeout || manager._timeout;\n\t\t\t\t\tisExpired = Boolean((+ manager._preventeds[prop].timestamp + timeout < manager._timestamp));\n\n\t\t\t\t\tif (isExpired) {\n\t\t\t\t\t\tdelete manager._preventeds[prop];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn manager;\n\t\t},\n\n\t\t_constructItem: function (id, timestamp) {\n\t\t\treturn (id + ':' + timestamp);\n\t\t},\n\n\t\t// Debug.\n\t\t_cleanRefreshManager: function () {\n\t\t\tmanager._preventeds = {};\n\t\t\tmanager._stack = [];\n\n\t\t\tif (manager._isLocalStorageAvailable) {\n\t\t\t\tmanager._storage.removeItem(manager._keyName);\n\t\t\t} else {\n\t\t\t\tmmcore.SetCookie(manager._keyName, '', -1, true);\n\t\t\t}\n\t\t}\n\t};\n\n\ttry {\n\t\tmanager.initialize();\n\n\t\tmmcore.oncePerPageLoad = manager.oncePerPageLoad;\n\n\t\t// Export this only for debugging.\n\t\tmmcore._cleanRefreshManager = manager._cleanRefreshManager;\n\t} catch (error) {\n\t\t// Anyway execute callback if something broken.\n\t\tmmcore.oncePerPageLoad = function (verbalID, callback) {\n\t\t\tcallback.call(null);\n\t\t\tmmcore.EH(new Error('Plugin_Refresh.js: something went wrong on plugin initialization. Executed possible prevented action. Possible reason: ' + error));\n\t\t};\n\t}\n}());\n}\r\n}catch(err){mmcore.EH(err);}\r\ntry{\r\nif(window.mmcore){\nmmcore._IntegrationFactory({\n    name: 'CrazyEgg',\n    defaults: {\n        modifiers: {\n            Persist: function(data, buildParams){\n                if(data.persist && data.persistentCount > 0){\n                    try {\n                        var storedList = JSON.parse(mmcore.GetCookie('mm_iPersist', 1) || '[]');\n                    } catch (e) {\n                        var storedList = [];\n                    }\n                    var searchFor = data.campaign + '=';\n                    for(var i = storedList.length; i--;){\n                        if(!storedList[i].indexOf(searchFor))\n                            storedList.splice(i, 1);\n                    }\n                    storedList.push(data.campaignInfo);\n                    while(storedList.length > data.persistentCount)\n                        storedList.shift();\n\n                    mmcore.SetCookie('mm_iPersist', JSON.stringify(storedList), 365, 1);\n                    data.campaignInfo = storedList.join('&');\n                }\n            }\n        },\n        persistentCount: 10\n    },\n    validate: function(data){  \n        if(!data.campaign)\n            return 'No campaign.';\n\n        return true;  \n    },\n    check: function(data){  \n        return typeof window.jQuery === 'function';\n    },  \n    exec: function(data){\n        window.CE_SNAPSHOT_NAME = data.campaignInfo;\n\n        if(data.callback) data.callback();\n        return true;\n    },\n    _version: '1.0.7'\n});\n}\r\n}catch(err){mmcore.EH(err);}\r\ntry{\r\nif(window.mmcore){\n;(function () {\n\n\t(function (config) {\n\n\t\tvar trackOmniture = function(campaignsNamesArray, customFilterFunction) {\n\n\t\t\tvar campaignDataObject = {},\n\t\t\t\tomnitureDataObject = {},\n\t\t\t\tcampaignName = '',\n\t\t\t\tcampaignInfoArray = [],\n\t\t\t\tallCampaignsInfoString = '',\n\t\t\t\ti = 0, element,\n\t\t\t\tl = campaignsNamesArray.length;\n\n\t\t\t// Gathering string from all campaigns present\n\t\t\tfor (; i < l; i++) {\n\n\t\t\t\tcampaignInfoArray = [];\n\t\t\t\tcampaignName = campaignsNamesArray[i];\n\t\t\t\tcampaignDataObject = mmcore.GenInfo[campaignName];\n\n\t\t\t\tif (customFilterFunction && !customFilterFunction(campaignName)) {\n\t\t\t\t\tcontinue\n\t\t\t\t}\n\n\t\t\t\t// Name of campaign comes first\n\t\t\t\tcampaignInfoArray.push(campaignName);\n\n\t\t\t\tfor (element in campaignDataObject) {\n\t\t\t\t\tif (campaignDataObject.hasOwnProperty(element)) {\n\t\t\t\t\t\t// Variants generated come second\n\t\t\t\t\t\tcampaignInfoArray.push(campaignDataObject[element].toLowerCase())\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tallCampaignsInfoString += ((allCampaignsInfoString ? ';' : '') + campaignInfoArray.join('|'))\n\n\t\t\t}\n\n\n\t\t\tif (allCampaignsInfoString) {\n\n\t\t\t\tomnitureDataObject[config.eVar] = allCampaignsInfoString;\n\t\t\t\tomnitureDataObject[config.prop] = allCampaignsInfoString;\n\n\t\t\t\t;(function waitSgi() {\n\n\t\t\t\t\tvar omnitureData;\n\n\t\t\t\t\tif (!window.s_gi) {\n\n\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\twaitSgi()\n\t\t\t\t\t\t}, 500);\n\n\t\t\t\t\t\treturn\n\n\t\t\t\t\t}\n\n\t\t\t\t\tomnitureData = s_gi(config.clientID);\n\t\t\t\t\tomnitureData[config.eVar] = allCampaignsInfoString;\n\t\t\t\t\tomnitureData[config.prop] = allCampaignsInfoString;\n\t\t\t\t\tomnitureData.linkTrackVars = config.prop + ',' + config.eVar;\n\n\t\t\t\t\tomnitureData.tl(true, 'o', omnitureDataObject);\n\n\t\t\t\t}());\n\t\t\t\t\n\t\t\t}\n\t\t}\n\n\t\tmmcore.AddDocLoadHandler(function() {\n\t\t\tsetTimeout(function() {\n\n\t\t\t\tvar genInfo = mmcore.GenInfo,\n\t\t\t\t\ttestName,\n\t\t\t\t\tcampaignsNamesArray = [];\n\n\t\t\t\t// Custom exclusive rules definition\n\t\t\t\tvar customFilterFunction = function(campaignName) {\n\t\t\t\t\treturn !campaignName.match(/master/i) && !campaignName.match(/^T5\\D/i)\n\t\t\t\t};\n\n\t\t\t\tfor (testName in genInfo) {\n\t\t\t\t\tif (genInfo.hasOwnProperty(testName)) {\n\t\t\t\t\t\tcampaignsNamesArray.push(testName)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// First regular Omniture request\n\t\t\t\ttrackOmniture(campaignsNamesArray, customFilterFunction);\n\n\t\t\t\t// Further optional requests, fire for new campaigns that appear only\n\t\t\t\tmmcore.mediator.on('GenInfoChanged', function(data) {\n\t\t\t\t\ttrackOmniture(data, customFilterFunction)\n\t\t\t\t})\n\n\n\t\t\t}, 1000)\n\t\t});\n\n\t}({\n\t\tclientID: 'economistcomprod',\n\t\teVar: 'eVar51',\n\t\tprop: 'prop51'\n\t}));\n\n}());\n}\r\n}catch(err){mmcore.EH(err);}\r\nif(typeof mmcore._callback=='object'&&typeof mmcore._callback[1]=='function'){try{mmcore._callback[1]();}catch(err){mmcore.EH(err);}\r\nfinally{mmcore._callback[1]=null;}}\r\n})();","Iteration":"2PmrxTvkAQLm6YRaZNErPLx0DDM","Packages":["mmpackage-1.6.js"]});