{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///vam.js","webpack:///webpack/bootstrap f15fc0eeba85265dfbcd","webpack:///./src/constants.js","webpack:///./src/logger.js","webpack:///./src/application.js","webpack:///./src/index.js","webpack:///./src/check-dependencies.js","webpack:///./src/legacy/dfp-pixel.js","webpack:///./src/mixins/evented.js","webpack:///./src/mixins/deferred.js","webpack:///./src/mixins/globalized.js","webpack:///./src/mixins/user.js","webpack:///./src/advertising.js","webpack:///./src/header-bidding/provider-manager.js","webpack:///./src/header-bidding/providers/amazon.js","webpack:///./src/header-bidding/providers/amazon-script.js","webpack:///./src/header-bidding/providers/prebid.js","webpack:///./src/header-bidding/config-manager.js","webpack:///./src/utils.js","webpack:///./src/mixins/mixin.js","webpack:///./package.json","webpack:///./src/config-manager.js"],"names":["root","factory","exports","module","define","amd","self","this","modules","__webpack_require__","moduleId","installedModules","i","l","call","parentJsonpFunction","window","chunkIds","moreModules","executeModules","chunkId","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","shift","4","e","onScriptComplete","script","onerror","onload","clearTimeout","timeout","chunk","Error","undefined","installedChunkData","Promise","resolve","promise","reject","head","document","getElementsByTagName","createElement","type","charset","async","nc","setAttribute","src","p","0","setTimeout","appendChild","m","c","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","oe","err","console","error","s","value","NAMESPACE","PROMISES_PROPERTY","DEFAULT_TIMEOUT","VOCUSER_COOKIE","PAYWALL_COOKIE","SHOW_LOGS","location","search","indexOf","DEFAULT_LOG_TEMPLATE","CONFIG_NAMESPACE","EDITIONS_NAMESPACE","GPT_ID_VOCENTO","GPT_READY","GPT_TIMEOUT","TIMEOUT_POSICIONES_ESTANDAR","ALTOS_MINIMOS_DISPOSITIVOS","mobile","tablet","desktop","POSITION_FLUID","SLOT_RENDERED","SLOT_EMPTY","SLOT_VIEWABLE","SLOT_INACTIVE","DEFAULTS","hideNoAds","refresh","responsive","CAPTURADOR_WS","MCRYPT_KEY","VAM_CSS_URL","JSON_GDP2_0","JSON_GDP2_1","JSON_GDP2_2","NOMBRE_FORMATO_JSON","GPT_URL","HEADER_BIDDING_READY","PREBID_URL","DEFAULT_PREBID_LOAD_TIMEOUT","AMAZON_URL","DEFAULT_AMAZON_LOAD_TIMEOUT","AMAZON_CONFIG","pubID","adServer","OLD_PREFIX","NEW_SUFFIX","1","showLog","_console","_constants","log","apply","concat","Array","slice","arguments","showWarn","_console2","warn","showError","_console3","2","_interopRequireDefault","obj","default","_evented","_evented2","_deferred","_deferred2","_user","_user2","_mixin","_scripts","_hasOwnProperty","Application","load","url","key","options","split","text","RSVP","extend","21","_init","configGDPMedio","configGDP","configManager","voontoApp","Voonto","getInstance","_initialized","_configManager2","_advertising2","init","_printAds","on","_reload","_refresh","_application2","context$","$","each","printAds","event","config","data","lookup","forcedOas","OAS","_forceNewOas","media","_logger","params","JSON","parse","newOas","adunit","replace","RegExp","toString","portada","VERSION","_package","_package2","_application","_advertising","_configManager","_utils","_window","Vocento","Publicidad","jQuery","datos","getOasSitepage","getSizesGoogle","getValueUser","ready","isEmpty","version","22","_typeof","Symbol","iterator","constructor","Cookies","special","inview","23","_ord","Math","random","_onVocUserReady","gigyaux","getUserType","UserTypes","ANONYMOUS","append","when","VOCUSER_DATA","then","userData","gender","age","responseGetUserInfo","user","_onVocUserData","gigya_event","profile","Genders","FEM","MAS","freeze","gigyaUX","24","Evented","preventExtensions","_window$$","one","_window$$2","off","_window$$3","trigger","_window$$4","25","_slicedToArray","sliceIterator","arr","_arr","_n","_d","_e","_s","_i","next","done","isArray","TypeError","_globalized","_globalized2","_defers","Deferred","whenUntil","promiseNS","_this","time","owner","global","_promiseNS$split","_promiseNS$split2","createGlobal","defer","promised","_promiseNS$split3","_promiseNS$split4","26","Globalized","namespace","nso","forEach","prop","reduce","that","27","_jsonParse","vocUid","result","e1","e2","UserType","REGISTERED","SUBSCRIBER","TRIAL","User","userType","paywall","pwUserType","cookie","decodeURIComponent","pop","uid","28","_classCallCheck","instance","Constructor","_defineSlot","scriptText","legacyCmvkey","insertedPositionkey","hideText","targetingText","size","idAds","targetingsTags","deviceTypeTargeting","decryptedURL","pattern","isValid","decodedURLTargetings","chunksURLTargetings","topics","mappingObj","sizeMapping","defineSizeMapping","position","getIdDiv","tags","globalTargetings","keys","deviceType","valueUserType","_configManager5","href","exec","chunck","pair","keyChunk","valueChunk","_getTopics","enableTpag","pageType","outOfPage","_getSizeMapping","definition","defineSlot","_getNombreSlot","_getClavePosicionInsertada","_insertedPositions","customcmd","_executeDefineSlot","eval","_notDisplayedSlots","_display","index","idDiv","googletag","display","singleRequest","splice","mappingName","finalDefinition","addSize","viewportSize","responsiveSizes","singleSize","j","_displayStandarQueued","_standardDelayed","Advertising","_displayPrioritized","prioritizedPositions","_pintaListaPosiciones","listaPositions","sonPosicionesPriorizadas","container$","posCuyoDivExiste","existePosEnConfigGDPMedio","isActive","normalizaParams","stringify","_providerManager2","setTargetings","legacyParams","_displayDelayed","isInView","innerHTML","_getAdGoogle","esPosPriorizada","activo","eventParams","tParams","hasPreevent","_getEventsPosition","pre_callback","pre_event","post_callback","post_event","_pintarPosicionRefresh","tipoDispositivoAux","positionEvents","dynamicId","dynamic","dynamicSuffix","pubads","_infoSlotRender","isSlotRendered","width","height","dimension","arrayObj","numSlots","numTopics","numOas","max","empty","show","addClass","html","_infoSlotFormateaDimensiones","_isLocalPosition","_infoSlotRenderSlots","_infoSlotRenderTopics","_infoSlotRenderOAS","_applyFilter","dimensionsArray","resolution","notRepeatedDimensions","Set","dimen","filtered","substring","add","topic","forzarEnableTopics","enableTopics","voc_top","includes","_capturadorExistsPreview","capturadorDataPreview","_capturadorSetPreview","previewJSON","preview","div","creatividad","previewUrl","_createClass","defineProperties","target","props","descriptor","writable","protoProps","staticProps","_providerManager","_configManager4","_gptInitialized","_completadasPriorizadas","reload","kruxSegments","kruxUser","checkConfigFromURL","processConfig","cargaLibreriaGPT","collapseEmptyDivs","enableKrux","setTargeting","Krux","vocento","segments","enableSingleRequest","syncRendering","enableSyncRendering","enableServices","checkExceptions","addEventListener","ev","divId","paramsSlot","slot","getSlotElementId","getTargeting","infoSlot","removePrioritizedPosition","thereArePrioritizedPositions","isPrioritized","find","parameters","prioritized","delayed","hide","serverType","isDelayed","_configManager3","29","_loadActivesGateways","_gatewaysAdded","GATEWAYS","gateway","NAME","getLoadPromise","_amazon","_amazon2","_prebid","_prebid2","_gatewaysPromises","cmd","all","catch","reason","30","_loadLibrary","REASONS","ERROR_LOAD_LIBRARY","_setConfig","apstag","ERROR_INIT_CONFIG","_fetchBid","bidConfig","slots","fetchBids","bids","TIMEOUT_REACHED_FETCH_BIDS","targetingKeys","_adserverRequestResponse","TIMEOUT_REACHED_GLOBAL","_ref","hbAmazon","_ref2","setDisplayBids","31","apstagGlobalName","queue","r","_Q","32","hbPrebid","biddersConfig","pbjsConfig","debug","enableSendAllBids","priceGranularity","pbjs","bidderSettings","_fetchBiddersSettings","setConfig","getConfig","adUnits","EMPTY_ADUNITS","que","addAdUnits","requestBids","bidsBackHandler","biddersResponse","getAdserverTargeting","bidderName","bidCpmAdjustment","bidCpm","bid","percent","bidderCode","setTargetingForGPTAsync","33","_processPrebidConfig","newConfig","biddersDisabled","headerBidding","disabled","map","current","trim","newBids","code","bidder","_processAmazonConfig","slotID","slotName","_getAmazonSlotName","getParameterByName","paramName","regExp","results","file","_files","rel","gads","useSSL","node","protocol","parentNode","insertBefore","func","args","argument","pos","endsWith","str","suffix","startsWith","needle","7","destination","source","79","8","description","main","scripts","test","tdd","start","build","prebid","contributors","license","devDependencies","babel-core","babel-eslint","babel-loader","babel-plugin-syntax-dynamic-import","babel-polyfill","babel-preset-env","chai","chalk","clean-webpack-plugin","copy-webpack-plugin","css-loader","eslint","eslint-config-airbnb-base","eslint-plugin-import","extract-text-webpack-plugin","file-loader","html-loader","html-webpack-plugin","json-loader","mocha","mocha-loader","mocha-phantomjs","mocha-webpack","nyc","style-loader","webpack","webpack-dev-server","webpack-merge","webpack-shell-plugin","dependencies","jquery-inview","js-cookie","prebid.js","rijndael-js","rsvp","9","_getTipoDispositivo","min","screenWidth","esResponsive","parseInt","innerWidth","resolucionMaxima","resolucionMinima","toLowerCase","tipoDispositivo","_getMedio","medio","_getTipoPagina","_getTipoPaginaABC","_getTipoPaginaMujerhoy","_getTipoPaginaPortalesLocales","oldVideosRegExp","videosRegExp","oldGaleryRegExp2","oldGaleryRegExp","galeryRegExp","graphicRegExp","oldNewsRegExp","newsRegExp","pathname","videoRegExp","oldVideoRegExp","videoBlogRegExp","galeryBlogRegExp","newsBlogRegExp","newsRecipesRegExp","isNews","hostname","oldGraphicRegExp","videoChatRegExp","_getDefineSlotParam","_getServerType","configServerType","_isResponsiveMedia","isResponsive","_getResponsiveParam","isResponsiveMedia","_createResponsive","minWidth","maxWidth","googleSize","dispositivos","device","sort","pair1","pair2","_getEdition","editions","_capturadorGetPreviewData","legacyPreview","ajax","success","_getValueUser","suscriptor","trial","registrado","anonimo","_getDelayed","delayedPositions","filter","_getPrioritized","_decriptUrl","Rijndael","mcrypt","preparedCode","_prevUnencryptedCode","_prevEncryptedCode","atob","charCodeAt","decrypt","_getDefineSlotTargetings","medioTargetings","pageTargetings","targetings","defineSlotTargetings","_dynamicId","ConfigManager","configPosition","configSchedules","currentDate","forceActivePosition","desactivadoen","round","Date","some","beginDate","endDate","programacion","fecha_in","fecha_fin","adsId","id","offset","oas","attr","oasSitepage","legacyAdUnit","macroEdition","edition","configSize","legacyCode","prebidDisabledBidders","enableAmazonAds","priorizadas","retrasadas","decodeURI","bind","unixTime","excepciones","match","thereAreDelayedPositions"],"mappings":"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","file":"vam.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"AdsManager\"] = factory();\n\telse\n\t\troot[\"AdsManager\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"AdsManager\"] = factory();\n\telse\n\t\troot[\"AdsManager\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonpAdsManager\"];\n/******/ \twindow[\"webpackJsonpAdsManager\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId]) {\n/******/ \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n/******/ \t\t\t}\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n/******/ \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n/******/ \t\twhile(resolves.length) {\n/******/ \t\t\tresolves.shift()();\n/******/ \t\t}\n/******/\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// objects to store loaded and loading chunks\n/******/ \tvar installedChunks = {\n/******/ \t\t4: 0\n/******/ \t};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId) {\n/******/ \t\tvar installedChunkData = installedChunks[chunkId];\n/******/ \t\tif(installedChunkData === 0) {\n/******/ \t\t\treturn new Promise(function(resolve) { resolve(); });\n/******/ \t\t}\n/******/\n/******/ \t\t// a Promise means \"currently loading\".\n/******/ \t\tif(installedChunkData) {\n/******/ \t\t\treturn installedChunkData[2];\n/******/ \t\t}\n/******/\n/******/ \t\t// setup Promise in chunk cache\n/******/ \t\tvar promise = new Promise(function(resolve, reject) {\n/******/ \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n/******/ \t\t});\n/******/ \t\tinstalledChunkData[2] = promise;\n/******/\n/******/ \t\t// start chunk loading\n/******/ \t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\tvar script = document.createElement('script');\n/******/ \t\tscript.type = \"text/javascript\";\n/******/ \t\tscript.charset = 'utf-8';\n/******/ \t\tscript.async = true;\n/******/ \t\tscript.timeout = 120000;\n/******/\n/******/ \t\tif (__webpack_require__.nc) {\n/******/ \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n/******/ \t\t}\n/******/ \t\tscript.src = __webpack_require__.p + \"\" + ({\"0\":\"rijndael-js\"}[chunkId]||chunkId) + \".js\";\n/******/ \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n/******/ \t\tscript.onerror = script.onload = onScriptComplete;\n/******/ \t\tfunction onScriptComplete() {\n/******/ \t\t\t// avoid mem leaks in IE.\n/******/ \t\t\tscript.onerror = script.onload = null;\n/******/ \t\t\tclearTimeout(timeout);\n/******/ \t\t\tvar chunk = installedChunks[chunkId];\n/******/ \t\t\tif(chunk !== 0) {\n/******/ \t\t\t\tif(chunk) {\n/******/ \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n/******/ \t\t\t\t}\n/******/ \t\t\t\tinstalledChunks[chunkId] = undefined;\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t\thead.appendChild(script);\n/******/\n/******/ \t\treturn promise;\n/******/ \t};\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"//static.vocento.com/vam/3.10.0/\";\n/******/\n/******/ \t// on error function for async loading\n/******/ \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 79);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar NAMESPACE = exports.NAMESPACE = 'vocento';\nvar PROMISES_PROPERTY = exports.PROMISES_PROPERTY = '__PROMISES__';\nvar DEFAULT_TIMEOUT = exports.DEFAULT_TIMEOUT = 2000;\nvar VOCUSER_COOKIE = exports.VOCUSER_COOKIE = 'voc_uid';\nvar PAYWALL_COOKIE = exports.PAYWALL_COOKIE = 'voc_paywall';\nvar SHOW_LOGS = exports.SHOW_LOGS = document.location.search.indexOf('vam_debug=1') > -1 || document.location.search.indexOf('gdp_debug=1') > -1;\nvar DEFAULT_LOG_TEMPLATE = exports.DEFAULT_LOG_TEMPLATE = '[Ads Manager]';\nvar CONFIG_NAMESPACE = exports.CONFIG_NAMESPACE = 'vocento.config.vam';\nvar EDITIONS_NAMESPACE = exports.EDITIONS_NAMESPACE = 'vocento.site.editions';\nvar GPT_ID_VOCENTO = exports.GPT_ID_VOCENTO = '4900';\nvar GPT_READY = exports.GPT_READY = 'vam:gpt:ready';\nvar GPT_TIMEOUT = exports.GPT_TIMEOUT = 2000;\nvar TIMEOUT_POSICIONES_ESTANDAR = exports.TIMEOUT_POSICIONES_ESTANDAR = 3000;\nvar ALTOS_MINIMOS_DISPOSITIVOS = exports.ALTOS_MINIMOS_DISPOSITIVOS = {\n mobile: 0,\n tablet: 200,\n desktop: 300\n};\nvar POSITION_FLUID = exports.POSITION_FLUID = \"'fluid'\";\nvar SLOT_RENDERED = exports.SLOT_RENDERED = 'vam:slotrendered';\nvar SLOT_EMPTY = exports.SLOT_EMPTY = 'vam:isempty';\nvar SLOT_VIEWABLE = exports.SLOT_VIEWABLE = 'vam:viewable';\nvar SLOT_INACTIVE = exports.SLOT_INACTIVE = 'vam:inactive';\nvar DEFAULTS = exports.DEFAULTS = {\n hideNoAds: true,\n refresh: false,\n responsive: false\n};\nvar CAPTURADOR_WS = exports.CAPTURADOR_WS = '//publi.cmvocento.com/capturador/preview';\nvar MCRYPT_KEY = exports.MCRYPT_KEY = 'acsNdl09acs72AEdacsNdl09acs72AEd';\nvar VAM_CSS_URL = exports.VAM_CSS_URL = '//netssl.vocento.com/cmvocento/css/vam.css';\nvar JSON_GDP2_0 = exports.JSON_GDP2_0 = 0;\nvar JSON_GDP2_1 = exports.JSON_GDP2_1 = 1;\nvar JSON_GDP2_2 = exports.JSON_GDP2_2 = 2;\nvar NOMBRE_FORMATO_JSON = exports.NOMBRE_FORMATO_JSON = ['GDP2.0', 'GDP2.1', 'GDP2.2+'];\nvar GPT_URL = exports.GPT_URL = 'www.googletagservices.com/tag/js/gpt.js';\n\n/* header bidding */\nvar HEADER_BIDDING_READY = exports.HEADER_BIDDING_READY = 'vam:headerbidding:ready';\nvar PREBID_URL = exports.PREBID_URL = \"//static.vocento.com/vam/3.10.0/\" + 'prebid.js';\nvar DEFAULT_PREBID_LOAD_TIMEOUT = exports.DEFAULT_PREBID_LOAD_TIMEOUT = 7000;\nvar AMAZON_URL = exports.AMAZON_URL = '//c.amazon-adsystem.com/aax2/apstag.js';\nvar DEFAULT_AMAZON_LOAD_TIMEOUT = exports.DEFAULT_AMAZON_LOAD_TIMEOUT = 7000;\nvar AMAZON_CONFIG = exports.AMAZON_CONFIG = {\n pubID: '3470', // Amazon publisher ID\n adServer: 'googletag' // AdServer type that contains apstag line-items\n};\n\n/* legacy */\nvar OLD_PREFIX = exports.OLD_PREFIX = 'publi_';\nvar NEW_SUFFIX = exports.NEW_SUFFIX = '-id';\n\n/***/ }),\n\n/***/ 1:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.showLog = showLog;\nexports.showWarn = showWarn;\nexports.showError = showError;\n\nvar _constants = __webpack_require__(0);\n\nfunction showLog() {\n var _console;\n\n _constants.SHOW_LOGS && (_console = console).log.apply(_console, [_constants.DEFAULT_LOG_TEMPLATE].concat(Array.prototype.slice.call(arguments)));\n}\n\nfunction showWarn() {\n var _console2;\n\n _constants.SHOW_LOGS && (_console2 = console).warn.apply(_console2, [_constants.DEFAULT_LOG_TEMPLATE].concat(Array.prototype.slice.call(arguments)));\n}\n\nfunction showError() {\n var _console3;\n\n _constants.SHOW_LOGS && (_console3 = console).error.apply(_console3, [_constants.DEFAULT_LOG_TEMPLATE].concat(Array.prototype.slice.call(arguments)));\n}\n\n/***/ }),\n\n/***/ 2:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _evented = __webpack_require__(24);\n\nvar _evented2 = _interopRequireDefault(_evented);\n\nvar _deferred = __webpack_require__(25);\n\nvar _deferred2 = _interopRequireDefault(_deferred);\n\nvar _user = __webpack_require__(27);\n\nvar _user2 = _interopRequireDefault(_user);\n\nvar _mixin = __webpack_require__(7);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _scripts = {},\n _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar Application = {\n load: function load(url) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var promise, script, src, key;\n\n src = url;\n key = url.split('?').shift();\n if (_hasOwnProperty.call(_scripts, key)) {\n return _scripts[key];\n }\n\n script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = src;\n script.async = true;\n options.text && (script.text = options.text);\n\n promise = new window.RSVP.Promise(function (resolve, reject) {\n script.onload = function () {\n return resolve(script);\n };\n script.onerror = reject;\n\n document.head.appendChild(script);\n });\n\n _scripts[key] = promise;\n return promise;\n }\n};\n\n(0, _mixin.extend)(Application, _evented2.default);\n(0, _mixin.extend)(Application, _deferred2.default);\n(0, _mixin.extend)(Application, _user2.default);\n\nexports.default = Application;\n\n/***/ }),\n\n/***/ 21:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VERSION = undefined;\n\n__webpack_require__(22);\n\n__webpack_require__(23);\n\nvar _package = __webpack_require__(8);\n\nvar _package2 = _interopRequireDefault(_package);\n\nvar _application = __webpack_require__(2);\n\nvar _application2 = _interopRequireDefault(_application);\n\nvar _advertising = __webpack_require__(28);\n\nvar _advertising2 = _interopRequireDefault(_advertising);\n\nvar _configManager = __webpack_require__(9);\n\nvar _configManager2 = _interopRequireDefault(_configManager);\n\nvar _utils = __webpack_require__(4);\n\nvar _constants = __webpack_require__(0);\n\nvar _logger = __webpack_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _window = window,\n $ = _window.$;\n\nvar _initialized = false;\n\n_legacyInit();\n$(document).ready(function () {\n var config = _application2.default.lookup(_constants.CONFIG_NAMESPACE);\n\n config = !(0, _utils.isEmpty)(config) ? config : {\n media: window.configGDPMedio,\n options: window.configGDP\n };\n _init(config.media, config.options);\n});\n\nvar VERSION = exports.VERSION = _package2.default.version;\n\n/* Private */\n\n/**\n * Build legacy object\n * @deprecated\n */\nfunction _legacyInit() {\n window.Vocento = window.Vocento || {};\n window.Vocento.Publicidad = function () {};\n window.Vocento.Publicidad.prototype = {\n init: function init(jQuery, configGDPMedio, configGDP) {\n _init(configGDPMedio, configGDP);\n },\n printAds: function printAds(datos) {\n return _advertising2.default.printAds(datos);\n },\n getOasSitepage: function getOasSitepage() {\n return _advertising2.default.getOasSitepage.apply(_advertising2.default, arguments);\n },\n getSizesGoogle: function getSizesGoogle() {\n return _advertising2.default.getSizesGoogle.apply(_advertising2.default, arguments);\n },\n getValueUser: function getValueUser() {\n return _advertising2.default.getValueUser.apply(_advertising2.default, arguments);\n }\n };\n}\n\nfunction _init(configGDPMedio, configGDP) {\n var voontoApp = 'Voonto' in window && 'getInstance' in window.Voonto ? window.Voonto.getInstance() : undefined;\n var configManager;\n\n if (_initialized) {\n return;\n }\n\n if (!configGDPMedio || !configGDP) {\n throw Error('[Ads Manager] missing configuration');\n }\n\n _initialized = true;\n configManager = new _configManager2.default(configGDPMedio, configGDP);\n _advertising2.default.init(configManager, false);\n _printAds();\n\n if (voontoApp) {\n voontoApp.on('voonto:reload', _reload);\n voontoApp.on('vam:refresh', _refresh);\n }\n _application2.default.on('voonto:reload', _reload);\n _application2.default.on('vam:refresh', _refresh);\n}\n\n/**\n * Print Ads configured inside context or whole page\n * Config must be passed to Advertising.init before calling printAds()\n * @param {null|jQueryObject} context$\n */\nfunction _printAds(context$) {\n $('[data-voc-vam]', context$).each(function () {\n _advertising2.default.printAds($(this));\n });\n}\n\n/**\n * Reload ads inside given context with given config\n * @param {jQueryEvent} event\n * @param {null|jQueryObject} context$\n */\nfunction _reload(event, context$) {\n var config = context$.data('voc-vam-configgdp') || _application2.default.lookup(_constants.CONFIG_NAMESPACE);\n var forcedOas = context$.data('voc-vam-force-oas') || '';\n var configManager;\n\n config.options.OAS = forcedOas.length > 0 ? _forceNewOas(config.options.OAS, forcedOas) : config.options.OAS;\n configManager = new _configManager2.default(config.media, config.options);\n (0, _logger.showLog)('Reload event has been invoked. Config value: ', config);\n _advertising2.default.init(configManager, true, context$);\n _printAds(context$);\n}\n\n/**\n * Refresh the ads position received on 'data' parameter\n * @param {string|object} data\n */\nfunction _refresh(event, data) {\n var params = typeof data === 'string' ? JSON.parse(data) : data;\n\n _advertising2.default.printAds(params);\n}\n\nfunction _forceNewOas(config, newOas) {\n if (config.adunit) {\n config.adunit = config.adunit.replace(new RegExp('portada$', 'g'), newOas.toString());\n }\n config.desktop.portada = config.desktop.portada.replace(new RegExp('portada$', 'g'), newOas.toString());\n config.mobile.portada = config.mobile.portada.replace(new RegExp('portada$', 'g'), newOas.toString());\n (0, _logger.showLog)('New OAS has been set, using value \"' + newOas + '\"');\n\n return config;\n}\n\n/***/ }),\n\n/***/ 22:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _constants = __webpack_require__(0);\n\n// NOTE: jQuery checking\nif (!('$' in window) || typeof window.$ !== 'function') {\n throw Error(_constants.DEFAULT_LOG_TEMPLATE + ' missing jQuery library on page');\n}\n\n// NOTE: Cookies checking\nif (!('Cookies' in window) || typeof window.Cookies !== 'function') {\n throw Error(_constants.DEFAULT_LOG_TEMPLATE + ' missing Cookies library on page');\n}\n\n// NOTE: RSVP checking\nif (!('RSVP' in window) || _typeof(window.RSVP) !== 'object') {\n throw Error(_constants.DEFAULT_LOG_TEMPLATE + ' missing RSVP library on page');\n}\n\n// NOTE: InView jQuery Plugin checking\nif (!('event' in window.$) || !('special' in window.$.event) || !('inview' in window.$.event.special) || _typeof(window.$.event.special.inview) !== 'object') {\n throw Error(_constants.DEFAULT_LOG_TEMPLATE + ' missing InView jQuery plugin on page');\n}\n\n/***/ }),\n\n/***/ 23:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _application = __webpack_require__(2);\n\nvar _application2 = _interopRequireDefault(_application);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar UserTypes = Object.freeze({\n ANONYMOUS: 'anonimo'\n}),\n Genders = Object.freeze({\n FEM: 'f',\n MAS: 'm'\n}),\n VOCUSER_READY = 'vocuser:ready',\n VOCUSER_DATA = 'vocuser:userdata';\n\n$(document).ready(function () {\n _application2.default.when(VOCUSER_READY).then(_onVocUserReady);\n $('body').on('vocento.gigya.products.onReady', function (event, gigyaux) {\n var gigyaUX;\n\n gigyaUX = gigyaux || window.gigyaUX;\n if (gigyaUX) {\n _onVocUserReady(gigyaUX);\n }\n });\n});\n\n/* Private */\n\nfunction _ord() {\n return Math.random() * 10000000000000;\n}\n\nfunction _onVocUserReady(gigyaux) {\n if (gigyaux.getUserType() === UserTypes.ANONYMOUS) {\n $('head').append('');\n } else {\n $('head').append('');\n if (typeof Voonto !== 'undefined') {\n _application2.default.when(VOCUSER_DATA).then(function (userData) {\n var gender, age;\n\n // NOTE: vocUserData promise object\n if (userData.responseGetUserInfo) {\n gender = userData.responseGetUserInfo.user && userData.responseGetUserInfo.user.gender ? userData.responseGetUserInfo.user.gender : null;\n age = userData.responseGetUserInfo.user && userData.responseGetUserInfo.user.age ? userData.responseGetUserInfo.user.age : null;\n }\n _onVocUserData(gender, age);\n });\n } else {\n $('body').on('vocento.gigya.accounts.onDataReady', function (event) {\n var gender, age;\n\n // NOTE: vocUserData promise object\n if (event.gigya_event) {\n gender = event.gigya_event.profile && event.gigya_event.profile.gender ? event.gigya_event.profile.gender : null;\n age = event.gigya_event.profile && event.gigya_event.profile.age ? event.gigya_event.profile.age : null;\n }\n _onVocUserData(gender, age);\n });\n }\n }\n}\n\nfunction _onVocUserData(gender, age) {\n switch (gender) {\n case Genders.FEM:\n $('head').append('');\n break;\n case Genders.MAS:\n $('head').append('');\n break;\n default:\n }\n\n switch (true) {\n case age !== '' && age <= 17:\n $('head').append('');\n break;\n case age >= 18 && age <= 24:\n $('head').append('');\n break;\n case age >= 25 && age <= 34:\n $('head').append('');\n break;\n case age >= 35 && age <= 44:\n $('head').append('');\n break;\n case age >= 45 && age <= 54:\n $('head').append('');\n break;\n case age !== '' && age < 54:\n $('head').append('');\n break;\n default:\n }\n}\n\n/***/ }),\n\n/***/ 24:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _logger = __webpack_require__(1);\n\nvar Evented = Object.preventExtensions({\n on: function on() {\n var _window$$;\n\n (_window$$ = window.$(this)).on.apply(_window$$, arguments);\n },\n one: function one() {\n var _window$$2;\n\n (_window$$2 = window.$(this)).one.apply(_window$$2, arguments);\n },\n off: function off() {\n var _window$$3;\n\n (_window$$3 = window.$(this)).off.apply(_window$$3, arguments);\n },\n trigger: function trigger() {\n var _window$$4;\n\n _logger.showLog.apply(undefined, ['Evented::trigger'].concat(Array.prototype.slice.call(arguments)));\n (_window$$4 = window.$(this)).trigger.apply(_window$$4, arguments);\n }\n});\n\nexports.default = Evented;\n\n/***/ }),\n\n/***/ 25:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _globalized = __webpack_require__(26);\n\nvar _globalized2 = _interopRequireDefault(_globalized);\n\nvar _mixin = __webpack_require__(7);\n\nvar _constants = __webpack_require__(0);\n\nvar _logger = __webpack_require__(1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _defers = {},\n _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar Deferred = {\n whenUntil: function whenUntil(promiseNS) {\n var _this = this;\n\n var time = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _constants.DEFAULT_TIMEOUT;\n\n (0, _logger.showLog)('[Deferred] whenUntil', { promiseNS: promiseNS, time: time });\n return new window.RSVP.Promise(function (resolve, reject) {\n setTimeout(reject, time);\n _this.when(promiseNS).then(resolve);\n });\n },\n when: function when(promiseNS) {\n var owner, name, global;\n\n (0, _logger.showLog)('[Deferred] when', promiseNS);\n\n if (!promiseNS) {\n throw Error(_constants.DEFAULT_LOG_TEMPLATE + ' [Deferred] At least 1 argument needed. 0 passed.');\n }\n\n var _promiseNS$split = promiseNS.split(':');\n\n var _promiseNS$split2 = _slicedToArray(_promiseNS$split, 2);\n\n owner = _promiseNS$split2[0];\n name = _promiseNS$split2[1];\n\n if (!owner || !name) {\n throw Error(_constants.DEFAULT_LOG_TEMPLATE + ' [Deferred] Illegal promise namespace name. Expected \"owner:name\".');\n }\n\n if (_hasOwnProperty.call(_defers, promiseNS)) {\n return _defers[promiseNS].promise;\n }\n\n global = this.createGlobal(_constants.NAMESPACE + '.' + owner + '.' + _constants.PROMISES_PROPERTY);\n global[name] = window.RSVP.defer();\n _defers[promiseNS] = global[name];\n\n return global[name].promise;\n },\n promised: function promised(promiseNS, value) {\n var owner, name, global;\n\n (0, _logger.showLog)('[Deferred] promised', { promiseNS: promiseNS, value: value });\n\n if (!promiseNS) {\n throw Error(_constants.DEFAULT_LOG_TEMPLATE + ' [Deferred] At least 1 argument needed. 0 passed.');\n }\n\n var _promiseNS$split3 = promiseNS.split(':');\n\n var _promiseNS$split4 = _slicedToArray(_promiseNS$split3, 2);\n\n owner = _promiseNS$split4[0];\n name = _promiseNS$split4[1];\n\n if (!owner || !name) {\n throw Error(_constants.DEFAULT_LOG_TEMPLATE + ' [Deferred] Illegal promise namespace name. Expected \"owner:name\".');\n }\n\n if (_hasOwnProperty.call(_defers, promiseNS)) {\n _defers[promiseNS].resolve(value);\n return this;\n }\n\n global = this.createGlobal(_constants.NAMESPACE + '.' + owner + '.' + _constants.PROMISES_PROPERTY);\n global[name] = window.RSVP.defer();\n global[name].resolve(value);\n _defers[promiseNS] = global[name];\n\n return this;\n }\n};\n\n(0, _mixin.extend)(Deferred, _globalized2.default);\n\nexports.default = Deferred;\n\n/***/ }),\n\n/***/ 26:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _constants = __webpack_require__(0);\n\nvar Globalized = {\n createGlobal: function createGlobal(namespace) {\n var nso = window;\n\n if (!namespace) {\n return undefined;\n }\n\n namespace.split('.').forEach(function (prop) {\n nso[prop] = nso[prop] || {};\n nso = nso[prop];\n });\n\n return nso;\n },\n lookup: function lookup() {\n var namespace = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _constants.NAMESPACE;\n var root = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;\n\n return namespace.split('.').reduce(function (that, o) {\n return that && o in that ? that[o] : {};\n }, root);\n }\n};\n\nexports.default = Globalized;\n\n/***/ }),\n\n/***/ 27:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _constants = __webpack_require__(0);\n\nvar _window = window,\n Cookies = _window.Cookies,\n UserType = Object.freeze({\n ANONYMOUS: 'anonimo',\n REGISTERED: 'registrado',\n SUBSCRIBER: 'suscriptor',\n TRIAL: 'trial'\n});\n\n\nvar User = {\n getUserType: function getUserType() {\n var userType, paywall, pwUserType, vocUid, cookie;\n\n vocUid = decodeURIComponent(Cookies.get(_constants.VOCUSER_COOKIE));\n cookie = vocUid === 'undefined' ? {} : _jsonParse(vocUid);\n userType = UserType.ANONYMOUS; // <'anonimo' | 'registrado' | 'trial' | 'suscriptor'>\n paywall = Cookies.get(_constants.PAYWALL_COOKIE);\n if (paywall) {\n pwUserType = paywall.split('|').pop();\n }\n\n if (pwUserType) {\n userType = pwUserType;\n } else if (cookie.uid) {\n userType = UserType.REGISTERED;\n }\n\n return userType;\n }\n};\n\nexports.default = User;\n\n/* Private */\n\nfunction _jsonParse(vocUid) {\n var result;\n\n try {\n result = JSON.parse(vocUid);\n } catch (e1) {\n // NOTE: fix issue https://agil.vocento.com/browse/MEC-2575\n vocUid = vocUid.replace(/\\+/g, '');\n try {\n result = JSON.parse(vocUid);\n } catch (e2) {\n result = {};\n }\n }\n\n return result;\n}\n\n/***/ }),\n\n/***/ 28:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _package = __webpack_require__(8);\n\nvar _providerManager = __webpack_require__(29);\n\nvar _providerManager2 = _interopRequireDefault(_providerManager);\n\nvar _application = __webpack_require__(2);\n\nvar _application2 = _interopRequireDefault(_application);\n\nvar _configManager4 = __webpack_require__(9);\n\nvar _configManager5 = _interopRequireDefault(_configManager4);\n\nvar _utils = __webpack_require__(4);\n\nvar _logger = __webpack_require__(1);\n\nvar _constants = __webpack_require__(0);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _configManager = null,\n _standardDelayed = [],\n _gptInitialized = false,\n _insertedPositions = {},\n _notDisplayedSlots = [],\n _completadasPriorizadas = false,\n _reload = false;\n\nvar Advertising = function () {\n function Advertising() {\n _classCallCheck(this, Advertising);\n }\n\n _createClass(Advertising, null, [{\n key: 'init',\n\n /**\n * Function that initialize the advertising\n * @param {object} app - Evented object\n * @param {object} configGDPMedio\n * @param {object} configGDP\n * @param {context} context$\n */\n value: function init(configManager, reload, context$) {\n var kruxSegments, kruxUser;\n\n _configManager = null;\n _standardDelayed = [];\n _gptInitialized = false;\n _insertedPositions = {};\n _notDisplayedSlots = [];\n _completadasPriorizadas = false;\n _reload = reload;\n _configManager = configManager;\n _configManager.context$ = context$;\n\n // Detectamos si se fuerza via URL alguna configuracion\n _configManager.checkConfigFromURL();\n\n if (!_configManager.configGDPMedio.activo) {\n (0, _logger.showWarn)('Advertising:init:The advertising has been deactivated in the configuration of the medium!');\n return;\n }\n (0, _logger.showLog)('Advertising:init:deviceType: ' + _configManager.deviceType + ' , pageType: ' + _configManager.pageType + ' , (Version ' + _package.version + ')');\n\n if (!_reload) {\n _configManager.processConfig();\n }\n\n // Load HB and GPT libraries soon as posible for not penalize the ad visualization\n if (!_reload) {\n (0, _logger.showLog)('init:HeaderBidding init');\n _providerManager2.default.init(_configManager.configGDPMedio);\n (0, _utils.cargaLibreriaGPT)();\n }\n\n // Inicializacion de la libreria GPT\n window.customcmd.push(function () {\n window.googletag.pubads().collapseEmptyDivs();\n kruxSegments = _application2.default.lookup('Krux.vocento.segments');\n kruxUser = _application2.default.lookup('Krux.vocento.user');\n if (_configManager.configGDPMedio.enableKrux && ['object', 'undefined'].indexOf(typeof kruxSegments === 'undefined' ? 'undefined' : _typeof(kruxSegments)) < 0 && ['object', 'undefined'].indexOf(typeof kruxUser === 'undefined' ? 'undefined' : _typeof(kruxUser)) < 0) {\n window.googletag.pubads().setTargeting('ksg', window.Krux.vocento.segments);\n window.googletag.pubads().setTargeting('kuid', window.Krux.vocento.user);\n }\n _configManager.configGDPMedio.singleRequest && window.googletag.pubads().enableSingleRequest();\n _configManager.configGDPMedio.syncRendering && window.googletag.pubads().enableSyncRendering();\n window.googletag.enableServices();\n\n // Disparamos el evento de GPT inicializada\n (0, _logger.showLog)('En constructor. Disparamos evento ' + _constants.GPT_READY);\n _application2.default.trigger(_constants.GPT_READY);\n _gptInitialized = true;\n });\n\n /* NOTE: Disparamos el evento de GPT inicializado tras N segundos para liberar posibles\n recursos que esten bloqueados */\n setTimeout(function () {\n if (!_gptInitialized) {\n (0, _logger.showWarn)('Advertising:init:Trigger event ' + _constants.GPT_READY + ' after ' + _constants.GPT_TIMEOUT);\n _application2.default.trigger(_constants.GPT_READY);\n }\n }, _constants.GPT_TIMEOUT);\n\n // Tratamiento de excepciones\n _configManager.checkExceptions();\n\n // Gestion de eventos de pintado de publicidad\n window.customcmd.push(function () {\n // Gestion de evento slotRenderEnded\n window.googletag.pubads().addEventListener('slotRenderEnded', function (ev) {\n var divId, position, container$, paramsSlot, index, found;\n\n divId = ev.slot.getSlotElementId();\n position = ev.slot.getTargeting('pos');\n container$ = $('#' + divId);\n paramsSlot = container$.data('params');\n index = -1;\n\n if (ev.isEmpty) {\n (0, _logger.showLog)('En constructor. slotRenderEnded. La posicion ' + position + ' isEmpty');\n container$.trigger(_constants.SLOT_EMPTY);\n if (_configManager.configGDPMedio.infoSlot) _infoSlotRender(paramsSlot, false);\n } else {\n (0, _logger.showLog)('En constructor. slotRenderEnded. La posicion ' + position + ' ha sido pintada en el DIV ' + divId);\n container$.trigger(_constants.SLOT_RENDERED);\n if (_configManager.configGDPMedio.infoSlot) _infoSlotRender(paramsSlot, true);\n }\n\n // Comprobacion si tiene eventos post_callback o post_event\n if (paramsSlot) {\n if (paramsSlot.post_callback) {\n (0, _logger.showLog)('En constructor. slotRenderEnded. La posicion ' + position + ' tiene el siguiente postCallback: ' + paramsSlot.post_callback);\n paramsSlot.post_callback();\n }\n\n if (paramsSlot.post_event) {\n (0, _logger.showLog)('En constructor. slotRenderEnded. La posicion ' + position + ' tiene el siguiente postEvent: ' + paramsSlot.post_event);\n _application2.default.trigger(paramsSlot.post_event);\n }\n }\n\n // Quitamos la posicion de la lista de posiciones priorizadas\n _configManager.removePrioritizedPosition();\n\n // Quitamos la posicion de la lista de posiciones estandar encoladas\n if (_configManager.thereArePrioritizedPositions() && _standardDelayed.length && !_configManager.isPrioritized(paramsSlot)) {\n found = _standardDelayed.find(function (parameters) {\n index++;\n return parameters.position === position[0];\n });\n if (found) {\n _standardDelayed.splice(index, 1);\n }\n }\n\n // Si esta era la ultima priorizada pintamos las estandar\n if (!_completadasPriorizadas && !_configManager.thereArePrioritizedPositions()) {\n _completadasPriorizadas = true;\n _displayStandarQueued();\n }\n });\n\n // Gestion de evento impressionViewable\n window.googletag.pubads().addEventListener('impressionViewable', function (ev) {\n var divId = ev.slot.getSlotElementId();\n var position = ev.slot.getTargeting('pos');\n var container$ = $('#' + divId);\n\n (0, _logger.showLog)('En constructor. impressionViewable. La posicion ' + position + ' es visible');\n container$.trigger(_constants.SLOT_VIEWABLE);\n });\n });\n\n /* NOTE: Si hay posiciones priorizadas las pintamos e invocamos el pintado de las estandar\n una vez pintadas estas */\n if (_configManager.thereArePrioritizedPositions()) {\n _displayPrioritized();\n\n /* NOTE: Si han transcurrido N segundos y todavia no se han lanzado las posiciones\n estandar las forzamos */\n setTimeout(function () {\n if (_standardDelayed.length) {\n (0, _logger.showWarn)('Advertising:init:Display queued positions after ' + _constants.TIMEOUT_POSICIONES_ESTANDAR);\n _completadasPriorizadas = true;\n _displayStandarQueued();\n }\n }, _constants.TIMEOUT_POSICIONES_ESTANDAR);\n }\n }\n\n /**\n * Muestra la Advertising.\n * @param {Object} datos - Puede ser un DIV obtenido con jQuery con los atributos de\n * configuracion, o bien un objeto JSON con la configuracion a aplicar\n *\n * Descripcion de parametros que puede contener el objeto JSON:\n * position => string. Posicion publicitaria a mostrar\n * id => string. ID del elemento HTML en el que se muestra\n * serverType => string. Servidor de publicidad a usar\n * hideNoAds => boolean. Oculta el elemento HTML si el adserver no ha devuelto publi\n * outOfPage => boolean. Determina si el slot de publicidad es outOfPage o no. Por\n * defecto vale false\n * defineSlot => boolean. Indica si hay que definir o no el slot\n * refresh => boolean. Se pide la posicion de publicidad aunque ya se hubiera mostrado\n * antes. Por defecto false\n * responsive => Array. Indicamos si una publi se debe pintar solo en una(s)\n * determinada(s) resolucion(es)\n * pre_callback => function. Función javascript a la que invocar previamente\n * pre_event => string. evento de precondicion\n * post_callback => function. Función javascript a la que invocar una vez disparado\n * el slotRendered\n * post_event => string. evento a disparar una vez disparado evento de slotRendered\n * oas => string. Si se rellena es el OAS a utilizar en la posicion de publicidad\n *\n * Objeto Responsive\n * El primer par de valores indica la resolucion, y en el segundo los tamanos de la posicion de\n * publi a servir, el cual puede definirse como sigue:\n * - vacio: []\n * - single array: [ancho, alto]\n * - multi array: [ [ancho1, alto1], [ancho2, alto2], ... ]\n * - string: En cuyo caso usa la funcion ads.getSizesGoogle para obtener el array\n *\n * Ejemplo llamada:\n * ads.printAds({'position': 'robapaginas', 'id': 'roba2', 'responsive': [\n * [[0, 0], []] // Small Mobile\n * ,[[350, 200], [300,150]] // Mobile\n * ,[[750, 200], 'robapaginas'] // Tablet\n * ,[[1050, 300], [[300,150],[300,250]]] // Desktop\n * ]});\n */\n\n }, {\n key: 'printAds',\n value: function printAds(datos) {\n var params, position, idAds, prioritized, delayed;\n\n (0, _logger.showLog)('Advertising:printAds', datos);\n if (!_configManager.configGDPMedio.activo) {\n (0, _logger.showWarn)('Advertising:printAds:Ads was be disabled in Media Config');\n return;\n }\n\n params = _configManager.normalizaParams(datos);\n if (params === null) {\n (0, _logger.showWarn)('Advertising:printAds:Empty params', datos);\n return;\n }\n\n position = params.position;\n idAds = _configManager.getIdDiv(params);\n if (!_configManager.isActive(params)) {\n if ($('#' + idAds).length && params.hideNoAds) {\n (0, _logger.showWarn)('Advertising:printAds:Hiding ADs DIV container if hideNoAds is anabled', params);\n $('#' + idAds).hide();\n }\n (0, _logger.showWarn)('Advertising:printAds:Position ' + position + ' is not active', params);\n return;\n }\n\n if (!$('#' + idAds).length) {\n (0, _logger.showWarn)('Advertising:printAds:DIV with ID ' + idAds + ' does not exist', params);\n return;\n }\n\n if (params.serverType === 'google') {\n /* NOTE: Si estamos en modo preview comprobamos si esta posicion hay que traerla desde el\n SW del capturador */\n if (_configManager.configGDPMedio.preview && _capturadorExistsPreview(params)) {\n (0, _logger.showLog)('Advertising:printAds:Preview mode. Getting form grabber service');\n _capturadorSetPreview(params);\n return;\n }\n\n (0, _logger.showLog)('Advertising:printAds:Check Ad-Type', params);\n prioritized = _configManager.isPrioritized(position);\n delayed = _configManager.isDelayed(position);\n\n if (prioritized && !delayed) {\n (0, _logger.showLog)('Advertising:printAds:Painting prioritized', params);\n _getAdGoogle(params, true);\n } else if (delayed) {\n (0, _logger.showLog)('Advertising:printAds:Wait for INVIEW event delayed', params);\n _displayDelayed(params);\n } else if (!_configManager.thereArePrioritizedPositions() || _completadasPriorizadas) {\n (0, _logger.showLog)('Advertising:printAds:Painting standard', params);\n _getAdGoogle(params, false);\n } else {\n (0, _logger.showLog)('Advertising:printAds:Painting queued standards', params);\n _standardDelayed.push(params);\n }\n } else {\n (0, _logger.showWarn)('Advertising:printAds:ServerType is different from google', params);\n }\n }\n\n /**\n * Get user type\n * NOTE: legacy code\n */\n\n }, {\n key: 'getValueUser',\n value: function getValueUser() {\n if (!_configManager) {\n throw Error('Advertising:getValueUser:Config object not initialized');\n }\n\n return _configManager.valueUserType;\n }\n\n /**\n * Get google sizes for a given position\n * NOTE: legacy code\n */\n\n }, {\n key: 'getSizesGoogle',\n value: function getSizesGoogle() {\n var _configManager2;\n\n if (!_configManager) {\n throw Error('Advertising:getSizesGoogle:Config object not initialized');\n }\n\n return (_configManager2 = _configManager).getSizesGoogle.apply(_configManager2, arguments);\n }\n\n /**\n * Get OAS value from config\n * NOTE: legacy code\n */\n\n }, {\n key: 'getOasSitepage',\n value: function getOasSitepage() {\n var _configManager3;\n\n if (!_configManager) {\n throw Error('Advertising:getOasSitepage:Config object not initialized');\n }\n\n return (_configManager3 = _configManager).getOasSitepage.apply(_configManager3, arguments);\n }\n }]);\n\n return Advertising;\n}();\n\nexports.default = Advertising;\n\n/* Private */\n\n/**\n * Funcion que genera el scriptText que pinta la Advertising.\n * @param object params\n */\n\nfunction _defineSlot(params) {\n var scriptText, legacyCmvkey, insertedPositionkey, hideText, targetingText, size, idAds, targetingsTags, deviceTypeTargeting, decryptedURL, pattern, isValid, decodedURLTargetings, chunksURLTargetings, topics, mappingObj, sizeMapping, defineSizeMapping;\n\n size = _configManager.getSizesGoogle(params.position);\n idAds = _configManager.getIdDiv(params);\n targetingsTags = params.tags || {};\n // Codigo para ocultar el div si no hay publi\n hideText = params.hideNoAds ? '.setCollapseEmptyDiv(true)' : '';\n targetingText = _configManager.globalTargetings;\n\n Object.keys(targetingsTags).forEach(function (key) {\n targetingText += '.setTargeting(\"' + key + '\", \"' + targetingsTags[key] + '\")';\n });\n\n // Targeting con tipo de usuario de Gigya\n deviceTypeTargeting = _configManager.deviceType === 'mobile' ? 'm' : 'w';\n targetingText += '.setTargeting(\\'st\\', \\'' + _configManager.valueUserType + '\\').setTargeting(\\'stt\\', \\'' + deviceTypeTargeting + _configManager.valueUserType + '\\')';\n\n // Se comprueba si se fuerza algun targeting via URL con el parametro vam_cmvkey\n decryptedURL = _configManager5.default.decryptedURL();\n if (typeof window.location !== 'undefined' && (window.location.href.indexOf('vam_cmvkey=') > -1 || window.location.href.indexOf('cmvkey=') > -1) || decryptedURL !== '') {\n legacyCmvkey = window.location.href.indexOf('vam_cmvkey=') > -1 ? 'vam_cmvkey' : 'cmvkey';\n pattern = new RegExp('(\\\\?|&)' + legacyCmvkey + '=([^?&]+)');\n isValid = decryptedURL !== '' ? pattern.exec(decryptedURL) : pattern.exec(window.location.href);\n\n if (isValid) {\n try {\n decodedURLTargetings = decodeURIComponent(isValid[2]);\n chunksURLTargetings = decodedURLTargetings.split(',');\n\n chunksURLTargetings.forEach(function (chunck) {\n var pair, keyChunk, valueChunk;\n\n pair = chunck.split('=');\n keyChunk = pair[0];\n valueChunk = pair[1];\n targetingText += '.setTargeting(\"' + keyChunk + '\", \"' + valueChunk + '\")';\n });\n } catch (e) {\n (0, _logger.showWarn)('Advertising:defineSlot:Error processing ' + legacyCmvkey + ': ' + e);\n }\n }\n }\n\n // Incluimos los topics como targeting si asi corresponde\n try {\n topics = _getTopics(false);\n if (topics.length) {\n targetingText += '.setTargeting(\"topics\", \"' + topics + '\")';\n }\n } catch (e) {\n (0, _logger.showWarn)('Advertising:defineSlot:Error processing enableTopics: ' + e);\n }\n\n // Se comprueba si enableTpag esta habilitado\n try {\n if (_configManager.configGDPMedio.enableTpag) {\n targetingText += '.setTargeting(\"tpag\", \"' + _configManager.pageType + '\")';\n }\n } catch (e) {\n (0, _logger.showWarn)('Advertising:defineSlot:Error processing tpag: ' + e);\n }\n\n // Comprobaciones para medios responsives\n mappingObj = {};\n sizeMapping = '';\n defineSizeMapping = '';\n if (!params.outOfPage && params.responsive && Array.isArray(params.responsive) && params.responsive.length > 0) {\n mappingObj = _getSizeMapping(params);\n sizeMapping = mappingObj && mappingObj.definition ? mappingObj.definition : '';\n defineSizeMapping = mappingObj && mappingObj.script ? mappingObj.script : '';\n }\n\n if (!params.outOfPage) {\n if (params.defineSlot) {\n scriptText = sizeMapping + 'window.' + _getNombreSlot(params) + ' = window.googletag.defineSlot(\\'' + _configManager.getOasSitepage(params) + '\\', ' + size + ', \\'' + idAds + '\\')' + defineSizeMapping + '.setTargeting(\\'pos\\',\\'' + params.position + '\\')' + targetingText + hideText + '.addService(googletag.pubads());';\n }\n } else if (params.defineSlot) {\n scriptText = sizeMapping + 'window.' + _getNombreSlot(params) + ' = window.googletag.defineOutOfPageSlot(\\'' + _configManager.getOasSitepage(params) + '\\', \\'' + idAds + '\\')' + defineSizeMapping + '.setTargeting(\\'pos\\',\\'' + params.position + '\\')' + targetingText + hideText + '.addService(googletag.pubads());';\n }\n\n insertedPositionkey = _getClavePosicionInsertada(params);\n _insertedPositions[insertedPositionkey] = scriptText;\n (0, _logger.showLog)('Advertising:defineSlot:Ads ID', idAds);\n window.customcmd.push(_executeDefineSlot(scriptText, params));\n}\n\nfunction _executeDefineSlot(scriptText, params) {\n (0, _logger.showLog)('En defineSlot. defineSlot: ' + scriptText);\n eval(scriptText);\n _notDisplayedSlots.push(params.position);\n}\n\n/**\n * Hace display de una posicion\n */\nfunction _display(params) {\n // Comprobamos si la posicion esta en la lista de posiciones definidas y pendientes de display\n var index, idDiv;\n\n (0, _logger.showLog)('Advertising:display:Display position ' + params.position + ' with params', params);\n index = _notDisplayedSlots.indexOf(params.position);\n if (index < 0) {\n (0, _logger.showLog)('Advertising:display:Position ' + params.position + ' has already been displayed');\n return;\n }\n\n (0, _logger.showLog)('Advertising:display:Position ' + params.position + ' is not displayed yet');\n idDiv = _configManager.getIdDiv(params);\n if (!$('#' + idDiv).length) {\n (0, _logger.showWarn)('Advertising:display:DIV with ID ' + idDiv + ' does not exist');\n return;\n }\n (0, _logger.showLog)('Advertising:display:Queued position ' + params.position + ' to display');\n window.customcmd.push(function () {\n (0, _logger.showLog)('Advertising:display:Displaying ' + params.position);\n window.googletag.display(idDiv);\n\n /* NOTE: Si singleRequest esta habilitado un unico display sirve para todas las posiciones\n para las que hemos hecho defineSlot previamente. En caso contrario solo quitamos la\n posicion concreta de la lista.\n */\n if (_configManager.configGDPMedio.singleRequest) {\n _notDisplayedSlots = [];\n } else {\n _notDisplayedSlots.splice(index, 1);\n }\n });\n}\n\n/**\n * Funcion que obtiene las medidas en caso de que sea responsive.\n * FUTURE: move config to GDP\n * FUTURE: move logic to GoogleTag component\n * @param object responsive\n * @return string sizeMapping\n */\nfunction _getSizeMapping(params) {\n var mappingName, mappingObj, responsive, finalDefinition;\n\n mappingName = 'window.mapping_' + _getNombreSlot(params);\n mappingObj = {\n definition: mappingName + ' = window.googletag.sizeMapping()',\n script: '.defineSizeMapping(' + mappingName + ')'\n };\n responsive = params.responsive;\n (0, _logger.showLog)('Advertising:getSizeMapping:Resposive param for position ' + params.position, responsive);\n\n finalDefinition = responsive.reduce(function (definition, pair) {\n var addSize, viewportSize, responsiveSizes, singleSize;\n\n if (definition !== '' && !definition) return undefined;\n\n viewportSize = pair[0];\n if (pair.length !== 2 || !Array.isArray(viewportSize) || viewportSize.length !== 2) {\n (0, _logger.showWarn)('Advertising:getSizeMapping:Malformed responsive param in position ' + params.position + '. responsive: ' + responsive);\n return undefined;\n }\n\n addSize = '';\n responsiveSizes = pair[1];\n if (typeof responsiveSizes === 'string') {\n if (responsiveSizes.indexOf('fluid') !== -1) {\n responsiveSizes = _constants.POSITION_FLUID;\n } else {\n responsiveSizes = _configManager.getSizesGoogle(responsiveSizes);\n if (typeof responsiveSizes !== 'undefined' && typeof responsiveSizes === 'string') {\n responsiveSizes = JSON.parse(responsiveSizes);\n }\n }\n }\n if (!Array.isArray(responsiveSizes) && responsiveSizes !== _constants.POSITION_FLUID) {\n (0, _logger.showWarn)('Advertising:getSizeMapping:Malformed responsive param in position ' + params.position + '. responsive: ' + responsive);\n return undefined;\n }\n\n addSize = '[' + viewportSize[0] + ',' + viewportSize[1] + '],';\n if (responsiveSizes.length > 0 && Array.isArray(responsiveSizes[0])) {\n addSize += '[';\n for (var j = 0; j < responsiveSizes.length; j++) {\n singleSize = responsiveSizes[j];\n if (singleSize.length === 2) {\n addSize += (j === 0 ? '[' : ',[') + singleSize[0] + ',' + singleSize[1] + ']';\n }\n }\n addSize += ']';\n } else if (responsiveSizes.length === 2) {\n addSize += '[' + responsiveSizes[0] + ',' + responsiveSizes[1] + ']';\n } else if (responsiveSizes === _constants.POSITION_FLUID) {\n addSize += _constants.POSITION_FLUID;\n } else {\n addSize += '[]';\n }\n\n return definition + '.addSize(' + addSize + ')';\n }, '');\n\n if (!finalDefinition) return undefined;\n\n mappingObj.definition += finalDefinition + '.build();';\n\n return mappingObj;\n}\n\n/**\n * Lanza los printAds que se han encolado cuando hay priorizadas\n */\nfunction _displayStandarQueued() {\n (0, _logger.showLog)('Advertising:displayStandarQueued:Display queued positions');\n while (_standardDelayed.length) {\n Advertising.printAds(_standardDelayed.shift());\n }\n}\n\n/**\n * Funcion para pintar la publicidad priorizada\n */\nfunction _displayPrioritized() {\n (0, _logger.showLog)('Advertising:pintaPriorizadas:Painting the following positions : ' + _configManager.prioritizedPositions);\n _pintaListaPosiciones(_configManager.prioritizedPositions, true);\n}\n\n/**\n * Funcion que recorre y pinta una lista de posiciones.\n * Si singleRequest esta habilitado las posiciones priorizadas funcionan como un Roadblock y se\n * piden todas juntas (no llevaran eventos ni callbacks)\n */\nfunction _pintaListaPosiciones(listaPositions, sonPosicionesPriorizadas) {\n if (_configManager.configGDPMedio.singleRequest && sonPosicionesPriorizadas) {\n (0, _logger.showLog)('Advertising:pintaListaPosiciones:There is prioritized positions and SingleRequest is enabled -> get with Roadblock');\n\n window.customcmd.push(function () {\n var params, container$, posCuyoDivExiste;\n\n posCuyoDivExiste = null;\n listaPositions.forEach(function (position) {\n params = { position: position };\n\n if (!_configManager.existePosEnConfigGDPMedio(position)) {\n (0, _logger.showWarn)('Advertising:pintaListaPosiciones:SingleRequest position ' + position + ' does not exist configGDPMedio');\n return;\n }\n\n if (!_configManager.isActive(params)) {\n (0, _logger.showWarn)('Advertising:pintaListaPosiciones:SingleRequest position ' + position + ' is NOT active');\n return;\n }\n\n // Recuperamos los parametros del DIV en caso de que exista en la pagina\n container$ = $('[data-voc-vam-position = \\'' + position + '\\']', _configManager.context$);\n if (container$.length) {\n params = _configManager.normalizaParams(container$);\n if (posCuyoDivExiste === null) posCuyoDivExiste = params;\n } else {\n // NOTE: find legacy DIV\n container$ = $('#' + _configManager.getIdDiv(params));\n if (container$.length) {\n params = _configManager.normalizaParams(params);\n if (posCuyoDivExiste === null) {\n posCuyoDivExiste = params;\n }\n } else {\n (0, _logger.showWarn)('En pintaListaPosiciones. No existe el DIV de la posicion priorizada ' + position);\n }\n }\n if ('id' in params) {\n (0, _logger.showLog)('En pintaListaPosiciones. Llamando a defineSlot: ' + JSON.stringify(params));\n _defineSlot(params);\n }\n });\n\n if (posCuyoDivExiste === null) {\n (0, _logger.showError)('ERROR En pintaListaPosiciones. No existe el DIV de ninguna de las posiciones priorizadas en la pagina, por lo que no se hara el display');\n } else {\n params = posCuyoDivExiste;\n }\n\n // NOTE: If there is Header Bidding wait for bidders promises\n if (_providerManager2.default.isActive()) {\n (0, _logger.showLog)('pintaListaPosiciones:Waiting for HB`s promises to be solved');\n _application2.default.when(_constants.HEADER_BIDDING_READY).then(function () {\n (0, _logger.showLog)('pintaListaPosiciones:HB promises resolved');\n _providerManager2.default.setTargetings();\n (0, _logger.showLog)('pintaListaPosiciones:Params object', params);\n _display(params);\n });\n } else {\n (0, _logger.showLog)('En pintaListaPosiciones. Print without wait HB');\n _display(params);\n }\n });\n } else {\n !_configManager.configGDPMedio.singleRequest && (0, _logger.showLog)('Advertising:pintaListaPosiciones:SingleRequest DISABLED');\n !sonPosicionesPriorizadas && (0, _logger.showLog)('Advertising:pintaListaPosiciones:There are NOT prioritized positions');\n // window.customcmd.push(function () {\n listaPositions.forEach(function (position) {\n var params, container$, legacyParams;\n\n if (!_configManager.existePosEnConfigGDPMedio(position)) {\n (0, _logger.showWarn)('Advertising:pintaListaPosiciones:Prioritized position ' + position + ' does not exist configGDPMedio');\n return;\n }\n\n params = { position: position };\n if (!_configManager.isActive(params)) {\n (0, _logger.showWarn)('Advertising:pintaListaPosiciones:Prioritized position ' + position + ' is NOT active');\n return;\n }\n\n // Recuperamos los paramteros del DIV en caso de que exista en la pagina\n container$ = $('[data-voc-vam-position = \\'' + position + '\\']', _configManager.context$);\n if (container$.length) {\n params = _configManager.normalizaParams(container$);\n } else {\n container$ = $('#' + _configManager.getIdDiv(params));\n if (container$.length) {\n legacyParams = _configManager.normalizaParams(container$);\n }\n params = !legacyParams ? _configManager.normalizaParams(params) : legacyParams;\n }\n\n (0, _logger.showLog)('Advertising:pintaListaPosiciones:Calling printAds with', params);\n Advertising.printAds(params);\n });\n // });\n }\n}\n\n/**\n * Display delayed positions when it is on viewport\n * @param {object} params\n */\nfunction _displayDelayed(params) {\n var idAds = _configManager.getIdDiv(params);\n\n $('#' + idAds).on('inview', function (event, isInView) {\n (0, _logger.showLog)('Advertising:displayDelayed:INVIEW_EVENT trigger', params, event, isInView);\n if (isInView && this.innerHTML === '') {\n (0, _logger.showLog)('Advertising:displayDelayed:Painting delayed', idAds, params);\n _getAdGoogle(params, false);\n }\n });\n}\n\n/**\n * Pintado de publicidad de GPT\n */\nfunction _getAdGoogle(params, esPosPriorizada) {\n if (!_configManager.configGDPMedio.activo) {\n (0, _logger.showWarn)('Advertising:getAdGoogle:Ads was disabled in Media Config');\n return;\n }\n\n (0, _logger.showLog)('Advertising:getAdGoogle:Queuing with', params);\n window.customcmd.push(function () {\n var idDiv, eventParams, tParams, key, hasPreevent;\n\n if (!_configManager.existePosEnConfigGDPMedio(params.position)) {\n (0, _logger.showWarn)('Advertising:getAdGoogle:Position ' + params.position + ' does not exist in configGDPMedio');\n return;\n }\n\n (0, _logger.showLog)('Advertising:getAdGoogle:googletag exec with', params);\n idDiv = _configManager.getIdDiv(params);\n eventParams = _getEventsPosition(params);\n\n tParams = params;\n tParams.pre_callback = eventParams.pre_callback;\n tParams.pre_event = eventParams.pre_event;\n\n tParams.post_callback = eventParams.post_callback;\n tParams.post_event = eventParams.post_event;\n (0, _logger.showLog)('Advertising:getAdGoogle:Set params to DIV with id = ', idDiv);\n $('#' + idDiv).data('params', tParams);\n\n key = _getClavePosicionInsertada(params);\n if (!_insertedPositions[key]) {\n hasPreevent = false;\n if (params.defineSlot) {\n (0, _logger.showLog)('Advertising:getAdGoogle:defineSlot', params);\n _defineSlot(params);\n if (!esPosPriorizada) {\n (0, _logger.showLog)('Advertising:getAdGoogle:It is not prioritized', params);\n if (eventParams.pre_callback && !eventParams.pre_event) {\n eventParams.pre_callback();\n } else if (eventParams.pre_event) {\n (0, _logger.showLog)('Advertising:getAdGoogle:Has pre-event', params);\n hasPreevent = true;\n _application2.default.one(eventParams.pre_event, params, function () {\n // NOTE: If there is Header Bidding wait for bidders promises\n if (_providerManager2.default.isActive()) {\n (0, _logger.showLog)('Advertising:getAdGoogle:Waiting for HB`s promises to be solved');\n _application2.default.when(_constants.HEADER_BIDDING_READY).then(function () {\n (0, _logger.showLog)('Advertising:getAdGoogle:HB promises resolved with preEvents', params);\n if (params.pre_callback) {\n params.pre_callback();\n }\n _providerManager2.default.setTargetings();\n _display(params);\n });\n }\n });\n } else {\n (0, _logger.showLog)('Advertising:getAdGoogle:Has NO pre-event', params);\n if (_providerManager2.default.isActive()) {\n hasPreevent = true;\n (0, _logger.showLog)('Advertising:getAdGoogle:Waiting for HB`s promises to be solved');\n _application2.default.when(_constants.HEADER_BIDDING_READY).then(function () {\n (0, _logger.showLog)('Advertising:getAdGoogle:HB promises resolved without preEvents with', params);\n if (params.pre_callback) {\n params.pre_callback();\n }\n _providerManager2.default.setTargetings();\n _display(params);\n });\n }\n }\n } else {\n (0, _logger.showLog)('Advertising:getAdGoogle:Is prioritized', params);\n if (_providerManager2.default.isActive()) {\n hasPreevent = true;\n (0, _logger.showLog)('Advertising:getAdGoogle:Waiting for HB`s promises to be solved');\n _application2.default.when(_constants.HEADER_BIDDING_READY).then(function () {\n (0, _logger.showLog)('Advertising:getAdGoogle:HB promises resolved on prioritized position with', params);\n _providerManager2.default.setTargetings();\n _display(params);\n });\n }\n }\n }\n\n // No tiene evento de activacion\n if (!hasPreevent) {\n (0, _logger.showLog)('Advertising:getAdGoogle:Has no pre-event. Painting', params);\n _providerManager2.default.setTargetings();\n _display(params);\n }\n } else {\n (0, _logger.showLog)('Advertising:getAdGoogle:Position ' + params.position + ' has already been previously invoked. Checking the value of the refresh parameter', params.refresh);\n if (params.refresh) _pintarPosicionRefresh(params);\n }\n });\n}\n\n/**\n * Funcion que recuperar si tiene evento pre o post callback, los parametros llegados por funcion\n * prevalecen sobre los del CONFIG\n * @param object params\n */\nfunction _getEventsPosition(params) {\n var tipoDispositivoAux, positionEvents;\n\n tipoDispositivoAux = _configManager.deviceType;\n positionEvents = _application2.default.lookup('posicion_' + tipoDispositivoAux + '[\"' + params.position + '\"]', _configManager.configGDP);\n\n if ((0, _utils.isEmpty)(positionEvents)) return positionEvents;\n\n positionEvents.pre_callback = params.pre_callback || params.pre_callback;\n positionEvents.pre_event = params.pre_event || params.pre_event;\n positionEvents.post_callback = params.post_callback || params.post_callback;\n positionEvents.post_event = params.post_event || params.post_event;\n\n return positionEvents;\n}\n\n/**\n * Devuelve el nombre de la variable que almacenara el slot\n */\nfunction _getNombreSlot(params) {\n var dynamicSuffix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var dynamicId, dynamic;\n\n dynamicId = _configManager.dynamicId;\n dynamic = dynamicId && dynamicSuffix ? '_' + dynamicId : '';\n\n return 'slot_' + params.position.replace('-', '_') + dynamic;\n}\n\n/**\n * Clave unica de la posicion\n */\nfunction _getClavePosicionInsertada(params) {\n return _getNombreSlot(params) + '_' + _configManager.getIdDiv(params);\n}\n\n/**\n * Refresh de una posicion\n */\nfunction _pintarPosicionRefresh(params) {\n (0, _logger.showLog)('En pintarPosicionRefresh. Refrescamos la posicion ' + params.position);\n window.googletag.pubads().refresh([_application2.default.lookup(_getNombreSlot(params))]);\n}\n\n/**\n * INICIO: Renderizado de tablas de informacion cuando vam_info_slot=1\n * --------------------------------------------------------------------------\n */\n/**\n * Metodo de entrada de tablas de informacion\n */\nfunction _infoSlotRender(params, isSlotRendered) {\n var idDiv, container$, width, height, dimension, arrayObj, numSlots, numTopics, numOas, max;\n\n idDiv = _configManager.getIdDiv(params);\n container$ = $('#' + idDiv);\n width = $('#' + idDiv + ' div iframe').width();\n height = $('#' + idDiv + ' div iframe').height();\n\n // Obtenemos el tamano de la publi pintada y la borramos\n if (isSlotRendered) {\n container$.empty();\n } else {\n // Si DFP devuelve isEmpty cogemos la primera dimension del array, o 150x150 si es fluid\n try {\n height = 150;\n width = 150;\n dimension = _configManager.getSizesGoogle(params.position);\n if (dimension && dimension.indexOf('fluid') < 0) {\n arrayObj = JSON.parse(dimension);\n\n if (Array.isArray(arrayObj[0])) {\n width = arrayObj[0][0];\n height = arrayObj[0][1];\n } else {\n width = arrayObj[0];\n height = arrayObj[1];\n }\n }\n } catch (e) {\n (0, _logger.showError)('Advertising:infoSlotRender:Error building size.', e);\n }\n\n container$.show();\n }\n\n // Rectangulo con color azul o rojo (si es local)\n container$.addClass('gdp_infoSlot_rectangle').html('

' + params.position + ' ' + _infoSlotFormateaDimensiones(params) + '

');\n if (_isLocalPosition(params)) container$.addClass('gdp_infoSlot_localPosition');\n if (!isSlotRendered) container$.addClass('gdp_infoSlot_inactive');\n\n if (!$('#gdp_infoSlot_tableInfo').length > 0) {\n $('body').append('
');\n }\n\n // Tablas de info adicional\n _infoSlotRenderSlots(params);\n _infoSlotRenderTopics();\n _infoSlotRenderOAS(params);\n\n numSlots = $('#gdp_infoSlot_tableInfo-slots').length > 0 ? $('#gdp_infoSlot_tableInfo-slots tbody tr').length : 0;\n numTopics = $('#gdp_infoSlot_tableInfo-topics').length > 0 ? $('#gdp_infoSlot_tableInfo-topics tbody tr').length : 0;\n numOas = $('#gdp_infoSlot_tableInfo-oas').length > 0 ? $('#gdp_infoSlot_tableInfo-oas tbody tr').length : 0;\n max = Math.max(numSlots, numTopics);\n if (max > numSlots && $('#gdp_infoSlot_tableInfo-slots').length > 0) {\n for (var i = 0; i < max - numSlots; i++) {\n $('#gdp_infoSlot_tableInfo-slots tbody').append(' ');\n }\n }\n if (max > numTopics && $('#gdp_infoSlot_tableInfo-topics').length > 0) {\n for (var _i = 0; _i < max - numTopics; _i++) {\n $('#gdp_infoSlot_tableInfo-topics tbody').append(' ');\n }\n }\n if (max > numOas && $('#gdp_infoSlot_tableInfo-oas').length > 0) {\n for (var _i2 = 0; _i2 < max - numOas; _i2++) {\n $('#gdp_infoSlot_tableInfo-oas tbody').append(' ');\n }\n }\n}\n\nfunction _applyFilter(value) {\n return value.replace(new RegExp(\"'fluid'\", 'g'), '[fluid]').replace(new RegExp('\\\\],\\\\[', 'g'), '_').replace(new RegExp(',', 'g'), 'x').replace(new RegExp('\\\\[', 'g'), '').replace(new RegExp('\\\\]', 'g'), '').replace(new RegExp('_', 'g'), ',');\n}\n\nfunction _infoSlotFormateaDimensiones(params) {\n var result, dimensionsArray, mappingObj, sizeMapping, dimension, resolution, notRepeatedDimensions;\n\n result = '';\n dimensionsArray = [];\n mappingObj = {};\n sizeMapping = '';\n\n try {\n if (params.outOfPage) {\n dimensionsArray.push('oop');\n } else if (params.responsive && Array.isArray(params.responsive) && params.responsive.length > 0) {\n mappingObj = _getSizeMapping(params);\n sizeMapping = typeof mappingObj !== 'undefined' && typeof mappingObj.definition !== 'undefined' ? mappingObj.definition : '';\n sizeMapping.split('.').forEach(function (size) {\n if (size.indexOf('addSize') > -1) {\n size = size.replace(new RegExp('addSize\\\\(', 'g'), '').replace(new RegExp('\\\\)', 'g'), '');\n dimensionsArray.push(size);\n }\n });\n } else {\n dimensionsArray.push(_application2.default.lookup('posicion_' + _configManager.deviceType + '[\"' + params.position + '\"].dimensiones', _configManager.configGDPMedio));\n }\n\n if (Array.isArray(dimensionsArray)) {\n if (params.outOfPage) {\n // Posicion OutOfPage\n result += '(oop)';\n } else if (!params.responsive) {\n // Posicion no responsive\n dimension = _applyFilter(dimensionsArray[0]);\n result += '(' + dimension + ')';\n } else {\n // Posicion responsive\n notRepeatedDimensions = new Set();\n dimensionsArray.forEach(function (dimen) {\n var filtered = _applyFilter(dimen);\n\n // Quitamos la resolucion\n resolution = filtered.substring(0, filtered.indexOf(','));\n dimension = filtered.substring(filtered.indexOf(',') + 1);\n notRepeatedDimensions.add(dimension);\n result += '
' + resolution + ': (' + dimension + ')';\n });\n\n // Si todas las dimensiones de responsive son la misma escribimos solo una\n if (notRepeatedDimensions.size === 1) result = '(' + dimension + ')';\n }\n }\n } catch (err) {\n (0, _logger.showError)('Advertising:infoSlotFormateaDimensiones:Error', err);\n }\n\n return result;\n}\n\n/**\n * Tabla de informacion de SLOTS\n */\nfunction _infoSlotRenderSlots(params) {\n if (!$('#gdp_infoSlot_tableInfo-slots').length) {\n $('#gdp_infoSlot_tableInfo').append('
');\n $('#gdp_infoSlot_tableInfo-slots thead').append('posiciones');\n }\n $('#gdp_infoSlot_tableInfo-slots tbody').append('' + params.position + '');\n}\n\n/**\n * Tabla de informacion de TOPICS\n */\nfunction _infoSlotRenderTopics() {\n var topics = _getTopics(true);\n if (topics.length > 0) {\n if (!$('#gdp_infoSlot_tableInfo-topics').length) {\n $('#gdp_infoSlot_tableInfo').append('
');\n $('#gdp_infoSlot_tableInfo-topics thead').append('topics');\n\n topics.forEach(function (topic) {\n $('#gdp_infoSlot_tableInfo-topics tbody').append('' + topic + '');\n });\n }\n }\n}\n\n/**\n * Tabla de informacion de OAS\n */\nfunction _infoSlotRenderOAS(params) {\n if (!$('#gdp_infoSlot_tableInfo-oas').length) {\n $('#gdp_infoSlot_tableInfo').append('
');\n $('#gdp_infoSlot_tableInfo-oas thead').append('oas');\n $('#gdp_infoSlot_tableInfo-oas tbody').append('' + _configManager.getOasSitepage(params) + '');\n }\n}\n\n/**\n * Devuelve un array con los topics que contiene la pagina, en caso de que los contenga y que\n * enableTopics este habilitado.\n * @return array\n */\nfunction _getTopics(forzarEnableTopics) {\n var topics = [];\n\n if ((_configManager.configGDPMedio.enableTopics || forzarEnableTopics) && window.voc_top) {\n topics = window.voc_top.split(',');\n }\n\n return topics;\n}\n\n/**\n * Funcion que devuelve true si la posicion es local, false si no lo es\n * @return boolean\n */\nfunction _isLocalPosition(params) {\n return params.position.includes('_local');\n}\n/**\n * FIN: Renderizado de tablas de informacion cuando vam_info_slot=1\n * --------------------------------------------------------------------------\n */\n\n/**\n * INICIO: Capturador (modo preview)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Devuelve true si hay preview para la posicion indicada o false en caso contrario\n * @returns {boolean}\n */\nfunction _capturadorExistsPreview(params) {\n return _configManager.capturadorDataPreview && _configManager.capturadorDataPreview[params.position];\n}\n\n/**\n * funcion que cambia la publicidad por defecto, por una que se indica\n */\nfunction _capturadorSetPreview(params) {\n var previewJSON, preview, idDiv, div, creatividad;\n\n try {\n previewJSON = JSON.parse(_configManager.capturadorDataPreview[params.position]);\n preview = previewJSON[0];\n idDiv = _configManager.getIdDiv(params);\n creatividad = '';\n div = $('#' + idDiv);\n div.empty();\n div.html(creatividad);\n (0, _logger.showLog)('En capturadorSetPreview. Pintada preview para la posicion ' + params.position);\n } catch (err) {\n (0, _logger.showError)('Advertising:capturadorSetPreview:Error', err);\n }\n}\n/**\n * FIN: Capturador (modo preview)\n * --------------------------------------------------------------------------\n */\n\n/***/ }),\n\n/***/ 29:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _application = __webpack_require__(2);\n\nvar _application2 = _interopRequireDefault(_application);\n\nvar _amazon = __webpack_require__(30);\n\nvar _amazon2 = _interopRequireDefault(_amazon);\n\nvar _prebid = __webpack_require__(32);\n\nvar _prebid2 = _interopRequireDefault(_prebid);\n\nvar _logger = __webpack_require__(1);\n\nvar _constants = __webpack_require__(0);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar GATEWAYS = [_amazon2.default, _prebid2.default];\nvar _window = window,\n RSVP = _window.RSVP;\n\nvar _gatewaysPromises = [];\nvar _gatewaysAdded = [];\n\nwindow.googletag = window.googletag || {};\nwindow.googletag.cmd = window.googletag.cmd || [];\nwindow.customcmd = window.customcmd || [];\n\nexports.default = Object.preventExtensions({\n /**\n * Get promises from gateways.\n * NOTE: Init method must be call before isActive method\n * @param {string} device - device type\n * @param {object} config - configGDPMedio object\n * @param {integer} dynamicId - dynamicId(infinite-scroll)\n */\n init: function init(config) {\n _gatewaysPromises = [];\n // NOTE: load promises of active gateways\n _loadActivesGateways.call(_gatewaysPromises, config);\n\n // NOTE: when all promises are resolved, rejected or timeout reached, resolve the HB-Promise\n return RSVP.all(_gatewaysPromises).then(function () {\n (0, _logger.showLog)('HBManager:init:All gateways have finished');\n _application2.default.promised(_constants.HEADER_BIDDING_READY, true);\n }).catch(function (reason) {\n (0, _logger.showError)('HBManager:init:Error in gateways', reason);\n _application2.default.promised(_constants.HEADER_BIDDING_READY, false);\n });\n },\n\n /**\n * Set targeting to DFP request\n */\n setTargetings: function setTargetings() {\n (0, _logger.showLog)('HBManager:setTargetings:Setting targetings for each added gateways');\n _gatewaysAdded.forEach(function (gateway) {\n gateway.setTargetings();\n });\n },\n\n /**\n * Check if there are gateways actives\n */\n isActive: function isActive() {\n return _gatewaysPromises.length;\n }\n});\n\n/* Private */\n\n/**\n * Load active gateways by config\n * @param {object} configGDPMedio\n */\n\nfunction _loadActivesGateways(config) {\n var _this = this;\n\n _gatewaysAdded = [];\n GATEWAYS.forEach(function (gateway) {\n if (gateway.isActive(config)) {\n (0, _logger.showLog)('HBManager:loadActivesGateways:Add promise', gateway.NAME);\n _gatewaysAdded.push(gateway);\n _this.push(gateway.getLoadPromise(config));\n }\n });\n}\n\n/***/ }),\n\n/***/ 30:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _application = __webpack_require__(2);\n\nvar _application2 = _interopRequireDefault(_application);\n\nvar _logger = __webpack_require__(1);\n\nvar _constants = __webpack_require__(0);\n\n__webpack_require__(31);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// NOTE: 'apstag' is the global variable that Amazon searches for\nvar _adserverRequestResponse = false;\n\nvar REASONS = {\n ERROR_LOAD_LIBRARY: 'ERROR_LOAD_LIBRARY',\n TIMEOUT_REACHED_GLOBAL: 'TIMEOUT_REACHED_GLOBAL',\n TIMEOUT_REACHED_FETCH_BIDS: 'TIMEOUT_REACHED_FETCH_BIDS',\n ERROR_INIT_CONFIG: 'ERROR_INIT_CONFIG'\n};\nvar _window = window,\n RSVP = _window.RSVP;\n\nvar NAME = 'AMAZON';\n\nexports.default = Object.preventExtensions({\n NAME: NAME,\n isActive: function isActive(_ref) {\n var hbAmazon = _ref.hbAmazon;\n\n if (hbAmazon) {\n (0, _logger.showLog)('Amazon:Is active');\n } else {\n (0, _logger.showLog)('Amazon:Is NOT active');\n }\n return hbAmazon;\n },\n\n /**\n * Launch amazon behaviour\n * @param {object} adUnits - adUnits config\n * @param {object} biddersConfig\n * @param {integer} timeout\n * @return {Promise}\n */\n getLoadPromise: function getLoadPromise(_ref2) {\n var hbAmazon = _ref2.hbAmazon;\n\n return new RSVP.Promise(function (resolve, reject) {\n var timeout = hbAmazon.timeout || _constants.DEFAULT_AMAZON_LOAD_TIMEOUT;\n\n _adserverRequestResponse = false;\n _loadLibrary().then(function () {\n (0, _logger.showLog)('Amazon:getLoadPromise:Library loaded');\n return _setConfig();\n }).then(function () {\n (0, _logger.showLog)('Amazon:getLoadPromise:apstag is loaded');\n return _fetchBid(hbAmazon);\n }).then(function () {\n (0, _logger.showLog)('Amazon:getLoadPromise:Bids fetched');\n resolve(true);\n }).catch(function (reason) {\n reject(reason);\n });\n\n setTimeout(function () {\n if (!_adserverRequestResponse) {\n (0, _logger.showWarn)('Amazon:getLoadPromise:Timeout reached', timeout);\n reject(REASONS.TIMEOUT_REACHED_GLOBAL);\n }\n }, timeout);\n }).catch(function (reason) {\n switch (reason) {\n case REASONS.TIMEOUT_REACHED_GLOBAL:\n (0, _logger.showLog)('Amazon:getLoadPromise:TIMEOUT reached global');\n break;\n case REASONS.TIMEOUT_REACHED_FETCH_BIDS:\n (0, _logger.showLog)('Amazon:getLoadPromise:TIMEOUT reached in _fetchBid');\n break;\n case REASONS.ERROR_LOAD_LIBRARY:\n (0, _logger.showError)('Amazon:getLoadPromise:Error loading library');\n break;\n case REASONS.ERROR_INIT_CONFIG:\n (0, _logger.showError)('Amazon:getLoadPromise:Error on init config');\n break;\n default:\n (0, _logger.showError)('Amazon:getLoadPromise:Error in Amazon process', reason);\n }\n return false;\n });\n },\n\n\n /**\n * Force setTargeting\n */\n setTargetings: function setTargetings() {\n if (_adserverRequestResponse) {\n window.customcmd.push(function () {\n window.apstag.setDisplayBids();\n (0, _logger.showLog)('Amazon:setTargetings:Targetings added');\n });\n } else {\n (0, _logger.showLog)('Amazon:setTargetings:Targetings NOT added because no response from bidders');\n }\n }\n});\n\n/* Private */\n\n/**\n * Load Amazon library\n * @return {Promise}\n */\n\nfunction _loadLibrary() {\n (0, _logger.showLog)('Amazon:loadLibrary:Loading library');\n return _application2.default.load(_constants.AMAZON_URL).catch(function (reason) {\n (0, _logger.showError)('Amazon:loadLibrary:Error', reason);\n return RSVP.reject(REASONS.ERROR_LOAD_LIBRARY);\n });\n}\n\n/**\n * Set apstag init config\n */\nfunction _setConfig() {\n return new RSVP.Promise(function (resolve, reject) {\n // NOTE: set custom config object\n (0, _logger.showLog)('Amazon:setConfig:Show Amazon config', _constants.AMAZON_CONFIG);\n try {\n window.apstag.init(_constants.AMAZON_CONFIG, function () {\n resolve();\n });\n } catch (error) {\n (0, _logger.showError)('Amazon:setConfig:Error', error);\n reject(REASONS.ERROR_INIT_CONFIG);\n }\n });\n}\n\n/**\n * Add slots config and make Amazon call\n * @param {object} config - hbAmazon config from configGDPMedio\n */\nfunction _fetchBid(config) {\n var bidConfig;\n\n bidConfig = {\n slots: config.slots,\n timeout: config.timeout || _constants.DEFAULT_AMAZON_LOAD_TIMEOUT\n };\n\n return new RSVP.Promise(function (resolve, reject) {\n (0, _logger.showLog)('Amazon:fetchBid:Add Slots', bidConfig.slots);\n (0, _logger.showLog)('Amazon:fetchBid:Request Amazon');\n window.apstag.fetchBids(bidConfig, function (bids) {\n (0, _logger.showLog)('Amazon:fetchBid:Response from Amazon', bids);\n // NOTE: When there are no bids returned, the bids array will be empty\n if (Object.keys(bids).length === 0) {\n reject(REASONS.TIMEOUT_REACHED_FETCH_BIDS);\n return;\n }\n (0, _logger.showLog)('Amazon:fetchBid:Targetings keys', window.apstag.targetingKeys());\n _adserverRequestResponse = true;\n resolve();\n });\n });\n}\n\n/***/ }),\n\n/***/ 31:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// NOTE: function to queue the apstag calls before the library load, the original load the library too(https://ams.amazon.com/webpublisher/docs/help/web-integration-documentation/integration-guide/javascript-guide/display.html)\n(function IIFE(apstagGlobalName, root) {\n if (root[apstagGlobalName]) return;\n function queue(c, r) {\n root[apstagGlobalName]._Q.push([c, r]);\n }\n root[apstagGlobalName] = {\n init: function init() {\n queue('i', arguments);\n },\n fetchBids: function fetchBids() {\n queue('f', arguments);\n },\n setDisplayBids: function setDisplayBids() {},\n targetingKeys: function targetingKeys() {\n return [];\n },\n _Q: []\n };\n})('apstag', window);\n\n/***/ }),\n\n/***/ 32:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _application = __webpack_require__(2);\n\nvar _application2 = _interopRequireDefault(_application);\n\nvar _logger = __webpack_require__(1);\n\nvar _constants = __webpack_require__(0);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar REASONS = {\n EMPTY_ADUNITS: 'EMPTY_ADUNITS',\n ERROR_LOAD_LIBRARY: 'ERROR_LOAD_LIBRARY',\n TIMEOUT_REACHED_GLOBAL: 'TIMEOUT_REACHED_GLOBAL',\n TIMEOUT_REACHED_FETCH_BIDS: 'TIMEOUT_REACHED_FETCH_BIDS'\n};\nvar _window = window,\n RSVP = _window.RSVP;\n\nvar NAME = 'PREBID';\n\nvar _adserverRequestResponse = false;\n\n// NOTE: This is the global variable that Prebid searches for\nwindow.pbjs = window.pbjs || {};\nwindow.pbjs.que = window.pbjs.que || [];\n\nexports.default = Object.preventExtensions({\n NAME: NAME,\n isActive: function isActive(_ref) {\n var hbPrebid = _ref.hbPrebid;\n\n if (hbPrebid) {\n (0, _logger.showLog)('Prebid:Is active');\n } else {\n (0, _logger.showLog)('Prebid:Is NOT active');\n }\n return hbPrebid;\n },\n\n /**\n * Launch prebid behaviour\n * @param {object} adUnits - adUnits config\n * @param {object} biddersConfig\n * @param {integer} timeout\n * @return {Promise}\n */\n getLoadPromise: function getLoadPromise(_ref2) {\n var hbPrebid = _ref2.hbPrebid;\n\n _adserverRequestResponse = false;\n return new RSVP.Promise(function (resolve, reject) {\n var timeout = hbPrebid.timeout || _constants.DEFAULT_PREBID_LOAD_TIMEOUT;\n _loadLibrary().then(function () {\n (0, _logger.showLog)('Prebid:getLoadPromise:Library loaded');\n _setConfig(hbPrebid);\n return _fetchBid(hbPrebid);\n }).then(function () {\n (0, _logger.showLog)('Prebid:getLoadPromise:Bids fetched');\n resolve(true);\n }).catch(function (reason) {\n reject(reason);\n });\n\n setTimeout(function () {\n if (!_adserverRequestResponse) {\n (0, _logger.showWarn)('Prebid:getLoadPromise:Timeout reached', timeout);\n reject(REASONS.TIMEOUT_REACHED_GLOBAL);\n }\n }, timeout);\n }).catch(function (reason) {\n switch (reason) {\n case REASONS.TIMEOUT_REACHED_GLOBAL:\n (0, _logger.showLog)('Prebid:getLoadPromise:TIMEOUT reached global');\n break;\n case REASONS.TIMEOUT_REACHED_FETCH_BIDS:\n (0, _logger.showLog)('Prebid:getLoadPromise:TIMEOUT reached in _fetchBid');\n break;\n case REASONS.ERROR_LOAD_LIBRARY:\n (0, _logger.showError)('Prebid:getLoadPromise:Error loading library', reason);\n break;\n case REASONS.EMPTY_ADUNITS:\n (0, _logger.showError)('Prebid:getLoadPromise:There are not adUnits');\n break;\n default:\n (0, _logger.showError)('Prebid:getLoadPromise:Error in Prebid process', reason);\n }\n return false;\n });\n },\n\n\n /**\n * Force setTargeting\n */\n setTargetings: function setTargetings() {\n if (_adserverRequestResponse) {\n window.customcmd.push(function () {\n window.pbjs.que.push(function () {\n window.pbjs.setTargetingForGPTAsync();\n (0, _logger.showLog)('Prebid:setTargetings:Targetings added');\n });\n });\n } else {\n (0, _logger.showLog)('Prebid:setTargetings:Targetings NOT added because no response from bidders');\n }\n }\n});\n\n/* Private */\n\n/**\n * Load prebid library\n * @return {Promise}\n */\n\nfunction _loadLibrary() {\n (0, _logger.showLog)('Prebid:loadLibrary:Loading library');\n return _application2.default.load(_constants.PREBID_URL).catch(function (reason) {\n (0, _logger.showError)('Prebid:loadLibrary', reason);\n return RSVP.reject(REASONS.ERROR_LOAD_LIBRARY);\n });\n}\n\nfunction _setConfig(hbPrebid) {\n var biddersConfig, pbjsConfig;\n\n biddersConfig = hbPrebid.biddersConfig;\n // NOTE: set custom config object\n pbjsConfig = {\n debug: _constants.SHOW_LOGS,\n enableSendAllBids: hbPrebid.enableSendAllBids || true,\n priceGranularity: 'dense'\n };\n\n (0, _logger.showLog)('Prebid:setConfig:biddersConfig', biddersConfig);\n window.pbjs.bidderSettings = _fetchBiddersSettings(biddersConfig);\n window.pbjs.setConfig(pbjsConfig);\n (0, _logger.showLog)('Prebid:setConfig:Show Prebid config', window.pbjs.getConfig());\n}\n\n/**\n * Add adUnits config and make prebid call\n * @param {object} config - hbPrebid config from configGDPMedio\n */\nfunction _fetchBid(hbPrebid) {\n var adUnits, timeout;\n\n adUnits = hbPrebid.adUnits;\n timeout = hbPrebid.timeout || _constants.DEFAULT_PREBID_LOAD_TIMEOUT;\n\n return new RSVP.Promise(function (resolve, reject) {\n if (!adUnits.length) {\n (0, _logger.showLog)('Prebid:fetchBid:There are not adUnits');\n reject(REASONS.EMPTY_ADUNITS);\n return;\n }\n window.pbjs.que.push(function () {\n (0, _logger.showLog)('Prebid:fetchBid:Add adUnits', adUnits);\n window.pbjs.addAdUnits(adUnits);\n (0, _logger.showLog)('Prebid:fetchBid:Request Prebid');\n window.pbjs.requestBids({\n timeout: timeout,\n bidsBackHandler: function bidsBackHandler(biddersResponse) {\n (0, _logger.showLog)('Prebid:fetchBid:Response from Prebid', biddersResponse);\n if (Object.keys(biddersResponse).length === 0) {\n reject(REASONS.TIMEOUT_REACHED_FETCH_BIDS);\n return;\n }\n (0, _logger.showLog)('Prebid:fetchBid:Targetings', window.pbjs.getAdserverTargeting());\n _adserverRequestResponse = true;\n resolve();\n }\n });\n });\n });\n}\n\n/**\n * Build bidders settings from config\n * @param {object} biddersConfig - biddersConfig from configGDPMedio.hbPrebid\n * @return {object} bidderSettings\n */\nfunction _fetchBiddersSettings(biddersConfig) {\n var bidderSettings = {};\n\n Object.keys(biddersConfig).forEach(function (bidderName) {\n bidderSettings[bidderName] = {\n bidCpmAdjustment: function bidCpmAdjustment(bidCpm, bid) {\n var percent;\n\n percent = 1 - ('percent' in biddersConfig[bidderName] ? biddersConfig[bidderName].percent / 100 : 0);\n // NOTE: adjust the bid in real time before the auction takes place\n (0, _logger.showLog)('Prebid:fetchBiddersSettings:bidCpmAdjustment Bidder is:', bid.bidderCode, 'with percent:', percent);\n // NOTE: return bidCpm * .85; Ex.: rest 15% to the gross price\n return bidCpm * percent;\n }\n };\n });\n\n return bidderSettings;\n}\n\n/***/ }),\n\n/***/ 33:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _constants = __webpack_require__(0);\n\nvar _logger = __webpack_require__(1);\n\nexports.default = Object.preventExtensions({\n processConfig: function processConfig(configManager) {\n (0, _logger.showLog)('HBConfigManager:processConfig:Process HB config');\n _processPrebidConfig(configManager);\n _processAmazonConfig(configManager);\n }\n});\n\n/**\n * Process Prebid HB config to set dynamicId\n * @param {object} configManager\n */\n\nfunction _processPrebidConfig(configManager) {\n var property, adUnits, newConfig, biddersDisabled;\n var headerBidding = configManager.configGDPMedio.headerBidding;\n\n\n (0, _logger.showLog)('HBConfigManager:processPrebidConfig:Process Prebid config');\n\n if (!headerBidding) {\n (0, _logger.showLog)('HBConfigManager:processPrebidConfig:There are not Prebid configuration');\n configManager.configGDPMedio.hbPrebid = null;\n return;\n }\n\n property = 'adUnits_' + configManager.deviceType;\n if (!(property in headerBidding) || !headerBidding[property].length) {\n (0, _logger.showLog)('HBConfigManager:processPrebidConfig:There are not bidders to device type', configManager.deviceType);\n configManager.configGDPMedio.hbPrebid = null;\n return;\n }\n\n // NOTE: 'disabled' key has the disabled bidders separated by comma\n biddersDisabled = [];\n if ('disabled' in headerBidding.biddersConfig) {\n biddersDisabled = headerBidding.biddersConfig.disabled.map(function (current) {\n return current.trim();\n });\n }\n\n adUnits = [];\n headerBidding[property].forEach(function (current) {\n var position,\n newBids = [];\n\n position = current.code.replace(new RegExp('(' + _constants.OLD_PREFIX + '|' + _constants.NEW_SUFFIX + ')', 'g'), '');\n if (!configManager.existePosEnConfigGDPMedio(position)) {\n (0, _logger.showWarn)('HBConfigManager:processPrebidConfig:Position ' + position + ' does not exists in configGDPMedio');\n return;\n }\n if (!configManager.isActive({ position: position })) {\n (0, _logger.showWarn)('HBConfigManager:processPrebidConfig:Position ' + position + ' is not active');\n return;\n }\n\n current.code += configManager.dynamicId ? '-' + configManager.dynamicId : '';\n\n if (biddersDisabled.length) {\n current.bids.forEach(function (bid) {\n if (biddersDisabled.indexOf(bid.bidder) < 0) {\n newBids.push(bid);\n }\n });\n } else {\n newBids = current.bids;\n }\n\n if (!newBids.length) {\n (0, _logger.showWarn)('HBConfigManager:processPrebidConfig:Remove adUnit ' + current.code + ' because all bidders are disabled');\n return;\n }\n\n current.bids = newBids;\n adUnits.push(current);\n });\n\n newConfig = {\n adUnits: adUnits,\n biddersConfig: headerBidding.biddersConfig,\n enableSendAllBids: headerBidding.enableSendAllBids,\n timeout: headerBidding.timeout || _constants.DEFAULT_PREBID_LOAD_TIMEOUT\n };\n\n delete configManager.configGDPMedio.headerBidding;\n configManager.configGDPMedio.hbPrebid = newConfig;\n}\n\n/**\n * Process Amazon HB config to set dynamicId and slotName\n * @param {object} configManager\n */\nfunction _processAmazonConfig(configManager) {\n var property, slots, newConfig;\n var hbAmazon = configManager.configGDPMedio.hbAmazon;\n\n\n if (!hbAmazon) {\n (0, _logger.showLog)('HBConfigManager:processAmazonConfig:There are not Amazon configuration');\n configManager.configGDPMedio.hbAmazon = null;\n return;\n }\n\n property = 'slots_' + configManager.deviceType;\n if (!(property in hbAmazon) || !hbAmazon[property].length) {\n (0, _logger.showLog)('HBConfigManager:processAmazonConfig:There are not slots to device type', configManager.deviceType);\n configManager.configGDPMedio.hbAmazon = null;\n return;\n }\n\n slots = [];\n hbAmazon[property].forEach(function (current) {\n var position;\n\n position = current.slotID.replace(new RegExp('(' + _constants.OLD_PREFIX + '|' + _constants.NEW_SUFFIX + ')', 'g'), '');\n if (!configManager.existePosEnConfigGDPMedio(position)) {\n (0, _logger.showWarn)('HBConfigManager:processAmazonConfig:Position ' + position + ' does not exists in configGDPMedio');\n return;\n }\n if (!configManager.isActive({ position: position })) {\n (0, _logger.showWarn)('HBConfigManager:processAmazonConfig:Position ' + position + ' is not active');\n return;\n }\n\n current.slotName = _getAmazonSlotName(configManager, position);\n current.slotID += configManager.dynamicId ? '-' + configManager.dynamicId : '';\n slots.push(current);\n });\n\n newConfig = {\n slots: slots,\n timeout: hbAmazon.timeout || _constants.DEFAULT_AMAZON_LOAD_TIMEOUT\n };\n\n configManager.configGDPMedio.hbAmazon = newConfig;\n}\n\nfunction _getAmazonSlotName(configManager, position) {\n var params;\n\n var container$ = $('[data-voc-vam-position = \\'' + position + '\\']', configManager.context$);\n if (container$.length) {\n params = configManager.normalizaParams(container$);\n } else {\n params = configManager.normalizaParams({ position: position });\n }\n\n return configManager.getOasSitepage(params);\n}\n\n/***/ }),\n\n/***/ 4:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nexports.isEmpty = isEmpty;\nexports.getParameterByName = getParameterByName;\nexports.load = load;\nexports.cargaLibreriaGPT = cargaLibreriaGPT;\nexports.extend = extend;\nexports.endsWith = endsWith;\nexports.startsWith = startsWith;\n\nvar _logger = __webpack_require__(1);\n\nvar _constants = __webpack_require__(0);\n\nvar _files = {};\n\n/**\n * Check if a object is empty or is undefined. Not be used for arrays or strings\n * @param {mixed} value\n * @return {boolean}\n */\nfunction isEmpty(value) {\n // OK\n if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && Object.keys(value).length || (typeof value === 'undefined' ? 'undefined' : _typeof(value)) !== 'object' && typeof value !== 'undefined') {\n return false;\n }\n\n return true;\n}\n\n/**\n * Get a URL param value\n * @param {string} paramName\n * @param {string} url\n */\nfunction getParameterByName(paramName) {\n var url = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window.location.href;\n\n var regExp, results;\n\n // NOTE: replace the '[element]' with '\\[element\\]' using '\\\\$&'\n paramName = paramName.replace(/[[\\]]/g, '\\\\$&');\n regExp = new RegExp('[?&]' + paramName + '(=([^&#]+)|&|#|$)');\n results = regExp.exec(url);\n\n if (!results) return '';\n if (!results[2]) return '';\n\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n}\n\nfunction load(url) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var promise, file, key;\n\n key = url.split('?').shift();\n if (Object.hasOwnProperty.call(_files, key)) {\n return _files[key];\n }\n\n options.type = options.type || 'script';\n\n file = document.createElement(options.type);\n switch (options.type) {\n case 'link':\n file.type = 'text/css';\n file.rel = 'stylesheet';\n file.href = url;\n break;\n case 'script':\n default:\n file.type = 'text/javascript';\n file.src = url;\n file.async = true;\n options.text && (file.text = options.text);\n break;\n }\n\n promise = new window.RSVP.Promise(function (resolve, reject) {\n file.onload = function () {\n return resolve(file);\n };\n file.onerror = reject;\n\n document.head.appendChild(file);\n });\n\n _files[key] = promise;\n return promise;\n}\n\n/**\n * Carga del JS para la publicidad de Google\n */\nfunction cargaLibreriaGPT() {\n var gads, useSSL, node;\n window.googletag = window.googletag || {};\n window.googletag.cmd = window.googletag.cmd || [];\n window.customcmd = window.customcmd || [];\n try {\n if ($('script[src*=\\'' + _constants.GPT_URL + '\\']').length === 0) {\n gads = document.createElement('script');\n gads.async = true;\n gads.type = 'text/javascript';\n useSSL = document.location.protocol === 'https:';\n gads.src = (useSSL ? 'https:' : 'http:') + ('//' + _constants.GPT_URL);\n node = document.getElementsByTagName('script')[0];\n node.parentNode.insertBefore(gads, node);\n window.googletag.cmd.push(function () {\n var func;\n (0, _logger.showLog)('First function', window.customcmd.length);\n while (window.customcmd.length) {\n func = window.customcmd.splice(0, 1)[0];\n window.googletag.cmd.push(func);\n }\n (0, _logger.showLog)('Finish Pushing to googletag.cmd', window.customcmd.length);\n window.customcmd = window.googletag.cmd;\n });\n }\n } catch (err) {\n (0, _logger.showError)('Utils:cargaLibreriaGPT:Error loading GPT library');\n }\n}\n\nfunction extend() {\n var args = arguments;\n var objectValues = Object.keys(args).map(function (e) {\n return args[e];\n });\n // sustituto de Object.values(args)\n\n objectValues.forEach(function (argument, pos) {\n pos !== 0 && Object.keys(argument).forEach(function (key) {\n args[0][key] = argument[key];\n });\n });\n\n return args[0];\n}\n\nfunction endsWith(str, suffix) {\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\n}\n\nfunction startsWith(str, needle) {\n return str.indexOf(needle) === 0;\n}\n\n/***/ }),\n\n/***/ 7:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.extend = extend;\nfunction extend(destination, source) {\n Object.keys(source).forEach(function (key) {\n destination[key] = source[key];\n });\n}\n\n/***/ }),\n\n/***/ 79:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(21);\n\n\n/***/ }),\n\n/***/ 8:\n/***/ (function(module, exports) {\n\nmodule.exports = {\"name\":\"vam\",\"version\":\"3.10.0\",\"description\":\"\",\"main\":\"src/index.js\",\"scripts\":{\"test\":\"./node_modules/.bin/nyc ./node_modules/.bin/mocha-webpack tests/index.js --require jsdom-global/register --webpack-config webpack.test.js\",\"tdd\":\"./node_modules/.bin/mocha-webpack tests/index.js --require jsdom-global/register --webpack-config webpack.test.js --watch\",\"start\":\"./node_modules/.bin/webpack-dev-server --open --config webpack.dev.js\",\"build\":\"./node_modules/.bin/webpack --optimize-minimize --config webpack.prod.js\",\"prebid\":\"cd ./node_modules/prebid.js/ && npm install && \\\"./node_modules/.bin/gulp\\\" build --modules=../../src/header-bidding/prebid-modules.json && cd ../..\"},\"contributors\":[\"Jose Manuel Ortega \",\"Ernesto V. \",\"Iván Pérez \"],\"license\":\"SEE LICENSE IN LICENSE.md\",\"devDependencies\":{\"babel-core\":\"^6.26.0\",\"babel-eslint\":\"^8.0.1\",\"babel-loader\":\"^7.1.2\",\"babel-plugin-syntax-dynamic-import\":\"^6.18.0\",\"babel-polyfill\":\"^6.16.0\",\"babel-preset-env\":\"^1.6.1\",\"chai\":\"^4.1.2\",\"chalk\":\"^1.1.3\",\"clean-webpack-plugin\":\"^0.1.17\",\"copy-webpack-plugin\":\"^4.3.1\",\"css-loader\":\"^0.28.4\",\"eslint\":\"^4.7.2\",\"eslint-config-airbnb-base\":\"^12.0.1\",\"eslint-plugin-import\":\"^2.7.0\",\"extract-text-webpack-plugin\":\"^1.0.1\",\"file-loader\":\"^1.1.6\",\"html-loader\":\"^0.5.5\",\"html-webpack-plugin\":\"^2.30.1\",\"json-loader\":\"^0.5.7\",\"mocha\":\"^4.0.1\",\"mocha-loader\":\"^1.0.0\",\"mocha-phantomjs\":\"^4.1.0\",\"mocha-webpack\":\"^1.0.1\",\"nyc\":\"^11.4.1\",\"style-loader\":\"^0.18.2\",\"webpack\":\"^3.10.0\",\"webpack-dev-server\":\"^2.9.7\",\"webpack-merge\":\"^4.1.1\",\"webpack-shell-plugin\":\"^0.5.0\"},\"dependencies\":{\"jquery-inview\":\"^1.1.2\",\"js-cookie\":\"^2.1.4\",\"prebid.js\":\"^0.34.1\",\"rijndael-js\":\"^1.0.0\",\"rsvp\":\"^3.5.0\"}}\n\n/***/ }),\n\n/***/ 9:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _configManager = __webpack_require__(33);\n\nvar _configManager2 = _interopRequireDefault(_configManager);\n\nvar _application = __webpack_require__(2);\n\nvar _application2 = _interopRequireDefault(_application);\n\nvar _utils = __webpack_require__(4);\n\nvar _logger = __webpack_require__(1);\n\nvar _constants = __webpack_require__(0);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar URL_PARAM_ALL = 'all';\n\nvar _dynamicId = -1,\n _prevEncryptedCode = '',\n _prevUnencryptedCode = '';\n\nvar ConfigManager = function () {\n function ConfigManager(configGDPMedio, configGDP) {\n _classCallCheck(this, ConfigManager);\n\n _prevEncryptedCode = '';\n _prevUnencryptedCode = '';\n this.configGDPMedio = (0, _utils.extend)({}, configGDPMedio);\n this.configGDP = (0, _utils.extend)({}, configGDP);\n this.deviceType = _getTipoDispositivo.call(this);\n this.pageType = _getTipoPagina.call(this);\n this.dynamicId = ++_dynamicId;\n this.context$ = null;\n this.isResponsiveMedia = _isResponsiveMedia.call(this);\n this.capturadorDataPreview = '';\n this.valueUserType = _getValueUser();\n this.delayedPositions = _getDelayed.call(this);\n this.prioritizedPositions = _getPrioritized.call(this);\n this.globalTargetings = _getDefineSlotTargetings.call(this);\n }\n\n /**\n * Process the configGDPMedia\n */\n\n\n _createClass(ConfigManager, [{\n key: 'processConfig',\n value: function processConfig() {\n _configManager2.default.processConfig(this);\n }\n\n /**\n * Check if a position is enabled or disabled\n * @param {object} params\n * @return {boolean}\n */\n\n }, {\n key: 'isActive',\n value: function isActive(params) {\n // OK\n var container$, configPosition, configSchedules, currentDate, found;\n\n // check if all positions or the given in params are actives by URL\n if ('forceActivePosition' in this.configGDPMedio && (this.configGDPMedio.forceActivePosition.indexOf('1') > -1 || this.configGDPMedio.forceActivePosition.indexOf(URL_PARAM_ALL) > -1 || this.configGDPMedio.forceActivePosition.indexOf(params.position) > -1)) {\n return true;\n }\n\n container$ = $('#' + this.getIdDiv(params));\n configPosition = _application2.default.lookup('posicion_' + this.deviceType + '.' + params.position, this.configGDP);\n\n // Checking that the config of the device type is added\n\n if (!(0, _utils.isEmpty)(configPosition)) {\n // Check if the position is active for the page type\n if (configPosition.desactivadoen && configPosition.desactivadoen.length && configPosition.desactivadoen !== '' && configPosition.desactivadoen.indexOf(this.pageType) !== -1) {\n (0, _logger.showLog)('ConfigManager:isActive:Position ' + params.position + ' is not active for the pageType ' + this.pageType);\n container$.trigger(_constants.SLOT_INACTIVE);\n return false;\n }\n\n // Check if the position has programming\n currentDate = Math.round(+new Date() / 1000);\n found = false;\n configSchedules = _application2.default.lookup('posicion_' + this.deviceType + '.' + params.position + '.programaciones', this.configGDP);\n if (!(0, _utils.isEmpty)(configSchedules) && configSchedules.length) {\n found = configSchedules.some(function (current) {\n var beginDate, endDate;\n beginDate = current.programacion ? current.programacion.fecha_in : 0;\n endDate = current.programacion ? current.programacion.fecha_fin : 0;\n return (beginDate === 0 || currentDate >= beginDate) && (endDate === 0 || currentDate <= endDate);\n });\n\n if (!found) {\n (0, _logger.showLog)('ConfigManager:isActive:Position ' + params.position + ' is not active for the current date');\n container$.trigger(_constants.SLOT_INACTIVE);\n return false;\n }\n }\n } else {\n (0, _logger.showLog)('ConfigManager:isActive:Position ' + params.position + ' is not active');\n container$.trigger(_constants.SLOT_INACTIVE);\n return false;\n }\n\n return true;\n }\n\n /**\n * Generate position identifier\n * FUTURE: Clean this method when all pages(ABC, MH, PPLL) use the\n * new ADS strategy(PREFIX or SUFIX come from GDP)\n * @param {object} params\n * @return {string}\n */\n\n }, {\n key: 'getIdDiv',\n value: function getIdDiv(params) {\n // OK\n var adsId, dynamicId;\n\n (0, _logger.showLog)('ConfigManager:getIdDiv:Dinamic ID', params.dynamicId, this.dynamicId);\n dynamicId = this.dynamicId ? '-' + this.dynamicId : '';\n if (params.dynamicId !== undefined) {\n dynamicId = params.dynamicId ? '-' + params.dynamicId : '';\n }\n if (params.id && typeof params.id === 'string') {\n (0, _logger.showLog)('ConfigManager:getIdDiv:With Id param', params);\n adsId = params.id.indexOf(_constants.OLD_PREFIX) > -1 ? params.id : '' + _constants.OLD_PREFIX + params.id;\n if (!$('#' + adsId).length) {\n (0, _logger.showLog)('ConfigManager:getIdDiv:With Id param. Not found ID', adsId);\n adsId = params.id.indexOf(_constants.NEW_SUFFIX) > -1 ? params.id : '' + params.id + _constants.NEW_SUFFIX;\n }\n adsId += (0, _utils.endsWith)(adsId, dynamicId) ? '' : dynamicId;\n (0, _logger.showLog)('ConfigManager:getIdDiv:With Id param. Id calculated', adsId);\n } else {\n (0, _logger.showLog)('ConfigManager:getIdDiv:No Id param', params);\n adsId = '' + _constants.OLD_PREFIX + params.position;\n if (!$('#' + adsId).length) {\n (0, _logger.showLog)('ConfigManager:getIdDiv:No Id param. Not found ID', adsId);\n adsId = '' + params.position + _constants.NEW_SUFFIX + dynamicId;\n }\n (0, _logger.showLog)('ConfigManager:getIdDiv:No Id param. Id calculated', adsId);\n }\n\n return adsId;\n }\n\n /**\n * Check if position exist in media config\n * @param {string} position\n * @param {string} deviceType\n * @returns {boolean} - TRUE if exist, FALSE otherwise\n */\n\n }, {\n key: 'existePosEnConfigGDPMedio',\n value: function existePosEnConfigGDPMedio(position) {\n var deviceType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.deviceType;\n // OK\n var idAds;\n\n if (!(0, _utils.isEmpty)(_application2.default.lookup('posicion_' + deviceType + '.' + position, this.configGDPMedio))) {\n return true;\n }\n // If position do not exist, hide the container DIV\n idAds = this.getIdDiv({ position: position });\n $('#' + idAds).length && $('#' + idAds).hide();\n\n return false;\n }\n\n /**\n * Normalize the position's parameters\n */\n\n }, {\n key: 'normalizaParams',\n value: function normalizaParams(data) {\n // OK\n var params, outOfPage, idAds, offset;\n\n params = {};\n // jQuery object or JSON object\n if (data instanceof $) {\n (0, _utils.extend)(params, _constants.DEFAULTS, {\n position: data.data('voc-vam-position') || null,\n serverType: data.data('voc-vam-servertype') || _getServerType.call(this, params.position),\n hideNoAds: data.data('voc-vam-hidenoads'),\n outOfPage: data.data('voc-vam-outofpage'),\n defineSlot: data.data('voc-vam-defineslot') || _getDefineSlotParam.call(this),\n refresh: data.data('voc-vam-refresh'),\n responsive: data.data('voc-vam-responsive'),\n pre_callback: data.data('voc-vam-precallback') || '',\n pre_event: data.data('voc-vam-preevent') || '',\n post_callback: data.data('voc-vam-postcallback') || '',\n post_event: data.data('voc-vam-postevent') || '',\n oas: data.data('voc-vam-oas') || '',\n tags: data.data('voc-vam-tags'),\n dynamicId: this.dynamicId\n });\n } else {\n (0, _utils.extend)(params, _constants.DEFAULTS, {\n position: data.position || null,\n id: data.id || null,\n serverType: data.serverType || _getServerType.call(this, params.position),\n hideNoAds: data.hideNoAds,\n outOfPage: data.outOfPage,\n defineSlot: data.defineSlot || _getDefineSlotParam.call(this),\n refresh: data.refresh,\n responsive: data.responsive,\n pre_callback: data.pre_callback || '',\n pre_event: data.pre_event || '',\n post_callback: data.post_callback || '',\n post_event: data.post_event || '',\n oas: data.oas || '',\n tags: data.tags,\n dynamicId: data.dynamicId || this.dynamicId\n });\n }\n\n // if some required parameter is missing, return null\n if (params.position === null) {\n (0, _logger.showWarn)('ConfigManager:normalizaParams:Position param is required', data);\n return null;\n }\n\n if (!this.existePosEnConfigGDPMedio(params.position)) {\n (0, _logger.showWarn)('ConfigManager:normalizaParams:Position ' + params.position + ' does not exists in configGDPMedio');\n return null;\n }\n\n // OutOfPage param\n if (typeof params.outOfPage !== 'boolean') {\n outOfPage = _application2.default.lookup('posicion_' + this.deviceType + '.' + params.position + '.outofpage', this.configGDPMedio);\n params.outOfPage = (0, _utils.isEmpty)(outOfPage) || typeof outOfPage !== 'boolean' ? false : outOfPage;\n }\n\n // ads container DIV\n idAds = this.getIdDiv(params);\n if (!$('#' + idAds).length && $('[data-voc-vam-position = \\'' + params.position + '\\']', this.context$).length && !$('[data-voc-vam-position = \\'' + params.position + '\\']', this.context$).attr('id')) {\n $('[data-voc-vam-position = \\'' + params.position + '\\']', this.context$).attr('id', idAds);\n }\n params.id = idAds;\n\n // global targetings\n if (!params.tags) {\n params.tags = _application2.default.lookup('posicion_' + this.deviceType + '.' + params.position + '.targetings', this.configGDPMedio) || {};\n }\n\n // offset\n offset = _application2.default.lookup('posicion_' + this.deviceType + '.' + params.position + '.offset', this.configGDP);\n if (!(0, _utils.isEmpty)(offset)) {\n $('#' + params.id).attr('data-offset', offset);\n (0, _logger.showLog)('ConfigManager:normalizaParams:Offset ' + offset + ' configurer for position: ' + params.position);\n }\n\n // build the responsive parameter if it doesn't come in the data\n if (!params.outOfPage && !params.responsive && this.isResponsiveMedia) {\n params.responsive = _getResponsiveParam.call(this, params);\n }\n\n return params;\n }\n\n /**\n * Get OAS value from config\n * FUTURE: create final OAS config on GDP\n * @return string\n */\n\n }, {\n key: 'getOasSitepage',\n value: function getOasSitepage() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var oasSitepage, decryptedURL, legacyAdUnit, regExp, result, macroEdition, edition;\n\n if (params.oas) {\n oasSitepage = params.oas.trim();\n } else {\n oasSitepage = _application2.default.lookup('OAS.' + this.deviceType + '.' + this.pageType, this.configGDP);\n oasSitepage = (0, _utils.isEmpty)(oasSitepage) ? '' : oasSitepage.trim();\n }\n\n // check if adUnit is forced by URL\n try {\n decryptedURL = ConfigManager.decryptedURL();\n if (window.location.href.indexOf('vam_adunit=') > -1 || window.location.href.indexOf('adunit=') > -1 || decryptedURL !== '') {\n legacyAdUnit = window.location.href.indexOf('vam_adunit=') > -1 ? 'vam_adunit' : 'adunit';\n regExp = new RegExp('(\\\\?|&)' + legacyAdUnit + '=([^?&]+)');\n result = decryptedURL !== '' ? regExp.exec(decryptedURL) : regExp.exec(window.location.href);\n\n if (result) {\n oasSitepage = result[2].indexOf('/' + _constants.GPT_ID_VOCENTO + '/') > -1 ? result[2] : '/' + _constants.GPT_ID_VOCENTO + '/' + result[2];\n }\n }\n } catch (err) {\n (0, _logger.showError)('ConfigManager:getOasSitepage:Error checking adUnit', err);\n }\n\n // check macro edition\n try {\n regExp = /{(\\/)?edicion(\\/)?}/;\n macroEdition = regExp.exec(oasSitepage);\n if (macroEdition) {\n edition = _getEdition();\n if ((0, _utils.startsWith)(macroEdition[0], '{/') && edition) edition = '/' + edition;\n if ((0, _utils.endsWith)(macroEdition[0], '/}') && edition) edition += '/';\n\n oasSitepage = oasSitepage.replace(macroEdition[0], edition);\n }\n } catch (err) {\n (0, _logger.showError)('ConfigManager:getOasSitepage:Error checking edition', err);\n }\n\n // Guardamos el valor del adunit calculado por si no lo esta\n if (typeof this.configGDP.OAS.adunit === 'undefined') this.configGDP.OAS.adunit = oasSitepage;\n\n return oasSitepage;\n }\n\n /**\n * Calculate the sizes for a given position\n * FUTURE: move config to GDP\n * @param {string} position\n * @param {string} deviceType - default is _deviceType\n * @return {object}\n */\n\n }, {\n key: 'getSizesGoogle',\n value: function getSizesGoogle(position) {\n var deviceType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.deviceType;\n // OK\n var configSize, size, defineSlot;\n\n configSize = _application2.default.lookup('posicion_' + deviceType + '.' + position + '.dimensiones', this.configGDPMedio);\n\n size = !(0, _utils.isEmpty)(configSize) ? configSize : '[]';\n defineSlot = _getDefineSlotParam.call(this);\n\n if (size.indexOf('[fluid]') > -1) {\n if (!defineSlot) return ['fluid'];\n\n size = size.replace('[fluid]', '\\'fluid\\'');\n }\n\n return defineSlot ? size : JSON.parse(size);\n }\n\n /**\n * Detect forced config by URL.\n * Support params:\n * vam_adunit\n * vam_cmvkey\n * vam_debug\n * vam_enable_single_request\n * vam_enable_sync_rendering\n * vam_enable_krux\n * vam_force_positions\n * vam_info_slot\n */\n\n }, {\n key: 'checkConfigFromURL',\n value: function checkConfigFromURL() {\n var legacyCode, code, prebidDisabledBidders;\n if (typeof window.location === 'undefined') return;\n\n // Disable Prebid\n if ('headerBidding' in this.configGDPMedio && window.location.href.indexOf('vam_prebid_disabled=') > -1) {\n prebidDisabledBidders = (0, _utils.getParameterByName)('vam_prebid_disabled', window.location.href).split(',');\n this.configGDPMedio.headerBidding.biddersConfig.disabled = prebidDisabledBidders;\n if (prebidDisabledBidders.indexOf(URL_PARAM_ALL) > -1) {\n this.configGDPMedio.headerBidding = null;\n }\n }\n\n // Disable HB Amazon\n if ('hbAmazon' in this.configGDPMedio) {\n this.configGDPMedio.hbAmazon = window.location.href.indexOf('vam_amazon_disabled=1') > -1 || window.location.href.indexOf('gdp_enableAmazonAds=0') > -1 || !this.configGDPMedio.enableAmazonAds ? false : this.configGDPMedio.hbAmazon;\n }\n\n // Single Request\n this.configGDPMedio.singleRequest = window.location.href.indexOf('vam_single_request=1') > -1 || window.location.href.indexOf('gdp_singleRequest=1') > -1 || this.configGDPMedio.singleRequest;\n\n // SyncRendering\n this.configGDPMedio.syncRendering = window.location.href.indexOf('vam_sync_rendering=1') > -1 || window.location.href.indexOf('gdp_syncRendering=1') > -1 || this.configGDPMedio.syncRendering;\n\n // Krux\n this.configGDPMedio.enableKrux = window.location.href.indexOf('vam_krux=1') > -1 || window.location.href.indexOf('gdp_enableKrux=1') > -1 || this.configGDPMedio.enableKrux;\n\n // Force active position\n this.configGDPMedio.forceActivePosition = window.location.href.indexOf('vam_force_positions=') > -1 ? (0, _utils.getParameterByName)('vam_force_positions', window.location.href).split(',') : (0, _utils.getParameterByName)('gdp_forceActivePosition', window.location.href).split(',');\n\n // InfoSlot\n this.configGDPMedio.infoSlot = window.location.href.indexOf('vam_info_slot=1') > -1 || window.location.href.indexOf('gdp_infoSlot=1') > -1;\n if (this.configGDPMedio.infoSlot) {\n (0, _utils.load)(_constants.VAM_CSS_URL, {\n type: 'link'\n }).then(function () {\n (0, _logger.showLog)('ConfigManager:checkConfigFromURL:CSS loaded', _constants.VAM_CSS_URL);\n });\n }\n\n // Capturador (modo preview)\n this.configGDPMedio.preview = window.location.href.indexOf('vam_preview') > -1 || window.location.href.indexOf('preview') > -1;\n if (this.configGDPMedio.preview) {\n (0, _logger.showLog)('ConfigManager:checkConfigFromURL:Detected capture mode. Call capture SW');\n this.capturadorDataPreview = _capturadorGetPreviewData();\n\n // En modo capturador no pondremos priorizadas ni retrasadas\n this.configGDP.priorizadas = {};\n this.configGDP.retrasadas = {};\n }\n\n // Previsualizador\n if (window.location.href.indexOf('vam_code=') > -1 || window.location.href.indexOf('code=') > -1) {\n (0, _logger.showLog)('ConfigManager:checkConfigFromURL:Detected preview mode');\n legacyCode = window.location.href.indexOf('vam_code=') > -1 ? 'vam_code' : 'code';\n code = (0, _utils.getParameterByName)(legacyCode, window.location.href);\n _prevEncryptedCode = decodeURI(code);\n\n // En modo previsualizador no pondremos priorizadas ni retrasadas\n this.configGDP.priorizadas = {};\n this.configGDP.retrasadas = {};\n\n if (_prevEncryptedCode !== '') {\n __webpack_require__.e/* import() */(0).then(__webpack_require__.bind(null, 39)).then(function (Rijndael) {\n (0, _logger.showLog)('ConfigManager:Rijndael library is loaded', Rijndael);\n _decriptUrl(Rijndael);\n });\n }\n }\n }\n\n /**\n * Comprobacion de si existen excepciones para la pagina donde nos encontramos.\n * @return object configGDP\n */\n\n }, {\n key: 'checkExceptions',\n value: function checkExceptions() {\n var value, unixTime, beginDate, endDate;\n\n if (this.configGDPMedio.excepciones && Object.keys(this.configGDPMedio.excepciones).length > 0) {\n (0, _logger.showLog)('ConfigManager:checkExceptions:There are configured exceptions');\n Object.keys(this.configGDPMedio.excepciones).forEach(function (key) {\n if (key !== 'priorizadas' && key !== 'retrasadas') {\n if (window.location.pathname === key || window.location.pathname.match(key)) {\n value = this.configGDPMedio.excepciones[key];\n unixTime = Math.round(new Date() / 1000);\n beginDate = value.fecha_in;\n endDate = value.fecha_fin;\n if ((beginDate === 0 || beginDate <= unixTime) && (endDate === 0 || unixTime <= endDate)) {\n this.configGDP = value;\n (0, _logger.showLog)('ConfigManager:checkExceptions:Applying the following exception:\"' + key + '\"');\n }\n }\n }\n }, this);\n }\n }\n\n /**\n * Funcion que devuelve la URL desencriptada\n * @returns {string}\n */\n\n }, {\n key: 'isDelayed',\n\n\n /**\n * Funcion que comprueba si una posicion es retrasada\n * FUTURE: listaRetrasadas come in array format from GDP\n */\n value: function isDelayed(position) {\n return this.thereAreDelayedPositions() && this.delayedPositions.indexOf(position) > -1;\n }\n }, {\n key: 'thereAreDelayedPositions',\n value: function thereAreDelayedPositions() {\n return this.delayedPositions.length;\n }\n\n /**\n * Funcion que comprueba si una posicion es retrasada\n * FUTURE: listaRetrasadas come in array format from GDP\n */\n\n }, {\n key: 'isPrioritized',\n value: function isPrioritized(position) {\n return this.thereArePrioritizedPositions() && this.prioritizedPositions.indexOf(position) > -1;\n }\n }, {\n key: 'thereArePrioritizedPositions',\n value: function thereArePrioritizedPositions() {\n return this.prioritizedPositions.length;\n }\n }, {\n key: 'removePrioritizedPosition',\n value: function removePrioritizedPosition(position) {\n var index = this.prioritizedPositions.indexOf(position);\n\n if (index !== -1) {\n this.prioritizedPositions.splice(index, 1);\n }\n }\n }], [{\n key: 'decryptedURL',\n value: function decryptedURL() {\n return _prevUnencryptedCode;\n }\n }]);\n\n return ConfigManager;\n}();\n\nexports.default = ConfigManager;\n\n/* Private */\n\n/**\n * Get the device type depending on the size of the screen\n * @return string\n */\n\nfunction _getTipoDispositivo() {\n // OK\n var max, min, screenWidth, deviceType;\n\n deviceType = 'desktop';\n\n if (!this.configGDPMedio.responsive.esResponsive) {\n if (this.configGDPMedio && this.configGDPMedio.tipoDispositivo) {\n deviceType = this.configGDPMedio.tipoDispositivo;\n }\n } else {\n screenWidth = parseInt(window.innerWidth, 10);\n\n Object.keys(this.configGDPMedio.responsive).forEach(function (key) {\n var value = this.configGDPMedio.responsive[key];\n if (key !== 'esResponsive' && (value.resolucionMaxima || value.resolucionMinima)) {\n max = value.resolucionMaxima ? value.resolucionMaxima : 999999;\n min = value.resolucionMinima ? value.resolucionMinima : 0;\n\n if (screenWidth <= max && screenWidth > min) {\n deviceType = key.replace('resolucion', '').toLowerCase();\n }\n }\n }, this);\n }\n\n return deviceType;\n}\n\n/**\n * Look for the medium where we are, from the configuration\n * @return string\n */\nfunction _getMedio() {\n // OK\n return this.configGDPMedio.medio ? this.configGDPMedio.medio : '';\n}\n\n/**\n * Get the page type from the URL pattern\n * NOTE: Each medium has its own URL rules so each one has its own function to calculate them\n * FUTURE: set the page type in global namespace on each page\n */\nfunction _getTipoPagina() {\n // OK\n var pageType = 'portada',\n medio = _getMedio.call(this);\n\n if (['abc', 'lavozdigital', 'abcdesevilla'].indexOf(medio) > -1) {\n pageType = _getTipoPaginaABC();\n } else if (medio === 'mujerhoy') {\n pageType = _getTipoPaginaMujerhoy();\n } else {\n pageType = _getTipoPaginaPortalesLocales();\n }\n\n return pageType;\n}\n\n/**\n * Get the page type from the URL for abc.es, sevilla.abc.es and lavozdigital.es\n * @return {string}\n */\nfunction _getTipoPaginaABC() {\n // OK\n var oldVideosRegExp, videosRegExp, oldGaleryRegExp2, oldGaleryRegExp, galeryRegExp, graphicRegExp, oldNewsRegExp, newsRegExp;\n\n oldVideosRegExp = /\\/videos\\/(.*)?\\/\\d{6}\\/\\d{2}\\/((?!index.html).)*.html/;\n videosRegExp = /_video.html/;\n if (videosRegExp.exec(window.location.pathname) || oldVideosRegExp.exec(window.location.pathname)) return 'video';\n\n oldGaleryRegExp2 = /\\/multimedia\\/fotos\\/(.*)?\\/((?!index.html).)*.html/;\n oldGaleryRegExp = /\\/fotos-(.*)?\\/\\d{8}\\/((?!index.html).)*.html/;\n galeryRegExp = /_galeria.html/;\n if (galeryRegExp.exec(window.location.pathname) || oldGaleryRegExp.exec(window.location.pathname) || oldGaleryRegExp2.exec(window.location.pathname)) return 'galeria';\n\n graphicRegExp = /\\/multimedia\\/(graficos\\/(.)*|infografias)\\/((?!index.html).)*.html/;\n if (graphicRegExp.exec(window.location.pathname)) return 'grafico';\n\n oldNewsRegExp = /\\d{8}\\/(.*)?((?!index.html).)*.html/;\n newsRegExp = /(_noticia.html|_directo.html)/;\n if (newsRegExp.exec(window.location.pathname) || oldNewsRegExp.exec(window.location.pathname)) return 'noticia';\n\n return 'portada';\n}\n\n/**\n * Get the page type from the URL for mujerhoy.com\n * @return {string}\n */\nfunction _getTipoPaginaMujerhoy() {\n // OK\n var videoRegExp, oldVideoRegExp, videoBlogRegExp, isVideo, galeryRegExp, oldGaleryRegExp, galeryBlogRegExp, isGalery, newsRegExp, newsBlogRegExp, newsRecipesRegExp, isNews;\n\n videoRegExp = /-vi.html/;\n oldVideoRegExp = /\\/videos\\/(.*)?\\/\\d{6}\\/\\d{2}\\/.*-mm.html/;\n videoBlogRegExp = /\\/videos\\/\\d{4}\\/\\d{2}\\/\\d{2}\\/(.*).html/;\n isVideo = window.location.hostname.indexOf('blogs.') > -1 ? videoBlogRegExp.exec(window.location.pathname) : videoRegExp.exec(window.location.pathname) || oldVideoRegExp.exec(window.location.pathname);\n if (isVideo) return 'video';\n\n galeryRegExp = /-ga.html/;\n oldGaleryRegExp = /^\\/galerias\\/(.*)?\\d{6}\\/\\d{2}\\/.*-mm.html/;\n galeryBlogRegExp = /\\/galerias\\/\\d{4}\\/\\d{2}\\/\\d{2}\\/(.*).html/;\n isGalery = window.location.hostname.indexOf('blogs.') > -1 ? galeryBlogRegExp.exec(window.location.pathname) : galeryRegExp.exec(window.location.pathname) || oldGaleryRegExp.exec(window.location.pathname);\n if (isGalery) return 'galeria';\n\n newsRegExp = /\\/\\d{6}\\/\\d{2}\\/((?!index.html).)*.html/;\n newsBlogRegExp = /\\/\\d{4}\\/\\d{2}\\/\\d{2}\\/((?!index.html).)*.html/;\n newsRecipesRegExp = /\\/\\d{6}\\/((?!index.html).)*.html/;\n if (window.location.hostname.indexOf('blogs.') > -1) {\n isNews = newsBlogRegExp.exec(window.location.pathname);\n } else if (window.location.hostname.indexOf('recetas.') > -1) {\n isNews = newsRecipesRegExp.exec(window.location.pathname);\n } else {\n isNews = newsRegExp.exec(window.location.pathname);\n }\n if (isNews) return 'noticia';\n\n return 'portada';\n}\n\n/**\n * Get the page type from the URL for PPLL\n * @return {string}\n */\nfunction _getTipoPaginaPortalesLocales() {\n // OK\n var videoRegExp, oldVideoRegExp, galeryRegExp, oldGaleryRegExp, newsRegExp, oldNewsRegExp, graphicRegExp, oldGraphicRegExp, videoChatRegExp;\n\n videoRegExp = /-(vi|virc|vivo)(_amp)?.html/;\n oldVideoRegExp = /^\\/videos\\/(.*)?\\/\\d{6}\\/\\d{2}\\/.*-mm.html/;\n if (videoRegExp.exec(window.location.pathname) || oldVideoRegExp.exec(window.location.pathname)) return 'video';\n\n galeryRegExp = /-(ga|garc|gavo|ft|ftrc|ftvo)(_amp)?.html/;\n oldGaleryRegExp = /^\\/fotos\\/(.*)?\\d{6}\\/\\d{2}\\/.*-mm.html/;\n if (galeryRegExp.exec(window.location.pathname) || oldGaleryRegExp.exec(window.location.pathname)) return 'galeria';\n\n newsRegExp = /-(nt|ntrc|ntvo)(_amp)?.html/;\n oldNewsRegExp = /\\/\\d{6}\\/\\d{2}\\/((?!index.html).)*.html/;\n if (newsRegExp.exec(window.location.pathname) || oldNewsRegExp.exec(window.location.pathname)) return 'noticia';\n\n // NOTA: En PLs, a nivel de publicidad, contemplaremos graficos y videochats como noticias\n graphicRegExp = /-(in|inrc|invo)(_amp)?.html/;\n oldGraphicRegExp = /^\\/graficos\\/(.*)?\\/\\d{6}\\/\\d{2}\\/.*-mm.html/;\n videoChatRegExp = /\\/videochats\\/((?!index.html).)\\w+/;\n if (graphicRegExp.exec(window.location.pathname) || oldGraphicRegExp.exec(window.location.pathname) || videoChatRegExp.exec(window.location.pathname)) return 'noticia';\n\n return 'portada';\n}\n\n/**\n * Get defineSlot param from config\n * @return {boolean|undefined}\n */\nfunction _getDefineSlotParam() {\n // OK\n return this.configGDPMedio.defineSlot || undefined;\n}\n\n/**\n * Get the serverType of given position\n * @param {string} position\n * @return {string}\n */\nfunction _getServerType(position) {\n // OK\n var configServerType,\n serverType = 'google';\n\n configServerType = _application2.default.lookup('posicion_' + this.deviceType + '.' + position + '.tipo', this.configGDPMedio);\n serverType = !(0, _utils.isEmpty)(configServerType) ? configServerType : serverType;\n\n return serverType;\n}\n\n/**\n * Check if is responsive from config\n * @return {boolean}\n */\nfunction _isResponsiveMedia() {\n // OK\n var isResponsive = _application2.default.lookup('responsive.esResponsive', this.configGDPMedio);\n\n return !(0, _utils.isEmpty)(isResponsive) ? isResponsive : false;\n}\n\n/**\n * Build responsive param for the position\n * @return object\n */\nfunction _getResponsiveParam(params) {\n // OK\n if (params.responsive && Array.isArray(params.responsive) && params.responsive.length) {\n return params.responsive;\n }\n\n /**\n * It doesn't have responsive param but it is\n * responsive medium so we build responsive param with\n * the corresponding resolutions and sizes\n */\n if (this.isResponsiveMedia) {\n return _createResponsive.call(this, params.position);\n }\n\n return false;\n}\n\n/**\n * Build responsive param\n * FUTURE: move config to GDP\n * @return object\n */\nfunction _createResponsive(position) {\n // OK\n var responsive, resolution, minWidth, maxWidth, dimension, googleSize, size;\n\n (0, _logger.showLog)('ConfigManager:createResponsive:Build responsive for', position);\n responsive = [];\n this.configGDPMedio.dispositivos.forEach(function (device) {\n if (!this.existePosEnConfigGDPMedio(position, device)) return;\n\n resolution = _application2.default.lookup('responsive.resolucion' + device, this.configGDPMedio);\n if (!(0, _utils.isEmpty)(resolution)) {\n minWidth = resolution.resolucionMinima;\n maxWidth = resolution.resolucionMaxima;\n\n if (!(0, _utils.isEmpty)(minWidth) && !(0, _utils.isEmpty)(maxWidth) && (minWidth || maxWidth)) {\n dimension = [parseInt(minWidth, 10) || 0, _constants.ALTOS_MINIMOS_DISPOSITIVOS[device]];\n\n googleSize = this.getSizesGoogle(position, device);\n try {\n if (googleSize && googleSize.indexOf('fluid') > -1) {\n size = 'fluid';\n } else {\n size = JSON.parse(googleSize);\n }\n } catch (e) {\n (0, _logger.showWarn)('ConfigManager:createResponsive:Processing position ' + position + ': ' + e);\n size = googleSize;\n }\n\n // Insert the dimension mapping ordered from lowest to highest by width\n responsive.push([dimension, size]);\n }\n }\n }, this);\n responsive.sort(function (pair1, pair2) {\n return pair1[0][0] - pair2[0][0];\n });\n\n responsive.sort(function (pair1, pair2) {\n return pair1[0][0] - pair2[0][0];\n });\n (0, _logger.showLog)('ConfigManager:createResponsive:Build responsive param for position ' + position, responsive);\n\n return responsive;\n}\n\n/**\n * Get edition from config\n */\nfunction _getEdition() {\n // OK\n var editions = _application2.default.lookup(_constants.EDITIONS_NAMESPACE);\n\n return editions.current || editions.main || '';\n}\n\n/**\n * Invoca al Servicio Web del Capturador para obtener las creatividades indicadas en el parametro\n * preview directamente desde DFP.\n */\nfunction _capturadorGetPreviewData() {\n var legacyPreview, url, data;\n\n legacyPreview = window.location.href.indexOf('vam_preview') > -1 ? 'vam_preview' : 'preview';\n url = _constants.CAPTURADOR_WS + '?id=' + (0, _utils.getParameterByName)(legacyPreview);\n data = '';\n $.ajax({\n url: url,\n type: 'POST',\n async: false,\n success: function success(result) {\n data = result;\n }\n });\n\n return data;\n}\n\n/**\n * Convert Gigya user format to advertising format\n */\nfunction _getValueUser() {\n // OK\n var valueUser,\n arrayUsers = {\n suscriptor: 's',\n trial: 't',\n registrado: 'r',\n anonimo: 'a'\n };\n\n valueUser = arrayUsers[_application2.default.getUserType()] || 'a';\n\n return valueUser;\n}\n\nfunction _getDelayed() {\n var delayedPositions;\n\n delayedPositions = _application2.default.lookup('retrasadas.' + this.deviceType + '.listaPosiciones', this.configGDP);\n\n if ((0, _utils.isEmpty)(delayedPositions) || !delayedPositions.length) {\n (0, _logger.showLog)('ConfigManager:getDelayed:There are NOT delayed positions');\n return [];\n }\n\n (0, _logger.showLog)('ConfigManager:getDelayed:There are delayed positions:', delayedPositions);\n delayedPositions = delayedPositions.split(',').filter(function (position) {\n return position.trim();\n });\n\n return delayedPositions;\n}\n\nfunction _getPrioritized() {\n var prioritizedPositions;\n\n prioritizedPositions = _application2.default.lookup('priorizadas.' + this.deviceType + '.listaPosiciones', this.configGDP);\n\n if ((0, _utils.isEmpty)(prioritizedPositions) || !prioritizedPositions.length) {\n (0, _logger.showLog)('ConfigManager:getPrioritized:There are NOT prioritized positions');\n return [];\n }\n\n (0, _logger.showLog)('ConfigManager:getDelayed:There are prioritized positions:', prioritizedPositions);\n prioritizedPositions = prioritizedPositions.split(',').filter(function (position) {\n return position.trim();\n });\n\n return prioritizedPositions;\n}\n\n/**\n * Decrypt url to get cmvkey param\n * @param {object} mcrypt - Rijndael object\n */\nfunction _decriptUrl(Rijndael) {\n var legacyCmvkey, mcrypt, preparedCode;\n (0, _logger.showLog)('ConfigManager:decriptUrl:Actual prevUnencryptedCode', _prevUnencryptedCode, 'and prevEncryptedCode', _prevEncryptedCode);\n if (_prevUnencryptedCode === '' && _prevEncryptedCode !== '') {\n mcrypt = new Rijndael(_constants.MCRYPT_KEY, 'cbc');\n (0, _logger.showLog)('ConfigManager:decriptUrl:Decrypting', mcrypt);\n preparedCode = atob(_prevEncryptedCode).split('').map(function (value) {\n return value.charCodeAt(0);\n });\n _prevUnencryptedCode = '?' + mcrypt.decrypt(preparedCode, 256, _constants.MCRYPT_KEY);\n (0, _logger.showLog)('ConfigManager:decriptUrl:', _prevUnencryptedCode);\n // NOTE: remove special characters from string\n _prevUnencryptedCode = _prevUnencryptedCode.replace(/[^A-Za-z 0-9.,?\"\"!@#$%^&*()\\-_=+;:<>/\\\\|}{[\\]`~]*/g, '');\n\n if ((0, _utils.endsWith)(_prevUnencryptedCode, '&vam_cmvkey=') || (0, _utils.endsWith)(_prevUnencryptedCode, '&cmvkey=')) {\n legacyCmvkey = (0, _utils.endsWith)(_prevUnencryptedCode, '&vam_cmvkey=') ? '&vam_cmvkey=' : '&cmvkey=';\n _prevUnencryptedCode = _prevUnencryptedCode.replace(legacyCmvkey, '');\n }\n (0, _logger.showLog)('ConfigManager:decriptUrl:String decrypted: ' + _prevUnencryptedCode);\n }\n\n return _prevUnencryptedCode;\n}\n\n/**\n * Funcion que obtiene los tag definidos en los archivos de configuración\n * FUTURE: move config to GDP\n * @return object\n */\nfunction _getDefineSlotTargetings() {\n var medioTargetings, pageTargetings, targetings, defineSlotTargetings;\n\n medioTargetings = this.configGDPMedio.targetings ? this.configGDPMedio.targetings : {};\n pageTargetings = this.configGDP.targetings ? this.configGDP.targetings : {};\n targetings = {};\n (0, _utils.extend)(targetings, medioTargetings, pageTargetings);\n\n defineSlotTargetings = '';\n Object.keys(targetings).forEach(function (key) {\n defineSlotTargetings += '.setTargeting(\"' + key + '\", \"' + targetings[key] + '\")';\n });\n\n return defineSlotTargetings;\n}\n\n/***/ })\n\n/******/ });\n});\n\n\n// WEBPACK FOOTER //\n// vam.js"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonpAdsManager\"];\n \twindow[\"webpackJsonpAdsManager\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t4: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData === 0) {\n \t\t\treturn new Promise(function(resolve) { resolve(); });\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunkData) {\n \t\t\treturn installedChunkData[2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunkData[2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = \"text/javascript\";\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"\" + ({\"0\":\"rijndael-js\"}[chunkId]||chunkId) + \".js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"//static.vocento.com/vam/3.10.0/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 79);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap f15fc0eeba85265dfbcd","export const NAMESPACE = 'vocento';\nexport const PROMISES_PROPERTY = '__PROMISES__';\nexport const DEFAULT_TIMEOUT = 2000;\nexport const VOCUSER_COOKIE = 'voc_uid';\nexport const PAYWALL_COOKIE = 'voc_paywall';\nexport const SHOW_LOGS = document.location.search.indexOf('vam_debug=1') > -1 || document.location.search.indexOf('gdp_debug=1') > -1;\nexport const DEFAULT_LOG_TEMPLATE = '[Ads Manager]';\nexport const CONFIG_NAMESPACE = 'vocento.config.vam';\nexport const EDITIONS_NAMESPACE = 'vocento.site.editions';\nexport const GPT_ID_VOCENTO = '4900';\nexport const GPT_READY = 'vam:gpt:ready';\nexport const GPT_TIMEOUT = 2000;\nexport const TIMEOUT_POSICIONES_ESTANDAR = 3000;\nexport const ALTOS_MINIMOS_DISPOSITIVOS = {\n mobile: 0,\n tablet: 200,\n desktop: 300\n};\nexport const POSITION_FLUID = \"'fluid'\";\nexport const SLOT_RENDERED = 'vam:slotrendered';\nexport const SLOT_EMPTY = 'vam:isempty';\nexport const SLOT_VIEWABLE = 'vam:viewable';\nexport const SLOT_INACTIVE = 'vam:inactive';\nexport const DEFAULTS = {\n hideNoAds: true,\n refresh: false,\n responsive: false\n};\nexport const CAPTURADOR_WS = '//publi.cmvocento.com/capturador/preview';\nexport const MCRYPT_KEY = 'acsNdl09acs72AEdacsNdl09acs72AEd';\nexport const VAM_CSS_URL = '//netssl.vocento.com/cmvocento/css/vam.css';\nexport const JSON_GDP2_0 = 0;\nexport const JSON_GDP2_1 = 1;\nexport const JSON_GDP2_2 = 2;\nexport const NOMBRE_FORMATO_JSON = ['GDP2.0', 'GDP2.1', 'GDP2.2+'];\nexport const GPT_URL = 'www.googletagservices.com/tag/js/gpt.js';\n\n/* header bidding */\nexport const HEADER_BIDDING_READY = 'vam:headerbidding:ready';\nexport const PREBID_URL = `${process.env.ASSET_PATH}prebid.js`;\nexport const DEFAULT_PREBID_LOAD_TIMEOUT = 7000;\nexport const AMAZON_URL = '//c.amazon-adsystem.com/aax2/apstag.js';\nexport const DEFAULT_AMAZON_LOAD_TIMEOUT = 7000;\nexport const AMAZON_CONFIG = {\n pubID: '3470', // Amazon publisher ID\n adServer: 'googletag' // AdServer type that contains apstag line-items\n};\n\n/* legacy */\nexport const OLD_PREFIX = 'publi_';\nexport const NEW_SUFFIX = '-id';\n\n\n\n// WEBPACK FOOTER //\n// ./src/constants.js","import {\n SHOW_LOGS,\n DEFAULT_LOG_TEMPLATE\n} from './constants';\n\nexport function showLog() {\n SHOW_LOGS && console.log(DEFAULT_LOG_TEMPLATE, ...arguments);\n}\n\nexport function showWarn() {\n SHOW_LOGS && console.warn(DEFAULT_LOG_TEMPLATE, ...arguments);\n}\n\nexport function showError() {\n SHOW_LOGS && console.error(DEFAULT_LOG_TEMPLATE, ...arguments);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/logger.js","import Evented from './mixins/evented';\nimport Deferred from './mixins/deferred';\nimport User from './mixins/user';\nimport {extend} from './mixins/mixin';\n\nconst\n _scripts = {},\n _hasOwnProperty = Object.prototype.hasOwnProperty\n;\n\nconst Application = {\n load(url, options = {}) {\n var promise, script, src, key;\n\n src = url;\n key = url.split('?').shift();\n if (_hasOwnProperty.call(_scripts, key)) {return _scripts[key];}\n\n script = document.createElement('script');\n script.type = 'text/javascript';\n script.src = src;\n script.async = true;\n options.text && (script.text = options.text);\n\n promise = new window.RSVP.Promise((resolve, reject) => {\n script.onload = () => resolve(script);\n script.onerror = reject;\n\n document.head.appendChild(script);\n });\n\n _scripts[key] = promise;\n return promise;\n }\n};\n\nextend(Application, Evented);\nextend(Application, Deferred);\nextend(Application, User);\n\nexport default Application;\n\n\n\n// WEBPACK FOOTER //\n// ./src/application.js","import './check-dependencies';\nimport './legacy/dfp-pixel';\nimport pkg from '../package.json';\nimport app from './application';\nimport Advertising from './advertising';\nimport ConfigManager from './config-manager';\nimport {isEmpty} from './utils';\nimport {CONFIG_NAMESPACE} from './constants';\nimport { showLog } from './logger';\n\nconst {$} = window;\nvar _initialized = false;\n\n_legacyInit();\n$(document).ready(function() {\n var config = app.lookup(CONFIG_NAMESPACE);\n\n config = !isEmpty(config) ? config : {\n media: window.configGDPMedio,\n options: window.configGDP\n };\n _init(config.media, config.options);\n});\n\nexport const VERSION = pkg.version;\n\n/* Private */\n\n/**\n * Build legacy object\n * @deprecated\n */\nfunction _legacyInit() {\n window.Vocento = window.Vocento || {};\n window.Vocento.Publicidad = function() {};\n window.Vocento.Publicidad.prototype = {\n init(jQuery, configGDPMedio, configGDP) {\n _init(configGDPMedio, configGDP);\n },\n printAds(datos) {\n return Advertising.printAds(datos);\n },\n getOasSitepage(...params) {\n return Advertising.getOasSitepage(...params);\n },\n getSizesGoogle(...params) {\n return Advertising.getSizesGoogle(...params);\n },\n getValueUser(...params) {\n return Advertising.getValueUser(...params);\n }\n };\n}\n\nfunction _init(configGDPMedio, configGDP) {\n const voontoApp = 'Voonto' in window && 'getInstance' in window.Voonto\n ? window.Voonto.getInstance()\n : undefined;\n var configManager;\n\n if (_initialized) {return;}\n\n if (!configGDPMedio || !configGDP) {throw Error('[Ads Manager] missing configuration');}\n\n _initialized = true;\n configManager = new ConfigManager(configGDPMedio, configGDP);\n Advertising.init(configManager, false);\n _printAds();\n\n if (voontoApp) {\n voontoApp.on('voonto:reload', _reload);\n voontoApp.on('vam:refresh', _refresh);\n }\n app.on('voonto:reload', _reload);\n app.on('vam:refresh', _refresh);\n}\n\n\n/**\n * Print Ads configured inside context or whole page\n * Config must be passed to Advertising.init before calling printAds()\n * @param {null|jQueryObject} context$\n */\nfunction _printAds(context$) {\n $('[data-voc-vam]', context$).each(function () {\n Advertising.printAds($(this));\n });\n}\n\n/**\n * Reload ads inside given context with given config\n * @param {jQueryEvent} event\n * @param {null|jQueryObject} context$\n */\nfunction _reload(event, context$) {\n var config = context$.data('voc-vam-configgdp') || app.lookup(CONFIG_NAMESPACE);\n var forcedOas = context$.data('voc-vam-force-oas') || '';\n var configManager;\n\n config.options.OAS = forcedOas.length > 0\n ? _forceNewOas(config.options.OAS, forcedOas)\n : config.options.OAS;\n configManager = new ConfigManager(config.media, config.options);\n showLog('Reload event has been invoked. Config value: ', config);\n Advertising.init(configManager, true, context$);\n _printAds(context$);\n}\n\n/**\n * Refresh the ads position received on 'data' parameter\n * @param {string|object} data\n */\nfunction _refresh(event, data) {\n var params = typeof data === 'string' ? JSON.parse(data) : data;\n\n Advertising.printAds(params);\n}\n\nfunction _forceNewOas(config, newOas) {\n if (config.adunit) {\n config.adunit = config.adunit.replace(new RegExp('portada$', 'g'), newOas.toString());\n }\n config.desktop.portada = config.desktop.portada.replace(new RegExp('portada$', 'g'), newOas.toString());\n config.mobile.portada = config.mobile.portada.replace(new RegExp('portada$', 'g'), newOas.toString());\n showLog(`New OAS has been set, using value \"${newOas}\"`);\n\n return config;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/index.js","import {DEFAULT_LOG_TEMPLATE} from './constants';\n\n// NOTE: jQuery checking\nif (!('$' in window) || typeof window.$ !== 'function') {\n throw Error(`${DEFAULT_LOG_TEMPLATE} missing jQuery library on page`);\n}\n\n// NOTE: Cookies checking\nif (!('Cookies' in window) || typeof window.Cookies !== 'function') {\n throw Error(`${DEFAULT_LOG_TEMPLATE} missing Cookies library on page`);\n}\n\n// NOTE: RSVP checking\nif (!('RSVP' in window) || typeof window.RSVP !== 'object') {\n throw Error(`${DEFAULT_LOG_TEMPLATE} missing RSVP library on page`);\n}\n\n// NOTE: InView jQuery Plugin checking\nif (!('event' in window.$) ||\n !('special' in window.$.event) ||\n !('inview' in window.$.event.special) ||\n typeof window.$.event.special.inview !== 'object'\n) {\n throw Error(`${DEFAULT_LOG_TEMPLATE} missing InView jQuery plugin on page`);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/check-dependencies.js","import app from '../application';\n\nconst\n UserTypes = Object.freeze({\n ANONYMOUS: 'anonimo'\n }),\n Genders = Object.freeze({\n FEM: 'f',\n MAS: 'm'\n }),\n VOCUSER_READY = 'vocuser:ready',\n VOCUSER_DATA = 'vocuser:userdata'\n;\n\n$(document).ready(function() {\n app.when(VOCUSER_READY).then(_onVocUserReady);\n $('body').on('vocento.gigya.products.onReady', function(event, gigyaux) {\n var gigyaUX;\n\n gigyaUX = gigyaux || window.gigyaUX;\n if (gigyaUX) {_onVocUserReady(gigyaUX);}\n });\n});\n\n/* Private */\n\nfunction _ord() {\n return Math.random() * 10000000000000;\n}\n\nfunction _onVocUserReady(gigyaux) {\n if (gigyaux.getUserType() === UserTypes.ANONYMOUS) {\n $('head').append(``);\n } else {\n $('head').append(``);\n if (typeof Voonto !== 'undefined') {\n app.when(VOCUSER_DATA).then(function(userData) {\n var gender, age;\n\n // NOTE: vocUserData promise object\n if (userData.responseGetUserInfo) {\n gender = userData.responseGetUserInfo.user &&\n userData.responseGetUserInfo.user.gender ?\n userData.responseGetUserInfo.user.gender : null;\n age = userData.responseGetUserInfo.user &&\n userData.responseGetUserInfo.user.age ?\n userData.responseGetUserInfo.user.age : null;\n }\n _onVocUserData(gender, age);\n });\n } else {\n $('body').on('vocento.gigya.accounts.onDataReady', function(event) {\n var gender, age;\n\n // NOTE: vocUserData promise object\n if (event.gigya_event) {\n gender = event.gigya_event.profile &&\n event.gigya_event.profile.gender ?\n event.gigya_event.profile.gender : null;\n age = event.gigya_event.profile &&\n event.gigya_event.profile.age ?\n event.gigya_event.profile.age : null;\n }\n _onVocUserData(gender, age);\n });\n }\n }\n}\n\nfunction _onVocUserData(gender, age) {\n switch (gender) {\n case Genders.FEM:\n $('head').append(``);\n break;\n case Genders.MAS:\n $('head').append(``);\n break;\n default:\n }\n\n switch (true) {\n case age !== '' && age <= 17:\n $('head').append(``);\n break;\n case age >= 18 && age <= 24:\n $('head').append(``);\n break;\n case age >= 25 && age <= 34:\n $('head').append(``);\n break;\n case age >= 35 && age <= 44:\n $('head').append(``);\n break;\n case age >= 45 && age <= 54:\n $('head').append(``);\n break;\n case age !== '' && age < 54:\n $('head').append(``);\n break;\n default:\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/legacy/dfp-pixel.js","import {showLog} from '../logger';\n\nconst Evented = Object.preventExtensions({\n on() {window.$(this).on(...arguments);},\n one() {window.$(this).one(...arguments);},\n off() {window.$(this).off(...arguments);},\n trigger() {\n showLog('Evented::trigger', ...arguments);\n window.$(this).trigger(...arguments);\n }\n});\n\nexport default Evented;\n\n\n\n// WEBPACK FOOTER //\n// ./src/mixins/evented.js","import Globalized from './globalized';\nimport {extend} from './mixin';\nimport {\n NAMESPACE,\n DEFAULT_TIMEOUT,\n PROMISES_PROPERTY,\n DEFAULT_LOG_TEMPLATE\n} from '../constants';\nimport {showLog} from '../logger';\n\nconst\n _defers = {},\n _hasOwnProperty = Object.prototype.hasOwnProperty\n;\n\nconst Deferred = {\n whenUntil(promiseNS, time = DEFAULT_TIMEOUT) {\n showLog('[Deferred] whenUntil', {promiseNS, time});\n return new window.RSVP.Promise((resolve, reject) => {\n setTimeout(reject, time);\n this.when(promiseNS).then(resolve);\n });\n },\n\n when(promiseNS) {\n var owner, name, global;\n\n showLog('[Deferred] when', promiseNS);\n\n if (!promiseNS) {throw Error(`${DEFAULT_LOG_TEMPLATE} [Deferred] At least 1 argument needed. 0 passed.`);}\n [owner, name] = promiseNS.split(':');\n if (!owner || !name) {throw Error(`${DEFAULT_LOG_TEMPLATE} [Deferred] Illegal promise namespace name. Expected \"owner:name\".`);}\n\n if (_hasOwnProperty.call(_defers, promiseNS)) {return _defers[promiseNS].promise;}\n\n global = this.createGlobal(`${NAMESPACE}.${owner}.${PROMISES_PROPERTY}`);\n global[name] = window.RSVP.defer();\n _defers[promiseNS] = global[name];\n\n return global[name].promise;\n },\n\n promised(promiseNS, value) {\n var owner, name, global;\n\n showLog('[Deferred] promised', {promiseNS, value});\n\n if (!promiseNS) {throw Error(`${DEFAULT_LOG_TEMPLATE} [Deferred] At least 1 argument needed. 0 passed.`);}\n [owner, name] = promiseNS.split(':');\n if (!owner || !name) {throw Error(`${DEFAULT_LOG_TEMPLATE} [Deferred] Illegal promise namespace name. Expected \"owner:name\".`);}\n\n if (_hasOwnProperty.call(_defers, promiseNS)) {\n _defers[promiseNS].resolve(value);\n return this;\n }\n\n global = this.createGlobal(`${NAMESPACE}.${owner}.${PROMISES_PROPERTY}`);\n global[name] = window.RSVP.defer();\n global[name].resolve(value);\n _defers[promiseNS] = global[name];\n\n return this;\n }\n};\n\nextend(Deferred, Globalized);\n\nexport default Deferred;\n\n\n\n// WEBPACK FOOTER //\n// ./src/mixins/deferred.js","import {NAMESPACE} from '../constants';\n\nconst Globalized = {\n createGlobal(namespace) {\n var nso = window;\n\n if (!namespace) {return undefined;}\n\n namespace.split('.').forEach((prop) => {\n nso[prop] = nso[prop] || {};\n nso = nso[prop];\n });\n\n return nso;\n },\n\n lookup(namespace = NAMESPACE, root = window) {\n return namespace.split('.').reduce((that, o) => {\n return that && o in that ? that[o] : {};\n }, root);\n }\n};\n\nexport default Globalized;\n\n\n\n// WEBPACK FOOTER //\n// ./src/mixins/globalized.js","import {\n PAYWALL_COOKIE,\n VOCUSER_COOKIE\n} from '../constants';\n\nconst\n {Cookies} = window,\n UserType = Object.freeze({\n ANONYMOUS: 'anonimo',\n REGISTERED: 'registrado',\n SUBSCRIBER: 'suscriptor',\n TRIAL: 'trial'\n })\n;\n\nconst User = {\n getUserType() {\n var userType, paywall, pwUserType, vocUid, cookie;\n\n vocUid = decodeURIComponent(Cookies.get(VOCUSER_COOKIE));\n cookie = vocUid === 'undefined' ? {} : _jsonParse(vocUid);\n userType = UserType.ANONYMOUS; // <'anonimo' | 'registrado' | 'trial' | 'suscriptor'>\n paywall = Cookies.get(PAYWALL_COOKIE);\n if (paywall) {pwUserType = paywall.split('|').pop();}\n\n if (pwUserType) {\n userType = pwUserType;\n } else if (cookie.uid) {\n userType = UserType.REGISTERED;\n }\n\n return userType;\n }\n};\n\nexport default User;\n\n/* Private */\n\nfunction _jsonParse(vocUid) {\n var result;\n\n try {\n result = JSON.parse(vocUid);\n } catch (e1) {\n // NOTE: fix issue https://agil.vocento.com/browse/MEC-2575\n vocUid = vocUid.replace(/\\+/g, '');\n try {\n result = JSON.parse(vocUid);\n } catch (e2) {\n result = {};\n }\n }\n\n return result;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/mixins/user.js","import {version} from '../package.json';\nimport HBProviderManager from './header-bidding/provider-manager';\nimport app from './application';\nimport ConfigManager from './config-manager';\nimport {\n cargaLibreriaGPT,\n isEmpty\n} from './utils';\nimport {\n showLog,\n showWarn,\n showError\n} from './logger';\nimport {\n GPT_READY,\n GPT_TIMEOUT,\n TIMEOUT_POSICIONES_ESTANDAR,\n POSITION_FLUID,\n SLOT_RENDERED,\n SLOT_EMPTY,\n SLOT_VIEWABLE,\n HEADER_BIDDING_READY\n} from './constants';\n\nvar\n _configManager = null,\n _standardDelayed = [],\n _gptInitialized = false,\n _insertedPositions = {},\n _notDisplayedSlots = [],\n _completadasPriorizadas = false,\n _reload = false\n;\n\nclass Advertising {\n /**\n * Function that initialize the advertising\n * @param {object} app - Evented object\n * @param {object} configGDPMedio\n * @param {object} configGDP\n * @param {context} context$\n */\n static init(configManager, reload, context$) {\n var kruxSegments, kruxUser;\n\n _configManager = null;\n _standardDelayed = [];\n _gptInitialized = false;\n _insertedPositions = {};\n _notDisplayedSlots = [];\n _completadasPriorizadas = false;\n _reload = reload;\n _configManager = configManager;\n _configManager.context$ = context$;\n\n // Detectamos si se fuerza via URL alguna configuracion\n _configManager.checkConfigFromURL();\n\n if (!_configManager.configGDPMedio.activo) {\n showWarn('Advertising:init:The advertising has been deactivated in the configuration of the medium!');\n return;\n }\n showLog(`Advertising:init:deviceType: ${_configManager.deviceType} , pageType: ${_configManager.pageType} , (Version ${version})`);\n\n if (!_reload) {\n _configManager.processConfig();\n }\n\n\n // Load HB and GPT libraries soon as posible for not penalize the ad visualization\n if (!_reload) {\n showLog('init:HeaderBidding init');\n HBProviderManager.init(_configManager.configGDPMedio);\n cargaLibreriaGPT();\n }\n\n\n // Inicializacion de la libreria GPT\n window.customcmd.push(function() {\n window.googletag.pubads().collapseEmptyDivs();\n kruxSegments = app.lookup('Krux.vocento.segments');\n kruxUser = app.lookup('Krux.vocento.user');\n if (_configManager.configGDPMedio.enableKrux\n && ['object', 'undefined'].indexOf(typeof kruxSegments) < 0\n && ['object', 'undefined'].indexOf(typeof kruxUser) < 0\n ) {\n window.googletag.pubads().setTargeting('ksg', window.Krux.vocento.segments);\n window.googletag.pubads().setTargeting('kuid', window.Krux.vocento.user);\n }\n _configManager.configGDPMedio.singleRequest &&\n window.googletag.pubads().enableSingleRequest();\n _configManager.configGDPMedio.syncRendering &&\n window.googletag.pubads().enableSyncRendering();\n window.googletag.enableServices();\n\n // Disparamos el evento de GPT inicializada\n showLog(`En constructor. Disparamos evento ${GPT_READY}`);\n app.trigger(GPT_READY);\n _gptInitialized = true;\n });\n\n /* NOTE: Disparamos el evento de GPT inicializado tras N segundos para liberar posibles\n recursos que esten bloqueados */\n setTimeout(function () {\n if (!_gptInitialized) {\n showWarn(`Advertising:init:Trigger event ${GPT_READY} after ${GPT_TIMEOUT}`);\n app.trigger(GPT_READY);\n }\n }, GPT_TIMEOUT);\n\n // Tratamiento de excepciones\n _configManager.checkExceptions();\n\n // Gestion de eventos de pintado de publicidad\n window.customcmd.push(function () {\n // Gestion de evento slotRenderEnded\n window.googletag.pubads().addEventListener('slotRenderEnded', function (ev) {\n var divId, position, container$, paramsSlot, index, found;\n\n divId = ev.slot.getSlotElementId();\n position = ev.slot.getTargeting('pos');\n container$ = $(`#${divId}`);\n paramsSlot = container$.data('params');\n index = -1;\n\n if (ev.isEmpty) {\n showLog(`En constructor. slotRenderEnded. La posicion ${position} isEmpty`);\n container$.trigger(SLOT_EMPTY);\n if (_configManager.configGDPMedio.infoSlot) _infoSlotRender(paramsSlot, false);\n } else {\n showLog(`En constructor. slotRenderEnded. La posicion ${position} ha sido pintada en el DIV ${divId}`);\n container$.trigger(SLOT_RENDERED);\n if (_configManager.configGDPMedio.infoSlot) _infoSlotRender(paramsSlot, true);\n }\n\n // Comprobacion si tiene eventos post_callback o post_event\n if (paramsSlot) {\n if (paramsSlot.post_callback) {\n showLog(`En constructor. slotRenderEnded. La posicion ${position} tiene el siguiente postCallback: ${paramsSlot.post_callback}`);\n paramsSlot.post_callback();\n }\n\n if (paramsSlot.post_event) {\n showLog(`En constructor. slotRenderEnded. La posicion ${position} tiene el siguiente postEvent: ${paramsSlot.post_event}`);\n app.trigger(paramsSlot.post_event);\n }\n }\n\n // Quitamos la posicion de la lista de posiciones priorizadas\n _configManager.removePrioritizedPosition();\n\n // Quitamos la posicion de la lista de posiciones estandar encoladas\n if (_configManager.thereArePrioritizedPositions() &&\n _standardDelayed.length && !_configManager.isPrioritized(paramsSlot)\n ) {\n found = _standardDelayed.find(function(parameters) {\n index++;\n return parameters.position === position[0];\n });\n if (found) {\n _standardDelayed.splice(index, 1);\n }\n }\n\n // Si esta era la ultima priorizada pintamos las estandar\n if (!_completadasPriorizadas && (!_configManager.thereArePrioritizedPositions())) {\n _completadasPriorizadas = true;\n _displayStandarQueued();\n }\n });\n\n // Gestion de evento impressionViewable\n window.googletag.pubads().addEventListener('impressionViewable', function (ev) {\n var divId = ev.slot.getSlotElementId();\n var position = ev.slot.getTargeting('pos');\n var container$ = $(`#${divId}`);\n\n showLog(`En constructor. impressionViewable. La posicion ${position} es visible`);\n container$.trigger(SLOT_VIEWABLE);\n });\n });\n\n /* NOTE: Si hay posiciones priorizadas las pintamos e invocamos el pintado de las estandar\n una vez pintadas estas */\n if (_configManager.thereArePrioritizedPositions()) {\n _displayPrioritized();\n\n /* NOTE: Si han transcurrido N segundos y todavia no se han lanzado las posiciones\n estandar las forzamos */\n setTimeout(function () {\n if (_standardDelayed.length) {\n showWarn(`Advertising:init:Display queued positions after ${TIMEOUT_POSICIONES_ESTANDAR}`);\n _completadasPriorizadas = true;\n _displayStandarQueued();\n }\n }, TIMEOUT_POSICIONES_ESTANDAR);\n }\n }\n\n /**\n * Muestra la Advertising.\n * @param {Object} datos - Puede ser un DIV obtenido con jQuery con los atributos de\n * configuracion, o bien un objeto JSON con la configuracion a aplicar\n *\n * Descripcion de parametros que puede contener el objeto JSON:\n * position => string. Posicion publicitaria a mostrar\n * id => string. ID del elemento HTML en el que se muestra\n * serverType => string. Servidor de publicidad a usar\n * hideNoAds => boolean. Oculta el elemento HTML si el adserver no ha devuelto publi\n * outOfPage => boolean. Determina si el slot de publicidad es outOfPage o no. Por\n * defecto vale false\n * defineSlot => boolean. Indica si hay que definir o no el slot\n * refresh => boolean. Se pide la posicion de publicidad aunque ya se hubiera mostrado\n * antes. Por defecto false\n * responsive => Array. Indicamos si una publi se debe pintar solo en una(s)\n * determinada(s) resolucion(es)\n * pre_callback => function. Función javascript a la que invocar previamente\n * pre_event => string. evento de precondicion\n * post_callback => function. Función javascript a la que invocar una vez disparado\n * el slotRendered\n * post_event => string. evento a disparar una vez disparado evento de slotRendered\n * oas => string. Si se rellena es el OAS a utilizar en la posicion de publicidad\n *\n * Objeto Responsive\n * El primer par de valores indica la resolucion, y en el segundo los tamanos de la posicion de\n * publi a servir, el cual puede definirse como sigue:\n * - vacio: []\n * - single array: [ancho, alto]\n * - multi array: [ [ancho1, alto1], [ancho2, alto2], ... ]\n * - string: En cuyo caso usa la funcion ads.getSizesGoogle para obtener el array\n *\n * Ejemplo llamada:\n * ads.printAds({'position': 'robapaginas', 'id': 'roba2', 'responsive': [\n * [[0, 0], []] // Small Mobile\n * ,[[350, 200], [300,150]] // Mobile\n * ,[[750, 200], 'robapaginas'] // Tablet\n * ,[[1050, 300], [[300,150],[300,250]]] // Desktop\n * ]});\n */\n static printAds(datos) {\n var params, position, idAds, prioritized, delayed;\n\n showLog('Advertising:printAds', datos);\n if (!_configManager.configGDPMedio.activo) {\n showWarn('Advertising:printAds:Ads was be disabled in Media Config');\n return;\n }\n\n params = _configManager.normalizaParams(datos);\n if (params === null) {\n showWarn('Advertising:printAds:Empty params', datos);\n return;\n }\n\n position = params.position;\n idAds = _configManager.getIdDiv(params);\n if (!_configManager.isActive(params)) {\n if ($(`#${idAds}`).length && params.hideNoAds) {\n showWarn('Advertising:printAds:Hiding ADs DIV container if hideNoAds is anabled', params);\n $(`#${idAds}`).hide();\n }\n showWarn(`Advertising:printAds:Position ${position} is not active`, params);\n return;\n }\n\n if (!$(`#${idAds}`).length) {\n showWarn(`Advertising:printAds:DIV with ID ${idAds} does not exist`, params);\n return;\n }\n\n if (params.serverType === 'google') {\n /* NOTE: Si estamos en modo preview comprobamos si esta posicion hay que traerla desde el\n SW del capturador */\n if (_configManager.configGDPMedio.preview && _capturadorExistsPreview(params)) {\n showLog('Advertising:printAds:Preview mode. Getting form grabber service');\n _capturadorSetPreview(params);\n return;\n }\n\n showLog('Advertising:printAds:Check Ad-Type', params);\n prioritized = _configManager.isPrioritized(position);\n delayed = _configManager.isDelayed(position);\n\n if (prioritized && !delayed) {\n showLog('Advertising:printAds:Painting prioritized', params);\n _getAdGoogle(params, true);\n } else if (delayed) {\n showLog('Advertising:printAds:Wait for INVIEW event delayed', params);\n _displayDelayed(params);\n } else if (!_configManager.thereArePrioritizedPositions() || _completadasPriorizadas) {\n showLog('Advertising:printAds:Painting standard', params);\n _getAdGoogle(params, false);\n } else {\n showLog('Advertising:printAds:Painting queued standards', params);\n _standardDelayed.push(params);\n }\n } else {\n showWarn('Advertising:printAds:ServerType is different from google', params);\n }\n }\n\n /**\n * Get user type\n * NOTE: legacy code\n */\n static getValueUser() {\n if (!_configManager) {\n throw Error('Advertising:getValueUser:Config object not initialized');\n }\n\n return _configManager.valueUserType;\n }\n\n /**\n * Get google sizes for a given position\n * NOTE: legacy code\n */\n static getSizesGoogle(...params) {\n if (!_configManager) {\n throw Error('Advertising:getSizesGoogle:Config object not initialized');\n }\n\n return _configManager.getSizesGoogle(...params);\n }\n\n /**\n * Get OAS value from config\n * NOTE: legacy code\n */\n static getOasSitepage(...params) {\n if (!_configManager) {\n throw Error('Advertising:getOasSitepage:Config object not initialized');\n }\n\n return _configManager.getOasSitepage(...params);\n }\n}\n\nexport default Advertising;\n\n/* Private */\n\n/**\n * Funcion que genera el scriptText que pinta la Advertising.\n * @param object params\n */\nfunction _defineSlot(params) {\n var\n scriptText, legacyCmvkey, insertedPositionkey, hideText, targetingText,\n size, idAds, targetingsTags, deviceTypeTargeting, decryptedURL, pattern, isValid,\n decodedURLTargetings, chunksURLTargetings, topics, mappingObj, sizeMapping, defineSizeMapping\n ;\n\n size = _configManager.getSizesGoogle(params.position);\n idAds = _configManager.getIdDiv(params);\n targetingsTags = params.tags || {};\n // Codigo para ocultar el div si no hay publi\n hideText = params.hideNoAds ? '.setCollapseEmptyDiv(true)' : '';\n targetingText = _configManager.globalTargetings;\n\n Object.keys(targetingsTags).forEach(function(key) {\n targetingText += `.setTargeting(\"${key}\", \"${targetingsTags[key]}\")`;\n });\n\n // Targeting con tipo de usuario de Gigya\n deviceTypeTargeting = _configManager.deviceType === 'mobile' ? 'm' : 'w';\n targetingText += `.setTargeting('st', '${_configManager.valueUserType}').setTargeting('stt', '${deviceTypeTargeting}${_configManager.valueUserType}')`;\n\n // Se comprueba si se fuerza algun targeting via URL con el parametro vam_cmvkey\n decryptedURL = ConfigManager.decryptedURL();\n if (((typeof window.location !== 'undefined') && (window.location.href.indexOf('vam_cmvkey=') > -1 || window.location.href.indexOf('cmvkey=') > -1)) || (decryptedURL !== '')) {\n legacyCmvkey = window.location.href.indexOf('vam_cmvkey=') > -1 ? 'vam_cmvkey' : 'cmvkey';\n pattern = new RegExp(`(\\\\?|&)${legacyCmvkey}=([^?&]+)`);\n isValid = (decryptedURL !== '') ? pattern.exec(decryptedURL) : pattern.exec(window.location.href);\n\n if (isValid) {\n try {\n decodedURLTargetings = decodeURIComponent(isValid[2]);\n chunksURLTargetings = decodedURLTargetings.split(',');\n\n chunksURLTargetings.forEach(function(chunck) {\n var pair, keyChunk, valueChunk;\n\n pair = chunck.split('=');\n keyChunk = pair[0];\n valueChunk = pair[1];\n targetingText += `.setTargeting(\"${keyChunk}\", \"${valueChunk}\")`;\n });\n } catch (e) {\n showWarn(`Advertising:defineSlot:Error processing ${legacyCmvkey}: ${e}`);\n }\n }\n }\n\n // Incluimos los topics como targeting si asi corresponde\n try {\n topics = _getTopics(false);\n if (topics.length) {\n targetingText += `.setTargeting(\"topics\", \"${topics}\")`;\n }\n } catch (e) {\n showWarn(`Advertising:defineSlot:Error processing enableTopics: ${e}`);\n }\n\n // Se comprueba si enableTpag esta habilitado\n try {\n if (_configManager.configGDPMedio.enableTpag) {\n targetingText += `.setTargeting(\"tpag\", \"${_configManager.pageType}\")`;\n }\n } catch (e) {\n showWarn(`Advertising:defineSlot:Error processing tpag: ${e}`);\n }\n\n // Comprobaciones para medios responsives\n mappingObj = {};\n sizeMapping = '';\n defineSizeMapping = '';\n if (!params.outOfPage && params.responsive &&\n Array.isArray(params.responsive) && params.responsive.length > 0) {\n mappingObj = _getSizeMapping(params);\n sizeMapping = mappingObj && mappingObj.definition ? mappingObj.definition : '';\n defineSizeMapping = mappingObj && mappingObj.script ? mappingObj.script : '';\n }\n\n if (!params.outOfPage) {\n if (params.defineSlot) {\n scriptText = `${sizeMapping}window.${_getNombreSlot(params)} = window.googletag.defineSlot('${_configManager.getOasSitepage(params)}', ${size}, '${idAds}')${defineSizeMapping}.setTargeting('pos','${params.position}')${targetingText}${hideText}.addService(googletag.pubads());`;\n }\n } else if (params.defineSlot) {\n scriptText = `${sizeMapping}window.${_getNombreSlot(params)} = window.googletag.defineOutOfPageSlot('${_configManager.getOasSitepage(params)}', '${idAds}')${defineSizeMapping}.setTargeting('pos','${params.position}')${targetingText}${hideText}.addService(googletag.pubads());`;\n }\n\n insertedPositionkey = _getClavePosicionInsertada(params);\n _insertedPositions[insertedPositionkey] = scriptText;\n showLog('Advertising:defineSlot:Ads ID', idAds);\n window.customcmd.push(_executeDefineSlot(scriptText, params));\n}\n\nfunction _executeDefineSlot(scriptText, params) {\n showLog(`En defineSlot. defineSlot: ${scriptText}`);\n eval(scriptText);\n _notDisplayedSlots.push(params.position);\n}\n\n/**\n * Hace display de una posicion\n */\nfunction _display(params) {\n // Comprobamos si la posicion esta en la lista de posiciones definidas y pendientes de display\n var index, idDiv;\n\n showLog(`Advertising:display:Display position ${params.position} with params`, params);\n index = _notDisplayedSlots.indexOf(params.position);\n if (index < 0) {\n showLog(`Advertising:display:Position ${params.position} has already been displayed`);\n return;\n }\n\n showLog(`Advertising:display:Position ${params.position} is not displayed yet`);\n idDiv = _configManager.getIdDiv(params);\n if (!$('#' + idDiv).length) {\n showWarn(`Advertising:display:DIV with ID ${idDiv} does not exist`);\n return;\n }\n showLog(`Advertising:display:Queued position ${params.position} to display`);\n window.customcmd.push(function () {\n showLog(`Advertising:display:Displaying ${params.position}`);\n window.googletag.display(idDiv);\n\n /* NOTE: Si singleRequest esta habilitado un unico display sirve para todas las posiciones\n para las que hemos hecho defineSlot previamente. En caso contrario solo quitamos la\n posicion concreta de la lista.\n */\n if (_configManager.configGDPMedio.singleRequest) {\n _notDisplayedSlots = [];\n } else {\n _notDisplayedSlots.splice(index, 1);\n }\n });\n}\n\n/**\n * Funcion que obtiene las medidas en caso de que sea responsive.\n * FUTURE: move config to GDP\n * FUTURE: move logic to GoogleTag component\n * @param object responsive\n * @return string sizeMapping\n */\nfunction _getSizeMapping(params) {\n var mappingName, mappingObj, responsive, finalDefinition;\n\n mappingName = `window.mapping_${_getNombreSlot(params)}`;\n mappingObj = {\n definition: `${mappingName} = window.googletag.sizeMapping()`,\n script: `.defineSizeMapping(${mappingName})`\n };\n responsive = params.responsive;\n showLog(`Advertising:getSizeMapping:Resposive param for position ${params.position}`, responsive);\n\n finalDefinition = responsive.reduce(function(definition, pair) {\n var addSize, viewportSize, responsiveSizes, singleSize;\n\n if (definition !== '' && !definition) return undefined;\n\n viewportSize = pair[0];\n if (pair.length !== 2 || !Array.isArray(viewportSize) || viewportSize.length !== 2) {\n showWarn(`Advertising:getSizeMapping:Malformed responsive param in position ${params.position}. responsive: ${responsive}`);\n return undefined;\n }\n\n addSize = '';\n responsiveSizes = pair[1];\n if (typeof responsiveSizes === 'string') {\n if (responsiveSizes.indexOf('fluid') !== -1) {\n responsiveSizes = POSITION_FLUID;\n } else {\n responsiveSizes = _configManager.getSizesGoogle(responsiveSizes);\n if ((typeof responsiveSizes !== 'undefined') && (typeof responsiveSizes === 'string')) {\n responsiveSizes = JSON.parse(responsiveSizes);\n }\n }\n }\n if (!Array.isArray(responsiveSizes) && responsiveSizes !== POSITION_FLUID) {\n showWarn(`Advertising:getSizeMapping:Malformed responsive param in position ${params.position}. responsive: ${responsive}`);\n return undefined;\n }\n\n addSize = '[' + viewportSize[0] + ',' + viewportSize[1] + '],';\n if (responsiveSizes.length > 0 && Array.isArray(responsiveSizes[0])) {\n addSize += '[';\n for (let j = 0; j < responsiveSizes.length; j++) {\n singleSize = responsiveSizes[j];\n if (singleSize.length === 2) {\n addSize += (j === 0 ? '[' : ',[') + singleSize[0] + ',' + singleSize[1] + ']';\n }\n }\n addSize += ']';\n } else if (responsiveSizes.length === 2) {\n addSize += '[' + responsiveSizes[0] + ',' + responsiveSizes[1] + ']';\n } else if (responsiveSizes === POSITION_FLUID) {\n addSize += POSITION_FLUID;\n } else {\n addSize += '[]';\n }\n\n return `${definition}.addSize(${addSize})`;\n }, '');\n\n if (!finalDefinition) return undefined;\n\n mappingObj.definition += `${finalDefinition}.build();`;\n\n return mappingObj;\n}\n\n/**\n * Lanza los printAds que se han encolado cuando hay priorizadas\n */\nfunction _displayStandarQueued() {\n showLog('Advertising:displayStandarQueued:Display queued positions');\n while (_standardDelayed.length) {\n Advertising.printAds(_standardDelayed.shift());\n }\n}\n\n/**\n * Funcion para pintar la publicidad priorizada\n */\nfunction _displayPrioritized() {\n showLog(`Advertising:pintaPriorizadas:Painting the following positions : ${_configManager.prioritizedPositions}`);\n _pintaListaPosiciones(_configManager.prioritizedPositions, true);\n}\n\n/**\n * Funcion que recorre y pinta una lista de posiciones.\n * Si singleRequest esta habilitado las posiciones priorizadas funcionan como un Roadblock y se\n * piden todas juntas (no llevaran eventos ni callbacks)\n */\nfunction _pintaListaPosiciones(listaPositions, sonPosicionesPriorizadas) {\n if (_configManager.configGDPMedio.singleRequest && sonPosicionesPriorizadas) {\n showLog('Advertising:pintaListaPosiciones:There is prioritized positions and SingleRequest is enabled -> get with Roadblock');\n\n window.customcmd.push(function () {\n var params, container$, posCuyoDivExiste;\n\n posCuyoDivExiste = null;\n listaPositions.forEach(function(position) {\n params = {position};\n\n if (!_configManager.existePosEnConfigGDPMedio(position)) {\n showWarn(`Advertising:pintaListaPosiciones:SingleRequest position ${position} does not exist configGDPMedio`);\n return;\n }\n\n if (!_configManager.isActive(params)) {\n showWarn(`Advertising:pintaListaPosiciones:SingleRequest position ${position} is NOT active`);\n return;\n }\n\n // Recuperamos los parametros del DIV en caso de que exista en la pagina\n container$ = $(`[data-voc-vam-position = '${position}']`, _configManager.context$);\n if (container$.length) {\n params = _configManager.normalizaParams(container$);\n if (posCuyoDivExiste === null) posCuyoDivExiste = params;\n } else {\n // NOTE: find legacy DIV\n container$ = $(`#${_configManager.getIdDiv(params)}`);\n if (container$.length) {\n params = _configManager.normalizaParams(params);\n if (posCuyoDivExiste === null) {posCuyoDivExiste = params;}\n } else {\n showWarn(`En pintaListaPosiciones. No existe el DIV de la posicion priorizada ${position}`);\n }\n }\n if ('id' in params) {\n showLog(`En pintaListaPosiciones. Llamando a defineSlot: ${JSON.stringify(params)}`);\n _defineSlot(params);\n }\n });\n\n if (posCuyoDivExiste === null) {\n showError('ERROR En pintaListaPosiciones. No existe el DIV de ninguna de las posiciones priorizadas en la pagina, por lo que no se hara el display');\n } else {\n params = posCuyoDivExiste;\n }\n\n // NOTE: If there is Header Bidding wait for bidders promises\n if (HBProviderManager.isActive()) {\n showLog('pintaListaPosiciones:Waiting for HB`s promises to be solved');\n app.when(HEADER_BIDDING_READY).then(function() {\n showLog('pintaListaPosiciones:HB promises resolved');\n HBProviderManager.setTargetings();\n showLog('pintaListaPosiciones:Params object', params);\n _display(params);\n });\n } else {\n showLog('En pintaListaPosiciones. Print without wait HB');\n _display(params);\n }\n });\n } else {\n !_configManager.configGDPMedio.singleRequest && showLog('Advertising:pintaListaPosiciones:SingleRequest DISABLED');\n !sonPosicionesPriorizadas && showLog('Advertising:pintaListaPosiciones:There are NOT prioritized positions');\n // window.customcmd.push(function () {\n listaPositions.forEach(function(position) {\n var params, container$, legacyParams;\n\n if (!_configManager.existePosEnConfigGDPMedio(position)) {\n showWarn(`Advertising:pintaListaPosiciones:Prioritized position ${position} does not exist configGDPMedio`);\n return;\n }\n\n params = {position};\n if (!_configManager.isActive(params)) {\n showWarn(`Advertising:pintaListaPosiciones:Prioritized position ${position} is NOT active`);\n return;\n }\n\n // Recuperamos los paramteros del DIV en caso de que exista en la pagina\n container$ = $(`[data-voc-vam-position = '${position}']`, _configManager.context$);\n if (container$.length) {\n params = _configManager.normalizaParams(container$);\n } else {\n container$ = $(`#${_configManager.getIdDiv(params)}`);\n if (container$.length) {\n legacyParams = _configManager.normalizaParams(container$);\n }\n params = !legacyParams ? _configManager.normalizaParams(params) : legacyParams;\n }\n\n showLog('Advertising:pintaListaPosiciones:Calling printAds with', params);\n Advertising.printAds(params);\n });\n // });\n }\n}\n\n/**\n * Display delayed positions when it is on viewport\n * @param {object} params\n */\nfunction _displayDelayed(params) {\n var idAds = _configManager.getIdDiv(params);\n\n $(`#${idAds}`).on('inview', function (event, isInView) {\n showLog('Advertising:displayDelayed:INVIEW_EVENT trigger', params, event, isInView);\n if (isInView && this.innerHTML === '') {\n showLog('Advertising:displayDelayed:Painting delayed', idAds, params);\n _getAdGoogle(params, false);\n }\n });\n}\n\n/**\n * Pintado de publicidad de GPT\n */\nfunction _getAdGoogle(params, esPosPriorizada) {\n if (!_configManager.configGDPMedio.activo) {\n showWarn('Advertising:getAdGoogle:Ads was disabled in Media Config');\n return;\n }\n\n showLog('Advertising:getAdGoogle:Queuing with', params);\n window.customcmd.push(function() {\n var idDiv, eventParams, tParams, key, hasPreevent;\n\n if (!_configManager.existePosEnConfigGDPMedio(params.position)) {\n showWarn(`Advertising:getAdGoogle:Position ${params.position} does not exist in configGDPMedio`);\n return;\n }\n\n showLog('Advertising:getAdGoogle:googletag exec with', params);\n idDiv = _configManager.getIdDiv(params);\n eventParams = _getEventsPosition(params);\n\n tParams = params;\n tParams.pre_callback = eventParams.pre_callback;\n tParams.pre_event = eventParams.pre_event;\n\n tParams.post_callback = eventParams.post_callback;\n tParams.post_event = eventParams.post_event;\n showLog('Advertising:getAdGoogle:Set params to DIV with id = ', idDiv);\n $(`#${idDiv}`).data('params', tParams);\n\n key = _getClavePosicionInsertada(params);\n if (!_insertedPositions[key]) {\n hasPreevent = false;\n if (params.defineSlot) {\n showLog('Advertising:getAdGoogle:defineSlot', params);\n _defineSlot(params);\n if (!esPosPriorizada) {\n showLog('Advertising:getAdGoogle:It is not prioritized', params);\n if (eventParams.pre_callback && !eventParams.pre_event) {\n eventParams.pre_callback();\n } else if (eventParams.pre_event) {\n showLog('Advertising:getAdGoogle:Has pre-event', params);\n hasPreevent = true;\n app.one(eventParams.pre_event, params, function () {\n // NOTE: If there is Header Bidding wait for bidders promises\n if (HBProviderManager.isActive()) {\n showLog('Advertising:getAdGoogle:Waiting for HB`s promises to be solved');\n app.when(HEADER_BIDDING_READY).then(function() {\n showLog('Advertising:getAdGoogle:HB promises resolved with preEvents', params);\n if (params.pre_callback) {\n params.pre_callback();\n }\n HBProviderManager.setTargetings();\n _display(params);\n });\n }\n });\n } else {\n showLog('Advertising:getAdGoogle:Has NO pre-event', params);\n if (HBProviderManager.isActive()) {\n hasPreevent = true;\n showLog('Advertising:getAdGoogle:Waiting for HB`s promises to be solved');\n app.when(HEADER_BIDDING_READY).then(function() {\n showLog('Advertising:getAdGoogle:HB promises resolved without preEvents with', params);\n if (params.pre_callback) {\n params.pre_callback();\n }\n HBProviderManager.setTargetings();\n _display(params);\n });\n }\n }\n } else {\n showLog('Advertising:getAdGoogle:Is prioritized', params);\n if (HBProviderManager.isActive()) {\n hasPreevent = true;\n showLog('Advertising:getAdGoogle:Waiting for HB`s promises to be solved');\n app.when(HEADER_BIDDING_READY).then(function() {\n showLog('Advertising:getAdGoogle:HB promises resolved on prioritized position with', params);\n HBProviderManager.setTargetings();\n _display(params);\n });\n }\n }\n }\n\n // No tiene evento de activacion\n if (!hasPreevent) {\n showLog('Advertising:getAdGoogle:Has no pre-event. Painting', params);\n HBProviderManager.setTargetings();\n _display(params);\n }\n } else {\n showLog(`Advertising:getAdGoogle:Position ${params.position} has already been previously invoked. Checking the value of the refresh parameter`, params.refresh);\n if (params.refresh) _pintarPosicionRefresh(params);\n }\n });\n}\n\n/**\n * Funcion que recuperar si tiene evento pre o post callback, los parametros llegados por funcion\n * prevalecen sobre los del CONFIG\n * @param object params\n */\nfunction _getEventsPosition(params) {\n var tipoDispositivoAux, positionEvents;\n\n tipoDispositivoAux = _configManager.deviceType;\n positionEvents = app.lookup(`posicion_${tipoDispositivoAux}[\"${params.position}\"]`, _configManager.configGDP);\n\n if (isEmpty(positionEvents)) return positionEvents;\n\n positionEvents.pre_callback = params.pre_callback || params.pre_callback;\n positionEvents.pre_event = params.pre_event || params.pre_event;\n positionEvents.post_callback = params.post_callback || params.post_callback;\n positionEvents.post_event = params.post_event || params.post_event;\n\n return positionEvents;\n}\n\n/**\n * Devuelve el nombre de la variable que almacenara el slot\n */\nfunction _getNombreSlot(params, dynamicSuffix = true) {\n var dynamicId, dynamic;\n\n dynamicId = _configManager.dynamicId;\n dynamic = dynamicId && dynamicSuffix ? `_${dynamicId}` : '';\n\n return `slot_${params.position.replace('-', '_')}${dynamic}`;\n}\n\n/**\n * Clave unica de la posicion\n */\nfunction _getClavePosicionInsertada(params) {\n return _getNombreSlot(params) + '_' + _configManager.getIdDiv(params);\n}\n\n/**\n * Refresh de una posicion\n */\nfunction _pintarPosicionRefresh(params) {\n showLog(`En pintarPosicionRefresh. Refrescamos la posicion ${params.position}`);\n window.googletag.pubads().refresh([app.lookup(_getNombreSlot(params))]);\n}\n\n/**\n * INICIO: Renderizado de tablas de informacion cuando vam_info_slot=1\n * --------------------------------------------------------------------------\n */\n/**\n * Metodo de entrada de tablas de informacion\n */\nfunction _infoSlotRender(params, isSlotRendered) {\n var idDiv, container$, width, height, dimension, arrayObj, numSlots, numTopics, numOas, max;\n\n idDiv = _configManager.getIdDiv(params);\n container$ = $(`#${idDiv}`);\n width = $(`#${idDiv} div iframe`).width();\n height = $(`#${idDiv} div iframe`).height();\n\n // Obtenemos el tamano de la publi pintada y la borramos\n if (isSlotRendered) {\n container$.empty();\n } else {\n // Si DFP devuelve isEmpty cogemos la primera dimension del array, o 150x150 si es fluid\n try {\n height = 150;\n width = 150;\n dimension = _configManager.getSizesGoogle(params.position);\n if (dimension && dimension.indexOf('fluid') < 0) {\n arrayObj = JSON.parse(dimension);\n\n if (Array.isArray(arrayObj[0])) {\n width = arrayObj[0][0];\n height = arrayObj[0][1];\n } else {\n width = arrayObj[0];\n height = arrayObj[1];\n }\n }\n } catch (e) {\n showError('Advertising:infoSlotRender:Error building size.', e);\n }\n\n container$.show();\n }\n\n // Rectangulo con color azul o rojo (si es local)\n container$.addClass('gdp_infoSlot_rectangle').html(`

${params.position} ${_infoSlotFormateaDimensiones(params)}

`);\n if (_isLocalPosition(params)) container$.addClass('gdp_infoSlot_localPosition');\n if (!isSlotRendered) container$.addClass('gdp_infoSlot_inactive');\n\n if (!$('#gdp_infoSlot_tableInfo').length > 0) {\n $('body').append('
');\n }\n\n // Tablas de info adicional\n _infoSlotRenderSlots(params);\n _infoSlotRenderTopics();\n _infoSlotRenderOAS(params);\n\n numSlots = $('#gdp_infoSlot_tableInfo-slots').length > 0 ? $('#gdp_infoSlot_tableInfo-slots tbody tr').length : 0;\n numTopics = $('#gdp_infoSlot_tableInfo-topics').length > 0 ? $('#gdp_infoSlot_tableInfo-topics tbody tr').length : 0;\n numOas = $('#gdp_infoSlot_tableInfo-oas').length > 0 ? $('#gdp_infoSlot_tableInfo-oas tbody tr').length : 0;\n max = Math.max(numSlots, numTopics);\n if (max > numSlots && $('#gdp_infoSlot_tableInfo-slots').length > 0) {\n for (let i = 0; i < max - numSlots; i++) {\n $('#gdp_infoSlot_tableInfo-slots tbody').append(' ');\n }\n }\n if (max > numTopics && $('#gdp_infoSlot_tableInfo-topics').length > 0) {\n for (let i = 0; i < max - numTopics; i++) {\n $('#gdp_infoSlot_tableInfo-topics tbody').append(' ');\n }\n }\n if (max > numOas && $('#gdp_infoSlot_tableInfo-oas').length > 0) {\n for (let i = 0; i < max - numOas; i++) {\n $('#gdp_infoSlot_tableInfo-oas tbody').append(' ');\n }\n }\n}\n\nfunction _applyFilter(value) {\n return value\n .replace(new RegExp(\"'fluid'\", 'g'), '[fluid]')\n .replace(new RegExp('\\\\],\\\\[', 'g'), '_')\n .replace(new RegExp(',', 'g'), 'x')\n .replace(new RegExp('\\\\[', 'g'), '')\n .replace(new RegExp('\\\\]', 'g'), '')\n .replace(new RegExp('_', 'g'), ',');\n}\n\nfunction _infoSlotFormateaDimensiones(params) {\n var\n result, dimensionsArray, mappingObj, sizeMapping,\n dimension, resolution, notRepeatedDimensions;\n\n result = '';\n dimensionsArray = [];\n mappingObj = {};\n sizeMapping = '';\n\n try {\n if (params.outOfPage) {\n dimensionsArray.push('oop');\n } else if (params.responsive &&\n Array.isArray(params.responsive) &&\n params.responsive.length > 0\n ) {\n mappingObj = _getSizeMapping(params);\n sizeMapping = ((typeof mappingObj !== 'undefined') && (typeof mappingObj.definition !== 'undefined')) ? mappingObj.definition : '';\n sizeMapping.split('.').forEach(function(size) {\n if (size.indexOf('addSize') > -1) {\n size = size.replace(new RegExp('addSize\\\\(', 'g'), '').replace(new RegExp('\\\\)', 'g'), '');\n dimensionsArray.push(size);\n }\n });\n } else {\n dimensionsArray.push(app.lookup(`posicion_${_configManager.deviceType}[\"${params.position}\"].dimensiones`, _configManager.configGDPMedio));\n }\n\n if (Array.isArray(dimensionsArray)) {\n if (params.outOfPage) { // Posicion OutOfPage\n result += '(oop)';\n } else if (!params.responsive) { // Posicion no responsive\n dimension = _applyFilter(dimensionsArray[0]);\n result += '(' + dimension + ')';\n } else { // Posicion responsive\n notRepeatedDimensions = new Set();\n dimensionsArray.forEach(function(dimen) {\n var filtered = _applyFilter(dimen);\n\n // Quitamos la resolucion\n resolution = filtered.substring(0, filtered.indexOf(','));\n dimension = filtered.substring(filtered.indexOf(',') + 1);\n notRepeatedDimensions.add(dimension);\n result += '
' + resolution + ': (' + dimension + ')';\n });\n\n // Si todas las dimensiones de responsive son la misma escribimos solo una\n if (notRepeatedDimensions.size === 1) result = '(' + dimension + ')';\n }\n }\n } catch (err) {\n showError('Advertising:infoSlotFormateaDimensiones:Error', err);\n }\n\n return result;\n}\n\n/**\n * Tabla de informacion de SLOTS\n */\nfunction _infoSlotRenderSlots(params) {\n if (!$('#gdp_infoSlot_tableInfo-slots').length) {\n $('#gdp_infoSlot_tableInfo').append('
');\n $('#gdp_infoSlot_tableInfo-slots thead').append('posiciones');\n }\n $('#gdp_infoSlot_tableInfo-slots tbody').append(`${params.position}`);\n}\n\n/**\n * Tabla de informacion de TOPICS\n */\nfunction _infoSlotRenderTopics() {\n var topics = _getTopics(true);\n if (topics.length > 0) {\n if (!$('#gdp_infoSlot_tableInfo-topics').length) {\n $('#gdp_infoSlot_tableInfo').append('
');\n $('#gdp_infoSlot_tableInfo-topics thead').append('topics');\n\n topics.forEach(function(topic) {\n $('#gdp_infoSlot_tableInfo-topics tbody').append(`${topic}`);\n });\n }\n }\n}\n\n/**\n * Tabla de informacion de OAS\n */\nfunction _infoSlotRenderOAS(params) {\n if (!$('#gdp_infoSlot_tableInfo-oas').length) {\n $('#gdp_infoSlot_tableInfo').append('
');\n $('#gdp_infoSlot_tableInfo-oas thead').append('oas');\n $('#gdp_infoSlot_tableInfo-oas tbody').append(`${_configManager.getOasSitepage(params)}`);\n }\n}\n\n/**\n * Devuelve un array con los topics que contiene la pagina, en caso de que los contenga y que\n * enableTopics este habilitado.\n * @return array\n */\nfunction _getTopics(forzarEnableTopics) {\n var topics = [];\n\n if ((_configManager.configGDPMedio.enableTopics || forzarEnableTopics) && window.voc_top) {\n topics = window.voc_top.split(',');\n }\n\n return topics;\n}\n\n/**\n * Funcion que devuelve true si la posicion es local, false si no lo es\n * @return boolean\n */\nfunction _isLocalPosition(params) {\n return params.position.includes('_local');\n}\n/**\n * FIN: Renderizado de tablas de informacion cuando vam_info_slot=1\n * --------------------------------------------------------------------------\n */\n\n\n/**\n * INICIO: Capturador (modo preview)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Devuelve true si hay preview para la posicion indicada o false en caso contrario\n * @returns {boolean}\n */\nfunction _capturadorExistsPreview(params) {\n return _configManager.capturadorDataPreview &&\n _configManager.capturadorDataPreview[params.position];\n}\n\n/**\n * funcion que cambia la publicidad por defecto, por una que se indica\n */\nfunction _capturadorSetPreview(params) {\n var previewJSON, preview, idDiv, div, creatividad;\n\n try {\n previewJSON = JSON.parse(_configManager.capturadorDataPreview[params.position]);\n preview = previewJSON[0];\n idDiv = _configManager.getIdDiv(params);\n creatividad = ``;\n div = $(`#${idDiv}`);\n div.empty();\n div.html(creatividad);\n showLog(`En capturadorSetPreview. Pintada preview para la posicion ${params.position}`);\n } catch (err) {\n showError('Advertising:capturadorSetPreview:Error', err);\n }\n}\n/**\n * FIN: Capturador (modo preview)\n * --------------------------------------------------------------------------\n */\n\n\n\n// WEBPACK FOOTER //\n// ./src/advertising.js","import app from '../application';\nimport Amazon from './providers/amazon';\nimport Prebid from './providers/prebid';\nimport {\n showLog,\n showError\n} from '../logger';\nimport {HEADER_BIDDING_READY} from '../constants';\n\nconst GATEWAYS = [\n Amazon,\n Prebid\n];\nconst {RSVP} = window;\nvar _gatewaysPromises = [];\nvar _gatewaysAdded = [];\n\nwindow.googletag = window.googletag || {};\nwindow.googletag.cmd = window.googletag.cmd || [];\nwindow.customcmd = window.customcmd || [];\n\nexport default Object.preventExtensions({\n /**\n * Get promises from gateways.\n * NOTE: Init method must be call before isActive method\n * @param {string} device - device type\n * @param {object} config - configGDPMedio object\n * @param {integer} dynamicId - dynamicId(infinite-scroll)\n */\n init(config) {\n _gatewaysPromises = [];\n // NOTE: load promises of active gateways\n _loadActivesGateways.call(_gatewaysPromises, config);\n\n // NOTE: when all promises are resolved, rejected or timeout reached, resolve the HB-Promise\n return RSVP.all(_gatewaysPromises)\n .then(function() {\n showLog('HBManager:init:All gateways have finished');\n app.promised(HEADER_BIDDING_READY, true);\n })\n .catch(function(reason) {\n showError('HBManager:init:Error in gateways', reason);\n app.promised(HEADER_BIDDING_READY, false);\n });\n },\n /**\n * Set targeting to DFP request\n */\n setTargetings() {\n showLog('HBManager:setTargetings:Setting targetings for each added gateways');\n _gatewaysAdded.forEach(function(gateway) {\n gateway.setTargetings();\n });\n },\n /**\n * Check if there are gateways actives\n */\n isActive() {\n return _gatewaysPromises.length;\n }\n});\n\n/* Private */\n\n/**\n * Load active gateways by config\n * @param {object} configGDPMedio\n */\nfunction _loadActivesGateways(config) {\n _gatewaysAdded = [];\n GATEWAYS.forEach((gateway) => {\n if (gateway.isActive(config)) {\n showLog('HBManager:loadActivesGateways:Add promise', gateway.NAME);\n _gatewaysAdded.push(gateway);\n this.push(gateway.getLoadPromise(config));\n }\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/header-bidding/provider-manager.js","import app from '../../application';\nimport {\n showLog,\n showError,\n showWarn\n} from '../../logger';\nimport {\n DEFAULT_AMAZON_LOAD_TIMEOUT,\n AMAZON_URL,\n AMAZON_CONFIG\n} from '../../constants';\n\nimport './amazon-script';\n// NOTE: 'apstag' is the global variable that Amazon searches for\nvar _adserverRequestResponse = false;\n\nconst REASONS = {\n ERROR_LOAD_LIBRARY: 'ERROR_LOAD_LIBRARY',\n TIMEOUT_REACHED_GLOBAL: 'TIMEOUT_REACHED_GLOBAL',\n TIMEOUT_REACHED_FETCH_BIDS: 'TIMEOUT_REACHED_FETCH_BIDS',\n ERROR_INIT_CONFIG: 'ERROR_INIT_CONFIG'\n};\nconst {RSVP} = window;\nconst NAME = 'AMAZON';\n\nexport default Object.preventExtensions({\n NAME,\n isActive({hbAmazon}) {\n if (hbAmazon) {\n showLog('Amazon:Is active');\n } else {\n showLog('Amazon:Is NOT active');\n }\n return hbAmazon;\n },\n /**\n * Launch amazon behaviour\n * @param {object} adUnits - adUnits config\n * @param {object} biddersConfig\n * @param {integer} timeout\n * @return {Promise}\n */\n getLoadPromise({hbAmazon}) {\n return new RSVP.Promise(function(resolve, reject) {\n var timeout = hbAmazon.timeout || DEFAULT_AMAZON_LOAD_TIMEOUT;\n\n _adserverRequestResponse = false;\n _loadLibrary()\n .then(function() {\n showLog('Amazon:getLoadPromise:Library loaded');\n return _setConfig();\n })\n .then(function() {\n showLog('Amazon:getLoadPromise:apstag is loaded');\n return _fetchBid(hbAmazon);\n })\n .then(function() {\n showLog('Amazon:getLoadPromise:Bids fetched');\n resolve(true);\n })\n .catch(function(reason) {\n reject(reason);\n });\n\n setTimeout(function() {\n if (!_adserverRequestResponse) {\n showWarn('Amazon:getLoadPromise:Timeout reached', timeout);\n reject(REASONS.TIMEOUT_REACHED_GLOBAL);\n }\n }, timeout);\n }).catch(function(reason) {\n switch (reason) {\n case REASONS.TIMEOUT_REACHED_GLOBAL:\n showLog('Amazon:getLoadPromise:TIMEOUT reached global');\n break;\n case REASONS.TIMEOUT_REACHED_FETCH_BIDS:\n showLog('Amazon:getLoadPromise:TIMEOUT reached in _fetchBid');\n break;\n case REASONS.ERROR_LOAD_LIBRARY:\n showError('Amazon:getLoadPromise:Error loading library');\n break;\n case REASONS.ERROR_INIT_CONFIG:\n showError('Amazon:getLoadPromise:Error on init config');\n break;\n default:\n showError('Amazon:getLoadPromise:Error in Amazon process', reason);\n }\n return false;\n });\n },\n\n /**\n * Force setTargeting\n */\n setTargetings() {\n if (_adserverRequestResponse) {\n window.customcmd.push(function() {\n window.apstag.setDisplayBids();\n showLog('Amazon:setTargetings:Targetings added');\n });\n } else {\n showLog('Amazon:setTargetings:Targetings NOT added because no response from bidders');\n }\n }\n});\n\n/* Private */\n\n/**\n * Load Amazon library\n * @return {Promise}\n */\nfunction _loadLibrary() {\n showLog('Amazon:loadLibrary:Loading library');\n return app.load(AMAZON_URL)\n .catch(function(reason) {\n showError('Amazon:loadLibrary:Error', reason);\n return RSVP.reject(REASONS.ERROR_LOAD_LIBRARY);\n });\n}\n\n/**\n * Set apstag init config\n */\nfunction _setConfig() {\n return new RSVP.Promise(function(resolve, reject) {\n // NOTE: set custom config object\n showLog('Amazon:setConfig:Show Amazon config', AMAZON_CONFIG);\n try {\n window.apstag.init(AMAZON_CONFIG, function() {\n resolve();\n });\n } catch (error) {\n showError('Amazon:setConfig:Error', error);\n reject(REASONS.ERROR_INIT_CONFIG);\n }\n });\n}\n\n/**\n * Add slots config and make Amazon call\n * @param {object} config - hbAmazon config from configGDPMedio\n */\nfunction _fetchBid(config) {\n var bidConfig;\n\n bidConfig = {\n slots: config.slots,\n timeout: config.timeout || DEFAULT_AMAZON_LOAD_TIMEOUT\n };\n\n return new RSVP.Promise(function(resolve, reject) {\n showLog('Amazon:fetchBid:Add Slots', bidConfig.slots);\n showLog('Amazon:fetchBid:Request Amazon');\n window.apstag.fetchBids(bidConfig, function(bids) {\n showLog('Amazon:fetchBid:Response from Amazon', bids);\n // NOTE: When there are no bids returned, the bids array will be empty\n if (Object.keys(bids).length === 0) {\n reject(REASONS.TIMEOUT_REACHED_FETCH_BIDS);\n return;\n }\n showLog('Amazon:fetchBid:Targetings keys', window.apstag.targetingKeys());\n _adserverRequestResponse = true;\n resolve();\n });\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/header-bidding/providers/amazon.js","// NOTE: function to queue the apstag calls before the library load, the original load the library too(https://ams.amazon.com/webpublisher/docs/help/web-integration-documentation/integration-guide/javascript-guide/display.html)\n(function IIFE(apstagGlobalName, root) {\n if (root[apstagGlobalName]) return;\n function queue(c, r) {\n root[apstagGlobalName]._Q.push([c, r]);\n }\n root[apstagGlobalName] = {\n init: function() {\n queue('i', arguments);\n },\n fetchBids: function() {\n queue('f', arguments);\n },\n setDisplayBids: function() {},\n targetingKeys: function() {\n return [];\n },\n _Q:[]\n };\n}('apstag', window));\n\n\n\n// WEBPACK FOOTER //\n// ./src/header-bidding/providers/amazon-script.js","import app from '../../application';\nimport {\n showLog,\n showError,\n showWarn\n} from '../../logger';\nimport {\n DEFAULT_PREBID_LOAD_TIMEOUT,\n PREBID_URL,\n SHOW_LOGS\n} from '../../constants';\n\nconst REASONS = {\n EMPTY_ADUNITS: 'EMPTY_ADUNITS',\n ERROR_LOAD_LIBRARY: 'ERROR_LOAD_LIBRARY',\n TIMEOUT_REACHED_GLOBAL: 'TIMEOUT_REACHED_GLOBAL',\n TIMEOUT_REACHED_FETCH_BIDS: 'TIMEOUT_REACHED_FETCH_BIDS'\n};\nconst {RSVP} = window;\nconst NAME = 'PREBID';\n\nvar _adserverRequestResponse = false;\n\n// NOTE: This is the global variable that Prebid searches for\nwindow.pbjs = window.pbjs || {};\nwindow.pbjs.que = window.pbjs.que || [];\n\nexport default Object.preventExtensions({\n NAME,\n isActive({hbPrebid}) {\n if (hbPrebid) {\n showLog('Prebid:Is active');\n } else {\n showLog('Prebid:Is NOT active');\n }\n return hbPrebid;\n },\n /**\n * Launch prebid behaviour\n * @param {object} adUnits - adUnits config\n * @param {object} biddersConfig\n * @param {integer} timeout\n * @return {Promise}\n */\n getLoadPromise({hbPrebid}) {\n _adserverRequestResponse = false;\n return new RSVP.Promise(function(resolve, reject) {\n var timeout = hbPrebid.timeout || DEFAULT_PREBID_LOAD_TIMEOUT;\n _loadLibrary()\n .then(function() {\n showLog('Prebid:getLoadPromise:Library loaded');\n _setConfig(hbPrebid);\n return _fetchBid(hbPrebid);\n })\n .then(function() {\n showLog('Prebid:getLoadPromise:Bids fetched');\n resolve(true);\n })\n .catch(function(reason) {\n reject(reason);\n });\n\n setTimeout(() => {\n if (!_adserverRequestResponse) {\n showWarn('Prebid:getLoadPromise:Timeout reached', timeout);\n reject(REASONS.TIMEOUT_REACHED_GLOBAL);\n }\n }, timeout);\n }).catch(function(reason) {\n switch (reason) {\n case REASONS.TIMEOUT_REACHED_GLOBAL:\n showLog('Prebid:getLoadPromise:TIMEOUT reached global');\n break;\n case REASONS.TIMEOUT_REACHED_FETCH_BIDS:\n showLog('Prebid:getLoadPromise:TIMEOUT reached in _fetchBid');\n break;\n case REASONS.ERROR_LOAD_LIBRARY:\n showError('Prebid:getLoadPromise:Error loading library', reason);\n break;\n case REASONS.EMPTY_ADUNITS:\n showError('Prebid:getLoadPromise:There are not adUnits');\n break;\n default:\n showError('Prebid:getLoadPromise:Error in Prebid process', reason);\n }\n return false;\n });\n },\n\n /**\n * Force setTargeting\n */\n setTargetings() {\n if (_adserverRequestResponse) {\n window.customcmd.push(function() {\n window.pbjs.que.push(function() {\n window.pbjs.setTargetingForGPTAsync();\n showLog('Prebid:setTargetings:Targetings added');\n });\n });\n } else {\n showLog('Prebid:setTargetings:Targetings NOT added because no response from bidders');\n }\n }\n});\n\n/* Private */\n\n/**\n * Load prebid library\n * @return {Promise}\n */\nfunction _loadLibrary() {\n showLog('Prebid:loadLibrary:Loading library');\n return app.load(PREBID_URL)\n .catch(function(reason) {\n showError('Prebid:loadLibrary', reason);\n return RSVP.reject(REASONS.ERROR_LOAD_LIBRARY);\n });\n}\n\nfunction _setConfig(hbPrebid) {\n var biddersConfig, pbjsConfig;\n\n biddersConfig = hbPrebid.biddersConfig;\n // NOTE: set custom config object\n pbjsConfig = {\n debug : SHOW_LOGS,\n enableSendAllBids: hbPrebid.enableSendAllBids || true,\n priceGranularity : 'dense'\n };\n\n showLog('Prebid:setConfig:biddersConfig', biddersConfig);\n window.pbjs.bidderSettings = _fetchBiddersSettings(biddersConfig);\n window.pbjs.setConfig(pbjsConfig);\n showLog('Prebid:setConfig:Show Prebid config', window.pbjs.getConfig());\n}\n\n/**\n * Add adUnits config and make prebid call\n * @param {object} config - hbPrebid config from configGDPMedio\n */\nfunction _fetchBid(hbPrebid) {\n var adUnits, timeout;\n\n adUnits = hbPrebid.adUnits;\n timeout = hbPrebid.timeout || DEFAULT_PREBID_LOAD_TIMEOUT;\n\n return new RSVP.Promise(function(resolve, reject) {\n if (!adUnits.length) {\n showLog('Prebid:fetchBid:There are not adUnits');\n reject(REASONS.EMPTY_ADUNITS);\n return;\n }\n window.pbjs.que.push(function() {\n showLog('Prebid:fetchBid:Add adUnits', adUnits);\n window.pbjs.addAdUnits(adUnits);\n showLog('Prebid:fetchBid:Request Prebid');\n window.pbjs.requestBids({\n timeout,\n bidsBackHandler: function(biddersResponse) {\n showLog('Prebid:fetchBid:Response from Prebid', biddersResponse);\n if (Object.keys(biddersResponse).length === 0) {\n reject(REASONS.TIMEOUT_REACHED_FETCH_BIDS);\n return;\n }\n showLog('Prebid:fetchBid:Targetings', window.pbjs.getAdserverTargeting());\n _adserverRequestResponse = true;\n resolve();\n }\n });\n });\n });\n}\n\n/**\n * Build bidders settings from config\n * @param {object} biddersConfig - biddersConfig from configGDPMedio.hbPrebid\n * @return {object} bidderSettings\n */\nfunction _fetchBiddersSettings(biddersConfig) {\n const bidderSettings = {};\n\n Object.keys(biddersConfig).forEach(function(bidderName) {\n bidderSettings[bidderName] = {\n bidCpmAdjustment: function(bidCpm, bid) {\n var percent;\n\n percent = (1 - ('percent' in biddersConfig[bidderName] ? biddersConfig[bidderName].percent / 100 : 0));\n // NOTE: adjust the bid in real time before the auction takes place\n showLog('Prebid:fetchBiddersSettings:bidCpmAdjustment Bidder is:', bid.bidderCode, 'with percent:', percent);\n // NOTE: return bidCpm * .85; Ex.: rest 15% to the gross price\n return bidCpm * percent;\n }\n };\n });\n\n return bidderSettings;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/header-bidding/providers/prebid.js","import {\n DEFAULT_PREBID_LOAD_TIMEOUT,\n DEFAULT_AMAZON_LOAD_TIMEOUT,\n OLD_PREFIX,\n NEW_SUFFIX\n} from '../constants';\nimport {\n showLog,\n showWarn\n} from '../logger';\n\nexport default Object.preventExtensions({\n processConfig(configManager) {\n showLog('HBConfigManager:processConfig:Process HB config');\n _processPrebidConfig(configManager);\n _processAmazonConfig(configManager);\n }\n});\n\n/**\n * Process Prebid HB config to set dynamicId\n * @param {object} configManager\n */\nfunction _processPrebidConfig(configManager) {\n var property, adUnits, newConfig, biddersDisabled;\n var {headerBidding} = configManager.configGDPMedio;\n\n showLog('HBConfigManager:processPrebidConfig:Process Prebid config');\n\n if (!headerBidding) {\n showLog('HBConfigManager:processPrebidConfig:There are not Prebid configuration');\n configManager.configGDPMedio.hbPrebid = null;\n return;\n }\n\n property = `adUnits_${configManager.deviceType}`;\n if (!(property in headerBidding) || !headerBidding[property].length) {\n showLog('HBConfigManager:processPrebidConfig:There are not bidders to device type', configManager.deviceType);\n configManager.configGDPMedio.hbPrebid = null;\n return;\n }\n\n // NOTE: 'disabled' key has the disabled bidders separated by comma\n biddersDisabled = [];\n if ('disabled' in headerBidding.biddersConfig) {\n biddersDisabled = headerBidding.biddersConfig.disabled.map(function(current) {\n return current.trim();\n });\n }\n\n adUnits = [];\n headerBidding[property].forEach((current) => {\n var position, newBids = [];\n\n position = current.code.replace(new RegExp(`(${OLD_PREFIX}|${NEW_SUFFIX})`, 'g'), '');\n if (!configManager.existePosEnConfigGDPMedio(position)) {\n showWarn(`HBConfigManager:processPrebidConfig:Position ${position} does not exists in configGDPMedio`);\n return;\n }\n if (!configManager.isActive({position})) {\n showWarn(`HBConfigManager:processPrebidConfig:Position ${position} is not active`);\n return;\n }\n\n current.code += configManager.dynamicId ? `-${configManager.dynamicId}` : '';\n\n if (biddersDisabled.length) {\n current.bids.forEach((bid) => {\n if (biddersDisabled.indexOf(bid.bidder) < 0) {\n newBids.push(bid);\n }\n });\n } else {\n newBids = current.bids;\n }\n\n if (!newBids.length) {\n showWarn(`HBConfigManager:processPrebidConfig:Remove adUnit ${current.code} because all bidders are disabled`);\n return;\n }\n\n current.bids = newBids;\n adUnits.push(current);\n });\n\n newConfig = {\n adUnits: adUnits,\n biddersConfig: headerBidding.biddersConfig,\n enableSendAllBids: headerBidding.enableSendAllBids,\n timeout: headerBidding.timeout || DEFAULT_PREBID_LOAD_TIMEOUT\n };\n\n delete configManager.configGDPMedio.headerBidding;\n configManager.configGDPMedio.hbPrebid = newConfig;\n}\n\n/**\n * Process Amazon HB config to set dynamicId and slotName\n * @param {object} configManager\n */\nfunction _processAmazonConfig(configManager) {\n var property, slots, newConfig;\n var {hbAmazon} = configManager.configGDPMedio;\n\n if (!hbAmazon) {\n showLog('HBConfigManager:processAmazonConfig:There are not Amazon configuration');\n configManager.configGDPMedio.hbAmazon = null;\n return;\n }\n\n property = `slots_${configManager.deviceType}`;\n if (!(property in hbAmazon) || !hbAmazon[property].length) {\n showLog('HBConfigManager:processAmazonConfig:There are not slots to device type', configManager.deviceType);\n configManager.configGDPMedio.hbAmazon = null;\n return;\n }\n\n slots = [];\n hbAmazon[property].forEach((current) => {\n var position;\n\n position = current.slotID.replace(new RegExp(`(${OLD_PREFIX}|${NEW_SUFFIX})`, 'g'), '');\n if (!configManager.existePosEnConfigGDPMedio(position)) {\n showWarn(`HBConfigManager:processAmazonConfig:Position ${position} does not exists in configGDPMedio`);\n return;\n }\n if (!configManager.isActive({position})) {\n showWarn(`HBConfigManager:processAmazonConfig:Position ${position} is not active`);\n return;\n }\n\n current.slotName = _getAmazonSlotName(configManager, position);\n current.slotID += configManager.dynamicId ? `-${configManager.dynamicId}` : '';\n slots.push(current);\n });\n\n newConfig = {\n slots: slots,\n timeout: hbAmazon.timeout || DEFAULT_AMAZON_LOAD_TIMEOUT\n };\n\n configManager.configGDPMedio.hbAmazon = newConfig;\n}\n\nfunction _getAmazonSlotName(configManager, position) {\n var params;\n\n var container$ = $(`[data-voc-vam-position = '${position}']`, configManager.context$);\n if (container$.length) {\n params = configManager.normalizaParams(container$);\n } else {\n params = configManager.normalizaParams({position});\n }\n\n return configManager.getOasSitepage(params);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/header-bidding/config-manager.js","import {\n showLog,\n showError\n} from './logger';\nimport {\n GPT_URL\n} from './constants';\n\nconst _files = {};\n\n/**\n * Check if a object is empty or is undefined. Not be used for arrays or strings\n * @param {mixed} value\n * @return {boolean}\n */\nexport function isEmpty(value) {// OK\n if ((typeof value === 'object' && Object.keys(value).length) ||\n (typeof value !== 'object' && typeof value !== 'undefined')) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Get a URL param value\n * @param {string} paramName\n * @param {string} url\n */\nexport function getParameterByName(paramName, url = window.location.href) {\n var regExp, results;\n\n // NOTE: replace the '[element]' with '\\[element\\]' using '\\\\$&'\n paramName = paramName.replace(/[[\\]]/g, '\\\\$&');\n regExp = new RegExp(`[?&]${paramName}(=([^&#]+)|&|#|$)`);\n results = regExp.exec(url);\n\n if (!results) return '';\n if (!results[2]) return '';\n\n return decodeURIComponent(results[2].replace(/\\+/g, ' '));\n}\n\nexport function load(url, options = {}) {\n var promise, file, key;\n\n key = url.split('?').shift();\n if (Object.hasOwnProperty.call(_files, key)) {return _files[key];}\n\n options.type = options.type || 'script';\n\n file = document.createElement(options.type);\n switch (options.type) {\n case 'link':\n file.type = 'text/css';\n file.rel = 'stylesheet';\n file.href = url;\n break;\n case 'script':\n default:\n file.type = 'text/javascript';\n file.src = url;\n file.async = true;\n options.text && (file.text = options.text);\n break;\n }\n\n promise = new window.RSVP.Promise((resolve, reject) => {\n file.onload = () => resolve(file);\n file.onerror = reject;\n\n document.head.appendChild(file);\n });\n\n _files[key] = promise;\n return promise;\n}\n\n/**\n * Carga del JS para la publicidad de Google\n */\nexport function cargaLibreriaGPT() {\n var gads, useSSL, node;\n window.googletag = window.googletag || {};\n window.googletag.cmd = window.googletag.cmd || [];\n window.customcmd = window.customcmd || [];\n try {\n if ($(`script[src*='${GPT_URL}']`).length === 0) {\n gads = document.createElement('script');\n gads.async = true;\n gads.type = 'text/javascript';\n useSSL = document.location.protocol === 'https:';\n gads.src = (useSSL ? 'https:' : 'http:') + `//${GPT_URL}`;\n node = document.getElementsByTagName('script')[0];\n node.parentNode.insertBefore(gads, node);\n window.googletag.cmd.push(function() {\n var func;\n showLog('First function', window.customcmd.length);\n while (window.customcmd.length) {\n func = window.customcmd.splice(0, 1)[0];\n window.googletag.cmd.push(func);\n }\n showLog('Finish Pushing to googletag.cmd', window.customcmd.length);\n window.customcmd = window.googletag.cmd;\n });\n }\n } catch (err) {\n showError('Utils:cargaLibreriaGPT:Error loading GPT library');\n }\n}\n\nexport function extend() {\n var args = arguments;\n var objectValues = Object.keys(args).map(e => args[e]);\n // sustituto de Object.values(args)\n\n objectValues.forEach(function(argument, pos) {\n pos !== 0 && Object.keys(argument).forEach((key) => {\n args[0][key] = argument[key];\n });\n });\n\n return args[0];\n}\n\nexport function endsWith(str, suffix) {\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\n}\n\nexport function startsWith(str, needle) {\n return str.indexOf(needle) === 0;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils.js","export function extend(destination, source) {\n Object.keys(source).forEach((key) => {\n destination[key] = source[key];\n });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/mixins/mixin.js","module.exports = {\"name\":\"vam\",\"version\":\"3.10.0\",\"description\":\"\",\"main\":\"src/index.js\",\"scripts\":{\"test\":\"./node_modules/.bin/nyc ./node_modules/.bin/mocha-webpack tests/index.js --require jsdom-global/register --webpack-config webpack.test.js\",\"tdd\":\"./node_modules/.bin/mocha-webpack tests/index.js --require jsdom-global/register --webpack-config webpack.test.js --watch\",\"start\":\"./node_modules/.bin/webpack-dev-server --open --config webpack.dev.js\",\"build\":\"./node_modules/.bin/webpack --optimize-minimize --config webpack.prod.js\",\"prebid\":\"cd ./node_modules/prebid.js/ && npm install && \\\"./node_modules/.bin/gulp\\\" build --modules=../../src/header-bidding/prebid-modules.json && cd ../..\"},\"contributors\":[\"Jose Manuel Ortega \",\"Ernesto V. \",\"Iván Pérez \"],\"license\":\"SEE LICENSE IN LICENSE.md\",\"devDependencies\":{\"babel-core\":\"^6.26.0\",\"babel-eslint\":\"^8.0.1\",\"babel-loader\":\"^7.1.2\",\"babel-plugin-syntax-dynamic-import\":\"^6.18.0\",\"babel-polyfill\":\"^6.16.0\",\"babel-preset-env\":\"^1.6.1\",\"chai\":\"^4.1.2\",\"chalk\":\"^1.1.3\",\"clean-webpack-plugin\":\"^0.1.17\",\"copy-webpack-plugin\":\"^4.3.1\",\"css-loader\":\"^0.28.4\",\"eslint\":\"^4.7.2\",\"eslint-config-airbnb-base\":\"^12.0.1\",\"eslint-plugin-import\":\"^2.7.0\",\"extract-text-webpack-plugin\":\"^1.0.1\",\"file-loader\":\"^1.1.6\",\"html-loader\":\"^0.5.5\",\"html-webpack-plugin\":\"^2.30.1\",\"json-loader\":\"^0.5.7\",\"mocha\":\"^4.0.1\",\"mocha-loader\":\"^1.0.0\",\"mocha-phantomjs\":\"^4.1.0\",\"mocha-webpack\":\"^1.0.1\",\"nyc\":\"^11.4.1\",\"style-loader\":\"^0.18.2\",\"webpack\":\"^3.10.0\",\"webpack-dev-server\":\"^2.9.7\",\"webpack-merge\":\"^4.1.1\",\"webpack-shell-plugin\":\"^0.5.0\"},\"dependencies\":{\"jquery-inview\":\"^1.1.2\",\"js-cookie\":\"^2.1.4\",\"prebid.js\":\"^0.34.1\",\"rijndael-js\":\"^1.0.0\",\"rsvp\":\"^3.5.0\"}}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./package.json\n// module id = 8\n// module chunks = 2 3 4","import HBConfigManager from './header-bidding/config-manager';\nimport app from './application';\nimport {\n isEmpty,\n getParameterByName,\n load,\n extend,\n endsWith,\n startsWith\n} from './utils';\nimport {\n showLog,\n showWarn,\n showError\n} from './logger';\nimport {\n DEFAULTS,\n SLOT_INACTIVE,\n OLD_PREFIX,\n NEW_SUFFIX,\n ALTOS_MINIMOS_DISPOSITIVOS,\n GPT_ID_VOCENTO,\n EDITIONS_NAMESPACE,\n CAPTURADOR_WS,\n VAM_CSS_URL,\n MCRYPT_KEY\n} from './constants';\n\nconst URL_PARAM_ALL = 'all';\n\nvar\n _dynamicId = -1,\n _prevEncryptedCode = '',\n _prevUnencryptedCode = ''\n;\n\nclass ConfigManager {\n constructor(configGDPMedio, configGDP) {\n _prevEncryptedCode = '';\n _prevUnencryptedCode = '';\n this.configGDPMedio = extend({}, configGDPMedio);\n this.configGDP = extend({}, configGDP);\n this.deviceType = _getTipoDispositivo.call(this);\n this.pageType = _getTipoPagina.call(this);\n this.dynamicId = ++_dynamicId;\n this.context$ = null;\n this.isResponsiveMedia = _isResponsiveMedia.call(this);\n this.capturadorDataPreview = '';\n this.valueUserType = _getValueUser();\n this.delayedPositions = _getDelayed.call(this);\n this.prioritizedPositions = _getPrioritized.call(this);\n this.globalTargetings = _getDefineSlotTargetings.call(this);\n }\n\n /**\n * Process the configGDPMedia\n */\n processConfig() {\n HBConfigManager.processConfig(this);\n }\n\n /**\n * Check if a position is enabled or disabled\n * @param {object} params\n * @return {boolean}\n */\n isActive(params) {// OK\n var container$, configPosition, configSchedules, currentDate, found;\n\n // check if all positions or the given in params are actives by URL\n if ('forceActivePosition' in this.configGDPMedio &&\n (this.configGDPMedio.forceActivePosition.indexOf('1') > -1 ||\n this.configGDPMedio.forceActivePosition.indexOf(URL_PARAM_ALL) > -1 ||\n this.configGDPMedio.forceActivePosition.indexOf(params.position) > -1)\n ) {\n return true;\n }\n\n container$ = $(`#${this.getIdDiv(params)}`);\n configPosition = app.lookup(`posicion_${this.deviceType}.${params.position}`, this.configGDP);\n\n // Checking that the config of the device type is added\n\n if (!isEmpty(configPosition)) {\n // Check if the position is active for the page type\n if (configPosition.desactivadoen && configPosition.desactivadoen.length\n && configPosition.desactivadoen !== ''\n && configPosition.desactivadoen.indexOf(this.pageType) !== -1\n ) {\n showLog(`ConfigManager:isActive:Position ${params.position} is not active for the pageType ${this.pageType}`);\n container$.trigger(SLOT_INACTIVE);\n return false;\n }\n\n // Check if the position has programming\n currentDate = Math.round(+new Date() / 1000);\n found = false;\n configSchedules = app.lookup(`posicion_${this.deviceType}.${params.position}.programaciones`, this.configGDP);\n if (!isEmpty(configSchedules) && configSchedules.length) {\n found = configSchedules.some(function(current) {\n var beginDate, endDate;\n beginDate = current.programacion ? current.programacion.fecha_in : 0;\n endDate = current.programacion ? current.programacion.fecha_fin : 0;\n return (beginDate === 0 || currentDate >= beginDate)\n && (endDate === 0 || currentDate <= endDate);\n });\n\n if (!found) {\n showLog(`ConfigManager:isActive:Position ${params.position} is not active for the current date`);\n container$.trigger(SLOT_INACTIVE);\n return false;\n }\n }\n } else {\n showLog(`ConfigManager:isActive:Position ${params.position} is not active`);\n container$.trigger(SLOT_INACTIVE);\n return false;\n }\n\n return true;\n }\n\n /**\n * Generate position identifier\n * FUTURE: Clean this method when all pages(ABC, MH, PPLL) use the\n * new ADS strategy(PREFIX or SUFIX come from GDP)\n * @param {object} params\n * @return {string}\n */\n getIdDiv(params) {// OK\n var adsId, dynamicId;\n\n showLog('ConfigManager:getIdDiv:Dinamic ID', params.dynamicId, this.dynamicId);\n dynamicId = this.dynamicId ? `-${this.dynamicId}` : '';\n if (params.dynamicId !== undefined) {\n dynamicId = params.dynamicId ? `-${params.dynamicId}` : '';\n }\n if (params.id && typeof params.id === 'string') {\n showLog('ConfigManager:getIdDiv:With Id param', params);\n adsId = params.id.indexOf(OLD_PREFIX) > -1 ? params.id : `${OLD_PREFIX}${params.id}`;\n if (!$(`#${adsId}`).length) {\n showLog('ConfigManager:getIdDiv:With Id param. Not found ID', adsId);\n adsId = params.id.indexOf(NEW_SUFFIX) > -1 ? params.id : `${params.id}${NEW_SUFFIX}`;\n }\n adsId += endsWith(adsId, dynamicId) ? '' : dynamicId;\n showLog('ConfigManager:getIdDiv:With Id param. Id calculated', adsId);\n } else {\n showLog('ConfigManager:getIdDiv:No Id param', params);\n adsId = `${OLD_PREFIX}${params.position}`;\n if (!$(`#${adsId}`).length) {\n showLog('ConfigManager:getIdDiv:No Id param. Not found ID', adsId);\n adsId = `${params.position}${NEW_SUFFIX}${dynamicId}`;\n }\n showLog('ConfigManager:getIdDiv:No Id param. Id calculated', adsId);\n }\n\n return adsId;\n }\n\n /**\n * Check if position exist in media config\n * @param {string} position\n * @param {string} deviceType\n * @returns {boolean} - TRUE if exist, FALSE otherwise\n */\n existePosEnConfigGDPMedio(position, deviceType = this.deviceType) {// OK\n var idAds;\n\n if (!isEmpty(app.lookup(`posicion_${deviceType}.${position}`, this.configGDPMedio))) {\n return true;\n }\n // If position do not exist, hide the container DIV\n idAds = this.getIdDiv({position});\n $(`#${idAds}`).length && $(`#${idAds}`).hide();\n\n return false;\n }\n\n /**\n * Normalize the position's parameters\n */\n normalizaParams(data) {// OK\n var params, outOfPage, idAds, offset;\n\n params = {};\n // jQuery object or JSON object\n if (data instanceof $) {\n extend(params, DEFAULTS, {\n position: data.data('voc-vam-position') || null,\n serverType: data.data('voc-vam-servertype') || _getServerType.call(this, params.position),\n hideNoAds: data.data('voc-vam-hidenoads'),\n outOfPage: data.data('voc-vam-outofpage'),\n defineSlot: data.data('voc-vam-defineslot') || _getDefineSlotParam.call(this),\n refresh: data.data('voc-vam-refresh'),\n responsive: data.data('voc-vam-responsive'),\n pre_callback: data.data('voc-vam-precallback') || '',\n pre_event: data.data('voc-vam-preevent') || '',\n post_callback: data.data('voc-vam-postcallback') || '',\n post_event: data.data('voc-vam-postevent') || '',\n oas: data.data('voc-vam-oas') || '',\n tags: data.data('voc-vam-tags'),\n dynamicId: this.dynamicId\n });\n } else {\n extend(params, DEFAULTS, {\n position: data.position || null,\n id: data.id || null,\n serverType: data.serverType || _getServerType.call(this, params.position),\n hideNoAds: data.hideNoAds,\n outOfPage: data.outOfPage,\n defineSlot: data.defineSlot || _getDefineSlotParam.call(this),\n refresh: data.refresh,\n responsive: data.responsive,\n pre_callback: data.pre_callback || '',\n pre_event: data.pre_event || '',\n post_callback: data.post_callback || '',\n post_event: data.post_event || '',\n oas: data.oas || '',\n tags: data.tags,\n dynamicId: data.dynamicId || this.dynamicId\n });\n }\n\n // if some required parameter is missing, return null\n if (params.position === null) {\n showWarn('ConfigManager:normalizaParams:Position param is required', data);\n return null;\n }\n\n if (!this.existePosEnConfigGDPMedio(params.position)) {\n showWarn(`ConfigManager:normalizaParams:Position ${params.position} does not exists in configGDPMedio`);\n return null;\n }\n\n // OutOfPage param\n if (typeof params.outOfPage !== 'boolean') {\n outOfPage = app.lookup(`posicion_${this.deviceType}.${params.position}.outofpage`, this.configGDPMedio);\n params.outOfPage = isEmpty(outOfPage) || typeof outOfPage !== 'boolean' ? false : outOfPage;\n }\n\n // ads container DIV\n idAds = this.getIdDiv(params);\n if (!$(`#${idAds}`).length && $(`[data-voc-vam-position = '${params.position}']`, this.context$).length && !$(`[data-voc-vam-position = '${params.position}']`, this.context$).attr('id')) {\n $(`[data-voc-vam-position = '${params.position}']`, this.context$).attr('id', idAds);\n }\n params.id = idAds;\n\n // global targetings\n if (!params.tags) {\n params.tags = app.lookup(`posicion_${this.deviceType}.${params.position}.targetings`, this.configGDPMedio) || {};\n }\n\n // offset\n offset = app.lookup(`posicion_${this.deviceType}.${params.position}.offset`, this.configGDP);\n if (!isEmpty(offset)) {\n $(`#${params.id}`).attr('data-offset', offset);\n showLog(`ConfigManager:normalizaParams:Offset ${offset} configurer for position: ${params.position}`);\n }\n\n // build the responsive parameter if it doesn't come in the data\n if (!params.outOfPage\n && !params.responsive\n && this.isResponsiveMedia) {\n params.responsive = _getResponsiveParam.call(this, params);\n }\n\n return params;\n }\n\n /**\n * Get OAS value from config\n * FUTURE: create final OAS config on GDP\n * @return string\n */\n getOasSitepage(params = {}) {\n var oasSitepage, decryptedURL, legacyAdUnit, regExp, result, macroEdition, edition;\n\n if (params.oas) {\n oasSitepage = params.oas.trim();\n } else {\n oasSitepage = app.lookup(`OAS.${this.deviceType}.${this.pageType}`, this.configGDP);\n oasSitepage = isEmpty(oasSitepage) ? '' : oasSitepage.trim();\n }\n\n // check if adUnit is forced by URL\n try {\n decryptedURL = ConfigManager.decryptedURL();\n if (window.location.href.indexOf('vam_adunit=') > -1 || window.location.href.indexOf('adunit=') > -1 || decryptedURL !== '') {\n legacyAdUnit = window.location.href.indexOf('vam_adunit=') > -1 ? 'vam_adunit' : 'adunit';\n regExp = new RegExp(`(\\\\?|&)${legacyAdUnit}=([^?&]+)`);\n result = (decryptedURL !== '') ? regExp.exec(decryptedURL) : regExp.exec(window.location.href);\n\n if (result) {\n oasSitepage = result[2].indexOf('/' + GPT_ID_VOCENTO + '/') > -1\n ? result[2]\n : '/' + GPT_ID_VOCENTO + '/' + result[2];\n }\n }\n } catch (err) {\n showError('ConfigManager:getOasSitepage:Error checking adUnit', err);\n }\n\n // check macro edition\n try {\n regExp = /{(\\/)?edicion(\\/)?}/;\n macroEdition = regExp.exec(oasSitepage);\n if (macroEdition) {\n edition = _getEdition();\n if (startsWith(macroEdition[0], '{/') && edition) edition = '/' + edition;\n if (endsWith(macroEdition[0], '/}') && edition) edition += '/';\n\n oasSitepage = oasSitepage.replace(macroEdition[0], edition);\n }\n } catch (err) {\n showError('ConfigManager:getOasSitepage:Error checking edition', err);\n }\n\n // Guardamos el valor del adunit calculado por si no lo esta\n if (typeof this.configGDP.OAS.adunit === 'undefined') this.configGDP.OAS.adunit = oasSitepage;\n\n return oasSitepage;\n }\n\n /**\n * Calculate the sizes for a given position\n * FUTURE: move config to GDP\n * @param {string} position\n * @param {string} deviceType - default is _deviceType\n * @return {object}\n */\n getSizesGoogle(position, deviceType = this.deviceType) {// OK\n var configSize, size, defineSlot;\n\n configSize = app.lookup(`posicion_${deviceType}.${position}.dimensiones`, this.configGDPMedio);\n\n size = !isEmpty(configSize) ? configSize : '[]';\n defineSlot = _getDefineSlotParam.call(this);\n\n if (size.indexOf('[fluid]') > -1) {\n if (!defineSlot) return ['fluid'];\n\n size = size.replace('[fluid]', '\\'fluid\\'');\n }\n\n return defineSlot ? size : JSON.parse(size);\n }\n\n /**\n * Detect forced config by URL.\n * Support params:\n * vam_adunit\n * vam_cmvkey\n * vam_debug\n * vam_enable_single_request\n * vam_enable_sync_rendering\n * vam_enable_krux\n * vam_force_positions\n * vam_info_slot\n */\n checkConfigFromURL() {\n var legacyCode, code, prebidDisabledBidders;\n if (typeof window.location === 'undefined') return;\n\n // Disable Prebid\n if ('headerBidding' in this.configGDPMedio &&\n window.location.href.indexOf('vam_prebid_disabled=') > -1\n ) {\n prebidDisabledBidders = getParameterByName('vam_prebid_disabled', window.location.href).split(',');\n this.configGDPMedio.headerBidding.biddersConfig.disabled = prebidDisabledBidders;\n if (prebidDisabledBidders.indexOf(URL_PARAM_ALL) > -1) {\n this.configGDPMedio.headerBidding = null;\n }\n }\n\n // Disable HB Amazon\n if ('hbAmazon' in this.configGDPMedio) {\n this.configGDPMedio.hbAmazon = window.location.href.indexOf('vam_amazon_disabled=1') > -1 || window.location.href.indexOf('gdp_enableAmazonAds=0') > -1 || !this.configGDPMedio.enableAmazonAds ? false : this.configGDPMedio.hbAmazon;\n }\n\n // Single Request\n this.configGDPMedio.singleRequest = window.location.href.indexOf('vam_single_request=1') > -1 || window.location.href.indexOf('gdp_singleRequest=1') > -1 || this.configGDPMedio.singleRequest;\n\n // SyncRendering\n this.configGDPMedio.syncRendering = window.location.href.indexOf('vam_sync_rendering=1') > -1 || window.location.href.indexOf('gdp_syncRendering=1') > -1 || this.configGDPMedio.syncRendering;\n\n // Krux\n this.configGDPMedio.enableKrux = window.location.href.indexOf('vam_krux=1') > -1 || window.location.href.indexOf('gdp_enableKrux=1') > -1 || this.configGDPMedio.enableKrux;\n\n // Force active position\n this.configGDPMedio.forceActivePosition = window.location.href.indexOf('vam_force_positions=') > -1 ? getParameterByName('vam_force_positions', window.location.href).split(',') : getParameterByName('gdp_forceActivePosition', window.location.href).split(',');\n\n // InfoSlot\n this.configGDPMedio.infoSlot = window.location.href.indexOf('vam_info_slot=1') > -1 || window.location.href.indexOf('gdp_infoSlot=1') > -1;\n if (this.configGDPMedio.infoSlot) {\n load(VAM_CSS_URL, {\n type: 'link'\n }).then(function() {\n showLog('ConfigManager:checkConfigFromURL:CSS loaded', VAM_CSS_URL);\n });\n }\n\n // Capturador (modo preview)\n this.configGDPMedio.preview = window.location.href.indexOf('vam_preview') > -1 || window.location.href.indexOf('preview') > -1;\n if (this.configGDPMedio.preview) {\n showLog('ConfigManager:checkConfigFromURL:Detected capture mode. Call capture SW');\n this.capturadorDataPreview = _capturadorGetPreviewData();\n\n // En modo capturador no pondremos priorizadas ni retrasadas\n this.configGDP.priorizadas = {};\n this.configGDP.retrasadas = {};\n }\n\n // Previsualizador\n if (window.location.href.indexOf('vam_code=') > -1 || window.location.href.indexOf('code=') > -1) {\n showLog('ConfigManager:checkConfigFromURL:Detected preview mode');\n legacyCode = window.location.href.indexOf('vam_code=') > -1 ? 'vam_code' : 'code';\n code = getParameterByName(legacyCode, window.location.href);\n _prevEncryptedCode = decodeURI(code);\n\n // En modo previsualizador no pondremos priorizadas ni retrasadas\n this.configGDP.priorizadas = {};\n this.configGDP.retrasadas = {};\n\n if (_prevEncryptedCode !== '') {\n import(/* webpackChunkName: \"rijndael-js\" */ 'rijndael-js').then(function(Rijndael) {\n showLog('ConfigManager:Rijndael library is loaded', Rijndael);\n _decriptUrl(Rijndael);\n });\n }\n }\n }\n\n /**\n * Comprobacion de si existen excepciones para la pagina donde nos encontramos.\n * @return object configGDP\n */\n checkExceptions() {\n var value, unixTime, beginDate, endDate;\n\n if (this.configGDPMedio.excepciones\n && Object.keys(this.configGDPMedio.excepciones).length > 0\n ) {\n showLog('ConfigManager:checkExceptions:There are configured exceptions');\n Object.keys(this.configGDPMedio.excepciones).forEach(function(key) {\n if (key !== 'priorizadas' && key !== 'retrasadas') {\n if (window.location.pathname === key || window.location.pathname.match(key)) {\n value = this.configGDPMedio.excepciones[key];\n unixTime = Math.round(new Date() / 1000);\n beginDate = value.fecha_in;\n endDate = value.fecha_fin;\n if ((beginDate === 0 || beginDate <= unixTime) &&\n (endDate === 0 || unixTime <= endDate)\n ) {\n this.configGDP = value;\n showLog(`ConfigManager:checkExceptions:Applying the following exception:\"${key}\"`);\n }\n }\n }\n }, this);\n }\n }\n\n /**\n * Funcion que devuelve la URL desencriptada\n * @returns {string}\n */\n static decryptedURL() {\n return _prevUnencryptedCode;\n }\n\n /**\n * Funcion que comprueba si una posicion es retrasada\n * FUTURE: listaRetrasadas come in array format from GDP\n */\n isDelayed(position) {\n return this.thereAreDelayedPositions() && this.delayedPositions.indexOf(position) > -1;\n }\n\n thereAreDelayedPositions() {\n return this.delayedPositions.length;\n }\n\n /**\n * Funcion que comprueba si una posicion es retrasada\n * FUTURE: listaRetrasadas come in array format from GDP\n */\n isPrioritized(position) {\n return this.thereArePrioritizedPositions() &&\n this.prioritizedPositions.indexOf(position) > -1;\n }\n\n thereArePrioritizedPositions() {\n return this.prioritizedPositions.length;\n }\n\n removePrioritizedPosition(position) {\n var index = this.prioritizedPositions.indexOf(position);\n\n if (index !== -1) {\n this.prioritizedPositions.splice(index, 1);\n }\n }\n}\n\nexport default ConfigManager;\n\n/* Private */\n\n/**\n * Get the device type depending on the size of the screen\n * @return string\n */\nfunction _getTipoDispositivo() {// OK\n var max, min, screenWidth, deviceType;\n\n deviceType = 'desktop';\n\n if (!this.configGDPMedio.responsive.esResponsive) {\n if (this.configGDPMedio && this.configGDPMedio.tipoDispositivo) {\n deviceType = this.configGDPMedio.tipoDispositivo;\n }\n } else {\n screenWidth = parseInt(window.innerWidth, 10);\n\n Object.keys(this.configGDPMedio.responsive).forEach(function(key) {\n var value = this.configGDPMedio.responsive[key];\n if ((key !== 'esResponsive') && (value.resolucionMaxima || value.resolucionMinima)) {\n max = value.resolucionMaxima ? value.resolucionMaxima : 999999;\n min = value.resolucionMinima ? value.resolucionMinima : 0;\n\n if ((screenWidth <= max) && (screenWidth > min)) {\n deviceType = key.replace('resolucion', '').toLowerCase();\n }\n }\n }, this);\n }\n\n return deviceType;\n}\n\n/**\n * Look for the medium where we are, from the configuration\n * @return string\n */\nfunction _getMedio() {// OK\n return this.configGDPMedio.medio ? this.configGDPMedio.medio : '';\n}\n\n/**\n * Get the page type from the URL pattern\n * NOTE: Each medium has its own URL rules so each one has its own function to calculate them\n * FUTURE: set the page type in global namespace on each page\n */\nfunction _getTipoPagina() {// OK\n var\n pageType = 'portada',\n medio = _getMedio.call(this)\n ;\n\n if (['abc', 'lavozdigital', 'abcdesevilla'].indexOf(medio) > -1) {\n pageType = _getTipoPaginaABC();\n } else if (medio === 'mujerhoy') {\n pageType = _getTipoPaginaMujerhoy();\n } else {\n pageType = _getTipoPaginaPortalesLocales();\n }\n\n return pageType;\n}\n\n/**\n * Get the page type from the URL for abc.es, sevilla.abc.es and lavozdigital.es\n * @return {string}\n */\nfunction _getTipoPaginaABC() {// OK\n var\n oldVideosRegExp, videosRegExp, oldGaleryRegExp2, oldGaleryRegExp,\n galeryRegExp, graphicRegExp, oldNewsRegExp, newsRegExp;\n\n oldVideosRegExp = /\\/videos\\/(.*)?\\/\\d{6}\\/\\d{2}\\/((?!index.html).)*.html/;\n videosRegExp = /_video.html/;\n if (videosRegExp.exec(window.location.pathname) || oldVideosRegExp.exec(window.location.pathname)) return 'video';\n\n oldGaleryRegExp2 = /\\/multimedia\\/fotos\\/(.*)?\\/((?!index.html).)*.html/;\n oldGaleryRegExp = /\\/fotos-(.*)?\\/\\d{8}\\/((?!index.html).)*.html/;\n galeryRegExp = /_galeria.html/;\n if (galeryRegExp.exec(window.location.pathname) || oldGaleryRegExp.exec(window.location.pathname) || oldGaleryRegExp2.exec(window.location.pathname)) return 'galeria';\n\n graphicRegExp = /\\/multimedia\\/(graficos\\/(.)*|infografias)\\/((?!index.html).)*.html/;\n if (graphicRegExp.exec(window.location.pathname)) return 'grafico';\n\n oldNewsRegExp = /\\d{8}\\/(.*)?((?!index.html).)*.html/;\n newsRegExp = /(_noticia.html|_directo.html)/;\n if (newsRegExp.exec(window.location.pathname) || oldNewsRegExp.exec(window.location.pathname)) return 'noticia';\n\n return 'portada';\n}\n\n/**\n * Get the page type from the URL for mujerhoy.com\n * @return {string}\n */\nfunction _getTipoPaginaMujerhoy() {// OK\n var\n videoRegExp, oldVideoRegExp, videoBlogRegExp, isVideo, galeryRegExp, oldGaleryRegExp,\n galeryBlogRegExp, isGalery, newsRegExp, newsBlogRegExp, newsRecipesRegExp, isNews;\n\n videoRegExp = /-vi.html/;\n oldVideoRegExp = /\\/videos\\/(.*)?\\/\\d{6}\\/\\d{2}\\/.*-mm.html/;\n videoBlogRegExp = /\\/videos\\/\\d{4}\\/\\d{2}\\/\\d{2}\\/(.*).html/;\n isVideo = window.location.hostname.indexOf('blogs.') > -1\n ? videoBlogRegExp.exec(window.location.pathname)\n : videoRegExp.exec(window.location.pathname) || oldVideoRegExp.exec(window.location.pathname);\n if (isVideo) return 'video';\n\n galeryRegExp = /-ga.html/;\n oldGaleryRegExp = /^\\/galerias\\/(.*)?\\d{6}\\/\\d{2}\\/.*-mm.html/;\n galeryBlogRegExp = /\\/galerias\\/\\d{4}\\/\\d{2}\\/\\d{2}\\/(.*).html/;\n isGalery = window.location.hostname.indexOf('blogs.') > -1\n ? galeryBlogRegExp.exec(window.location.pathname)\n : galeryRegExp.exec(window.location.pathname) || oldGaleryRegExp.exec(window.location.pathname);\n if (isGalery) return 'galeria';\n\n newsRegExp = /\\/\\d{6}\\/\\d{2}\\/((?!index.html).)*.html/;\n newsBlogRegExp = /\\/\\d{4}\\/\\d{2}\\/\\d{2}\\/((?!index.html).)*.html/;\n newsRecipesRegExp = /\\/\\d{6}\\/((?!index.html).)*.html/;\n if (window.location.hostname.indexOf('blogs.') > -1) {\n isNews = newsBlogRegExp.exec(window.location.pathname);\n } else if (window.location.hostname.indexOf('recetas.') > -1) {\n isNews = newsRecipesRegExp.exec(window.location.pathname);\n } else {\n isNews = newsRegExp.exec(window.location.pathname);\n }\n if (isNews) return 'noticia';\n\n return 'portada';\n}\n\n/**\n * Get the page type from the URL for PPLL\n * @return {string}\n */\nfunction _getTipoPaginaPortalesLocales() {// OK\n var\n videoRegExp, oldVideoRegExp, galeryRegExp, oldGaleryRegExp, newsRegExp, oldNewsRegExp,\n graphicRegExp, oldGraphicRegExp, videoChatRegExp;\n\n videoRegExp = /-(vi|virc|vivo)(_amp)?.html/;\n oldVideoRegExp = /^\\/videos\\/(.*)?\\/\\d{6}\\/\\d{2}\\/.*-mm.html/;\n if (videoRegExp.exec(window.location.pathname) || oldVideoRegExp.exec(window.location.pathname)) return 'video';\n\n galeryRegExp = /-(ga|garc|gavo|ft|ftrc|ftvo)(_amp)?.html/;\n oldGaleryRegExp = /^\\/fotos\\/(.*)?\\d{6}\\/\\d{2}\\/.*-mm.html/;\n if (galeryRegExp.exec(window.location.pathname) || oldGaleryRegExp.exec(window.location.pathname)) return 'galeria';\n\n newsRegExp = /-(nt|ntrc|ntvo)(_amp)?.html/;\n oldNewsRegExp = /\\/\\d{6}\\/\\d{2}\\/((?!index.html).)*.html/;\n if (newsRegExp.exec(window.location.pathname) || oldNewsRegExp.exec(window.location.pathname)) return 'noticia';\n\n // NOTA: En PLs, a nivel de publicidad, contemplaremos graficos y videochats como noticias\n graphicRegExp = /-(in|inrc|invo)(_amp)?.html/;\n oldGraphicRegExp = /^\\/graficos\\/(.*)?\\/\\d{6}\\/\\d{2}\\/.*-mm.html/;\n videoChatRegExp = /\\/videochats\\/((?!index.html).)\\w+/;\n if (graphicRegExp.exec(window.location.pathname) ||\n oldGraphicRegExp.exec(window.location.pathname) ||\n videoChatRegExp.exec(window.location.pathname)\n ) return 'noticia';\n\n return 'portada';\n}\n\n/**\n * Get defineSlot param from config\n * @return {boolean|undefined}\n */\nfunction _getDefineSlotParam() {// OK\n return this.configGDPMedio.defineSlot || undefined;\n}\n\n/**\n * Get the serverType of given position\n * @param {string} position\n * @return {string}\n */\nfunction _getServerType(position) {// OK\n var configServerType, serverType = 'google';\n\n configServerType = app.lookup(\n `posicion_${this.deviceType}.${position}.tipo`,\n this.configGDPMedio\n );\n serverType = !isEmpty(configServerType) ? configServerType : serverType;\n\n return serverType;\n}\n\n/**\n * Check if is responsive from config\n * @return {boolean}\n */\nfunction _isResponsiveMedia() {// OK\n var isResponsive = app.lookup('responsive.esResponsive', this.configGDPMedio);\n\n return !isEmpty(isResponsive) ? isResponsive : false;\n}\n\n/**\n * Build responsive param for the position\n * @return object\n */\nfunction _getResponsiveParam(params) {// OK\n if (params.responsive\n && Array.isArray(params.responsive)\n && params.responsive.length\n ) {\n return params.responsive;\n }\n\n /**\n * It doesn't have responsive param but it is\n * responsive medium so we build responsive param with\n * the corresponding resolutions and sizes\n */\n if (this.isResponsiveMedia) {\n return _createResponsive.call(this, params.position);\n }\n\n return false;\n}\n\n/**\n * Build responsive param\n * FUTURE: move config to GDP\n * @return object\n */\nfunction _createResponsive(position) {// OK\n var responsive, resolution, minWidth, maxWidth, dimension, googleSize, size;\n\n showLog('ConfigManager:createResponsive:Build responsive for', position);\n responsive = [];\n this.configGDPMedio.dispositivos.forEach(function(device) {\n if (!this.existePosEnConfigGDPMedio(position, device)) return;\n\n resolution = app.lookup(`responsive.resolucion${device}`, this.configGDPMedio);\n if (!isEmpty(resolution)) {\n minWidth = resolution.resolucionMinima;\n maxWidth = resolution.resolucionMaxima;\n\n if (!isEmpty(minWidth) && !isEmpty(maxWidth) && (minWidth || maxWidth)) {\n dimension = [\n parseInt(minWidth, 10) || 0,\n ALTOS_MINIMOS_DISPOSITIVOS[device]\n ];\n\n googleSize = this.getSizesGoogle(position, device);\n try {\n if (googleSize && googleSize.indexOf('fluid') > -1) {\n size = 'fluid';\n } else {\n size = JSON.parse(googleSize);\n }\n } catch (e) {\n showWarn(`ConfigManager:createResponsive:Processing position ${position}: ${e}`);\n size = googleSize;\n }\n\n // Insert the dimension mapping ordered from lowest to highest by width\n responsive.push([dimension, size]);\n }\n }\n }, this);\n responsive.sort(function(pair1, pair2) {\n return pair1[0][0] - pair2[0][0];\n });\n\n responsive.sort(function(pair1, pair2) {\n return pair1[0][0] - pair2[0][0];\n });\n showLog(`ConfigManager:createResponsive:Build responsive param for position ${position}`, responsive);\n\n return responsive;\n}\n\n/**\n * Get edition from config\n */\nfunction _getEdition() {// OK\n var editions = app.lookup(EDITIONS_NAMESPACE);\n\n return editions.current || (editions.main || '');\n}\n\n/**\n * Invoca al Servicio Web del Capturador para obtener las creatividades indicadas en el parametro\n * preview directamente desde DFP.\n */\nfunction _capturadorGetPreviewData() {\n var legacyPreview, url, data;\n\n legacyPreview = window.location.href.indexOf('vam_preview') > -1 ? 'vam_preview' : 'preview';\n url = CAPTURADOR_WS + '?id=' + getParameterByName(legacyPreview);\n data = '';\n $.ajax({\n url: url,\n type: 'POST',\n async: false,\n success: function (result) {\n data = result;\n }\n });\n\n return data;\n}\n\n/**\n * Convert Gigya user format to advertising format\n */\nfunction _getValueUser() {// OK\n var valueUser, arrayUsers = {\n suscriptor: 's',\n trial: 't',\n registrado: 'r',\n anonimo: 'a'\n };\n\n valueUser = arrayUsers[app.getUserType()] || 'a';\n\n return valueUser;\n}\n\nfunction _getDelayed() {\n var delayedPositions;\n\n delayedPositions = app.lookup(`retrasadas.${this.deviceType}.listaPosiciones`, this.configGDP);\n\n if (isEmpty(delayedPositions) || !delayedPositions.length) {\n showLog('ConfigManager:getDelayed:There are NOT delayed positions');\n return [];\n }\n\n showLog('ConfigManager:getDelayed:There are delayed positions:', delayedPositions);\n delayedPositions = delayedPositions.split(',').filter(function(position) {\n return position.trim();\n });\n\n return delayedPositions;\n}\n\nfunction _getPrioritized() {\n var prioritizedPositions;\n\n prioritizedPositions = app.lookup(`priorizadas.${this.deviceType}.listaPosiciones`, this.configGDP);\n\n if (isEmpty(prioritizedPositions) || !prioritizedPositions.length) {\n showLog('ConfigManager:getPrioritized:There are NOT prioritized positions');\n return [];\n }\n\n showLog('ConfigManager:getDelayed:There are prioritized positions:', prioritizedPositions);\n prioritizedPositions = prioritizedPositions.split(',').filter(function(position) {\n return position.trim();\n });\n\n return prioritizedPositions;\n}\n\n/**\n * Decrypt url to get cmvkey param\n * @param {object} mcrypt - Rijndael object\n */\nfunction _decriptUrl(Rijndael) {\n var legacyCmvkey, mcrypt, preparedCode;\n showLog('ConfigManager:decriptUrl:Actual prevUnencryptedCode', _prevUnencryptedCode, 'and prevEncryptedCode', _prevEncryptedCode);\n if (_prevUnencryptedCode === '' && _prevEncryptedCode !== '') {\n mcrypt = new Rijndael(MCRYPT_KEY, 'cbc');\n showLog('ConfigManager:decriptUrl:Decrypting', mcrypt);\n preparedCode = atob(_prevEncryptedCode).split('').map(function(value) {\n return value.charCodeAt(0);\n });\n _prevUnencryptedCode = '?' + mcrypt.decrypt(preparedCode, 256, MCRYPT_KEY);\n showLog('ConfigManager:decriptUrl:', _prevUnencryptedCode);\n // NOTE: remove special characters from string\n _prevUnencryptedCode = _prevUnencryptedCode.replace(\n /[^A-Za-z 0-9.,?\"\"!@#$%^&*()\\-_=+;:<>/\\\\|}{[\\]`~]*/g,\n ''\n );\n\n if (endsWith(_prevUnencryptedCode, '&vam_cmvkey=') ||\n endsWith(_prevUnencryptedCode, '&cmvkey=')\n ) {\n legacyCmvkey = endsWith(_prevUnencryptedCode, '&vam_cmvkey=')\n ? '&vam_cmvkey='\n : '&cmvkey=';\n _prevUnencryptedCode = _prevUnencryptedCode.replace(legacyCmvkey, '');\n }\n showLog(`ConfigManager:decriptUrl:String decrypted: ${_prevUnencryptedCode}`);\n }\n\n return _prevUnencryptedCode;\n}\n\n/**\n * Funcion que obtiene los tag definidos en los archivos de configuración\n * FUTURE: move config to GDP\n * @return object\n */\nfunction _getDefineSlotTargetings() {\n var medioTargetings, pageTargetings, targetings, defineSlotTargetings;\n\n medioTargetings = this.configGDPMedio.targetings ? this.configGDPMedio.targetings : {};\n pageTargetings = this.configGDP.targetings ? this.configGDP.targetings : {};\n targetings = {};\n extend(targetings, medioTargetings, pageTargetings);\n\n defineSlotTargetings = '';\n Object.keys(targetings).forEach(function(key) {\n defineSlotTargetings += `.setTargeting(\"${key}\", \"${targetings[key]}\")`;\n });\n\n return defineSlotTargetings;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/config-manager.js"],"sourceRoot":""}