{"version":3,"file":"ads-prebid.js","mappings":"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","sources":["webpack://dct-prebid-wrapper/./src/inc/config/puzzler.js","webpack://dct-prebid-wrapper/./src/inc/placements/responsive/puzzler.js","webpack://dct-prebid-wrapper/./src/inc/slots/fluid/puzzler.js","webpack://dct-prebid-wrapper/./src/inc/slots/responsive/wpcluster.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/modules/criteoBidAdapter.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/Renderer.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/activities/activities.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/activities/activityParams.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/activities/modules.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/activities/params.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/activities/rules.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/adUnits.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/activities/redactor.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/adapterManager.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/adapter.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/adapters/bidderFactory.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/adloader.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/ajax.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/videoCache.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/auction.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/utils/cpm.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/auctionIndex.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/auctionManager.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/bidderSettings.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/bidfactory.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/config.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/consentHandler.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/cpmBucketManager.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/events.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/hook.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/mediaTypes.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/native.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/polyfill.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/prebidGlobal.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/refererDetection.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/storageManager.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/userSync.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/utils.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/utils/gpdr.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/utils/perfMetrics.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/utils/promise.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/video.js","webpack://dct-prebid-wrapper/./node_modules/criteo-direct-rsa-validate/build/jsbnLite.js","webpack://dct-prebid-wrapper/./node_modules/criteo-direct-rsa-validate/build/sha256.js","webpack://dct-prebid-wrapper/./node_modules/criteo-direct-rsa-validate/build/verify.js","webpack://dct-prebid-wrapper/./src/demo.css","webpack://dct-prebid-wrapper/./node_modules/css-loader/dist/runtime/api.js","webpack://dct-prebid-wrapper/./node_modules/css-loader/dist/runtime/sourceMaps.js","webpack://dct-prebid-wrapper/./node_modules/dlv/index.js","webpack://dct-prebid-wrapper/./node_modules/fun-hooks/no-eval/index.js","webpack://dct-prebid-wrapper/./node_modules/just-clone/index.js","webpack://dct-prebid-wrapper/./src/demo.css?3dc7","webpack://dct-prebid-wrapper/./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js","webpack://dct-prebid-wrapper/./node_modules/style-loader/dist/runtime/insertBySelector.js","webpack://dct-prebid-wrapper/./node_modules/style-loader/dist/runtime/insertStyleElement.js","webpack://dct-prebid-wrapper/./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js","webpack://dct-prebid-wrapper/./node_modules/style-loader/dist/runtime/styleDomAPI.js","webpack://dct-prebid-wrapper/./node_modules/style-loader/dist/runtime/styleTagTransform.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/typeof.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/regenerator/index.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/slicedToArray.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://dct-prebid-wrapper/webpack/bootstrap","webpack://dct-prebid-wrapper/webpack/runtime/compat get default export","webpack://dct-prebid-wrapper/webpack/runtime/define property getters","webpack://dct-prebid-wrapper/webpack/runtime/hasOwnProperty shorthand","webpack://dct-prebid-wrapper/webpack/runtime/make namespace object","webpack://dct-prebid-wrapper/webpack/runtime/nonce","webpack://dct-prebid-wrapper/./src/helpers.js","webpack://dct-prebid-wrapper/./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","webpack://dct-prebid-wrapper/./src/controllers/native.js","webpack://dct-prebid-wrapper/./src/controllers/prebid.js","webpack://dct-prebid-wrapper/./src/controllers/targeting.js","webpack://dct-prebid-wrapper/./node_modules/dset/dist/index.mjs","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/adRendering.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/secureCreatives.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/targeting.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/debugging.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/fpd/rootDomain.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/fpd/sua.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/fpd/oneClient.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/fpd/enrichment.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/prebid.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/pbjsORTB.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/libraries/cmp/cmpClient.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/modules/consentManagement.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/modules/fpdModule/index.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/modules/gdprEnforcement.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/modules/gptPreAuction.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/modules/currency.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/modules/enrichmentFpdModule.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/modules/brandmetricsRtdProvider.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/modules/userId/eids.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/src/adserver.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/modules/userId/index.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/modules/sharedIdSystem.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/libraries/domainOverrideToRootDomain/index.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/modules/lotamePanoramaIdSystem.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/modules/uid2IdSystem_shared.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/modules/uid2IdSystem.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/libraries/categoryTranslationMapping/index.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/libraries/keywords/keywords.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/libraries/appnexusKeywords/anKeywords.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/modules/appnexusBidAdapter.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/modules/ixBidAdapter.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/modules/ozoneBidAdapter.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/modules/adyoulikeBidAdapter.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/libraries/ortbConverter/lib/composer.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/libraries/ortbConverter/lib/sizes.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/libraries/ortbConverter/processors/video.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/libraries/ortbConverter/processors/mediaType.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/libraries/ortbConverter/processors/default.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/libraries/ortbConverter/processors/banner.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/libraries/ortbConverter/lib/mergeProcessors.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/libraries/ortbConverter/processors/native.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/libraries/ortbConverter/converter.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/modules/improvedigitalBidAdapter.js","webpack://dct-prebid-wrapper/./node_modules/prebid.js/modules/oguryBidAdapter.js","webpack://dct-prebid-wrapper/./src/controllers/gpt.js","webpack://dct-prebid-wrapper/./src/ads-prebid.js"],"sourcesContent":["module.exports.prebidConfig = {\n debug: false,\n priceGranularity: {\n buckets: [\n {\n precision: 2,\n min: 0,\n max: 3,\n increment: 0.01\n },\n {\n precision: 2,\n min: 3,\n max: 8,\n increment: 0.05\n },\n {\n precision: 2,\n min: 8,\n max: 20,\n increment: 0.5\n }\n ]\n },\n consentManagement: {\n cmpApi: 'iab',\n timeout: 8000,\n defaultGdprScope: true\n },\n userSync: {\n userIds: [\n {\n name: 'pubCommonId',\n storage: {\n type: 'html5',\n name: '_pubcid',\n expires: 90\n }\n },\n {\n name: 'uid2'\n },\n {\n name: 'lotamePanoramaId',\n }\n ],\n /* http://prebid.org/dev-docs/publisher-api-reference.html */\n filterSettings: {\n iframe: {\n bidders: [ 'ozone' ],\n filter: 'include'\n }\n }\n },\n currency: {\n adServerCurrency: 'GBP',\n granularityMultiplier: 1,\n defaultRates: {USD: {GBP: 0.8}}\n }\n};\n","module.exports.responsiveSlotPlacements = [\n {\n id: '/4987/puzzler',\n bidders: []\n }\n];","module.exports.fluidSlotDefinitions = [];","module.exports.responsiveSlotDefinitions = [\n {\n name: 'leaderboard',\n sizeMappings: [\n {\n viewport: [ 1023, 0 ], // at least 1023 px wide (Desktop)\n adSizes: [\n [ 970, 250 ],\n [ 728, 90 ]\n ]\n },\n {\n viewport: [ 767, 0 ], // at least 767 px wide (Tablet)\n adSizes: [\n [ 728, 90 ]\n ]\n },\n {\n viewport: [ 0, 0 ], // at least 0 px wide (Mobile)\n adSizes: [\n [ 300, 250 ]\n ]\n }\n ]\n },\n {\n name: 'leaderboard-no-mobile',\n sizeMappings: [\n {\n viewport: [ 1023, 0 ], // at least 1023 px wide (Desktop)\n adSizes: [\n [ 970, 250 ],\n [ 728, 90 ]\n ]\n },\n {\n viewport: [ 767, 0 ], // at least 767 px wide (Tablet)\n adSizes: [\n [ 728, 90 ]\n ]\n },\n {\n viewport: [ 0, 0 ], // at least 0 px wide (Mobile)\n adSizes: []\n }\n ]\n },\n {\n name: 'mpu',\n sizeMappings: [\n {\n viewport: [ 0, 0 ], // at least 0 px wide (Mobile)\n adSizes: [\n [ 300, 250 ],\n [ 300, 600 ]\n ]\n }\n ]\n },\n {\n name: 'mpu-no-mobile',\n sizeMappings: [\n {\n viewport: [ 767, 0 ], // at least 767 px wide (Tablet)\n adSizes: [\n [ 300, 250 ],\n [ 300, 600 ]\n ]\n },\n {\n viewport: [ 0, 0 ], // at least 0 px wide (Mobile)\n adSizes: []\n }\n ]\n },\n {\n name: 'mpu-breakout',\n sizeMappings: [\n {\n viewport: [ 1023, 0 ], // at least 1023 px wide (Desktop)\n adSizes: [\n [ 970, 250 ],\n [ 728, 90 ]\n ]\n },\n {\n viewport: [ 767, 0 ], // at least 767 px wide (Tablet)\n adSizes: [\n [ 728, 90 ],\n [ 300, 250 ]\n ]\n },\n {\n viewport: [ 0, 0 ], // at least 0 px wide (Mobile)\n adSizes: [\n [ 300, 250 ]\n ]\n }\n ]\n }\n];\n","import { deepAccess, generateUUID, isArray, logError, logInfo, logWarn, parseUrl } from '../src/utils.js';\nimport { loadExternalScript } from '../src/adloader.js';\nimport { registerBidder } from '../src/adapters/bidderFactory.js';\nimport { config } from '../src/config.js';\nimport { BANNER, NATIVE, VIDEO } from '../src/mediaTypes.js';\nimport { verify } from 'criteo-direct-rsa-validate/build/verify.js'; // ref#2\nimport { getStorageManager } from '../src/storageManager.js';\nimport { getRefererInfo } from '../src/refererDetection.js';\nimport { hasPurpose1Consent } from '../src/utils/gpdr.js';\nimport { Renderer } from '../src/Renderer.js';\nimport { OUTSTREAM } from '../src/video.js';\nimport { ajax } from '../src/ajax.js';\n\nconst GVLID = 91;\nexport const ADAPTER_VERSION = 36;\nconst BIDDER_CODE = 'criteo';\nconst CDB_ENDPOINT = 'https://bidder.criteo.com/cdb';\nconst PROFILE_ID_INLINE = 207;\nexport const PROFILE_ID_PUBLISHERTAG = 185;\nexport const storage = getStorageManager({ bidderCode: BIDDER_CODE });\nconst LOG_PREFIX = 'Criteo: ';\n\n/*\n If you don't want to use the FastBid adapter feature, you can lighten criteoBidAdapter size by :\n 1. commenting the tryGetCriteoFastBid function inner content (see ref#1)\n 2. removing the line 'verify' function import line (see ref#2)\n\n Unminified source code can be found in the privately shared repo: https://github.com/Prebid-org/prebid-js-external-js-criteo/blob/master/dist/prod.js\n*/\nconst FAST_BID_VERSION_PLACEHOLDER = '%FAST_BID_VERSION%';\nexport const FAST_BID_VERSION_CURRENT = 139;\nconst FAST_BID_VERSION_LATEST = 'latest';\nconst FAST_BID_VERSION_NONE = 'none';\nconst PUBLISHER_TAG_URL_TEMPLATE = 'https://static.criteo.net/js/ld/publishertag.prebid' + FAST_BID_VERSION_PLACEHOLDER + '.js';\nconst PUBLISHER_TAG_OUTSTREAM_SRC = 'https://static.criteo.net/js/ld/publishertag.renderer.js'\nconst FAST_BID_PUBKEY_E = 65537;\nconst FAST_BID_PUBKEY_N = 'ztQYwCE5BU7T9CDM5he6rKoabstXRmkzx54zFPZkWbK530dwtLBDeaWBMxHBUT55CYyboR/EZ4efghPi3CoNGfGWezpjko9P6p2EwGArtHEeS4slhu/SpSIFMjG6fdrpRoNuIAMhq1Z+Pr/+HOd1pThFKeGFr2/NhtAg+TXAzaU=';\n\nconst OPTOUT_COOKIE_NAME = 'cto_optout';\nconst BUNDLE_COOKIE_NAME = 'cto_bundle';\nconst GUID_RETENTION_TIME_HOUR = 24 * 30 * 13; // 13 months\nconst OPTOUT_RETENTION_TIME_HOUR = 5 * 12 * 30 * 24; // 5 years\n\n/** @type {BidderSpec} */\nexport const spec = {\n code: BIDDER_CODE,\n gvlid: GVLID,\n supportedMediaTypes: [BANNER, VIDEO, NATIVE],\n\n getUserSyncs: function (syncOptions, _, gdprConsent, uspConsent) {\n const fastBidVersion = config.getConfig('criteo.fastBidVersion');\n if (canFastBid(fastBidVersion)) {\n return [];\n }\n\n const refererInfo = getRefererInfo();\n const origin = 'criteoPrebidAdapter';\n\n if (syncOptions.iframeEnabled && hasPurpose1Consent(gdprConsent)) {\n const queryParams = [];\n queryParams.push(`origin=${origin}`);\n queryParams.push(`topUrl=${refererInfo.domain}`);\n if (gdprConsent) {\n if (gdprConsent.gdprApplies) {\n queryParams.push(`gdpr=${gdprConsent.gdprApplies == true ? 1 : 0}`);\n }\n if (gdprConsent.consentString) {\n queryParams.push(`gdpr_consent=${gdprConsent.consentString}`);\n }\n }\n if (uspConsent) {\n queryParams.push(`us_privacy=${uspConsent}`);\n }\n\n const requestId = Math.random().toString();\n\n const jsonHash = {\n bundle: readFromAllStorages(BUNDLE_COOKIE_NAME),\n cw: storage.cookiesAreEnabled(),\n lsw: storage.localStorageIsEnabled(),\n optoutCookie: readFromAllStorages(OPTOUT_COOKIE_NAME),\n origin: origin,\n requestId: requestId,\n tld: refererInfo.domain,\n topUrl: refererInfo.domain,\n version: '$prebid.version$'.replace(/\\./g, '_'),\n };\n\n window.addEventListener('message', function handler(event) {\n if (!event.data || event.origin != 'https://gum.criteo.com') {\n return;\n }\n\n if (event.data.requestId !== requestId) {\n return;\n }\n\n this.removeEventListener('message', handler);\n\n event.stopImmediatePropagation();\n\n const response = event.data;\n\n if (response.optout) {\n deleteFromAllStorages(BUNDLE_COOKIE_NAME);\n\n saveOnAllStorages(OPTOUT_COOKIE_NAME, true, OPTOUT_RETENTION_TIME_HOUR);\n } else {\n if (response.bundle) {\n saveOnAllStorages(BUNDLE_COOKIE_NAME, response.bundle, GUID_RETENTION_TIME_HOUR);\n }\n }\n }, true);\n\n const jsonHashSerialized = JSON.stringify(jsonHash).replace(/\"/g, '%22');\n\n return [{\n type: 'iframe',\n url: `https://gum.criteo.com/syncframe?${queryParams.join('&')}#${jsonHashSerialized}`\n }];\n }\n return [];\n },\n\n /** f\n * @param {object} bid\n * @return {boolean}\n */\n isBidRequestValid: (bid) => {\n // either one of zoneId or networkId should be set\n if (!(bid && bid.params && (bid.params.zoneId || bid.params.networkId))) {\n return false;\n }\n\n // video media types requires some mandatory params\n if (hasVideoMediaType(bid)) {\n if (!hasValidVideoMediaType(bid)) {\n return false;\n }\n }\n\n return true;\n },\n\n /**\n * @param {BidRequest[]} bidRequests\n * @param {*} bidderRequest\n * @return {ServerRequest}\n */\n buildRequests: (bidRequests, bidderRequest) => {\n let url;\n let data;\n let fpd = bidderRequest.ortb2 || {};\n\n Object.assign(bidderRequest, {\n publisherExt: fpd.site?.ext,\n userExt: fpd.user?.ext,\n ceh: config.getConfig('criteo.ceh'),\n coppa: config.getConfig('coppa')\n });\n\n // If publisher tag not already loaded try to get it from fast bid\n const fastBidVersion = config.getConfig('criteo.fastBidVersion');\n const canLoadPublisherTag = canFastBid(fastBidVersion);\n if (!publisherTagAvailable() && canLoadPublisherTag) {\n window.Criteo = window.Criteo || {};\n window.Criteo.usePrebidEvents = false;\n\n tryGetCriteoFastBid();\n\n const fastBidUrl = getFastBidUrl(fastBidVersion);\n // Reload the PublisherTag after the timeout to ensure FastBid is up-to-date and tracking done properly\n setTimeout(() => {\n loadExternalScript(fastBidUrl, BIDDER_CODE);\n }, bidderRequest.timeout);\n }\n\n if (publisherTagAvailable()) {\n // eslint-disable-next-line no-undef\n const adapter = new Criteo.PubTag.Adapters.Prebid(\n PROFILE_ID_PUBLISHERTAG,\n ADAPTER_VERSION,\n bidRequests,\n bidderRequest,\n '$prebid.version$',\n { createOutstreamVideoRenderer: createOutstreamVideoRenderer }\n );\n url = adapter.buildCdbUrl();\n data = adapter.buildCdbRequest();\n } else {\n const context = buildContext(bidRequests, bidderRequest);\n url = buildCdbUrl(context);\n data = buildCdbRequest(context, bidRequests, bidderRequest);\n }\n\n if (data) {\n return { method: 'POST', url, data, bidRequests };\n }\n },\n\n /**\n * @param {*} response\n * @param {ServerRequest} request\n * @return {Bid[]}\n */\n interpretResponse: (response, request) => {\n const body = response.body || response;\n\n if (publisherTagAvailable()) {\n // eslint-disable-next-line no-undef\n const adapter = Criteo.PubTag.Adapters.Prebid.GetAdapter(request);\n if (adapter) {\n return adapter.interpretResponse(body, request);\n }\n }\n\n const bids = [];\n\n if (body && body.slots && isArray(body.slots)) {\n body.slots.forEach(slot => {\n const bidRequest = getAssociatedBidRequest(request.bidRequests, slot);\n if (bidRequest) {\n const bidId = bidRequest.bidId;\n const bid = {\n requestId: bidId,\n cpm: slot.cpm,\n currency: slot.currency,\n netRevenue: true,\n ttl: slot.ttl || 60,\n creativeId: slot.creativecode,\n width: slot.width,\n height: slot.height,\n dealId: slot.deal,\n };\n if (body.ext?.paf?.transmission && slot.ext?.paf?.content_id) {\n const pafResponseMeta = {\n content_id: slot.ext.paf.content_id,\n transmission: response.ext.paf.transmission\n };\n bid.meta = Object.assign({}, bid.meta, { paf: pafResponseMeta });\n }\n if (slot.adomain) {\n bid.meta = Object.assign({}, bid.meta, { advertiserDomains: [slot.adomain].flat() });\n }\n if (slot.ext?.meta?.networkName) {\n bid.meta = Object.assign({}, bid.meta, { networkName: slot.ext.meta.networkName })\n }\n if (slot.native) {\n if (bidRequest.params.nativeCallback) {\n bid.ad = createNativeAd(bidId, slot.native, bidRequest.params.nativeCallback);\n } else {\n bid.native = createPrebidNativeAd(slot.native);\n bid.mediaType = NATIVE;\n }\n } else if (slot.video) {\n bid.vastUrl = slot.displayurl;\n bid.mediaType = VIDEO;\n const context = deepAccess(bidRequest, 'mediaTypes.video.context');\n // if outstream video, add a default render for it.\n if (context === OUTSTREAM) {\n bid.renderer = createOutstreamVideoRenderer(slot);\n }\n } else {\n bid.ad = slot.creative;\n }\n bids.push(bid);\n }\n });\n }\n\n return bids;\n },\n /**\n * @param {TimedOutBid} timeoutData\n */\n onTimeout: (timeoutData) => {\n if (publisherTagAvailable() && Array.isArray(timeoutData)) {\n var auctionsIds = [];\n timeoutData.forEach((bid) => {\n if (auctionsIds.indexOf(bid.auctionId) === -1) {\n auctionsIds.push(bid.auctionId);\n // eslint-disable-next-line no-undef\n const adapter = Criteo.PubTag.Adapters.Prebid.GetAdapter(bid.auctionId);\n adapter.handleBidTimeout();\n }\n });\n }\n },\n\n /**\n * @param {Bid} bid\n */\n onBidWon: (bid) => {\n if (publisherTagAvailable() && bid) {\n // eslint-disable-next-line no-undef\n const adapter = Criteo.PubTag.Adapters.Prebid.GetAdapter(bid.auctionId);\n adapter.handleBidWon(bid);\n }\n },\n\n /**\n * @param {Bid} bid\n */\n onSetTargeting: (bid) => {\n if (publisherTagAvailable()) {\n // eslint-disable-next-line no-undef\n const adapter = Criteo.PubTag.Adapters.Prebid.GetAdapter(bid.auctionId);\n adapter.handleSetTargeting(bid);\n }\n },\n\n /**\n * @param {BidRequest[]} bidRequests\n */\n onDataDeletionRequest: (bidRequests) => {\n const id = readFromAllStorages(BUNDLE_COOKIE_NAME);\n if (id) {\n deleteFromAllStorages(BUNDLE_COOKIE_NAME);\n ajax('https://privacy.criteo.com/api/privacy/datadeletionrequest',\n null,\n JSON.stringify({ publisherUserId: id }),\n {\n contentType: 'application/json',\n method: 'POST'\n });\n }\n }\n};\n\nfunction readFromAllStorages(name) {\n const fromCookie = storage.getCookie(name);\n const fromLocalStorage = storage.getDataFromLocalStorage(name);\n\n return fromCookie || fromLocalStorage || undefined;\n}\n\nfunction saveOnAllStorages(name, value, expirationTimeHours) {\n const date = new Date();\n date.setTime(date.getTime() + (expirationTimeHours * 60 * 60 * 1000));\n const expires = `expires=${date.toUTCString()}`;\n\n storage.setCookie(name, value, expires);\n storage.setDataInLocalStorage(name, value);\n}\n\nfunction deleteFromAllStorages(name) {\n storage.setCookie(name, '', 0);\n storage.removeDataFromLocalStorage(name);\n}\n\n/**\n * @return {boolean}\n */\nfunction publisherTagAvailable() {\n // eslint-disable-next-line no-undef\n return typeof Criteo !== 'undefined' && Criteo.PubTag && Criteo.PubTag.Adapters && Criteo.PubTag.Adapters.Prebid;\n}\n\n/**\n * @param {BidRequest[]} bidRequests\n * @param bidderRequest\n */\nfunction buildContext(bidRequests, bidderRequest) {\n let referrer = '';\n if (bidderRequest && bidderRequest.refererInfo) {\n referrer = bidderRequest.refererInfo.page;\n }\n const queryString = parseUrl(bidderRequest?.refererInfo?.topmostLocation).search;\n\n const context = {\n url: referrer,\n debug: queryString['pbt_debug'] === '1',\n noLog: queryString['pbt_nolog'] === '1',\n amp: false,\n };\n\n bidRequests.forEach(bidRequest => {\n if (bidRequest.params.integrationMode === 'amp') {\n context.amp = true;\n }\n });\n\n return context;\n}\n\n/**\n * @param {CriteoContext} context\n * @return {string}\n */\nfunction buildCdbUrl(context) {\n let url = CDB_ENDPOINT;\n url += '?profileId=' + PROFILE_ID_INLINE;\n url += '&av=' + String(ADAPTER_VERSION);\n url += '&wv=' + encodeURIComponent('$prebid.version$');\n url += '&cb=' + String(Math.floor(Math.random() * 99999999999));\n\n if (storage.localStorageIsEnabled()) {\n url += '&lsavail=1';\n } else {\n url += '&lsavail=0';\n }\n\n if (context.amp) {\n url += '&im=1';\n }\n if (context.debug) {\n url += '&debug=1';\n }\n if (context.noLog) {\n url += '&nolog=1';\n }\n\n const bundle = readFromAllStorages(BUNDLE_COOKIE_NAME);\n if (bundle) {\n url += `&bundle=${bundle}`;\n }\n\n const optout = readFromAllStorages(OPTOUT_COOKIE_NAME);\n if (optout) {\n url += `&optout=1`;\n }\n\n return url;\n}\n\nfunction checkNativeSendId(bidRequest) {\n return !(bidRequest.nativeParams &&\n (\n (bidRequest.nativeParams.image && ((bidRequest.nativeParams.image.sendId !== true || bidRequest.nativeParams.image.sendTargetingKeys === true))) ||\n (bidRequest.nativeParams.icon && ((bidRequest.nativeParams.icon.sendId !== true || bidRequest.nativeParams.icon.sendTargetingKeys === true))) ||\n (bidRequest.nativeParams.clickUrl && ((bidRequest.nativeParams.clickUrl.sendId !== true || bidRequest.nativeParams.clickUrl.sendTargetingKeys === true))) ||\n (bidRequest.nativeParams.displayUrl && ((bidRequest.nativeParams.displayUrl.sendId !== true || bidRequest.nativeParams.displayUrl.sendTargetingKeys === true))) ||\n (bidRequest.nativeParams.privacyLink && ((bidRequest.nativeParams.privacyLink.sendId !== true || bidRequest.nativeParams.privacyLink.sendTargetingKeys === true))) ||\n (bidRequest.nativeParams.privacyIcon && ((bidRequest.nativeParams.privacyIcon.sendId !== true || bidRequest.nativeParams.privacyIcon.sendTargetingKeys === true)))\n ));\n}\n\n/**\n * @param {CriteoContext} context\n * @param {BidRequest[]} bidRequests\n * @param bidderRequest\n * @return {*}\n */\nfunction buildCdbRequest(context, bidRequests, bidderRequest) {\n let networkId;\n let schain;\n let userIdAsEids;\n const request = {\n id: generateUUID(),\n publisher: {\n url: context.url,\n ext: bidderRequest.publisherExt,\n },\n regs: {\n coppa: bidderRequest.coppa === true ? 1 : (bidderRequest.coppa === false ? 0 : undefined),\n gpp: bidderRequest.ortb2?.regs?.gpp,\n gpp_sid: bidderRequest.ortb2?.regs?.gpp_sid\n },\n slots: bidRequests.map(bidRequest => {\n if (!userIdAsEids) {\n userIdAsEids = bidRequest.userIdAsEids;\n }\n networkId = bidRequest.params.networkId || networkId;\n schain = bidRequest.schain || schain;\n const slot = {\n slotid: bidRequest.bidId,\n impid: bidRequest.adUnitCode,\n transactionid: bidRequest.ortb2Imp?.ext?.tid\n };\n if (bidRequest.params.zoneId) {\n slot.zoneid = bidRequest.params.zoneId;\n }\n if (deepAccess(bidRequest, 'ortb2Imp.ext')) {\n slot.ext = bidRequest.ortb2Imp.ext;\n }\n\n if (deepAccess(bidRequest, 'ortb2Imp.rwdd')) {\n slot.rwdd = bidRequest.ortb2Imp.rwdd;\n }\n\n if (bidRequest.params.ext) {\n slot.ext = Object.assign({}, slot.ext, bidRequest.params.ext);\n }\n if (bidRequest.nativeOrtbRequest?.assets) {\n slot.ext = Object.assign({}, slot.ext, { assets: bidRequest.nativeOrtbRequest.assets });\n }\n if (bidRequest.params.publisherSubId) {\n slot.publishersubid = bidRequest.params.publisherSubId;\n }\n\n if (bidRequest.params.nativeCallback || hasNativeMediaType(bidRequest)) {\n slot.native = true;\n if (!checkNativeSendId(bidRequest)) {\n logWarn(LOG_PREFIX + 'all native assets containing URL should be sent as placeholders with sendId(icon, image, clickUrl, displayUrl, privacyLink, privacyIcon)');\n }\n }\n\n if (hasBannerMediaType(bidRequest)) {\n slot.sizes = parseSizes(deepAccess(bidRequest, 'mediaTypes.banner.sizes'), parseSize);\n } else {\n slot.sizes = [];\n }\n\n if (hasVideoMediaType(bidRequest)) {\n const video = {\n playersizes: parseSizes(deepAccess(bidRequest, 'mediaTypes.video.playerSize'), parseSize),\n mimes: bidRequest.mediaTypes.video.mimes,\n protocols: bidRequest.mediaTypes.video.protocols,\n maxduration: bidRequest.mediaTypes.video.maxduration,\n api: bidRequest.mediaTypes.video.api,\n skip: bidRequest.mediaTypes.video.skip,\n placement: bidRequest.mediaTypes.video.placement,\n minduration: bidRequest.mediaTypes.video.minduration,\n playbackmethod: bidRequest.mediaTypes.video.playbackmethod,\n startdelay: bidRequest.mediaTypes.video.startdelay,\n plcmt: bidRequest.mediaTypes.video.plcmt\n };\n const paramsVideo = bidRequest.params.video;\n if (paramsVideo !== undefined) {\n video.skip = video.skip || paramsVideo.skip || 0;\n video.placement = video.placement || paramsVideo.placement;\n video.minduration = video.minduration || paramsVideo.minduration;\n video.playbackmethod = video.playbackmethod || paramsVideo.playbackmethod;\n video.startdelay = video.startdelay || paramsVideo.startdelay || 0;\n }\n\n slot.video = video;\n }\n\n enrichSlotWithFloors(slot, bidRequest);\n\n return slot;\n }),\n };\n if (networkId) {\n request.publisher.networkid = networkId;\n }\n\n request.source = {\n tid: bidderRequest.ortb2?.source?.tid\n };\n\n if (schain) {\n request.source.ext = {\n schain: schain\n };\n };\n request.user = bidderRequest.ortb2?.user || {};\n request.site = bidderRequest.ortb2?.site || {};\n if (bidderRequest && bidderRequest.ceh) {\n request.user.ceh = bidderRequest.ceh;\n }\n if (bidderRequest && bidderRequest.gdprConsent) {\n request.gdprConsent = {};\n if (typeof bidderRequest.gdprConsent.gdprApplies !== 'undefined') {\n request.gdprConsent.gdprApplies = !!(bidderRequest.gdprConsent.gdprApplies);\n }\n request.gdprConsent.version = bidderRequest.gdprConsent.apiVersion;\n if (typeof bidderRequest.gdprConsent.consentString !== 'undefined') {\n request.gdprConsent.consentData = bidderRequest.gdprConsent.consentString;\n }\n }\n if (bidderRequest && bidderRequest.uspConsent) {\n request.user.uspIab = bidderRequest.uspConsent;\n }\n if (bidderRequest && bidderRequest.ortb2?.device?.sua) {\n request.user.ext = request.user.ext || {};\n request.user.ext.sua = bidderRequest.ortb2?.device?.sua || {};\n }\n if (userIdAsEids) {\n request.user.ext = request.user.ext || {};\n request.user.ext.eids = [...userIdAsEids];\n }\n if (bidderRequest && bidderRequest.ortb2?.bcat) {\n request.bcat = bidderRequest.ortb2.bcat;\n }\n if (bidderRequest && bidderRequest.ortb2?.badv) {\n request.badv = bidderRequest.ortb2.badv;\n }\n if (bidderRequest && bidderRequest.ortb2?.bapp) {\n request.bapp = bidderRequest.ortb2.bapp;\n }\n return request;\n}\n\nfunction parseSizes(sizes, parser = s => s) {\n if (sizes == undefined) {\n return [];\n }\n if (Array.isArray(sizes[0])) { // is there several sizes ? (ie. [[728,90],[200,300]])\n return sizes.map(size => parser(size));\n }\n return [parser(sizes)]; // or a single one ? (ie. [728,90])\n}\n\nfunction parseSize(size) {\n return size[0] + 'x' + size[1];\n}\n\nfunction hasVideoMediaType(bidRequest) {\n return deepAccess(bidRequest, 'mediaTypes.video') !== undefined;\n}\n\nfunction hasBannerMediaType(bidRequest) {\n return deepAccess(bidRequest, 'mediaTypes.banner') !== undefined;\n}\n\nfunction hasNativeMediaType(bidRequest) {\n return deepAccess(bidRequest, 'mediaTypes.native') !== undefined;\n}\n\nfunction hasValidVideoMediaType(bidRequest) {\n let isValid = true;\n\n var requiredMediaTypesParams = ['mimes', 'playerSize', 'maxduration', 'protocols', 'api', 'skip', 'placement', 'playbackmethod'];\n\n requiredMediaTypesParams.forEach(function (param) {\n if (deepAccess(bidRequest, 'mediaTypes.video.' + param) === undefined && deepAccess(bidRequest, 'params.video.' + param) === undefined) {\n isValid = false;\n logError('Criteo Bid Adapter: mediaTypes.video.' + param + ' is required');\n }\n });\n\n if (isValid) {\n const videoPlacement = bidRequest.mediaTypes.video.placement || bidRequest.params.video.placement;\n // We do not support long form for now, also we have to check that context & placement are consistent\n if (bidRequest.mediaTypes.video.context == 'instream' && videoPlacement === 1) {\n return true;\n } else if (bidRequest.mediaTypes.video.context == 'outstream' && videoPlacement !== 1) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Create prebid compatible native ad with native payload\n * @param {*} payload\n * @returns prebid native ad assets\n */\nfunction createPrebidNativeAd(payload) {\n return {\n sendTargetingKeys: false, // no key is added to KV by default\n title: payload.products[0].title,\n body: payload.products[0].description,\n sponsoredBy: payload.advertiser.description,\n icon: payload.advertiser.logo,\n image: payload.products[0].image,\n clickUrl: payload.products[0].click_url,\n privacyLink: payload.privacy.optout_click_url,\n privacyIcon: payload.privacy.optout_image_url,\n cta: payload.products[0].call_to_action,\n price: payload.products[0].price,\n impressionTrackers: payload.impression_pixels.map(pix => pix.url)\n };\n}\n\n/**\n * @param {string} id\n * @param {*} payload\n * @param {*} callback\n * @return {string}\n */\nfunction createNativeAd(id, payload, callback) {\n // Store the callback and payload in a global object to be later accessed from the creative\n var slotsName = 'criteo_prebid_native_slots';\n window[slotsName] = window[slotsName] || {};\n window[slotsName][id] = { callback, payload };\n\n // The creative is in an iframe so we have to get the callback and payload\n // from the parent window (doesn't work with safeframes)\n return `\n`;\n}\n\nfunction pickAvailableGetFloorFunc(bidRequest) {\n if (bidRequest.getFloor) {\n return bidRequest.getFloor;\n }\n if (bidRequest.params.bidFloor && bidRequest.params.bidFloorCur) {\n try {\n const floor = parseFloat(bidRequest.params.bidFloor);\n return () => {\n return {\n currency: bidRequest.params.bidFloorCur,\n floor: floor\n };\n };\n } catch { }\n }\n return undefined;\n}\n\nfunction enrichSlotWithFloors(slot, bidRequest) {\n try {\n const slotFloors = {};\n\n const getFloor = pickAvailableGetFloorFunc(bidRequest);\n\n if (getFloor) {\n if (bidRequest.mediaTypes?.banner) {\n slotFloors.banner = {};\n const bannerSizes = parseSizes(deepAccess(bidRequest, 'mediaTypes.banner.sizes'))\n bannerSizes.forEach(bannerSize => slotFloors.banner[parseSize(bannerSize).toString()] = getFloor.call(bidRequest, { size: bannerSize, mediaType: BANNER }));\n }\n\n if (bidRequest.mediaTypes?.video) {\n slotFloors.video = {};\n const videoSizes = parseSizes(deepAccess(bidRequest, 'mediaTypes.video.playerSize'))\n videoSizes.forEach(videoSize => slotFloors.video[parseSize(videoSize).toString()] = getFloor.call(bidRequest, { size: videoSize, mediaType: VIDEO }));\n }\n\n if (bidRequest.mediaTypes?.native) {\n slotFloors.native = {};\n slotFloors.native['*'] = getFloor.call(bidRequest, { size: '*', mediaType: NATIVE });\n }\n\n if (Object.keys(slotFloors).length > 0) {\n if (!slot.ext) {\n slot.ext = {}\n }\n Object.assign(slot.ext, {\n floors: slotFloors\n });\n }\n }\n } catch (e) {\n logError('Could not parse floors from Prebid: ' + e);\n }\n}\n\nexport function canFastBid(fastBidVersion) {\n return fastBidVersion !== FAST_BID_VERSION_NONE;\n}\n\nexport function getFastBidUrl(fastBidVersion) {\n let version;\n if (fastBidVersion === FAST_BID_VERSION_LATEST) {\n version = '';\n } else if (fastBidVersion) {\n let majorVersion = String(fastBidVersion).split('.')[0];\n if (majorVersion < 102) {\n logWarn('Specifying a Fastbid version which is not supporting version selection.')\n }\n version = '.' + fastBidVersion;\n } else {\n version = '.' + FAST_BID_VERSION_CURRENT;\n }\n\n return PUBLISHER_TAG_URL_TEMPLATE.replace(FAST_BID_VERSION_PLACEHOLDER, version);\n}\n\nfunction createOutstreamVideoRenderer(slot) {\n if (slot.ext.videoPlayerConfig === undefined || slot.ext.videoPlayerType === undefined) {\n return undefined;\n }\n\n const config = {\n documentResolver: (bid, sourceDocument, renderDocument) => {\n return renderDocument ?? sourceDocument;\n }\n }\n\n const render = (bid, renderDocument) => {\n let payload = {\n slotid: slot.impid,\n vastUrl: slot.displayurl,\n vastXml: slot.creative,\n documentContext: renderDocument,\n };\n\n let outstreamConfig = slot.ext.videoPlayerConfig;\n\n window.CriteoOutStream[slot.ext.videoPlayerType].play(payload, outstreamConfig)\n };\n\n const renderer = Renderer.install({ url: PUBLISHER_TAG_OUTSTREAM_SRC, config: config });\n renderer.setRender(render);\n return renderer;\n}\n\nfunction getAssociatedBidRequest(bidRequests, slot) {\n for (const request of bidRequests) {\n if (request.adUnitCode === slot.impid) {\n if (request.params.zoneId && parseInt(request.params.zoneId) === slot.zoneid) {\n return request;\n } else if (slot.native) {\n if (request.mediaTypes?.native || request.nativeParams) {\n return request;\n }\n } else if (slot.video) {\n if (request.mediaTypes?.video) {\n return request;\n }\n } else if (request.mediaTypes?.banner || request.sizes) {\n return request;\n }\n }\n }\n return undefined;\n}\n\nexport function tryGetCriteoFastBid() {\n // begin ref#1\n try {\n const fastBidStorageKey = 'criteo_fast_bid';\n const hashPrefix = '// Hash: ';\n const fastBidFromStorage = storage.getDataFromLocalStorage(fastBidStorageKey);\n\n if (fastBidFromStorage !== null) {\n // The value stored must contain the file's encrypted hash as first line\n const firstLineEndPosition = fastBidFromStorage.indexOf('\\n');\n const firstLine = fastBidFromStorage.substr(0, firstLineEndPosition).trim();\n\n if (firstLine.substr(0, hashPrefix.length) !== hashPrefix) {\n logWarn('No hash found in FastBid');\n storage.removeDataFromLocalStorage(fastBidStorageKey);\n } else {\n // Remove the hash part from the locally stored value\n const publisherTagHash = firstLine.substr(hashPrefix.length);\n const publisherTag = fastBidFromStorage.substr(firstLineEndPosition + 1);\n\n if (verify(publisherTag, publisherTagHash, FAST_BID_PUBKEY_N, FAST_BID_PUBKEY_E)) {\n logInfo('Using Criteo FastBid');\n eval(publisherTag); // eslint-disable-line no-eval\n } else {\n logWarn('Invalid Criteo FastBid found');\n storage.removeDataFromLocalStorage(fastBidStorageKey);\n }\n }\n }\n } catch (e) {\n // Unable to get fast bid\n }\n // end ref#1\n}\n\nregisterBidder(spec);\n","import { loadExternalScript } from './adloader.js';\nimport {\n logError, logWarn, logMessage, deepAccess\n} from './utils.js';\nimport {find} from './polyfill.js';\nimport {getGlobal} from './prebidGlobal.js';\n\nconst pbjsInstance = getGlobal();\nconst moduleCode = 'outstream';\n\n/**\n * @typedef {object} Renderer\n *\n * A Renderer stores some functions which are used to render a particular Bid.\n * These are used in Outstream Video Bids, returned on the Bid by the adapter, and will\n * be used to render that bid unless the Publisher overrides them.\n */\n\nexport function Renderer(options) {\n const { url, config, id, callback, loaded, adUnitCode, renderNow } = options;\n this.url = url;\n this.config = config;\n this.handlers = {};\n this.id = id;\n this.renderNow = renderNow;\n\n // a renderer may push to the command queue to delay rendering until the\n // render function is loaded by loadExternalScript, at which point the the command\n // queue will be processed\n this.loaded = loaded;\n this.cmd = [];\n this.push = func => {\n if (typeof func !== 'function') {\n logError('Commands given to Renderer.push must be wrapped in a function');\n return;\n }\n this.loaded ? func.call() : this.cmd.push(func);\n };\n\n // bidders may override this with the `callback` property given to `install`\n this.callback = callback || (() => {\n this.loaded = true;\n this.process();\n });\n\n // use a function, not an arrow, in order to be able to pass \"arguments\" through\n this.render = function () {\n const renderArgs = arguments\n const runRender = () => {\n if (this._render) {\n this._render.apply(this, renderArgs)\n } else {\n logWarn(`No render function was provided, please use .setRender on the renderer`);\n }\n }\n\n if (isRendererPreferredFromAdUnit(adUnitCode)) {\n logWarn(`External Js not loaded by Renderer since renderer url and callback is already defined on adUnit ${adUnitCode}`);\n runRender();\n } else if (renderNow) {\n runRender();\n } else {\n // we expect to load a renderer url once only so cache the request to load script\n this.cmd.unshift(runRender) // should render run first ?\n loadExternalScript(url, moduleCode, this.callback, this.documentContext);\n }\n }.bind(this); // bind the function to this object to avoid 'this' errors\n}\n\nRenderer.install = function({ url, config, id, callback, loaded, adUnitCode, renderNow }) {\n return new Renderer({ url, config, id, callback, loaded, adUnitCode, renderNow });\n};\n\nRenderer.prototype.getConfig = function() {\n return this.config;\n};\n\nRenderer.prototype.setRender = function(fn) {\n this._render = fn;\n};\n\nRenderer.prototype.setEventHandlers = function(handlers) {\n this.handlers = handlers;\n};\n\nRenderer.prototype.handleVideoEvent = function({ id, eventName }) {\n if (typeof this.handlers[eventName] === 'function') {\n this.handlers[eventName]();\n }\n\n logMessage(`Prebid Renderer event for id ${id} type ${eventName}`);\n};\n\n/*\n * Calls functions that were pushed to the command queue before the\n * renderer was loaded by `loadExternalScript`\n */\nRenderer.prototype.process = function() {\n while (this.cmd.length > 0) {\n try {\n this.cmd.shift().call();\n } catch (error) {\n logError('Error processing Renderer command: ', error);\n }\n }\n};\n\n/**\n * Checks whether creative rendering should be done by Renderer or not.\n * @param {Object} renderer Renderer object installed by adapter\n * @returns {Boolean}\n */\nexport function isRendererRequired(renderer) {\n return !!(renderer && (renderer.url || renderer.renderNow));\n}\n\n/**\n * Render the bid returned by the adapter\n * @param {Object} renderer Renderer object installed by adapter\n * @param {Object} bid Bid response\n * @param {Document} doc context document of bid\n */\nexport function executeRenderer(renderer, bid, doc) {\n let docContext = null;\n if (renderer.config && renderer.config.documentResolver) {\n docContext = renderer.config.documentResolver(bid, document, doc);// a user provided callback, which should return a Document, and expect the parameters; bid, sourceDocument, renderDocument\n }\n if (!docContext) {\n docContext = document;\n }\n renderer.documentContext = docContext;\n renderer.render(bid, renderer.documentContext);\n}\n\nfunction isRendererPreferredFromAdUnit(adUnitCode) {\n const adUnits = pbjsInstance.adUnits;\n const adUnit = find(adUnits, adUnit => {\n return adUnit.code === adUnitCode;\n });\n\n if (!adUnit) {\n return false\n }\n\n // renderer defined at adUnit level\n const adUnitRenderer = deepAccess(adUnit, 'renderer');\n const hasValidAdUnitRenderer = !!(adUnitRenderer && adUnitRenderer.url && adUnitRenderer.render);\n\n // renderer defined at adUnit.mediaTypes level\n const mediaTypeRenderer = deepAccess(adUnit, 'mediaTypes.video.renderer');\n const hasValidMediaTypeRenderer = !!(mediaTypeRenderer && mediaTypeRenderer.url && mediaTypeRenderer.render)\n\n return !!(\n (hasValidAdUnitRenderer && !(adUnitRenderer.backupOnly === true)) ||\n (hasValidMediaTypeRenderer && !(mediaTypeRenderer.backupOnly === true))\n );\n}\n","/**\n * Activity (that are relevant for privacy) definitions\n *\n * ref. https://docs.google.com/document/d/1dRxFUFmhh2jGanzGZvfkK_6jtHPpHXWD7Qsi6KEugeE\n * & https://github.com/prebid/Prebid.js/issues/9546\n */\n\n/**\n * accessDevice: some component wants to read or write to localStorage or cookies.\n */\nexport const ACTIVITY_ACCESS_DEVICE = 'accessDevice';\n/**\n * syncUser: A bid adapter wants to run a user sync.\n */\nexport const ACTIVITY_SYNC_USER = 'syncUser';\n/**\n * enrichUfpd: some component wants to add user first-party data to bid requests.\n */\nexport const ACTIVITY_ENRICH_UFPD = 'enrichUfpd';\n/**\n * enrichEids: some component wants to add user IDs to bid requests.\n */\nexport const ACTIVITY_ENRICH_EIDS = 'enrichEids';\n/**\n * fetchBid: a bidder wants to bid.\n */\nexport const ACTIVITY_FETCH_BIDS = 'fetchBids';\n\n/**\n * reportAnalytics: some component wants to phone home with analytics data.\n */\nexport const ACTIVITY_REPORT_ANALYTICS = 'reportAnalytics';\n\n/**\n * some component wants access to (and send along) user IDs\n */\nexport const ACTIVITY_TRANSMIT_EIDS = 'transmitEids'\n\n/**\n * transmitUfpd: some component wants access to (and send along) user FPD\n */\nexport const ACTIVITY_TRANSMIT_UFPD = 'transmitUfpd';\n\n/**\n * transmitPreciseGeo: some component wants access to (and send along) geolocation info\n */\nexport const ACTIVITY_TRANSMIT_PRECISE_GEO = 'transmitPreciseGeo';\n\n/**\n * transmit TID: some component wants access ot (and send along) transaction IDs\n */\nexport const ACTIVITY_TRANSMIT_TID = 'transmitTid';\n","import adapterManager from '../adapterManager.js';\nimport {activityParamsBuilder} from './params.js';\n\n/**\n * Utility function for building common activity parameters - broken out to its own\n * file to avoid circular imports.\n */\nexport const activityParams = activityParamsBuilder((alias) => adapterManager.resolveAlias(alias));\n","export const MODULE_TYPE_PREBID = 'prebid';\nexport const MODULE_TYPE_BIDDER = 'bidder';\nexport const MODULE_TYPE_UID = 'userId';\nexport const MODULE_TYPE_RTD = 'rtd';\nexport const MODULE_TYPE_ANALYTICS = 'analytics';\n","import {MODULE_TYPE_BIDDER} from './modules.js';\nimport {hook} from '../hook.js';\n\n/**\n * Component ID - who is trying to perform the activity?\n * Relevant for all activities.\n */\nexport const ACTIVITY_PARAM_COMPONENT = 'component';\nexport const ACTIVITY_PARAM_COMPONENT_TYPE = ACTIVITY_PARAM_COMPONENT + 'Type';\nexport const ACTIVITY_PARAM_COMPONENT_NAME = ACTIVITY_PARAM_COMPONENT + 'Name';\n\n/**\n * Code of the bid adapter that `componentName` is an alias of.\n * May be the same as the component name.\n *\n * relevant for all activities, but only when componentType is 'bidder'.\n */\nexport const ACTIVITY_PARAM_ADAPTER_CODE = 'adapterCode';\n\n/**\n * Storage type - either 'html5' or 'cookie'.\n * Relevant for: accessDevice\n */\nexport const ACTIVITY_PARAM_STORAGE_TYPE = 'storageType';\n\n/**\n * s2sConfig[].configName, used to identify a particular s2s instance\n * relevant for: fetchBids, but only when component is 'prebid.pbsBidAdapter'\n */\nexport const ACTIVITY_PARAM_S2S_NAME = 'configName';\n/**\n * user sync type - 'iframe' or 'pixel'\n * relevant for: syncUser\n */\nexport const ACTIVITY_PARAM_SYNC_TYPE = 'syncType'\n/**\n * user sync URL\n * relevant for: syncUser\n */\nexport const ACTIVITY_PARAM_SYNC_URL = 'syncUrl';\n/**\n * @private\n * configuration options for analytics adapter - the argument passed to `enableAnalytics`.\n * relevant for: reportAnalytics\n */\nexport const ACTIVITY_PARAM_ANL_CONFIG = '_config';\n\nexport function activityParamsBuilder(resolveAlias) {\n return function activityParams(moduleType, moduleName, params) {\n const defaults = {\n [ACTIVITY_PARAM_COMPONENT_TYPE]: moduleType,\n [ACTIVITY_PARAM_COMPONENT_NAME]: moduleName,\n [ACTIVITY_PARAM_COMPONENT]: `${moduleType}.${moduleName}`\n };\n if (moduleType === MODULE_TYPE_BIDDER) {\n defaults[ACTIVITY_PARAM_ADAPTER_CODE] = resolveAlias(moduleName);\n }\n return buildActivityParams(Object.assign(defaults, params));\n }\n}\n\nexport const buildActivityParams = hook('sync', params => params);\n","import {prefixLog} from '../utils.js';\nimport {ACTIVITY_PARAM_COMPONENT} from './params.js';\n\nexport function ruleRegistry(logger = prefixLog('Activity control:')) {\n const registry = {};\n\n function getRules(activity) {\n return registry[activity] = registry[activity] || [];\n }\n\n function runRule(activity, name, rule, params) {\n let res;\n try {\n res = rule(params);\n } catch (e) {\n logger.logError(`Exception in rule ${name} for '${activity}'`, e);\n res = {allow: false, reason: e};\n }\n return res && Object.assign({activity, name, component: params[ACTIVITY_PARAM_COMPONENT]}, res);\n }\n\n const dupes = {};\n const DEDUPE_INTERVAL = 1000;\n\n function logResult({activity, name, allow, reason, component}) {\n const msg = `${name} ${allow ? 'allowed' : 'denied'} '${activity}' for '${component}'${reason ? ':' : ''}`;\n const deduping = dupes.hasOwnProperty(msg);\n if (deduping) {\n clearTimeout(dupes[msg]);\n }\n dupes[msg] = setTimeout(() => delete dupes[msg], DEDUPE_INTERVAL);\n if (!deduping) {\n const parts = [msg];\n reason && parts.push(reason);\n (allow ? logger.logInfo : logger.logWarn).apply(logger, parts);\n }\n }\n\n return [\n /**\n * Register an activity control rule.\n *\n * @param {string} activity activity name - set is defined in `activities.js`\n * @param {string} ruleName a name for this rule; used for logging.\n * @param {function({}): {allow: boolean, reason?: string}} rule definition function. Takes in activity\n * parameters as a single map; MAY return an object {allow, reason}, where allow is true/false,\n * and reason is an optional message used for logging.\n *\n * {allow: true} will allow this activity AS LONG AS no other rules with same or higher priority return {allow: false};\n * {allow: false} will deny this activity AS LONG AS no other rules with higher priority return {allow: true};\n * returning null/undefined has no effect - the decision is left to other rules.\n * If no rule returns an allow value, the default is to allow the activity.\n *\n * @param {number} priority rule priority; lower number means higher priority\n * @returns {function(void): void} a function that unregisters the rule when called.\n */\n function registerActivityControl(activity, ruleName, rule, priority = 10) {\n const rules = getRules(activity);\n const pos = rules.findIndex(([itemPriority]) => priority < itemPriority);\n const entry = [priority, ruleName, rule];\n rules.splice(pos < 0 ? rules.length : pos, 0, entry);\n return function () {\n const idx = rules.indexOf(entry);\n if (idx >= 0) rules.splice(idx, 1);\n }\n },\n /**\n * Test whether an activity is allowed.\n *\n * @param {string} activity activity name\n * @param {{}} params activity parameters; should be generated through the `activityParams` utility.\n * @return {boolean} true for allow, false for deny.\n */\n function isActivityAllowed(activity, params) {\n let lastPriority, foundAllow;\n for (const [priority, name, rule] of getRules(activity)) {\n if (lastPriority !== priority && foundAllow) break;\n lastPriority = priority;\n const ruleResult = runRule(activity, name, rule, params);\n if (ruleResult) {\n if (!ruleResult.allow) {\n logResult(ruleResult);\n return false;\n } else {\n foundAllow = ruleResult;\n }\n }\n }\n foundAllow && logResult(foundAllow);\n return true;\n }\n ];\n}\n\nexport const [registerActivityControl, isActivityAllowed] = ruleRegistry();\n","import { deepAccess } from './utils.js';\n\nlet adUnits = {};\n\nfunction ensureAdUnit(adunit, bidderCode) {\n let adUnit = adUnits[adunit] = adUnits[adunit] || { bidders: {} };\n if (bidderCode) {\n return adUnit.bidders[bidderCode] = adUnit.bidders[bidderCode] || {}\n }\n return adUnit;\n}\n\nfunction incrementAdUnitCount(adunit, counter, bidderCode) {\n let adUnit = ensureAdUnit(adunit, bidderCode);\n adUnit[counter] = (adUnit[counter] || 0) + 1;\n return adUnit[counter];\n}\n\n/**\n * Increments and returns current Adunit counter\n * @param {string} adunit id\n * @returns {number} current adunit count\n */\nfunction incrementRequestsCounter(adunit) {\n return incrementAdUnitCount(adunit, 'requestsCounter');\n}\n\n/**\n * Increments and returns current Adunit requests counter for a bidder\n * @param {string} adunit id\n * @param {string} bidderCode code\n * @returns {number} current adunit bidder requests count\n */\nfunction incrementBidderRequestsCounter(adunit, bidderCode) {\n return incrementAdUnitCount(adunit, 'requestsCounter', bidderCode);\n}\n\n/**\n * Increments and returns current Adunit wins counter for a bidder\n * @param {string} adunit id\n * @param {string} bidderCode code\n * @returns {number} current adunit bidder requests count\n */\nfunction incrementBidderWinsCounter(adunit, bidderCode) {\n return incrementAdUnitCount(adunit, 'winsCounter', bidderCode);\n}\n\n/**\n * Returns current Adunit counter\n * @param {string} adunit id\n * @returns {number} current adunit count\n */\nfunction getRequestsCounter(adunit) {\n return deepAccess(adUnits, `${adunit}.requestsCounter`) || 0;\n}\n\n/**\n * Returns current Adunit requests counter for a specific bidder code\n * @param {string} adunit id\n * @param {string} bidder code\n * @returns {number} current adunit bidder requests count\n */\nfunction getBidderRequestsCounter(adunit, bidder) {\n return deepAccess(adUnits, `${adunit}.bidders.${bidder}.requestsCounter`) || 0;\n}\n\n/**\n * Returns current Adunit requests counter for a specific bidder code\n * @param {string} adunit id\n * @param {string} bidder code\n * @returns {number} current adunit bidder requests count\n */\nfunction getBidderWinsCounter(adunit, bidder) {\n return deepAccess(adUnits, `${adunit}.bidders.${bidder}.winsCounter`) || 0;\n}\n\n/**\n * A module which counts how many times an adunit was called\n * @module adunitCounter\n */\nlet adunitCounter = {\n incrementRequestsCounter,\n incrementBidderRequestsCounter,\n incrementBidderWinsCounter,\n getRequestsCounter,\n getBidderRequestsCounter,\n getBidderWinsCounter\n}\n\nexport { adunitCounter };\n","import {deepAccess} from '../utils.js';\nimport {config} from '../config.js';\nimport {isActivityAllowed, registerActivityControl} from './rules.js';\nimport {\n ACTIVITY_TRANSMIT_EIDS,\n ACTIVITY_TRANSMIT_PRECISE_GEO,\n ACTIVITY_TRANSMIT_TID,\n ACTIVITY_TRANSMIT_UFPD\n} from './activities.js';\n\nexport const ORTB_UFPD_PATHS = ['user.data', 'user.ext.data', 'user.yob', 'user.gender', 'user.keywords', 'user.kwarray'];\nexport const ORTB_EIDS_PATHS = ['user.eids', 'user.ext.eids'];\nexport const ORTB_GEO_PATHS = ['user.geo.lat', 'user.geo.lon', 'device.geo.lat', 'device.geo.lon'];\n\n/**\n * @typedef TransformationRuleDef\n * @property {name}\n * @property {Array[string]} paths dot-separated list of paths that this rule applies to.\n * @property {function(*): boolean} applies a predicate that should return true if this rule applies\n * (and the transformation defined herein should be applied). The arguments are those passed to the transformation function.\n * @property {name} a name for the rule; used to debounce calls to `applies` (and avoid excessive logging):\n * if a rule with the same name was already found to apply (or not), this one will (or won't) as well.\n */\n\n/**\n * @typedef RedactRuleDef A rule that removes, or replaces, values from an object (modifications are done in-place).\n * @augments TransformationRuleDef\n * @property {function(*): *} get? substitution functions for values that should be redacted;\n * takes in the original (unredacted) value as an input, and returns a substitute to use in the redacted\n * version. If it returns undefined, or this option is omitted, protected paths will be removed\n * from the redacted object.\n */\n\n/**\n * @param {RedactRuleDef} ruleDef\n * @return {TransformationRule}\n */\nexport function redactRule(ruleDef) {\n return Object.assign({\n get() {},\n run(root, path, object, property, applies) {\n const val = object && object[property];\n if (isData(val) && applies()) {\n const repl = this.get(val);\n if (repl === undefined) {\n delete object[property];\n } else {\n object[property] = repl;\n }\n }\n }\n }, ruleDef)\n}\n\n/**\n * @typedef TransformationRule\n * @augments TransformationRuleDef\n * @property {function} run rule logic - see `redactRule` for an example.\n */\n\n/**\n * @typedef {Function} TransformationFunction\n * @param object object to transform\n * @param ...args arguments to pass down to rule's `apply` methods.\n */\n\n/**\n * Return a transformation function that will apply the given rules to an object.\n *\n * @param {Array[TransformationRule]} rules\n * @return {TransformationFunction}\n */\nexport function objectTransformer(rules) {\n rules.forEach(rule => {\n rule.paths = rule.paths.map((path) => {\n const parts = path.split('.');\n const tail = parts.pop();\n return [parts.length > 0 ? parts.join('.') : null, tail]\n })\n })\n return function applyTransform(session, obj, ...args) {\n const result = [];\n const applies = sessionedApplies(session, ...args);\n rules.forEach(rule => {\n if (session[rule.name] === false) return;\n for (const [head, tail] of rule.paths) {\n const parent = head == null ? obj : deepAccess(obj, head);\n result.push(rule.run(obj, head, parent, tail, applies.bind(null, rule)));\n if (session[rule.name] === false) return;\n }\n })\n return result.filter(el => el != null);\n }\n}\n\nexport function sessionedApplies(session, ...args) {\n return function applies(rule) {\n if (!session.hasOwnProperty(rule.name)) {\n session[rule.name] = !!rule.applies(...args);\n }\n return session[rule.name];\n }\n}\n\nexport function isData(val) {\n return val != null && (typeof val !== 'object' || Object.keys(val).length > 0)\n}\n\nexport function appliesWhenActivityDenied(activity, isAllowed = isActivityAllowed) {\n return function applies(params) {\n return !isAllowed(activity, params);\n };\n}\n\nfunction bidRequestTransmitRules(isAllowed = isActivityAllowed) {\n return [\n {\n name: ACTIVITY_TRANSMIT_EIDS,\n paths: ['userId', 'userIdAsEids'],\n applies: appliesWhenActivityDenied(ACTIVITY_TRANSMIT_EIDS, isAllowed),\n },\n {\n name: ACTIVITY_TRANSMIT_TID,\n paths: ['ortb2Imp.ext.tid'],\n applies: appliesWhenActivityDenied(ACTIVITY_TRANSMIT_TID, isAllowed)\n }\n ].map(redactRule)\n}\n\nexport function ortb2TransmitRules(isAllowed = isActivityAllowed) {\n return [\n {\n name: ACTIVITY_TRANSMIT_UFPD,\n paths: ORTB_UFPD_PATHS,\n applies: appliesWhenActivityDenied(ACTIVITY_TRANSMIT_UFPD, isAllowed),\n },\n {\n name: ACTIVITY_TRANSMIT_EIDS,\n paths: ORTB_EIDS_PATHS,\n applies: appliesWhenActivityDenied(ACTIVITY_TRANSMIT_EIDS, isAllowed),\n },\n {\n name: ACTIVITY_TRANSMIT_PRECISE_GEO,\n paths: ORTB_GEO_PATHS,\n applies: appliesWhenActivityDenied(ACTIVITY_TRANSMIT_PRECISE_GEO, isAllowed),\n get(val) {\n return Math.round((val + Number.EPSILON) * 100) / 100;\n }\n },\n {\n name: ACTIVITY_TRANSMIT_TID,\n paths: ['source.tid'],\n applies: appliesWhenActivityDenied(ACTIVITY_TRANSMIT_TID, isAllowed),\n }\n ].map(redactRule);\n}\n\nexport function redactorFactory(isAllowed = isActivityAllowed) {\n const redactOrtb2 = objectTransformer(ortb2TransmitRules(isAllowed));\n const redactBidRequest = objectTransformer(bidRequestTransmitRules(isAllowed));\n return function redactor(params) {\n const session = {};\n return {\n ortb2(obj) { redactOrtb2(session, obj, params); return obj },\n bidRequest(obj) { redactBidRequest(session, obj, params); return obj }\n }\n }\n}\n\n/**\n * Returns an object that can redact other privacy-sensitive objects according\n * to activity rules.\n *\n * @param {{}} params activity parameters to use for activity checks\n * @return {{ortb2: function({}): {}, bidRequest: function({}): {}}} methods\n * that can redact disallowed data from ORTB2 and/or bid request objects.\n */\nexport const redactor = redactorFactory();\n\n// by default, TIDs are off since version 8\nregisterActivityControl(ACTIVITY_TRANSMIT_TID, 'enableTIDs config', () => {\n if (!config.getConfig('enableTIDs')) {\n return {allow: false, reason: 'TIDs are disabled'}\n }\n});\n","/** @module adaptermanger */\n\nimport {\n _each,\n bind,\n deepAccess,\n deepClone,\n flatten,\n generateUUID,\n getBidderCodes,\n getDefinedParams,\n getUniqueIdentifierStr,\n getUserConfiguredParams,\n groupBy,\n isArray,\n isPlainObject,\n isValidMediaTypes,\n logError,\n logInfo,\n logMessage,\n logWarn,\n mergeDeep,\n shuffle,\n timestamp,\n} from './utils.js';\nimport {decorateAdUnitsWithNativeParams, nativeAdapters} from './native.js';\nimport {newBidder} from './adapters/bidderFactory.js';\nimport {ajaxBuilder} from './ajax.js';\nimport {config, RANDOM} from './config.js';\nimport {hook} from './hook.js';\nimport {find, includes} from './polyfill.js';\nimport {adunitCounter} from './adUnits.js';\nimport {getRefererInfo} from './refererDetection.js';\nimport {\n GDPR_GVLIDS,\n gdprDataHandler,\n uspDataHandler,\n gppDataHandler,\n} from './consentHandler.js';\nimport * as events from './events.js';\nimport CONSTANTS from './constants.json';\nimport {useMetrics} from './utils/perfMetrics.js';\nimport {auctionManager} from './auctionManager.js';\nimport {MODULE_TYPE_ANALYTICS, MODULE_TYPE_BIDDER, MODULE_TYPE_PREBID} from './activities/modules.js';\nimport {isActivityAllowed} from './activities/rules.js';\nimport {ACTIVITY_FETCH_BIDS, ACTIVITY_REPORT_ANALYTICS} from './activities/activities.js';\nimport {ACTIVITY_PARAM_ANL_CONFIG, ACTIVITY_PARAM_S2S_NAME, activityParamsBuilder} from './activities/params.js';\nimport {redactor} from './activities/redactor.js';\n\nexport {gdprDataHandler, gppDataHandler, uspDataHandler, coppaDataHandler} from './consentHandler.js';\n\nexport const PBS_ADAPTER_NAME = 'pbsBidAdapter';\nexport const PARTITIONS = {\n CLIENT: 'client',\n SERVER: 'server'\n}\n\nexport const dep = {\n isAllowed: isActivityAllowed,\n redact: redactor\n}\n\nlet adapterManager = {};\n\nlet _bidderRegistry = adapterManager.bidderRegistry = {};\nlet _aliasRegistry = adapterManager.aliasRegistry = {};\n\nlet _s2sConfigs = [];\nconfig.getConfig('s2sConfig', config => {\n if (config && config.s2sConfig) {\n _s2sConfigs = isArray(config.s2sConfig) ? config.s2sConfig : [config.s2sConfig];\n }\n});\n\nvar _analyticsRegistry = {};\n\nconst activityParams = activityParamsBuilder((alias) => adapterManager.resolveAlias(alias));\n\nexport function s2sActivityParams(s2sConfig) {\n return activityParams(MODULE_TYPE_PREBID, PBS_ADAPTER_NAME, {\n [ACTIVITY_PARAM_S2S_NAME]: s2sConfig.configName\n });\n}\n\n/**\n * @typedef {object} LabelDescriptor\n * @property {boolean} labelAll describes whether or not this object expects all labels to match, or any label to match\n * @property {Array} labels the labels listed on the bidder or adUnit\n * @property {Array} activeLabels the labels specified as being active by requestBids\n */\n\nfunction getBids({bidderCode, auctionId, bidderRequestId, adUnits, src, metrics}) {\n return adUnits.reduce((result, adUnit) => {\n const bids = adUnit.bids.filter(bid => bid.bidder === bidderCode);\n if (bidderCode == null && bids.length === 0 && adUnit.s2sBid != null) {\n bids.push({bidder: null});\n }\n result.push(\n bids.reduce((bids, bid) => {\n bid = Object.assign({}, bid,\n {ortb2Imp: mergeDeep({}, adUnit.ortb2Imp, bid.ortb2Imp)},\n getDefinedParams(adUnit, [\n 'nativeParams',\n 'nativeOrtbRequest',\n 'mediaType',\n 'renderer'\n ])\n );\n\n const mediaTypes = bid.mediaTypes == null ? adUnit.mediaTypes : bid.mediaTypes\n\n if (isValidMediaTypes(mediaTypes)) {\n bid = Object.assign({}, bid, {\n mediaTypes\n });\n } else {\n logError(\n `mediaTypes is not correctly configured for adunit ${adUnit.code}`\n );\n }\n\n bids.push(Object.assign({}, bid, {\n adUnitCode: adUnit.code,\n transactionId: adUnit.transactionId,\n sizes: deepAccess(mediaTypes, 'banner.sizes') || deepAccess(mediaTypes, 'video.playerSize') || [],\n bidId: bid.bid_id || getUniqueIdentifierStr(),\n bidderRequestId,\n auctionId,\n src,\n metrics,\n bidRequestsCount: adunitCounter.getRequestsCounter(adUnit.code),\n bidderRequestsCount: adunitCounter.getBidderRequestsCounter(adUnit.code, bid.bidder),\n bidderWinsCount: adunitCounter.getBidderWinsCounter(adUnit.code, bid.bidder),\n }));\n return bids;\n }, [])\n );\n return result;\n }, []).reduce(flatten, []).filter(val => val !== '');\n}\n\nconst hookedGetBids = hook('sync', getBids, 'getBids');\n\n/**\n * Filter an adUnit's bids for building client and/or server requests\n *\n * @param bids an array of bids as defined in an adUnit\n * @param s2sConfig null if the adUnit is being routed to a client adapter; otherwise the s2s adapter's config\n * @returns the subset of `bids` that are pertinent for the given `s2sConfig`\n */\nexport function _filterBidsForAdUnit(bids, s2sConfig, {getS2SBidders = getS2SBidderSet} = {}) {\n if (s2sConfig == null) {\n return bids;\n } else {\n const serverBidders = getS2SBidders(s2sConfig);\n return bids.filter((bid) => serverBidders.has(bid.bidder))\n }\n}\nexport const filterBidsForAdUnit = hook('sync', _filterBidsForAdUnit, 'filterBidsForAdUnit');\n\nfunction getAdUnitCopyForPrebidServer(adUnits, s2sConfig) {\n let adUnitsCopy = deepClone(adUnits);\n let hasModuleBids = false;\n\n adUnitsCopy.forEach((adUnit) => {\n // filter out client side bids\n const s2sBids = adUnit.bids.filter((b) => b.module === PBS_ADAPTER_NAME && b.params?.configName === s2sConfig.configName);\n if (s2sBids.length === 1) {\n adUnit.s2sBid = s2sBids[0];\n hasModuleBids = true;\n adUnit.ortb2Imp = mergeDeep({}, adUnit.s2sBid.ortb2Imp, adUnit.ortb2Imp);\n } else if (s2sBids.length > 1) {\n logWarn('Multiple \"module\" bids for the same s2s configuration; all will be ignored', s2sBids);\n }\n adUnit.bids = filterBidsForAdUnit(adUnit.bids, s2sConfig)\n .map((bid) => {\n bid.bid_id = getUniqueIdentifierStr();\n return bid;\n });\n });\n\n // don't send empty requests\n adUnitsCopy = adUnitsCopy.filter(adUnit => {\n return adUnit.bids.length !== 0 || adUnit.s2sBid != null;\n });\n return {adUnits: adUnitsCopy, hasModuleBids};\n}\n\nfunction getAdUnitCopyForClientAdapters(adUnits) {\n let adUnitsClientCopy = deepClone(adUnits);\n adUnitsClientCopy.forEach((adUnit) => {\n adUnit.bids = filterBidsForAdUnit(adUnit.bids, null);\n });\n\n // don't send empty requests\n adUnitsClientCopy = adUnitsClientCopy.filter(adUnit => {\n return adUnit.bids.length !== 0;\n });\n\n return adUnitsClientCopy;\n}\n\n/**\n * Filter and/or modify media types for ad units based on the given labels.\n *\n * This should return adUnits that are active for the given labels, modified to have their `mediaTypes`\n * conform to size mapping configuration. If different bids for the same adUnit should use different `mediaTypes`,\n * they should be exposed under `adUnit.bids[].mediaTypes`.\n */\nexport const setupAdUnitMediaTypes = hook('sync', (adUnits, labels) => {\n return adUnits;\n}, 'setupAdUnitMediaTypes')\n\n/**\n * @param {{}|Array<{}>} s2sConfigs\n * @returns {Set} a set of all the bidder codes that should be routed through the S2S adapter(s)\n * as defined in `s2sConfigs`\n */\nexport function getS2SBidderSet(s2sConfigs) {\n if (!isArray(s2sConfigs)) s2sConfigs = [s2sConfigs];\n // `null` represents the \"no bid bidder\" - when an ad unit is meant only for S2S adapters, like stored impressions\n const serverBidders = new Set([null]);\n s2sConfigs.filter((s2s) => s2s && s2s.enabled)\n .flatMap((s2s) => s2s.bidders)\n .forEach((bidder) => serverBidders.add(bidder));\n return serverBidders;\n}\n\n/**\n * @returns {{[PARTITIONS.CLIENT]: Array, [PARTITIONS.SERVER]: Array}}\n * All the bidder codes in the given `adUnits`, divided in two arrays -\n * those that should be routed to client, and server adapters (according to the configuration in `s2sConfigs`).\n */\nexport function _partitionBidders (adUnits, s2sConfigs, {getS2SBidders = getS2SBidderSet} = {}) {\n const serverBidders = getS2SBidders(s2sConfigs);\n return getBidderCodes(adUnits).reduce((memo, bidder) => {\n const partition = serverBidders.has(bidder) ? PARTITIONS.SERVER : PARTITIONS.CLIENT;\n memo[partition].push(bidder);\n return memo;\n }, {[PARTITIONS.CLIENT]: [], [PARTITIONS.SERVER]: []})\n}\n\nexport const partitionBidders = hook('sync', _partitionBidders, 'partitionBidders');\n\nadapterManager.makeBidRequests = hook('sync', function (adUnits, auctionStart, auctionId, cbTimeout, labels, ortb2Fragments = {}, auctionMetrics) {\n auctionMetrics = useMetrics(auctionMetrics);\n /**\n * emit and pass adunits for external modification\n * @see {@link https://github.com/prebid/Prebid.js/issues/4149|Issue}\n */\n events.emit(CONSTANTS.EVENTS.BEFORE_REQUEST_BIDS, adUnits);\n if (FEATURES.NATIVE) {\n decorateAdUnitsWithNativeParams(adUnits);\n }\n\n adUnits.forEach(au => {\n if (!isPlainObject(au.mediaTypes)) {\n au.mediaTypes = {};\n }\n // filter out bidders that cannot participate in the auction\n au.bids = au.bids.filter((bid) => !bid.bidder || dep.isAllowed(ACTIVITY_FETCH_BIDS, activityParams(MODULE_TYPE_BIDDER, bid.bidder)))\n });\n\n adUnits = setupAdUnitMediaTypes(adUnits, labels);\n\n let {[PARTITIONS.CLIENT]: clientBidders, [PARTITIONS.SERVER]: serverBidders} = partitionBidders(adUnits, _s2sConfigs);\n\n if (config.getConfig('bidderSequence') === RANDOM) {\n clientBidders = shuffle(clientBidders);\n }\n const refererInfo = getRefererInfo();\n\n let bidRequests = [];\n\n const ortb2 = ortb2Fragments.global || {};\n const bidderOrtb2 = ortb2Fragments.bidder || {};\n\n function addOrtb2(bidderRequest, s2sActivityParams) {\n const redact = dep.redact(\n s2sActivityParams != null\n ? s2sActivityParams\n : activityParams(MODULE_TYPE_BIDDER, bidderRequest.bidderCode)\n );\n const fpd = Object.freeze(redact.ortb2(mergeDeep({source: {tid: auctionId}}, ortb2, bidderOrtb2[bidderRequest.bidderCode])));\n bidderRequest.ortb2 = fpd;\n bidderRequest.bids = bidderRequest.bids.map((bid) => {\n bid.ortb2 = fpd;\n return redact.bidRequest(bid);\n })\n return bidderRequest;\n }\n\n _s2sConfigs.forEach(s2sConfig => {\n const s2sParams = s2sActivityParams(s2sConfig);\n if (s2sConfig && s2sConfig.enabled && dep.isAllowed(ACTIVITY_FETCH_BIDS, s2sParams)) {\n let {adUnits: adUnitsS2SCopy, hasModuleBids} = getAdUnitCopyForPrebidServer(adUnits, s2sConfig);\n\n // uniquePbsTid is so we know which server to send which bids to during the callBids function\n let uniquePbsTid = generateUUID();\n\n (serverBidders.length === 0 && hasModuleBids ? [null] : serverBidders).forEach(bidderCode => {\n const bidderRequestId = getUniqueIdentifierStr();\n const metrics = auctionMetrics.fork();\n const bidderRequest = addOrtb2({\n bidderCode,\n auctionId,\n bidderRequestId,\n uniquePbsTid,\n bids: hookedGetBids({bidderCode, auctionId, bidderRequestId, 'adUnits': deepClone(adUnitsS2SCopy), src: CONSTANTS.S2S.SRC, metrics}),\n auctionStart: auctionStart,\n timeout: s2sConfig.timeout,\n src: CONSTANTS.S2S.SRC,\n refererInfo,\n metrics,\n }, s2sParams);\n if (bidderRequest.bids.length !== 0) {\n bidRequests.push(bidderRequest);\n }\n });\n\n // update the s2sAdUnits object and remove all bids that didn't pass sizeConfig/label checks from getBids()\n // this is to keep consistency and only allow bids/adunits that passed the checks to go to pbs\n adUnitsS2SCopy.forEach((adUnitCopy) => {\n let validBids = adUnitCopy.bids.filter((adUnitBid) =>\n find(bidRequests, request =>\n find(request.bids, (reqBid) => reqBid.bidId === adUnitBid.bid_id)));\n adUnitCopy.bids = validBids;\n });\n\n bidRequests.forEach(request => {\n if (request.adUnitsS2SCopy === undefined) {\n request.adUnitsS2SCopy = adUnitsS2SCopy.filter(au => au.bids.length > 0 || au.s2sBid != null);\n }\n });\n }\n });\n\n // client adapters\n let adUnitsClientCopy = getAdUnitCopyForClientAdapters(adUnits);\n clientBidders.forEach(bidderCode => {\n const bidderRequestId = getUniqueIdentifierStr();\n const metrics = auctionMetrics.fork();\n const bidderRequest = addOrtb2({\n bidderCode,\n auctionId,\n bidderRequestId,\n bids: hookedGetBids({bidderCode, auctionId, bidderRequestId, 'adUnits': deepClone(adUnitsClientCopy), labels, src: 'client', metrics}),\n auctionStart: auctionStart,\n timeout: cbTimeout,\n refererInfo,\n metrics,\n });\n const adapter = _bidderRegistry[bidderCode];\n if (!adapter) {\n logError(`Trying to make a request for bidder that does not exist: ${bidderCode}`);\n }\n\n if (adapter && bidderRequest.bids && bidderRequest.bids.length !== 0) {\n bidRequests.push(bidderRequest);\n }\n });\n\n bidRequests.forEach(bidRequest => {\n if (gdprDataHandler.getConsentData()) {\n bidRequest['gdprConsent'] = gdprDataHandler.getConsentData();\n }\n if (uspDataHandler.getConsentData()) {\n bidRequest['uspConsent'] = uspDataHandler.getConsentData();\n }\n if (gppDataHandler.getConsentData()) {\n bidRequest['gppConsent'] = gppDataHandler.getConsentData();\n }\n });\n return bidRequests;\n}, 'makeBidRequests');\n\nadapterManager.callBids = (adUnits, bidRequests, addBidResponse, doneCb, requestCallbacks, requestBidsTimeout, onTimelyResponse, ortb2Fragments = {}) => {\n if (!bidRequests.length) {\n logWarn('callBids executed with no bidRequests. Were they filtered by labels or sizing?');\n return;\n }\n\n let [clientBidRequests, serverBidRequests] = bidRequests.reduce((partitions, bidRequest) => {\n partitions[Number(typeof bidRequest.src !== 'undefined' && bidRequest.src === CONSTANTS.S2S.SRC)].push(bidRequest);\n return partitions;\n }, [[], []]);\n\n var uniqueServerBidRequests = [];\n serverBidRequests.forEach(serverBidRequest => {\n var index = -1;\n for (var i = 0; i < uniqueServerBidRequests.length; ++i) {\n if (serverBidRequest.uniquePbsTid === uniqueServerBidRequests[i].uniquePbsTid) {\n index = i;\n break;\n }\n }\n if (index <= -1) {\n uniqueServerBidRequests.push(serverBidRequest);\n }\n });\n\n let counter = 0;\n\n _s2sConfigs.forEach((s2sConfig) => {\n if (s2sConfig && uniqueServerBidRequests[counter] && getS2SBidderSet(s2sConfig).has(uniqueServerBidRequests[counter].bidderCode)) {\n // s2s should get the same client side timeout as other client side requests.\n const s2sAjax = ajaxBuilder(requestBidsTimeout, requestCallbacks ? {\n request: requestCallbacks.request.bind(null, 's2s'),\n done: requestCallbacks.done\n } : undefined);\n let adaptersServerSide = s2sConfig.bidders;\n const s2sAdapter = _bidderRegistry[s2sConfig.adapter];\n let uniquePbsTid = uniqueServerBidRequests[counter].uniquePbsTid;\n let adUnitsS2SCopy = uniqueServerBidRequests[counter].adUnitsS2SCopy;\n\n let uniqueServerRequests = serverBidRequests.filter(serverBidRequest => serverBidRequest.uniquePbsTid === uniquePbsTid);\n\n if (s2sAdapter) {\n let s2sBidRequest = {'ad_units': adUnitsS2SCopy, s2sConfig, ortb2Fragments};\n if (s2sBidRequest.ad_units.length) {\n let doneCbs = uniqueServerRequests.map(bidRequest => {\n bidRequest.start = timestamp();\n return doneCb.bind(bidRequest);\n });\n\n const bidders = getBidderCodes(s2sBidRequest.ad_units).filter((bidder) => adaptersServerSide.includes(bidder));\n logMessage(`CALLING S2S HEADER BIDDERS ==== ${bidders.length > 0 ? bidders.join(', ') : 'No bidder specified, using \"ortb2Imp\" definition(s) only'}`);\n\n // fire BID_REQUESTED event for each s2s bidRequest\n uniqueServerRequests.forEach(bidRequest => {\n // add the new sourceTid\n events.emit(CONSTANTS.EVENTS.BID_REQUESTED, {...bidRequest, tid: bidRequest.auctionId});\n });\n\n // make bid requests\n s2sAdapter.callBids(\n s2sBidRequest,\n serverBidRequests,\n addBidResponse,\n () => doneCbs.forEach(done => done()),\n s2sAjax\n );\n }\n } else {\n logError('missing ' + s2sConfig.adapter);\n }\n counter++;\n }\n });\n\n // handle client adapter requests\n clientBidRequests.forEach(bidRequest => {\n bidRequest.start = timestamp();\n // TODO : Do we check for bid in pool from here and skip calling adapter again ?\n const adapter = _bidderRegistry[bidRequest.bidderCode];\n config.runWithBidder(bidRequest.bidderCode, () => {\n logMessage(`CALLING BIDDER`);\n events.emit(CONSTANTS.EVENTS.BID_REQUESTED, bidRequest);\n });\n let ajax = ajaxBuilder(requestBidsTimeout, requestCallbacks ? {\n request: requestCallbacks.request.bind(null, bidRequest.bidderCode),\n done: requestCallbacks.done\n } : undefined);\n const adapterDone = doneCb.bind(bidRequest);\n try {\n config.runWithBidder(\n bidRequest.bidderCode,\n bind.call(\n adapter.callBids,\n adapter,\n bidRequest,\n addBidResponse,\n adapterDone,\n ajax,\n onTimelyResponse,\n config.callbackWithBidder(bidRequest.bidderCode)\n )\n );\n } catch (e) {\n logError(`${bidRequest.bidderCode} Bid Adapter emitted an uncaught error when parsing their bidRequest`, {e, bidRequest});\n adapterDone();\n }\n });\n};\n\nfunction getSupportedMediaTypes(bidderCode) {\n let supportedMediaTypes = [];\n if (FEATURES.VIDEO && includes(adapterManager.videoAdapters, bidderCode)) supportedMediaTypes.push('video');\n if (FEATURES.NATIVE && includes(nativeAdapters, bidderCode)) supportedMediaTypes.push('native');\n return supportedMediaTypes;\n}\n\nadapterManager.videoAdapters = []; // added by adapterLoader for now\n\nadapterManager.registerBidAdapter = function (bidAdapter, bidderCode, {supportedMediaTypes = []} = {}) {\n if (bidAdapter && bidderCode) {\n if (typeof bidAdapter.callBids === 'function') {\n _bidderRegistry[bidderCode] = bidAdapter;\n GDPR_GVLIDS.register(MODULE_TYPE_BIDDER, bidderCode, bidAdapter.getSpec?.().gvlid);\n\n if (FEATURES.VIDEO && includes(supportedMediaTypes, 'video')) {\n adapterManager.videoAdapters.push(bidderCode);\n }\n if (FEATURES.NATIVE && includes(supportedMediaTypes, 'native')) {\n nativeAdapters.push(bidderCode);\n }\n } else {\n logError('Bidder adaptor error for bidder code: ' + bidderCode + 'bidder must implement a callBids() function');\n }\n } else {\n logError('bidAdapter or bidderCode not specified');\n }\n};\n\nadapterManager.aliasBidAdapter = function (bidderCode, alias, options) {\n let existingAlias = _bidderRegistry[alias];\n\n if (typeof existingAlias === 'undefined') {\n let bidAdapter = _bidderRegistry[bidderCode];\n if (typeof bidAdapter === 'undefined') {\n // check if alias is part of s2sConfig and allow them to register if so (as base bidder may be s2s-only)\n const nonS2SAlias = [];\n _s2sConfigs.forEach(s2sConfig => {\n if (s2sConfig.bidders && s2sConfig.bidders.length) {\n const s2sBidders = s2sConfig && s2sConfig.bidders;\n if (!(s2sConfig && includes(s2sBidders, alias))) {\n nonS2SAlias.push(bidderCode);\n } else {\n _aliasRegistry[alias] = bidderCode;\n }\n }\n });\n nonS2SAlias.forEach(bidderCode => {\n logError('bidderCode \"' + bidderCode + '\" is not an existing bidder.', 'adapterManager.aliasBidAdapter');\n });\n } else {\n try {\n let newAdapter;\n let supportedMediaTypes = getSupportedMediaTypes(bidderCode);\n // Have kept old code to support backward compatibilitiy.\n // Remove this if loop when all adapters are supporting bidderFactory. i.e When Prebid.js is 1.0\n if (bidAdapter.constructor.prototype != Object.prototype) {\n newAdapter = new bidAdapter.constructor();\n newAdapter.setBidderCode(alias);\n } else {\n let spec = bidAdapter.getSpec();\n let gvlid = options && options.gvlid;\n let skipPbsAliasing = options && options.skipPbsAliasing;\n newAdapter = newBidder(Object.assign({}, spec, { code: alias, gvlid, skipPbsAliasing }));\n _aliasRegistry[alias] = bidderCode;\n }\n adapterManager.registerBidAdapter(newAdapter, alias, {\n supportedMediaTypes\n });\n } catch (e) {\n logError(bidderCode + ' bidder does not currently support aliasing.', 'adapterManager.aliasBidAdapter');\n }\n }\n } else {\n logMessage('alias name \"' + alias + '\" has been already specified.');\n }\n};\n\nadapterManager.resolveAlias = function (alias) {\n let code = alias;\n let visited;\n while (_aliasRegistry[code] && (!visited || !visited.has(code))) {\n code = _aliasRegistry[code];\n (visited = visited || new Set()).add(code);\n }\n return code;\n}\n\nadapterManager.registerAnalyticsAdapter = function ({adapter, code, gvlid}) {\n if (adapter && code) {\n if (typeof adapter.enableAnalytics === 'function') {\n adapter.code = code;\n _analyticsRegistry[code] = { adapter, gvlid };\n GDPR_GVLIDS.register(MODULE_TYPE_ANALYTICS, code, gvlid);\n } else {\n logError(`Prebid Error: Analytics adaptor error for analytics \"${code}\"\n analytics adapter must implement an enableAnalytics() function`);\n }\n } else {\n logError('Prebid Error: analyticsAdapter or analyticsCode not specified');\n }\n};\n\nadapterManager.enableAnalytics = function (config) {\n if (!isArray(config)) {\n config = [config];\n }\n\n _each(config, adapterConfig => {\n const entry = _analyticsRegistry[adapterConfig.provider];\n if (entry && entry.adapter) {\n if (dep.isAllowed(ACTIVITY_REPORT_ANALYTICS, activityParams(MODULE_TYPE_ANALYTICS, adapterConfig.provider, {[ACTIVITY_PARAM_ANL_CONFIG]: adapterConfig}))) {\n entry.adapter.enableAnalytics(adapterConfig);\n }\n } else {\n logError(`Prebid Error: no analytics adapter found in registry for '${adapterConfig.provider}'.`);\n }\n });\n}\n\nadapterManager.getBidAdapter = function(bidder) {\n return _bidderRegistry[bidder];\n};\n\nadapterManager.getAnalyticsAdapter = function(code) {\n return _analyticsRegistry[code];\n}\n\nfunction getBidderMethod(bidder, method) {\n const adapter = _bidderRegistry[bidder];\n const spec = adapter?.getSpec && adapter.getSpec();\n if (spec && spec[method] && typeof spec[method] === 'function') {\n return [spec, spec[method]]\n }\n}\n\nfunction invokeBidderMethod(bidder, method, spec, fn, ...params) {\n try {\n logInfo(`Invoking ${bidder}.${method}`);\n config.runWithBidder(bidder, fn.bind(spec, ...params));\n } catch (e) {\n logWarn(`Error calling ${method} of ${bidder}`);\n }\n}\n\nfunction tryCallBidderMethod(bidder, method, param) {\n if (param?.src !== CONSTANTS.S2S.SRC) {\n const target = getBidderMethod(bidder, method);\n if (target != null) {\n invokeBidderMethod(bidder, method, ...target, param);\n }\n }\n}\n\nadapterManager.callTimedOutBidders = function(adUnits, timedOutBidders, cbTimeout) {\n timedOutBidders = timedOutBidders.map((timedOutBidder) => {\n // Adding user configured params & timeout to timeout event data\n timedOutBidder.params = getUserConfiguredParams(adUnits, timedOutBidder.adUnitCode, timedOutBidder.bidder);\n timedOutBidder.timeout = cbTimeout;\n return timedOutBidder;\n });\n timedOutBidders = groupBy(timedOutBidders, 'bidder');\n\n Object.keys(timedOutBidders).forEach((bidder) => {\n tryCallBidderMethod(bidder, 'onTimeout', timedOutBidders[bidder]);\n });\n}\n\nadapterManager.callBidWonBidder = function(bidder, bid, adUnits) {\n // Adding user configured params to bidWon event data\n bid.params = getUserConfiguredParams(adUnits, bid.adUnitCode, bid.bidder);\n adunitCounter.incrementBidderWinsCounter(bid.adUnitCode, bid.bidder);\n tryCallBidderMethod(bidder, 'onBidWon', bid);\n};\n\nadapterManager.callBidBillableBidder = function(bid) {\n tryCallBidderMethod(bid.bidder, 'onBidBillable', bid);\n};\n\nadapterManager.callSetTargetingBidder = function(bidder, bid) {\n tryCallBidderMethod(bidder, 'onSetTargeting', bid);\n};\n\nadapterManager.callBidViewableBidder = function(bidder, bid) {\n tryCallBidderMethod(bidder, 'onBidViewable', bid);\n};\n\nadapterManager.callBidderError = function(bidder, error, bidderRequest) {\n const param = { error, bidderRequest };\n tryCallBidderMethod(bidder, 'onBidderError', param);\n};\n\nfunction resolveAlias(alias) {\n const seen = new Set();\n while (_aliasRegistry.hasOwnProperty(alias) && !seen.has(alias)) {\n seen.add(alias);\n alias = _aliasRegistry[alias];\n }\n return alias;\n}\n/**\n * Ask every adapter to delete PII.\n * See https://github.com/prebid/Prebid.js/issues/9081\n */\nadapterManager.callDataDeletionRequest = hook('sync', function (...args) {\n const method = 'onDataDeletionRequest';\n Object.keys(_bidderRegistry)\n .filter((bidder) => !_aliasRegistry.hasOwnProperty(bidder))\n .forEach(bidder => {\n const target = getBidderMethod(bidder, method);\n if (target != null) {\n const bidderRequests = auctionManager.getBidsRequested().filter((br) =>\n resolveAlias(br.bidderCode) === bidder\n );\n invokeBidderMethod(bidder, method, ...target, bidderRequests, ...args);\n }\n });\n Object.entries(_analyticsRegistry).forEach(([name, entry]) => {\n const fn = entry?.adapter?.[method];\n if (typeof fn === 'function') {\n try {\n fn.apply(entry.adapter, args);\n } catch (e) {\n logError(`error calling ${method} of ${name}`, e);\n }\n }\n });\n});\n\nexport default adapterManager;\n","export default function Adapter(code) {\n var bidderCode = code;\n\n function setBidderCode(code) {\n bidderCode = code;\n }\n\n function getBidderCode() {\n return bidderCode;\n }\n\n function callBids() {\n }\n\n return {\n callBids: callBids,\n setBidderCode: setBidderCode,\n getBidderCode: getBidderCode\n };\n}\n","import Adapter from '../adapter.js';\nimport adapterManager from '../adapterManager.js';\nimport {config} from '../config.js';\nimport {createBid} from '../bidfactory.js';\nimport {userSync} from '../userSync.js';\nimport {nativeBidIsValid} from '../native.js';\nimport {isValidVideoBid} from '../video.js';\nimport CONSTANTS from '../constants.json';\nimport * as events from '../events.js';\nimport {includes} from '../polyfill.js';\nimport {\n delayExecution,\n isArray,\n isPlainObject,\n logError,\n logWarn, memoize,\n parseQueryStringParameters,\n parseSizesInput, pick,\n uniques\n} from '../utils.js';\nimport {hook} from '../hook.js';\nimport {auctionManager} from '../auctionManager.js';\nimport {bidderSettings} from '../bidderSettings.js';\nimport {useMetrics} from '../utils/perfMetrics.js';\nimport {isActivityAllowed} from '../activities/rules.js';\nimport {activityParams} from '../activities/activityParams.js';\nimport {MODULE_TYPE_BIDDER} from '../activities/modules.js';\nimport {ACTIVITY_TRANSMIT_TID, ACTIVITY_TRANSMIT_UFPD} from '../activities/activities.js';\n\n/**\n * This file aims to support Adapters during the Prebid 0.x -> 1.x transition.\n *\n * Prebid 1.x and Prebid 0.x will be in separate branches--perhaps for a long time.\n * This function defines an API for adapter construction which is compatible with both versions.\n * Adapters which use it can maintain their code in master, and only this file will need to change\n * in the 1.x branch.\n *\n * Typical usage looks something like:\n *\n * const adapter = registerBidder({\n * code: 'myBidderCode',\n * aliases: ['alias1', 'alias2'],\n * supportedMediaTypes: ['video', 'native'],\n * isBidRequestValid: function(paramsObject) { return true/false },\n * buildRequests: function(bidRequests, bidderRequest) { return some ServerRequest(s) },\n * interpretResponse: function(oneServerResponse) { return some Bids, or throw an error. }\n * });\n *\n * @see BidderSpec for the full API and more thorough descriptions.\n *\n */\n\n/**\n * @typedef {object} BidderSpec An object containing the adapter-specific functions needed to\n * make a Bidder.\n *\n * @property {string} code A code which will be used to uniquely identify this bidder. This should be the same\n * one as is used in the call to registerBidAdapter\n * @property {string[]} [aliases] A list of aliases which should also resolve to this bidder.\n * @property {MediaType[]} [supportedMediaTypes]: A list of Media Types which the adapter supports.\n * @property {function(object): boolean} isBidRequestValid Determines whether or not the given bid has all the params\n * needed to make a valid request.\n * @property {function(BidRequest[], bidderRequest): ServerRequest|ServerRequest[]} buildRequests Build the request to the Server\n * which requests Bids for the given array of Requests. Each BidRequest in the argument array is guaranteed to have\n * passed the isBidRequestValid() test.\n * @property {function(ServerResponse, BidRequest): Bid[]} interpretResponse Given a successful response from the Server,\n * interpret it and return the Bid objects. This function will be run inside a try/catch.\n * If it throws any errors, your bids will be discarded.\n * @property {function(SyncOptions, ServerResponse[]): UserSync[]} [getUserSyncs] Given an array of all the responses\n * from the server, determine which user syncs should occur. The argument array will contain every element\n * which has been sent through to interpretResponse. The order of syncs in this array matters. The most\n * important ones should come first, since publishers may limit how many are dropped on their page.\n * @property {function(object): object} transformBidParams Updates bid params before creating bid request\n }}\n */\n\n/**\n * @typedef {object} BidRequest\n *\n * @property {string} bidId A string which uniquely identifies this BidRequest in the current Auction.\n * @property {object} params Any bidder-specific params which the publisher used in their bid request.\n */\n\n/**\n * @typedef {object} BidderAuctionResponse An object encapsulating an adapter response for current Auction\n *\n * @property {Array} bids Contextual bids returned by this adapter, if any\n * @property {object|null} fledgeAuctionConfigs Optional FLEDGE response, as a map of impid -> auction_config\n */\n\n/**\n * @typedef {object} ServerRequest\n *\n * @property {('GET'|'POST')} method The type of request which this is.\n * @property {string} url The endpoint for the request. For example, \"//bids.example.com\".\n * @property {string|object} data Data to be sent in the request.\n * @property {object} options Content-Type set in the header of the bid request, overrides default 'text/plain'.\n * If this is a GET request, they'll become query params. If it's a POST request, they'll be added to the body.\n * Strings will be added as-is. Objects will be unpacked into query params based on key/value mappings, or\n * JSON-serialized into the Request body.\n */\n\n/**\n * @typedef {object} ServerResponse\n *\n * @property {*} body The response body. If this is legal JSON, then it will be parsed. Otherwise it'll be a\n * string with the body's content.\n * @property {{get: function(string): string} headers The response headers.\n * Call this like `ServerResponse.headers.get(\"Content-Type\")`\n */\n\n/**\n * @typedef {object} Bid\n *\n * @property {string} requestId The specific BidRequest which this bid is aimed at.\n * This should match the BidRequest.bidId which this Bid targets.\n * @property {string} ad A URL which can be used to load this ad, if it's chosen by the publisher.\n * @property {string} currency The currency code for the cpm value\n * @property {number} cpm The bid price, in US cents per thousand impressions.\n * @property {number} ttl Time-to-live - how long (in seconds) Prebid can use this bid.\n * @property {boolean} netRevenue Boolean defining whether the bid is Net or Gross. The default is true (Net).\n * @property {number} height The height of the ad, in pixels.\n * @property {number} width The width of the ad, in pixels.\n *\n * @property {object} [native] Object for storing native creative assets\n * @property {object} [video] Object for storing video response data\n * @property {object} [meta] Object for storing bid meta data\n * @property {string} [meta.primaryCatId] The IAB primary category ID\n * @property [Renderer] renderer A Renderer which can be used as a default for this bid,\n * if the publisher doesn't override it. This is only relevant for Outstream Video bids.\n */\n\n/**\n * @typedef {Object} SyncOptions\n *\n * An object containing information about usersyncs which the adapter should obey.\n *\n * @property {boolean} iframeEnabled True if iframe usersyncs are allowed, and false otherwise\n * @property {boolean} pixelEnabled True if image usersyncs are allowed, and false otherwise\n */\n\n/**\n * TODO: Move this to the UserSync module after that PR is merged.\n *\n * @typedef {object} UserSync\n *\n * @property {('image'|'iframe')} type The type of user sync to be done.\n * @property {string} url The URL which makes the sync happen.\n */\n\n// common params for all mediaTypes\nconst COMMON_BID_RESPONSE_KEYS = ['cpm', 'ttl', 'creativeId', 'netRevenue', 'currency'];\nconst TIDS = ['auctionId', 'transactionId'];\n\n/**\n * Register a bidder with prebid, using the given spec.\n *\n * If possible, Adapter modules should use this function instead of adapterManager.registerBidAdapter().\n *\n * @param {BidderSpec} spec An object containing the bare-bones functions we need to make a Bidder.\n */\nexport function registerBidder(spec) {\n const mediaTypes = Array.isArray(spec.supportedMediaTypes)\n ? { supportedMediaTypes: spec.supportedMediaTypes }\n : undefined;\n function putBidder(spec) {\n const bidder = newBidder(spec);\n adapterManager.registerBidAdapter(bidder, spec.code, mediaTypes);\n }\n\n putBidder(spec);\n if (Array.isArray(spec.aliases)) {\n spec.aliases.forEach(alias => {\n let aliasCode = alias;\n let gvlid;\n let skipPbsAliasing;\n if (isPlainObject(alias)) {\n aliasCode = alias.code;\n gvlid = alias.gvlid;\n skipPbsAliasing = alias.skipPbsAliasing\n }\n adapterManager.aliasRegistry[aliasCode] = spec.code;\n putBidder(Object.assign({}, spec, { code: aliasCode, gvlid, skipPbsAliasing }));\n });\n }\n}\n\nexport function guardTids(bidderCode) {\n if (isActivityAllowed(ACTIVITY_TRANSMIT_TID, activityParams(MODULE_TYPE_BIDDER, bidderCode))) {\n return {\n bidRequest: (br) => br,\n bidderRequest: (br) => br\n };\n }\n function get(target, prop, receiver) {\n if (TIDS.includes(prop)) {\n return null;\n }\n return Reflect.get(target, prop, receiver);\n }\n function privateAccessProxy(target, handler) {\n const proxy = new Proxy(target, handler);\n // always allow methods (such as getFloor) private access to TIDs\n Object.entries(target)\n .filter(([_, v]) => typeof v === 'function')\n .forEach(([prop, fn]) => proxy[prop] = fn.bind(target));\n return proxy;\n }\n const bidRequest = memoize((br) => privateAccessProxy(br, {get}), (arg) => arg.bidId);\n /**\n * Return a view on bidd(er) requests where auctionId/transactionId are nulled if the bidder is not allowed `transmitTid`.\n *\n * Because both auctionId and transactionId are used for Prebid's own internal bookkeeping, we cannot simply erase them\n * from request objects; and because request objects are quite complex and not easily cloneable, we hide the IDs\n * with a proxy instead. This should be used only around the adapter logic.\n */\n return {\n bidRequest,\n bidderRequest: (br) => privateAccessProxy(br, {\n get(target, prop, receiver) {\n if (prop === 'bids') return br.bids.map(bidRequest);\n return get(target, prop, receiver);\n }\n })\n }\n}\n\n/**\n * Make a new bidder from the given spec. This is exported mainly for testing.\n * Adapters will probably find it more convenient to use registerBidder instead.\n *\n * @param {BidderSpec} spec\n */\nexport function newBidder(spec) {\n return Object.assign(new Adapter(spec.code), {\n getSpec: function() {\n return Object.freeze(Object.assign({}, spec));\n },\n registerSyncs,\n callBids: function(bidderRequest, addBidResponse, done, ajax, onTimelyResponse, configEnabledCallback) {\n if (!Array.isArray(bidderRequest.bids)) {\n return;\n }\n const tidGuard = guardTids(bidderRequest.bidderCode);\n\n const adUnitCodesHandled = {};\n function addBidWithCode(adUnitCode, bid) {\n const metrics = useMetrics(bid.metrics);\n metrics.checkpoint('addBidResponse');\n adUnitCodesHandled[adUnitCode] = true;\n if (metrics.measureTime('addBidResponse.validate', () => isValid(adUnitCode, bid))) {\n addBidResponse(adUnitCode, bid);\n } else {\n addBidResponse.reject(adUnitCode, bid, CONSTANTS.REJECTION_REASON.INVALID)\n }\n }\n\n // After all the responses have come back, call done() and\n // register any required usersync pixels.\n const responses = [];\n function afterAllResponses() {\n done();\n config.runWithBidder(spec.code, () => {\n events.emit(CONSTANTS.EVENTS.BIDDER_DONE, bidderRequest);\n registerSyncs(responses, bidderRequest.gdprConsent, bidderRequest.uspConsent, bidderRequest.gppConsent);\n });\n }\n\n const validBidRequests = adapterMetrics(bidderRequest)\n .measureTime('validate', () => bidderRequest.bids.filter((br) => filterAndWarn(tidGuard.bidRequest(br))));\n\n if (validBidRequests.length === 0) {\n afterAllResponses();\n return;\n }\n const bidRequestMap = {};\n validBidRequests.forEach(bid => {\n bidRequestMap[bid.bidId] = bid;\n // Delete this once we are 1.0\n if (!bid.adUnitCode) {\n bid.adUnitCode = bid.placementCode\n }\n });\n\n processBidderRequests(spec, validBidRequests.map(tidGuard.bidRequest), tidGuard.bidderRequest(bidderRequest), ajax, configEnabledCallback, {\n onRequest: requestObject => events.emit(CONSTANTS.EVENTS.BEFORE_BIDDER_HTTP, bidderRequest, requestObject),\n onResponse: (resp) => {\n onTimelyResponse(spec.code);\n responses.push(resp)\n },\n /** Process eventual BidderAuctionResponse.fledgeAuctionConfig field in response.\n * @param {Array} fledgeAuctionConfigs\n */\n onFledgeAuctionConfigs: (fledgeAuctionConfigs) => {\n fledgeAuctionConfigs.forEach((fledgeAuctionConfig) => {\n const bidRequest = bidRequestMap[fledgeAuctionConfig.bidId];\n if (bidRequest) {\n addComponentAuction(bidRequest.adUnitCode, fledgeAuctionConfig.config);\n } else {\n logWarn('Received fledge auction configuration for an unknown bidId', fledgeAuctionConfig);\n }\n });\n },\n // If the server responds with an error, there's not much we can do beside logging.\n onError: (errorMessage, error) => {\n onTimelyResponse(spec.code);\n adapterManager.callBidderError(spec.code, error, bidderRequest)\n events.emit(CONSTANTS.EVENTS.BIDDER_ERROR, { error, bidderRequest });\n logError(`Server call for ${spec.code} failed: ${errorMessage} ${error.status}. Continuing without bids.`);\n },\n onBid: (bid) => {\n const bidRequest = bidRequestMap[bid.requestId];\n if (bidRequest) {\n bid.adapterCode = bidRequest.bidder;\n if (isInvalidAlternateBidder(bid.bidderCode, bidRequest.bidder)) {\n logWarn(`${bid.bidderCode} is not a registered partner or known bidder of ${bidRequest.bidder}, hence continuing without bid. If you wish to support this bidder, please mark allowAlternateBidderCodes as true in bidderSettings.`);\n addBidResponse.reject(bidRequest.adUnitCode, bid, CONSTANTS.REJECTION_REASON.BIDDER_DISALLOWED)\n return;\n }\n // creating a copy of original values as cpm and currency are modified later\n bid.originalCpm = bid.cpm;\n bid.originalCurrency = bid.currency;\n bid.meta = bid.meta || Object.assign({}, bid[bidRequest.bidder]);\n const prebidBid = Object.assign(createBid(CONSTANTS.STATUS.GOOD, bidRequest), bid, pick(bidRequest, TIDS));\n addBidWithCode(bidRequest.adUnitCode, prebidBid);\n } else {\n logWarn(`Bidder ${spec.code} made bid for unknown request ID: ${bid.requestId}. Ignoring.`);\n addBidResponse.reject(null, bid, CONSTANTS.REJECTION_REASON.INVALID_REQUEST_ID);\n }\n },\n onCompletion: afterAllResponses,\n });\n }\n });\n\n function isInvalidAlternateBidder(responseBidder, requestBidder) {\n let allowAlternateBidderCodes = bidderSettings.get(requestBidder, 'allowAlternateBidderCodes') || false;\n let alternateBiddersList = bidderSettings.get(requestBidder, 'allowedAlternateBidderCodes');\n if (!!responseBidder && !!requestBidder && requestBidder !== responseBidder) {\n alternateBiddersList = isArray(alternateBiddersList) ? alternateBiddersList.map(val => val.trim().toLowerCase()).filter(val => !!val).filter(uniques) : alternateBiddersList;\n if (!allowAlternateBidderCodes || (isArray(alternateBiddersList) && (alternateBiddersList[0] !== '*' && !alternateBiddersList.includes(responseBidder)))) {\n return true;\n }\n }\n\n return false;\n }\n\n function registerSyncs(responses, gdprConsent, uspConsent, gppConsent) {\n registerSyncInner(spec, responses, gdprConsent, uspConsent, gppConsent);\n }\n\n function filterAndWarn(bid) {\n if (!spec.isBidRequestValid(bid)) {\n logWarn(`Invalid bid sent to bidder ${spec.code}: ${JSON.stringify(bid)}`);\n return false;\n }\n return true;\n }\n}\n\n/**\n * Run a set of bid requests - that entails converting them to HTTP requests, sending\n * them over the network, and parsing the responses.\n *\n * @param spec bid adapter spec\n * @param bids bid requests to run\n * @param bidderRequest the bid request object that `bids` is connected to\n * @param ajax ajax method to use\n * @param wrapCallback {function(callback)} a function used to wrap every callback (for the purpose of `config.currentBidder`)\n * @param onRequest {function({})} invoked once for each HTTP request built by the adapter - with the raw request\n * @param onResponse {function({})} invoked once on each successful HTTP response - with the raw response\n * @param onError {function(String, {})} invoked once for each HTTP error - with status code and response\n * @param onBid {function({})} invoked once for each bid in the response - with the bid as returned by interpretResponse\n * @param onCompletion {function()} invoked once when all bid requests have been processed\n */\nexport const processBidderRequests = hook('sync', function (spec, bids, bidderRequest, ajax, wrapCallback, {onRequest, onResponse, onFledgeAuctionConfigs, onError, onBid, onCompletion}) {\n const metrics = adapterMetrics(bidderRequest);\n onCompletion = metrics.startTiming('total').stopBefore(onCompletion);\n\n let requests = metrics.measureTime('buildRequests', () => spec.buildRequests(bids, bidderRequest));\n\n if (!requests || requests.length === 0) {\n onCompletion();\n return;\n }\n if (!Array.isArray(requests)) {\n requests = [requests];\n }\n\n const requestDone = delayExecution(onCompletion, requests.length);\n\n requests.forEach((request) => {\n const requestMetrics = metrics.fork();\n function addBid(bid) {\n if (bid != null) bid.metrics = requestMetrics.fork().renameWith();\n onBid(bid);\n }\n // If the server responds successfully, use the adapter code to unpack the Bids from it.\n // If the adapter code fails, no bids should be added. After all the bids have been added,\n // make sure to call the `requestDone` function so that we're one step closer to calling onCompletion().\n const onSuccess = wrapCallback(function(response, responseObj) {\n networkDone();\n try {\n response = JSON.parse(response);\n } catch (e) { /* response might not be JSON... that's ok. */ }\n\n // Make response headers available for #1742. These are lazy-loaded because most adapters won't need them.\n response = {\n body: response,\n headers: headerParser(responseObj)\n };\n onResponse(response);\n\n try {\n response = requestMetrics.measureTime('interpretResponse', () => spec.interpretResponse(response, request));\n } catch (err) {\n logError(`Bidder ${spec.code} failed to interpret the server's response. Continuing without bids`, null, err);\n requestDone();\n return;\n }\n\n let bids;\n // Extract additional data from a structured {BidderAuctionResponse} response\n if (response && isArray(response.fledgeAuctionConfigs)) {\n onFledgeAuctionConfigs(response.fledgeAuctionConfigs);\n bids = response.bids;\n } else {\n bids = response;\n }\n\n if (bids) {\n if (isArray(bids)) {\n bids.forEach(addBid);\n } else {\n addBid(bids);\n }\n }\n requestDone();\n\n function headerParser(xmlHttpResponse) {\n return {\n get: responseObj.getResponseHeader.bind(responseObj)\n };\n }\n });\n\n const onFailure = wrapCallback(function (errorMessage, error) {\n networkDone();\n onError(errorMessage, error);\n requestDone();\n });\n\n onRequest(request);\n\n const networkDone = requestMetrics.startTiming('net');\n\n function getOptions(defaults) {\n const ro = request.options;\n return Object.assign(defaults, ro, {\n browsingTopics: ro?.hasOwnProperty('browsingTopics') && !ro.browsingTopics\n ? false\n : isActivityAllowed(ACTIVITY_TRANSMIT_UFPD, activityParams(MODULE_TYPE_BIDDER, spec.code))\n })\n }\n switch (request.method) {\n case 'GET':\n ajax(\n `${request.url}${formatGetParameters(request.data)}`,\n {\n success: onSuccess,\n error: onFailure\n },\n undefined,\n getOptions({\n method: 'GET',\n withCredentials: true\n })\n );\n break;\n case 'POST':\n ajax(\n request.url,\n {\n success: onSuccess,\n error: onFailure\n },\n typeof request.data === 'string' ? request.data : JSON.stringify(request.data),\n getOptions({\n method: 'POST',\n contentType: 'text/plain',\n withCredentials: true\n })\n );\n break;\n default:\n logWarn(`Skipping invalid request from ${spec.code}. Request type ${request.type} must be GET or POST`);\n requestDone();\n }\n\n function formatGetParameters(data) {\n if (data) {\n return `?${typeof data === 'object' ? parseQueryStringParameters(data) : data}`;\n }\n\n return '';\n }\n })\n}, 'processBidderRequests')\n\nexport const registerSyncInner = hook('async', function(spec, responses, gdprConsent, uspConsent, gppConsent) {\n const aliasSyncEnabled = config.getConfig('userSync.aliasSyncEnabled');\n if (spec.getUserSyncs && (aliasSyncEnabled || !adapterManager.aliasRegistry[spec.code])) {\n let filterConfig = config.getConfig('userSync.filterSettings');\n let syncs = spec.getUserSyncs({\n iframeEnabled: !!(filterConfig && (filterConfig.iframe || filterConfig.all)),\n pixelEnabled: !!(filterConfig && (filterConfig.image || filterConfig.all)),\n }, responses, gdprConsent, uspConsent, gppConsent);\n if (syncs) {\n if (!Array.isArray(syncs)) {\n syncs = [syncs];\n }\n syncs.forEach((sync) => {\n userSync.registerSync(sync.type, spec.code, sync.url)\n });\n userSync.bidderDone(spec.code);\n }\n }\n}, 'registerSyncs')\n\nexport const addComponentAuction = hook('sync', (adUnitCode, fledgeAuctionConfig) => {\n}, 'addComponentAuction');\n\n// check that the bid has a width and height set\nfunction validBidSize(adUnitCode, bid, {index = auctionManager.index} = {}) {\n if ((bid.width || parseInt(bid.width, 10) === 0) && (bid.height || parseInt(bid.height, 10) === 0)) {\n bid.width = parseInt(bid.width, 10);\n bid.height = parseInt(bid.height, 10);\n return true;\n }\n\n const bidRequest = index.getBidRequest(bid);\n const mediaTypes = index.getMediaTypes(bid);\n\n const sizes = (bidRequest && bidRequest.sizes) || (mediaTypes && mediaTypes.banner && mediaTypes.banner.sizes);\n const parsedSizes = parseSizesInput(sizes);\n\n // if a banner impression has one valid size, we assign that size to any bid\n // response that does not explicitly set width or height\n if (parsedSizes.length === 1) {\n const [ width, height ] = parsedSizes[0].split('x');\n bid.width = parseInt(width, 10);\n bid.height = parseInt(height, 10);\n return true;\n }\n\n return false;\n}\n\n// Validate the arguments sent to us by the adapter. If this returns false, the bid should be totally ignored.\nexport function isValid(adUnitCode, bid, {index = auctionManager.index} = {}) {\n function hasValidKeys() {\n let bidKeys = Object.keys(bid);\n return COMMON_BID_RESPONSE_KEYS.every(key => includes(bidKeys, key) && !includes([undefined, null], bid[key]));\n }\n\n function errorMessage(msg) {\n return `Invalid bid from ${bid.bidderCode}. Ignoring bid: ${msg}`;\n }\n\n if (!adUnitCode) {\n logWarn('No adUnitCode was supplied to addBidResponse.');\n return false;\n }\n\n if (!bid) {\n logWarn(`Some adapter tried to add an undefined bid for ${adUnitCode}.`);\n return false;\n }\n\n if (!hasValidKeys()) {\n logError(errorMessage(`Bidder ${bid.bidderCode} is missing required params. Check http://prebid.org/dev-docs/bidder-adapter-1.html for list of params.`));\n return false;\n }\n\n if (FEATURES.NATIVE && bid.mediaType === 'native' && !nativeBidIsValid(bid, {index})) {\n logError(errorMessage('Native bid missing some required properties.'));\n return false;\n }\n if (FEATURES.VIDEO && bid.mediaType === 'video' && !isValidVideoBid(bid, {index})) {\n logError(errorMessage(`Video bid does not have required vastUrl or renderer property`));\n return false;\n }\n if (bid.mediaType === 'banner' && !validBidSize(adUnitCode, bid, {index})) {\n logError(errorMessage(`Banner bids require a width and height`));\n return false;\n }\n\n return true;\n}\n\nfunction adapterMetrics(bidderRequest) {\n return useMetrics(bidderRequest.metrics).renameWith(n => [`adapter.client.${n}`, `adapters.client.${bidderRequest.bidderCode}.${n}`])\n}\n","import {includes} from './polyfill.js';\nimport { logError, logWarn, insertElement, setScriptAttributes } from './utils.js';\n\nconst _requestCache = new WeakMap();\n// The below list contains modules or vendors whom Prebid allows to load external JS.\nconst _approvedLoadExternalJSList = [\n 'debugging',\n 'adloox',\n 'criteo',\n 'outstream',\n 'adagio',\n 'spotx',\n 'browsi',\n 'brandmetrics',\n 'justtag',\n 'tncId',\n 'akamaidap',\n 'ftrackId',\n 'inskin',\n 'hadron',\n 'medianet',\n 'improvedigital',\n 'aaxBlockmeter',\n 'confiant',\n 'arcspan',\n 'airgrid',\n 'clean.io',\n 'a1Media',\n 'geoedge',\n]\n\n/**\n * Loads external javascript. Can only be used if external JS is approved by Prebid. See https://github.com/prebid/prebid-js-external-js-template#policy\n * Each unique URL will be loaded at most 1 time.\n * @param {string} url the url to load\n * @param {string} moduleCode bidderCode or module code of the module requesting this resource\n * @param {function} [callback] callback function to be called after the script is loaded\n * @param {Document} [doc] the context document, in which the script will be loaded, defaults to loaded document\n * @param {object} an object of attributes to be added to the script with setAttribute by [key] and [value]; Only the attributes passed in the first request of a url will be added.\n */\nexport function loadExternalScript(url, moduleCode, callback, doc, attributes) {\n if (!moduleCode || !url) {\n logError('cannot load external script without url and moduleCode');\n return;\n }\n if (!includes(_approvedLoadExternalJSList, moduleCode)) {\n logError(`${moduleCode} not whitelisted for loading external JavaScript`);\n return;\n }\n if (!doc) {\n doc = document; // provide a \"valid\" key for the WeakMap\n }\n // only load each asset once\n const storedCachedObject = getCacheObject(doc, url);\n if (storedCachedObject) {\n if (callback && typeof callback === 'function') {\n if (storedCachedObject.loaded) {\n // invokeCallbacks immediately\n callback();\n } else {\n // queue the callback\n storedCachedObject.callbacks.push(callback);\n }\n }\n return storedCachedObject.tag;\n }\n const cachedDocObj = _requestCache.get(doc) || {};\n const cacheObject = {\n loaded: false,\n tag: null,\n callbacks: []\n };\n cachedDocObj[url] = cacheObject;\n _requestCache.set(doc, cachedDocObj);\n\n if (callback && typeof callback === 'function') {\n cacheObject.callbacks.push(callback);\n }\n\n logWarn(`module ${moduleCode} is loading external JavaScript`);\n return requestResource(url, function () {\n cacheObject.loaded = true;\n try {\n for (let i = 0; i < cacheObject.callbacks.length; i++) {\n cacheObject.callbacks[i]();\n }\n } catch (e) {\n logError('Error executing callback', 'adloader.js:loadExternalScript', e);\n }\n }, doc, attributes);\n\n function requestResource(tagSrc, callback, doc, attributes) {\n if (!doc) {\n doc = document;\n }\n var jptScript = doc.createElement('script');\n jptScript.type = 'text/javascript';\n jptScript.async = true;\n\n const cacheObject = getCacheObject(doc, url);\n if (cacheObject) {\n cacheObject.tag = jptScript;\n }\n\n if (jptScript.readyState) {\n jptScript.onreadystatechange = function () {\n if (jptScript.readyState === 'loaded' || jptScript.readyState === 'complete') {\n jptScript.onreadystatechange = null;\n callback();\n }\n };\n } else {\n jptScript.onload = function () {\n callback();\n };\n }\n\n jptScript.src = tagSrc;\n\n if (attributes) {\n setScriptAttributes(jptScript, attributes);\n }\n\n // add the new script tag to the page\n insertElement(jptScript, doc);\n\n return jptScript;\n }\n function getCacheObject(doc, url) {\n const cachedDocObj = _requestCache.get(doc);\n if (cachedDocObj && cachedDocObj[url]) {\n return cachedDocObj[url];\n }\n return null; // return new cache object?\n }\n};\n","import {config} from './config.js';\nimport {buildUrl, logError, parseUrl} from './utils.js';\n\nexport const dep = {\n fetch: window.fetch.bind(window),\n makeRequest: (r, o) => new Request(r, o),\n timeout(timeout, resource) {\n const ctl = new AbortController();\n let cancelTimer = setTimeout(() => {\n ctl.abort();\n logError(`Request timeout after ${timeout}ms`, resource);\n cancelTimer = null;\n }, timeout);\n return {\n signal: ctl.signal,\n done() {\n cancelTimer && clearTimeout(cancelTimer)\n }\n }\n }\n}\n\nconst GET = 'GET';\nconst POST = 'POST';\nconst CTYPE = 'Content-Type';\n\n/**\n * transform legacy `ajax` parameters into a fetch request.\n * @returns {Request}\n */\nexport function toFetchRequest(url, data, options = {}) {\n const method = options.method || (data ? POST : GET);\n if (method === GET && data) {\n const urlInfo = parseUrl(url, options);\n Object.assign(urlInfo.search, data);\n url = buildUrl(urlInfo);\n }\n const headers = new Headers(options.customHeaders);\n headers.set(CTYPE, options.contentType || 'text/plain');\n const rqOpts = {\n method,\n headers\n }\n if (method !== GET && data) {\n rqOpts.body = data;\n }\n if (options.withCredentials) {\n rqOpts.credentials = 'include';\n }\n if (options.browsingTopics && isSecureContext) {\n // the Request constructor will throw an exception if the browser supports topics\n // but we're not in a secure context\n rqOpts.browsingTopics = true;\n }\n return dep.makeRequest(url, rqOpts);\n}\n\n/**\n * Return a version of `fetch` that automatically cancels requests after `timeout` milliseconds.\n *\n * If provided, `request` and `done` should be functions accepting a single argument.\n * `request` is invoked at the beginning of each request, and `done` at the end; both are passed its origin.\n *\n * @returns {function(*, {}?): Promise}\n */\nexport function fetcherFactory(timeout = 3000, {request, done} = {}) {\n let fetcher = (resource, options) => {\n let to;\n if (timeout != null && options?.signal == null && !config.getConfig('disableAjaxTimeout')) {\n to = dep.timeout(timeout, resource);\n options = Object.assign({signal: to.signal}, options);\n }\n let pm = dep.fetch(resource, options);\n if (to?.done != null) pm = pm.finally(to.done);\n return pm;\n };\n\n if (request != null || done != null) {\n fetcher = ((fetch) => function (resource, options) {\n const origin = new URL(resource?.url == null ? resource : resource.url, document.location).origin;\n let req = fetch(resource, options);\n request && request(origin);\n if (done) req = req.finally(() => done(origin));\n return req;\n })(fetcher);\n }\n return fetcher;\n}\n\nfunction toXHR({status, statusText = '', headers, url}, responseText) {\n let xml = 0;\n return {\n readyState: XMLHttpRequest.DONE,\n status,\n statusText,\n responseText,\n response: responseText,\n responseType: '',\n responseURL: url,\n get responseXML() {\n if (xml === 0) {\n try {\n xml = new DOMParser().parseFromString(responseText, headers?.get(CTYPE)?.split(';')?.[0])\n } catch (e) {\n xml = null;\n logError(e);\n }\n }\n return xml;\n },\n getResponseHeader: (header) => headers?.has(header) ? headers.get(header) : null,\n }\n}\n\n/**\n * attach legacy `ajax` callbacks to a fetch promise.\n */\nexport function attachCallbacks(fetchPm, callback) {\n const {success, error} = typeof callback === 'object' && callback != null ? callback : {\n success: typeof callback === 'function' ? callback : () => null,\n error: (e, x) => logError('Network error', e, x)\n };\n fetchPm.then(response => response.text().then((responseText) => [response, responseText]))\n .then(([response, responseText]) => {\n const xhr = toXHR(response, responseText);\n response.ok || response.status === 304 ? success(responseText, xhr) : error(response.statusText, xhr);\n }, () => error('', toXHR({status: 0}, '')));\n}\n\nexport function ajaxBuilder(timeout = 3000, {request, done} = {}) {\n const fetcher = fetcherFactory(timeout, {request, done});\n return function (url, callback, data, options = {}) {\n attachCallbacks(fetcher(toFetchRequest(url, data, options)), callback);\n };\n}\n\nexport const ajax = ajaxBuilder();\nexport const fetch = fetcherFactory();\n","/**\n * This module interacts with the server used to cache video ad content to be restored later.\n * At a high level, the expected workflow goes like this:\n *\n * - Request video ads from Bidders\n * - Generate IDs for each valid bid, and cache the key/value pair on the server.\n * - Return these IDs so that publishers can use them to fetch the bids later.\n *\n * This trickery helps integrate with ad servers, which set character limits on request params.\n */\n\nimport {ajaxBuilder} from './ajax.js';\nimport {config} from './config.js';\nimport {auctionManager} from './auctionManager.js';\n\n/**\n * Might be useful to be configurable in the future\n * Depending on publisher needs\n */\nconst ttlBufferInSeconds = 15;\n\n/**\n * @typedef {object} CacheableUrlBid\n * @property {string} vastUrl A URL which loads some valid VAST XML.\n */\n\n/**\n * @typedef {object} CacheablePayloadBid\n * @property {string} vastXml Some VAST XML which loads an ad in a video player.\n */\n\n/**\n * A CacheableBid describes the types which the videoCache can store.\n *\n * @typedef {CacheableUrlBid|CacheablePayloadBid} CacheableBid\n */\n\n/**\n * Function which wraps a URI that serves VAST XML, so that it can be loaded.\n *\n * @param {string} uri The URI where the VAST content can be found.\n * @param {string} impUrl An impression tracker URL for the delivery of the video ad\n * @return A VAST URL which loads XML from the given URI.\n */\nfunction wrapURI(uri, impUrl) {\n // Technically, this is vulnerable to cross-script injection by sketchy vastUrl bids.\n // We could make sure it's a valid URI... but since we're loading VAST XML from the\n // URL they provide anyway, that's probably not a big deal.\n let vastImp = (impUrl) ? `` : ``;\n return `\n \n \n prebid.org wrapper\n \n ${vastImp}\n \n \n \n `;\n}\n\n/**\n * Wraps a bid in the format expected by the prebid-server endpoints, or returns null if\n * the bid can't be converted cleanly.\n *\n * @param {CacheableBid} bid\n * @param index\n */\nfunction toStorageRequest(bid, {index = auctionManager.index} = {}) {\n const vastValue = bid.vastXml ? bid.vastXml : wrapURI(bid.vastUrl, bid.vastImpUrl);\n const auction = index.getAuction(bid);\n const ttlWithBuffer = Number(bid.ttl) + ttlBufferInSeconds;\n let payload = {\n type: 'xml',\n value: vastValue,\n ttlseconds: ttlWithBuffer\n };\n\n if (config.getConfig('cache.vasttrack')) {\n payload.bidder = bid.bidder;\n payload.bidid = bid.requestId;\n payload.aid = bid.auctionId;\n }\n\n if (auction != null) {\n payload.timestamp = auction.getAuctionStart();\n }\n\n if (typeof bid.customCacheKey === 'string' && bid.customCacheKey !== '') {\n payload.key = bid.customCacheKey;\n }\n\n return payload;\n}\n\n/**\n * A function which should be called with the results of the storage operation.\n *\n * @callback videoCacheStoreCallback\n *\n * @param {Error} [error] The error, if one occurred.\n * @param {?string[]} uuids An array of unique IDs. The array will have one element for each bid we were asked\n * to store. It may include null elements if some of the bids were malformed, or an error occurred.\n * Each non-null element in this array is a valid input into the retrieve function, which will fetch\n * some VAST XML which can be used to render this bid's ad.\n */\n\n/**\n * A function which bridges the APIs between the videoCacheStoreCallback and our ajax function's API.\n *\n * @param {videoCacheStoreCallback} done A callback to the \"store\" function.\n * @return {Function} A callback which interprets the cache server's responses, and makes up the right\n * arguments for our callback.\n */\nfunction shimStorageCallback(done) {\n return {\n success: function (responseBody) {\n let ids;\n try {\n ids = JSON.parse(responseBody).responses\n } catch (e) {\n done(e, []);\n return;\n }\n\n if (ids) {\n done(null, ids);\n } else {\n done(new Error(\"The cache server didn't respond with a responses property.\"), []);\n }\n },\n error: function (statusText, responseBody) {\n done(new Error(`Error storing video ad in the cache: ${statusText}: ${JSON.stringify(responseBody)}`), []);\n }\n }\n}\n\n/**\n * If the given bid is for a Video ad, generate a unique ID and cache it somewhere server-side.\n *\n * @param {CacheableBid[]} bids A list of bid objects which should be cached.\n * @param {videoCacheStoreCallback} [done] An optional callback which should be executed after\n * the data has been stored in the cache.\n */\nexport function store(bids, done, getAjax = ajaxBuilder) {\n const requestData = {\n puts: bids.map(toStorageRequest)\n };\n const ajax = getAjax(config.getConfig('cache.timeout'));\n ajax(config.getConfig('cache.url'), shimStorageCallback(done), JSON.stringify(requestData), {\n contentType: 'text/plain',\n withCredentials: true\n });\n}\n\nexport function getCacheUrl(id) {\n return `${config.getConfig('cache.url')}?uuid=${id}`;\n}\n","/**\n * Module for auction instances.\n *\n * In Prebid 0.x, $$PREBID_GLOBAL$$ had _bidsRequested and _bidsReceived as public properties.\n * Starting 1.0, Prebid will support concurrent auctions. Each auction instance will store private properties, bidsRequested and bidsReceived.\n *\n * AuctionManager will create an instance of auction and will store all the auctions.\n *\n */\n\n/**\n * @typedef {Object} AdUnit An object containing the adUnit configuration.\n *\n * @property {string} code A code which will be used to uniquely identify this bidder. This should be the same\n * one as is used in the call to registerBidAdapter\n * @property {Array.} sizes A list of size for adUnit.\n * @property {object} params Any bidder-specific params which the publisher used in their bid request.\n * This is guaranteed to have passed the spec.areParamsValid() test.\n */\n\n/**\n * @typedef {Array.} size\n */\n\n/**\n * @typedef {Array.} AdUnitCode\n */\n\n/**\n * @typedef {Object} BidderRequest\n *\n * @property {string} bidderCode - adUnit bidder\n * @property {number} auctionId - random UUID\n * @property {string} bidderRequestId - random string, unique key set on all bidRequest.bids[]\n * @property {Array.} bids\n * @property {number} auctionStart - Date.now() at auction start\n * @property {number} timeout - callback timeout\n * @property {refererInfo} refererInfo - referer info object\n * @property {string} [tid] - random UUID (used for s2s)\n * @property {string} [src] - s2s or client (used for s2s)\n */\n\n/**\n * @typedef {Object} BidReceived\n * //TODO add all properties\n */\n\n/**\n * @typedef {Object} Auction\n *\n * @property {function(): string} getAuctionStatus - returns the auction status which can be any one of 'started', 'in progress' or 'completed'\n * @property {function(): AdUnit[]} getAdUnits - return the adUnits for this auction instance\n * @property {function(): AdUnitCode[]} getAdUnitCodes - return the adUnitCodes for this auction instance\n * @property {function(): BidRequest[]} getBidRequests - get all bid requests for this auction instance\n * @property {function(): BidReceived[]} getBidsReceived - get all bid received for this auction instance\n * @property {function(): void} startAuctionTimer - sets the bidsBackHandler callback and starts the timer for auction\n * @property {function(): void} callBids - sends requests to all adapters for bids\n */\n\nimport {\n _each,\n adUnitsFilter,\n bind,\n deepAccess,\n flatten,\n generateUUID,\n getValue,\n isEmpty,\n isEmptyStr,\n isFn,\n logError,\n logInfo,\n logMessage,\n logWarn,\n parseUrl,\n timestamp\n} from './utils.js';\nimport {getPriceBucketString} from './cpmBucketManager.js';\nimport {getNativeTargeting, toLegacyResponse} from './native.js';\nimport {getCacheUrl, store} from './videoCache.js';\nimport {Renderer} from './Renderer.js';\nimport {config} from './config.js';\nimport {userSync} from './userSync.js';\nimport {hook} from './hook.js';\nimport {find, includes} from './polyfill.js';\nimport {OUTSTREAM} from './video.js';\nimport {VIDEO} from './mediaTypes.js';\nimport {auctionManager} from './auctionManager.js';\nimport {bidderSettings} from './bidderSettings.js';\nimport * as events from './events.js';\nimport adapterManager from './adapterManager.js';\nimport CONSTANTS from './constants.json';\nimport {GreedyPromise} from './utils/promise.js';\nimport {useMetrics} from './utils/perfMetrics.js';\nimport {adjustCpm} from './utils/cpm.js';\nimport {getGlobal} from './prebidGlobal.js';\n\nconst { syncUsers } = userSync;\n\nexport const AUCTION_STARTED = 'started';\nexport const AUCTION_IN_PROGRESS = 'inProgress';\nexport const AUCTION_COMPLETED = 'completed';\n\n// register event for bid adjustment\nevents.on(CONSTANTS.EVENTS.BID_ADJUSTMENT, function (bid) {\n adjustBids(bid);\n});\n\nconst MAX_REQUESTS_PER_ORIGIN = 4;\nconst outstandingRequests = {};\nconst sourceInfo = {};\nconst queuedCalls = [];\n\nconst pbjsInstance = getGlobal();\n\n/**\n * Clear global state for tests\n */\nexport function resetAuctionState() {\n queuedCalls.length = 0;\n [outstandingRequests, sourceInfo].forEach((ob) => Object.keys(ob).forEach((k) => { delete ob[k] }));\n}\n\n/**\n * Creates new auction instance\n *\n * @param {Object} requestConfig\n * @param {AdUnit} requestConfig.adUnits\n * @param {AdUnitCode} requestConfig.adUnitCodes\n * @param {function():void} requestConfig.callback\n * @param {number} requestConfig.cbTimeout\n * @param {Array.} requestConfig.labels\n * @param {string} requestConfig.auctionId\n * @param {{global: {}, bidder: {}}} ortb2Fragments first party data, separated into global\n * (from getConfig('ortb2') + requestBids({ortb2})) and bidder (a map from bidderCode to ortb2)\n * @returns {Auction} auction instance\n */\nexport function newAuction({adUnits, adUnitCodes, callback, cbTimeout, labels, auctionId, ortb2Fragments, metrics}) {\n metrics = useMetrics(metrics);\n const _adUnits = adUnits;\n const _labels = labels;\n const _adUnitCodes = adUnitCodes;\n const _auctionId = auctionId || generateUUID();\n const _timeout = cbTimeout;\n const _timelyBidders = new Set();\n let _bidsRejected = [];\n let _callback = callback;\n let _bidderRequests = [];\n let _bidsReceived = [];\n let _noBids = [];\n let _winningBids = [];\n let _auctionStart;\n let _auctionEnd;\n let _timer;\n let _auctionStatus;\n let _nonBids = [];\n\n function addBidRequests(bidderRequests) { _bidderRequests = _bidderRequests.concat(bidderRequests); }\n function addBidReceived(bidsReceived) { _bidsReceived = _bidsReceived.concat(bidsReceived); }\n function addBidRejected(bidsRejected) { _bidsRejected = _bidsRejected.concat(bidsRejected); }\n function addNoBid(noBid) { _noBids = _noBids.concat(noBid); }\n function addNonBids(seatnonbids) { _nonBids = _nonBids.concat(seatnonbids); }\n\n function getProperties() {\n return {\n auctionId: _auctionId,\n timestamp: _auctionStart,\n auctionEnd: _auctionEnd,\n auctionStatus: _auctionStatus,\n adUnits: _adUnits,\n adUnitCodes: _adUnitCodes,\n labels: _labels,\n bidderRequests: _bidderRequests,\n noBids: _noBids,\n bidsReceived: _bidsReceived,\n bidsRejected: _bidsRejected,\n winningBids: _winningBids,\n timeout: _timeout,\n metrics: metrics,\n seatNonBids: _nonBids\n };\n }\n\n function startAuctionTimer() {\n const timedOut = true;\n const timeoutCallback = executeCallback.bind(null, timedOut);\n let timer = setTimeout(timeoutCallback, _timeout);\n _timer = timer;\n }\n\n function executeCallback(timedOut, cleartimer) {\n // clear timer when done calls executeCallback\n if (cleartimer) {\n clearTimeout(_timer);\n }\n\n if (_auctionEnd === undefined) {\n let timedOutBidders = [];\n if (timedOut) {\n logMessage(`Auction ${_auctionId} timedOut`);\n timedOutBidders = getTimedOutBids(_bidderRequests, _timelyBidders);\n if (timedOutBidders.length) {\n events.emit(CONSTANTS.EVENTS.BID_TIMEOUT, timedOutBidders);\n }\n }\n\n _auctionStatus = AUCTION_COMPLETED;\n _auctionEnd = Date.now();\n metrics.checkpoint('auctionEnd');\n metrics.timeBetween('requestBids', 'auctionEnd', 'requestBids.total');\n metrics.timeBetween('callBids', 'auctionEnd', 'requestBids.callBids');\n\n events.emit(CONSTANTS.EVENTS.AUCTION_END, getProperties());\n bidsBackCallback(_adUnits, function () {\n try {\n if (_callback != null) {\n const adUnitCodes = _adUnitCodes;\n const bids = _bidsReceived\n .filter(bind.call(adUnitsFilter, this, adUnitCodes))\n .reduce(groupByPlacement, {});\n _callback.apply(pbjsInstance, [bids, timedOut, _auctionId]);\n _callback = null;\n }\n } catch (e) {\n logError('Error executing bidsBackHandler', null, e);\n } finally {\n // Calling timed out bidders\n if (timedOutBidders.length) {\n adapterManager.callTimedOutBidders(adUnits, timedOutBidders, _timeout);\n }\n // Only automatically sync if the publisher has not chosen to \"enableOverride\"\n let userSyncConfig = config.getConfig('userSync') || {};\n if (!userSyncConfig.enableOverride) {\n // Delay the auto sync by the config delay\n syncUsers(userSyncConfig.syncDelay);\n }\n }\n })\n }\n }\n\n function auctionDone() {\n config.resetBidder();\n // when all bidders have called done callback atleast once it means auction is complete\n logInfo(`Bids Received for Auction with id: ${_auctionId}`, _bidsReceived);\n _auctionStatus = AUCTION_COMPLETED;\n executeCallback(false, true);\n }\n\n function onTimelyResponse(bidderCode) {\n _timelyBidders.add(bidderCode);\n }\n\n function callBids() {\n _auctionStatus = AUCTION_STARTED;\n _auctionStart = Date.now();\n\n let bidRequests = metrics.measureTime('requestBids.makeRequests',\n () => adapterManager.makeBidRequests(_adUnits, _auctionStart, _auctionId, _timeout, _labels, ortb2Fragments, metrics));\n logInfo(`Bids Requested for Auction with id: ${_auctionId}`, bidRequests);\n\n metrics.checkpoint('callBids')\n\n if (bidRequests.length < 1) {\n logWarn('No valid bid requests returned for auction');\n auctionDone();\n } else {\n addBidderRequests.call({\n dispatch: addBidderRequestsCallback,\n context: this\n }, bidRequests);\n }\n }\n\n /**\n * callback executed after addBidderRequests completes\n * @param {BidRequest[]} bidRequests\n */\n function addBidderRequestsCallback(bidRequests) {\n bidRequests.forEach(bidRequest => {\n addBidRequests(bidRequest);\n });\n\n let requests = {};\n let call = {\n bidRequests,\n run: () => {\n startAuctionTimer();\n\n _auctionStatus = AUCTION_IN_PROGRESS;\n\n events.emit(CONSTANTS.EVENTS.AUCTION_INIT, getProperties());\n\n let callbacks = auctionCallbacks(auctionDone, this);\n adapterManager.callBids(_adUnits, bidRequests, callbacks.addBidResponse, callbacks.adapterDone, {\n request(source, origin) {\n increment(outstandingRequests, origin);\n increment(requests, source);\n\n if (!sourceInfo[source]) {\n sourceInfo[source] = {\n SRA: true,\n origin\n };\n }\n if (requests[source] > 1) {\n sourceInfo[source].SRA = false;\n }\n },\n done(origin) {\n outstandingRequests[origin]--;\n if (queuedCalls[0]) {\n if (runIfOriginHasCapacity(queuedCalls[0])) {\n queuedCalls.shift();\n }\n }\n }\n }, _timeout, onTimelyResponse, ortb2Fragments);\n }\n };\n\n if (!runIfOriginHasCapacity(call)) {\n logWarn('queueing auction due to limited endpoint capacity');\n queuedCalls.push(call);\n }\n\n function runIfOriginHasCapacity(call) {\n let hasCapacity = true;\n\n let maxRequests = config.getConfig('maxRequestsPerOrigin') || MAX_REQUESTS_PER_ORIGIN;\n\n call.bidRequests.some(bidRequest => {\n let requests = 1;\n let source = (typeof bidRequest.src !== 'undefined' && bidRequest.src === CONSTANTS.S2S.SRC) ? 's2s'\n : bidRequest.bidderCode;\n // if we have no previous info on this source just let them through\n if (sourceInfo[source]) {\n if (sourceInfo[source].SRA === false) {\n // some bidders might use more than the MAX_REQUESTS_PER_ORIGIN in a single auction. In those cases\n // set their request count to MAX_REQUESTS_PER_ORIGIN so the auction isn't permanently queued waiting\n // for capacity for that bidder\n requests = Math.min(bidRequest.bids.length, maxRequests);\n }\n if (outstandingRequests[sourceInfo[source].origin] + requests > maxRequests) {\n hasCapacity = false;\n }\n }\n // return only used for terminating this .some() iteration early if it is determined we don't have capacity\n return !hasCapacity;\n });\n\n if (hasCapacity) {\n call.run();\n }\n\n return hasCapacity;\n }\n\n function increment(obj, prop) {\n if (typeof obj[prop] === 'undefined') {\n obj[prop] = 1\n } else {\n obj[prop]++;\n }\n }\n }\n\n function addWinningBid(winningBid) {\n const winningAd = adUnits.find(adUnit => adUnit.transactionId === winningBid.transactionId);\n _winningBids = _winningBids.concat(winningBid);\n adapterManager.callBidWonBidder(winningBid.adapterCode || winningBid.bidder, winningBid, adUnits);\n if (winningAd && !winningAd.deferBilling) adapterManager.callBidBillableBidder(winningBid);\n }\n\n function setBidTargeting(bid) {\n adapterManager.callSetTargetingBidder(bid.adapterCode || bid.bidder, bid);\n }\n\n events.on(CONSTANTS.EVENTS.SEAT_NON_BID, (event) => {\n if (event.auctionId === _auctionId) {\n addNonBids(event.seatnonbid)\n }\n });\n\n return {\n addBidReceived,\n addBidRejected,\n addNoBid,\n executeCallback,\n callBids,\n addWinningBid,\n setBidTargeting,\n getWinningBids: () => _winningBids,\n getAuctionStart: () => _auctionStart,\n getTimeout: () => _timeout,\n getAuctionId: () => _auctionId,\n getAuctionStatus: () => _auctionStatus,\n getAdUnits: () => _adUnits,\n getAdUnitCodes: () => _adUnitCodes,\n getBidRequests: () => _bidderRequests,\n getBidsReceived: () => _bidsReceived,\n getNoBids: () => _noBids,\n getNonBids: () => _nonBids,\n getFPD: () => ortb2Fragments,\n getMetrics: () => metrics,\n };\n}\n\n/**\n * Hook into this to intercept bids before they are added to an auction.\n *\n * @param adUnitCode\n * @param bid\n * @param {function(String)} reject: a function that, when called, rejects `bid` with the given reason.\n */\nexport const addBidResponse = hook('sync', function(adUnitCode, bid, reject) {\n this.dispatch.call(null, adUnitCode, bid);\n}, 'addBidResponse');\n\nexport const addBidderRequests = hook('sync', function(bidderRequests) {\n this.dispatch.call(this.context, bidderRequests);\n}, 'addBidderRequests');\n\nexport const bidsBackCallback = hook('async', function (adUnits, callback) {\n if (callback) {\n callback();\n }\n}, 'bidsBackCallback');\n\nexport function auctionCallbacks(auctionDone, auctionInstance, {index = auctionManager.index} = {}) {\n let outstandingBidsAdded = 0;\n let allAdapterCalledDone = false;\n let bidderRequestsDone = new Set();\n let bidResponseMap = {};\n const ready = {};\n\n function waitFor(requestId, result) {\n if (ready[requestId] == null) {\n ready[requestId] = GreedyPromise.resolve();\n }\n ready[requestId] = ready[requestId].then(() => GreedyPromise.resolve(result).catch(() => {}))\n }\n\n function guard(bidderRequest, fn) {\n let timeout = bidderRequest.timeout;\n if (timeout == null || timeout > auctionInstance.getTimeout()) {\n timeout = auctionInstance.getTimeout();\n }\n const timeRemaining = auctionInstance.getAuctionStart() + timeout - Date.now();\n const wait = ready[bidderRequest.bidderRequestId];\n const orphanWait = ready['']; // also wait for \"orphan\" responses that are not associated with any request\n if ((wait != null || orphanWait != null) && timeRemaining > 0) {\n GreedyPromise.race([\n GreedyPromise.timeout(timeRemaining),\n GreedyPromise.resolve(orphanWait).then(() => wait)\n ]).then(fn);\n } else {\n fn();\n }\n }\n\n function afterBidAdded() {\n outstandingBidsAdded--;\n if (allAdapterCalledDone && outstandingBidsAdded === 0) {\n auctionDone()\n }\n }\n\n function handleBidResponse(adUnitCode, bid, handler) {\n bidResponseMap[bid.requestId] = true;\n addCommonResponseProperties(bid, adUnitCode)\n outstandingBidsAdded++;\n return handler(afterBidAdded);\n }\n\n function acceptBidResponse(adUnitCode, bid) {\n handleBidResponse(adUnitCode, bid, (done) => {\n let bidResponse = getPreparedBidForAuction(bid);\n\n if (FEATURES.VIDEO && bidResponse.mediaType === VIDEO) {\n tryAddVideoBid(auctionInstance, bidResponse, done);\n } else {\n if (FEATURES.NATIVE && bidResponse.native != null && typeof bidResponse.native === 'object') {\n // NOTE: augment bidResponse.native even if bidResponse.mediaType !== NATIVE; it's possible\n // to treat banner responses as native\n addLegacyFieldsIfNeeded(bidResponse);\n }\n addBidToAuction(auctionInstance, bidResponse);\n done();\n }\n });\n }\n\n function rejectBidResponse(adUnitCode, bid, reason) {\n return handleBidResponse(adUnitCode, bid, (done) => {\n bid.rejectionReason = reason;\n logWarn(`Bid from ${bid.bidder || 'unknown bidder'} was rejected: ${reason}`, bid)\n events.emit(CONSTANTS.EVENTS.BID_REJECTED, bid);\n auctionInstance.addBidRejected(bid);\n done();\n })\n }\n\n function adapterDone() {\n let bidderRequest = this;\n let bidderRequests = auctionInstance.getBidRequests();\n const auctionOptionsConfig = config.getConfig('auctionOptions');\n\n bidderRequestsDone.add(bidderRequest);\n\n if (auctionOptionsConfig && !isEmpty(auctionOptionsConfig)) {\n const secondaryBidders = auctionOptionsConfig.secondaryBidders;\n if (secondaryBidders && !bidderRequests.every(bidder => includes(secondaryBidders, bidder.bidderCode))) {\n bidderRequests = bidderRequests.filter(request => !includes(secondaryBidders, request.bidderCode));\n }\n }\n\n allAdapterCalledDone = bidderRequests.every(bidderRequest => bidderRequestsDone.has(bidderRequest));\n\n bidderRequest.bids.forEach(bid => {\n if (!bidResponseMap[bid.bidId]) {\n auctionInstance.addNoBid(bid);\n events.emit(CONSTANTS.EVENTS.NO_BID, bid);\n }\n });\n\n if (allAdapterCalledDone && outstandingBidsAdded === 0) {\n auctionDone();\n }\n }\n\n return {\n addBidResponse: (function () {\n function addBid(adUnitCode, bid) {\n const bidderRequest = index.getBidderRequest(bid);\n waitFor((bidderRequest && bidderRequest.bidderRequestId) || '', addBidResponse.call({\n dispatch: acceptBidResponse,\n }, adUnitCode, bid, (() => {\n let rejected = false;\n return (reason) => {\n if (!rejected) {\n rejectBidResponse(adUnitCode, bid, reason);\n rejected = true;\n }\n }\n })()));\n }\n addBid.reject = rejectBidResponse;\n return addBid;\n })(),\n adapterDone: function () {\n guard(this, adapterDone.bind(this))\n }\n }\n}\n\nexport function doCallbacksIfTimedout(auctionInstance, bidResponse) {\n if (bidResponse.timeToRespond > auctionInstance.getTimeout() + config.getConfig('timeoutBuffer')) {\n auctionInstance.executeCallback(true);\n }\n}\n\n// Add a bid to the auction.\nexport function addBidToAuction(auctionInstance, bidResponse) {\n setupBidTargeting(bidResponse);\n\n useMetrics(bidResponse.metrics).timeSince('addBidResponse', 'addBidResponse.total');\n auctionInstance.addBidReceived(bidResponse);\n events.emit(CONSTANTS.EVENTS.BID_RESPONSE, bidResponse);\n\n doCallbacksIfTimedout(auctionInstance, bidResponse);\n}\n\n// Video bids may fail if the cache is down, or there's trouble on the network.\nfunction tryAddVideoBid(auctionInstance, bidResponse, afterBidAdded, {index = auctionManager.index} = {}) {\n let addBid = true;\n\n const videoMediaType = deepAccess(\n index.getMediaTypes({\n requestId: bidResponse.originalRequestId || bidResponse.requestId,\n transactionId: bidResponse.transactionId\n }), 'video');\n const context = videoMediaType && deepAccess(videoMediaType, 'context');\n const useCacheKey = videoMediaType && deepAccess(videoMediaType, 'useCacheKey');\n\n if (config.getConfig('cache.url') && (useCacheKey || context !== OUTSTREAM)) {\n if (!bidResponse.videoCacheKey || config.getConfig('cache.ignoreBidderCacheKey')) {\n addBid = false;\n callPrebidCache(auctionInstance, bidResponse, afterBidAdded, videoMediaType);\n } else if (!bidResponse.vastUrl) {\n logError('videoCacheKey specified but not required vastUrl for video bid');\n addBid = false;\n }\n }\n if (addBid) {\n addBidToAuction(auctionInstance, bidResponse);\n afterBidAdded();\n }\n}\n\n// Native bid response might be in ortb2 format - adds legacy field for backward compatibility\nconst addLegacyFieldsIfNeeded = (bidResponse) => {\n const nativeOrtbRequest = auctionManager.index.getAdUnit(bidResponse)?.nativeOrtbRequest;\n const nativeOrtbResponse = bidResponse.native?.ortb\n\n if (nativeOrtbRequest && nativeOrtbResponse) {\n const legacyResponse = toLegacyResponse(nativeOrtbResponse, nativeOrtbRequest);\n Object.assign(bidResponse.native, legacyResponse);\n }\n}\n\nconst _storeInCache = (batch) => {\n store(batch.map(entry => entry.bidResponse), function (error, cacheIds) {\n cacheIds.forEach((cacheId, i) => {\n const { auctionInstance, bidResponse, afterBidAdded } = batch[i];\n if (error) {\n logWarn(`Failed to save to the video cache: ${error}. Video bid must be discarded.`);\n\n doCallbacksIfTimedout(auctionInstance, bidResponse);\n } else {\n if (cacheId.uuid === '') {\n logWarn(`Supplied video cache key was already in use by Prebid Cache; caching attempt was rejected. Video bid must be discarded.`);\n\n doCallbacksIfTimedout(auctionInstance, bidResponse);\n } else {\n bidResponse.videoCacheKey = cacheId.uuid;\n\n if (!bidResponse.vastUrl) {\n bidResponse.vastUrl = getCacheUrl(bidResponse.videoCacheKey);\n }\n addBidToAuction(auctionInstance, bidResponse);\n afterBidAdded();\n }\n }\n });\n });\n};\n\nconst storeInCache = FEATURES.VIDEO ? _storeInCache : () => {};\n\nlet batchSize, batchTimeout;\nconfig.getConfig('cache', (cacheConfig) => {\n batchSize = typeof cacheConfig.cache.batchSize === 'number' && cacheConfig.cache.batchSize > 0\n ? cacheConfig.cache.batchSize\n : 1;\n batchTimeout = typeof cacheConfig.cache.batchTimeout === 'number' && cacheConfig.cache.batchTimeout > 0\n ? cacheConfig.cache.batchTimeout\n : 0;\n});\n\nexport const batchingCache = (timeout = setTimeout, cache = storeInCache) => {\n let batches = [[]];\n let debouncing = false;\n const noTimeout = cb => cb();\n\n return function(auctionInstance, bidResponse, afterBidAdded) {\n const batchFunc = batchTimeout > 0 ? timeout : noTimeout;\n if (batches[batches.length - 1].length >= batchSize) {\n batches.push([]);\n }\n\n batches[batches.length - 1].push({auctionInstance, bidResponse, afterBidAdded});\n\n if (!debouncing) {\n debouncing = true;\n batchFunc(() => {\n batches.forEach(cache);\n batches = [[]];\n debouncing = false;\n }, batchTimeout);\n }\n }\n};\n\nconst batchAndStore = batchingCache();\n\nexport const callPrebidCache = hook('async', function(auctionInstance, bidResponse, afterBidAdded, videoMediaType) {\n batchAndStore(auctionInstance, bidResponse, afterBidAdded);\n}, 'callPrebidCache');\n\n/**\n * Augment `bidResponse` with properties that are common across all bids - including rejected bids.\n *\n */\nfunction addCommonResponseProperties(bidResponse, adUnitCode, {index = auctionManager.index} = {}) {\n const bidderRequest = index.getBidderRequest(bidResponse);\n const adUnit = index.getAdUnit(bidResponse);\n const start = (bidderRequest && bidderRequest.start) || bidResponse.requestTimestamp;\n\n Object.assign(bidResponse, {\n responseTimestamp: bidResponse.responseTimestamp || timestamp(),\n requestTimestamp: bidResponse.requestTimestamp || start,\n cpm: parseFloat(bidResponse.cpm) || 0,\n bidder: bidResponse.bidder || bidResponse.bidderCode,\n adUnitCode\n });\n\n if (adUnit?.ttlBuffer != null) {\n bidResponse.ttlBuffer = adUnit.ttlBuffer;\n }\n\n bidResponse.timeToRespond = bidResponse.responseTimestamp - bidResponse.requestTimestamp;\n}\n\n/**\n * Add additional bid response properties that are universal for all _accepted_ bids.\n */\nfunction getPreparedBidForAuction(bid, {index = auctionManager.index} = {}) {\n // Let listeners know that now is the time to adjust the bid, if they want to.\n //\n // CAREFUL: Publishers rely on certain bid properties to be available (like cpm),\n // but others to not be set yet (like priceStrings). See #1372 and #1389.\n events.emit(CONSTANTS.EVENTS.BID_ADJUSTMENT, bid);\n\n // a publisher-defined renderer can be used to render bids\n const bidRenderer = index.getBidRequest(bid)?.renderer || index.getAdUnit(bid).renderer;\n\n // a publisher can also define a renderer for a mediaType\n const bidObjectMediaType = bid.mediaType;\n const mediaTypes = index.getMediaTypes(bid);\n const bidMediaType = mediaTypes && mediaTypes[bidObjectMediaType];\n\n var mediaTypeRenderer = bidMediaType && bidMediaType.renderer;\n\n var renderer = null;\n\n // the renderer for the mediaType takes precendence\n if (mediaTypeRenderer && mediaTypeRenderer.url && mediaTypeRenderer.render && !(mediaTypeRenderer.backupOnly === true && bid.renderer)) {\n renderer = mediaTypeRenderer;\n } else if (bidRenderer && bidRenderer.url && bidRenderer.render && !(bidRenderer.backupOnly === true && bid.renderer)) {\n renderer = bidRenderer;\n }\n\n if (renderer) {\n // be aware, an adapter could already have installed the bidder, in which case this overwrite's the existing adapter\n bid.renderer = Renderer.install({ url: renderer.url, config: renderer.options });// rename options to config, to make it consistent?\n bid.renderer.setRender(renderer.render);\n }\n\n // Use the config value 'mediaTypeGranularity' if it has been defined for mediaType, else use 'customPriceBucket'\n const mediaTypeGranularity = getMediaTypeGranularity(bid.mediaType, mediaTypes, config.getConfig('mediaTypePriceGranularity'));\n const priceStringsObj = getPriceBucketString(\n bid.cpm,\n (typeof mediaTypeGranularity === 'object') ? mediaTypeGranularity : config.getConfig('customPriceBucket'),\n config.getConfig('currency.granularityMultiplier')\n );\n bid.pbLg = priceStringsObj.low;\n bid.pbMg = priceStringsObj.med;\n bid.pbHg = priceStringsObj.high;\n bid.pbAg = priceStringsObj.auto;\n bid.pbDg = priceStringsObj.dense;\n bid.pbCg = priceStringsObj.custom;\n\n return bid;\n}\n\nfunction setupBidTargeting(bidObject) {\n let keyValues;\n const cpmCheck = (bidderSettings.get(bidObject.bidderCode, 'allowZeroCpmBids') === true) ? bidObject.cpm >= 0 : bidObject.cpm > 0;\n if (bidObject.bidderCode && (cpmCheck || bidObject.dealId)) {\n keyValues = getKeyValueTargetingPairs(bidObject.bidderCode, bidObject);\n }\n\n // use any targeting provided as defaults, otherwise just set from getKeyValueTargetingPairs\n bidObject.adserverTargeting = Object.assign(bidObject.adserverTargeting || {}, keyValues);\n}\n\n/**\n * @param {MediaType} mediaType\n * @param mediaTypes media types map from adUnit\n * @param {MediaTypePriceGranularity} [mediaTypePriceGranularity]\n * @returns {(Object|string|undefined)}\n */\nexport function getMediaTypeGranularity(mediaType, mediaTypes, mediaTypePriceGranularity) {\n if (mediaType && mediaTypePriceGranularity) {\n if (FEATURES.VIDEO && mediaType === VIDEO) {\n const context = deepAccess(mediaTypes, `${VIDEO}.context`, 'instream');\n if (mediaTypePriceGranularity[`${VIDEO}-${context}`]) {\n return mediaTypePriceGranularity[`${VIDEO}-${context}`];\n }\n }\n return mediaTypePriceGranularity[mediaType];\n }\n}\n\n/**\n * This function returns the price granularity defined. It can be either publisher defined or default value\n * @param bid bid response object\n * @param index\n * @returns {string} granularity\n */\nexport const getPriceGranularity = (bid, {index = auctionManager.index} = {}) => {\n // Use the config value 'mediaTypeGranularity' if it has been set for mediaType, else use 'priceGranularity'\n const mediaTypeGranularity = getMediaTypeGranularity(bid.mediaType, index.getMediaTypes(bid), config.getConfig('mediaTypePriceGranularity'));\n const granularity = (typeof bid.mediaType === 'string' && mediaTypeGranularity) ? ((typeof mediaTypeGranularity === 'string') ? mediaTypeGranularity : 'custom') : config.getConfig('priceGranularity');\n return granularity;\n}\n\n/**\n * This function returns a function to get bid price by price granularity\n * @param {string} granularity\n * @returns {function}\n */\nexport const getPriceByGranularity = (granularity) => {\n return (bid) => {\n const bidGranularity = granularity || getPriceGranularity(bid);\n if (bidGranularity === CONSTANTS.GRANULARITY_OPTIONS.AUTO) {\n return bid.pbAg;\n } else if (bidGranularity === CONSTANTS.GRANULARITY_OPTIONS.DENSE) {\n return bid.pbDg;\n } else if (bidGranularity === CONSTANTS.GRANULARITY_OPTIONS.LOW) {\n return bid.pbLg;\n } else if (bidGranularity === CONSTANTS.GRANULARITY_OPTIONS.MEDIUM) {\n return bid.pbMg;\n } else if (bidGranularity === CONSTANTS.GRANULARITY_OPTIONS.HIGH) {\n return bid.pbHg;\n } else if (bidGranularity === CONSTANTS.GRANULARITY_OPTIONS.CUSTOM) {\n return bid.pbCg;\n }\n }\n}\n\n/**\n * This function returns a function to get crid from bid response\n * @returns {function}\n */\nexport const getCreativeId = () => {\n return (bid) => {\n return (bid.creativeId) ? bid.creativeId : '';\n }\n}\n\n/**\n * This function returns a function to get first advertiser domain from bid response meta\n * @returns {function}\n */\nexport const getAdvertiserDomain = () => {\n return (bid) => {\n return (bid.meta && bid.meta.advertiserDomains && bid.meta.advertiserDomains.length > 0) ? [bid.meta.advertiserDomains].flat()[0] : '';\n }\n}\n\n/**\n * This function returns a function to get dsp name or id from bid response meta\n * @returns {function}\n */\nexport const getDSP = () => {\n return (bid) => {\n return (bid.meta && (bid.meta.networkId || bid.meta.networkName)) ? deepAccess(bid, 'meta.networkName') || deepAccess(bid, 'meta.networkId') : '';\n }\n}\n\n/**\n * This function returns a function to get the primary category id from bid response meta\n * @returns {function}\n */\nexport const getPrimaryCatId = () => {\n return (bid) => {\n return (bid.meta && bid.meta.primaryCatId) ? bid.meta.primaryCatId : '';\n }\n}\n\n// factory for key value objs\nfunction createKeyVal(key, value) {\n return {\n key,\n val: (typeof value === 'function')\n ? function (bidResponse, bidReq) {\n return value(bidResponse, bidReq);\n }\n : function (bidResponse) {\n return getValue(bidResponse, value);\n }\n };\n}\n\nfunction defaultAdserverTargeting() {\n const TARGETING_KEYS = CONSTANTS.TARGETING_KEYS;\n return [\n createKeyVal(TARGETING_KEYS.BIDDER, 'bidderCode'),\n createKeyVal(TARGETING_KEYS.AD_ID, 'adId'),\n createKeyVal(TARGETING_KEYS.PRICE_BUCKET, getPriceByGranularity()),\n createKeyVal(TARGETING_KEYS.SIZE, 'size'),\n createKeyVal(TARGETING_KEYS.DEAL, 'dealId'),\n createKeyVal(TARGETING_KEYS.SOURCE, 'source'),\n createKeyVal(TARGETING_KEYS.FORMAT, 'mediaType'),\n createKeyVal(TARGETING_KEYS.ADOMAIN, getAdvertiserDomain()),\n createKeyVal(TARGETING_KEYS.ACAT, getPrimaryCatId()),\n createKeyVal(TARGETING_KEYS.DSP, getDSP()),\n createKeyVal(TARGETING_KEYS.CRID, getCreativeId()),\n ]\n}\n\n/**\n * @param {string} mediaType\n * @param {string} bidderCode\n * @param {BidRequest} bidReq\n * @returns {*}\n */\nexport function getStandardBidderSettings(mediaType, bidderCode) {\n const TARGETING_KEYS = CONSTANTS.TARGETING_KEYS;\n const standardSettings = Object.assign({}, bidderSettings.settingsFor(null));\n if (!standardSettings[CONSTANTS.JSON_MAPPING.ADSERVER_TARGETING]) {\n standardSettings[CONSTANTS.JSON_MAPPING.ADSERVER_TARGETING] = defaultAdserverTargeting();\n }\n\n if (FEATURES.VIDEO && mediaType === 'video') {\n const adserverTargeting = standardSettings[CONSTANTS.JSON_MAPPING.ADSERVER_TARGETING].slice();\n standardSettings[CONSTANTS.JSON_MAPPING.ADSERVER_TARGETING] = adserverTargeting;\n\n // Adding hb_uuid + hb_cache_id\n [TARGETING_KEYS.UUID, TARGETING_KEYS.CACHE_ID].forEach(targetingKeyVal => {\n if (typeof find(adserverTargeting, kvPair => kvPair.key === targetingKeyVal) === 'undefined') {\n adserverTargeting.push(createKeyVal(targetingKeyVal, 'videoCacheKey'));\n }\n });\n\n // Adding hb_cache_host\n if (config.getConfig('cache.url') && (!bidderCode || bidderSettings.get(bidderCode, 'sendStandardTargeting') !== false)) {\n const urlInfo = parseUrl(config.getConfig('cache.url'));\n\n if (typeof find(adserverTargeting, targetingKeyVal => targetingKeyVal.key === TARGETING_KEYS.CACHE_HOST) === 'undefined') {\n adserverTargeting.push(createKeyVal(TARGETING_KEYS.CACHE_HOST, function(bidResponse) {\n return deepAccess(bidResponse, `adserverTargeting.${TARGETING_KEYS.CACHE_HOST}`)\n ? bidResponse.adserverTargeting[TARGETING_KEYS.CACHE_HOST] : urlInfo.hostname;\n }));\n }\n }\n }\n\n return standardSettings;\n}\n\nexport function getKeyValueTargetingPairs(bidderCode, custBidObj, {index = auctionManager.index} = {}) {\n if (!custBidObj) {\n return {};\n }\n const bidRequest = index.getBidRequest(custBidObj);\n var keyValues = {};\n\n // 1) set the keys from \"standard\" setting or from prebid defaults\n // initialize default if not set\n const standardSettings = getStandardBidderSettings(custBidObj.mediaType, bidderCode);\n setKeys(keyValues, standardSettings, custBidObj, bidRequest);\n\n // 2) set keys from specific bidder setting override if they exist\n if (bidderCode && bidderSettings.getOwn(bidderCode, CONSTANTS.JSON_MAPPING.ADSERVER_TARGETING)) {\n setKeys(keyValues, bidderSettings.ownSettingsFor(bidderCode), custBidObj, bidRequest);\n custBidObj.sendStandardTargeting = bidderSettings.get(bidderCode, 'sendStandardTargeting');\n }\n\n // set native key value targeting\n if (FEATURES.NATIVE && custBidObj['native']) {\n keyValues = Object.assign({}, keyValues, getNativeTargeting(custBidObj));\n }\n\n return keyValues;\n}\n\nfunction setKeys(keyValues, bidderSettings, custBidObj, bidReq) {\n var targeting = bidderSettings[CONSTANTS.JSON_MAPPING.ADSERVER_TARGETING];\n custBidObj.size = custBidObj.getSize();\n\n _each(targeting, function (kvPair) {\n var key = kvPair.key;\n var value = kvPair.val;\n\n if (keyValues[key]) {\n logWarn('The key: ' + key + ' is being overwritten');\n }\n\n if (isFn(value)) {\n try {\n value = value(custBidObj, bidReq);\n } catch (e) {\n logError('bidmanager', 'ERROR', e);\n }\n }\n\n if (\n ((typeof bidderSettings.suppressEmptyKeys !== 'undefined' && bidderSettings.suppressEmptyKeys === true) ||\n key === CONSTANTS.TARGETING_KEYS.DEAL || key === CONSTANTS.TARGETING_KEYS.ACAT || key === CONSTANTS.TARGETING_KEYS.DSP || key === CONSTANTS.TARGETING_KEYS.CRID) && // hb_deal & hb_acat are suppressed automatically if not set\n (\n isEmptyStr(value) ||\n value === null ||\n value === undefined\n )\n ) {\n logInfo(\"suppressing empty key '\" + key + \"' from adserver targeting\");\n } else {\n keyValues[key] = value;\n }\n });\n\n return keyValues;\n}\n\nexport function adjustBids(bid) {\n let bidPriceAdjusted = adjustCpm(bid.cpm, bid);\n\n if (bidPriceAdjusted >= 0) {\n bid.cpm = bidPriceAdjusted;\n }\n}\n\n/**\n * groupByPlacement is a reduce function that converts an array of Bid objects\n * to an object with placement codes as keys, with each key representing an object\n * with an array of `Bid` objects for that placement\n * @returns {*} as { [adUnitCode]: { bids: [Bid, Bid, Bid] } }\n */\nfunction groupByPlacement(bidsByPlacement, bid) {\n if (!bidsByPlacement[bid.adUnitCode]) { bidsByPlacement[bid.adUnitCode] = { bids: [] }; }\n bidsByPlacement[bid.adUnitCode].bids.push(bid);\n return bidsByPlacement;\n}\n\n/**\n * Returns a list of bids that we haven't received a response yet where the bidder did not call done\n * @param {BidRequest[]} bidderRequests List of bids requested for auction instance\n * @param {Set} timelyBidders Set of bidders which responded in time\n *\n * @typedef {Object} TimedOutBid\n * @property {string} bidId The id representing the bid\n * @property {string} bidder The string name of the bidder\n * @property {string} adUnitCode The code used to uniquely identify the ad unit on the publisher's page\n * @property {string} auctionId The id representing the auction\n *\n * @return {Array} List of bids that Prebid hasn't received a response for\n */\nfunction getTimedOutBids(bidderRequests, timelyBidders) {\n const timedOutBids = bidderRequests\n .map(bid => (bid.bids || []).filter(bid => !timelyBidders.has(bid.bidder)))\n .reduce(flatten, []);\n\n return timedOutBids;\n}\n","import {auctionManager} from '../auctionManager.js';\nimport {bidderSettings} from '../bidderSettings.js';\nimport {logError} from '../utils.js';\n\nexport function adjustCpm(cpm, bidResponse, bidRequest, {index = auctionManager.index, bs = bidderSettings} = {}) {\n bidRequest = bidRequest || index.getBidRequest(bidResponse);\n const adapterCode = bidResponse?.adapterCode;\n const bidderCode = bidResponse?.bidderCode || bidRequest?.bidder;\n const adjustAlternateBids = bs.get(bidResponse?.adapterCode, 'adjustAlternateBids');\n const bidCpmAdjustment = bs.getOwn(bidderCode, 'bidCpmAdjustment') || bs.get(adjustAlternateBids ? adapterCode : bidderCode, 'bidCpmAdjustment');\n\n if (bidCpmAdjustment && typeof bidCpmAdjustment === 'function') {\n try {\n return bidCpmAdjustment(cpm, Object.assign({}, bidResponse), bidRequest);\n } catch (e) {\n logError('Error during bid adjustment', e);\n }\n }\n return cpm;\n}\n","/**\n * Retrieves request-related bid data.\n * All methods are designed to work with Bid (response) objects returned by bid adapters.\n */\nexport function AuctionIndex(getAuctions) {\n Object.assign(this, {\n /**\n * @param auctionId\n * @returns {*} Auction instance for `auctionId`\n */\n getAuction({auctionId}) {\n if (auctionId != null) {\n return getAuctions()\n .find(auction => auction.getAuctionId() === auctionId);\n }\n },\n /**\n * NOTE: you should prefer {@link #getMediaTypes} for looking up bid media types.\n * @param transactionId\n * @returns adUnit object for `transactionId`\n */\n getAdUnit({transactionId}) {\n if (transactionId != null) {\n return getAuctions()\n .flatMap(a => a.getAdUnits())\n .find(au => au.transactionId === transactionId);\n }\n },\n /**\n * @param transactionId\n * @param requestId?\n * @returns {*} mediaTypes object from bidRequest (through requestId) falling back to the adUnit (through transactionId).\n *\n * The bidRequest is given precedence because its mediaTypes can differ from the adUnit's (if bidder-specific labels are in use).\n * Bids that have no associated request do not have labels either, and use the adUnit's mediaTypes.\n */\n getMediaTypes({transactionId, requestId}) {\n if (requestId != null) {\n const req = this.getBidRequest({requestId});\n if (req != null && (transactionId == null || req.transactionId === transactionId)) {\n return req.mediaTypes;\n }\n } else if (transactionId != null) {\n const au = this.getAdUnit({transactionId});\n if (au != null) {\n return au.mediaTypes;\n }\n }\n },\n /**\n * @param requestId?\n * @param bidderRequestId?\n * @returns {*} bidderRequest that matches both requestId and bidderRequestId (if either or both are provided).\n *\n * NOTE: Bid responses are not guaranteed to have a corresponding request.\n */\n getBidderRequest({requestId, bidderRequestId}) {\n if (requestId != null || bidderRequestId != null) {\n let bers = getAuctions().flatMap(a => a.getBidRequests());\n if (bidderRequestId != null) {\n bers = bers.filter(ber => ber.bidderRequestId === bidderRequestId);\n }\n if (requestId == null) {\n return bers[0];\n } else {\n return bers.find(ber => ber.bids && ber.bids.find(br => br.bidId === requestId) != null)\n }\n }\n },\n /**\n * @param requestId\n * @returns {*} bidRequest object for requestId\n *\n * NOTE: Bid responses are not guaranteed to have a corresponding request.\n */\n getBidRequest({requestId}) {\n if (requestId != null) {\n return getAuctions()\n .flatMap(a => a.getBidRequests())\n .flatMap(ber => ber.bids)\n .find(br => br && br.bidId === requestId);\n }\n }\n });\n}\n","/**\n * AuctionManager modules is responsible for creating auction instances.\n * This module is the gateway for Prebid core to access auctions.\n * It stores all created instances of auction and can be used to get consolidated values from auction.\n */\n\n/**\n * @typedef {Object} AuctionManager\n *\n * @property {function(): Array} getBidsRequested - returns consolidated bid requests\n * @property {function(): Array} getBidsReceived - returns consolidated bid received\n * @property {function(): Array} getAllBidsForAdUnitCode - returns consolidated bid received for a given adUnit\n * @property {function(): Array} getAdUnits - returns consolidated adUnits\n * @property {function(): Array} getAdUnitCodes - returns consolidated adUnitCodes\n * @property {function(): Object} createAuction - creates auction instance and stores it for future reference\n * @property {function(): Object} findBidByAdId - find bid received by adId. This function will be called by $$PREBID_GLOBAL$$.renderAd\n * @property {function(): Object} getStandardBidderAdServerTargeting - returns standard bidder targeting for all the adapters. Refer http://prebid.org/dev-docs/publisher-api-reference.html#module_pbjs.bidderSettings for more details\n * @property {function(Object): void} addWinningBid - add a winning bid to an auction based on auctionId\n * @property {function(): void} clearAllAuctions - clear all auctions for testing\n */\n\nimport { uniques, flatten, logWarn } from './utils.js';\nimport { newAuction, getStandardBidderSettings, AUCTION_COMPLETED } from './auction.js';\nimport {find} from './polyfill.js';\nimport {AuctionIndex} from './auctionIndex.js';\nimport CONSTANTS from './constants.json';\nimport {useMetrics} from './utils/perfMetrics.js';\n\n/**\n * Creates new instance of auctionManager. There will only be one instance of auctionManager but\n * a factory is created to assist in testing.\n *\n * @returns {AuctionManager} auctionManagerInstance\n */\nexport function newAuctionManager() {\n const _auctions = [];\n const auctionManager = {};\n\n auctionManager.addWinningBid = function(bid) {\n const metrics = useMetrics(bid.metrics);\n metrics.checkpoint('bidWon');\n metrics.timeBetween('auctionEnd', 'bidWon', 'render.pending');\n metrics.timeBetween('requestBids', 'bidWon', 'render.e2e');\n const auction = find(_auctions, auction => auction.getAuctionId() === bid.auctionId);\n if (auction) {\n bid.status = CONSTANTS.BID_STATUS.RENDERED;\n auction.addWinningBid(bid);\n } else {\n logWarn(`Auction not found when adding winning bid`);\n }\n };\n\n auctionManager.getAllWinningBids = function() {\n return _auctions.map(auction => auction.getWinningBids())\n .reduce(flatten, []);\n };\n\n auctionManager.getBidsRequested = function() {\n return _auctions.map(auction => auction.getBidRequests())\n .reduce(flatten, []);\n };\n\n auctionManager.getNoBids = function() {\n return _auctions.map(auction => auction.getNoBids())\n .reduce(flatten, []);\n };\n\n auctionManager.getBidsReceived = function() {\n return _auctions.map((auction) => {\n if (auction.getAuctionStatus() === AUCTION_COMPLETED) {\n return auction.getBidsReceived();\n }\n }).reduce(flatten, [])\n .filter(bid => bid);\n };\n\n auctionManager.getAllBidsForAdUnitCode = function(adUnitCode) {\n return _auctions.map((auction) => {\n return auction.getBidsReceived();\n }).reduce(flatten, [])\n .filter(bid => bid && bid.adUnitCode === adUnitCode)\n };\n\n auctionManager.getAdUnits = function() {\n return _auctions.map(auction => auction.getAdUnits())\n .reduce(flatten, []);\n };\n\n auctionManager.getAdUnitCodes = function() {\n return _auctions.map(auction => auction.getAdUnitCodes())\n .reduce(flatten, [])\n .filter(uniques);\n };\n\n auctionManager.createAuction = function(opts) {\n const auction = newAuction(opts);\n _addAuction(auction);\n return auction;\n };\n\n auctionManager.findBidByAdId = function(adId) {\n return find(_auctions.map(auction => auction.getBidsReceived()).reduce(flatten, []), bid => bid.adId === adId);\n };\n\n auctionManager.getStandardBidderAdServerTargeting = function() {\n return getStandardBidderSettings()[CONSTANTS.JSON_MAPPING.ADSERVER_TARGETING];\n };\n\n auctionManager.setStatusForBids = function(adId, status) {\n let bid = auctionManager.findBidByAdId(adId);\n if (bid) bid.status = status;\n\n if (bid && status === CONSTANTS.BID_STATUS.BID_TARGETING_SET) {\n const auction = find(_auctions, auction => auction.getAuctionId() === bid.auctionId);\n if (auction) auction.setBidTargeting(bid);\n }\n }\n\n auctionManager.getLastAuctionId = function() {\n return _auctions.length && _auctions[_auctions.length - 1].getAuctionId()\n };\n\n auctionManager.clearAllAuctions = function() {\n _auctions.length = 0;\n }\n\n function _addAuction(auction) {\n _auctions.push(auction);\n }\n\n auctionManager.index = new AuctionIndex(() => _auctions);\n\n return auctionManager;\n}\n\nexport const auctionManager = newAuctionManager();\n","import {deepAccess, mergeDeep} from './utils.js';\nimport {getGlobal} from './prebidGlobal.js';\nimport CONSTANTS from './constants.json';\n\nexport class ScopedSettings {\n constructor(getSettings, defaultScope) {\n this.getSettings = getSettings;\n this.defaultScope = defaultScope;\n }\n\n /**\n * Get setting value at `path` under the given scope, falling back to the default scope if needed.\n * If `scope` is `null`, get the setting's default value.\n * @param scope {String|null}\n * @param path {String}\n * @returns {*}\n */\n get(scope, path) {\n let value = this.getOwn(scope, path);\n if (typeof value === 'undefined') {\n value = this.getOwn(null, path);\n }\n return value;\n }\n\n /**\n * Get the setting value at `path` *without* falling back to the default value.\n * @param scope {String}\n * @param path {String}\n * @returns {*}\n */\n getOwn(scope, path) {\n scope = this.#resolveScope(scope);\n return deepAccess(this.getSettings(), `${scope}.${path}`)\n }\n\n /**\n * @returns {string[]} all existing scopes except the default one.\n */\n getScopes() {\n return Object.keys(this.getSettings()).filter((scope) => scope !== this.defaultScope);\n }\n\n /**\n * @returns all settings in the given scope, merged with the settings for the default scope.\n */\n settingsFor(scope) {\n return mergeDeep({}, this.ownSettingsFor(null), this.ownSettingsFor(scope));\n }\n\n /**\n * @returns all settings in the given scope, *without* any of the default settings.\n */\n ownSettingsFor(scope) {\n scope = this.#resolveScope(scope);\n return this.getSettings()[scope] || {};\n }\n\n #resolveScope(scope) {\n if (scope == null) {\n return this.defaultScope;\n } else {\n return scope;\n }\n }\n}\n\nexport const bidderSettings = new ScopedSettings(() => getGlobal().bidderSettings || {}, CONSTANTS.JSON_MAPPING.BD_SETTING_STANDARD);\n","import { getUniqueIdentifierStr } from './utils.js';\n\n/**\n Required paramaters\n bidderCode,\n height,\n width,\n statusCode\n Optional paramaters\n adId,\n cpm,\n ad,\n adUrl,\n dealId,\n priceKeyString;\n */\nfunction Bid(statusCode, {src = 'client', bidder = '', bidId, transactionId, auctionId} = {}) {\n var _bidSrc = src;\n var _statusCode = statusCode || 0;\n\n this.bidderCode = bidder;\n this.width = 0;\n this.height = 0;\n this.statusMessage = _getStatus();\n this.adId = getUniqueIdentifierStr();\n this.requestId = bidId;\n this.transactionId = transactionId;\n this.auctionId = auctionId;\n this.mediaType = 'banner';\n this.source = _bidSrc;\n\n function _getStatus() {\n switch (_statusCode) {\n case 0:\n return 'Pending';\n case 1:\n return 'Bid available';\n case 2:\n return 'Bid returned empty or error response';\n case 3:\n return 'Bid timed out';\n }\n }\n\n this.getStatusCode = function () {\n return _statusCode;\n };\n\n // returns the size of the bid creative. Concatenation of width and height by ‘x’.\n this.getSize = function () {\n return this.width + 'x' + this.height;\n };\n\n this.getIdentifiers = function () {\n return {\n src: this.source,\n bidder: this.bidderCode,\n bidId: this.requestId,\n transactionId: this.transactionId,\n auctionId: this.auctionId\n }\n };\n}\n\n// Bid factory function.\nexport function createBid(statusCode, identifiers) {\n return new Bid(statusCode, identifiers);\n}\n","/*\n * Module for getting and setting Prebid configuration.\n*/\n\n/**\n * @typedef {Object} MediaTypePriceGranularity\n *\n * @property {(string|Object)} [banner]\n * @property {(string|Object)} [native]\n * @property {(string|Object)} [video]\n * @property {(string|Object)} [video-instream]\n * @property {(string|Object)} [video-outstream]\n */\n\nimport { isValidPriceConfig } from './cpmBucketManager.js';\nimport {find, includes, arrayFrom as from} from './polyfill.js';\nimport {\n mergeDeep, deepClone, getParameterByName, isPlainObject, logMessage, logWarn, logError,\n isArray, isStr, isBoolean, deepAccess, bind\n} from './utils.js';\nimport CONSTANTS from './constants.json';\n\nconst DEFAULT_DEBUG = getParameterByName(CONSTANTS.DEBUG_MODE).toUpperCase() === 'TRUE';\nconst DEFAULT_BIDDER_TIMEOUT = 3000;\nconst DEFAULT_ENABLE_SEND_ALL_BIDS = true;\nconst DEFAULT_DISABLE_AJAX_TIMEOUT = false;\nconst DEFAULT_BID_CACHE = false;\nconst DEFAULT_DEVICE_ACCESS = true;\nconst DEFAULT_MAX_NESTED_IFRAMES = 10;\n\nconst DEFAULT_TIMEOUTBUFFER = 400;\n\nexport const RANDOM = 'random';\nconst FIXED = 'fixed';\n\nconst VALID_ORDERS = {};\nVALID_ORDERS[RANDOM] = true;\nVALID_ORDERS[FIXED] = true;\n\nconst DEFAULT_BIDDER_SEQUENCE = RANDOM;\n\nconst GRANULARITY_OPTIONS = {\n LOW: 'low',\n MEDIUM: 'medium',\n HIGH: 'high',\n AUTO: 'auto',\n DENSE: 'dense',\n CUSTOM: 'custom'\n};\n\nconst ALL_TOPICS = '*';\n\n/**\n * @typedef {object} PrebidConfig\n *\n * @property {string} cache.url Set a url if we should use prebid-cache to store video bids before adding\n * bids to the auction. **NOTE** This must be set if you want to use the dfpAdServerVideo module.\n */\n\nexport function newConfig() {\n let listeners = [];\n let defaults;\n let config;\n let bidderConfig;\n let currBidder = null;\n\n function resetConfig() {\n defaults = {};\n\n function getProp(name) {\n return props[name].val;\n }\n\n function setProp(name, val) {\n props[name].val = val;\n }\n\n const props = {\n publisherDomain: {\n set(val) {\n if (val != null) {\n logWarn('publisherDomain is deprecated and has no effect since v7 - use pageUrl instead')\n }\n setProp('publisherDomain', val);\n }\n },\n priceGranularity: {\n val: GRANULARITY_OPTIONS.MEDIUM,\n set(val) {\n if (validatePriceGranularity(val)) {\n if (typeof val === 'string') {\n setProp('priceGranularity', (hasGranularity(val)) ? val : GRANULARITY_OPTIONS.MEDIUM);\n } else if (isPlainObject(val)) {\n setProp('customPriceBucket', val);\n setProp('priceGranularity', GRANULARITY_OPTIONS.CUSTOM)\n logMessage('Using custom price granularity');\n }\n }\n }\n },\n customPriceBucket: {\n val: {},\n set() {}\n },\n mediaTypePriceGranularity: {\n val: {},\n set(val) {\n val != null && setProp('mediaTypePriceGranularity', Object.keys(val).reduce((aggregate, item) => {\n if (validatePriceGranularity(val[item])) {\n if (typeof val === 'string') {\n aggregate[item] = (hasGranularity(val[item])) ? val[item] : getProp('priceGranularity');\n } else if (isPlainObject(val)) {\n aggregate[item] = val[item];\n logMessage(`Using custom price granularity for ${item}`);\n }\n } else {\n logWarn(`Invalid price granularity for media type: ${item}`);\n }\n return aggregate;\n }, {}));\n }\n },\n bidderSequence: {\n val: DEFAULT_BIDDER_SEQUENCE,\n set(val) {\n if (VALID_ORDERS[val]) {\n setProp('bidderSequence', val);\n } else {\n logWarn(`Invalid order: ${val}. Bidder Sequence was not set.`);\n }\n }\n },\n auctionOptions: {\n val: {},\n set(val) {\n if (validateauctionOptions(val)) {\n setProp('auctionOptions', val);\n }\n }\n }\n }\n let newConfig = {\n // `debug` is equivalent to legacy `pbjs.logging` property\n debug: DEFAULT_DEBUG,\n bidderTimeout: DEFAULT_BIDDER_TIMEOUT,\n enableSendAllBids: DEFAULT_ENABLE_SEND_ALL_BIDS,\n useBidCache: DEFAULT_BID_CACHE,\n\n /**\n * deviceAccess set to false will disable setCookie, getCookie, hasLocalStorage\n * @type {boolean}\n */\n deviceAccess: DEFAULT_DEVICE_ACCESS,\n\n // timeout buffer to adjust for bidder CDN latency\n timeoutBuffer: DEFAULT_TIMEOUTBUFFER,\n disableAjaxTimeout: DEFAULT_DISABLE_AJAX_TIMEOUT,\n\n // default max nested iframes for referer detection\n maxNestedIframes: DEFAULT_MAX_NESTED_IFRAMES,\n };\n\n Object.defineProperties(newConfig,\n Object.fromEntries(Object.entries(props)\n .map(([k, def]) => [k, Object.assign({\n get: getProp.bind(null, k),\n set: setProp.bind(null, k),\n enumerable: true,\n }, def)]))\n );\n\n if (config) {\n callSubscribers(\n Object.keys(config).reduce((memo, topic) => {\n if (config[topic] !== newConfig[topic]) {\n memo[topic] = newConfig[topic] || {};\n }\n return memo;\n },\n {})\n );\n }\n\n config = newConfig;\n bidderConfig = {};\n\n function hasGranularity(val) {\n return find(Object.keys(GRANULARITY_OPTIONS), option => val === GRANULARITY_OPTIONS[option]);\n }\n\n function validatePriceGranularity(val) {\n if (!val) {\n logError('Prebid Error: no value passed to `setPriceGranularity()`');\n return false;\n }\n if (typeof val === 'string') {\n if (!hasGranularity(val)) {\n logWarn('Prebid Warning: setPriceGranularity was called with invalid setting, using `medium` as default.');\n }\n } else if (isPlainObject(val)) {\n if (!isValidPriceConfig(val)) {\n logError('Invalid custom price value passed to `setPriceGranularity()`');\n return false;\n }\n }\n return true;\n }\n\n function validateauctionOptions(val) {\n if (!isPlainObject(val)) {\n logWarn('Auction Options must be an object')\n return false\n }\n\n for (let k of Object.keys(val)) {\n if (k !== 'secondaryBidders' && k !== 'suppressStaleRender') {\n logWarn(`Auction Options given an incorrect param: ${k}`)\n return false\n }\n if (k === 'secondaryBidders') {\n if (!isArray(val[k])) {\n logWarn(`Auction Options ${k} must be of type Array`);\n return false\n } else if (!val[k].every(isStr)) {\n logWarn(`Auction Options ${k} must be only string`);\n return false\n }\n } else if (k === 'suppressStaleRender') {\n if (!isBoolean(val[k])) {\n logWarn(`Auction Options ${k} must be of type boolean`);\n return false;\n }\n }\n }\n return true;\n }\n }\n\n /**\n * Returns base config with bidder overrides (if there is currently a bidder)\n * @private\n */\n function _getConfig() {\n if (currBidder && bidderConfig && isPlainObject(bidderConfig[currBidder])) {\n let currBidderConfig = bidderConfig[currBidder];\n const configTopicSet = new Set(Object.keys(config).concat(Object.keys(currBidderConfig)));\n\n return from(configTopicSet).reduce((memo, topic) => {\n if (typeof currBidderConfig[topic] === 'undefined') {\n memo[topic] = config[topic];\n } else if (typeof config[topic] === 'undefined') {\n memo[topic] = currBidderConfig[topic];\n } else {\n if (isPlainObject(currBidderConfig[topic])) {\n memo[topic] = mergeDeep({}, config[topic], currBidderConfig[topic]);\n } else {\n memo[topic] = currBidderConfig[topic];\n }\n }\n return memo;\n }, {});\n }\n return Object.assign({}, config);\n }\n\n function _getRestrictedConfig() {\n // This causes reading 'ortb2' to throw an error; with prebid 7, that will almost\n // always be the incorrect way to access FPD configuration (https://github.com/prebid/Prebid.js/issues/7651)\n // code that needs the ortb2 config should explicitly use `getAnyConfig`\n // TODO: this is meant as a temporary tripwire to catch inadvertent use of `getConfig('ortb')` as we transition.\n // It should be removed once the risk of that happening is low enough.\n const conf = _getConfig();\n Object.defineProperty(conf, 'ortb2', {\n get: function () {\n throw new Error('invalid access to \\'orbt2\\' config - use request parameters instead');\n }\n });\n return conf;\n }\n\n const [getAnyConfig, getConfig] = [_getConfig, _getRestrictedConfig].map(accessor => {\n /*\n * Returns configuration object if called without parameters,\n * or single configuration property if given a string matching a configuration\n * property name. Allows deep access e.g. getConfig('currency.adServerCurrency')\n *\n * If called with callback parameter, or a string and a callback parameter,\n * subscribes to configuration updates. See `subscribe` function for usage.\n */\n return function getConfig(...args) {\n if (args.length <= 1 && typeof args[0] !== 'function') {\n const option = args[0];\n return option ? deepAccess(accessor(), option) : _getConfig();\n }\n\n return subscribe(...args);\n }\n })\n\n const [readConfig, readAnyConfig] = [getConfig, getAnyConfig].map(wrapee => {\n /*\n * Like getConfig, except that it returns a deepClone of the result.\n */\n return function readConfig(...args) {\n let res = wrapee(...args);\n if (res && typeof res === 'object') {\n res = deepClone(res);\n }\n return res;\n }\n })\n\n /**\n * Internal API for modules (such as prebid-server) that might need access to all bidder config\n */\n function getBidderConfig() {\n return bidderConfig;\n }\n\n /*\n * Sets configuration given an object containing key-value pairs and calls\n * listeners that were added by the `subscribe` function\n */\n function setConfig(options) {\n if (!isPlainObject(options)) {\n logError('setConfig options must be an object');\n return;\n }\n\n let topics = Object.keys(options);\n let topicalConfig = {};\n\n topics.forEach(topic => {\n let option = options[topic];\n\n if (isPlainObject(defaults[topic]) && isPlainObject(option)) {\n option = Object.assign({}, defaults[topic], option);\n }\n\n try {\n topicalConfig[topic] = config[topic] = option;\n } catch (e) {\n logWarn(`Cannot set config for property ${topic} : `, e)\n }\n });\n\n callSubscribers(topicalConfig);\n }\n\n /**\n * Sets configuration defaults which setConfig values can be applied on top of\n * @param {object} options\n */\n function setDefaults(options) {\n if (!isPlainObject(defaults)) {\n logError('defaults must be an object');\n return;\n }\n\n Object.assign(defaults, options);\n // Add default values to config as well\n Object.assign(config, options);\n }\n\n /*\n * Adds a function to a set of listeners that are invoked whenever `setConfig`\n * is called. The subscribed function will be passed the options object that\n * was used in the `setConfig` call. Topics can be subscribed to to only get\n * updates when specific properties are updated by passing a topic string as\n * the first parameter.\n *\n * If `options.init` is true, the listener will be immediately called with the current options.\n *\n * Returns an `unsubscribe` function for removing the subscriber from the\n * set of listeners\n *\n * Example use:\n * // subscribe to all configuration changes\n * subscribe((config) => console.log('config set:', config));\n *\n * // subscribe to only 'logging' changes\n * subscribe('logging', (config) => console.log('logging set:', config));\n *\n * // unsubscribe\n * const unsubscribe = subscribe(...);\n * unsubscribe(); // no longer listening\n *\n */\n function subscribe(topic, listener, options = {}) {\n let callback = listener;\n\n if (typeof topic !== 'string') {\n // first param should be callback function in this case,\n // meaning it gets called for any config change\n callback = topic;\n topic = ALL_TOPICS;\n options = listener || {};\n }\n\n if (typeof callback !== 'function') {\n logError('listener must be a function');\n return;\n }\n\n const nl = { topic, callback };\n listeners.push(nl);\n\n if (options.init) {\n if (topic === ALL_TOPICS) {\n callback(getConfig());\n } else {\n // eslint-disable-next-line standard/no-callback-literal\n callback({[topic]: getConfig(topic)});\n }\n }\n\n // save and call this function to remove the listener\n return function unsubscribe() {\n listeners.splice(listeners.indexOf(nl), 1);\n };\n }\n\n /*\n * Calls listeners that were added by the `subscribe` function\n */\n function callSubscribers(options) {\n const TOPICS = Object.keys(options);\n\n // call subscribers of a specific topic, passing only that configuration\n listeners\n .filter(listener => includes(TOPICS, listener.topic))\n .forEach(listener => {\n listener.callback({ [listener.topic]: options[listener.topic] });\n });\n\n // call subscribers that didn't give a topic, passing everything that was set\n listeners\n .filter(listener => listener.topic === ALL_TOPICS)\n .forEach(listener => listener.callback(options));\n }\n\n function setBidderConfig(config, mergeFlag = false) {\n try {\n check(config);\n config.bidders.forEach(bidder => {\n if (!bidderConfig[bidder]) {\n bidderConfig[bidder] = {};\n }\n Object.keys(config.config).forEach(topic => {\n let option = config.config[topic];\n\n if (isPlainObject(option)) {\n const func = mergeFlag ? mergeDeep : Object.assign;\n bidderConfig[bidder][topic] = func({}, bidderConfig[bidder][topic] || {}, option);\n } else {\n bidderConfig[bidder][topic] = option;\n }\n });\n });\n } catch (e) {\n logError(e);\n }\n\n function check(obj) {\n if (!isPlainObject(obj)) {\n throw 'setBidderConfig bidder options must be an object';\n }\n if (!(Array.isArray(obj.bidders) && obj.bidders.length)) {\n throw 'setBidderConfig bidder options must contain a bidders list with at least 1 bidder';\n }\n if (!isPlainObject(obj.config)) {\n throw 'setBidderConfig bidder options must contain a config object';\n }\n }\n }\n\n function mergeConfig(obj) {\n if (!isPlainObject(obj)) {\n logError('mergeConfig input must be an object');\n return;\n }\n\n const mergedConfig = mergeDeep(_getConfig(), obj);\n\n setConfig({ ...mergedConfig });\n return mergedConfig;\n }\n\n function mergeBidderConfig(obj) {\n return setBidderConfig(obj, true);\n }\n\n /**\n * Internal functions for core to execute some synchronous code while having an active bidder set.\n */\n function runWithBidder(bidder, fn) {\n currBidder = bidder;\n try {\n return fn();\n } finally {\n resetBidder();\n }\n }\n function callbackWithBidder(bidder) {\n return function(cb) {\n return function(...args) {\n if (typeof cb === 'function') {\n return runWithBidder(bidder, bind.call(cb, this, ...args))\n } else {\n logWarn('config.callbackWithBidder callback is not a function');\n }\n }\n }\n }\n\n function getCurrentBidder() {\n return currBidder;\n }\n\n function resetBidder() {\n currBidder = null;\n }\n\n resetConfig();\n\n return {\n getCurrentBidder,\n resetBidder,\n getConfig,\n getAnyConfig,\n readConfig,\n readAnyConfig,\n setConfig,\n mergeConfig,\n setDefaults,\n resetConfig,\n runWithBidder,\n callbackWithBidder,\n setBidderConfig,\n getBidderConfig,\n mergeBidderConfig,\n };\n}\n\nexport const config = newConfig();\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","import {cyrb53Hash, isStr, timestamp} from './utils.js';\nimport {defer, GreedyPromise} from './utils/promise.js';\nimport {config} from './config.js';\n\n/**\n * Placeholder gvlid for when vendor consent is not required. When this value is used as gvlid, the gdpr\n * enforcement module will take it to mean \"vendor consent was given\".\n *\n * see https://github.com/prebid/Prebid.js/issues/8161\n */\nexport const VENDORLESS_GVLID = Object.freeze({});\n\nexport class ConsentHandler {\n #enabled;\n #data;\n #defer;\n #ready;\n #dirty = true;\n #hash;\n generatedTime;\n hashFields;\n\n constructor() {\n this.reset();\n }\n\n #resolve(data) {\n this.#ready = true;\n this.#data = data;\n this.#defer.resolve(data);\n }\n\n /**\n * reset this handler (mainly for tests)\n */\n reset() {\n this.#defer = defer();\n this.#enabled = false;\n this.#data = null;\n this.#ready = false;\n this.generatedTime = null;\n }\n\n /**\n * Enable this consent handler. This should be called by the relevant consent management module\n * on initialization.\n */\n enable() {\n this.#enabled = true;\n }\n\n /**\n * @returns {boolean} true if the related consent management module is enabled.\n */\n get enabled() {\n return this.#enabled;\n }\n\n /**\n * @returns {boolean} true if consent data has been resolved (it may be `null` if the resolution failed).\n */\n get ready() {\n return this.#ready;\n }\n\n /**\n * @returns a promise than resolves to the consent data, or null if no consent data is available\n */\n get promise() {\n if (this.#ready) {\n return GreedyPromise.resolve(this.#data);\n }\n if (!this.#enabled) {\n this.#resolve(null);\n }\n return this.#defer.promise;\n }\n\n setConsentData(data, time = timestamp()) {\n this.generatedTime = time;\n this.#dirty = true;\n this.#resolve(data);\n }\n\n getConsentData() {\n return this.#data;\n }\n\n get hash() {\n if (this.#dirty) {\n this.#hash = cyrb53Hash(JSON.stringify(this.#data && this.hashFields ? this.hashFields.map(f => this.#data[f]) : this.#data))\n this.#dirty = false;\n }\n return this.#hash;\n }\n}\n\nclass UspConsentHandler extends ConsentHandler {\n getConsentMeta() {\n const consentData = this.getConsentData();\n if (consentData && this.generatedTime) {\n return {\n usp: consentData,\n generatedAt: this.generatedTime\n };\n }\n }\n}\n\nclass GdprConsentHandler extends ConsentHandler {\n hashFields = ['gdprApplies', 'consentString']\n getConsentMeta() {\n const consentData = this.getConsentData();\n if (consentData && consentData.vendorData && this.generatedTime) {\n return {\n gdprApplies: consentData.gdprApplies,\n consentStringSize: (isStr(consentData.vendorData.tcString)) ? consentData.vendorData.tcString.length : 0,\n generatedAt: this.generatedTime,\n apiVersion: consentData.apiVersion\n }\n }\n }\n}\n\nclass GppConsentHandler extends ConsentHandler {\n hashFields = ['applicableSections', 'gppString'];\n getConsentMeta() {\n const consentData = this.getConsentData();\n if (consentData && this.generatedTime) {\n return {\n generatedAt: this.generatedTime,\n }\n }\n }\n}\n\nexport function gvlidRegistry() {\n const registry = {};\n const flat = {};\n const none = {};\n return {\n /**\n * Register a module's GVL ID.\n * @param {string} moduleType defined in `activities/modules.js`\n * @param {string} moduleName\n * @param {number} gvlid\n */\n register(moduleType, moduleName, gvlid) {\n if (gvlid) {\n (registry[moduleName] = registry[moduleName] || {})[moduleType] = gvlid;\n if (flat.hasOwnProperty(moduleName)) {\n if (flat[moduleName] !== gvlid) flat[moduleName] = none;\n } else {\n flat[moduleName] = gvlid;\n }\n }\n },\n /**\n * Get a module's GVL ID(s).\n *\n * @param {string} moduleName\n * @return {{modules: {[moduleType]: number}, gvlid?: number}} an object where:\n * `modules` is a map from module type to that module's GVL ID;\n * `gvlid` is the single GVL ID for this family of modules (only defined\n * if all modules with this name declared the same ID).\n */\n get(moduleName) {\n const result = {modules: registry[moduleName] || {}};\n if (flat.hasOwnProperty(moduleName) && flat[moduleName] !== none) {\n result.gvlid = flat[moduleName];\n }\n return result;\n }\n }\n}\n\nexport const gdprDataHandler = new GdprConsentHandler();\nexport const uspDataHandler = new UspConsentHandler();\nexport const gppDataHandler = new GppConsentHandler();\nexport const coppaDataHandler = (() => {\n function getCoppa() {\n return !!(config.getConfig('coppa'))\n }\n return {\n getCoppa,\n getConsentData: getCoppa,\n getConsentMeta: getCoppa,\n reset() {},\n get promise() {\n return GreedyPromise.resolve(getCoppa())\n },\n get hash() {\n return getCoppa() ? '1' : '0'\n }\n }\n})();\n\nexport const GDPR_GVLIDS = gvlidRegistry();\n\nconst ALL_HANDLERS = {\n gdpr: gdprDataHandler,\n usp: uspDataHandler,\n gpp: gppDataHandler,\n coppa: coppaDataHandler,\n}\n\nexport function multiHandler(handlers = ALL_HANDLERS) {\n handlers = Object.entries(handlers);\n function collector(method) {\n return function () {\n return Object.fromEntries(handlers.map(([name, handler]) => [name, handler[method]()]))\n }\n }\n return Object.assign(\n {\n get promise() {\n return GreedyPromise.all(handlers.map(([name, handler]) => handler.promise.then(val => [name, val])))\n .then(entries => Object.fromEntries(entries));\n },\n get hash() {\n return cyrb53Hash(handlers.map(([_, handler]) => handler.hash).join(':'));\n }\n },\n Object.fromEntries(['getConsentData', 'getConsentMeta', 'reset'].map(n => [n, collector(n)])),\n )\n}\n\nexport const allConsent = multiHandler();\n","import {find} from './polyfill.js';\nimport { isEmpty, logWarn } from './utils.js';\nimport { config } from './config.js';\n\nconst _defaultPrecision = 2;\nconst _lgPriceConfig = {\n 'buckets': [{\n 'max': 5,\n 'increment': 0.5\n }]\n};\nconst _mgPriceConfig = {\n 'buckets': [{\n 'max': 20,\n 'increment': 0.1\n }]\n};\nconst _hgPriceConfig = {\n 'buckets': [{\n 'max': 20,\n 'increment': 0.01\n }]\n};\nconst _densePriceConfig = {\n 'buckets': [{\n 'max': 3,\n 'increment': 0.01\n },\n {\n 'max': 8,\n 'increment': 0.05\n },\n {\n 'max': 20,\n 'increment': 0.5\n }]\n};\nconst _autoPriceConfig = {\n 'buckets': [{\n 'max': 5,\n 'increment': 0.05\n },\n {\n 'max': 10,\n 'increment': 0.1\n },\n {\n 'max': 20,\n 'increment': 0.5\n }]\n};\n\nfunction getPriceBucketString(cpm, customConfig, granularityMultiplier = 1) {\n let cpmFloat = parseFloat(cpm);\n if (isNaN(cpmFloat)) {\n cpmFloat = '';\n }\n\n return {\n low: (cpmFloat === '') ? '' : getCpmStringValue(cpm, _lgPriceConfig, granularityMultiplier),\n med: (cpmFloat === '') ? '' : getCpmStringValue(cpm, _mgPriceConfig, granularityMultiplier),\n high: (cpmFloat === '') ? '' : getCpmStringValue(cpm, _hgPriceConfig, granularityMultiplier),\n auto: (cpmFloat === '') ? '' : getCpmStringValue(cpm, _autoPriceConfig, granularityMultiplier),\n dense: (cpmFloat === '') ? '' : getCpmStringValue(cpm, _densePriceConfig, granularityMultiplier),\n custom: (cpmFloat === '') ? '' : getCpmStringValue(cpm, customConfig, granularityMultiplier)\n };\n}\n\nfunction getCpmStringValue(cpm, config, granularityMultiplier) {\n let cpmStr = '';\n if (!isValidPriceConfig(config)) {\n return cpmStr;\n }\n const cap = config.buckets.reduce((prev, curr) => {\n if (prev.max > curr.max) {\n return prev;\n }\n return curr;\n }, {\n 'max': 0,\n });\n\n let bucketFloor = 0;\n let bucket = find(config.buckets, bucket => {\n if (cpm > cap.max * granularityMultiplier) {\n // cpm exceeds cap, just return the cap.\n let precision = bucket.precision;\n if (typeof precision === 'undefined') {\n precision = _defaultPrecision;\n }\n cpmStr = (bucket.max * granularityMultiplier).toFixed(precision);\n } else if (cpm <= bucket.max * granularityMultiplier && cpm >= bucketFloor * granularityMultiplier) {\n bucket.min = bucketFloor;\n return bucket;\n } else {\n bucketFloor = bucket.max;\n }\n });\n if (bucket) {\n cpmStr = getCpmTarget(cpm, bucket, granularityMultiplier);\n }\n return cpmStr;\n}\n\nfunction isValidPriceConfig(config) {\n if (isEmpty(config) || !config.buckets || !Array.isArray(config.buckets)) {\n return false;\n }\n let isValid = true;\n config.buckets.forEach(bucket => {\n if (!bucket.max || !bucket.increment) {\n isValid = false;\n }\n });\n return isValid;\n}\n\nfunction getCpmTarget(cpm, bucket, granularityMultiplier) {\n const precision = typeof bucket.precision !== 'undefined' ? bucket.precision : _defaultPrecision;\n const increment = bucket.increment * granularityMultiplier;\n const bucketMin = bucket.min * granularityMultiplier;\n let roundingFunction = Math.floor;\n let customRoundingFunction = config.getConfig('cpmRoundingFunction');\n if (typeof customRoundingFunction === 'function') {\n roundingFunction = customRoundingFunction;\n }\n\n // start increments at the bucket min and then add bucket min back to arrive at the correct rounding\n // note - we're padding the values to avoid using decimals in the math prior to flooring\n // this is done as JS can return values slightly below the expected mark which would skew the price bucket target\n // (eg 4.01 / 0.01 = 400.99999999999994)\n // min precison should be 2 to move decimal place over.\n let pow = Math.pow(10, precision + 2);\n let cpmToRound = ((cpm * pow) - (bucketMin * pow)) / (increment * pow);\n let cpmTarget;\n let invalidRounding;\n // It is likely that we will be passed {cpmRoundingFunction: roundingFunction()}\n // rather than the expected {cpmRoundingFunction: roundingFunction}. Default back to floor in that case\n try {\n cpmTarget = (roundingFunction(cpmToRound) * increment) + bucketMin;\n } catch (err) {\n invalidRounding = true;\n }\n if (invalidRounding || typeof cpmTarget !== 'number') {\n logWarn('Invalid rounding function passed in config');\n cpmTarget = (Math.floor(cpmToRound) * increment) + bucketMin;\n }\n // force to 10 decimal places to deal with imprecise decimal/binary conversions\n // (for example 0.1 * 3 = 0.30000000000000004)\n\n cpmTarget = Number(cpmTarget.toFixed(10));\n return cpmTarget.toFixed(precision);\n}\n\nexport { getPriceBucketString, isValidPriceConfig };\n","/**\n * events.js\n */\nimport * as utils from './utils.js'\nimport CONSTANTS from './constants.json';\n\nvar slice = Array.prototype.slice;\nvar push = Array.prototype.push;\n\n// define entire events\n// var allEvents = ['bidRequested','bidResponse','bidWon','bidTimeout'];\nvar allEvents = utils._map(CONSTANTS.EVENTS, function (v) {\n return v;\n});\n\nvar idPaths = CONSTANTS.EVENT_ID_PATHS;\n\n// keep a record of all events fired\nvar eventsFired = [];\nconst _public = (function () {\n var _handlers = {};\n var _public = {};\n\n /**\n *\n * @param {String} eventString The name of the event.\n * @param {Array} args The payload emitted with the event.\n * @private\n */\n function _dispatch(eventString, args) {\n utils.logMessage('Emitting event for: ' + eventString);\n\n var eventPayload = args[0] || {};\n var idPath = idPaths[eventString];\n var key = eventPayload[idPath];\n var event = _handlers[eventString] || { que: [] };\n var eventKeys = utils._map(event, function (v, k) {\n return k;\n });\n\n var callbacks = [];\n\n // record the event:\n eventsFired.push({\n eventType: eventString,\n args: eventPayload,\n id: key,\n elapsedTime: utils.getPerformanceNow(),\n });\n\n /** Push each specific callback to the `callbacks` array.\n * If the `event` map has a key that matches the value of the\n * event payload id path, e.g. `eventPayload[idPath]`, then apply\n * each function in the `que` array as an argument to push to the\n * `callbacks` array\n * */\n if (key && utils.contains(eventKeys, key)) {\n push.apply(callbacks, event[key].que);\n }\n\n /** Push each general callback to the `callbacks` array. */\n push.apply(callbacks, event.que);\n\n /** call each of the callbacks */\n utils._each(callbacks, function (fn) {\n if (!fn) return;\n try {\n fn.apply(null, args);\n } catch (e) {\n utils.logError('Error executing handler:', 'events.js', e);\n }\n });\n }\n\n function _checkAvailableEvent(event) {\n return utils.contains(allEvents, event);\n }\n\n _public.on = function (eventString, handler, id) {\n // check whether available event or not\n if (_checkAvailableEvent(eventString)) {\n var event = _handlers[eventString] || { que: [] };\n\n if (id) {\n event[id] = event[id] || { que: [] };\n event[id].que.push(handler);\n } else {\n event.que.push(handler);\n }\n\n _handlers[eventString] = event;\n } else {\n utils.logError('Wrong event name : ' + eventString + ' Valid event names :' + allEvents);\n }\n };\n\n _public.emit = function (event) {\n var args = slice.call(arguments, 1);\n _dispatch(event, args);\n };\n\n _public.off = function (eventString, handler, id) {\n var event = _handlers[eventString];\n\n if (utils.isEmpty(event) || (utils.isEmpty(event.que) && utils.isEmpty(event[id]))) {\n return;\n }\n\n if (id && (utils.isEmpty(event[id]) || utils.isEmpty(event[id].que))) {\n return;\n }\n\n if (id) {\n utils._each(event[id].que, function (_handler) {\n var que = event[id].que;\n if (_handler === handler) {\n que.splice(que.indexOf(_handler), 1);\n }\n });\n } else {\n utils._each(event.que, function (_handler) {\n var que = event.que;\n if (_handler === handler) {\n que.splice(que.indexOf(_handler), 1);\n }\n });\n }\n\n _handlers[eventString] = event;\n };\n\n _public.get = function () {\n return _handlers;\n };\n\n _public.addEvents = function (events) {\n allEvents = allEvents.concat(events);\n }\n\n /**\n * This method can return a copy of all the events fired\n * @return {Array} array of events fired\n */\n _public.getEvents = function () {\n var arrayCopy = [];\n utils._each(eventsFired, function (value) {\n var newProp = Object.assign({}, value);\n arrayCopy.push(newProp);\n });\n\n return arrayCopy;\n };\n\n return _public;\n}());\n\nutils._setEventEmitter(_public.emit.bind(_public));\n\nexport const {on, off, get, getEvents, emit, addEvents} = _public;\n\nexport function clearEvents() {\n eventsFired.length = 0;\n}\n","import funHooks from 'fun-hooks/no-eval/index.js';\nimport {defer} from './utils/promise.js';\n\nexport let hook = funHooks({\n ready: funHooks.SYNC | funHooks.ASYNC | funHooks.QUEUE\n});\n\nconst readyCtl = defer();\nhook.ready = (() => {\n const ready = hook.ready;\n return function () {\n try {\n return ready.apply(hook, arguments);\n } finally {\n readyCtl.resolve();\n }\n }\n})();\n\n/**\n * A promise that resolves when hooks are ready.\n * @type {Promise}\n */\nexport const ready = readyCtl.promise;\n\nexport const getHook = hook.get;\n\nexport function setupBeforeHookFnOnce(baseFn, hookFn, priority = 15) {\n let result = baseFn.getHooks({hook: hookFn});\n if (result.length === 0) {\n baseFn.before(hookFn, priority);\n }\n}\nconst submoduleInstallMap = {};\n\nexport function module(name, install, {postInstallAllowed = false} = {}) {\n hook('async', function (submodules) {\n submodules.forEach(args => install(...args));\n if (postInstallAllowed) submoduleInstallMap[name] = install;\n }, name)([]); // will be queued until hook.ready() called in pbjs.processQueue();\n}\n\nexport function submodule(name, ...args) {\n const install = submoduleInstallMap[name];\n if (install) return install(...args);\n getHook(name).before((next, modules) => {\n modules.push(args);\n next(modules);\n });\n}\n\n/**\n * Copy hook methods (.before, .after, etc) from a given hook to a given wrapper object.\n */\nexport function wrapHook(hook, wrapper) {\n Object.defineProperties(\n wrapper,\n Object.fromEntries(['before', 'after', 'getHooks', 'removeAll'].map((m) => [m, {get: () => hook[m]}]))\n );\n return wrapper;\n}\n","/**\n * This file contains the valid Media Types in Prebid.\n *\n * All adapters are assumed to support banner ads. Other media types are specified by Adapters when they\n * register themselves with prebid-core.\n */\n\n/**\n * @typedef {('native'|'video'|'banner')} MediaType\n * @typedef {('adpod')} VideoContext\n */\n\n/** @type MediaType */\nexport const NATIVE = 'native';\n/** @type MediaType */\nexport const VIDEO = 'video';\n/** @type MediaType */\nexport const BANNER = 'banner';\n/** @type VideoContext */\nexport const ADPOD = 'adpod';\n","import {\n deepAccess,\n deepClone,\n getKeyByValue,\n insertHtmlIntoIframe,\n isArray,\n isBoolean,\n isInteger,\n isNumber,\n isPlainObject,\n logError,\n pick,\n triggerPixel\n} from './utils.js';\nimport {includes} from './polyfill.js';\nimport {auctionManager} from './auctionManager.js';\nimport CONSTANTS from './constants.json';\nimport {NATIVE} from './mediaTypes.js';\n\nexport const nativeAdapters = [];\n\nexport const NATIVE_TARGETING_KEYS = Object.keys(CONSTANTS.NATIVE_KEYS).map(\n key => CONSTANTS.NATIVE_KEYS[key]\n);\n\nexport const IMAGE = {\n ortb: {\n ver: '1.2',\n assets: [\n {\n required: 1,\n id: 1,\n img: {\n type: 3,\n wmin: 100,\n hmin: 100,\n }\n },\n {\n required: 1,\n id: 2,\n title: {\n len: 140,\n }\n },\n {\n required: 1,\n id: 3,\n data: {\n type: 1,\n }\n },\n {\n required: 0,\n id: 4,\n data: {\n type: 2,\n }\n },\n {\n required: 0,\n id: 5,\n img: {\n type: 1,\n wmin: 20,\n hmin: 20,\n }\n },\n ],\n },\n image: { required: true },\n title: { required: true },\n sponsoredBy: { required: true },\n clickUrl: { required: true },\n body: { required: false },\n icon: { required: false },\n};\n\nconst SUPPORTED_TYPES = {\n image: IMAGE\n};\n\nconst { NATIVE_ASSET_TYPES, NATIVE_IMAGE_TYPES, PREBID_NATIVE_DATA_KEYS_TO_ORTB, NATIVE_KEYS_THAT_ARE_NOT_ASSETS, NATIVE_KEYS } = CONSTANTS;\n\n// inverse native maps useful for converting to legacy\nconst PREBID_NATIVE_DATA_KEYS_TO_ORTB_INVERSE = inverse(PREBID_NATIVE_DATA_KEYS_TO_ORTB);\nconst NATIVE_ASSET_TYPES_INVERSE = inverse(NATIVE_ASSET_TYPES);\n\nconst TRACKER_METHODS = {\n img: 1,\n js: 2,\n 1: 'img',\n 2: 'js'\n}\n\nconst TRACKER_EVENTS = {\n impression: 1,\n 'viewable-mrc50': 2,\n 'viewable-mrc100': 3,\n 'viewable-video50': 4,\n}\n\n/**\n * Recieves nativeParams from an adUnit. If the params were not of type 'type',\n * passes them on directly. If they were of type 'type', translate\n * them into the predefined specific asset requests for that type of native ad.\n */\nexport function processNativeAdUnitParams(params) {\n if (params && params.type && typeIsSupported(params.type)) {\n params = SUPPORTED_TYPES[params.type];\n }\n\n if (params && params.ortb && !isOpenRTBBidRequestValid(params.ortb)) {\n return;\n }\n return params;\n}\n\nexport function decorateAdUnitsWithNativeParams(adUnits) {\n adUnits.forEach(adUnit => {\n const nativeParams =\n adUnit.nativeParams || deepAccess(adUnit, 'mediaTypes.native');\n if (nativeParams) {\n adUnit.nativeParams = processNativeAdUnitParams(nativeParams);\n }\n if (adUnit.nativeParams) {\n adUnit.nativeOrtbRequest = adUnit.nativeParams.ortb || toOrtbNativeRequest(adUnit.nativeParams);\n }\n });\n}\nexport function isOpenRTBBidRequestValid(ortb) {\n const assets = ortb.assets;\n if (!Array.isArray(assets) || assets.length === 0) {\n logError(`assets in mediaTypes.native.ortb is not an array, or it's empty. Assets: `, assets);\n return false;\n }\n\n // validate that ids exist, that they are unique and that they are numbers\n const ids = assets.map(asset => asset.id);\n if (assets.length !== new Set(ids).size || ids.some(id => id !== parseInt(id, 10))) {\n logError(`each asset object must have 'id' property, it must be unique and it must be an integer`);\n return false;\n }\n\n if (ortb.hasOwnProperty('eventtrackers') && !Array.isArray(ortb.eventtrackers)) {\n logError('ortb.eventtrackers is not an array. Eventtrackers: ', ortb.eventtrackers);\n return false;\n }\n\n return assets.every(asset => isOpenRTBAssetValid(asset))\n}\n\nfunction isOpenRTBAssetValid(asset) {\n if (!isPlainObject(asset)) {\n logError(`asset must be an object. Provided asset: `, asset);\n return false;\n }\n if (asset.img) {\n if (!isNumber(asset.img.w) && !isNumber(asset.img.wmin)) {\n logError(`for img asset there must be 'w' or 'wmin' property`);\n return false;\n }\n if (!isNumber(asset.img.h) && !isNumber(asset.img.hmin)) {\n logError(`for img asset there must be 'h' or 'hmin' property`);\n return false;\n }\n } else if (asset.title) {\n if (!isNumber(asset.title.len)) {\n logError(`for title asset there must be 'len' property defined`);\n return false;\n }\n } else if (asset.data) {\n if (!isNumber(asset.data.type)) {\n logError(`for data asset 'type' property must be a number`);\n return false;\n }\n } else if (asset.video) {\n if (!Array.isArray(asset.video.mimes) || !Array.isArray(asset.video.protocols) ||\n !isNumber(asset.video.minduration) || !isNumber(asset.video.maxduration)) {\n logError('video asset is not properly configured');\n return false;\n }\n }\n return true;\n}\n\n/**\n * Check if the native type specified in the adUnit is supported by Prebid.\n */\nfunction typeIsSupported(type) {\n if (!(type && includes(Object.keys(SUPPORTED_TYPES), type))) {\n logError(`${type} nativeParam is not supported`);\n return false;\n }\n\n return true;\n}\n\n/**\n * Helper functions for working with native-enabled adUnits\n * TODO: abstract this and the video helper functions into general\n * adunit validation helper functions\n */\nexport const nativeAdUnit = adUnit => {\n const mediaType = adUnit.mediaType === 'native';\n const mediaTypes = deepAccess(adUnit, 'mediaTypes.native');\n return mediaType || mediaTypes;\n}\nexport const nativeBidder = bid => includes(nativeAdapters, bid.bidder);\nexport const hasNonNativeBidder = adUnit =>\n adUnit.bids.filter(bid => !nativeBidder(bid)).length;\n\n/**\n * Validate that the native assets on this bid contain all assets that were\n * marked as required in the adUnit configuration.\n * @param {Bid} bid Native bid to validate\n * @param {BidRequest[]} bidRequests All bid requests for an auction\n * @return {Boolean} If object is valid\n */\nexport function nativeBidIsValid(bid, {index = auctionManager.index} = {}) {\n const adUnit = index.getAdUnit(bid);\n if (!adUnit) { return false; }\n let ortbRequest = adUnit.nativeOrtbRequest\n let ortbResponse = bid.native?.ortb || toOrtbNativeResponse(bid.native, ortbRequest);\n return isNativeOpenRTBBidValid(ortbResponse, ortbRequest);\n}\n\nexport function isNativeOpenRTBBidValid(bidORTB, bidRequestORTB) {\n if (!deepAccess(bidORTB, 'link.url')) {\n logError(`native response doesn't have 'link' property. Ortb response: `, bidORTB);\n return false;\n }\n\n let requiredAssetIds = bidRequestORTB.assets.filter(asset => asset.required === 1).map(a => a.id);\n let returnedAssetIds = bidORTB.assets.map(asset => asset.id);\n\n const match = requiredAssetIds.every(assetId => includes(returnedAssetIds, assetId));\n if (!match) {\n logError(`didn't receive a bid with all required assets. Required ids: ${requiredAssetIds}, but received ids in response: ${returnedAssetIds}`);\n }\n\n return match;\n}\n\n/*\n * Native responses may have associated impression or click trackers.\n * This retrieves the appropriate tracker urls for the given ad object and\n * fires them. As a native creatives may be in a cross-origin frame, it may be\n * necessary to invoke this function via postMessage. secureCreatives is\n * configured to fire this function when it receives a `message` of 'Prebid Native'\n * and an `adId` with the value of the `bid.adId`. When a message is posted with\n * these parameters, impression trackers are fired. To fire click trackers, the\n * message should contain an `action` set to 'click'.\n *\n * // Native creative template example usage\n * \n * %%PATTERN:hb_native_title%%\n * \n *\n * \n */\nexport function fireNativeTrackers(message, bidResponse) {\n const nativeResponse = bidResponse.native.ortb || legacyPropertiesToOrtbNative(bidResponse.native);\n\n if (message.action === 'click') {\n fireClickTrackers(nativeResponse, message?.assetId);\n } else {\n fireImpressionTrackers(nativeResponse);\n }\n return message.action;\n}\n\nexport function fireImpressionTrackers(nativeResponse, {runMarkup = (mkup) => insertHtmlIntoIframe(mkup), fetchURL = triggerPixel} = {}) {\n const impTrackers = (nativeResponse.eventtrackers || [])\n .filter(tracker => tracker.event === TRACKER_EVENTS.impression);\n\n let {img, js} = impTrackers.reduce((tally, tracker) => {\n if (TRACKER_METHODS.hasOwnProperty(tracker.method)) {\n tally[TRACKER_METHODS[tracker.method]].push(tracker.url)\n }\n return tally;\n }, {img: [], js: []});\n\n if (nativeResponse.imptrackers) {\n img = img.concat(nativeResponse.imptrackers);\n }\n img.forEach(url => fetchURL(url));\n\n js = js.map(url => ``);\n if (nativeResponse.jstracker) {\n // jstracker is already HTML markup\n js = js.concat([nativeResponse.jstracker]);\n }\n if (js.length) {\n runMarkup(js.join('\\n'));\n }\n}\n\nexport function fireClickTrackers(nativeResponse, assetId = null, {fetchURL = triggerPixel} = {}) {\n // legacy click tracker\n if (!assetId) {\n (nativeResponse.link?.clicktrackers || []).forEach(url => fetchURL(url));\n } else {\n // ortb click tracker. This will try to call the clicktracker associated with the asset;\n // will fallback to the link if none is found.\n const assetIdLinkMap = (nativeResponse.assets || [])\n .filter(a => a.link)\n .reduce((map, asset) => {\n map[asset.id] = asset.link;\n return map\n }, {});\n const masterClickTrackers = nativeResponse.link?.clicktrackers || [];\n let assetLink = assetIdLinkMap[assetId];\n let clickTrackers = masterClickTrackers;\n if (assetLink) {\n clickTrackers = assetLink.clicktrackers || [];\n }\n clickTrackers.forEach(url => fetchURL(url));\n }\n}\n\n/**\n * Gets native targeting key-value pairs\n * @param {Object} bid\n * @return {Object} targeting\n */\nexport function getNativeTargeting(bid, {index = auctionManager.index} = {}) {\n let keyValues = {};\n const adUnit = index.getAdUnit(bid);\n if (deepAccess(adUnit, 'nativeParams.rendererUrl')) {\n bid['native']['rendererUrl'] = getAssetValue(adUnit.nativeParams['rendererUrl']);\n } else if (deepAccess(adUnit, 'nativeParams.adTemplate')) {\n bid['native']['adTemplate'] = getAssetValue(adUnit.nativeParams['adTemplate']);\n }\n\n const globalSendTargetingKeys = deepAccess(\n adUnit,\n `nativeParams.sendTargetingKeys`\n ) !== false;\n\n const nativeKeys = getNativeKeys(adUnit);\n\n const flatBidNativeKeys = { ...bid.native, ...bid.native.ext };\n delete flatBidNativeKeys.ext;\n\n Object.keys(flatBidNativeKeys).forEach(asset => {\n const key = nativeKeys[asset];\n let value = getAssetValue(bid.native[asset]) || getAssetValue(deepAccess(bid, `native.ext.${asset}`));\n\n if (asset === 'adTemplate' || !key || !value) {\n return;\n }\n\n let sendPlaceholder = deepAccess(adUnit, `nativeParams.${asset}.sendId`);\n if (typeof sendPlaceholder !== 'boolean') {\n sendPlaceholder = deepAccess(adUnit, `nativeParams.ext.${asset}.sendId`);\n }\n\n if (sendPlaceholder) {\n const placeholder = `${key}:${bid.adId}`;\n value = placeholder;\n }\n\n let assetSendTargetingKeys = deepAccess(adUnit, `nativeParams.${asset}.sendTargetingKeys`);\n if (typeof assetSendTargetingKeys !== 'boolean') {\n assetSendTargetingKeys = deepAccess(adUnit, `nativeParams.ext.${asset}.sendTargetingKeys`);\n }\n\n const sendTargeting = typeof assetSendTargetingKeys === 'boolean' ? assetSendTargetingKeys : globalSendTargetingKeys;\n\n if (sendTargeting) {\n keyValues[key] = value;\n }\n });\n\n return keyValues;\n}\n\nfunction assetsMessage(data, adObject, keys, {index = auctionManager.index} = {}) {\n const message = {\n message: 'assetResponse',\n adId: data.adId,\n };\n\n const adUnit = index.getAdUnit(adObject);\n let nativeResp = adObject.native;\n\n if (adObject.native.ortb) {\n message.ortb = adObject.native.ortb;\n } else if (adUnit.mediaTypes?.native?.ortb) {\n message.ortb = toOrtbNativeResponse(adObject.native, adUnit.nativeOrtbRequest);\n }\n message.assets = [];\n\n (keys == null ? Object.keys(nativeResp) : keys).forEach(function(key) {\n if (key === 'adTemplate' && nativeResp[key]) {\n message.adTemplate = getAssetValue(nativeResp[key]);\n } else if (key === 'rendererUrl' && nativeResp[key]) {\n message.rendererUrl = getAssetValue(nativeResp[key]);\n } else if (key === 'ext') {\n Object.keys(nativeResp[key]).forEach(extKey => {\n if (nativeResp[key][extKey]) {\n const value = getAssetValue(nativeResp[key][extKey]);\n message.assets.push({ key: extKey, value });\n }\n })\n } else if (nativeResp[key] && CONSTANTS.NATIVE_KEYS.hasOwnProperty(key)) {\n const value = getAssetValue(nativeResp[key]);\n\n message.assets.push({ key, value });\n }\n });\n return message;\n}\n\n/**\n * Constructs a message object containing asset values for each of the\n * requested data keys.\n */\nexport function getAssetMessage(data, adObject) {\n const keys = data.assets.map((k) => getKeyByValue(CONSTANTS.NATIVE_KEYS, k));\n return assetsMessage(data, adObject, keys);\n}\n\nexport function getAllAssetsMessage(data, adObject) {\n return assetsMessage(data, adObject, null);\n}\n\n/**\n * Native assets can be a string or an object with a url prop. Returns the value\n * appropriate for sending in adserver targeting or placeholder replacement.\n */\nfunction getAssetValue(value) {\n return value?.url || value;\n}\n\nfunction getNativeKeys(adUnit) {\n const extraNativeKeys = {}\n\n if (deepAccess(adUnit, 'nativeParams.ext')) {\n Object.keys(adUnit.nativeParams.ext).forEach(extKey => {\n extraNativeKeys[extKey] = `hb_native_${extKey}`;\n })\n }\n\n return {\n ...CONSTANTS.NATIVE_KEYS,\n ...extraNativeKeys\n }\n}\n\n/**\n * converts Prebid legacy native assets request to OpenRTB format\n * @param {object} legacyNativeAssets an object that describes a native bid request in Prebid proprietary format\n * @returns an OpenRTB format of the same bid request\n */\nexport function toOrtbNativeRequest(legacyNativeAssets) {\n if (!legacyNativeAssets && !isPlainObject(legacyNativeAssets)) {\n logError('Native assets object is empty or not an object: ', legacyNativeAssets);\n return;\n }\n const ortb = {\n ver: '1.2',\n assets: []\n };\n for (let key in legacyNativeAssets) {\n // skip conversion for non-asset keys\n if (NATIVE_KEYS_THAT_ARE_NOT_ASSETS.includes(key)) continue;\n if (!NATIVE_KEYS.hasOwnProperty(key)) {\n logError(`Unrecognized native asset code: ${key}. Asset will be ignored.`);\n continue;\n }\n\n if (key === 'privacyLink') {\n ortb.privacy = 1;\n continue;\n }\n\n const asset = legacyNativeAssets[key];\n let required = 0;\n if (asset.required && isBoolean(asset.required)) {\n required = Number(asset.required);\n }\n const ortbAsset = {\n id: ortb.assets.length,\n required\n };\n // data cases\n if (key in PREBID_NATIVE_DATA_KEYS_TO_ORTB) {\n ortbAsset.data = {\n type: NATIVE_ASSET_TYPES[PREBID_NATIVE_DATA_KEYS_TO_ORTB[key]]\n }\n if (asset.len) {\n ortbAsset.data.len = asset.len;\n }\n // icon or image case\n } else if (key === 'icon' || key === 'image') {\n ortbAsset.img = {\n type: key === 'icon' ? NATIVE_IMAGE_TYPES.ICON : NATIVE_IMAGE_TYPES.MAIN,\n }\n // if min_width and min_height are defined in aspect_ratio, they are preferred\n if (asset.aspect_ratios) {\n if (!isArray(asset.aspect_ratios)) {\n logError(\"image.aspect_ratios was passed, but it's not a an array:\", asset.aspect_ratios);\n } else if (!asset.aspect_ratios.length) {\n logError(\"image.aspect_ratios was passed, but it's empty:\", asset.aspect_ratios);\n } else {\n const { min_width: minWidth, min_height: minHeight } = asset.aspect_ratios[0];\n if (!isInteger(minWidth) || !isInteger(minHeight)) {\n logError('image.aspect_ratios min_width or min_height are invalid: ', minWidth, minHeight);\n } else {\n ortbAsset.img.wmin = minWidth;\n ortbAsset.img.hmin = minHeight;\n }\n const aspectRatios = asset.aspect_ratios\n .filter((ar) => ar.ratio_width && ar.ratio_height)\n .map(ratio => `${ratio.ratio_width}:${ratio.ratio_height}`);\n if (aspectRatios.length > 0) {\n ortbAsset.img.ext = {\n aspectratios: aspectRatios\n }\n }\n }\n }\n\n // if asset.sizes exist, by OpenRTB spec we should remove wmin and hmin\n if (asset.sizes) {\n if (asset.sizes.length !== 2 || !isInteger(asset.sizes[0]) || !isInteger(asset.sizes[1])) {\n logError('image.sizes was passed, but its value is not an array of integers:', asset.sizes);\n } else {\n ortbAsset.img.w = asset.sizes[0];\n ortbAsset.img.h = asset.sizes[1];\n delete ortbAsset.img.hmin;\n delete ortbAsset.img.wmin;\n }\n }\n // title case\n } else if (key === 'title') {\n ortbAsset.title = {\n // in openRTB, len is required for titles, while in legacy prebid was not.\n // for this reason, if len is missing in legacy prebid, we're adding a default value of 140.\n len: asset.len || 140\n }\n // all extensions to the native bid request are passed as is\n } else if (key === 'ext') {\n ortbAsset.ext = asset;\n // in `ext` case, required field is not needed\n delete ortbAsset.required;\n }\n ortb.assets.push(ortbAsset);\n }\n return ortb;\n}\n\n/**\n * Greatest common divisor between two positive integers\n * https://en.wikipedia.org/wiki/Euclidean_algorithm\n */\nfunction gcd(a, b) {\n while (a && b && a !== b) {\n if (a > b) {\n a = a - b;\n } else {\n b = b - a;\n }\n }\n return a || b;\n}\n\n/**\n * This function converts an OpenRTB native request object to Prebid proprietary\n * format. The purpose of this function is to help adapters to handle the\n * transition phase where publishers may be using OpenRTB objects but the\n * bidder does not yet support it.\n * @param {object} openRTBRequest an OpenRTB v1.2 request object\n * @returns a Prebid legacy native format request\n */\nexport function fromOrtbNativeRequest(openRTBRequest) {\n if (!isOpenRTBBidRequestValid(openRTBRequest)) {\n return;\n }\n\n const oldNativeObject = {};\n for (const asset of openRTBRequest.assets) {\n if (asset.title) {\n const title = {\n required: asset.required ? Boolean(asset.required) : false,\n len: asset.title.len\n }\n oldNativeObject.title = title;\n } else if (asset.img) {\n const image = {\n required: asset.required ? Boolean(asset.required) : false,\n }\n if (asset.img.w && asset.img.h) {\n image.sizes = [asset.img.w, asset.img.h];\n } else if (asset.img.wmin && asset.img.hmin) {\n const scale = gcd(asset.img.wmin, asset.img.hmin)\n image.aspect_ratios = [{\n min_width: asset.img.wmin,\n min_height: asset.img.hmin,\n ratio_width: asset.img.wmin / scale,\n ratio_height: asset.img.hmin / scale\n }]\n }\n\n if (asset.img.type === NATIVE_IMAGE_TYPES.MAIN) {\n oldNativeObject.image = image;\n } else {\n oldNativeObject.icon = image;\n }\n } else if (asset.data) {\n let assetType = Object.keys(NATIVE_ASSET_TYPES).find(k => NATIVE_ASSET_TYPES[k] === asset.data.type);\n let prebidAssetName = Object.keys(PREBID_NATIVE_DATA_KEYS_TO_ORTB).find(k => PREBID_NATIVE_DATA_KEYS_TO_ORTB[k] === assetType);\n oldNativeObject[prebidAssetName] = {\n required: asset.required ? Boolean(asset.required) : false,\n }\n if (asset.data.len) {\n oldNativeObject[prebidAssetName].len = asset.data.len;\n }\n }\n if (openRTBRequest.privacy) {\n oldNativeObject.privacyLink = { required: false };\n }\n // video was not supported by old prebid assets\n }\n return oldNativeObject;\n}\n\n/**\n * Converts an OpenRTB request to a proprietary Prebid.js format.\n * The proprietary Prebid format has many limitations and will be dropped in\n * the future; adapters are encouraged to stop using it in favour of OpenRTB format.\n * IMPLEMENTATION DETAILS: This function returns the same exact object if no\n * conversion is needed. If a conversion is needed (meaning, at least one\n * bidRequest contains a native.ortb definition), it will return a copy.\n *\n * @param {BidRequest[]} bidRequests an array of valid bid requests\n * @returns an array of valid bid requests where the openRTB bids are converted to proprietary format.\n */\nexport function convertOrtbRequestToProprietaryNative(bidRequests) {\n if (FEATURES.NATIVE) {\n if (!bidRequests || !isArray(bidRequests)) return bidRequests;\n // check if a conversion is needed\n if (!bidRequests.some(bidRequest => (bidRequest?.mediaTypes || {})[NATIVE]?.ortb)) {\n return bidRequests;\n }\n let bidRequestsCopy = deepClone(bidRequests);\n // convert Native ORTB definition to old-style prebid native definition\n for (const bidRequest of bidRequestsCopy) {\n if (bidRequest.mediaTypes && bidRequest.mediaTypes[NATIVE] && bidRequest.mediaTypes[NATIVE].ortb) {\n bidRequest.mediaTypes[NATIVE] = Object.assign(\n pick(bidRequest.mediaTypes[NATIVE], NATIVE_KEYS_THAT_ARE_NOT_ASSETS),\n fromOrtbNativeRequest(bidRequest.mediaTypes[NATIVE].ortb)\n );\n bidRequest.nativeParams = processNativeAdUnitParams(bidRequest.mediaTypes[NATIVE]);\n }\n }\n return bidRequestsCopy;\n }\n return bidRequests;\n}\n\n/**\n * convert PBJS proprietary native properties that are *not* assets to the ORTB native format.\n *\n * @param legacyNative `bidResponse.native` object as returned by adapters\n */\nexport function legacyPropertiesToOrtbNative(legacyNative) {\n const response = {\n link: {},\n eventtrackers: []\n }\n Object.entries(legacyNative).forEach(([key, value]) => {\n switch (key) {\n case 'clickUrl':\n response.link.url = value;\n break;\n case 'clickTrackers':\n response.link.clicktrackers = Array.isArray(value) ? value : [value];\n break;\n case 'impressionTrackers':\n (Array.isArray(value) ? value : [value]).forEach(url => {\n response.eventtrackers.push({\n event: TRACKER_EVENTS.impression,\n method: TRACKER_METHODS.img,\n url\n });\n });\n break;\n case 'javascriptTrackers':\n // jstracker is deprecated, but we need to use it here since 'javascriptTrackers' is markup, not an url\n // TODO: at the time of writing this, core expected javascriptTrackers to be a string (despite the name),\n // but many adapters are passing an array. It's possible that some of them are, in fact, passing URLs and not markup\n // in general, native trackers seem to be neglected and/or broken\n response.jstracker = Array.isArray(value) ? value.join('') : value;\n break;\n case 'privacyLink':\n response.privacy = value;\n break;\n }\n });\n return response;\n}\n\nexport function toOrtbNativeResponse(legacyResponse, ortbRequest) {\n const ortbResponse = {\n ...legacyPropertiesToOrtbNative(legacyResponse),\n assets: []\n };\n\n function useRequestAsset(predicate, fn) {\n let asset = ortbRequest.assets.find(predicate);\n if (asset != null) {\n asset = deepClone(asset);\n fn(asset);\n ortbResponse.assets.push(asset);\n }\n }\n\n Object.keys(legacyResponse).filter(key => !!legacyResponse[key]).forEach(key => {\n const value = getAssetValue(legacyResponse[key]);\n switch (key) {\n // process titles\n case 'title':\n useRequestAsset(asset => asset.title != null, titleAsset => {\n titleAsset.title = {\n text: value\n };\n })\n break;\n case 'image':\n case 'icon':\n const imageType = key === 'image' ? NATIVE_IMAGE_TYPES.MAIN : NATIVE_IMAGE_TYPES.ICON;\n useRequestAsset(asset => asset.img != null && asset.img.type === imageType, imageAsset => {\n imageAsset.img = {\n url: value\n };\n })\n break;\n default:\n if (key in PREBID_NATIVE_DATA_KEYS_TO_ORTB) {\n useRequestAsset(asset => asset.data != null && asset.data.type === NATIVE_ASSET_TYPES[PREBID_NATIVE_DATA_KEYS_TO_ORTB[key]], dataAsset => {\n dataAsset.data = {\n value\n };\n })\n }\n break;\n }\n });\n return ortbResponse;\n}\n\n/**\n * Generates a legacy response from an ortb response. Useful during the transition period.\n * @param {*} ortbResponse a standard ortb response object\n * @param {*} ortbRequest the ortb request, useful to match ids.\n * @returns an object containing the response in legacy native format: { title: \"this is a title\", image: ... }\n */\nexport function toLegacyResponse(ortbResponse, ortbRequest) {\n const legacyResponse = {};\n const requestAssets = ortbRequest?.assets || [];\n legacyResponse.clickUrl = ortbResponse.link.url;\n legacyResponse.privacyLink = ortbResponse.privacy;\n for (const asset of ortbResponse?.assets || []) {\n const requestAsset = requestAssets.find(reqAsset => asset.id === reqAsset.id);\n if (asset.title) {\n legacyResponse.title = asset.title.text;\n } else if (asset.img) {\n legacyResponse[requestAsset.img.type === NATIVE_IMAGE_TYPES.MAIN ? 'image' : 'icon'] = {\n url: asset.img.url,\n width: asset.img.w,\n height: asset.img.h\n };\n } else if (asset.data) {\n legacyResponse[PREBID_NATIVE_DATA_KEYS_TO_ORTB_INVERSE[NATIVE_ASSET_TYPES_INVERSE[requestAsset.data.type]]] = asset.data.value;\n }\n }\n\n // Handle trackers\n legacyResponse.impressionTrackers = [];\n let jsTrackers = [];\n\n if (ortbResponse.imptrackers) {\n legacyResponse.impressionTrackers.push(...ortbResponse.imptrackers);\n }\n for (const eventTracker of ortbResponse?.eventtrackers || []) {\n if (eventTracker.event === TRACKER_EVENTS.impression && eventTracker.method === TRACKER_METHODS.img) {\n legacyResponse.impressionTrackers.push(eventTracker.url);\n }\n if (eventTracker.event === TRACKER_EVENTS.impression && eventTracker.method === TRACKER_METHODS.js) {\n jsTrackers.push(eventTracker.url);\n }\n }\n\n jsTrackers = jsTrackers.map(url => ``);\n if (ortbResponse?.jstracker) { jsTrackers.push(ortbResponse.jstracker); }\n if (jsTrackers.length) {\n legacyResponse.javascriptTrackers = jsTrackers.join('\\n');\n }\n\n return legacyResponse;\n}\n\n/**\n * Inverts key-values of an object.\n */\nfunction inverse(obj) {\n var retobj = {};\n for (var key in obj) {\n retobj[obj[key]] = key;\n }\n return retobj;\n}\n","// These stubs are here to help transition away from core-js polyfills for browsers we are no longer supporting.\n// You should not need these for new code; use stock JS instead!\n\nexport function includes(target, elem, start) {\n return (target && target.includes(elem, start)) || false;\n}\n\nexport function arrayFrom() {\n return Array.from.apply(Array, arguments);\n}\n\nexport function find(arr, pred, thisArg) {\n return arr && arr.find(pred, thisArg);\n}\n\nexport function findIndex(arr, pred, thisArg) {\n return arr && arr.findIndex(pred, thisArg);\n}\n","// if $$PREBID_GLOBAL$$ already exists in global document scope, use it, if not, create the object\n// global defination should happen BEFORE imports to avoid global undefined errors.\n/* global $$DEFINE_PREBID_GLOBAL$$ */\nconst scope = !$$DEFINE_PREBID_GLOBAL$$ ? {} : window;\nconst global = scope.$$PREBID_GLOBAL$$ = scope.$$PREBID_GLOBAL$$ || {};\nglobal.cmd = global.cmd || [];\nglobal.que = global.que || [];\n\n// create a pbjs global pointer\nif (scope === window) {\n scope._pbjsGlobals = scope._pbjsGlobals || [];\n scope._pbjsGlobals.push('$$PREBID_GLOBAL$$');\n}\n\nexport function getGlobal() {\n return global;\n}\n\nexport function registerModule(name) {\n global.installedModules.push(name);\n}\n","/**\n * The referer detection module attempts to gather referer information from the current page that prebid.js resides in.\n * The information that it tries to collect includes:\n * The detected top url in the nav bar,\n * Whether it was able to reach the top most window (if for example it was embedded in several iframes),\n * The number of iframes it was embedded in if applicable (by default max ten iframes),\n * A list of the domains of each embedded window if applicable.\n * Canonical URL which refers to an HTML link element, with the attribute of rel=\"canonical\", found in the element of your webpage\n */\n\nimport { config } from './config.js';\nimport {logWarn} from './utils.js';\n\n/**\n * Prepend a URL with the page's protocol (http/https), if necessary.\n */\nexport function ensureProtocol(url, win = window) {\n if (!url) return url;\n if (/\\w+:\\/\\//.exec(url)) {\n // url already has protocol\n return url;\n }\n let windowProto = win.location.protocol;\n try {\n windowProto = win.top.location.protocol;\n } catch (e) {}\n if (/^\\/\\//.exec(url)) {\n // url uses relative protocol (\"//example.com\")\n return windowProto + url;\n } else {\n return `${windowProto}//${url}`;\n }\n}\n\n/**\n * Extract the domain portion from a URL.\n * @param url\n * @param noLeadingWww: if true, remove 'www.' appearing at the beginning of the domain.\n * @param noPort: if true, do not include the ':[port]' portion\n */\nexport function parseDomain(url, {noLeadingWww = false, noPort = false} = {}) {\n try {\n url = new URL(ensureProtocol(url));\n } catch (e) {\n return;\n }\n url = noPort ? url.hostname : url.host;\n if (noLeadingWww && url.startsWith('www.')) {\n url = url.substring(4);\n }\n return url;\n}\n\n/**\n * This function returns canonical URL which refers to an HTML link element, with the attribute of rel=\"canonical\", found in the element of your webpage\n *\n * @param {Object} doc document\n * @returns {string|null}\n */\nfunction getCanonicalUrl(doc) {\n try {\n const element = doc.querySelector(\"link[rel='canonical']\");\n\n if (element !== null) {\n return element.href;\n }\n } catch (e) {\n // Ignore error\n }\n\n return null;\n}\n\n/**\n * @param {Window} win Window\n * @returns {Function}\n */\nexport function detectReferer(win) {\n /**\n * This function would return a read-only array of hostnames for all the parent frames.\n * win.location.ancestorOrigins is only supported in webkit browsers. For non-webkit browsers it will return undefined.\n *\n * @param {Window} win Window object\n * @returns {(undefined|Array)} Ancestor origins or undefined\n */\n function getAncestorOrigins(win) {\n try {\n if (!win.location.ancestorOrigins) {\n return;\n }\n\n return win.location.ancestorOrigins;\n } catch (e) {\n // Ignore error\n }\n }\n\n // TODO: the meaning of \"reachedTop\" seems to be intentionally ambiguous - best to leave them out of\n // the typedef for now. (for example, unit tests enforce that \"reachedTop\" should be false in some situations where we\n // happily provide a location for the top).\n\n /**\n * @typedef {Object} refererInfo\n * @property {string|null} location the browser's location, or null if not available (due to cross-origin restrictions)\n * @property {string|null} canonicalUrl the site's canonical URL as set by the publisher, through setConfig({pageUrl}) or \n * @property {string|null} page the best candidate for the current page URL: `canonicalUrl`, falling back to `location`\n * @property {string|null} domain the domain portion of `page`\n * @property {string|null} ref the referrer (document.referrer) to the current page, or null if not available (due to cross-origin restrictions)\n * @property {string} topmostLocation of the top-most frame for which we could guess the location. Outside of cross-origin scenarios, this is equivalent to `location`.\n * @property {number} numIframes number of steps between window.self and window.top\n * @property {Array[string|null]} stack our best guess at the location for each frame, in the direction top -> self.\n */\n\n /**\n * Walk up the windows to get the origin stack and best available referrer, canonical URL, etc.\n *\n * @returns {refererInfo}\n */\n function refererInfo() {\n const stack = [];\n const ancestors = getAncestorOrigins(win);\n const maxNestedIframes = config.getConfig('maxNestedIframes');\n\n let currentWindow;\n let bestLocation;\n let bestCanonicalUrl;\n let reachedTop = false;\n let level = 0;\n let valuesFromAmp = false;\n let inAmpFrame = false;\n let hasTopLocation = false;\n\n do {\n const previousWindow = currentWindow;\n const wasInAmpFrame = inAmpFrame;\n let currentLocation;\n let crossOrigin = false;\n let foundLocation = null;\n\n inAmpFrame = false;\n currentWindow = currentWindow ? currentWindow.parent : win;\n\n try {\n currentLocation = currentWindow.location.href || null;\n } catch (e) {\n crossOrigin = true;\n }\n\n if (crossOrigin) {\n if (wasInAmpFrame) {\n const context = previousWindow.context;\n\n try {\n foundLocation = context.sourceUrl;\n bestLocation = foundLocation;\n hasTopLocation = true;\n\n valuesFromAmp = true;\n\n if (currentWindow === win.top) {\n reachedTop = true;\n }\n\n if (context.canonicalUrl) {\n bestCanonicalUrl = context.canonicalUrl;\n }\n } catch (e) { /* Do nothing */ }\n } else {\n logWarn('Trying to access cross domain iframe. Continuing without referrer and location');\n\n try {\n // the referrer to an iframe is the parent window\n const referrer = previousWindow.document.referrer;\n\n if (referrer) {\n foundLocation = referrer;\n\n if (currentWindow === win.top) {\n reachedTop = true;\n }\n }\n } catch (e) { /* Do nothing */ }\n\n if (!foundLocation && ancestors && ancestors[level - 1]) {\n foundLocation = ancestors[level - 1];\n if (currentWindow === win.top) {\n hasTopLocation = true;\n }\n }\n\n if (foundLocation && !valuesFromAmp) {\n bestLocation = foundLocation;\n }\n }\n } else {\n if (currentLocation) {\n foundLocation = currentLocation;\n bestLocation = foundLocation;\n valuesFromAmp = false;\n\n if (currentWindow === win.top) {\n reachedTop = true;\n\n const canonicalUrl = getCanonicalUrl(currentWindow.document);\n\n if (canonicalUrl) {\n bestCanonicalUrl = canonicalUrl;\n }\n }\n }\n\n if (currentWindow.context && currentWindow.context.sourceUrl) {\n inAmpFrame = true;\n }\n }\n\n stack.push(foundLocation);\n level++;\n } while (currentWindow !== win.top && level < maxNestedIframes);\n\n stack.reverse();\n\n let ref;\n try {\n ref = win.top.document.referrer;\n } catch (e) {}\n\n const location = reachedTop || hasTopLocation ? bestLocation : null;\n const canonicalUrl = config.getConfig('pageUrl') || bestCanonicalUrl || null;\n let page = config.getConfig('pageUrl') || location || ensureProtocol(canonicalUrl, win);\n\n if (location && location.indexOf('?') > -1 && page.indexOf('?') === -1) {\n page = `${page}${location.substring(location.indexOf('?'))}`;\n }\n\n return {\n reachedTop,\n isAmp: valuesFromAmp,\n numIframes: level - 1,\n stack,\n topmostLocation: bestLocation || null,\n location,\n canonicalUrl,\n page,\n domain: parseDomain(page) || null,\n ref: ref || null,\n // TODO: the \"legacy\" refererInfo object is provided here, for now, to accomodate\n // adapters that decided to just send it verbatim to their backend.\n legacy: {\n reachedTop,\n isAmp: valuesFromAmp,\n numIframes: level - 1,\n stack,\n referer: bestLocation || null,\n canonicalUrl\n }\n };\n }\n\n return refererInfo;\n}\n\n// cache result of fn (= referer info) as long as:\n// - we are the top window\n// - canonical URL tag and window location have not changed\nexport function cacheWithLocation(fn, win = window) {\n if (win.top !== win) return fn;\n let canonical, href, value;\n return function () {\n const newCanonical = getCanonicalUrl(win.document);\n const newHref = win.location.href;\n if (canonical !== newCanonical || newHref !== href) {\n canonical = newCanonical;\n href = newHref;\n value = fn();\n }\n return value;\n }\n}\n\n/**\n * @type {function(): refererInfo}\n */\nexport const getRefererInfo = cacheWithLocation(detectReferer(window));\n","import {checkCookieSupport, hasDeviceAccess, logError} from './utils.js';\nimport {bidderSettings} from './bidderSettings.js';\nimport {MODULE_TYPE_BIDDER, MODULE_TYPE_PREBID} from './activities/modules.js';\nimport {isActivityAllowed, registerActivityControl} from './activities/rules.js';\nimport {\n ACTIVITY_PARAM_ADAPTER_CODE,\n ACTIVITY_PARAM_COMPONENT_TYPE,\n ACTIVITY_PARAM_STORAGE_TYPE\n} from './activities/params.js';\n\nimport {ACTIVITY_ACCESS_DEVICE} from './activities/activities.js';\nimport {config} from './config.js';\nimport adapterManager from './adapterManager.js';\nimport {activityParams} from './activities/activityParams.js';\n\nexport const STORAGE_TYPE_LOCALSTORAGE = 'html5';\nexport const STORAGE_TYPE_COOKIES = 'cookie';\n\nexport let storageCallbacks = [];\n\n/*\n * Storage manager constructor. Consumers should prefer one of `getStorageManager` or `getCoreStorageManager`.\n */\nexport function newStorageManager({moduleName, moduleType} = {}, {isAllowed = isActivityAllowed} = {}) {\n function isValid(cb, storageType) {\n let mod = moduleName;\n const curBidder = config.getCurrentBidder();\n if (curBidder && moduleType === MODULE_TYPE_BIDDER && adapterManager.aliasRegistry[curBidder] === moduleName) {\n mod = curBidder;\n }\n const result = {\n valid: isAllowed(ACTIVITY_ACCESS_DEVICE, activityParams(moduleType, mod, {\n [ACTIVITY_PARAM_STORAGE_TYPE]: storageType\n }))\n };\n return cb(result);\n }\n\n function schedule(operation, storageType, done) {\n if (done && typeof done === 'function') {\n storageCallbacks.push(function() {\n let result = isValid(operation, storageType);\n done(result);\n });\n } else {\n return isValid(operation, storageType);\n }\n }\n\n /**\n * @param {string} key\n * @param {string} value\n * @param {string} [expires='']\n * @param {string} [sameSite='/']\n * @param {string} [domain] domain (e.g., 'example.com' or 'subdomain.example.com').\n * If not specified, defaults to the host portion of the current document location.\n * If a domain is specified, subdomains are always included.\n * Domain must match the domain of the JavaScript origin. Setting cookies to foreign domains will be silently ignored.\n */\n const setCookie = function (key, value, expires, sameSite, domain, done) {\n let cb = function (result) {\n if (result && result.valid) {\n const domainPortion = (domain && domain !== '') ? ` ;domain=${encodeURIComponent(domain)}` : '';\n const expiresPortion = (expires && expires !== '') ? ` ;expires=${expires}` : '';\n const isNone = (sameSite != null && sameSite.toLowerCase() == 'none')\n const secure = (isNone) ? '; Secure' : '';\n document.cookie = `${key}=${encodeURIComponent(value)}${expiresPortion}; path=/${domainPortion}${sameSite ? `; SameSite=${sameSite}` : ''}${secure}`;\n }\n }\n return schedule(cb, STORAGE_TYPE_COOKIES, done);\n };\n\n /**\n * @param {string} name\n * @returns {(string|null)}\n */\n const getCookie = function(name, done) {\n let cb = function (result) {\n if (result && result.valid) {\n let m = window.document.cookie.match('(^|;)\\\\s*' + name + '\\\\s*=\\\\s*([^;]*)\\\\s*(;|$)');\n return m ? decodeURIComponent(m[2]) : null;\n }\n return null;\n }\n return schedule(cb, STORAGE_TYPE_COOKIES, done);\n };\n\n /**\n * @returns {boolean}\n */\n const localStorageIsEnabled = function (done) {\n let cb = function (result) {\n if (result && result.valid) {\n try {\n localStorage.setItem('prebid.cookieTest', '1');\n return localStorage.getItem('prebid.cookieTest') === '1';\n } catch (error) {\n } finally {\n try {\n localStorage.removeItem('prebid.cookieTest');\n } catch (error) {}\n }\n }\n return false;\n }\n return schedule(cb, STORAGE_TYPE_LOCALSTORAGE, done);\n }\n\n /**\n * @returns {boolean}\n */\n const cookiesAreEnabled = function (done) {\n let cb = function (result) {\n if (result && result.valid) {\n return checkCookieSupport();\n }\n return false;\n }\n return schedule(cb, STORAGE_TYPE_COOKIES, done);\n }\n\n /**\n * @param {string} key\n * @param {string} value\n */\n const setDataInLocalStorage = function (key, value, done) {\n let cb = function (result) {\n if (result && result.valid && hasLocalStorage()) {\n window.localStorage.setItem(key, value);\n }\n }\n return schedule(cb, STORAGE_TYPE_LOCALSTORAGE, done);\n }\n\n /**\n * @param {string} key\n * @returns {(string|null)}\n */\n const getDataFromLocalStorage = function (key, done) {\n let cb = function (result) {\n if (result && result.valid && hasLocalStorage()) {\n return window.localStorage.getItem(key);\n }\n return null;\n }\n return schedule(cb, STORAGE_TYPE_LOCALSTORAGE, done);\n }\n\n /**\n * @param {string} key\n */\n const removeDataFromLocalStorage = function (key, done) {\n let cb = function (result) {\n if (result && result.valid && hasLocalStorage()) {\n window.localStorage.removeItem(key);\n }\n }\n return schedule(cb, STORAGE_TYPE_LOCALSTORAGE, done);\n }\n\n /**\n * @returns {boolean}\n */\n const hasLocalStorage = function (done) {\n let cb = function (result) {\n if (result && result.valid) {\n try {\n return !!window.localStorage;\n } catch (e) {\n logError('Local storage api disabled');\n }\n }\n return false;\n }\n return schedule(cb, STORAGE_TYPE_LOCALSTORAGE, done);\n }\n\n /**\n * Returns all cookie values from the jar whose names contain the `keyLike`\n * Needs to exist in `utils.js` as it follows the StorageHandler interface defined in live-connect-js. If that module were to be removed, this function can go as well.\n * @param {string} keyLike\n * @return {[]}\n */\n const findSimilarCookies = function(keyLike, done) {\n let cb = function (result) {\n if (result && result.valid) {\n const all = [];\n if (hasDeviceAccess()) {\n const cookies = document.cookie.split(';');\n while (cookies.length) {\n const cookie = cookies.pop();\n let separatorIndex = cookie.indexOf('=');\n separatorIndex = separatorIndex < 0 ? cookie.length : separatorIndex;\n const cookieName = decodeURIComponent(cookie.slice(0, separatorIndex).replace(/^\\s+/, ''));\n if (cookieName.indexOf(keyLike) >= 0) {\n all.push(decodeURIComponent(cookie.slice(separatorIndex + 1)));\n }\n }\n }\n return all;\n }\n }\n\n return schedule(cb, STORAGE_TYPE_COOKIES, done);\n }\n\n return {\n setCookie,\n getCookie,\n localStorageIsEnabled,\n cookiesAreEnabled,\n setDataInLocalStorage,\n getDataFromLocalStorage,\n removeDataFromLocalStorage,\n hasLocalStorage,\n findSimilarCookies\n }\n}\n\n/**\n * Get a storage manager for a particular module.\n *\n * Either bidderCode or a combination of moduleType + moduleName must be provided. The former is a shorthand\n * for `{moduleType: 'bidder', moduleName: bidderCode}`.\n *\n */\nexport function getStorageManager({moduleType, moduleName, bidderCode} = {}) {\n function err() {\n throw new Error(`Invalid invocation for getStorageManager: must set either bidderCode, or moduleType + moduleName`)\n }\n if (bidderCode) {\n if ((moduleType && moduleType !== MODULE_TYPE_BIDDER) || moduleName) err()\n moduleType = MODULE_TYPE_BIDDER;\n moduleName = bidderCode;\n } else if (!moduleName || !moduleType) {\n err()\n }\n return newStorageManager({moduleType, moduleName});\n}\n\n/**\n * Get a storage manager for \"core\" (vendorless, or first-party) modules. Shorthand for `getStorageManager({moduleName, moduleType: 'core'})`.\n *\n * @param {string} moduleName Module name\n */\nexport function getCoreStorageManager(moduleName) {\n return newStorageManager({moduleName: moduleName, moduleType: MODULE_TYPE_PREBID});\n}\n\n/**\n * Block all access to storage when deviceAccess = false\n */\nexport function deviceAccessRule() {\n if (!hasDeviceAccess()) {\n return {allow: false}\n }\n}\nregisterActivityControl(ACTIVITY_ACCESS_DEVICE, 'deviceAccess config', deviceAccessRule);\n\n/**\n * By default, deny bidders accessDevice unless they enable it through bidderSettings\n *\n * // TODO: for backwards compat, the check is done on the adapter - rather than bidder's code.\n */\nexport function storageAllowedRule(params, bs = bidderSettings) {\n if (params[ACTIVITY_PARAM_COMPONENT_TYPE] !== MODULE_TYPE_BIDDER) return;\n let allow = bs.get(params[ACTIVITY_PARAM_ADAPTER_CODE], 'storageAllowed');\n if (!allow || allow === true) {\n allow = !!allow\n } else {\n const storageType = params[ACTIVITY_PARAM_STORAGE_TYPE];\n allow = Array.isArray(allow) ? allow.some((e) => e === storageType) : allow === storageType;\n }\n if (!allow) {\n return {allow};\n }\n}\n\nregisterActivityControl(ACTIVITY_ACCESS_DEVICE, 'bidderSettings.*.storageAllowed', storageAllowedRule);\n\nexport function resetData() {\n storageCallbacks = [];\n}\n","import {\n deepClone, isPlainObject, logError, shuffle, logMessage, triggerPixel, insertUserSyncIframe, isArray,\n logWarn, isStr, isSafariBrowser\n} from './utils.js';\nimport { config } from './config.js';\nimport {includes} from './polyfill.js';\nimport { getCoreStorageManager } from './storageManager.js';\nimport {isActivityAllowed, registerActivityControl} from './activities/rules.js';\nimport {ACTIVITY_SYNC_USER} from './activities/activities.js';\nimport {\n ACTIVITY_PARAM_COMPONENT_NAME,\n ACTIVITY_PARAM_COMPONENT_TYPE,\n ACTIVITY_PARAM_SYNC_TYPE, ACTIVITY_PARAM_SYNC_URL\n} from './activities/params.js';\nimport {MODULE_TYPE_BIDDER} from './activities/modules.js';\nimport {activityParams} from './activities/activityParams.js';\n\nexport const USERSYNC_DEFAULT_CONFIG = {\n syncEnabled: true,\n filterSettings: {\n image: {\n bidders: '*',\n filter: 'include'\n }\n },\n syncsPerBidder: 5,\n syncDelay: 3000,\n auctionDelay: 0\n};\n\n// Set userSync default values\nconfig.setDefaults({\n 'userSync': deepClone(USERSYNC_DEFAULT_CONFIG)\n});\n\nconst storage = getCoreStorageManager('usersync');\n\n/**\n * Factory function which creates a new UserSyncPool.\n *\n * @param {} deps Configuration options and dependencies which the\n * UserSync object needs in order to behave properly.\n */\nexport function newUserSync(deps) {\n let publicApi = {};\n // A queue of user syncs for each adapter\n // Let getDefaultQueue() set the defaults\n let queue = getDefaultQueue();\n\n // Whether or not user syncs have been trigger on this page load for a specific bidder\n let hasFiredBidder = new Set();\n // How many bids for each adapter\n let numAdapterBids = {};\n\n // for now - default both to false in case filterSettings config is absent/misconfigured\n let permittedPixels = {\n image: true,\n iframe: false\n };\n\n // Use what is in config by default\n let usConfig = deps.config;\n // Update if it's (re)set\n config.getConfig('userSync', (conf) => {\n // Added this logic for https://github.com/prebid/Prebid.js/issues/4864\n // if userSync.filterSettings does not contain image/all configs, merge in default image config to ensure image pixels are fired\n if (conf.userSync) {\n let fs = conf.userSync.filterSettings;\n if (isPlainObject(fs)) {\n if (!fs.image && !fs.all) {\n conf.userSync.filterSettings.image = {\n bidders: '*',\n filter: 'include'\n };\n }\n }\n }\n\n usConfig = Object.assign(usConfig, conf.userSync);\n });\n\n deps.regRule(ACTIVITY_SYNC_USER, 'userSync config', (params) => {\n if (!usConfig.syncEnabled) {\n return {allow: false, reason: 'syncs are disabled'}\n }\n if (params[ACTIVITY_PARAM_COMPONENT_TYPE] === MODULE_TYPE_BIDDER) {\n const syncType = params[ACTIVITY_PARAM_SYNC_TYPE];\n const bidder = params[ACTIVITY_PARAM_COMPONENT_NAME];\n if (!publicApi.canBidderRegisterSync(syncType, bidder)) {\n return {allow: false, reason: `${syncType} syncs are not enabled for ${bidder}`}\n }\n }\n });\n\n /**\n * @function getDefaultQueue\n * @summary Returns the default empty queue\n * @private\n * @return {object} A queue with no syncs\n */\n function getDefaultQueue() {\n return {\n image: [],\n iframe: []\n };\n }\n\n /**\n * @function fireSyncs\n * @summary Trigger all user syncs in the queue\n * @private\n */\n function fireSyncs() {\n if (!usConfig.syncEnabled || !deps.browserSupportsCookies) {\n return;\n }\n\n try {\n // Iframe syncs\n loadIframes();\n // Image pixels\n fireImagePixels();\n } catch (e) {\n return logError('Error firing user syncs', e);\n }\n // Reset the user sync queue\n queue = getDefaultQueue();\n }\n\n function forEachFire(queue, fn) {\n // Randomize the order of the pixels before firing\n // This is to avoid giving any bidder who has registered multiple syncs\n // any preferential treatment and balancing them out\n shuffle(queue).forEach(fn);\n }\n\n /**\n * @function fireImagePixels\n * @summary Loops through user sync pixels and fires each one\n * @private\n */\n function fireImagePixels() {\n if (!permittedPixels.image) {\n return;\n }\n forEachFire(queue.image, (sync) => {\n let [bidderName, trackingPixelUrl] = sync;\n logMessage(`Invoking image pixel user sync for bidder: ${bidderName}`);\n // Create image object and add the src url\n triggerPixel(trackingPixelUrl);\n });\n }\n\n /**\n * @function loadIframes\n * @summary Loops through iframe syncs and loads an iframe element into the page\n * @private\n */\n function loadIframes() {\n if (!(permittedPixels.iframe)) {\n return;\n }\n\n forEachFire(queue.iframe, (sync) => {\n let [bidderName, iframeUrl] = sync;\n logMessage(`Invoking iframe user sync for bidder: ${bidderName}`);\n // Insert iframe into DOM\n insertUserSyncIframe(iframeUrl);\n // for a bidder, if iframe sync is present then remove image pixel\n removeImagePixelsForBidder(queue, bidderName);\n });\n }\n\n function removeImagePixelsForBidder(queue, iframeSyncBidderName) {\n queue.image = queue.image.filter(imageSync => {\n let imageSyncBidderName = imageSync[0];\n return imageSyncBidderName !== iframeSyncBidderName\n });\n }\n\n /**\n * @function incrementAdapterBids\n * @summary Increment the count of user syncs queue for the adapter\n * @private\n * @params {object} numAdapterBids The object contain counts for all adapters\n * @params {string} bidder The name of the bidder adding a sync\n * @returns {object} The updated version of numAdapterBids\n */\n function incrementAdapterBids(numAdapterBids, bidder) {\n if (!numAdapterBids[bidder]) {\n numAdapterBids[bidder] = 1;\n } else {\n numAdapterBids[bidder] += 1;\n }\n return numAdapterBids;\n }\n\n /**\n * @function registerSync\n * @summary Add sync for this bidder to a queue to be fired later\n * @public\n * @params {string} type The type of the sync including image, iframe\n * @params {string} bidder The name of the adapter. e.g. \"rubicon\"\n * @params {string} url Either the pixel url or iframe url depending on the type\n\n * @example
Using Image Sync
\n * // registerSync(type, adapter, pixelUrl)\n * userSync.registerSync('image', 'rubicon', 'http://example.com/pixel')\n */\n publicApi.registerSync = (type, bidder, url) => {\n if (hasFiredBidder.has(bidder)) {\n return logMessage(`already fired syncs for \"${bidder}\", ignoring registerSync call`);\n }\n if (!usConfig.syncEnabled || !isArray(queue[type])) {\n return logWarn(`User sync type \"${type}\" not supported`);\n }\n if (!bidder) {\n return logWarn(`Bidder is required for registering sync`);\n }\n if (usConfig.syncsPerBidder !== 0 && Number(numAdapterBids[bidder]) >= usConfig.syncsPerBidder) {\n return logWarn(`Number of user syncs exceeded for \"${bidder}\"`);\n }\n\n if (deps.isAllowed(ACTIVITY_SYNC_USER, activityParams(MODULE_TYPE_BIDDER, bidder, {\n [ACTIVITY_PARAM_SYNC_TYPE]: type,\n [ACTIVITY_PARAM_SYNC_URL]: url\n }))) {\n // the bidder's pixel has passed all checks and is allowed to register\n queue[type].push([bidder, url]);\n numAdapterBids = incrementAdapterBids(numAdapterBids, bidder);\n }\n };\n\n /**\n * Mark a bidder as done with its user syncs - no more will be accepted from them in this session.\n * @param {string} bidderCode\n */\n publicApi.bidderDone = hasFiredBidder.add.bind(hasFiredBidder);\n\n /**\n * @function shouldBidderBeBlocked\n * @summary Check filterSettings logic to determine if the bidder should be prevented from registering their userSync tracker\n * @private\n * @param {string} type The type of the sync; either image or iframe\n * @param {string} bidder The name of the adapter. e.g. \"rubicon\"\n * @returns {boolean} true => bidder is not allowed to register; false => bidder can register\n */\n function shouldBidderBeBlocked(type, bidder) {\n let filterConfig = usConfig.filterSettings;\n\n // apply the filter check if the config object is there (eg filterSettings.iframe exists) and if the config object is properly setup\n if (isFilterConfigValid(filterConfig, type)) {\n permittedPixels[type] = true;\n\n let activeConfig = (filterConfig.all) ? filterConfig.all : filterConfig[type];\n let biddersToFilter = (activeConfig.bidders === '*') ? [bidder] : activeConfig.bidders;\n let filterType = activeConfig.filter || 'include'; // set default if undefined\n\n // return true if the bidder is either: not part of the include (ie outside the whitelist) or part of the exclude (ie inside the blacklist)\n const checkForFiltering = {\n 'include': (bidders, bidder) => !includes(bidders, bidder),\n 'exclude': (bidders, bidder) => includes(bidders, bidder)\n }\n return checkForFiltering[filterType](biddersToFilter, bidder);\n }\n return !permittedPixels[type];\n }\n\n /**\n * @function isFilterConfigValid\n * @summary Check if the filterSettings object in the userSync config is setup properly\n * @private\n * @param {object} filterConfig sub-config object taken from filterSettings\n * @param {string} type The type of the sync; either image or iframe\n * @returns {boolean} true => config is setup correctly, false => setup incorrectly or filterConfig[type] is not present\n */\n function isFilterConfigValid(filterConfig, type) {\n if (filterConfig.all && filterConfig[type]) {\n logWarn(`Detected presence of the \"filterSettings.all\" and \"filterSettings.${type}\" in userSync config. You cannot mix \"all\" with \"iframe/image\" configs; they are mutually exclusive.`);\n return false;\n }\n\n let activeConfig = (filterConfig.all) ? filterConfig.all : filterConfig[type];\n let activeConfigName = (filterConfig.all) ? 'all' : type;\n\n // if current pixel type isn't part of the config's logic, skip rest of the config checks...\n // we return false to skip subsequent filter checks in shouldBidderBeBlocked() function\n if (!activeConfig) {\n return false;\n }\n\n let filterField = activeConfig.filter;\n let biddersField = activeConfig.bidders;\n\n if (filterField && filterField !== 'include' && filterField !== 'exclude') {\n logWarn(`UserSync \"filterSettings.${activeConfigName}.filter\" setting '${filterField}' is not a valid option; use either 'include' or 'exclude'.`);\n return false;\n }\n\n if (biddersField !== '*' && !(Array.isArray(biddersField) && biddersField.length > 0 && biddersField.every(bidderInList => isStr(bidderInList) && bidderInList !== '*'))) {\n logWarn(`Detected an invalid setup in userSync \"filterSettings.${activeConfigName}.bidders\"; use either '*' (to represent all bidders) or an array of bidders.`);\n return false;\n }\n\n return true;\n }\n\n /**\n * @function syncUsers\n * @summary Trigger all the user syncs based on publisher-defined timeout\n * @public\n * @params {int} timeout The delay in ms before syncing data - default 0\n */\n publicApi.syncUsers = (timeout = 0) => {\n if (timeout) {\n return setTimeout(fireSyncs, Number(timeout));\n }\n fireSyncs();\n };\n\n /**\n * @function triggerUserSyncs\n * @summary A `syncUsers` wrapper for determining if enableOverride has been turned on\n * @public\n */\n publicApi.triggerUserSyncs = () => {\n if (usConfig.enableOverride) {\n publicApi.syncUsers();\n }\n };\n\n publicApi.canBidderRegisterSync = (type, bidder) => {\n if (usConfig.filterSettings) {\n if (shouldBidderBeBlocked(type, bidder)) {\n return false;\n }\n }\n return true;\n };\n return publicApi;\n}\n\nexport const userSync = newUserSync(Object.defineProperties({\n config: config.getConfig('userSync'),\n isAllowed: isActivityAllowed,\n regRule: registerActivityControl,\n}, {\n browserSupportsCookies: {\n get: function() {\n // call storage lazily to give time for consent data to be available\n return !isSafariBrowser() && storage.cookiesAreEnabled();\n }\n }\n}));\n\n/**\n * @typedef {Object} UserSyncConfig\n *\n * @property {boolean} enableOverride\n * @property {boolean} syncEnabled\n * @property {int} syncsPerBidder\n * @property {string[]} enabledBidders\n * @property {Object} filterSettings\n */\n","import {config} from './config.js';\nimport clone from 'just-clone';\nimport {find, includes} from './polyfill.js';\nimport CONSTANTS from './constants.json';\nimport {GreedyPromise} from './utils/promise.js';\nimport {getGlobal} from './prebidGlobal.js';\n\nexport { default as deepAccess } from 'dlv/index.js';\nexport { dset as deepSetValue } from 'dset';\n\nvar tArr = 'Array';\nvar tStr = 'String';\nvar tFn = 'Function';\nvar tNumb = 'Number';\nvar tObject = 'Object';\nvar tBoolean = 'Boolean';\nvar toString = Object.prototype.toString;\nlet consoleExists = Boolean(window.console);\nlet consoleLogExists = Boolean(consoleExists && window.console.log);\nlet consoleInfoExists = Boolean(consoleExists && window.console.info);\nlet consoleWarnExists = Boolean(consoleExists && window.console.warn);\nlet consoleErrorExists = Boolean(consoleExists && window.console.error);\n\nlet eventEmitter;\n\nconst pbjsInstance = getGlobal();\n\nexport function _setEventEmitter(emitFn) {\n // called from events.js - this hoop is to avoid circular imports\n eventEmitter = emitFn;\n}\n\nfunction emitEvent(...args) {\n if (eventEmitter != null) {\n eventEmitter(...args);\n }\n}\n\n// this allows stubbing of utility functions that are used internally by other utility functions\nexport const internal = {\n checkCookieSupport,\n createTrackPixelIframeHtml,\n getWindowSelf,\n getWindowTop,\n getWindowLocation,\n insertUserSyncIframe,\n insertElement,\n isFn,\n triggerPixel,\n logError,\n logWarn,\n logMessage,\n logInfo,\n parseQS,\n formatQS,\n deepEqual\n};\n\nlet prebidInternal = {};\n/**\n * Returns object that is used as internal prebid namespace\n */\nexport function getPrebidInternal() {\n return prebidInternal;\n}\n\nvar uniqueRef = {};\nexport let bind = function(a, b) { return b; }.bind(null, 1, uniqueRef)() === uniqueRef\n ? Function.prototype.bind\n : function(bind) {\n var self = this;\n var args = Array.prototype.slice.call(arguments, 1);\n return function() {\n return self.apply(bind, args.concat(Array.prototype.slice.call(arguments)));\n };\n };\n\n/* utility method to get incremental integer starting from 1 */\nvar getIncrementalInteger = (function () {\n var count = 0;\n return function () {\n count++;\n return count;\n };\n})();\n\n// generate a random string (to be used as a dynamic JSONP callback)\nexport function getUniqueIdentifierStr() {\n return getIncrementalInteger() + Math.random().toString(16).substr(2);\n}\n\n/**\n * Returns a random v4 UUID of the form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,\n * where each x is replaced with a random hexadecimal digit from 0 to f,\n * and y is replaced with a random hexadecimal digit from 8 to b.\n * https://gist.github.com/jed/982883 via node-uuid\n */\nexport function generateUUID(placeholder) {\n return placeholder\n ? (placeholder ^ _getRandomData() >> placeholder / 4).toString(16)\n : ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, generateUUID);\n}\n\n/**\n * Returns random data using the Crypto API if available and Math.random if not\n * Method is from https://gist.github.com/jed/982883 like generateUUID, direct link https://gist.github.com/jed/982883#gistcomment-45104\n */\nfunction _getRandomData() {\n if (window && window.crypto && window.crypto.getRandomValues) {\n return crypto.getRandomValues(new Uint8Array(1))[0] % 16;\n } else {\n return Math.random() * 16;\n }\n}\n\nexport function getBidIdParameter(key, paramsObj) {\n if (paramsObj && paramsObj[key]) {\n return paramsObj[key];\n }\n\n return '';\n}\n\nexport function tryAppendQueryString(existingUrl, key, value) {\n if (value) {\n return existingUrl + key + '=' + encodeURIComponent(value) + '&';\n }\n\n return existingUrl;\n}\n\n// parse a query string object passed in bid params\n// bid params should be an object such as {key: \"value\", key1 : \"value1\"}\n// aliases to formatQS\nexport function parseQueryStringParameters(queryObj) {\n let result = '';\n for (var k in queryObj) {\n if (queryObj.hasOwnProperty(k)) { result += k + '=' + encodeURIComponent(queryObj[k]) + '&'; }\n }\n result = result.replace(/&$/, '');\n return result;\n}\n\n// transform an AdServer targeting bids into a query string to send to the adserver\nexport function transformAdServerTargetingObj(targeting) {\n // we expect to receive targeting for a single slot at a time\n if (targeting && Object.getOwnPropertyNames(targeting).length > 0) {\n return getKeys(targeting)\n .map(key => `${key}=${encodeURIComponent(getValue(targeting, key))}`).join('&');\n } else {\n return '';\n }\n}\n\n/**\n * Read an adUnit object and return the sizes used in an [[728, 90]] format (even if they had [728, 90] defined)\n * Preference is given to the `adUnit.mediaTypes.banner.sizes` object over the `adUnit.sizes`\n * @param {object} adUnit one adUnit object from the normal list of adUnits\n * @returns {Array.} array of arrays containing numeric sizes\n */\nexport function getAdUnitSizes(adUnit) {\n if (!adUnit) {\n return;\n }\n\n let sizes = [];\n if (adUnit.mediaTypes && adUnit.mediaTypes.banner && Array.isArray(adUnit.mediaTypes.banner.sizes)) {\n let bannerSizes = adUnit.mediaTypes.banner.sizes;\n if (Array.isArray(bannerSizes[0])) {\n sizes = bannerSizes;\n } else {\n sizes.push(bannerSizes);\n }\n // TODO - remove this else block when we're ready to deprecate adUnit.sizes for bidders\n } else if (Array.isArray(adUnit.sizes)) {\n if (Array.isArray(adUnit.sizes[0])) {\n sizes = adUnit.sizes;\n } else {\n sizes.push(adUnit.sizes);\n }\n }\n return sizes;\n}\n\n/**\n * Parse a GPT-Style general size Array like `[[300, 250]]` or `\"300x250,970x90\"` into an array of sizes `[\"300x250\"]` or '['300x250', '970x90']'\n * @param {(Array.|Array.)} sizeObj Input array or double array [300,250] or [[300,250], [728,90]]\n * @return {Array.} Array of strings like `[\"300x250\"]` or `[\"300x250\", \"728x90\"]`\n */\nexport function parseSizesInput(sizeObj) {\n var parsedSizes = [];\n\n // if a string for now we can assume it is a single size, like \"300x250\"\n if (typeof sizeObj === 'string') {\n // multiple sizes will be comma-separated\n var sizes = sizeObj.split(',');\n\n // regular expression to match strigns like 300x250\n // start of line, at least 1 number, an \"x\" , then at least 1 number, and the then end of the line\n var sizeRegex = /^(\\d)+x(\\d)+$/i;\n if (sizes) {\n for (var curSizePos in sizes) {\n if (hasOwn(sizes, curSizePos) && sizes[curSizePos].match(sizeRegex)) {\n parsedSizes.push(sizes[curSizePos]);\n }\n }\n }\n } else if (typeof sizeObj === 'object') {\n var sizeArrayLength = sizeObj.length;\n\n // don't process empty array\n if (sizeArrayLength > 0) {\n // if we are a 2 item array of 2 numbers, we must be a SingleSize array\n if (sizeArrayLength === 2 && typeof sizeObj[0] === 'number' && typeof sizeObj[1] === 'number') {\n parsedSizes.push(parseGPTSingleSizeArray(sizeObj));\n } else {\n // otherwise, we must be a MultiSize array\n for (var i = 0; i < sizeArrayLength; i++) {\n parsedSizes.push(parseGPTSingleSizeArray(sizeObj[i]));\n }\n }\n }\n }\n\n return parsedSizes;\n}\n\n// Parse a GPT style single size array, (i.e [300, 250])\n// into an AppNexus style string, (i.e. 300x250)\nexport function parseGPTSingleSizeArray(singleSize) {\n if (isValidGPTSingleSize(singleSize)) {\n return singleSize[0] + 'x' + singleSize[1];\n }\n}\n\n// Parse a GPT style single size array, (i.e [300, 250])\n// into OpenRTB-compatible (imp.banner.w/h, imp.banner.format.w/h, imp.video.w/h) object(i.e. {w:300, h:250})\nexport function parseGPTSingleSizeArrayToRtbSize(singleSize) {\n if (isValidGPTSingleSize(singleSize)) {\n return {w: singleSize[0], h: singleSize[1]};\n }\n}\n\nfunction isValidGPTSingleSize(singleSize) {\n // if we aren't exactly 2 items in this array, it is invalid\n return isArray(singleSize) && singleSize.length === 2 && (!isNaN(singleSize[0]) && !isNaN(singleSize[1]));\n}\n\nexport function getWindowTop() {\n return window.top;\n}\n\nexport function getWindowSelf() {\n return window.self;\n}\n\nexport function getWindowLocation() {\n return window.location;\n}\n\n/**\n * Wrappers to console.(log | info | warn | error). Takes N arguments, the same as the native methods\n */\nexport function logMessage() {\n if (debugTurnedOn() && consoleLogExists) {\n // eslint-disable-next-line no-console\n console.log.apply(console, decorateLog(arguments, 'MESSAGE:'));\n }\n}\n\nexport function logInfo() {\n if (debugTurnedOn() && consoleInfoExists) {\n // eslint-disable-next-line no-console\n console.info.apply(console, decorateLog(arguments, 'INFO:'));\n }\n}\n\nexport function logWarn() {\n if (debugTurnedOn() && consoleWarnExists) {\n // eslint-disable-next-line no-console\n console.warn.apply(console, decorateLog(arguments, 'WARNING:'));\n }\n emitEvent(CONSTANTS.EVENTS.AUCTION_DEBUG, {type: 'WARNING', arguments: arguments});\n}\n\nexport function logError() {\n if (debugTurnedOn() && consoleErrorExists) {\n // eslint-disable-next-line no-console\n console.error.apply(console, decorateLog(arguments, 'ERROR:'));\n }\n emitEvent(CONSTANTS.EVENTS.AUCTION_DEBUG, {type: 'ERROR', arguments: arguments});\n}\n\nexport function prefixLog(prefix) {\n function decorate(fn) {\n return function (...args) {\n fn(prefix, ...args);\n }\n }\n return {\n logError: decorate(logError),\n logWarn: decorate(logWarn),\n logMessage: decorate(logMessage),\n logInfo: decorate(logInfo),\n }\n}\n\nfunction decorateLog(args, prefix) {\n args = [].slice.call(args);\n let bidder = config.getCurrentBidder();\n\n prefix && args.unshift(prefix);\n if (bidder) {\n args.unshift(label('#aaa'));\n }\n args.unshift(label('#3b88c3'));\n args.unshift('%cPrebid' + (bidder ? `%c${bidder}` : ''));\n return args;\n\n function label(color) {\n return `display: inline-block; color: #fff; background: ${color}; padding: 1px 4px; border-radius: 3px;`\n }\n}\n\nexport function hasConsoleLogger() {\n return consoleLogExists;\n}\n\nexport function debugTurnedOn() {\n return !!config.getConfig('debug');\n}\n\nexport function createInvisibleIframe() {\n var f = document.createElement('iframe');\n f.id = getUniqueIdentifierStr();\n f.height = 0;\n f.width = 0;\n f.border = '0px';\n f.hspace = '0';\n f.vspace = '0';\n f.marginWidth = '0';\n f.marginHeight = '0';\n f.style.border = '0';\n f.scrolling = 'no';\n f.frameBorder = '0';\n f.src = 'about:blank';\n f.style.display = 'none';\n return f;\n}\n\n/*\n * Check if a given parameter name exists in query string\n * and if it does return the value\n */\nexport function getParameterByName(name) {\n return parseQS(getWindowLocation().search)[name] || '';\n}\n\n/**\n * Return if the object is of the\n * given type.\n * @param {*} object to test\n * @param {String} _t type string (e.g., Array)\n * @return {Boolean} if object is of type _t\n */\nexport function isA(object, _t) {\n return toString.call(object) === '[object ' + _t + ']';\n}\n\nexport function isFn(object) {\n return isA(object, tFn);\n}\n\nexport function isStr(object) {\n return isA(object, tStr);\n}\n\nexport function isArray(object) {\n return isA(object, tArr);\n}\n\nexport function isNumber(object) {\n return isA(object, tNumb);\n}\n\nexport function isPlainObject(object) {\n return isA(object, tObject);\n}\n\nexport function isBoolean(object) {\n return isA(object, tBoolean);\n}\n\n/**\n * Return if the object is \"empty\";\n * this includes falsey, no keys, or no items at indices\n * @param {*} object object to test\n * @return {Boolean} if object is empty\n */\nexport function isEmpty(object) {\n if (!object) return true;\n if (isArray(object) || isStr(object)) {\n return !(object.length > 0);\n }\n\n for (var k in object) {\n if (hasOwnProperty.call(object, k)) return false;\n }\n\n return true;\n}\n\n/**\n * Return if string is empty, null, or undefined\n * @param str string to test\n * @returns {boolean} if string is empty\n */\nexport function isEmptyStr(str) {\n return isStr(str) && (!str || str.length === 0);\n}\n\n/**\n * Iterate object with the function\n * falls back to es5 `forEach`\n * @param {Array|Object} object\n * @param {Function(value, key, object)} fn\n */\nexport function _each(object, fn) {\n if (isEmpty(object)) return;\n if (isFn(object.forEach)) return object.forEach(fn, this);\n\n var k = 0;\n var l = object.length;\n\n if (l > 0) {\n for (; k < l; k++) fn(object[k], k, object);\n } else {\n for (k in object) {\n if (hasOwnProperty.call(object, k)) fn.call(this, object[k], k);\n }\n }\n}\n\nexport function contains(a, obj) {\n if (isEmpty(a)) {\n return false;\n }\n\n if (isFn(a.indexOf)) {\n return a.indexOf(obj) !== -1;\n }\n\n var i = a.length;\n while (i--) {\n if (a[i] === obj) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Map an array or object into another array\n * given a function\n * @param {Array|Object} object\n * @param {Function(value, key, object)} callback\n * @return {Array}\n */\nexport function _map(object, callback) {\n if (isEmpty(object)) return [];\n if (isFn(object.map)) return object.map(callback);\n var output = [];\n _each(object, function (value, key) {\n output.push(callback(value, key, object));\n });\n\n return output;\n}\n\nexport function hasOwn(objectToCheck, propertyToCheckFor) {\n if (objectToCheck.hasOwnProperty) {\n return objectToCheck.hasOwnProperty(propertyToCheckFor);\n } else {\n return (typeof objectToCheck[propertyToCheckFor] !== 'undefined') && (objectToCheck.constructor.prototype[propertyToCheckFor] !== objectToCheck[propertyToCheckFor]);\n }\n};\n\n/*\n* Inserts an element(elm) as targets child, by default as first child\n* @param {HTMLElement} elm\n* @param {HTMLElement} [doc]\n* @param {HTMLElement} [target]\n* @param {Boolean} [asLastChildChild]\n* @return {HTML Element}\n*/\nexport function insertElement(elm, doc, target, asLastChildChild) {\n doc = doc || document;\n let parentEl;\n if (target) {\n parentEl = doc.getElementsByTagName(target);\n } else {\n parentEl = doc.getElementsByTagName('head');\n }\n try {\n parentEl = parentEl.length ? parentEl : doc.getElementsByTagName('body');\n if (parentEl.length) {\n parentEl = parentEl[0];\n let insertBeforeEl = asLastChildChild ? null : parentEl.firstChild;\n return parentEl.insertBefore(elm, insertBeforeEl);\n }\n } catch (e) {}\n}\n\n/**\n * Returns a promise that completes when the given element triggers a 'load' or 'error' DOM event, or when\n * `timeout` milliseconds have elapsed.\n *\n * @param {HTMLElement} element\n * @param {Number} [timeout]\n * @returns {Promise}\n */\nexport function waitForElementToLoad(element, timeout) {\n let timer = null;\n return new GreedyPromise((resolve) => {\n const onLoad = function() {\n element.removeEventListener('load', onLoad);\n element.removeEventListener('error', onLoad);\n if (timer != null) {\n window.clearTimeout(timer);\n }\n resolve();\n };\n element.addEventListener('load', onLoad);\n element.addEventListener('error', onLoad);\n if (timeout != null) {\n timer = window.setTimeout(onLoad, timeout);\n }\n });\n}\n\n/**\n * Inserts an image pixel with the specified `url` for cookie sync\n * @param {string} url URL string of the image pixel to load\n * @param {function} [done] an optional exit callback, used when this usersync pixel is added during an async process\n * @param {Number} [timeout] an optional timeout in milliseconds for the image to load before calling `done`\n */\nexport function triggerPixel(url, done, timeout) {\n const img = new Image();\n if (done && internal.isFn(done)) {\n waitForElementToLoad(img, timeout).then(done);\n }\n img.src = url;\n}\n\nexport function callBurl({ source, burl }) {\n if (source === CONSTANTS.S2S.SRC && burl) {\n internal.triggerPixel(burl);\n }\n}\n\n/**\n * Inserts an empty iframe with the specified `html`, primarily used for tracking purposes\n * (though could be for other purposes)\n * @param {string} htmlCode snippet of HTML code used for tracking purposes\n */\nexport function insertHtmlIntoIframe(htmlCode) {\n if (!htmlCode) {\n return;\n }\n\n let iframe = document.createElement('iframe');\n iframe.id = getUniqueIdentifierStr();\n iframe.width = 0;\n iframe.height = 0;\n iframe.hspace = '0';\n iframe.vspace = '0';\n iframe.marginWidth = '0';\n iframe.marginHeight = '0';\n iframe.style.display = 'none';\n iframe.style.height = '0px';\n iframe.style.width = '0px';\n iframe.scrolling = 'no';\n iframe.frameBorder = '0';\n iframe.allowtransparency = 'true';\n\n internal.insertElement(iframe, document, 'body');\n\n iframe.contentWindow.document.open();\n iframe.contentWindow.document.write(htmlCode);\n iframe.contentWindow.document.close();\n}\n\n/**\n * Inserts empty iframe with the specified `url` for cookie sync\n * @param {string} url URL to be requested\n * @param {string} encodeUri boolean if URL should be encoded before inserted. Defaults to true\n * @param {function} [done] an optional exit callback, used when this usersync pixel is added during an async process\n * @param {Number} [timeout] an optional timeout in milliseconds for the iframe to load before calling `done`\n */\nexport function insertUserSyncIframe(url, done, timeout) {\n let iframeHtml = internal.createTrackPixelIframeHtml(url, false, 'allow-scripts allow-same-origin');\n let div = document.createElement('div');\n div.innerHTML = iframeHtml;\n let iframe = div.firstChild;\n if (done && internal.isFn(done)) {\n waitForElementToLoad(iframe, timeout).then(done);\n }\n internal.insertElement(iframe, document, 'html', true);\n}\n\n/**\n * Creates a snippet of HTML that retrieves the specified `url`\n * @param {string} url URL to be requested\n * @return {string} HTML snippet that contains the img src = set to `url`\n */\nexport function createTrackPixelHtml(url) {\n if (!url) {\n return '';\n }\n\n let escapedUrl = encodeURI(url);\n let img = '
';\n img += '
';\n return img;\n};\n\n/**\n * Creates a snippet of Iframe HTML that retrieves the specified `url`\n * @param {string} url plain URL to be requested\n * @param {string} encodeUri boolean if URL should be encoded before inserted. Defaults to true\n * @param {string} sandbox string if provided the sandbox attribute will be included with the given value\n * @return {string} HTML snippet that contains the iframe src = set to `url`\n */\nexport function createTrackPixelIframeHtml(url, encodeUri = true, sandbox = '') {\n if (!url) {\n return '';\n }\n if (encodeUri) {\n url = encodeURI(url);\n }\n if (sandbox) {\n sandbox = `sandbox=\"${sandbox}\"`;\n }\n\n return ``;\n}\n\nexport function getValueString(param, val, defaultValue) {\n if (val === undefined || val === null) {\n return defaultValue;\n }\n if (isStr(val)) {\n return val;\n }\n if (isNumber(val)) {\n return val.toString();\n }\n internal.logWarn('Unsuported type for param: ' + param + ' required type: String');\n}\n\nexport function uniques(value, index, arry) {\n return arry.indexOf(value) === index;\n}\n\nexport function flatten(a, b) {\n return a.concat(b);\n}\n\nexport function getBidRequest(id, bidderRequests) {\n if (!id) {\n return;\n }\n let bidRequest;\n bidderRequests.some(bidderRequest => {\n let result = find(bidderRequest.bids, bid => ['bidId', 'adId', 'bid_id'].some(type => bid[type] === id));\n if (result) {\n bidRequest = result;\n }\n return result;\n });\n return bidRequest;\n}\n\nexport function getKeys(obj) {\n return Object.keys(obj);\n}\n\nexport function getValue(obj, key) {\n return obj[key];\n}\n\n/**\n * Get the key of an object for a given value\n */\nexport function getKeyByValue(obj, value) {\n for (let prop in obj) {\n if (obj.hasOwnProperty(prop)) {\n if (obj[prop] === value) {\n return prop;\n }\n }\n }\n}\n\nexport function getBidderCodes(adUnits = pbjsInstance.adUnits) {\n // this could memoize adUnits\n return adUnits.map(unit => unit.bids.map(bid => bid.bidder)\n .reduce(flatten, [])).reduce(flatten, []).filter((bidder) => typeof bidder !== 'undefined').filter(uniques);\n}\n\nexport function isGptPubadsDefined() {\n if (window.googletag && isFn(window.googletag.pubads) && isFn(window.googletag.pubads().getSlots)) {\n return true;\n }\n}\n\nexport function isApnGetTagDefined() {\n if (window.apntag && isFn(window.apntag.getTag)) {\n return true;\n }\n}\n\n// This function will get highest cpm value bid, in case of tie it will return the bid with lowest timeToRespond\nexport const getHighestCpm = getHighestCpmCallback('timeToRespond', (previous, current) => previous > current);\n\n// This function will get the oldest hightest cpm value bid, in case of tie it will return the bid which came in first\n// Use case for tie: https://github.com/prebid/Prebid.js/issues/2448\nexport const getOldestHighestCpmBid = getHighestCpmCallback('responseTimestamp', (previous, current) => previous > current);\n\n// This function will get the latest hightest cpm value bid, in case of tie it will return the bid which came in last\n// Use case for tie: https://github.com/prebid/Prebid.js/issues/2539\nexport const getLatestHighestCpmBid = getHighestCpmCallback('responseTimestamp', (previous, current) => previous < current);\n\nfunction getHighestCpmCallback(useTieBreakerProperty, tieBreakerCallback) {\n return (previous, current) => {\n if (previous.cpm === current.cpm) {\n return tieBreakerCallback(previous[useTieBreakerProperty], current[useTieBreakerProperty]) ? current : previous;\n }\n return previous.cpm < current.cpm ? current : previous;\n }\n}\n\n/**\n * Fisher–Yates shuffle\n * http://stackoverflow.com/a/6274398\n * https://bost.ocks.org/mike/shuffle/\n * istanbul ignore next\n */\nexport function shuffle(array) {\n let counter = array.length;\n\n // while there are elements in the array\n while (counter > 0) {\n // pick a random index\n let index = Math.floor(Math.random() * counter);\n\n // decrease counter by 1\n counter--;\n\n // and swap the last element with it\n let temp = array[counter];\n array[counter] = array[index];\n array[index] = temp;\n }\n\n return array;\n}\n\nexport function adUnitsFilter(filter, bid) {\n return includes(filter, bid && bid.adUnitCode);\n}\n\nexport function deepClone(obj) {\n return clone(obj);\n}\n\nexport function inIframe() {\n try {\n return internal.getWindowSelf() !== internal.getWindowTop();\n } catch (e) {\n return true;\n }\n}\n\nexport function isSafariBrowser() {\n return /^((?!chrome|android|crios|fxios).)*safari/i.test(navigator.userAgent);\n}\n\nexport function replaceAuctionPrice(str, cpm) {\n if (!str) return;\n return str.replace(/\\$\\{AUCTION_PRICE\\}/g, cpm);\n}\n\nexport function replaceClickThrough(str, clicktag) {\n if (!str || !clicktag || typeof clicktag !== 'string') return;\n return str.replace(/\\${CLICKTHROUGH}/g, clicktag);\n}\n\nexport function timestamp() {\n return new Date().getTime();\n}\n\n/**\n * The returned value represents the time elapsed since the time origin. @see https://developer.mozilla.org/en-US/docs/Web/API/Performance/now\n * @returns {number}\n */\nexport function getPerformanceNow() {\n return (window.performance && window.performance.now && window.performance.now()) || 0;\n}\n\n/**\n * When the deviceAccess flag config option is false, no cookies should be read or set\n * @returns {boolean}\n */\nexport function hasDeviceAccess() {\n return config.getConfig('deviceAccess') !== false;\n}\n\n/**\n * @returns {(boolean|undefined)}\n */\nexport function checkCookieSupport() {\n if (window.navigator.cookieEnabled || !!document.cookie.length) {\n return true;\n }\n}\n\n/**\n * Given a function, return a function which only executes the original after\n * it's been called numRequiredCalls times.\n *\n * Note that the arguments from the previous calls will *not* be forwarded to the original function.\n * Only the final call's arguments matter.\n *\n * @param {function} func The function which should be executed, once the returned function has been executed\n * numRequiredCalls times.\n * @param {int} numRequiredCalls The number of times which the returned function needs to be called before\n * func is.\n */\nexport function delayExecution(func, numRequiredCalls) {\n if (numRequiredCalls < 1) {\n throw new Error(`numRequiredCalls must be a positive number. Got ${numRequiredCalls}`);\n }\n let numCalls = 0;\n return function () {\n numCalls++;\n if (numCalls === numRequiredCalls) {\n func.apply(this, arguments);\n }\n }\n}\n\n/**\n * https://stackoverflow.com/a/34890276/428704\n * @export\n * @param {array} xs\n * @param {string} key\n * @returns {Object} {${key_value}: ${groupByArray}, key_value: {groupByArray}}\n */\nexport function groupBy(xs, key) {\n return xs.reduce(function(rv, x) {\n (rv[x[key]] = rv[x[key]] || []).push(x);\n return rv;\n }, {});\n}\n\n/**\n * Build an object consisting of only defined parameters to avoid creating an\n * object with defined keys and undefined values.\n * @param {Object} object The object to pick defined params out of\n * @param {string[]} params An array of strings representing properties to look for in the object\n * @returns {Object} An object containing all the specified values that are defined\n */\nexport function getDefinedParams(object, params) {\n return params\n .filter(param => object[param])\n .reduce((bid, param) => Object.assign(bid, { [param]: object[param] }), {});\n}\n\n/**\n * @typedef {Object} MediaTypes\n * @property {Object} banner banner configuration\n * @property {Object} native native configuration\n * @property {Object} video video configuration\n */\n\n/**\n * Validates an adunit's `mediaTypes` parameter\n * @param {MediaTypes} mediaTypes mediaTypes parameter to validate\n * @return {boolean} If object is valid\n */\nexport function isValidMediaTypes(mediaTypes) {\n const SUPPORTED_MEDIA_TYPES = ['banner', 'native', 'video'];\n const SUPPORTED_STREAM_TYPES = ['instream', 'outstream', 'adpod'];\n\n const types = Object.keys(mediaTypes);\n\n if (!types.every(type => includes(SUPPORTED_MEDIA_TYPES, type))) {\n return false;\n }\n\n if (FEATURES.VIDEO && mediaTypes.video && mediaTypes.video.context) {\n return includes(SUPPORTED_STREAM_TYPES, mediaTypes.video.context);\n }\n\n return true;\n}\n\n/**\n * Returns user configured bidder params from adunit\n * @param {Object} adUnits\n * @param {string} adUnitCode code\n * @param {string} bidder code\n * @return {Array} user configured param for the given bidder adunit configuration\n */\nexport function getUserConfiguredParams(adUnits, adUnitCode, bidder) {\n return adUnits\n .filter(adUnit => adUnit.code === adUnitCode)\n .map((adUnit) => adUnit.bids)\n .reduce(flatten, [])\n .filter((bidderData) => bidderData.bidder === bidder)\n .map((bidderData) => bidderData.params || {});\n}\n\n/**\n * Returns Do Not Track state\n */\nexport function getDNT() {\n return navigator.doNotTrack === '1' || window.doNotTrack === '1' || navigator.msDoNotTrack === '1' || navigator.doNotTrack === 'yes';\n}\n\nconst compareCodeAndSlot = (slot, adUnitCode) => slot.getAdUnitPath() === adUnitCode || slot.getSlotElementId() === adUnitCode;\n\n/**\n * Returns filter function to match adUnitCode in slot\n * @param {Object} slot GoogleTag slot\n * @return {function} filter function\n */\nexport function isAdUnitCodeMatchingSlot(slot) {\n return (adUnitCode) => compareCodeAndSlot(slot, adUnitCode);\n}\n\n/**\n * Returns filter function to match adUnitCode in slot\n * @param {string} adUnitCode AdUnit code\n * @return {function} filter function\n */\nexport function isSlotMatchingAdUnitCode(adUnitCode) {\n return (slot) => compareCodeAndSlot(slot, adUnitCode);\n}\n\n/**\n * @summary Uses the adUnit's code in order to find a matching gpt slot object on the page\n */\nexport function getGptSlotForAdUnitCode(adUnitCode) {\n let matchingSlot;\n if (isGptPubadsDefined()) {\n // find the first matching gpt slot on the page\n matchingSlot = find(window.googletag.pubads().getSlots(), isSlotMatchingAdUnitCode(adUnitCode));\n }\n return matchingSlot;\n};\n\n/**\n * @summary Uses the adUnit's code in order to find a matching gptSlot on the page\n */\nexport function getGptSlotInfoForAdUnitCode(adUnitCode) {\n const matchingSlot = getGptSlotForAdUnitCode(adUnitCode);\n if (matchingSlot) {\n return {\n gptSlot: matchingSlot.getAdUnitPath(),\n divId: matchingSlot.getSlotElementId()\n }\n }\n return {};\n};\n\n/**\n * Constructs warning message for when unsupported bidders are dropped from an adunit\n * @param {Object} adUnit ad unit from which the bidder is being dropped\n * @param {string} bidder bidder code that is not compatible with the adUnit\n * @return {string} warning message to display when condition is met\n */\nexport function unsupportedBidderMessage(adUnit, bidder) {\n const mediaType = Object.keys(adUnit.mediaTypes || {'banner': 'banner'}).join(', ');\n\n return `\n ${adUnit.code} is a ${mediaType} ad unit\n containing bidders that don't support ${mediaType}: ${bidder}.\n This bidder won't fetch demand.\n `;\n}\n\n/**\n * Checks input is integer or not\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger\n * @param {*} value\n */\nexport function isInteger(value) {\n if (Number.isInteger) {\n return Number.isInteger(value);\n } else {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n }\n}\n\n/**\n * Converts a string value in camel-case to underscore eg 'placementId' becomes 'placement_id'\n * @param {string} value string value to convert\n */\nexport function convertCamelToUnderscore(value) {\n return value.replace(/(?:^|\\.?)([A-Z])/g, function (x, y) { return '_' + y.toLowerCase() }).replace(/^_/, '');\n}\n\n/**\n * Returns a new object with undefined properties removed from given object\n * @param obj the object to clean\n */\nexport function cleanObj(obj) {\n return Object.keys(obj).reduce((newObj, key) => {\n if (typeof obj[key] !== 'undefined') {\n newObj[key] = obj[key];\n }\n return newObj;\n }, {})\n}\n\n/**\n * Create a new object with selected properties. Also allows property renaming and transform functions.\n * @param obj the original object\n * @param properties An array of desired properties\n */\nexport function pick(obj, properties) {\n if (typeof obj !== 'object') {\n return {};\n }\n return properties.reduce((newObj, prop, i) => {\n if (typeof prop === 'function') {\n return newObj;\n }\n\n let newProp = prop;\n let match = prop.match(/^(.+?)\\sas\\s(.+?)$/i);\n\n if (match) {\n prop = match[1];\n newProp = match[2];\n }\n\n let value = obj[prop];\n if (typeof properties[i + 1] === 'function') {\n value = properties[i + 1](value, newObj);\n }\n if (typeof value !== 'undefined') {\n newObj[newProp] = value;\n }\n\n return newObj;\n }, {});\n}\n\n/**\n * Try to convert a value to a type.\n * If it can't be done, the value will be returned.\n *\n * @param {string} typeToConvert The target type. e.g. \"string\", \"number\", etc.\n * @param {*} value The value to be converted into typeToConvert.\n */\nfunction tryConvertType(typeToConvert, value) {\n if (typeToConvert === 'string') {\n return value && value.toString();\n } else if (typeToConvert === 'number') {\n return Number(value);\n } else {\n return value;\n }\n}\n\nexport function convertTypes(types, params) {\n Object.keys(types).forEach(key => {\n if (params[key]) {\n if (isFn(types[key])) {\n params[key] = types[key](params[key]);\n } else {\n params[key] = tryConvertType(types[key], params[key]);\n }\n\n // don't send invalid values\n if (isNaN(params[key])) {\n delete params.key;\n }\n }\n });\n return params;\n}\n\nexport function isArrayOfNums(val, size) {\n return (isArray(val)) && ((size) ? val.length === size : true) && (val.every(v => isInteger(v)));\n}\n\n/**\n * Creates an array of n length and fills each item with the given value\n */\nexport function fill(value, length) {\n let newArray = [];\n\n for (let i = 0; i < length; i++) {\n let valueToPush = isPlainObject(value) ? deepClone(value) : value;\n newArray.push(valueToPush);\n }\n\n return newArray;\n}\n\n/**\n * http://npm.im/chunk\n * Returns an array with *size* chunks from given array\n *\n * Example:\n * ['a', 'b', 'c', 'd', 'e'] chunked by 2 =>\n * [['a', 'b'], ['c', 'd'], ['e']]\n */\nexport function chunk(array, size) {\n let newArray = [];\n\n for (let i = 0; i < Math.ceil(array.length / size); i++) {\n let start = i * size;\n let end = start + size;\n newArray.push(array.slice(start, end));\n }\n\n return newArray;\n}\n\nexport function getMinValueFromArray(array) {\n return Math.min(...array);\n}\n\nexport function getMaxValueFromArray(array) {\n return Math.max(...array);\n}\n\n/**\n * This function will create compare function to sort on object property\n * @param {string} property\n * @returns {function} compare function to be used in sorting\n */\nexport function compareOn(property) {\n return function compare(a, b) {\n if (a[property] < b[property]) {\n return 1;\n }\n if (a[property] > b[property]) {\n return -1;\n }\n return 0;\n }\n}\n\nexport function parseQS(query) {\n return !query ? {} : query\n .replace(/^\\?/, '')\n .split('&')\n .reduce((acc, criteria) => {\n let [k, v] = criteria.split('=');\n if (/\\[\\]$/.test(k)) {\n k = k.replace('[]', '');\n acc[k] = acc[k] || [];\n acc[k].push(v);\n } else {\n acc[k] = v || '';\n }\n return acc;\n }, {});\n}\n\nexport function formatQS(query) {\n return Object\n .keys(query)\n .map(k => Array.isArray(query[k])\n ? query[k].map(v => `${k}[]=${v}`).join('&')\n : `${k}=${query[k]}`)\n .join('&');\n}\n\nexport function parseUrl(url, options) {\n let parsed = document.createElement('a');\n if (options && 'noDecodeWholeURL' in options && options.noDecodeWholeURL) {\n parsed.href = url;\n } else {\n parsed.href = decodeURIComponent(url);\n }\n // in window.location 'search' is string, not object\n let qsAsString = (options && 'decodeSearchAsString' in options && options.decodeSearchAsString);\n return {\n href: parsed.href,\n protocol: (parsed.protocol || '').replace(/:$/, ''),\n hostname: parsed.hostname,\n port: +parsed.port,\n pathname: parsed.pathname.replace(/^(?!\\/)/, '/'),\n search: (qsAsString) ? parsed.search : internal.parseQS(parsed.search || ''),\n hash: (parsed.hash || '').replace(/^#/, ''),\n host: parsed.host || window.location.host\n };\n}\n\nexport function buildUrl(obj) {\n return (obj.protocol || 'http') + '://' +\n (obj.host ||\n obj.hostname + (obj.port ? `:${obj.port}` : '')) +\n (obj.pathname || '') +\n (obj.search ? `?${internal.formatQS(obj.search || '')}` : '') +\n (obj.hash ? `#${obj.hash}` : '');\n}\n\n/**\n * This function deeply compares two objects checking for their equivalence.\n * @param {Object} obj1\n * @param {Object} obj2\n * @param checkTypes {boolean} if set, two objects with identical properties but different constructors will *not*\n * be considered equivalent.\n * @returns {boolean}\n */\nexport function deepEqual(obj1, obj2, {checkTypes = false} = {}) {\n if (obj1 === obj2) return true;\n else if (\n (typeof obj1 === 'object' && obj1 !== null) &&\n (typeof obj2 === 'object' && obj2 !== null) &&\n (!checkTypes || (obj1.constructor === obj2.constructor))\n ) {\n if (Object.keys(obj1).length !== Object.keys(obj2).length) return false;\n for (let prop in obj1) {\n if (obj2.hasOwnProperty(prop)) {\n if (!deepEqual(obj1[prop], obj2[prop], {checkTypes})) {\n return false;\n }\n } else {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n}\n\nexport function mergeDeep(target, ...sources) {\n if (!sources.length) return target;\n const source = sources.shift();\n\n if (isPlainObject(target) && isPlainObject(source)) {\n for (const key in source) {\n if (isPlainObject(source[key])) {\n if (!target[key]) Object.assign(target, { [key]: {} });\n mergeDeep(target[key], source[key]);\n } else if (isArray(source[key])) {\n if (!target[key]) {\n Object.assign(target, { [key]: [...source[key]] });\n } else if (isArray(target[key])) {\n source[key].forEach(obj => {\n let addItFlag = 1;\n for (let i = 0; i < target[key].length; i++) {\n if (deepEqual(target[key][i], obj)) {\n addItFlag = 0;\n break;\n }\n }\n if (addItFlag) {\n target[key].push(obj);\n }\n });\n }\n } else {\n Object.assign(target, { [key]: source[key] });\n }\n }\n }\n\n return mergeDeep(target, ...sources);\n}\n\n/**\n * returns a hash of a string using a fast algorithm\n * source: https://stackoverflow.com/a/52171480/845390\n * @param str\n * @param seed (optional)\n * @returns {string}\n */\nexport function cyrb53Hash(str, seed = 0) {\n // IE doesn't support imul\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/imul#Polyfill\n let imul = function(opA, opB) {\n if (isFn(Math.imul)) {\n return Math.imul(opA, opB);\n } else {\n opB |= 0; // ensure that opB is an integer. opA will automatically be coerced.\n // floating points give us 53 bits of precision to work with plus 1 sign bit\n // automatically handled for our convienence:\n // 1. 0x003fffff /*opA & 0x000fffff*/ * 0x7fffffff /*opB*/ = 0x1fffff7fc00001\n // 0x1fffff7fc00001 < Number.MAX_SAFE_INTEGER /*0x1fffffffffffff*/\n var result = (opA & 0x003fffff) * opB;\n // 2. We can remove an integer coersion from the statement above because:\n // 0x1fffff7fc00001 + 0xffc00000 = 0x1fffffff800001\n // 0x1fffffff800001 < Number.MAX_SAFE_INTEGER /*0x1fffffffffffff*/\n if (opA & 0xffc00000) result += (opA & 0xffc00000) * opB | 0;\n return result | 0;\n }\n };\n\n let h1 = 0xdeadbeef ^ seed;\n let h2 = 0x41c6ce57 ^ seed;\n for (let i = 0, ch; i < str.length; i++) {\n ch = str.charCodeAt(i);\n h1 = imul(h1 ^ ch, 2654435761);\n h2 = imul(h2 ^ ch, 1597334677);\n }\n h1 = imul(h1 ^ (h1 >>> 16), 2246822507) ^ imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = imul(h2 ^ (h2 >>> 16), 2246822507) ^ imul(h1 ^ (h1 >>> 13), 3266489909);\n return (4294967296 * (2097151 & h2) + (h1 >>> 0)).toString();\n}\n\n/**\n * returns a window object, which holds the provided document or null\n * @param {Document} doc\n * @returns {Window}\n */\nexport function getWindowFromDocument(doc) {\n return (doc) ? doc.defaultView : null;\n}\n\n/**\n * returns the result of `JSON.parse(data)`, or undefined if that throws an error.\n * @param data\n * @returns {any}\n */\nexport function safeJSONParse(data) {\n try {\n return JSON.parse(data);\n } catch (e) {}\n}\n\n/**\n * Returns a memoized version of `fn`.\n *\n * @param fn\n * @param key cache key generator, invoked with the same arguments passed to `fn`.\n * By default, the first argument is used as key.\n * @return {function(): any}\n */\nexport function memoize(fn, key = function (arg) { return arg; }) {\n const cache = new Map();\n const memoized = function () {\n const cacheKey = key.apply(this, arguments);\n if (!cache.has(cacheKey)) {\n cache.set(cacheKey, fn.apply(this, arguments));\n }\n return cache.get(cacheKey);\n }\n memoized.clear = cache.clear.bind(cache);\n return memoized;\n}\n\n/**\n * Sets dataset attributes on a script\n * @param {Script} script\n * @param {object} attributes\n */\nexport function setScriptAttributes(script, attributes) {\n for (let key in attributes) {\n if (attributes.hasOwnProperty(key)) {\n script.setAttribute(key, attributes[key]);\n }\n }\n}\n\n/**\n * Encode a string for inclusion in HTML.\n * See https://pragmaticwebsecurity.com/articles/spasecurity/json-stringify-xss.html and\n * https://codeql.github.com/codeql-query-help/javascript/js-bad-code-sanitization/\n * @return {string}\n */\nexport const escapeUnsafeChars = (() => {\n const escapes = {\n '<': '\\\\u003C',\n '>': '\\\\u003E',\n '/': '\\\\u002F',\n '\\\\': '\\\\\\\\',\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n '\\0': '\\\\0',\n '\\u2028': '\\\\u2028',\n '\\u2029': '\\\\u2029'\n };\n\n return function(str) {\n return str.replace(/[<>\\b\\f\\n\\r\\t\\0\\u2028\\u2029\\\\]/g, x => escapes[x])\n }\n})();\n","import {deepAccess} from '../utils.js';\n\n/**\n * Check if GDPR purpose 1 consent was given.\n *\n * @param gdprConsent GDPR consent data\n * @returns {boolean} true if the gdprConsent is null-y; or GDPR does not apply; or if purpose 1 consent was given.\n */\nexport function hasPurpose1Consent(gdprConsent) {\n if (gdprConsent?.gdprApplies) {\n return deepAccess(gdprConsent, 'vendorData.purpose.consents.1') === true;\n }\n return true;\n}\n","import {config} from '../config.js';\nexport const CONFIG_TOGGLE = 'performanceMetrics';\nconst getTime = window.performance && window.performance.now ? () => window.performance.now() : () => Date.now();\nconst NODES = new WeakMap();\n\nexport function metricsFactory({now = getTime, mkNode = makeNode, mkTimer = makeTimer, mkRenamer = (rename) => rename, nodes = NODES} = {}) {\n return function newMetrics() {\n function makeMetrics(self, rename = (n) => ({forEach(fn) { fn(n); }})) {\n rename = mkRenamer(rename);\n\n function accessor(slot) {\n return function (name) {\n return self.dfWalk({\n visit(edge, node) {\n const obj = node[slot];\n if (obj.hasOwnProperty(name)) {\n return obj[name];\n }\n }\n });\n };\n }\n\n const getTimestamp = accessor('timestamps');\n\n /**\n * Register a metric.\n *\n * @param name metric name\n * @param value metric valiue\n */\n function setMetric(name, value) {\n const names = rename(name);\n self.dfWalk({\n follow(inEdge, outEdge) {\n return outEdge.propagate && (!inEdge || !inEdge.stopPropagation)\n },\n visit(edge, node) {\n names.forEach(name => {\n if (edge == null) {\n node.metrics[name] = value;\n } else {\n if (!node.groups.hasOwnProperty(name)) {\n node.groups[name] = [];\n }\n node.groups[name].push(value);\n }\n })\n }\n });\n }\n\n /**\n * Mark the current time as a checkpoint with the given name, to be referenced later\n * by `timeSince` or `timeBetween`.\n *\n * @param name checkpoint name\n */\n function checkpoint(name) {\n self.timestamps[name] = now();\n }\n\n /**\n * Get the tame passed since `checkpoint`, and optionally save it as a metric.\n *\n * @param checkpoint checkpoint name\n * @param metric? metric name\n * @return {number} time between now and `checkpoint`\n */\n function timeSince(checkpoint, metric) {\n const ts = getTimestamp(checkpoint);\n const elapsed = ts != null ? now() - ts : null;\n if (metric != null) {\n setMetric(metric, elapsed);\n }\n return elapsed;\n }\n\n /**\n * Get the time passed between `startCheckpoint` and `endCheckpoint`, optionally saving it as a metric.\n *\n * @param startCheckpoint begin checkpoint\n * @param endCheckpoint end checkpoint\n * @param metric? metric name\n * @return {number} time passed between `startCheckpoint` and `endCheckpoint`\n */\n function timeBetween(startCheckpoint, endCheckpoint, metric) {\n const start = getTimestamp(startCheckpoint);\n const end = getTimestamp(endCheckpoint);\n const elapsed = start != null && end != null ? end - start : null;\n if (metric != null) {\n setMetric(metric, elapsed);\n }\n return elapsed;\n }\n\n /**\n * A function that, when called, stops a time measure and saves it as a metric.\n *\n * @typedef {function(): void} MetricsTimer\n * @template {function} F\n * @property {function(F): F} stopBefore returns a wrapper around the given function that begins by\n * stopping this time measure.\n * @property {function(F): F} stopAfter returns a wrapper around the given function that ends by\n * stopping this time measure.\n */\n\n /**\n * Start measuring a time metric with the given name.\n *\n * @param name metric name\n * @return {MetricsTimer}\n */\n function startTiming(name) {\n return mkTimer(now, (val) => setMetric(name, val))\n }\n\n /**\n * Run fn and measure the time spent in it.\n *\n * @template T\n * @param name the name to use for the measured time metric\n * @param {function(): T} fn\n * @return {T} the return value of `fn`\n */\n function measureTime(name, fn) {\n return startTiming(name).stopAfter(fn)();\n }\n\n /**\n * @typedef {function: T} HookFn\n * @property {function(T): void} bail\n *\n * @template T\n * @typedef {T: HookFn} TimedHookFn\n * @property {function(): void} stopTiming\n * @property {T} untimed\n */\n\n /**\n * Convenience method for measuring time spent in a `.before` or `.after` hook.\n *\n * @template T\n * @param name metric name\n * @param {HookFn} next the hook's `next` (first) argument\n * @param {function(TimedHookFn): T} fn a function that will be run immediately; it takes `next`,\n * where both `next` and `next.bail` automatically\n * call `stopTiming` before continuing with the original hook.\n * @return {T} fn's return value\n */\n function measureHookTime(name, next, fn) {\n const stopTiming = startTiming(name);\n return fn((function (orig) {\n const next = stopTiming.stopBefore(orig);\n next.bail = orig.bail && stopTiming.stopBefore(orig.bail);\n next.stopTiming = stopTiming;\n next.untimed = orig;\n return next;\n })(next));\n }\n\n /**\n * Get all registered metrics.\n * @return {{}}\n */\n function getMetrics() {\n let result = {}\n self.dfWalk({\n visit(edge, node) {\n result = Object.assign({}, !edge || edge.includeGroups ? node.groups : null, node.metrics, result);\n }\n });\n return result;\n }\n\n /**\n * Create and return a new metrics object that starts as a view on all metrics registered here,\n * and - by default - also propagates all new metrics here.\n *\n * Propagated metrics are grouped together, and intended for repeated operations. For example, with the following:\n *\n * ```\n * const metrics = newMetrics();\n * const requests = metrics.measureTime('buildRequests', buildRequests)\n * requests.forEach((req) => {\n * const requestMetrics = metrics.fork();\n * requestMetrics.measureTime('processRequest', () => processRequest(req);\n * })\n * ```\n *\n * if `buildRequests` takes 10ms and returns 3 objects, which respectively take 100, 200, and 300ms in `processRequest`, then\n * the final `metrics.getMetrics()` would be:\n *\n * ```\n * {\n * buildRequests: 10,\n * processRequest: [100, 200, 300]\n * }\n * ```\n *\n * while the inner `requestMetrics.getMetrics()` would be:\n *\n * ```\n * {\n * buildRequests: 10,\n * processRequest: 100 // or 200 for the 2nd loop, etc\n * }\n * ```\n *\n *\n * @param propagate if false, the forked metrics will not be propagated here\n * @param stopPropagation if true, propagation from the new metrics is stopped here - instead of\n * continuing up the chain (if for example these metrics were themselves created through `.fork()`)\n * @param includeGroups if true, the forked metrics will also replicate metrics that were propagated\n * here from elsewhere. For example:\n * ```\n * const metrics = newMetrics();\n * const op1 = metrics.fork();\n * const withoutGroups = metrics.fork();\n * const withGroups = metrics.fork({includeGroups: true});\n * op1.setMetric('foo', 'bar');\n * withoutGroups.getMetrics() // {}\n * withGroups.getMetrics() // {foo: ['bar']}\n * ```\n */\n function fork({propagate = true, stopPropagation = false, includeGroups = false} = {}) {\n return makeMetrics(mkNode([[self, {propagate, stopPropagation, includeGroups}]]), rename);\n }\n\n /**\n * Join `otherMetrics` with these; all metrics from `otherMetrics` will (by default) be propagated here,\n * and all metrics from here will be included in `otherMetrics`.\n *\n * `propagate`, `stopPropagation` and `includeGroups` have the same semantics as in `.fork()`.\n */\n function join(otherMetrics, {propagate = true, stopPropagation = false, includeGroups = false} = {}) {\n const other = nodes.get(otherMetrics);\n if (other != null) {\n other.addParent(self, {propagate, stopPropagation, includeGroups});\n }\n }\n\n /**\n * return a version of these metrics where all new metrics are renamed according to `renameFn`.\n *\n * @param {function(String): Array[String]} renameFn\n */\n function renameWith(renameFn) {\n return makeMetrics(self, renameFn);\n }\n\n /**\n * Create a new metrics object that uses the same propagation and renaming rules as this one.\n */\n function newMetrics() {\n return makeMetrics(self.newSibling(), rename);\n }\n\n const metrics = {\n startTiming,\n measureTime,\n measureHookTime,\n checkpoint,\n timeSince,\n timeBetween,\n setMetric,\n getMetrics,\n fork,\n join,\n newMetrics,\n renameWith,\n toJSON() {\n return getMetrics();\n }\n };\n nodes.set(metrics, self);\n return metrics;\n }\n\n return makeMetrics(mkNode([]));\n }\n}\n\nfunction wrapFn(fn, before, after) {\n return function () {\n before && before();\n try {\n return fn.apply(this, arguments);\n } finally {\n after && after();\n }\n };\n}\n\nfunction makeTimer(now, cb) {\n const start = now();\n let done = false;\n function stopTiming() {\n if (!done) {\n // eslint-disable-next-line standard/no-callback-literal\n cb(now() - start);\n done = true;\n }\n }\n stopTiming.stopBefore = (fn) => wrapFn(fn, stopTiming);\n stopTiming.stopAfter = (fn) => wrapFn(fn, null, stopTiming);\n return stopTiming;\n}\n\nfunction makeNode(parents) {\n return {\n metrics: {},\n timestamps: {},\n groups: {},\n addParent(node, edge) {\n parents.push([node, edge]);\n },\n newSibling() {\n return makeNode(parents.slice());\n },\n dfWalk({visit, follow = () => true, visited = new Set(), inEdge} = {}) {\n let res;\n if (!visited.has(this)) {\n visited.add(this);\n res = visit(inEdge, this);\n if (res != null) return res;\n for (const [parent, outEdge] of parents) {\n if (follow(inEdge, outEdge)) {\n res = parent.dfWalk({visit, follow, visited, inEdge: outEdge});\n if (res != null) return res;\n }\n }\n }\n }\n };\n}\n\nconst nullMetrics = (() => {\n const nop = function () {};\n const empty = () => ({});\n const none = {forEach: nop};\n const nullTimer = () => null;\n nullTimer.stopBefore = (fn) => fn;\n nullTimer.stopAfter = (fn) => fn;\n const nullNode = Object.defineProperties(\n {dfWalk: nop, newSibling: () => nullNode, addParent: nop},\n Object.fromEntries(['metrics', 'timestamps', 'groups'].map(prop => [prop, {get: empty}])));\n return metricsFactory({\n now: () => 0,\n mkNode: () => nullNode,\n mkRenamer: () => () => none,\n mkTimer: () => nullTimer,\n nodes: {get: nop, set: nop}\n })();\n})();\n\nlet enabled = true;\nconfig.getConfig(CONFIG_TOGGLE, (cfg) => { enabled = !!cfg[CONFIG_TOGGLE] });\n\n/**\n * convenience fallback function for metrics that may be undefined, especially during tests.\n */\nexport function useMetrics(metrics) {\n return (enabled && metrics) || nullMetrics;\n}\n\nexport const newMetrics = (() => {\n const makeMetrics = metricsFactory();\n return function () {\n return enabled ? makeMetrics() : nullMetrics;\n }\n})();\n\nexport function hookTimer(prefix, getMetrics) {\n return function(name, hookFn) {\n return function (next, ...args) {\n const that = this;\n return useMetrics(getMetrics.apply(that, args)).measureHookTime(prefix + name, next, function (next) {\n return hookFn.call(that, next, ...args);\n });\n }\n }\n}\n\nexport const timedAuctionHook = hookTimer('requestBids.', (req) => req.metrics);\nexport const timedBidResponseHook = hookTimer('addBidResponse.', (_, bid) => bid.metrics)\n","const SUCCESS = 0;\nconst FAIL = 1;\n\n/**\n * A version of Promise that runs callbacks synchronously when it can (i.e. after it's been fulfilled or rejected).\n */\nexport class GreedyPromise {\n #result;\n #callbacks;\n\n /**\n * Convenience wrapper for setTimeout; takes care of returning an already fulfilled GreedyPromise when the delay is zero.\n *\n * @param {Number} delayMs delay in milliseconds\n * @returns {GreedyPromise} a promise that resolves (to undefined) in `delayMs` milliseconds\n */\n static timeout(delayMs = 0) {\n return new GreedyPromise((resolve) => {\n delayMs === 0 ? resolve() : setTimeout(resolve, delayMs);\n });\n }\n\n constructor(resolver) {\n if (typeof resolver !== 'function') {\n throw new Error('resolver not a function');\n }\n const result = [];\n const callbacks = [];\n let [resolve, reject] = [SUCCESS, FAIL].map((type) => {\n return function (value) {\n if (type === SUCCESS && typeof value?.then === 'function') {\n value.then(resolve, reject);\n } else if (!result.length) {\n result.push(type, value);\n while (callbacks.length) callbacks.shift()();\n }\n }\n });\n try {\n resolver(resolve, reject);\n } catch (e) {\n reject(e);\n }\n this.#result = result;\n this.#callbacks = callbacks;\n }\n\n then(onSuccess, onError) {\n const result = this.#result;\n return new this.constructor((resolve, reject) => {\n const continuation = () => {\n let value = result[1];\n let [handler, resolveFn] = result[0] === SUCCESS ? [onSuccess, resolve] : [onError, reject];\n if (typeof handler === 'function') {\n try {\n value = handler(value);\n } catch (e) {\n reject(e);\n return;\n }\n resolveFn = resolve;\n }\n resolveFn(value);\n }\n result.length ? continuation() : this.#callbacks.push(continuation);\n });\n }\n\n catch(onError) {\n return this.then(null, onError);\n }\n\n finally(onFinally) {\n let val;\n return this.then(\n (v) => { val = v; return onFinally(); },\n (e) => { val = this.constructor.reject(e); return onFinally() }\n ).then(() => val);\n }\n\n static #collect(promises, collector, done) {\n let cnt = promises.length;\n function clt() {\n collector.apply(this, arguments);\n if (--cnt <= 0 && done) done();\n }\n promises.length === 0 && done ? done() : promises.forEach((p, i) => this.resolve(p).then(\n (val) => clt(true, val, i),\n (err) => clt(false, err, i)\n ));\n }\n\n static race(promises) {\n return new this((resolve, reject) => {\n this.#collect(promises, (success, result) => success ? resolve(result) : reject(result));\n })\n }\n\n static all(promises) {\n return new this((resolve, reject) => {\n let res = [];\n this.#collect(promises, (success, val, i) => success ? res[i] = val : reject(val), () => resolve(res));\n })\n }\n\n static allSettled(promises) {\n return new this((resolve) => {\n let res = [];\n this.#collect(promises, (success, val, i) => res[i] = success ? {status: 'fulfilled', value: val} : {status: 'rejected', reason: val}, () => resolve(res))\n })\n }\n\n static resolve(value) {\n return new this(resolve => resolve(value))\n }\n\n static reject(error) {\n return new this((resolve, reject) => reject(error))\n }\n}\n\n/**\n * @returns a {promise, resolve, reject} trio where `promise` is resolved by calling `resolve` or `reject`.\n */\nexport function defer({promiseFactory = (resolver) => new GreedyPromise(resolver)} = {}) {\n function invoker(delegate) {\n return (val) => delegate(val);\n }\n\n let resolveFn, rejectFn;\n\n return {\n promise: promiseFactory((resolve, reject) => {\n resolveFn = resolve;\n rejectFn = reject;\n }),\n resolve: invoker(resolveFn),\n reject: invoker(rejectFn)\n }\n}\n","import adapterManager from './adapterManager.js';\nimport { deepAccess, logError } from './utils.js';\nimport { config } from '../src/config.js';\nimport {includes} from './polyfill.js';\nimport { hook } from './hook.js';\nimport {auctionManager} from './auctionManager.js';\n\nconst VIDEO_MEDIA_TYPE = 'video';\nexport const OUTSTREAM = 'outstream';\nexport const INSTREAM = 'instream';\n\n/**\n * Helper functions for working with video-enabled adUnits\n */\nexport const videoAdUnit = adUnit => {\n const mediaType = adUnit.mediaType === VIDEO_MEDIA_TYPE;\n const mediaTypes = deepAccess(adUnit, 'mediaTypes.video');\n return mediaType || mediaTypes;\n};\nexport const videoBidder = bid => includes(adapterManager.videoAdapters, bid.bidder);\nexport const hasNonVideoBidder = adUnit =>\n adUnit.bids.filter(bid => !videoBidder(bid)).length;\n\n/**\n * @typedef {object} VideoBid\n * @property {string} adId id of the bid\n */\n\n/**\n * Validate that the assets required for video context are present on the bid\n * @param {VideoBid} bid Video bid to validate\n * @param index\n * @return {Boolean} If object is valid\n */\nexport function isValidVideoBid(bid, {index = auctionManager.index} = {}) {\n const videoMediaType = deepAccess(index.getMediaTypes(bid), 'video');\n const context = videoMediaType && deepAccess(videoMediaType, 'context');\n const useCacheKey = videoMediaType && deepAccess(videoMediaType, 'useCacheKey');\n const adUnit = index.getAdUnit(bid);\n\n // if context not defined assume default 'instream' for video bids\n // instream bids require a vast url or vast xml content\n return checkVideoBidSetup(bid, adUnit, videoMediaType, context, useCacheKey);\n}\n\nexport const checkVideoBidSetup = hook('sync', function(bid, adUnit, videoMediaType, context, useCacheKey) {\n if (videoMediaType && (useCacheKey || context !== OUTSTREAM)) {\n // xml-only video bids require a prebid cache url\n if (!config.getConfig('cache.url') && bid.vastXml && !bid.vastUrl) {\n logError(`\n This bid contains only vastXml and will not work when a prebid cache url is not specified.\n Try enabling prebid cache with $$PREBID_GLOBAL$$.setConfig({ cache: {url: \"...\"} });\n `);\n return false;\n }\n\n return !!(bid.vastUrl || bid.vastXml);\n }\n\n // outstream bids require a renderer on the bid or pub-defined on adunit\n if (context === OUTSTREAM && !useCacheKey) {\n return !!(bid.renderer || (adUnit && adUnit.renderer) || videoMediaType.renderer);\n }\n\n return true;\n}, 'checkVideoBidSetup');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// Bits per digit\nvar dbits;\n// JavaScript engine analysis\nvar canary = 0xdeadbeefcafe;\nvar j_lm = ((canary & 0xffffff) == 0xefcafe);\nvar BigInteger = /** @class */ (function () {\n function BigInteger(a) {\n if (a !== null) {\n this.fromHexString(a);\n }\n }\n BigInteger.prototype.toHexString = function () {\n if (this.s < 0) {\n return \"-\" + this.negate().toHexString();\n }\n var k = 4;\n var km = (1 << k) - 1;\n var d;\n var m = false;\n var r = \"\";\n var i = this.t;\n var p = this.DB - (i * this.DB) % k;\n if (i-- > 0) {\n if (p < this.DB && (d = this[i] >> p) > 0) {\n m = true;\n r = int2char(d);\n }\n while (i >= 0) {\n if (p < k) {\n d = (this[i] & ((1 << p) - 1)) << (k - p);\n d |= this[--i] >> (p += this.DB - k);\n }\n else {\n d = (this[i] >> (p -= k)) & km;\n if (p <= 0) {\n p += this.DB;\n --i;\n }\n }\n if (d > 0) {\n m = true;\n }\n if (m) {\n r += int2char(d);\n }\n }\n }\n return m ? r : \"0\";\n };\n BigInteger.prototype.fromHexString = function (s) {\n if (s === null) {\n return;\n }\n var k = 4;\n this.t = 0;\n this.s = 0;\n var i = s.length;\n var mi = false;\n var sh = 0;\n while (--i >= 0) {\n var x = (k == 8) ? (+s[i]) & 0xff : intAt(s, i);\n if (x < 0) {\n if (s.charAt(i) == \"-\") {\n mi = true;\n }\n continue;\n }\n mi = false;\n if (sh == 0) {\n this[this.t++] = x;\n }\n else if (sh + k > this.DB) {\n this[this.t - 1] |= (x & ((1 << (this.DB - sh)) - 1)) << sh;\n this[this.t++] = (x >> (this.DB - sh));\n }\n else {\n this[this.t - 1] |= x << sh;\n }\n sh += k;\n if (sh >= this.DB) {\n sh -= this.DB;\n }\n }\n if (k == 8 && ((+s[0]) & 0x80) != 0) {\n this.s = -1;\n if (sh > 0) {\n this[this.t - 1] |= ((1 << (this.DB - sh)) - 1) << sh;\n }\n }\n this.clamp();\n if (mi) {\n BigInteger.ZERO.subTo(this, this);\n }\n };\n BigInteger.prototype.negate = function () {\n var r = nbi();\n BigInteger.ZERO.subTo(this, r);\n return r;\n };\n BigInteger.prototype.abs = function () {\n return (this.s < 0) ? this.negate() : this;\n };\n BigInteger.prototype.mod = function (a) {\n var r = nbi();\n this.abs().divRemTo(a, null, r);\n if (this.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {\n a.subTo(r, r);\n }\n return r;\n };\n BigInteger.prototype.copyTo = function (r) {\n for (var i = this.t - 1; i >= 0; --i) {\n r[i] = this[i];\n }\n r.t = this.t;\n r.s = this.s;\n };\n BigInteger.prototype.lShiftTo = function (n, r) {\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << cbs) - 1;\n var ds = Math.floor(n / this.DB);\n var c = (this.s << bs) & this.DM;\n for (var i = this.t - 1; i >= 0; --i) {\n r[i + ds + 1] = (this[i] >> cbs) | c;\n c = (this[i] & bm) << bs;\n }\n for (var i = ds - 1; i >= 0; --i) {\n r[i] = 0;\n }\n r[ds] = c;\n r.t = this.t + ds + 1;\n r.s = this.s;\n r.clamp();\n };\n BigInteger.prototype.invDigit = function () {\n if (this.t < 1) {\n return 0;\n }\n var x = this[0];\n if ((x & 1) == 0) {\n return 0;\n }\n var y = x & 3; // y == 1/x mod 2^2\n y = (y * (2 - (x & 0xf) * y)) & 0xf; // y == 1/x mod 2^4\n y = (y * (2 - (x & 0xff) * y)) & 0xff; // y == 1/x mod 2^8\n y = (y * (2 - (((x & 0xffff) * y) & 0xffff))) & 0xffff; // y == 1/x mod 2^16\n // last step - calculate inverse mod DV directly;\n // assumes 16 < DB <= 32 and assumes ability to handle 48-bit ints\n y = (y * (2 - x * y % this.DV)) % this.DV; // y == 1/x mod 2^dbits\n // we really want the negative inverse, and -DV < y < DV\n return (y > 0) ? this.DV - y : -y;\n };\n BigInteger.prototype.dlShiftTo = function (n, r) {\n var i;\n for (i = this.t - 1; i >= 0; --i) {\n r[i + n] = this[i];\n }\n for (i = n - 1; i >= 0; --i) {\n r[i] = 0;\n }\n r.t = this.t + n;\n r.s = this.s;\n };\n BigInteger.prototype.squareTo = function (r) {\n var x = this.abs();\n var i = r.t = 2 * x.t;\n while (--i >= 0) {\n r[i] = 0;\n }\n for (i = 0; i < x.t - 1; ++i) {\n var c = x.am(i, x[i], r, 2 * i, 0, 1);\n if ((r[i + x.t] += x.am(i + 1, 2 * x[i], r, 2 * i + 1, c, x.t - i - 1)) >= x.DV) {\n r[i + x.t] -= x.DV;\n r[i + x.t + 1] = 1;\n }\n }\n if (r.t > 0) {\n r[r.t - 1] += x.am(i, x[i], r, 2 * i, 0, 1);\n }\n r.s = 0;\n r.clamp();\n };\n BigInteger.prototype.multiplyTo = function (a, r) {\n var x = this.abs();\n var y = a.abs();\n var i = x.t;\n r.t = i + y.t;\n while (--i >= 0) {\n r[i] = 0;\n }\n for (i = 0; i < y.t; ++i) {\n r[i + x.t] = x.am(0, y[i], r, i, 0, x.t);\n }\n r.s = 0;\n r.clamp();\n if (this.s != a.s) {\n BigInteger.ZERO.subTo(r, r);\n }\n };\n BigInteger.prototype.divRemTo = function (m, q, r) {\n var pm = m.abs();\n if (pm.t <= 0) {\n return;\n }\n var pt = this.abs();\n if (pt.t < pm.t) {\n if (q != null) {\n q.fromHexString(\"0\");\n }\n if (r != null) {\n this.copyTo(r);\n }\n return;\n }\n if (r == null) {\n r = nbi();\n }\n var y = nbi();\n var ts = this.s;\n var ms = m.s;\n var nsh = this.DB - nbits(pm[pm.t - 1]); // normalize modulus\n if (nsh > 0) {\n pm.lShiftTo(nsh, y);\n pt.lShiftTo(nsh, r);\n }\n else {\n pm.copyTo(y);\n pt.copyTo(r);\n }\n var ys = y.t;\n var y0 = y[ys - 1];\n if (y0 == 0) {\n return;\n }\n var yt = y0 * (1 << this.F1) + ((ys > 1) ? y[ys - 2] >> this.F2 : 0);\n var d1 = this.FV / yt;\n var d2 = (1 << this.F1) / yt;\n var e = 1 << this.F2;\n var i = r.t;\n var j = i - ys;\n var t = (q == null) ? nbi() : q;\n y.dlShiftTo(j, t);\n if (r.compareTo(t) >= 0) {\n r[r.t++] = 1;\n r.subTo(t, r);\n }\n BigInteger.ONE.dlShiftTo(ys, t);\n t.subTo(y, y); // \"negative\" y so we can replace sub with am later\n while (y.t < ys) {\n y[y.t++] = 0;\n }\n while (--j >= 0) {\n // Estimate quotient digit\n var qd = (r[--i] == y0) ? this.DM : Math.floor(r[i] * d1 + (r[i - 1] + e) * d2);\n if ((r[i] += y.am(0, qd, r, j, 0, ys)) < qd) { // Try it out\n y.dlShiftTo(j, t);\n r.subTo(t, r);\n while (r[i] < --qd) {\n r.subTo(t, r);\n }\n }\n }\n if (q != null) {\n r.drShiftTo(ys, q);\n if (ts != ms) {\n BigInteger.ZERO.subTo(q, q);\n }\n }\n r.t = ys;\n r.clamp();\n if (nsh > 0) {\n r.rShiftTo(nsh, r);\n } // Denormalize remainder\n if (ts < 0) {\n BigInteger.ZERO.subTo(r, r);\n }\n };\n BigInteger.prototype.rShiftTo = function (n, r) {\n r.s = this.s;\n var ds = Math.floor(n / this.DB);\n if (ds >= this.t) {\n r.t = 0;\n return;\n }\n var bs = n % this.DB;\n var cbs = this.DB - bs;\n var bm = (1 << bs) - 1;\n r[0] = this[ds] >> bs;\n for (var i = ds + 1; i < this.t; ++i) {\n r[i - ds - 1] |= (this[i] & bm) << cbs;\n r[i - ds] = this[i] >> bs;\n }\n if (bs > 0) {\n r[this.t - ds - 1] |= (this.s & bm) << cbs;\n }\n r.t = this.t - ds;\n r.clamp();\n };\n BigInteger.prototype.drShiftTo = function (n, r) {\n for (var i = n; i < this.t; ++i) {\n r[i - n] = this[i];\n }\n r.t = Math.max(this.t - n, 0);\n r.s = this.s;\n };\n BigInteger.prototype.subTo = function (a, r) {\n var i = 0;\n var c = 0;\n var m = Math.min(a.t, this.t);\n while (i < m) {\n c += this[i] - a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n if (a.t < this.t) {\n c -= a.s;\n while (i < this.t) {\n c += this[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c += this.s;\n }\n else {\n c += this.s;\n while (i < a.t) {\n c -= a[i];\n r[i++] = c & this.DM;\n c >>= this.DB;\n }\n c -= a.s;\n }\n r.s = (c < 0) ? -1 : 0;\n if (c < -1) {\n r[i++] = this.DV + c;\n }\n else if (c > 0) {\n r[i++] = c;\n }\n r.t = i;\n r.clamp();\n };\n BigInteger.prototype.clamp = function () {\n var c = this.s & this.DM;\n while (this.t > 0 && this[this.t - 1] == c) {\n --this.t;\n }\n };\n BigInteger.prototype.modPowInt = function (e, m) {\n var z;\n if (e < 256 || m.isEven()) {\n z = new Classic(m);\n }\n else {\n z = new Montgomery(m);\n }\n return this.exp(e, z);\n };\n BigInteger.prototype.exp = function (e, z) {\n if (e > 0xffffffff || e < 1) {\n return BigInteger.ONE;\n }\n var r = nbi();\n var r2 = nbi();\n var g = z.convert(this);\n var i = nbits(e) - 1;\n g.copyTo(r);\n while (--i >= 0) {\n z.sqrTo(r, r2);\n if ((e & (1 << i)) > 0) {\n z.mulTo(r2, g, r);\n }\n else {\n var t = r;\n r = r2;\n r2 = t;\n }\n }\n return z.revert(r);\n };\n BigInteger.prototype.isEven = function () {\n return ((this.t > 0) ? (this[0] & 1) : this.s) == 0;\n };\n BigInteger.prototype.compareTo = function (a) {\n var r = this.s - a.s;\n if (r != 0) {\n return r;\n }\n var i = this.t;\n r = i - a.t;\n if (r != 0) {\n return (this.s < 0) ? -r : r;\n }\n while (--i >= 0) {\n if ((r = this[i] - a[i]) != 0) {\n return r;\n }\n }\n return 0;\n };\n BigInteger.prototype.am1 = function (i, x, w, j, c, n) {\n while (--n >= 0) {\n var v = x * this[i++] + w[j] + c;\n c = Math.floor(v / 0x4000000);\n w[j++] = v & 0x3ffffff;\n }\n return c;\n };\n // am2 avoids a big mult-and-extract completely.\n // Max digit bits should be <= 30 because we do bitwise ops\n // on values up to 2*hdvalue^2-hdvalue-1 (< 2^31)\n BigInteger.prototype.am2 = function (i, x, w, j, c, n) {\n var xl = x & 0x7fff;\n var xh = x >> 15;\n while (--n >= 0) {\n var l = this[i] & 0x7fff;\n var h = this[i++] >> 15;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x7fff) << 15) + w[j] + (c & 0x3fffffff);\n c = (l >>> 30) + (m >>> 15) + xh * h + (c >>> 30);\n w[j++] = l & 0x3fffffff;\n }\n return c;\n };\n // Alternately, set max digit bits to 28 since some\n // browsers slow down when dealing with 32-bit numbers.\n BigInteger.prototype.am3 = function (i, x, w, j, c, n) {\n var xl = x & 0x3fff;\n var xh = x >> 14;\n while (--n >= 0) {\n var l = this[i] & 0x3fff;\n var h = this[i++] >> 14;\n var m = xh * l + h * xl;\n l = xl * l + ((m & 0x3fff) << 14) + w[j] + c;\n c = (l >> 28) + (m >> 14) + xh * h;\n w[j++] = l & 0xfffffff;\n }\n return c;\n };\n return BigInteger;\n}());\nexports.BigInteger = BigInteger;\nfunction nbi() { return new BigInteger(null); }\nexports.nbi = nbi;\nfunction nbits(x) {\n var r = 1;\n var t;\n if ((t = x >>> 16) != 0) {\n x = t;\n r += 16;\n }\n if ((t = x >> 8) != 0) {\n x = t;\n r += 8;\n }\n if ((t = x >> 4) != 0) {\n x = t;\n r += 4;\n }\n if ((t = x >> 2) != 0) {\n x = t;\n r += 2;\n }\n if ((t = x >> 1) != 0) {\n x = t;\n r += 1;\n }\n return r;\n}\nexports.nbits = nbits;\nvar BI_RC = [];\nvar rr;\nvar vv;\nrr = \"0\".charCodeAt(0);\nfor (vv = 0; vv <= 9; ++vv) {\n BI_RC[rr++] = vv;\n}\nrr = \"a\".charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\nrr = \"A\".charCodeAt(0);\nfor (vv = 10; vv < 36; ++vv) {\n BI_RC[rr++] = vv;\n}\nfunction intAt(s, i) {\n var c = BI_RC[s.charCodeAt(i)];\n return (c == null) ? -1 : c;\n}\nexports.intAt = intAt;\nvar BI_RM = \"0123456789abcdefghijklmnopqrstuvwxyz\";\nfunction int2char(n) {\n return BI_RM.charAt(n);\n}\nexports.int2char = int2char;\nvar b64map = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\nvar b64pad = \"=\";\nfunction b64toHex(s) {\n var ret = \"\";\n var i;\n var k = 0; // b64 state, 0-3\n var slop = 0;\n for (i = 0; i < s.length; ++i) {\n if (s.charAt(i) == b64pad) {\n break;\n }\n var v = b64map.indexOf(s.charAt(i));\n if (v < 0) {\n continue;\n }\n if (k == 0) {\n ret += int2char(v >> 2);\n slop = v & 3;\n k = 1;\n }\n else if (k == 1) {\n ret += int2char((slop << 2) | (v >> 4));\n slop = v & 0xf;\n k = 2;\n }\n else if (k == 2) {\n ret += int2char(slop);\n ret += int2char(v >> 2);\n slop = v & 3;\n k = 3;\n }\n else {\n ret += int2char((slop << 2) | (v >> 4));\n ret += int2char(v & 0xf);\n k = 0;\n }\n }\n if (k == 1) {\n ret += int2char(slop << 2);\n }\n return ret;\n}\nexports.b64toHex = b64toHex;\nfunction removeExtraSymbols(s) {\n return s\n .replace(/^1f+00/, \"\")\n .replace(\"3031300d060960864801650304020105000420\", \"\");\n}\nexports.removeExtraSymbols = removeExtraSymbols;\nvar Classic = /** @class */ (function () {\n function Classic(m) {\n this.m = m;\n }\n // Classic.prototype.convert = cConvert;\n Classic.prototype.convert = function (x) {\n if (x.s < 0 || x.compareTo(this.m) >= 0) {\n return x.mod(this.m);\n }\n else {\n return x;\n }\n };\n // Classic.prototype.revert = cRevert;\n Classic.prototype.revert = function (x) {\n return x;\n };\n // Classic.prototype.reduce = cReduce;\n Classic.prototype.reduce = function (x) {\n x.divRemTo(this.m, null, x);\n };\n // Classic.prototype.mulTo = cMulTo;\n Classic.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n };\n // Classic.prototype.sqrTo = cSqrTo;\n Classic.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n this.reduce(r);\n };\n return Classic;\n}());\nvar Montgomery = /** @class */ (function () {\n function Montgomery(m) {\n this.m = m;\n this.mp = m.invDigit();\n this.mpl = this.mp & 0x7fff;\n this.mph = this.mp >> 15;\n this.um = (1 << (m.DB - 15)) - 1;\n this.mt2 = 2 * m.t;\n }\n // Montgomery.prototype.convert = montConvert;\n // xR mod m\n Montgomery.prototype.convert = function (x) {\n var r = nbi();\n x.abs().dlShiftTo(this.m.t, r);\n r.divRemTo(this.m, null, r);\n if (x.s < 0 && r.compareTo(BigInteger.ZERO) > 0) {\n this.m.subTo(r, r);\n }\n return r;\n };\n // Montgomery.prototype.revert = montRevert;\n // x/R mod m\n Montgomery.prototype.revert = function (x) {\n var r = nbi();\n x.copyTo(r);\n this.reduce(r);\n return r;\n };\n // Montgomery.prototype.reduce = montReduce;\n // x = x/R mod m (HAC 14.32)\n Montgomery.prototype.reduce = function (x) {\n while (x.t <= this.mt2) {\n // pad x so am has enough room later\n x[x.t++] = 0;\n }\n for (var i = 0; i < this.m.t; ++i) {\n // faster way of calculating u0 = x[i]*mp mod DV\n var j = x[i] & 0x7fff;\n var u0 = (j * this.mpl + (((j * this.mph + (x[i] >> 15) * this.mpl) & this.um) << 15)) & x.DM;\n // use am to combine the multiply-shift-add into one call\n j = i + this.m.t;\n x[j] += this.m.am(0, u0, x, i, 0, this.m.t);\n // propagate carry\n while (x[j] >= x.DV) {\n x[j] -= x.DV;\n x[++j]++;\n }\n }\n x.clamp();\n x.drShiftTo(this.m.t, x);\n if (x.compareTo(this.m) >= 0) {\n x.subTo(this.m, x);\n }\n };\n // Montgomery.prototype.mulTo = montMulTo;\n // r = \"xy/R mod m\"; x,y != r\n Montgomery.prototype.mulTo = function (x, y, r) {\n x.multiplyTo(y, r);\n this.reduce(r);\n };\n // Montgomery.prototype.sqrTo = montSqrTo;\n // r = \"x^2/R mod m\"; x != r\n Montgomery.prototype.sqrTo = function (x, r) {\n x.squareTo(r);\n this.reduce(r);\n };\n return Montgomery;\n}());\nfunction nbv(i) {\n var r = nbi();\n r.fromHexString(i.toString());\n return r;\n}\nexports.nbv = nbv;\nBigInteger.ZERO = nbv(0);\nBigInteger.ONE = nbv(1);\nif (j_lm && (navigator.appName == \"Microsoft Internet Explorer\")) {\n BigInteger.prototype.am = BigInteger.prototype.am2;\n dbits = 30;\n}\nelse if (j_lm && (navigator.appName != \"Netscape\")) {\n BigInteger.prototype.am = BigInteger.prototype.am1;\n dbits = 26;\n}\nelse { // Mozilla/Netscape seems to prefer am3\n BigInteger.prototype.am = BigInteger.prototype.am3;\n dbits = 28;\n}\nBigInteger.prototype.DB = dbits;\nBigInteger.prototype.DM = ((1 << dbits) - 1);\nBigInteger.prototype.DV = (1 << dbits);\nvar BI_FP = 52;\nBigInteger.prototype.FV = Math.pow(2, BI_FP);\nBigInteger.prototype.F1 = BI_FP - dbits;\nBigInteger.prototype.F2 = 2 * dbits - BI_FP;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Sha256 = /** @class */ (function () {\n function Sha256() {\n }\n Sha256.hash = function (msg) {\n msg = Sha256.utf8Encode(msg || \"\");\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n var H = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n msg += String.fromCharCode(0x80);\n var l = msg.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n for (var i = 0; i < N; i++) {\n M[i] = new Array(16);\n for (var j = 0; j < 16; j++) {\n M[i][j] = (msg.charCodeAt(i * 64 + j * 4) << 24) | (msg.charCodeAt(i * 64 + j * 4 + 1) << 16)\n | (msg.charCodeAt(i * 64 + j * 4 + 2) << 8) | (msg.charCodeAt(i * 64 + j * 4 + 3) << 0);\n }\n }\n var lenHi = ((msg.length - 1) * 8) / Math.pow(2, 32);\n var lenLo = ((msg.length - 1) * 8) >>> 0;\n M[N - 1][14] = Math.floor(lenHi);\n M[N - 1][15] = lenLo;\n for (var i = 0; i < N; i++) {\n var W = new Array(64);\n for (var t = 0; t < 16; t++)\n W[t] = M[i][t];\n for (var t = 16; t < 64; t++) {\n W[t] = (Sha256.q1(W[t - 2]) + W[t - 7] + Sha256.q0(W[t - 15]) + W[t - 16]) >>> 0;\n }\n var a = H[0], b = H[1], c = H[2], d = H[3], e = H[4], f = H[5], g = H[6], h = H[7];\n for (var t = 0; t < 64; t++) {\n var T1 = h + Sha256.z1(e) + Sha256.Ch(e, f, g) + K[t] + W[t];\n var T2 = Sha256.z0(a) + Sha256.Maj(a, b, c);\n h = g;\n g = f;\n f = e;\n e = (d + T1) >>> 0;\n d = c;\n c = b;\n b = a;\n a = (T1 + T2) >>> 0;\n }\n H[0] = (H[0] + a) >>> 0;\n H[1] = (H[1] + b) >>> 0;\n H[2] = (H[2] + c) >>> 0;\n H[3] = (H[3] + d) >>> 0;\n H[4] = (H[4] + e) >>> 0;\n H[5] = (H[5] + f) >>> 0;\n H[6] = (H[6] + g) >>> 0;\n H[7] = (H[7] + h) >>> 0;\n }\n var R = new Array(H.length);\n for (var h = 0; h < H.length; h++)\n R[h] = ('00000000' + H[h].toString(16)).slice(-8);\n return R.join('');\n };\n Sha256.utf8Encode = function (str) {\n try {\n return new TextEncoder().encode(str).reduce(function (prev, curr) { return prev + String.fromCharCode(curr); }, '');\n }\n catch (e) {\n return unescape(encodeURIComponent(str));\n }\n };\n Sha256.ROTR = function (n, x) {\n return (x >>> n) | (x << (32 - n));\n };\n Sha256.z0 = function (x) { return Sha256.ROTR(2, x) ^ Sha256.ROTR(13, x) ^ Sha256.ROTR(22, x); };\n Sha256.z1 = function (x) { return Sha256.ROTR(6, x) ^ Sha256.ROTR(11, x) ^ Sha256.ROTR(25, x); };\n Sha256.q0 = function (x) { return Sha256.ROTR(7, x) ^ Sha256.ROTR(18, x) ^ (x >>> 3); };\n Sha256.q1 = function (x) { return Sha256.ROTR(17, x) ^ Sha256.ROTR(19, x) ^ (x >>> 10); };\n Sha256.Ch = function (x, y, z) { return (x & y) ^ (~x & z); };\n Sha256.Maj = function (x, y, z) { return (x & y) ^ (x & z) ^ (y & z); };\n return Sha256;\n}());\nexports.Sha256 = Sha256;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar jsbnLite_1 = require(\"./jsbnLite\");\nvar sha256_1 = require(\"./sha256\");\nfunction verify(code, hash, nStrPubKey, ePubKey) {\n var x = new jsbnLite_1.BigInteger(jsbnLite_1.b64toHex(hash));\n var m = new jsbnLite_1.BigInteger(jsbnLite_1.b64toHex(nStrPubKey));\n var r = x.modPowInt(ePubKey, m);\n return jsbnLite_1.removeExtraSymbols(r.toHexString()) === sha256_1.Sha256.hash(code);\n}\nexports.verify = verify;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \"body {\\n\\tfont-family: Arial, sans-serif;\\n}\\nmain {\\n\\tmax-width: 980px;\\n\\tmargin: 0 auto;\\n}\\nh1.title {\\n\\tmargin-bottom: 5px;\\n}\\nh4.subtitle {\\n\\tmargin-top: 0;\\n}\\nmain h5 {\\n\\tmargin-bottom: 0;\\n}\\nmain p {\\n\\tline-height: 1.4em;\\n}\\nmain p.subtext {\\n\\tmargin-left: 12px;\\n\\tfont-size: 0.9em;\\n}\\nspan.grey {\\n\\tcolor: #5b5b5b;\\n\\tfont-size: 0.9em;\\n}\\npre {\\n\\tbackground: #f4f4f4;\\n\\tborder: 1px solid #ddd;\\n\\tborder-left: 3px solid #6495ed;\\n\\tcolor: #666;\\n\\tpage-break-inside: avoid;\\n\\tfont-family: monospace;\\n\\tfont-size: 15px;\\n\\tline-height: 1.6;\\n\\tmargin-bottom: 1.6em;\\n\\tmax-width: 100%;\\n\\toverflow: auto;\\n\\tpadding: 1em 1.5em;\\n\\tdisplay: block;\\n\\tword-wrap: break-word;\\n}\\ncode {\\n\\tbackground-color: #f4f4f4;\\n\\tfont-size: 1.2em;\\n}\\n.breakout {\\n\\tbackground-color: #f5f5f5;\\n\\tposition: relative;\\n\\tleft: calc(50% - 50vw);\\n\\tright: calc(50% - 50vw);\\n\\twidth: 100vw;\\n\\tbox-sizing: border-box;\\n\\tclear: both;\\n}\\n.breakout > div {\\n\\tpadding-top: 2rem;\\n\\tpadding-bottom: 2rem;\\n}\\n.breakout > div:nth-child(2) {\\n\\ttop: 2rem !important;\\n}\\n.example-content-container {\\n\\tmax-width: 600px;\\n\\tmargin: 40px auto 50px auto;\\n\\ttext-align: justify;\\n\\ttext-justify: inter-word;\\n}\", \"\",{\"version\":3,\"sources\":[\"webpack://./src/demo.css\"],\"names\":[],\"mappings\":\"AAAA;CACC,8BAA8B;AAC/B;AACA;CACC,gBAAgB;CAChB,cAAc;AACf;AACA;CACC,kBAAkB;AACnB;AACA;CACC,aAAa;AACd;AACA;CACC,gBAAgB;AACjB;AACA;CACC,kBAAkB;AACnB;AACA;CACC,iBAAiB;CACjB,gBAAgB;AACjB;AACA;CACC,cAAc;CACd,gBAAgB;AACjB;AACA;CACC,mBAAmB;CACnB,sBAAsB;CACtB,8BAA8B;CAC9B,WAAW;CACX,wBAAwB;CACxB,sBAAsB;CACtB,eAAe;CACf,gBAAgB;CAChB,oBAAoB;CACpB,eAAe;CACf,cAAc;CACd,kBAAkB;CAClB,cAAc;CACd,qBAAqB;AACtB;AACA;CACC,yBAAyB;CACzB,gBAAgB;AACjB;AACA;CACC,yBAAyB;CACzB,kBAAkB;CAClB,sBAAsB;CACtB,uBAAuB;CACvB,YAAY;CACZ,sBAAsB;CACtB,WAAW;AACZ;AACA;CACC,iBAAiB;CACjB,oBAAoB;AACrB;AACA;CACC,oBAAoB;AACrB;AACA;CACC,gBAAgB;CAChB,2BAA2B;CAC3B,mBAAmB;CACnB,wBAAwB;AACzB\",\"sourcesContent\":[\"body {\\n\\tfont-family: Arial, sans-serif;\\n}\\nmain {\\n\\tmax-width: 980px;\\n\\tmargin: 0 auto;\\n}\\nh1.title {\\n\\tmargin-bottom: 5px;\\n}\\nh4.subtitle {\\n\\tmargin-top: 0;\\n}\\nmain h5 {\\n\\tmargin-bottom: 0;\\n}\\nmain p {\\n\\tline-height: 1.4em;\\n}\\nmain p.subtext {\\n\\tmargin-left: 12px;\\n\\tfont-size: 0.9em;\\n}\\nspan.grey {\\n\\tcolor: #5b5b5b;\\n\\tfont-size: 0.9em;\\n}\\npre {\\n\\tbackground: #f4f4f4;\\n\\tborder: 1px solid #ddd;\\n\\tborder-left: 3px solid #6495ed;\\n\\tcolor: #666;\\n\\tpage-break-inside: avoid;\\n\\tfont-family: monospace;\\n\\tfont-size: 15px;\\n\\tline-height: 1.6;\\n\\tmargin-bottom: 1.6em;\\n\\tmax-width: 100%;\\n\\toverflow: auto;\\n\\tpadding: 1em 1.5em;\\n\\tdisplay: block;\\n\\tword-wrap: break-word;\\n}\\ncode {\\n\\tbackground-color: #f4f4f4;\\n\\tfont-size: 1.2em;\\n}\\n.breakout {\\n\\tbackground-color: #f5f5f5;\\n\\tposition: relative;\\n\\tleft: calc(50% - 50vw);\\n\\tright: calc(50% - 50vw);\\n\\twidth: 100vw;\\n\\tbox-sizing: border-box;\\n\\tclear: both;\\n}\\n.breakout > div {\\n\\tpadding-top: 2rem;\\n\\tpadding-bottom: 2rem;\\n}\\n.breakout > div:nth-child(2) {\\n\\ttop: 2rem !important;\\n}\\n.example-content-container {\\n\\tmax-width: 600px;\\n\\tmargin: 40px auto 50px auto;\\n\\ttext-align: justify;\\n\\ttext-justify: inter-word;\\n}\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = []; // return the list of modules as css string\n\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n\n content += cssWithMappingToString(item);\n\n if (needLayer) {\n content += \"}\";\n }\n\n if (item[2]) {\n content += \"}\";\n }\n\n if (item[4]) {\n content += \"}\";\n }\n\n return content;\n }).join(\"\");\n }; // import a list of modules into the list\n\n\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n\n var alreadyImportedModules = {};\n\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n\n list.push(item);\n }\n };\n\n return list;\n};","\"use strict\";\n\nmodule.exports = function (item) {\n var content = item[1];\n var cssMapping = item[3];\n\n if (!cssMapping) {\n return content;\n }\n\n if (typeof btoa === \"function\") {\n var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));\n var data = \"sourceMappingURL=data:application/json;charset=utf-8;base64,\".concat(base64);\n var sourceMapping = \"/*# \".concat(data, \" */\");\n var sourceURLs = cssMapping.sources.map(function (source) {\n return \"/*# sourceURL=\".concat(cssMapping.sourceRoot || \"\").concat(source, \" */\");\n });\n return [content].concat(sourceURLs).concat([sourceMapping]).join(\"\\n\");\n }\n\n return [content].join(\"\\n\");\n};","export default function dlv(obj, key, def, p, undef) {\n\tkey = key.split ? key.split('.') : key;\n\tfor (p = 0; p < key.length; p++) {\n\t\tobj = obj ? obj[key[p]] : undef;\n\t}\n\treturn obj === undef ? def : obj;\n}\n","/*\n* @license MIT\n* Fun Hooks v0.9.10\n* (c) @snapwich\n*/\ncreate.SYNC = 1;\ncreate.ASYNC = 2;\ncreate.QUEUE = 4;\n\nvar packageName = \"fun-hooks\";\n\nfunction hasProxy() {\n return !!(typeof Proxy === \"function\" && Proxy.revocable);\n}\n\nvar defaults = Object.freeze({\n useProxy: true,\n ready: 0\n});\n\nvar hookableMap = new WeakMap();\n\n// detect incorrectly implemented reduce and if found use polyfill\n// https://github.com/prebid/Prebid.js/issues/3576\n// polyfill from: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce\nvar reduce =\n [1]\n .reduce(function(a, b, c) {\n return [a, b, c];\n }, 2)\n .toString() === \"2,1,0\"\n ? Array.prototype.reduce\n : function(callback, initial) {\n var o = Object(this);\n var len = o.length >>> 0;\n var k = 0;\n var value;\n if (initial) {\n value = initial;\n } else {\n while (k < len && !(k in o)) {\n k++;\n }\n value = o[k++];\n }\n while (k < len) {\n if (k in o) {\n value = callback(value, o[k], k, o);\n }\n k++;\n }\n return value;\n };\n\nfunction rest(args, skip) {\n return Array.prototype.slice.call(args, skip);\n}\n\nvar assign =\n Object.assign ||\n function assign(target) {\n return reduce.call(\n rest(arguments, 1),\n function(target, obj) {\n if (obj) {\n Object.keys(obj).forEach(function(prop) {\n target[prop] = obj[prop];\n });\n }\n return target;\n },\n target\n );\n };\n\nfunction runAll(queue) {\n var queued;\n // eslint-disable-next-line no-cond-assign\n while ((queued = queue.shift())) {\n queued();\n }\n}\n\nfunction create(config) {\n var hooks = {};\n var postReady = [];\n\n config = assign({}, defaults, config);\n\n function dispatch(arg1, arg2) {\n if (typeof arg1 === \"function\") {\n return hookFn.call(null, \"sync\", arg1, arg2);\n } else if (typeof arg1 === \"string\" && typeof arg2 === \"function\") {\n return hookFn.apply(null, arguments);\n } else if (typeof arg1 === \"object\") {\n return hookObj.apply(null, arguments);\n }\n }\n\n var ready;\n if (config.ready) {\n dispatch.ready = function() {\n ready = true;\n runAll(postReady);\n };\n } else {\n ready = true;\n }\n\n function hookObj(obj, props, objName) {\n var walk = true;\n if (typeof props === \"undefined\") {\n props = Object.getOwnPropertyNames(obj);\n walk = false;\n }\n var objHooks = {};\n var doNotHook = [\"constructor\"];\n do {\n props = props.filter(function(prop) {\n return (\n typeof obj[prop] === \"function\" &&\n !(doNotHook.indexOf(prop) !== -1) &&\n !prop.match(/^_/)\n );\n });\n props.forEach(function(prop) {\n var parts = prop.split(\":\");\n var name = parts[0];\n var type = parts[1] || \"sync\";\n if (!objHooks[name]) {\n var fn = obj[name];\n objHooks[name] = obj[name] = hookFn(\n type,\n fn,\n objName ? [objName, name] : undefined\n );\n }\n });\n obj = Object.getPrototypeOf(obj);\n } while (walk && obj);\n return objHooks;\n }\n\n /**\n * Navigates a string path to return a hookable function. If not found, creates a placeholder for hooks.\n * @param {(Array | string)} path\n */\n function get(path) {\n var parts = Array.isArray(path) ? path : path.split(\".\");\n return reduce.call(\n parts,\n function(memo, part, i) {\n var item = memo[part];\n var installed = false;\n if (item) {\n return item;\n } else if (i === parts.length - 1) {\n if (!ready) {\n postReady.push(function() {\n if (!installed) {\n // eslint-disable-next-line no-console\n console.warn(\n packageName +\n \": referenced '\" +\n path +\n \"' but it was never created\"\n );\n }\n });\n }\n return (memo[part] = newHookable(function(fn) {\n memo[part] = fn;\n installed = true;\n }));\n }\n return (memo[part] = {});\n },\n hooks\n );\n }\n\n function newHookable(onInstall) {\n var before = [];\n var after = [];\n var generateTrap = function() {};\n\n var api = {\n before: function(hook, priority) {\n return add.call(this, before, \"before\", hook, priority);\n },\n after: function(hook, priority) {\n return add.call(this, after, \"after\", hook, priority);\n },\n getHooks: function(match) {\n var hooks = before.concat(after);\n if (typeof match === \"object\") {\n hooks = hooks.filter(function(entry) {\n return Object.keys(match).every(function(prop) {\n return entry[prop] === match[prop];\n });\n });\n }\n try {\n assign(hooks, {\n remove: function() {\n hooks.forEach(function(entry) {\n entry.remove();\n });\n return this;\n }\n });\n } catch (e) {\n console.error(\n \"error adding `remove` to array, did you modify Array.prototype?\"\n );\n }\n return hooks;\n },\n removeAll: function() {\n return this.getHooks().remove();\n }\n };\n\n var meta = {\n install: function(type, fn, generate) {\n this.type = type;\n generateTrap = generate;\n generate(before, after);\n onInstall && onInstall(fn);\n }\n };\n\n // store meta data related to hookable. use `api.after` since `api` reference is not available on our proxy.\n hookableMap.set(api.after, meta);\n\n return api;\n\n function add(store, type, hook, priority) {\n var entry = {\n hook: hook,\n type: type,\n priority: priority || 10,\n remove: function() {\n var index = store.indexOf(entry);\n if (index !== -1) {\n store.splice(index, 1);\n generateTrap(before, after);\n }\n }\n };\n store.push(entry);\n store.sort(function(a, b) {\n return b.priority - a.priority;\n });\n generateTrap(before, after);\n return this;\n }\n }\n\n function hookFn(type, fn, name) {\n // check if function has already been wrapped\n var meta = fn.after && hookableMap.get(fn.after);\n if (meta) {\n if (meta.type !== type) {\n throw packageName + \": recreated hookable with different type\";\n } else {\n return fn;\n }\n }\n\n var hookable = name ? get(name) : newHookable();\n\n var trap;\n var hookedFn;\n var handlers = {\n get: function(target, prop) {\n return hookable[prop] || Reflect.get.apply(Reflect, arguments);\n }\n };\n\n if (!ready) {\n postReady.push(setTrap);\n }\n\n if (config.useProxy && hasProxy()) {\n hookedFn = new Proxy(fn, handlers);\n } else {\n hookedFn = function() {\n return handlers.apply\n ? handlers.apply(fn, this, rest(arguments))\n : fn.apply(this, arguments);\n };\n assign(hookedFn, hookable);\n }\n\n hookableMap.get(hookedFn.after).install(type, hookedFn, generateTrap);\n\n return hookedFn;\n\n // eslint-disable-next-line no-redeclare\n function generateTrap(before, after) {\n var order = [];\n var targetIndex;\n if (before.length || after.length) {\n before.forEach(addToOrder);\n // placeholder for target function wrapper\n targetIndex = order.push(undefined) - 1;\n after.forEach(addToOrder);\n trap = function(target, thisArg, args) {\n var curr = 0;\n var result;\n var callback =\n type === \"async\" &&\n typeof args[args.length - 1] === \"function\" &&\n args.pop();\n function bail(value) {\n if (type === \"sync\") {\n result = value;\n } else if (callback) {\n callback.apply(null, arguments);\n }\n }\n function next(value) {\n if (order[curr]) {\n var args = rest(arguments);\n next.bail = bail;\n args.unshift(next);\n return order[curr++].apply(thisArg, args);\n }\n if (type === \"sync\") {\n result = value;\n } else if (callback) {\n callback.apply(null, arguments);\n }\n }\n order[targetIndex] = function() {\n var args = rest(arguments, 1);\n if (type === \"async\" && callback) {\n delete next.bail;\n args.push(next);\n }\n var result = target.apply(thisArg, args);\n if (type === \"sync\") {\n next(result);\n }\n };\n next.apply(null, args);\n return result;\n };\n } else {\n trap = undefined;\n }\n setTrap();\n\n function addToOrder(entry) {\n order.push(entry.hook);\n }\n }\n\n function setTrap() {\n if (\n ready ||\n (type === \"sync\" && !(config.ready & create.SYNC)) ||\n (type === \"async\" && !(config.ready & create.ASYNC))\n ) {\n handlers.apply = trap;\n } else if (type === \"sync\" || !(config.ready & create.QUEUE)) {\n handlers.apply = function() {\n throw packageName + \": hooked function not ready\";\n };\n } else {\n handlers.apply = function() {\n var args = arguments;\n postReady.push(function() {\n hookedFn.apply(args[1], args[2]);\n });\n };\n }\n }\n }\n\n dispatch.get = get;\n return dispatch;\n}\n\n/* global module */\nmodule.exports = create;\n","module.exports = clone;\n\n/*\n Identical to `just-extend(true, {}, obj1)`\n\n var arr = [1, 2, 3];\n var subObj = {aa: 1};\n var obj = {a: 3, b: 5, c: arr, d: subObj};\n var objClone = clone(obj);\n arr.push(4);\n subObj.bb = 2;\n obj; // {a: 3, b: 5, c: [1, 2, 3, 4], d: {aa: 1}} \n objClone; // {a: 3, b: 5, c: [1, 2, 3], d: {aa: 1, bb: 2}}\n*/\n\nfunction clone(obj) {\n var result = Array.isArray(obj) ? [] : {};\n for (var key in obj) {\n // include prototype properties\n var value = obj[key];\n if (value && typeof value == 'object') {\n result[key] = clone(value);\n } else {\n result[key] = value;\n }\n }\n return result;\n}\n","\n import API from \"!../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../node_modules/css-loader/dist/cjs.js!./demo.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../node_modules/css-loader/dist/cjs.js!./demo.css\";\n export default content && content.locals ? content.locals : undefined;\n","\"use strict\";\n\nvar stylesInDOM = [];\n\nfunction getIndexByIdentifier(identifier) {\n var result = -1;\n\n for (var i = 0; i < stylesInDOM.length; i++) {\n if (stylesInDOM[i].identifier === identifier) {\n result = i;\n break;\n }\n }\n\n return result;\n}\n\nfunction modulesToDom(list, options) {\n var idCountMap = {};\n var identifiers = [];\n\n for (var i = 0; i < list.length; i++) {\n var item = list[i];\n var id = options.base ? item[0] + options.base : item[0];\n var count = idCountMap[id] || 0;\n var identifier = \"\".concat(id, \" \").concat(count);\n idCountMap[id] = count + 1;\n var indexByIdentifier = getIndexByIdentifier(identifier);\n var obj = {\n css: item[1],\n media: item[2],\n sourceMap: item[3],\n supports: item[4],\n layer: item[5]\n };\n\n if (indexByIdentifier !== -1) {\n stylesInDOM[indexByIdentifier].references++;\n stylesInDOM[indexByIdentifier].updater(obj);\n } else {\n var updater = addElementStyle(obj, options);\n options.byIndex = i;\n stylesInDOM.splice(i, 0, {\n identifier: identifier,\n updater: updater,\n references: 1\n });\n }\n\n identifiers.push(identifier);\n }\n\n return identifiers;\n}\n\nfunction addElementStyle(obj, options) {\n var api = options.domAPI(options);\n api.update(obj);\n\n var updater = function updater(newObj) {\n if (newObj) {\n if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {\n return;\n }\n\n api.update(obj = newObj);\n } else {\n api.remove();\n }\n };\n\n return updater;\n}\n\nmodule.exports = function (list, options) {\n options = options || {};\n list = list || [];\n var lastIdentifiers = modulesToDom(list, options);\n return function update(newList) {\n newList = newList || [];\n\n for (var i = 0; i < lastIdentifiers.length; i++) {\n var identifier = lastIdentifiers[i];\n var index = getIndexByIdentifier(identifier);\n stylesInDOM[index].references--;\n }\n\n var newLastIdentifiers = modulesToDom(newList, options);\n\n for (var _i = 0; _i < lastIdentifiers.length; _i++) {\n var _identifier = lastIdentifiers[_i];\n\n var _index = getIndexByIdentifier(_identifier);\n\n if (stylesInDOM[_index].references === 0) {\n stylesInDOM[_index].updater();\n\n stylesInDOM.splice(_index, 1);\n }\n }\n\n lastIdentifiers = newLastIdentifiers;\n };\n};","\"use strict\";\n\nvar memo = {};\n/* istanbul ignore next */\n\nfunction getTarget(target) {\n if (typeof memo[target] === \"undefined\") {\n var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself\n\n if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {\n try {\n // This will throw an exception if access to iframe is blocked\n // due to cross-origin restrictions\n styleTarget = styleTarget.contentDocument.head;\n } catch (e) {\n // istanbul ignore next\n styleTarget = null;\n }\n }\n\n memo[target] = styleTarget;\n }\n\n return memo[target];\n}\n/* istanbul ignore next */\n\n\nfunction insertBySelector(insert, style) {\n var target = getTarget(insert);\n\n if (!target) {\n throw new Error(\"Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.\");\n }\n\n target.appendChild(style);\n}\n\nmodule.exports = insertBySelector;","\"use strict\";\n\n/* istanbul ignore next */\nfunction insertStyleElement(options) {\n var element = document.createElement(\"style\");\n options.setAttributes(element, options.attributes);\n options.insert(element, options.options);\n return element;\n}\n\nmodule.exports = insertStyleElement;","\"use strict\";\n\n/* istanbul ignore next */\nfunction setAttributesWithoutAttributes(styleElement) {\n var nonce = typeof __webpack_nonce__ !== \"undefined\" ? __webpack_nonce__ : null;\n\n if (nonce) {\n styleElement.setAttribute(\"nonce\", nonce);\n }\n}\n\nmodule.exports = setAttributesWithoutAttributes;","\"use strict\";\n\n/* istanbul ignore next */\nfunction apply(styleElement, options, obj) {\n var css = \"\";\n\n if (obj.supports) {\n css += \"@supports (\".concat(obj.supports, \") {\");\n }\n\n if (obj.media) {\n css += \"@media \".concat(obj.media, \" {\");\n }\n\n var needLayer = typeof obj.layer !== \"undefined\";\n\n if (needLayer) {\n css += \"@layer\".concat(obj.layer.length > 0 ? \" \".concat(obj.layer) : \"\", \" {\");\n }\n\n css += obj.css;\n\n if (needLayer) {\n css += \"}\";\n }\n\n if (obj.media) {\n css += \"}\";\n }\n\n if (obj.supports) {\n css += \"}\";\n }\n\n var sourceMap = obj.sourceMap;\n\n if (sourceMap && typeof btoa !== \"undefined\") {\n css += \"\\n/*# sourceMappingURL=data:application/json;base64,\".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), \" */\");\n } // For old IE\n\n /* istanbul ignore if */\n\n\n options.styleTagTransform(css, styleElement, options.options);\n}\n\nfunction removeStyleElement(styleElement) {\n // istanbul ignore if\n if (styleElement.parentNode === null) {\n return false;\n }\n\n styleElement.parentNode.removeChild(styleElement);\n}\n/* istanbul ignore next */\n\n\nfunction domAPI(options) {\n var styleElement = options.insertStyleElement(options);\n return {\n update: function update(obj) {\n apply(styleElement, options, obj);\n },\n remove: function remove() {\n removeStyleElement(styleElement);\n }\n };\n}\n\nmodule.exports = domAPI;","\"use strict\";\n\n/* istanbul ignore next */\nfunction styleTagTransform(css, styleElement) {\n if (styleElement.styleSheet) {\n styleElement.styleSheet.cssText = css;\n } else {\n while (styleElement.firstChild) {\n styleElement.removeChild(styleElement.firstChild);\n }\n\n styleElement.appendChild(document.createTextNode(css));\n }\n}\n\nmodule.exports = styleTagTransform;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","export default function _classExtractFieldDescriptor(receiver, privateMap, action) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n }\n return privateMap.get(receiver);\n}","import classApplyDescriptorGet from \"./classApplyDescriptorGet.js\";\nimport classExtractFieldDescriptor from \"./classExtractFieldDescriptor.js\";\nexport default function _classPrivateFieldGet(receiver, privateMap) {\n var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"get\");\n return classApplyDescriptorGet(receiver, descriptor);\n}","export default function _classApplyDescriptorGet(receiver, descriptor) {\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n return descriptor.value;\n}","import classApplyDescriptorSet from \"./classApplyDescriptorSet.js\";\nimport classExtractFieldDescriptor from \"./classExtractFieldDescriptor.js\";\nexport default function _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"set\");\n classApplyDescriptorSet(receiver, descriptor, value);\n return value;\n}","export default function _classApplyDescriptorSet(receiver, descriptor, value) {\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n descriptor.value = value;\n }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nc = undefined;","export default class Helpers {\n\n /**\n * Filter support function for returning unique properties\n *\n * @param value - filter value\n * @param index - filter index\n * @param self - callback\n * @returns {boolean} - unique value\n */\n static onlyUnique( value, index, self ) {\n return self.indexOf( value ) === index;\n }\n\n /**\n * Tests if all purposes in the consent object are true\n *\n * @param obj - consent object\n * @returns {boolean} - true/false\n */\n static consentPurposesAllTrue( obj ) {\n for ( const o in obj ) {\n if ( ! obj[o] ) return false;\n }\n return true;\n }\n\n /**\n * Calculates if personalised advertising is allowed\n *\n * @param tcData - user consent data object\n * @returns {Promise} - true/false\n */\n static async isPersonalisedAllowed( tcData ) {\n if ( tcData && tcData.hasOwnProperty( 'purpose' ) &&\n tcData.purpose.hasOwnProperty( 'consents' ) &&\n this.consentPurposesAllTrue( tcData.purpose.consents )\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Calculates the current viewport width and height\n *\n * @returns {{width: number, height: number}}\n */\n static getViewportDimentions() {\n return {\n height: Math.max( document.documentElement.clientHeight || 0, window.innerHeight || 0 ),\n width: Math.max( document.documentElement.clientWidth || 0, window.innerWidth || 0 )\n };\n }\n\n /**\n * Tests if 2 javascript objects are equal\n *\n * @param x - object 1\n * @param y - object 2\n * @returns {Promise} - true/false\n */\n static async objectsEqual( x, y ) {\n // If both x and y are null or undefined and exactly the same\n if ( x === y ) return true;\n\n // If they are not strictly equal, they both need to be Objects\n if ( ! (x instanceof Object) || ! (y instanceof Object) ) return false;\n\n // They must have the exact same prototype chain, the closest we can do is test there constructor.\n if ( x.constructor !== y.constructor ) return false;\n\n for ( const p in x ) {\n // Other properties were tested using x.constructor === y.constructor\n if ( ! x.hasOwnProperty( p ) ) continue;\n\n // Allows to compare x[ p ] and y[ p ] when set to undefined\n if ( ! y.hasOwnProperty( p ) ) return false;\n\n // If they have the same strict value or identity then they are equal\n if ( x[p] === y[p] ) continue;\n\n // Numbers, Strings, Functions, Booleans must be strictly equal\n if ( typeof (x[p]) !== 'object' ) return false;\n\n // Objects and Arrays must be tested recursively\n if ( ! await this.objectsEqual( x[p], y[p] ) ) return false;\n }\n\n // Allows x[ p ] to be set to undefined\n for ( const p in y ) {\n if ( y.hasOwnProperty( p ) && ! x.hasOwnProperty( p ) ) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Tests whether the TCF (Transparency and Consent Framework) API is ready\n *\n * @param timeout - the amount of time to wait for the API before rejecting\n * @returns {Promise} - resolves the promise when loaded or when the timeout is reached\n */\n static tcfLoaded( timeout ) {\n return new Promise( ( resolve, reject ) => {\n let check = () => {\n if ( typeof window.__tcfapi !== 'undefined' ) {\n resolve( true );\n } else if ( (timeout -= 100) < 0 ) {\n resolve( false );\n } else {\n setTimeout( check, 100 );\n }\n };\n setTimeout( check, 100 );\n } );\n };\n\n /**\n * Tests whether the GPT (Google Publisher Tag) API is ready\n *\n * @param timeout - the amount of time to wait for the API before rejecting\n * @returns {Promise} - resolves the promise when loaded or when the timeout is reached\n */\n static googletagLoaded( timeout ) {\n return new Promise( ( resolve, reject ) => {\n let check = () => {\n if ( typeof googletag !== 'undefined' && typeof googletag.pubads === 'function' ) {\n resolve( true );\n } else if ( (timeout -= 100) < 0 ) {\n resolve( false );\n } else {\n setTimeout( check, 100 );\n }\n };\n setTimeout( check, 100 );\n } );\n };\n\n /**\n * Listens for the TCF API event status and resolves when loaded or when the user accepts the consent popup\n *\n * @returns {Promise} - resolves when the expected event status is detected\n */\n static tcfDataReady() {\n return new Promise( ( resolve ) => {\n\t if ( typeof window.__tcfapi !== 'undefined' ) {\n\t\t window.__tcfapi( 'addEventListener', 2, function ( tcData, listenerSuccess ) {\n\t\t\t // If the lister is successful and either the event \"tcLoaded\" or \"useractioncomplete\" has fired proceed\n\t\t\t if ( listenerSuccess && (tcData.eventStatus === 'tcloaded' || tcData.eventStatus === 'useractioncomplete') ) {\n\t\t\t\t resolve( tcData );\n\t\t\t }\n\t\t } );\n\t }\n } );\n };\n\n /**\n * Resets the last user activity tracking on user activity\n */\n static userActivity() {\n window.userLastActivity = Math.floor( Date.now() / 1000 );\n }\n\n /**\n * Tests if the user is active\n *\n * @returns {boolean}\n */\n static userIsActive() {\n if ( document.visibilityState === 'visible' && ((Math.floor( Date.now() / 1000 ) - window.userLastActivity) < window.userActivityTimeout) ) {\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Tests if an element is entering the viewport\n *\n * @param elementSelector - the element selector\n * @param callback - the callback function to fire when the element is entering\n * @param offSet - the amount of leading space before in view detection\n */\n static observedElementInView( elementSelector, callback, offSet ) {\n let wHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\n let viewLazyLoadOffset = Math.round( wHeight * 0.75 ) || 1000;\n if ( offSet > 1 ) {\n // Amount in pixels\n viewLazyLoadOffset = offSet;\n } else if ( offSet > 0 ) {\n // Percentage of view heights\n viewLazyLoadOffset = Math.round( wHeight * offSet ) || 1000;\n }\n const ioConfig = {rootMargin: viewLazyLoadOffset + 'px'};\n let observer = new IntersectionObserver( function ( entries, self ) {\n entries.forEach( entry => {\n if ( entry.isIntersecting ) {\n callback( entry.target );\n self.unobserve( entry.target );\n }\n } );\n }, ioConfig );\n const elems = document.querySelectorAll( elementSelector );\n elems.forEach( elem => {\n observer.observe( elem );\n } );\n }\n\n /**\n * Defers running a particular piece of code until jQuery is loaded\n *\n * @param method - the function to defer\n */\n static defer( method ) {\n if ( window.jQuery ) {\n method();\n } else {\n setTimeout( function () {\n defer( method );\n }, 50 );\n }\n }\n\n /**\n * Initiates the legacy takeover logic, this function is called from within\n * the home page takeover creative template in DFP.\n *\n * When called it first collapses any slots marked with the \"takeover-collapse\"\n * css class right away and then builds the takeover and tracking pixel based on\n * the data passed in from the creative.\n *\n * Finally it triggers the legacy jQuery \"takeover_rendered\" event which the themes\n * listen for and when detected proceed with the required dom manipulations to support the takeover.\n * The function is deferred until jQuery is loaded in order to support this.\n *\n * @param data - the home page takeover creative data object\n */\n static legacyTakeover( data ) {\n\n // Collapse any slots with the \"takeover-collapse\" css class right away (prevents visible layout shifting when the takeover is rendered)\n let collapseEarly = document.getElementsByClassName( 'takeover-collapse' );\n for ( let i = 0; i < collapseEarly.length; i++ ) {\n collapseEarly[i].style.display = 'none';\n }\n\n // defer the takeover logic until jquery is ready in order to support the existing integration with the themes\n this.defer( function () {\n (function ( $ ) {\n $( document ).ready( function () {\n let $body = $( 'body' );\n let $link = $( '' );\n $link.css( 'background-image', 'url(' + data.image + ')' );\n if ( data.impressiontracker && '' !== $.trim( data.impressiontracker ) ) {\n $body.prepend( '' );\n }\n\n $body.prepend( $link )\n\t .ready(() => {\n\t\t // takeover rendered jquery event is then used by themes to do further layout work\n\t\t $( window.dfp ).trigger( 'takeover_rendered' );\n\t\t });\n\t\t} );\n\n })( jQuery );\n } );\n }\n\n /**\n * Checks if a particular container has children\n *\n * @param selector - Container CSS Selector\n * @returns {Promise}\n */\n static async hasChildren( container ) {\n return container.hasChildNodes() ? true : false;\n }\n\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","import Helpers from '../helpers';\n\nexport default class Native {\n\n /**\n * Gets the fluid native slot definition for a particular slot ID\n *\n * @param id - Native Ad Slot ID\n * @param definitions - Prebid responsive slot definitions config\n * @returns {Promise<{}>} - Slot Data\n */\n static async getSlotData( id, definitions ) {\n\n let slotData = {};\n\n // find the requested slot data\n for ( let i = 0; i < definitions.length; i++ ) {\n\n if ( id === definitions[i].id ) {\n slotData = definitions[i];\n }\n\n }\n\n return slotData;\n\n }\n\n /**\n * Gets a fluid slot definition for a particular slot and if not found looks for a more generic definition and returns one if found\n *\n * @param id - Native Ad Slot ID\n * @param definitions - Prebid responsive slot definitions config\n * @returns {Promise<{}>} - Slot Data\n */\n static async getSlot( id, definitions ) {\n\n let slot = await this.getSlotData( id, definitions );\n let id_parts = id.split( '-' );\n\n // if a slot definition matching the id is not found try a less specific one\n if ( ! slot.id ) {\n\n id_parts.shift();\n id = id_parts.join( '-' );\n\n slot = await this.getSlotData( id, definitions );\n\n }\n\n // if a slot definition is still not found try an even less specific one\n if ( ! slot.id ) {\n\n id_parts = id.split( '-' );\n id_parts.shift();\n\n id = id_parts.join( '-' );\n slot = await this.getSlotData( id, definitions );\n }\n\n return slot;\n\n }\n\n /**\n * Places a native ad slot on page, optionally hiding the target anchor element\n *\n * @param id - Ad Slot ID\n * @param anchorElement - Target anchor element\n * @param adSlotContainerClass - Desired container class for the ad slot\n * @param adSlotContainerElement - Desired container element for the ad slot\n * @param hidePreceding - Whether or not to hide the anchor element\n * @returns {Promise}\n */\n static async placeSlot( id, anchorElement, adSlotContainerClass, adSlotContainerElement, hidePreceding = true ) {\n\n // Select the desired placement anchor element\n anchorElement = document.querySelector( anchorElement );\n\n // If we can't find it don't proceed with placement\n if ( ! anchorElement ) {\n return false;\n }\n\n // Hide the anchor element if desired\n if ( hidePreceding ) {\n anchorElement.style.display = 'none';\n }\n\n // Create a new container with the appropriate class\n let newContainer = document.createElement( adSlotContainerElement );\n\n // Assign a class to the container if supplied\n if ( adSlotContainerClass ) {\n newContainer.className = adSlotContainerClass;\n }\n\n // Insert the new fluid ad container after the selected article block\n let container = anchorElement.parentNode.insertBefore( newContainer, anchorElement.nextSibling );\n\n // Insert the fluid ad slot into the new container\n let fluidSlot = '';\n container.innerHTML = fluidSlot;\n\n return true;\n\n }\n\n /**\n * Places a native ad slot into a specific container - Intended for cases \n * where there is not a targetable anchor element within the container\n *\n * @param id - Ad Slot ID\n * @param container - Target container\n * @param adSlotContainerClass - Desired container class for the ad slot\n * @param adSlotContainerElement - Desired container element for the ad slot\n * @returns {Promise}\n */\n static async placeSlotInContainer( id, container, adSlotContainerClass, adSlotContainerElement ) {\n\n container = document.querySelector( container );\n\n // If we can't find the container or it's not empty don't proceed with placement\n if ( ! container || ! Helpers.hasChildren( container ) ) {\n return false;\n }\n\n // Create a new container with the appropriate class\n let newContainer = document.createElement( adSlotContainerElement );\n\n // Assign a class to the container if supplied\n if ( adSlotContainerClass ) {\n newContainer.className = adSlotContainerClass;\n }\n\n container = container.appendChild( newContainer );\n\n // Insert the fluid ad slot into the new container\n let fluidSlot = '';\n container.innerHTML = fluidSlot;\n\n return true;\n\n }\n\n}","import Helpers from './../helpers';\nimport Native from './native';\n\nexport default class Prebid {\n\n /**\n * Prepares the slots for submission to prebid\n *\n * @param adSlots - array of ad slot objects defined earlier\n * @param fluidSlotDefinitions - Prebid responsive slot definitions config\n * @returns {Promise<[]>} - array of ad slots in format expected by prebid excluding the legacy off page slots\n */\n static async prepSlotsForAuction( adSlots, fluidSlotDefinitions ) {\n\n let formattedAdSlots = [];\n\n for ( let i = 0; i < adSlots.length; i++ ) {\n\n // Process legacy & responsive slots, Ignoring off page & fluid slots\n if ( ! adSlots[i].offPage && adSlots[i].type !== 'fluid-native' ) {\n\n formattedAdSlots.push( {\n code: adSlots[i].id,\n mediaTypes: {\n banner: {\n sizes: adSlots[i].bidSizes.arrays\n }\n },\n bids: await this.setCustomBidderTargeting( adSlots[i] )\n } );\n\n }\n\n // Process fluid slots https://docs.prebid.org/prebid/native-implementation.html\n if ( adSlots[i].type === 'fluid-native' ) {\n\n let mediaTypes = ( await Native.getSlot( adSlots[i].id, fluidSlotDefinitions ) ).mediaTypes;\n\n let viewport = Helpers.getViewportDimentions();\n let hostname = ADVERTISING_PAGE_DATA.hostname || document.location.origin;\n\n // Set render url dynamically https://docs.prebid.org/prebid/native-implementation.html#43-implementing-the-custom-renderer-scenario\n mediaTypes.native.rendererUrl = hostname + '/advertising/render?slot_id=' + adSlots[i].id + '&viewport_height=' + viewport.height + '&viewport_width=' + viewport.width;\n\n formattedAdSlots.push( {\n code: adSlots[i].id,\n mediaTypes: mediaTypes,\n bids: await this.setCustomBidderTargeting( adSlots[i] )\n } );\n }\n\n }\n\n return formattedAdSlots;\n }\n\n /**\n * Sets custom targeting values on the bidder object to be passed to prebid\n *\n * @param adSlot - the ad slot object\n * @returns {Promise<[]>} - the bidders array augmented with custom targeting data\n */\n static async setCustomBidderTargeting( adSlot ) {\n\n let bidders = adSlot.bidders;\n\n for ( let i = 0; i < bidders.length; i++ ) {\n\n if ( bidders[i].bidder === 'ozone' ) {\n\n let placementId = bidders[i].params.placementId;\n let publisherId = bidders[i].params.publisherId;\n let siteId = bidders[i].params.siteId;\n\n // Define customData object\n let customData = [ {\n 'settings': {},\n 'targeting': {\n type: adSlot.type,\n position: adSlot.position\n }\n } ];\n\n if ( adSlot.legacyTargeting ) {\n\n // Set legacy targeting values\n for ( let ii = 0; ii < adSlot.legacyTargeting.length; ii++ ) {\n customData[0].targeting[adSlot.legacyTargeting[ii].key] = adSlot.legacyTargeting[ii].value;\n }\n\n }\n\n // Set page targeting values\n for ( const [ key, value ] of Object.entries( ADVERTISING_PAGE_DATA ) ) {\n customData[0].targeting[key] = value;\n }\n\n // Define augmented ozone bidder params object\n bidders[i].params = {\n placementId: placementId,\n publisherId: publisherId,\n siteId: siteId,\n customData: customData\n };\n\n }\n\n if ( bidders[i].bidder === 'improvedigital' ) {\n\n let placementId = bidders[i].params.placementId;\n\n // Define customData object\n // Improve digital have advised they expect all values in key value pairs to be arrays here.\n let keyValues = {\n type: [ adSlot.type ],\n position: [ adSlot.position ]\n };\n\n if ( adSlot.legacyTargeting ) {\n\n // Set legacy targeting values\n for ( let ii = 0; ii < adSlot.legacyTargeting.length; ii++ ) {\n keyValues[adSlot.legacyTargeting[ii].key] = adSlot.legacyTargeting[ii].value;\n }\n\n }\n\n // Set page targeting values\n for ( let [ key, value ] of Object.entries( ADVERTISING_PAGE_DATA ) ) {\n\n // Improve digital have advised they expect all values in key value pairs to be arrays here.\n if ( typeof value === 'string' || value instanceof String ) {\n value = [ value ];\n }\n\n keyValues[key] = value;\n }\n\n // Define augmented improve digital bidder params object\n bidders[i].params = {\n placementId: placementId,\n keyValues: keyValues\n };\n\n }\n\n }\n\n return bidders;\n }\n\n /**\n * Gets the bidder data for a particular set of ad sizes\n *\n * @param sizes - the ad sizes\n * @param placements - Responsive Prebid placement config\n * @returns {Promise<[]|*[]>} - the matched bidders\n */\n static async getAllBidders( sizes, placements ) {\n\n // Get the bidder data for the relevant zone\n const bidders = await this.getAvailableBidders( ADVERTISING_PAGE_DATA.zone, placements );\n\n // Return empty if there are no available bidders defined\n if ( ! bidders ) {\n return [];\n }\n\n const matchedBidders = [];\n\n for ( let i = 0; i < sizes.length; i++ ) {\n\n // Identify the relevant bidders for each ad size\n const matched = await this.getBidders( sizes[i], bidders );\n\n /**\n * Push each matched bidder to the bidders array if unique and\n * add any custom targeting data to the bid if required\n */\n for ( let ii = 0; ii < matched.length; ii++ ) {\n if ( matchedBidders.length ) {\n let exists = false;\n\n for ( let iii = 0; iii < matchedBidders.length; iii++ ) {\n if ( await Helpers.objectsEqual( matched[ii], matchedBidders[iii] ) ) {\n exists = true;\n break;\n }\n }\n\n if ( ! exists ) {\n matchedBidders.push( matched[ii] );\n }\n } else {\n matchedBidders.push( matched[ii] );\n }\n }\n }\n\n return matchedBidders;\n }\n\n /**\n * Gets the bidder data for a particular ad size\n *\n * @param size - the ad size we want bidder data for\n * @param bidders - the available bidders for the zone\n * @returns {Promise<[]>} - the matched bidders\n */\n static async getBidders( size, bidders ) {\n const matchedBidders = [];\n\n for ( let i = 0; i < bidders.length; i++ ) {\n const adSizes = bidders[i].adSizes;\n\n for ( let ii = 0; ii < adSizes.length; ii++ ) {\n if ( adSizes[ii][0] === size ) {\n matchedBidders.push( {\n bidder: bidders[i].name,\n params: adSizes[ii][1]\n }\n );\n }\n }\n }\n\n return matchedBidders;\n }\n\n /**\n * Gets the available bidders for a particular zone\n *\n * @param zone - DFP Zone\n * @param placements - Responsive Prebid placement config\n * @returns {Promise<[]>} - available bidders\n */\n static async getAvailableBidders( zone, placements ) {\n for ( let i = 0; i < placements.length; i++ ) {\n if ( placements[i].id === zone ) {\n return placements[i].bidders;\n }\n }\n }\n\n}","import Helpers from './../helpers';\nimport Prebid from './prebid';\n\nexport default class Targeting {\n\n /**\n * Processes the ad slot divs on page and for each one sets up the targeting data\n *\n * @param adSlotDivs - the on page ad slot divs\n * @param responsiveSlotPlacements - Prebid responsive slots placement config\n * @param responsiveSlotDefinitions - Prebid responsive slot definitions config\n * @returns {Promise<[]>} - an array of ad slot objects\n */\n static async setDefaults( adSlotDivs, responsiveSlotPlacements, responsiveSlotDefinitions ) {\n let position = 1;\n const slots = [];\n\n for ( let i = 0; i < adSlotDivs.length; i++ ) {\n // Define adSlot Data object\n let adSlot = {\n id: adSlotDivs[i].getAttribute( 'id' ),\n zone: ADVERTISING_PAGE_DATA.zone,\n type: this.getSlotType( adSlotDivs[i] ),\n offPage: this.isOffPageSlot( adSlotDivs[i] )\n };\n\n // Set a random id if one hasn't already been set on the element\n adSlot = await this.setAdSlotID( adSlot, adSlotDivs[i] );\n\n // Set the ad sizes for legacy slots\n adSlot = await this.setLegacyAdSlotSizes( adSlot, adSlotDivs[i] );\n\n // Assign the responsive mapping rules to non legacy slots\n adSlot = await this.setResponsiveMappings( adSlot, responsiveSlotDefinitions );\n\n // Calculate Allowed ad sizes based on current viewport (these are the sizes of ads we will bid for)\n adSlot = await this.setAdSlotBidSizes( adSlot );\n\n // Set relevant bidder data\n if ( adSlot.offPage === false ) {\n adSlot.bidders = await Prebid.getAllBidders( adSlot.bidSizes.strings, responsiveSlotPlacements );\n }\n\n adSlot.noMobile = this.isNoMobileSlot( adSlot.type );\n\n // For each visible advert assign a position number for targeting, Ignoring legacy 1x1, 2x1 and 2x2 slots\n if ( adSlot.offPage === false ) {\n // Additionally, Ignore slots marked no-mobile if on mobile\n if ( adSlot.noMobile === false ) {\n adSlot.position = position;\n adSlotDivs[i].setAttribute( 'data-ad-pos', position );\n position++;\n }\n }\n\n // Process legacy targeting values (these are defined on the slot div itself)\n let values = adSlotDivs[i].getAttribute( 'data-ad-targeting' );\n\n if ( values ) {\n\n adSlot.legacyTargeting = [];\n values = values.split( '|' );\n\n for ( let ii = 0; ii < values.length; ++ii ) {\n let keyValueArray = values[ii].split( '=' );\n adSlot.legacyTargeting.push( {\n key: keyValueArray[0],\n value: (keyValueArray[1].indexOf( ',' ) === -1 ? keyValueArray[1] : keyValueArray[1].split( ',' ))\n } );\n }\n }\n\n slots.push( adSlot );\n }\n\n return slots;\n }\n\n /**\n * Sets a random ID to the ad slot if one hasn't already been defined\n *\n * @param adSlot - the ad slot object\n * @param adSlotDiv - the ad slot element\n * @returns {Promise<{id}|*>} - the augmented ad slot object\n */\n static async setAdSlotID( adSlot, adSlotDiv ) {\n if ( ! adSlot.id ) {\n adSlot.id = 'dfp-js-' + Math.random().toString( 36 ).substr( 2, 9 );\n // Set the id on the element so gtm knows which element to populate with an ad\n adSlotDiv.setAttribute( 'id', adSlot.id );\n }\n return adSlot;\n }\n\n /**\n * Reads the legacy slot size definitions from the element and assigns them to the ad slot object definition\n *\n * @param adSlot - the ad slot object\n * @param adSlotDiv - the ad slot element\n * @returns {Promise<*>} - the augmented ad slot object\n */\n static async setLegacyAdSlotSizes( adSlot, adSlotDiv ) {\n if ( adSlot.type === 'legacy' ) {\n adSlot.sizes = [];\n\n let sizes = adSlotDiv.getAttribute( 'data-ad-sizes' );\n\n // set a default if element has none defined\n if ( ! sizes ) {\n sizes = [ [ 250, 300 ] ];\n }\n\n // push sizes to adSlot object in expected array format\n sizes = sizes.split( ',' );\n\n for ( let i = 0; i < sizes.length; i++ ) {\n const wh = sizes[i].split( 'x' );\n adSlot.sizes.push( [ parseInt( wh[0] ), parseInt( wh[1] ) ] );\n }\n }\n\n return adSlot;\n }\n\n /**\n * Assigns the relevant responsive mapping definition to the slot object\n *\n * @param adSlot - the ad slot object\n * @param definitions - Prebid responsive slot definitions config\n * @returns {Promise<*>} - the augmented ad slot object\n */\n static async setResponsiveMappings( adSlot, definitions ) {\n // get the responsive mappings\n const mappings = await this.getResponsiveMappings( definitions );\n const keys = Object.keys( mappings );\n\n if ( adSlot.type !== 'legacy' && adSlot.type !== 'fluid-native' ) {\n for ( let i = 0; i < keys.length; i++ ) {\n if ( keys[i] === adSlot.type ) {\n adSlot.mappings = mappings[keys[i]];\n }\n }\n }\n\n return adSlot;\n }\n\n /**\n * Sets the relevant bid sizes on the ad slot object in both string and array format to simplify processing\n *\n * @param adSlot - the ad slot object\n * @returns {Promise<{}|*>} - the augmented ad slot object\n */\n static async setAdSlotBidSizes( adSlot ) {\n\n // don't process off page slots\n if ( adSlot.offPage ) {\n return adSlot;\n }\n\n // define fluid native sizes (1x1 indicates fluid)\n if ( adSlot.type === 'fluid-native' ) {\n adSlot.bidSizes = {\n strings: [ '1x1' ],\n arrays: [ [ 1, 1 ] ]\n };\n return adSlot;\n }\n\n adSlot.bidSizes = {strings: [], arrays: []};\n\n if ( adSlot.type === 'legacy' ) {\n for ( let ii = 0; ii < adSlot.sizes.length; ++ii ) {\n adSlot.bidSizes.strings.push( adSlot.sizes[ii].join( 'x' ) );\n adSlot.bidSizes.arrays.push( adSlot.sizes[ii] );\n }\n }\n\n if ( adSlot.type !== 'legacy' ) {\n const viewport = Helpers.getViewportDimentions();\n\n const bidSizes = await this.getAdSlotBidSizes( viewport, adSlot.mappings );\n\n for ( let ii = 0; ii < bidSizes.length; ii++ ) {\n adSlot.bidSizes.strings.push( bidSizes[ii] );\n adSlot.bidSizes.arrays.push( bidSizes[ii].split( 'x' ).map( Number ) );\n }\n }\n\n return adSlot;\n }\n\n /**\n * Calculates the allowed bid sizes based on the current viewport height and width\n *\n * @param viewport - the current viewport size\n * @param adSizes - the allowed ad sizes based on the responsive mapping definitions\n * @returns {Promise<*[]>}\n */\n static async getAdSlotBidSizes( viewport, adSizes ) {\n const allowedSizes = [];\n\n for ( let i = 0; i < adSizes.length; i++ ) {\n if ( adSizes[i][0][0] < viewport.width && (adSizes[i][0][1] !== 0 || adSizes[i][0][1] < viewport.height) ) {\n const sizes = adSizes[i][1];\n\n if ( sizes.length ) {\n for ( let ii = 0; ii < sizes.length; ii++ ) {\n allowedSizes.push( sizes[ii].join( 'x' ) );\n }\n }\n\n break;\n }\n }\n\n return allowedSizes.filter( Helpers.onlyUnique );\n }\n\n /**\n * Processes the responsive size mapping into expected array format\n *\n * @param definitions - Prebid responsive slot definitions config\n * @returns {Promise<{}>} - the mappings\n */\n static async getResponsiveMappings( definitions ) {\n const mappings = {};\n\n for ( let i = 0; i < definitions.length; i++ ) {\n const sizes = definitions[i].sizeMappings;\n\n mappings[definitions[i].name] = [];\n\n for ( let ii = 0; ii < sizes.length; ii++ ) {\n let mapping = [];\n mapping = [ sizes[ii].viewport, sizes[ii].adSizes ];\n mappings[definitions[i].name].push( mapping );\n }\n }\n\n return mappings;\n }\n\n /**\n * Gets the slot type, defaulting to legacy if it's not defined\n *\n * @param slot - the ad slot element\n * @returns {string|*} - the ad slot type\n */\n static getSlotType( slot ) {\n const type = slot.getAttribute( 'data-slot-type' );\n\n if ( type ) {\n return type;\n } else {\n return 'legacy';\n }\n }\n\n /**\n * Checks whether a slot is considered to be off page or not\n *\n * @param slot - the ad slot element\n * @returns {boolean}\n */\n static isOffPageSlot( slot ) {\n const type = this.getSlotType( slot );\n const sizes = slot.getAttribute( 'data-ad-sizes' );\n const ignore = [ '1x1', '2x1', '2x2' ];\n\n if ( type === 'legacy' && ignore.indexOf( sizes ) > -1 ) {\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * Checks whether a slot is defined as \"no-mobile\" and if we are on mobile\n *\n * @param type - the slot type\n * @returns {boolean}\n */\n static isNoMobileSlot( type ) {\n if ( screen.width < 767 && type.includes( 'no-mobile' ) ) {\n return true;\n } else {\n return false;\n }\n }\n\n}","export function dset(obj, keys, val) {\n\tkeys.split && (keys=keys.split('.'));\n\tvar i=0, l=keys.length, t=obj, x, k;\n\twhile (i < l) {\n\t\tk = keys[i++];\n\t\tif (k === '__proto__' || k === 'constructor' || k === 'prototype') break;\n\t\tt = t[k] = (i === l) ? val : (typeof(x=t[k])===typeof(keys)) ? x : (keys[i]*0 !== 0 || !!~(''+keys[i]).indexOf('.')) ? {} : [];\n\t}\n}\n","import {logError} from './utils.js';\nimport * as events from './events.js';\nimport CONSTANTS from './constants.json';\n\nconst {AD_RENDER_FAILED, AD_RENDER_SUCCEEDED} = CONSTANTS.EVENTS;\n\n/**\n * Emit the AD_RENDER_FAILED event.\n *\n * @param reason one of the values in CONSTANTS.AD_RENDER_FAILED_REASON\n * @param message failure description\n * @param bid? bid response object that failed to render\n * @param id? adId that failed to render\n */\nexport function emitAdRenderFail({ reason, message, bid, id }) {\n const data = { reason, message };\n if (bid) data.bid = bid;\n if (id) data.adId = id;\n\n logError(message);\n events.emit(AD_RENDER_FAILED, data);\n}\n\n/**\n * Emit the AD_RENDER_SUCCEEDED event.\n * (Note: Invocation of this function indicates that the render function did not generate an error, it does not guarantee that tracking for this event has occurred yet.)\n * @param doc document object that was used to `.write` the ad. Should be `null` if unavailable (e.g. for documents in\n * a cross-origin frame).\n * @param bid bid response object for the ad that was rendered\n * @param id adId that was rendered.\n */\nexport function emitAdRenderSucceeded({ doc, bid, id }) {\n const data = { doc };\n if (bid) data.bid = bid;\n if (id) data.adId = id;\n\n events.emit(AD_RENDER_SUCCEEDED, data);\n}\n","/* Secure Creatives\n Provides support for rendering creatives into cross domain iframes such as SafeFrame to prevent\n access to a publisher page from creative payloads.\n */\n\nimport * as events from './events.js';\nimport {fireNativeTrackers, getAllAssetsMessage, getAssetMessage} from './native.js';\nimport constants from './constants.json';\nimport {deepAccess, isApnGetTagDefined, isGptPubadsDefined, logError, logWarn, replaceAuctionPrice} from './utils.js';\nimport {auctionManager} from './auctionManager.js';\nimport {find, includes} from './polyfill.js';\nimport {executeRenderer, isRendererRequired} from './Renderer.js';\nimport {config} from './config.js';\nimport {emitAdRenderFail, emitAdRenderSucceeded} from './adRendering.js';\n\nconst BID_WON = constants.EVENTS.BID_WON;\nconst STALE_RENDER = constants.EVENTS.STALE_RENDER;\nconst WON_AD_IDS = new WeakSet();\n\nconst HANDLER_MAP = {\n 'Prebid Request': handleRenderRequest,\n 'Prebid Event': handleEventRequest,\n}\n\nif (FEATURES.NATIVE) {\n Object.assign(HANDLER_MAP, {\n 'Prebid Native': handleNativeRequest,\n })\n}\n\nexport function listenMessagesFromCreative() {\n window.addEventListener('message', receiveMessage, false);\n}\n\nexport function getReplier(ev) {\n if (ev.origin == null && ev.ports.length === 0) {\n return function () {\n const msg = 'Cannot post message to a frame with null origin. Please update creatives to use MessageChannel, see https://github.com/prebid/Prebid.js/issues/7870'\n logError(msg)\n throw new Error(msg);\n }\n } else if (ev.ports.length > 0) {\n return function (message) {\n ev.ports[0].postMessage(JSON.stringify(message));\n }\n } else {\n return function (message) {\n ev.source.postMessage(JSON.stringify(message), ev.origin);\n }\n }\n}\n\nexport function receiveMessage(ev) {\n var key = ev.message ? 'message' : 'data';\n var data = {};\n try {\n data = JSON.parse(ev[key]);\n } catch (e) {\n return;\n }\n\n if (data && data.adId && data.message) {\n const adObject = find(auctionManager.getBidsReceived(), function (bid) {\n return bid.adId === data.adId;\n });\n if (HANDLER_MAP.hasOwnProperty(data.message)) {\n HANDLER_MAP[data.message](getReplier(ev), data, adObject);\n }\n }\n}\n\nfunction handleRenderRequest(reply, data, adObject) {\n if (adObject == null) {\n emitAdRenderFail({\n reason: constants.AD_RENDER_FAILED_REASON.CANNOT_FIND_AD,\n message: `Cannot find ad for cross-origin render request: '${data.adId}'`,\n id: data.adId\n });\n return;\n }\n if (adObject.status === constants.BID_STATUS.RENDERED) {\n logWarn(`Ad id ${adObject.adId} has been rendered before`);\n events.emit(STALE_RENDER, adObject);\n if (deepAccess(config.getConfig('auctionOptions'), 'suppressStaleRender')) {\n return;\n }\n }\n\n try {\n _sendAdToCreative(adObject, reply);\n } catch (e) {\n emitAdRenderFail({\n reason: constants.AD_RENDER_FAILED_REASON.EXCEPTION,\n message: e.message,\n id: data.adId,\n bid: adObject\n });\n return;\n }\n\n // save winning bids\n auctionManager.addWinningBid(adObject);\n\n events.emit(BID_WON, adObject);\n}\n\nfunction handleNativeRequest(reply, data, adObject) {\n // handle this script from native template in an ad server\n // window.parent.postMessage(JSON.stringify({\n // message: 'Prebid Native',\n // adId: '%%PATTERN:hb_adid%%'\n // }), '*');\n if (adObject == null) {\n logError(`Cannot find ad for x-origin event request: '${data.adId}'`);\n return;\n }\n\n if (!WON_AD_IDS.has(adObject)) {\n WON_AD_IDS.add(adObject);\n auctionManager.addWinningBid(adObject);\n events.emit(BID_WON, adObject);\n }\n\n switch (data.action) {\n case 'assetRequest':\n reply(getAssetMessage(data, adObject));\n break;\n case 'allAssetRequest':\n reply(getAllAssetsMessage(data, adObject));\n break;\n case 'resizeNativeHeight':\n adObject.height = data.height;\n adObject.width = data.width;\n resizeRemoteCreative(adObject);\n break;\n default:\n fireNativeTrackers(data, adObject);\n }\n}\n\nfunction handleEventRequest(reply, data, adObject) {\n if (adObject == null) {\n logError(`Cannot find ad '${data.adId}' for x-origin event request`);\n return;\n }\n if (adObject.status !== constants.BID_STATUS.RENDERED) {\n logWarn(`Received x-origin event request without corresponding render request for ad '${data.adId}'`);\n return;\n }\n switch (data.event) {\n case constants.EVENTS.AD_RENDER_FAILED:\n emitAdRenderFail({\n bid: adObject,\n id: data.adId,\n reason: data.info.reason,\n message: data.info.message\n });\n break;\n case constants.EVENTS.AD_RENDER_SUCCEEDED:\n emitAdRenderSucceeded({\n doc: null,\n bid: adObject,\n id: data.adId\n });\n break;\n default:\n logError(`Received x-origin event request for unsupported event: '${data.event}' (adId: '${data.adId}')`)\n }\n}\n\nexport function _sendAdToCreative(adObject, reply) {\n const { adId, ad, adUrl, width, height, renderer, cpm, originalCpm } = adObject;\n // rendering for outstream safeframe\n if (isRendererRequired(renderer)) {\n executeRenderer(renderer, adObject);\n } else if (adId) {\n resizeRemoteCreative(adObject);\n reply({\n message: 'Prebid Response',\n ad: replaceAuctionPrice(ad, originalCpm || cpm),\n adUrl: replaceAuctionPrice(adUrl, originalCpm || cpm),\n adId,\n width,\n height\n });\n }\n}\n\nfunction resizeRemoteCreative({ adId, adUnitCode, width, height }) {\n // resize both container div + iframe\n ['div', 'iframe'].forEach(elmType => {\n // not select element that gets removed after dfp render\n let element = getElementByAdUnit(elmType + ':not([style*=\"display: none\"])');\n if (element) {\n let elementStyle = element.style;\n elementStyle.width = width ? width + 'px' : '100%';\n elementStyle.height = height + 'px';\n } else {\n logWarn(`Unable to locate matching page element for adUnitCode ${adUnitCode}. Can't resize it to ad's dimensions. Please review setup.`);\n }\n });\n\n function getElementByAdUnit(elmType) {\n let id = getElementIdBasedOnAdServer(adId, adUnitCode);\n let parentDivEle = document.getElementById(id);\n return parentDivEle && parentDivEle.querySelector(elmType);\n }\n\n function getElementIdBasedOnAdServer(adId, adUnitCode) {\n if (isGptPubadsDefined()) {\n return getDfpElementId(adId)\n } else if (isApnGetTagDefined()) {\n return getAstElementId(adUnitCode)\n } else {\n return adUnitCode;\n }\n }\n\n function getDfpElementId(adId) {\n const slot = find(window.googletag.pubads().getSlots(), slot => {\n return find(slot.getTargetingKeys(), key => {\n return includes(slot.getTargeting(key), adId);\n });\n });\n return slot ? slot.getSlotElementId() : null;\n }\n\n function getAstElementId(adUnitCode) {\n let astTag = window.apntag.getTag(adUnitCode);\n return astTag && astTag.targetId;\n }\n}\n","import {\n deepAccess,\n deepClone,\n getHighestCpm,\n getOldestHighestCpmBid,\n groupBy,\n isAdUnitCodeMatchingSlot,\n isArray,\n isFn,\n isGptPubadsDefined,\n isStr,\n logError,\n logInfo,\n logMessage,\n logWarn,\n timestamp,\n uniques,\n} from './utils.js';\nimport {config} from './config.js';\nimport {NATIVE_TARGETING_KEYS} from './native.js';\nimport {auctionManager} from './auctionManager.js';\nimport {ADPOD} from './mediaTypes.js';\nimport {hook} from './hook.js';\nimport {bidderSettings} from './bidderSettings.js';\nimport {find, includes} from './polyfill.js';\nimport CONSTANTS from './constants.json';\n\nvar pbTargetingKeys = [];\n\nconst MAX_DFP_KEYLENGTH = 20;\nlet DEFAULT_TTL_BUFFER = 1;\n\nconfig.getConfig('ttlBuffer', (cfg) => {\n if (typeof cfg.ttlBuffer === 'number') {\n DEFAULT_TTL_BUFFER = cfg.ttlBuffer;\n } else {\n logError('Invalid value for ttlBuffer', cfg.ttlBuffer);\n }\n})\n\nconst CFG_ALLOW_TARGETING_KEYS = `targetingControls.allowTargetingKeys`;\nconst CFG_ADD_TARGETING_KEYS = `targetingControls.addTargetingKeys`;\nconst TARGETING_KEY_CONFIGURATION_ERROR_MSG = `Only one of \"${CFG_ALLOW_TARGETING_KEYS}\" or \"${CFG_ADD_TARGETING_KEYS}\" can be set`;\n\nexport const TARGETING_KEYS = Object.keys(CONSTANTS.TARGETING_KEYS).map(\n key => CONSTANTS.TARGETING_KEYS[key]\n);\n\n// return unexpired bids\nconst isBidNotExpired = (bid) => (bid.responseTimestamp + (bid.ttl - (bid.hasOwnProperty('ttlBuffer') ? bid.ttlBuffer : DEFAULT_TTL_BUFFER)) * 1000) > timestamp();\n\n// return bids whose status is not set. Winning bids can only have a status of `rendered`.\nconst isUnusedBid = (bid) => bid && ((bid.status && !includes([CONSTANTS.BID_STATUS.RENDERED], bid.status)) || !bid.status);\n\nexport let filters = {\n isActualBid(bid) {\n return bid.getStatusCode() === CONSTANTS.STATUS.GOOD\n },\n isBidNotExpired,\n isUnusedBid\n};\n\nexport function isBidUsable(bid) {\n return !Object.values(filters).some((predicate) => !predicate(bid));\n}\n\n// If two bids are found for same adUnitCode, we will use the highest one to take part in auction\n// This can happen in case of concurrent auctions\n// If adUnitBidLimit is set above 0 return top N number of bids\nexport const getHighestCpmBidsFromBidPool = hook('sync', function(bidsReceived, highestCpmCallback, adUnitBidLimit = 0, hasModified = false) {\n if (!hasModified) {\n const bids = [];\n const dealPrioritization = config.getConfig('sendBidsControl.dealPrioritization');\n // bucket by adUnitcode\n let buckets = groupBy(bidsReceived, 'adUnitCode');\n // filter top bid for each bucket by bidder\n Object.keys(buckets).forEach(bucketKey => {\n let bucketBids = [];\n let bidsByBidder = groupBy(buckets[bucketKey], 'bidderCode');\n Object.keys(bidsByBidder).forEach(key => bucketBids.push(bidsByBidder[key].reduce(highestCpmCallback)));\n // if adUnitBidLimit is set, pass top N number bids\n if (adUnitBidLimit > 0) {\n bucketBids = dealPrioritization ? bucketBids.sort(sortByDealAndPriceBucketOrCpm(true)) : bucketBids.sort((a, b) => b.cpm - a.cpm);\n bids.push(...bucketBids.slice(0, adUnitBidLimit));\n } else {\n bids.push(...bucketBids);\n }\n });\n\n return bids;\n }\n\n return bidsReceived;\n});\n\n/**\n* A descending sort function that will sort the list of objects based on the following two dimensions:\n* - bids with a deal are sorted before bids w/o a deal\n* - then sort bids in each grouping based on the hb_pb value\n* eg: the following list of bids would be sorted like:\n* [{\n* \"hb_adid\": \"vwx\",\n* \"hb_pb\": \"28\",\n* \"hb_deal\": \"7747\"\n* }, {\n* \"hb_adid\": \"jkl\",\n* \"hb_pb\": \"10\",\n* \"hb_deal\": \"9234\"\n* }, {\n* \"hb_adid\": \"stu\",\n* \"hb_pb\": \"50\"\n* }, {\n* \"hb_adid\": \"def\",\n* \"hb_pb\": \"2\"\n* }]\n*/\nexport function sortByDealAndPriceBucketOrCpm(useCpm = false) {\n return function(a, b) {\n if (a.adserverTargeting.hb_deal !== undefined && b.adserverTargeting.hb_deal === undefined) {\n return -1;\n }\n\n if ((a.adserverTargeting.hb_deal === undefined && b.adserverTargeting.hb_deal !== undefined)) {\n return 1;\n }\n\n // assuming both values either have a deal or don't have a deal - sort by the hb_pb param\n if (useCpm) {\n return b.cpm - a.cpm;\n }\n\n return b.adserverTargeting.hb_pb - a.adserverTargeting.hb_pb;\n }\n}\n\n/**\n * @typedef {Object.} targeting\n * @property {string} targeting_key\n */\n\n/**\n * @typedef {Object.[]>[]} targetingArray\n */\n\nexport function newTargeting(auctionManager) {\n let targeting = {};\n let latestAuctionForAdUnit = {};\n\n targeting.setLatestAuctionForAdUnit = function(adUnitCode, auctionId) {\n latestAuctionForAdUnit[adUnitCode] = auctionId;\n };\n\n targeting.resetPresetTargeting = function(adUnitCode, customSlotMatching) {\n if (isGptPubadsDefined()) {\n const adUnitCodes = getAdUnitCodes(adUnitCode);\n const adUnits = auctionManager.getAdUnits().filter(adUnit => includes(adUnitCodes, adUnit.code));\n let unsetKeys = pbTargetingKeys.reduce((reducer, key) => {\n reducer[key] = null;\n return reducer;\n }, {});\n window.googletag.pubads().getSlots().forEach(slot => {\n let customSlotMatchingFunc = isFn(customSlotMatching) && customSlotMatching(slot);\n // reset only registered adunits\n adUnits.forEach(unit => {\n if (unit.code === slot.getAdUnitPath() ||\n unit.code === slot.getSlotElementId() ||\n (isFn(customSlotMatchingFunc) && customSlotMatchingFunc(unit.code))) {\n slot.updateTargetingFromMap(unsetKeys);\n }\n });\n });\n }\n };\n\n targeting.resetPresetTargetingAST = function(adUnitCode) {\n const adUnitCodes = getAdUnitCodes(adUnitCode);\n adUnitCodes.forEach(function(unit) {\n const astTag = window.apntag.getTag(unit);\n if (astTag && astTag.keywords) {\n const currentKeywords = Object.keys(astTag.keywords);\n const newKeywords = {};\n currentKeywords.forEach((key) => {\n if (!includes(pbTargetingKeys, key.toLowerCase())) {\n newKeywords[key] = astTag.keywords[key];\n }\n })\n window.apntag.modifyTag(unit, { keywords: newKeywords })\n }\n });\n };\n\n /**\n * checks if bid has targeting set and belongs based on matching ad unit codes\n * @return {boolean} true or false\n */\n function bidShouldBeAddedToTargeting(bid, adUnitCodes) {\n return bid.adserverTargeting && adUnitCodes &&\n ((isArray(adUnitCodes) && includes(adUnitCodes, bid.adUnitCode)) ||\n (typeof adUnitCodes === 'string' && bid.adUnitCode === adUnitCodes));\n };\n\n /**\n * Returns targeting for any bids which have deals if alwaysIncludeDeals === true\n */\n function getDealBids(adUnitCodes, bidsReceived) {\n if (config.getConfig('targetingControls.alwaysIncludeDeals') === true) {\n const standardKeys = FEATURES.NATIVE ? TARGETING_KEYS.concat(NATIVE_TARGETING_KEYS) : TARGETING_KEYS.slice();\n\n // we only want the top bid from bidders who have multiple entries per ad unit code\n const bids = getHighestCpmBidsFromBidPool(bidsReceived, getHighestCpm);\n\n // populate targeting keys for the remaining bids if they have a dealId\n return bids.map(bid => {\n if (bid.dealId && bidShouldBeAddedToTargeting(bid, adUnitCodes)) {\n return {\n [bid.adUnitCode]: getTargetingMap(bid, standardKeys.filter(\n key => typeof bid.adserverTargeting[key] !== 'undefined')\n )\n };\n }\n }).filter(bid => bid); // removes empty elements in array\n }\n return [];\n };\n\n /**\n * Returns filtered ad server targeting for custom and allowed keys.\n * @param {targetingArray} targeting\n * @param {string[]} allowedKeys\n * @return {targetingArray} filtered targeting\n */\n function getAllowedTargetingKeyValues(targeting, allowedKeys) {\n const defaultKeyring = Object.assign({}, CONSTANTS.TARGETING_KEYS, CONSTANTS.NATIVE_KEYS);\n const defaultKeys = Object.keys(defaultKeyring);\n const keyDispositions = {};\n logInfo(`allowTargetingKeys - allowed keys [ ${allowedKeys.map(k => defaultKeyring[k]).join(', ')} ]`);\n targeting.map(adUnit => {\n const adUnitCode = Object.keys(adUnit)[0];\n const keyring = adUnit[adUnitCode];\n const keys = keyring.filter(kvPair => {\n const key = Object.keys(kvPair)[0];\n // check if key is in default keys, if not, it's custom, we won't remove it.\n const isCustom = defaultKeys.filter(defaultKey => key.indexOf(defaultKeyring[defaultKey]) === 0).length === 0;\n // check if key explicitly allowed, if not, we'll remove it.\n const found = isCustom || find(allowedKeys, allowedKey => {\n const allowedKeyName = defaultKeyring[allowedKey];\n // we're looking to see if the key exactly starts with one of our default keys.\n // (which hopefully means it's not custom)\n const found = key.indexOf(allowedKeyName) === 0;\n return found;\n });\n keyDispositions[key] = !found;\n return found;\n });\n adUnit[adUnitCode] = keys;\n });\n const removedKeys = Object.keys(keyDispositions).filter(d => keyDispositions[d]);\n logInfo(`allowTargetingKeys - removed keys [ ${removedKeys.join(', ')} ]`);\n // remove any empty targeting objects, as they're unnecessary.\n const filteredTargeting = targeting.filter(adUnit => {\n const adUnitCode = Object.keys(adUnit)[0];\n const keyring = adUnit[adUnitCode];\n return keyring.length > 0;\n });\n return filteredTargeting\n }\n\n /**\n * Returns all ad server targeting for all ad units.\n * @param {string=} adUnitCode\n * @return {Object.} targeting\n */\n targeting.getAllTargeting = function(adUnitCode, bidsReceived = getBidsReceived()) {\n const adUnitCodes = getAdUnitCodes(adUnitCode);\n\n // Get targeting for the winning bid. Add targeting for any bids that have\n // `alwaysUseBid=true`. If sending all bids is enabled, add targeting for losing bids.\n var targeting = getWinningBidTargeting(adUnitCodes, bidsReceived)\n .concat(getCustomBidTargeting(adUnitCodes, bidsReceived))\n .concat(config.getConfig('enableSendAllBids') ? getBidLandscapeTargeting(adUnitCodes, bidsReceived) : getDealBids(adUnitCodes, bidsReceived))\n .concat(getAdUnitTargeting(adUnitCodes));\n\n // store a reference of the targeting keys\n targeting.map(adUnitCode => {\n Object.keys(adUnitCode).map(key => {\n adUnitCode[key].map(targetKey => {\n if (pbTargetingKeys.indexOf(Object.keys(targetKey)[0]) === -1) {\n pbTargetingKeys = Object.keys(targetKey).concat(pbTargetingKeys);\n }\n });\n });\n });\n\n const defaultKeys = Object.keys(Object.assign({}, CONSTANTS.DEFAULT_TARGETING_KEYS, CONSTANTS.NATIVE_KEYS));\n let allowedKeys = config.getConfig(CFG_ALLOW_TARGETING_KEYS);\n const addedKeys = config.getConfig(CFG_ADD_TARGETING_KEYS);\n\n if (addedKeys != null && allowedKeys != null) {\n throw new Error(TARGETING_KEY_CONFIGURATION_ERROR_MSG);\n } else if (addedKeys != null) {\n allowedKeys = defaultKeys.concat(addedKeys);\n } else {\n allowedKeys = allowedKeys || defaultKeys;\n }\n\n if (Array.isArray(allowedKeys) && allowedKeys.length > 0) {\n targeting = getAllowedTargetingKeyValues(targeting, allowedKeys);\n }\n\n targeting = flattenTargeting(targeting);\n\n const auctionKeysThreshold = config.getConfig('targetingControls.auctionKeyMaxChars');\n if (auctionKeysThreshold) {\n logInfo(`Detected 'targetingControls.auctionKeyMaxChars' was active for this auction; set with a limit of ${auctionKeysThreshold} characters. Running checks on auction keys...`);\n targeting = filterTargetingKeys(targeting, auctionKeysThreshold);\n }\n\n // make sure at least there is a entry per adUnit code in the targetingSet so receivers of SET_TARGETING call's can know what ad units are being invoked\n adUnitCodes.forEach(code => {\n if (!targeting[code]) {\n targeting[code] = {};\n }\n });\n\n return targeting;\n };\n\n // warn about conflicting configuration\n config.getConfig('targetingControls', function (config) {\n if (deepAccess(config, CFG_ALLOW_TARGETING_KEYS) != null && deepAccess(config, CFG_ADD_TARGETING_KEYS) != null) {\n logError(TARGETING_KEY_CONFIGURATION_ERROR_MSG);\n }\n });\n\n // create an encoded string variant based on the keypairs of the provided object\n // - note this will encode the characters between the keys (ie = and &)\n function convertKeysToQueryForm(keyMap) {\n return Object.keys(keyMap).reduce(function (queryString, key) {\n let encodedKeyPair = `${key}%3d${encodeURIComponent(keyMap[key])}%26`;\n return queryString += encodedKeyPair;\n }, '');\n }\n\n function filterTargetingKeys(targeting, auctionKeysThreshold) {\n // read each targeting.adUnit object and sort the adUnits into a list of adUnitCodes based on priorization setting (eg CPM)\n let targetingCopy = deepClone(targeting);\n\n let targetingMap = Object.keys(targetingCopy).map(adUnitCode => {\n return {\n adUnitCode,\n adserverTargeting: targetingCopy[adUnitCode]\n };\n }).sort(sortByDealAndPriceBucketOrCpm());\n\n // iterate through the targeting based on above list and transform the keys into the query-equivalent and count characters\n return targetingMap.reduce(function (accMap, currMap, index, arr) {\n let adUnitQueryString = convertKeysToQueryForm(currMap.adserverTargeting);\n\n // for the last adUnit - trim last encoded ampersand from the converted query string\n if ((index + 1) === arr.length) {\n adUnitQueryString = adUnitQueryString.slice(0, -3);\n }\n\n // if under running threshold add to result\n let code = currMap.adUnitCode;\n let querySize = adUnitQueryString.length;\n if (querySize <= auctionKeysThreshold) {\n auctionKeysThreshold -= querySize;\n logInfo(`AdUnit '${code}' auction keys comprised of ${querySize} characters. Deducted from running threshold; new limit is ${auctionKeysThreshold}`, targetingCopy[code]);\n\n accMap[code] = targetingCopy[code];\n } else {\n logWarn(`The following keys for adUnitCode '${code}' exceeded the current limit of the 'auctionKeyMaxChars' setting.\\nThe key-set size was ${querySize}, the current allotted amount was ${auctionKeysThreshold}.\\n`, targetingCopy[code]);\n }\n\n if ((index + 1) === arr.length && Object.keys(accMap).length === 0) {\n logError('No auction targeting keys were permitted due to the setting in setConfig(targetingControls.auctionKeyMaxChars). Please review setup and consider adjusting.');\n }\n return accMap;\n }, {});\n }\n\n /**\n * Converts targeting array and flattens to make it easily iteratable\n * e.g: Sample input to this function\n * ```\n * [\n * {\n * \"div-gpt-ad-1460505748561-0\": [{\"hb_bidder\": [\"appnexusAst\"]}]\n * },\n * {\n * \"div-gpt-ad-1460505748561-0\": [{\"hb_bidder_appnexusAs\": [\"appnexusAst\", \"other\"]}]\n * }\n * ]\n * ```\n * Resulting array\n * ```\n * {\n * \"div-gpt-ad-1460505748561-0\": {\n * \"hb_bidder\": \"appnexusAst\",\n * \"hb_bidder_appnexusAs\": \"appnexusAst,other\"\n * }\n * }\n * ```\n *\n * @param {targetingArray} targeting\n * @return {Object.} targeting\n */\n function flattenTargeting(targeting) {\n let targetingObj = targeting.map(targeting => {\n return {\n [Object.keys(targeting)[0]]: targeting[Object.keys(targeting)[0]]\n .map(target => {\n return {\n [Object.keys(target)[0]]: target[Object.keys(target)[0]].join(',')\n };\n }).reduce((p, c) => Object.assign(c, p), {})\n };\n }).reduce(function (accumulator, targeting) {\n var key = Object.keys(targeting)[0];\n accumulator[key] = Object.assign({}, accumulator[key], targeting[key]);\n return accumulator;\n }, {});\n return targetingObj;\n }\n\n /**\n * Sets targeting for DFP\n * @param {Object.>} targetingConfig\n */\n targeting.setTargetingForGPT = function(targetingConfig, customSlotMatching) {\n window.googletag.pubads().getSlots().forEach(slot => {\n Object.keys(targetingConfig).filter(customSlotMatching ? customSlotMatching(slot) : isAdUnitCodeMatchingSlot(slot))\n .forEach(targetId => {\n Object.keys(targetingConfig[targetId]).forEach(key => {\n let value = targetingConfig[targetId][key];\n if (typeof value === 'string' && value.indexOf(',') !== -1) {\n // due to the check the array will be formed only if string has ',' else plain string will be assigned as value\n value = value.split(',');\n }\n targetingConfig[targetId][key] = value;\n });\n logMessage(`Attempting to set targeting-map for slot: ${slot.getSlotElementId()} with targeting-map:`, targetingConfig[targetId]);\n slot.updateTargetingFromMap(targetingConfig[targetId])\n })\n })\n };\n\n /**\n * normlizes input to a `adUnit.code` array\n * @param {(string|string[])} adUnitCode [description]\n * @return {string[]} AdUnit code array\n */\n function getAdUnitCodes(adUnitCode) {\n if (typeof adUnitCode === 'string') {\n return [adUnitCode];\n } else if (isArray(adUnitCode)) {\n return adUnitCode;\n }\n return auctionManager.getAdUnitCodes() || [];\n }\n\n function getBidsReceived() {\n let bidsReceived = auctionManager.getBidsReceived();\n\n if (!config.getConfig('useBidCache')) {\n // don't use bid cache (i.e. filter out bids not in the latest auction)\n bidsReceived = bidsReceived.filter(bid => latestAuctionForAdUnit[bid.adUnitCode] === bid.auctionId)\n } else {\n // if custom bid cache filter function exists, run for each bid from\n // previous auctions. If it returns true, include bid in bid pool\n const filterFunction = config.getConfig('bidCacheFilterFunction');\n if (typeof filterFunction === 'function') {\n bidsReceived = bidsReceived.filter(bid => latestAuctionForAdUnit[bid.adUnitCode] === bid.auctionId || !!filterFunction(bid))\n }\n }\n\n bidsReceived = bidsReceived\n .filter(bid => deepAccess(bid, 'video.context') !== ADPOD)\n .filter(isBidUsable);\n\n return getHighestCpmBidsFromBidPool(bidsReceived, getOldestHighestCpmBid);\n }\n\n /**\n * Returns top bids for a given adUnit or set of adUnits.\n * @param {(string|string[])} adUnitCode adUnitCode or array of adUnitCodes\n * @return {[type]} [description]\n */\n targeting.getWinningBids = function(adUnitCode, bidsReceived = getBidsReceived()) {\n const adUnitCodes = getAdUnitCodes(adUnitCode);\n return bidsReceived\n .filter(bid => includes(adUnitCodes, bid.adUnitCode))\n .filter(bid => (bidderSettings.get(bid.bidderCode, 'allowZeroCpmBids') === true) ? bid.cpm >= 0 : bid.cpm > 0)\n .map(bid => bid.adUnitCode)\n .filter(uniques)\n .map(adUnitCode => bidsReceived\n .filter(bid => bid.adUnitCode === adUnitCode ? bid : null)\n .reduce(getHighestCpm));\n };\n\n /**\n * @param {(string|string[])} adUnitCode adUnitCode or array of adUnitCodes\n * Sets targeting for AST\n */\n targeting.setTargetingForAst = function(adUnitCodes) {\n let astTargeting = targeting.getAllTargeting(adUnitCodes);\n\n try {\n targeting.resetPresetTargetingAST(adUnitCodes);\n } catch (e) {\n logError('unable to reset targeting for AST' + e)\n }\n\n Object.keys(astTargeting).forEach(targetId =>\n Object.keys(astTargeting[targetId]).forEach(key => {\n logMessage(`Attempting to set targeting for targetId: ${targetId} key: ${key} value: ${astTargeting[targetId][key]}`);\n // setKeywords supports string and array as value\n if (isStr(astTargeting[targetId][key]) || isArray(astTargeting[targetId][key])) {\n let keywordsObj = {};\n let regex = /pt[0-9]/;\n if (key.search(regex) < 0) {\n keywordsObj[key.toUpperCase()] = astTargeting[targetId][key];\n } else {\n // pt${n} keys should not be uppercased\n keywordsObj[key] = astTargeting[targetId][key];\n }\n window.apntag.setKeywords(targetId, keywordsObj, { overrideKeyValue: true });\n }\n })\n );\n };\n\n /**\n * Get targeting key value pairs for winning bid.\n * @param {string[]} AdUnit code array\n * @return {targetingArray} winning bids targeting\n */\n function getWinningBidTargeting(adUnitCodes, bidsReceived) {\n let winners = targeting.getWinningBids(adUnitCodes, bidsReceived);\n let standardKeys = getStandardKeys();\n\n winners = winners.map(winner => {\n return {\n [winner.adUnitCode]: Object.keys(winner.adserverTargeting)\n .filter(key =>\n typeof winner.sendStandardTargeting === 'undefined' ||\n winner.sendStandardTargeting ||\n standardKeys.indexOf(key) === -1)\n .reduce((acc, key) => {\n const targetingValue = [winner.adserverTargeting[key]];\n const targeting = { [key.substring(0, MAX_DFP_KEYLENGTH)]: targetingValue };\n if (key === CONSTANTS.TARGETING_KEYS.DEAL) {\n const bidderCodeTargetingKey = `${key}_${winner.bidderCode}`.substring(0, MAX_DFP_KEYLENGTH);\n const bidderCodeTargeting = { [bidderCodeTargetingKey]: targetingValue };\n return [...acc, targeting, bidderCodeTargeting];\n }\n return [...acc, targeting];\n }, [])\n };\n });\n\n return winners;\n }\n\n function getStandardKeys() {\n return auctionManager.getStandardBidderAdServerTargeting() // in case using a custom standard key set\n .map(targeting => targeting.key)\n .concat(TARGETING_KEYS).filter(uniques); // standard keys defined in the library.\n }\n\n /**\n * Merge custom adserverTargeting with same key name for same adUnitCode.\n * e.g: Appnexus defining custom keyvalue pair foo:bar and Rubicon defining custom keyvalue pair foo:baz will be merged to foo: ['bar','baz']\n *\n * @param {Object[]} acc Accumulator for reducer. It will store updated bidResponse objects\n * @param {Object} bid BidResponse\n * @param {number} index current index\n * @param {Array} arr original array\n */\n function mergeAdServerTargeting(acc, bid, index, arr) {\n function concatTargetingValue(key) {\n return function(currentBidElement) {\n if (!isArray(currentBidElement.adserverTargeting[key])) {\n currentBidElement.adserverTargeting[key] = [currentBidElement.adserverTargeting[key]];\n }\n currentBidElement.adserverTargeting[key] = currentBidElement.adserverTargeting[key].concat(bid.adserverTargeting[key]).filter(uniques);\n delete bid.adserverTargeting[key];\n }\n }\n\n function hasSameAdunitCodeAndKey(key) {\n return function(currentBidElement) {\n return currentBidElement.adUnitCode === bid.adUnitCode && currentBidElement.adserverTargeting[key]\n }\n }\n\n Object.keys(bid.adserverTargeting)\n .filter(getCustomKeys())\n .forEach(key => {\n if (acc.length) {\n acc.filter(hasSameAdunitCodeAndKey(key))\n .forEach(concatTargetingValue(key));\n }\n });\n acc.push(bid);\n return acc;\n }\n\n function getCustomKeys() {\n let standardKeys = getStandardKeys();\n if (FEATURES.NATIVE) {\n standardKeys = standardKeys.concat(NATIVE_TARGETING_KEYS);\n }\n return function(key) {\n return standardKeys.indexOf(key) === -1;\n }\n }\n\n function truncateCustomKeys(bid) {\n return {\n [bid.adUnitCode]: Object.keys(bid.adserverTargeting)\n // Get only the non-standard keys of the losing bids, since we\n // don't want to override the standard keys of the winning bid.\n .filter(getCustomKeys())\n .map(key => {\n return {\n [key.substring(0, MAX_DFP_KEYLENGTH)]: [bid.adserverTargeting[key]]\n };\n })\n }\n }\n\n /**\n * Get custom targeting key value pairs for bids.\n * @param {string[]} AdUnit code array\n * @return {targetingArray} bids with custom targeting defined in bidderSettings\n */\n function getCustomBidTargeting(adUnitCodes, bidsReceived) {\n return bidsReceived\n .filter(bid => includes(adUnitCodes, bid.adUnitCode))\n .map(bid => Object.assign({}, bid))\n .reduce(mergeAdServerTargeting, [])\n .map(truncateCustomKeys)\n .filter(bid => bid); // removes empty elements in array;\n }\n\n /**\n * Get targeting key value pairs for non-winning bids.\n * @param {string[]} AdUnit code array\n * @return {targetingArray} all non-winning bids targeting\n */\n function getBidLandscapeTargeting(adUnitCodes, bidsReceived) {\n const standardKeys = FEATURES.NATIVE ? TARGETING_KEYS.concat(NATIVE_TARGETING_KEYS) : TARGETING_KEYS.slice();\n const adUnitBidLimit = config.getConfig('sendBidsControl.bidLimit');\n const bids = getHighestCpmBidsFromBidPool(bidsReceived, getHighestCpm, adUnitBidLimit);\n const allowSendAllBidsTargetingKeys = config.getConfig('targetingControls.allowSendAllBidsTargetingKeys');\n\n const allowedSendAllBidTargeting = allowSendAllBidsTargetingKeys\n ? allowSendAllBidsTargetingKeys.map((key) => CONSTANTS.TARGETING_KEYS[key])\n : standardKeys;\n\n // populate targeting keys for the remaining bids\n return bids.map(bid => {\n if (bidShouldBeAddedToTargeting(bid, adUnitCodes)) {\n return {\n [bid.adUnitCode]: getTargetingMap(bid, standardKeys.filter(\n key => typeof bid.adserverTargeting[key] !== 'undefined' &&\n allowedSendAllBidTargeting.indexOf(key) !== -1)\n )\n };\n }\n }).filter(bid => bid); // removes empty elements in array\n }\n\n function getTargetingMap(bid, keys) {\n return keys.map(key => {\n return {\n [`${key}_${bid.bidderCode}`.substring(0, MAX_DFP_KEYLENGTH)]: [bid.adserverTargeting[key]]\n };\n });\n }\n\n function getAdUnitTargeting(adUnitCodes) {\n function getTargetingObj(adUnit) {\n return deepAccess(adUnit, CONSTANTS.JSON_MAPPING.ADSERVER_TARGETING);\n }\n\n function getTargetingValues(adUnit) {\n const aut = getTargetingObj(adUnit);\n\n return Object.keys(aut)\n .map(function(key) {\n if (isStr(aut[key])) aut[key] = aut[key].split(',').map(s => s.trim());\n if (!isArray(aut[key])) aut[key] = [ aut[key] ];\n return { [key]: aut[key] };\n });\n }\n\n return auctionManager.getAdUnits()\n .filter(adUnit => includes(adUnitCodes, adUnit.code) && getTargetingObj(adUnit))\n .map(adUnit => {\n return {[adUnit.code]: getTargetingValues(adUnit)}\n });\n }\n\n targeting.isApntagDefined = function() {\n if (window.apntag && isFn(window.apntag.setKeywords)) {\n return true;\n }\n };\n\n return targeting;\n}\n\nexport const targeting = newTargeting(auctionManager);\n","import {config} from './config.js';\nimport {getHook, hook} from './hook.js';\nimport {getGlobal} from './prebidGlobal.js';\nimport {logMessage, prefixLog} from './utils.js';\nimport {createBid} from './bidfactory.js';\nimport {loadExternalScript} from './adloader.js';\nimport {GreedyPromise} from './utils/promise.js';\n\nexport const DEBUG_KEY = '__$$PREBID_GLOBAL$$_debugging__';\n\nfunction isDebuggingInstalled() {\n return getGlobal().installedModules.includes('debugging');\n}\n\nfunction loadScript(url) {\n return new GreedyPromise((resolve) => {\n loadExternalScript(url, 'debugging', resolve);\n });\n}\n\nexport function debuggingModuleLoader({alreadyInstalled = isDebuggingInstalled, script = loadScript} = {}) {\n let loading = null;\n return function () {\n if (loading == null) {\n loading = new GreedyPromise((resolve, reject) => {\n // run this in a 0-delay timeout to give installedModules time to be populated\n setTimeout(() => {\n if (alreadyInstalled()) {\n resolve();\n } else {\n const url = '$$PREBID_DIST_URL_BASE$$debugging-standalone.js';\n logMessage(`Debugging module not installed, loading it from \"${url}\"...`);\n getGlobal()._installDebugging = true;\n script(url).then(() => {\n getGlobal()._installDebugging({DEBUG_KEY, hook, config, createBid, logger: prefixLog('DEBUG:')});\n }).then(resolve, reject);\n }\n });\n })\n }\n return loading;\n }\n}\n\nexport function debuggingControls({load = debuggingModuleLoader(), hook = getHook('requestBids')} = {}) {\n let promise = null;\n let enabled = false;\n function waitForDebugging(next, ...args) {\n return (promise || GreedyPromise.resolve()).then(() => next.apply(this, args))\n }\n function enable() {\n if (!enabled) {\n promise = load();\n // set debugging to high priority so that it has the opportunity to mess with most things\n hook.before(waitForDebugging, 99);\n enabled = true;\n }\n }\n function disable() {\n hook.getHooks({hook: waitForDebugging}).remove();\n enabled = false;\n }\n function reset() {\n promise = null;\n disable();\n }\n return {enable, disable, reset};\n}\n\nconst ctl = debuggingControls();\nexport const reset = ctl.reset;\n\nexport function loadSession() {\n let storage = null;\n try {\n storage = window.sessionStorage;\n } catch (e) {}\n\n if (storage !== null) {\n let debugging = ctl;\n let config = null;\n try {\n config = storage.getItem(DEBUG_KEY);\n } catch (e) {}\n if (config !== null) {\n // just make sure the module runs; it will take care of parsing the config (and disabling itself if necessary)\n debugging.enable();\n }\n }\n}\n\nconfig.getConfig('debugging', function ({debugging}) {\n debugging?.enabled ? ctl.enable() : ctl.disable();\n});\n","import {memoize, timestamp} from '../utils.js';\nimport {getCoreStorageManager} from '../storageManager.js';\n\nexport const coreStorage = getCoreStorageManager('fpdEnrichment');\n\n/**\n * Find the root domain by testing for the topmost domain that will allow setting cookies.\n */\n\nexport const findRootDomain = memoize(function findRootDomain(fullDomain = window.location.host) {\n if (!coreStorage.cookiesAreEnabled()) {\n return fullDomain;\n }\n\n const domainParts = fullDomain.split('.');\n if (domainParts.length === 2) {\n return fullDomain;\n }\n let rootDomain;\n let continueSearching;\n let startIndex = -2;\n const TEST_COOKIE_NAME = `_rdc${Date.now()}`;\n const TEST_COOKIE_VALUE = 'writeable';\n do {\n rootDomain = domainParts.slice(startIndex).join('.');\n let expirationDate = new Date(timestamp() + 10 * 1000).toUTCString();\n\n // Write a test cookie\n coreStorage.setCookie(\n TEST_COOKIE_NAME,\n TEST_COOKIE_VALUE,\n expirationDate,\n 'Lax',\n rootDomain,\n undefined\n );\n\n // See if the write was successful\n const value = coreStorage.getCookie(TEST_COOKIE_NAME, undefined);\n if (value === TEST_COOKIE_VALUE) {\n continueSearching = false;\n // Delete our test cookie\n coreStorage.setCookie(\n TEST_COOKIE_NAME,\n '',\n 'Thu, 01 Jan 1970 00:00:01 GMT',\n undefined,\n rootDomain,\n undefined\n );\n } else {\n startIndex += -1;\n continueSearching = Math.abs(startIndex) <= domainParts.length;\n }\n } while (continueSearching);\n return rootDomain;\n});\n","import {isEmptyStr, isStr, isEmpty} from '../utils.js';\nimport {GreedyPromise} from '../utils/promise.js';\n\nexport const SUA_SOURCE_UNKNOWN = 0;\nexport const SUA_SOURCE_LOW_ENTROPY = 1;\nexport const SUA_SOURCE_HIGH_ENTROPY = 2;\nexport const SUA_SOURCE_UA_HEADER = 3;\n\n// \"high entropy\" (i.e. privacy-sensitive) fields that can be requested from the navigator.\nexport const HIGH_ENTROPY_HINTS = [\n 'architecture',\n 'bitness',\n 'model',\n 'platformVersion',\n 'fullVersionList'\n]\n\nexport const LOW_ENTROPY_HINTS = [\n 'brands',\n 'mobile',\n 'platform'\n]\n\n/**\n * Returns low entropy UA client hints encoded as an ortb2.6 device.sua object; or null if no UA client hints are available.\n */\nexport const getLowEntropySUA = lowEntropySUAAccessor();\n\n/**\n * Returns a promise to high entropy UA client hints encoded as an ortb2.6 device.sua object, or null if no UA client hints are available.\n *\n * Note that the return value is a promise because the underlying browser API returns a promise; this\n * seems to plan for additional controls (such as alerts / permission request prompts to the user); it's unclear\n * at the moment if this means that asking for more hints would result in slower / more expensive calls.\n *\n * @param {Array[String]} hints hints to request, defaults to all (HIGH_ENTROPY_HINTS).\n */\nexport const getHighEntropySUA = highEntropySUAAccessor();\n\nexport function lowEntropySUAAccessor(uaData = window.navigator?.userAgentData) {\n const sua = (uaData && LOW_ENTROPY_HINTS.some(h => typeof uaData[h] !== 'undefined')) ? Object.freeze(uaDataToSUA(SUA_SOURCE_LOW_ENTROPY, uaData)) : null;\n return function () {\n return sua;\n }\n}\n\nexport function highEntropySUAAccessor(uaData = window.navigator?.userAgentData) {\n const cache = {};\n const keys = new WeakMap();\n return function (hints = HIGH_ENTROPY_HINTS) {\n if (!keys.has(hints)) {\n const sorted = Array.from(hints);\n sorted.sort();\n keys.set(hints, sorted.join('|'));\n }\n const key = keys.get(hints);\n if (!cache.hasOwnProperty(key)) {\n try {\n cache[key] = uaData.getHighEntropyValues(hints).then(result => {\n return isEmpty(result) ? null : Object.freeze(uaDataToSUA(SUA_SOURCE_HIGH_ENTROPY, result))\n }).catch(() => null);\n } catch (e) {\n cache[key] = GreedyPromise.resolve(null);\n }\n }\n return cache[key];\n }\n}\n\n/**\n * Convert a User Agent client hints object to an ORTB 2.6 device.sua fragment\n * https://iabtechlab.com/wp-content/uploads/2022/04/OpenRTB-2-6_FINAL.pdf\n *\n * @param source source of the UAData object (0 to 3)\n * @param uaData https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUAData/\n * @return {{}}\n */\nexport function uaDataToSUA(source, uaData) {\n function toBrandVersion(brand, version) {\n const bv = {brand};\n if (isStr(version) && !isEmptyStr(version)) {\n bv.version = version.split('.');\n }\n return bv;\n }\n\n const sua = {source};\n if (uaData.platform) {\n sua.platform = toBrandVersion(uaData.platform, uaData.platformVersion);\n }\n if (uaData.fullVersionList || uaData.brands) {\n sua.browsers = (uaData.fullVersionList || uaData.brands).map(({brand, version}) => toBrandVersion(brand, version));\n }\n if (typeof uaData['mobile'] !== 'undefined') {\n sua.mobile = uaData.mobile ? 1 : 0;\n }\n ['model', 'bitness', 'architecture'].forEach(prop => {\n const value = uaData[prop];\n if (isStr(value)) {\n sua[prop] = value;\n }\n })\n return sua;\n}\n","import {logWarn} from '../utils.js';\n\n// mutually exclusive ORTB sections in order of priority - 'dooh' beats 'app' & 'site' and 'app' beats 'site';\n// if one is set, the others will be removed\nexport const CLIENT_SECTIONS = ['dooh', 'app', 'site']\n\nexport function clientSectionChecker(logPrefix) {\n return function onlyOneClientSection(ortb2) {\n CLIENT_SECTIONS.reduce((found, section) => {\n if (hasSection(ortb2, section)) {\n if (found != null) {\n logWarn(`${logPrefix} specifies both '${found}' and '${section}'; dropping the latter.`)\n delete ortb2[section];\n } else {\n found = section;\n }\n }\n return found;\n }, null);\n return ortb2;\n }\n}\n\nexport function hasSection(ortb2, section) {\n return ortb2[section] != null && Object.keys(ortb2[section]).length > 0\n}\n","import {hook} from '../hook.js';\nimport {getRefererInfo, parseDomain} from '../refererDetection.js';\nimport {findRootDomain} from './rootDomain.js';\nimport {deepSetValue, getDefinedParams, getDNT, getWindowSelf, getWindowTop, mergeDeep} from '../utils.js';\nimport {config} from '../config.js';\nimport {getHighEntropySUA, getLowEntropySUA} from './sua.js';\nimport {GreedyPromise} from '../utils/promise.js';\nimport {CLIENT_SECTIONS, clientSectionChecker, hasSection} from './oneClient.js';\n\nexport const dep = {\n getRefererInfo,\n findRootDomain,\n getWindowTop,\n getWindowSelf,\n getHighEntropySUA,\n getLowEntropySUA,\n};\n\nconst oneClient = clientSectionChecker('FPD')\n\n/**\n * Enrich an ortb2 object with first party data.\n * @param {Promise[{}]} fpd: a promise to an ortb2 object.\n * @returns: {Promise[{}]}: a promise to an enriched ortb2 object.\n */\nexport const enrichFPD = hook('sync', (fpd) => {\n return GreedyPromise.all([fpd, getSUA().catch(() => null)])\n .then(([ortb2, sua]) => {\n const ri = dep.getRefererInfo();\n mergeLegacySetConfigs(ortb2);\n Object.entries(ENRICHMENTS).forEach(([section, getEnrichments]) => {\n const data = getEnrichments(ortb2, ri);\n if (data && Object.keys(data).length > 0) {\n ortb2[section] = mergeDeep({}, data, ortb2[section]);\n }\n });\n if (sua) {\n deepSetValue(ortb2, 'device.sua', Object.assign({}, sua, ortb2.device.sua));\n }\n ortb2 = oneClient(ortb2);\n for (let section of CLIENT_SECTIONS) {\n if (hasSection(ortb2, section)) {\n ortb2[section] = mergeDeep({}, clientEnrichment(ortb2, ri), ortb2[section]);\n break;\n }\n }\n return ortb2;\n });\n});\n\nfunction mergeLegacySetConfigs(ortb2) {\n // merge in values from \"legacy\" setConfig({app, site, device})\n // TODO: deprecate these eventually\n ['app', 'site', 'device'].forEach(prop => {\n const cfg = config.getConfig(prop);\n if (cfg != null) {\n ortb2[prop] = mergeDeep({}, cfg, ortb2[prop]);\n }\n })\n}\n\nfunction winFallback(fn) {\n try {\n return fn(dep.getWindowTop());\n } catch (e) {\n return fn(dep.getWindowSelf());\n }\n}\n\nfunction getSUA() {\n const hints = config.getConfig('firstPartyData.uaHints');\n return !Array.isArray(hints) || hints.length === 0\n ? GreedyPromise.resolve(dep.getLowEntropySUA())\n : dep.getHighEntropySUA(hints);\n}\n\nfunction removeUndef(obj) {\n return getDefinedParams(obj, Object.keys(obj))\n}\n\nconst ENRICHMENTS = {\n site(ortb2, ri) {\n if (CLIENT_SECTIONS.filter(p => p !== 'site').some(hasSection.bind(null, ortb2))) {\n // do not enrich site if dooh or app are set\n return;\n }\n return removeUndef({\n page: ri.page,\n ref: ri.ref,\n });\n },\n device() {\n return winFallback((win) => {\n const w = win.innerWidth || win.document.documentElement.clientWidth || win.document.body.clientWidth;\n const h = win.innerHeight || win.document.documentElement.clientHeight || win.document.body.clientHeight;\n return {\n w,\n h,\n dnt: getDNT() ? 1 : 0,\n ua: win.navigator.userAgent,\n language: win.navigator.language.split('-').shift(),\n };\n })\n },\n regs() {\n const regs = {};\n if (winFallback((win) => win.navigator.globalPrivacyControl)) {\n deepSetValue(regs, 'ext.gpc', 1);\n }\n const coppa = config.getConfig('coppa');\n if (typeof coppa === 'boolean') {\n regs.coppa = coppa ? 1 : 0;\n }\n return regs;\n }\n};\n\n// Enrichment of properties common across dooh, app and site - will be dropped into whatever\n// section is appropriate\nfunction clientEnrichment(ortb2, ri) {\n const domain = parseDomain(ri.page, {noLeadingWww: true});\n const keywords = winFallback((win) => win.document.querySelector('meta[name=\\'keywords\\']'))\n ?.content?.replace?.(/\\s/g, '');\n return removeUndef({\n domain,\n keywords,\n publisher: removeUndef({\n domain: dep.findRootDomain(domain)\n })\n })\n}\n","/** @module pbjs */\n\nimport {getGlobal} from './prebidGlobal.js';\nimport {\n adUnitsFilter,\n bind,\n callBurl,\n contains,\n createInvisibleIframe,\n deepAccess,\n deepClone,\n deepSetValue,\n flatten,\n generateUUID,\n getHighestCpm,\n inIframe,\n insertElement,\n isArray,\n isArrayOfNums,\n isEmpty,\n isFn,\n isGptPubadsDefined,\n isNumber,\n logError,\n logInfo,\n logMessage,\n logWarn,\n mergeDeep,\n replaceAuctionPrice,\n replaceClickThrough,\n transformAdServerTargetingObj,\n uniques,\n unsupportedBidderMessage\n} from './utils.js';\nimport {listenMessagesFromCreative} from './secureCreatives.js';\nimport {userSync} from './userSync.js';\nimport {config} from './config.js';\nimport {auctionManager} from './auctionManager.js';\nimport {isBidUsable, targeting} from './targeting.js';\nimport {hook, wrapHook} from './hook.js';\nimport {loadSession} from './debugging.js';\nimport {includes} from './polyfill.js';\nimport {adunitCounter} from './adUnits.js';\nimport {executeRenderer, isRendererRequired} from './Renderer.js';\nimport {createBid} from './bidfactory.js';\nimport {storageCallbacks} from './storageManager.js';\nimport {emitAdRenderFail, emitAdRenderSucceeded} from './adRendering.js';\nimport {default as adapterManager, getS2SBidderSet} from './adapterManager.js';\nimport CONSTANTS from './constants.json';\nimport * as events from './events.js';\nimport {newMetrics, useMetrics} from './utils/perfMetrics.js';\nimport {defer, GreedyPromise} from './utils/promise.js';\nimport {enrichFPD} from './fpd/enrichment.js';\nimport {allConsent} from './consentHandler.js';\n\nconst pbjsInstance = getGlobal();\nconst { triggerUserSyncs } = userSync;\n\n/* private variables */\nconst { ADD_AD_UNITS, BID_WON, REQUEST_BIDS, SET_TARGETING, STALE_RENDER } = CONSTANTS.EVENTS;\nconst { PREVENT_WRITING_ON_MAIN_DOCUMENT, NO_AD, EXCEPTION, CANNOT_FIND_AD, MISSING_DOC_OR_ADID } = CONSTANTS.AD_RENDER_FAILED_REASON;\n\nconst eventValidators = {\n bidWon: checkDefinedPlacement\n};\n\n// initialize existing debugging sessions if present\nloadSession();\n\n/* Public vars */\npbjsInstance.bidderSettings = pbjsInstance.bidderSettings || {};\n\n// let the world know we are loaded\npbjsInstance.libLoaded = true;\n\n// version auto generated from build\npbjsInstance.version = 'v$prebid.version$';\nlogInfo('Prebid.js v$prebid.version$ loaded');\n\npbjsInstance.installedModules = pbjsInstance.installedModules || [];\n\n// create adUnit array\npbjsInstance.adUnits = pbjsInstance.adUnits || [];\n\n// Allow publishers who enable user sync override to trigger their sync\npbjsInstance.triggerUserSyncs = triggerUserSyncs;\n\nfunction checkDefinedPlacement(id) {\n var adUnitCodes = auctionManager.getBidsRequested().map(bidSet => bidSet.bids.map(bid => bid.adUnitCode))\n .reduce(flatten)\n .filter(uniques);\n\n if (!contains(adUnitCodes, id)) {\n logError('The \"' + id + '\" placement is not defined.');\n return;\n }\n\n return true;\n}\n\nfunction setRenderSize(doc, width, height) {\n if (doc.defaultView && doc.defaultView.frameElement) {\n doc.defaultView.frameElement.width = width;\n doc.defaultView.frameElement.height = height;\n }\n}\n\nfunction validateSizes(sizes, targLength) {\n let cleanSizes = [];\n if (isArray(sizes) && ((targLength) ? sizes.length === targLength : sizes.length > 0)) {\n // check if an array of arrays or array of numbers\n if (sizes.every(sz => isArrayOfNums(sz, 2))) {\n cleanSizes = sizes;\n } else if (isArrayOfNums(sizes, 2)) {\n cleanSizes.push(sizes);\n }\n }\n return cleanSizes;\n}\n\nfunction validateBannerMediaType(adUnit) {\n const validatedAdUnit = deepClone(adUnit);\n const banner = validatedAdUnit.mediaTypes.banner;\n const bannerSizes = validateSizes(banner.sizes);\n if (bannerSizes.length > 0) {\n banner.sizes = bannerSizes;\n // Deprecation Warning: This property will be deprecated in next release in favor of adUnit.mediaTypes.banner.sizes\n validatedAdUnit.sizes = bannerSizes;\n } else {\n logError('Detected a mediaTypes.banner object without a proper sizes field. Please ensure the sizes are listed like: [[300, 250], ...]. Removing invalid mediaTypes.banner object from request.');\n delete validatedAdUnit.mediaTypes.banner\n }\n return validatedAdUnit;\n}\n\nfunction validateVideoMediaType(adUnit) {\n const validatedAdUnit = deepClone(adUnit);\n const video = validatedAdUnit.mediaTypes.video;\n if (video.playerSize) {\n let tarPlayerSizeLen = (typeof video.playerSize[0] === 'number') ? 2 : 1;\n\n const videoSizes = validateSizes(video.playerSize, tarPlayerSizeLen);\n if (videoSizes.length > 0) {\n if (tarPlayerSizeLen === 2) {\n logInfo('Transforming video.playerSize from [640,480] to [[640,480]] so it\\'s in the proper format.');\n }\n video.playerSize = videoSizes;\n // Deprecation Warning: This property will be deprecated in next release in favor of adUnit.mediaTypes.video.playerSize\n validatedAdUnit.sizes = videoSizes;\n } else {\n logError('Detected incorrect configuration of mediaTypes.video.playerSize. Please specify only one set of dimensions in a format like: [[640, 480]]. Removing invalid mediaTypes.video.playerSize property from request.');\n delete validatedAdUnit.mediaTypes.video.playerSize;\n }\n }\n return validatedAdUnit;\n}\n\nfunction validateNativeMediaType(adUnit) {\n const validatedAdUnit = deepClone(adUnit);\n const native = validatedAdUnit.mediaTypes.native;\n // if native assets are specified in OpenRTB format, remove legacy assets and print a warn.\n if (native.ortb) {\n const legacyNativeKeys = Object.keys(CONSTANTS.NATIVE_KEYS).filter(key => CONSTANTS.NATIVE_KEYS[key].includes('hb_native_'));\n const nativeKeys = Object.keys(native);\n const intersection = nativeKeys.filter(nativeKey => legacyNativeKeys.includes(nativeKey));\n if (intersection.length > 0) {\n logError(`when using native OpenRTB format, you cannot use legacy native properties. Deleting ${intersection} keys from request.`);\n intersection.forEach(legacyKey => delete validatedAdUnit.mediaTypes.native[legacyKey]);\n }\n }\n if (native.image && native.image.sizes && !Array.isArray(native.image.sizes)) {\n logError('Please use an array of sizes for native.image.sizes field. Removing invalid mediaTypes.native.image.sizes property from request.');\n delete validatedAdUnit.mediaTypes.native.image.sizes;\n }\n if (native.image && native.image.aspect_ratios && !Array.isArray(native.image.aspect_ratios)) {\n logError('Please use an array of sizes for native.image.aspect_ratios field. Removing invalid mediaTypes.native.image.aspect_ratios property from request.');\n delete validatedAdUnit.mediaTypes.native.image.aspect_ratios;\n }\n if (native.icon && native.icon.sizes && !Array.isArray(native.icon.sizes)) {\n logError('Please use an array of sizes for native.icon.sizes field. Removing invalid mediaTypes.native.icon.sizes property from request.');\n delete validatedAdUnit.mediaTypes.native.icon.sizes;\n }\n return validatedAdUnit;\n}\n\nfunction validateAdUnitPos(adUnit, mediaType) {\n let pos = deepAccess(adUnit, `mediaTypes.${mediaType}.pos`);\n\n if (!isNumber(pos) || isNaN(pos) || !isFinite(pos)) {\n let warning = `Value of property 'pos' on ad unit ${adUnit.code} should be of type: Number`;\n\n logWarn(warning);\n events.emit(CONSTANTS.EVENTS.AUCTION_DEBUG, {type: 'WARNING', arguments: warning});\n delete adUnit.mediaTypes[mediaType].pos;\n }\n\n return adUnit\n}\n\nfunction validateAdUnit(adUnit) {\n const msg = (msg) => `adUnit.code '${adUnit.code}' ${msg}`;\n\n const mediaTypes = adUnit.mediaTypes;\n const bids = adUnit.bids;\n\n if (bids != null && !isArray(bids)) {\n logError(msg(`defines 'adUnit.bids' that is not an array. Removing adUnit from auction`));\n return null;\n }\n if (bids == null && adUnit.ortb2Imp == null) {\n logError(msg(`has no 'adUnit.bids' and no 'adUnit.ortb2Imp'. Removing adUnit from auction`));\n return null;\n }\n if (!mediaTypes || Object.keys(mediaTypes).length === 0) {\n logError(msg(`does not define a 'mediaTypes' object. This is a required field for the auction, so this adUnit has been removed.`));\n return null;\n }\n if (adUnit.ortb2Imp != null && (bids == null || bids.length === 0)) {\n adUnit.bids = [{bidder: null}]; // the 'null' bidder is treated as an s2s-only placeholder by adapterManager\n logMessage(msg(`defines 'adUnit.ortb2Imp' with no 'adUnit.bids'; it will be seen only by S2S adapters`));\n }\n\n return adUnit;\n}\n\nexport const adUnitSetupChecks = {\n validateAdUnit,\n validateBannerMediaType,\n validateSizes\n};\n\nif (FEATURES.NATIVE) {\n Object.assign(adUnitSetupChecks, {validateNativeMediaType});\n}\n\nif (FEATURES.VIDEO) {\n Object.assign(adUnitSetupChecks, { validateVideoMediaType });\n}\n\nexport const checkAdUnitSetup = hook('sync', function (adUnits) {\n const validatedAdUnits = [];\n\n adUnits.forEach(adUnit => {\n adUnit = validateAdUnit(adUnit);\n if (adUnit == null) return;\n\n const mediaTypes = adUnit.mediaTypes;\n let validatedBanner, validatedVideo, validatedNative;\n\n if (mediaTypes.banner) {\n validatedBanner = validateBannerMediaType(adUnit);\n if (mediaTypes.banner.hasOwnProperty('pos')) validatedBanner = validateAdUnitPos(validatedBanner, 'banner');\n }\n\n if (FEATURES.VIDEO && mediaTypes.video) {\n validatedVideo = validatedBanner ? validateVideoMediaType(validatedBanner) : validateVideoMediaType(adUnit);\n if (mediaTypes.video.hasOwnProperty('pos')) validatedVideo = validateAdUnitPos(validatedVideo, 'video');\n }\n\n if (FEATURES.NATIVE && mediaTypes.native) {\n validatedNative = validatedVideo ? validateNativeMediaType(validatedVideo) : validatedBanner ? validateNativeMediaType(validatedBanner) : validateNativeMediaType(adUnit);\n }\n\n const validatedAdUnit = Object.assign({}, validatedBanner, validatedVideo, validatedNative);\n\n validatedAdUnits.push(validatedAdUnit);\n });\n\n return validatedAdUnits;\n}, 'checkAdUnitSetup');\n\n/// ///////////////////////////////\n// //\n// Start Public APIs //\n// //\n/// ///////////////////////////////\n\n/**\n * This function returns the query string targeting parameters available at this moment for a given ad unit. Note that some bidder's response may not have been received if you call this function too quickly after the requests are sent.\n * @param {string} [adunitCode] adUnitCode to get the bid responses for\n * @alias module:pbjs.getAdserverTargetingForAdUnitCodeStr\n * @return {Array} returnObj return bids array\n */\npbjsInstance.getAdserverTargetingForAdUnitCodeStr = function (adunitCode) {\n logInfo('Invoking $$PREBID_GLOBAL$$.getAdserverTargetingForAdUnitCodeStr', arguments);\n\n // call to retrieve bids array\n if (adunitCode) {\n var res = pbjsInstance.getAdserverTargetingForAdUnitCode(adunitCode);\n return transformAdServerTargetingObj(res);\n } else {\n logMessage('Need to call getAdserverTargetingForAdUnitCodeStr with adunitCode');\n }\n};\n\n/**\n * This function returns the query string targeting parameters available at this moment for a given ad unit. Note that some bidder's response may not have been received if you call this function too quickly after the requests are sent.\n * @param adUnitCode {string} adUnitCode to get the bid responses for\n * @alias module:pbjs.getHighestUnusedBidResponseForAdUnitCode\n * @returns {Object} returnObj return bid\n */\npbjsInstance.getHighestUnusedBidResponseForAdUnitCode = function (adunitCode) {\n if (adunitCode) {\n const bid = auctionManager.getAllBidsForAdUnitCode(adunitCode)\n .filter(isBidUsable)\n\n return bid.length ? bid.reduce(getHighestCpm) : {}\n } else {\n logMessage('Need to call getHighestUnusedBidResponseForAdUnitCode with adunitCode');\n }\n};\n\n/**\n * This function returns the query string targeting parameters available at this moment for a given ad unit. Note that some bidder's response may not have been received if you call this function too quickly after the requests are sent.\n * @param adUnitCode {string} adUnitCode to get the bid responses for\n * @alias module:pbjs.getAdserverTargetingForAdUnitCode\n * @returns {Object} returnObj return bids\n */\npbjsInstance.getAdserverTargetingForAdUnitCode = function (adUnitCode) {\n return pbjsInstance.getAdserverTargeting(adUnitCode)[adUnitCode];\n};\n\n/**\n * returns all ad server targeting for all ad units\n * @return {Object} Map of adUnitCodes and targeting values []\n * @alias module:pbjs.getAdserverTargeting\n */\n\npbjsInstance.getAdserverTargeting = function (adUnitCode) {\n logInfo('Invoking $$PREBID_GLOBAL$$.getAdserverTargeting', arguments);\n return targeting.getAllTargeting(adUnitCode);\n};\n\npbjsInstance.getConsentMetadata = function () {\n logInfo('Invoking $$PREBID_GLOBAL$$.getConsentMetadata');\n return allConsent.getConsentMeta()\n};\n\nfunction getBids(type) {\n const responses = auctionManager[type]()\n .filter(bind.call(adUnitsFilter, this, auctionManager.getAdUnitCodes()));\n\n // find the last auction id to get responses for most recent auction only\n const currentAuctionId = auctionManager.getLastAuctionId();\n\n return responses\n .map(bid => bid.adUnitCode)\n .filter(uniques).map(adUnitCode => responses\n .filter(bid => bid.auctionId === currentAuctionId && bid.adUnitCode === adUnitCode))\n .filter(bids => bids && bids[0] && bids[0].adUnitCode)\n .map(bids => {\n return {\n [bids[0].adUnitCode]: { bids }\n };\n })\n .reduce((a, b) => Object.assign(a, b), {});\n}\n\n/**\n * This function returns the bids requests involved in an auction but not bid on\n * @alias module:pbjs.getNoBids\n * @return {Object} map | object that contains the bidRequests\n */\n\npbjsInstance.getNoBids = function () {\n logInfo('Invoking $$PREBID_GLOBAL$$.getNoBids', arguments);\n return getBids('getNoBids');\n};\n\n/**\n * This function returns the bids requests involved in an auction but not bid on or the specified adUnitCode\n * @param {string} adUnitCode adUnitCode\n * @alias module:pbjs.getNoBidsForAdUnitCode\n * @return {Object} bidResponse object\n */\n\npbjsInstance.getNoBidsForAdUnitCode = function (adUnitCode) {\n const bids = auctionManager.getNoBids().filter(bid => bid.adUnitCode === adUnitCode);\n return { bids };\n};\n\n/**\n * This function returns the bid responses at the given moment.\n * @alias module:pbjs.getBidResponses\n * @return {Object} map | object that contains the bidResponses\n */\n\npbjsInstance.getBidResponses = function () {\n logInfo('Invoking $$PREBID_GLOBAL$$.getBidResponses', arguments);\n return getBids('getBidsReceived');\n};\n\n/**\n * Returns bidResponses for the specified adUnitCode\n * @param {string} adUnitCode adUnitCode\n * @alias module:pbjs.getBidResponsesForAdUnitCode\n * @return {Object} bidResponse object\n */\n\npbjsInstance.getBidResponsesForAdUnitCode = function (adUnitCode) {\n const bids = auctionManager.getBidsReceived().filter(bid => bid.adUnitCode === adUnitCode);\n return { bids };\n};\n\n/**\n * Set query string targeting on one or more GPT ad units.\n * @param {(string|string[])} adUnit a single `adUnit.code` or multiple.\n * @param {function(object)} customSlotMatching gets a GoogleTag slot and returns a filter function for adUnitCode, so you can decide to match on either eg. return slot => { return adUnitCode => { return slot.getSlotElementId() === 'myFavoriteDivId'; } };\n * @alias module:pbjs.setTargetingForGPTAsync\n */\npbjsInstance.setTargetingForGPTAsync = function (adUnit, customSlotMatching) {\n logInfo('Invoking $$PREBID_GLOBAL$$.setTargetingForGPTAsync', arguments);\n if (!isGptPubadsDefined()) {\n logError('window.googletag is not defined on the page');\n return;\n }\n\n // get our ad unit codes\n let targetingSet = targeting.getAllTargeting(adUnit);\n\n // first reset any old targeting\n targeting.resetPresetTargeting(adUnit, customSlotMatching);\n\n // now set new targeting keys\n targeting.setTargetingForGPT(targetingSet, customSlotMatching);\n\n Object.keys(targetingSet).forEach((adUnitCode) => {\n Object.keys(targetingSet[adUnitCode]).forEach((targetingKey) => {\n if (targetingKey === 'hb_adid') {\n auctionManager.setStatusForBids(targetingSet[adUnitCode][targetingKey], CONSTANTS.BID_STATUS.BID_TARGETING_SET);\n }\n });\n });\n\n // emit event\n events.emit(SET_TARGETING, targetingSet);\n};\n\n/**\n * Set query string targeting on all AST (AppNexus Seller Tag) ad units. Note that this function has to be called after all ad units on page are defined. For working example code, see [Using Prebid.js with AppNexus Publisher Ad Server](http://prebid.org/dev-docs/examples/use-prebid-with-appnexus-ad-server.html).\n * @param {(string|string[])} adUnitCode adUnitCode or array of adUnitCodes\n * @alias module:pbjs.setTargetingForAst\n */\npbjsInstance.setTargetingForAst = function (adUnitCodes) {\n logInfo('Invoking $$PREBID_GLOBAL$$.setTargetingForAn', arguments);\n if (!targeting.isApntagDefined()) {\n logError('window.apntag is not defined on the page');\n return;\n }\n\n targeting.setTargetingForAst(adUnitCodes);\n\n // emit event\n events.emit(SET_TARGETING, targeting.getAllTargeting());\n};\n\n/**\n * This function will check for presence of given node in given parent. If not present - will inject it.\n * @param {Node} node node, whose existance is in question\n * @param {Document} doc document element do look in\n * @param {string} tagName tag name to look in\n */\nfunction reinjectNodeIfRemoved(node, doc, tagName) {\n const injectionNode = doc.querySelector(tagName);\n if (!node.parentNode || node.parentNode !== injectionNode) {\n insertElement(node, doc, tagName);\n }\n}\n\n/**\n * This function will render the ad (based on params) in the given iframe document passed through.\n * Note that doc SHOULD NOT be the parent document page as we can't doc.write() asynchronously\n * @param {Document} doc document\n * @param {string} id bid id to locate the ad\n * @alias module:pbjs.renderAd\n */\npbjsInstance.renderAd = hook('async', function (doc, id, options) {\n logInfo('Invoking $$PREBID_GLOBAL$$.renderAd', arguments);\n logMessage('Calling renderAd with adId :' + id);\n\n if (!id) {\n const message = `Error trying to write ad Id :${id} to the page. Missing adId`;\n emitAdRenderFail({ reason: MISSING_DOC_OR_ADID, message, id });\n return;\n }\n\n try {\n // lookup ad by ad Id\n const bid = auctionManager.findBidByAdId(id);\n if (!bid) {\n const message = `Error trying to write ad. Cannot find ad by given id : ${id}`;\n emitAdRenderFail({ reason: CANNOT_FIND_AD, message, id });\n return;\n }\n\n if (bid.status === CONSTANTS.BID_STATUS.RENDERED) {\n logWarn(`Ad id ${bid.adId} has been rendered before`);\n events.emit(STALE_RENDER, bid);\n if (deepAccess(config.getConfig('auctionOptions'), 'suppressStaleRender')) {\n return;\n }\n }\n\n // replace macros according to openRTB with price paid = bid.cpm\n bid.ad = replaceAuctionPrice(bid.ad, bid.originalCpm || bid.cpm);\n bid.adUrl = replaceAuctionPrice(bid.adUrl, bid.originalCpm || bid.cpm);\n // replacing clickthrough if submitted\n if (options && options.clickThrough) {\n const {clickThrough} = options;\n bid.ad = replaceClickThrough(bid.ad, clickThrough);\n bid.adUrl = replaceClickThrough(bid.adUrl, clickThrough);\n }\n\n // save winning bids\n auctionManager.addWinningBid(bid);\n\n // emit 'bid won' event here\n events.emit(BID_WON, bid);\n\n const {height, width, ad, mediaType, adUrl, renderer} = bid;\n\n // video module\n if (FEATURES.VIDEO) {\n const adUnitCode = bid.adUnitCode;\n const adUnit = pbjsInstance.adUnits.filter(adUnit => adUnit.code === adUnitCode);\n const videoModule = pbjsInstance.videoModule;\n if (adUnit.video && videoModule) {\n videoModule.renderBid(adUnit.video.divId, bid);\n return;\n }\n }\n\n if (!doc) {\n const message = `Error trying to write ad Id :${id} to the page. Missing document`;\n emitAdRenderFail({ reason: MISSING_DOC_OR_ADID, message, id });\n return;\n }\n\n const creativeComment = document.createComment(`Creative ${bid.creativeId} served by ${bid.bidder} Prebid.js Header Bidding`);\n insertElement(creativeComment, doc, 'html');\n\n if (isRendererRequired(renderer)) {\n executeRenderer(renderer, bid, doc);\n reinjectNodeIfRemoved(creativeComment, doc, 'html');\n emitAdRenderSucceeded({ doc, bid, id });\n } else if ((doc === document && !inIframe()) || mediaType === 'video') {\n const message = `Error trying to write ad. Ad render call ad id ${id} was prevented from writing to the main document.`;\n emitAdRenderFail({reason: PREVENT_WRITING_ON_MAIN_DOCUMENT, message, bid, id});\n } else if (ad) {\n doc.write(ad);\n doc.close();\n setRenderSize(doc, width, height);\n reinjectNodeIfRemoved(creativeComment, doc, 'html');\n callBurl(bid);\n emitAdRenderSucceeded({ doc, bid, id });\n } else if (adUrl) {\n const iframe = createInvisibleIframe();\n iframe.height = height;\n iframe.width = width;\n iframe.style.display = 'inline';\n iframe.style.overflow = 'hidden';\n iframe.src = adUrl;\n\n insertElement(iframe, doc, 'body');\n setRenderSize(doc, width, height);\n reinjectNodeIfRemoved(creativeComment, doc, 'html');\n callBurl(bid);\n emitAdRenderSucceeded({ doc, bid, id });\n } else {\n const message = `Error trying to write ad. No ad for bid response id: ${id}`;\n emitAdRenderFail({reason: NO_AD, message, bid, id});\n }\n } catch (e) {\n const message = `Error trying to write ad Id :${id} to the page:${e.message}`;\n emitAdRenderFail({ reason: EXCEPTION, message, id });\n }\n});\n\n/**\n * Remove adUnit from the $$PREBID_GLOBAL$$ configuration, if there are no addUnitCode(s) it will remove all\n * @param {string| Array} adUnitCode the adUnitCode(s) to remove\n * @alias module:pbjs.removeAdUnit\n */\npbjsInstance.removeAdUnit = function (adUnitCode) {\n logInfo('Invoking $$PREBID_GLOBAL$$.removeAdUnit', arguments);\n\n if (!adUnitCode) {\n pbjsInstance.adUnits = [];\n return;\n }\n\n let adUnitCodes;\n\n if (isArray(adUnitCode)) {\n adUnitCodes = adUnitCode;\n } else {\n adUnitCodes = [adUnitCode];\n }\n\n adUnitCodes.forEach((adUnitCode) => {\n for (let i = pbjsInstance.adUnits.length - 1; i >= 0; i--) {\n if (pbjsInstance.adUnits[i].code === adUnitCode) {\n pbjsInstance.adUnits.splice(i, 1);\n }\n }\n });\n};\n\n/**\n * @param {Object} requestOptions\n * @param {function} requestOptions.bidsBackHandler\n * @param {number} requestOptions.timeout\n * @param {Array} requestOptions.adUnits\n * @param {Array} requestOptions.adUnitCodes\n * @param {Array} requestOptions.labels\n * @param {String} requestOptions.auctionId\n * @alias module:pbjs.requestBids\n */\npbjsInstance.requestBids = (function() {\n const delegate = hook('async', function ({ bidsBackHandler, timeout, adUnits, adUnitCodes, labels, auctionId, ttlBuffer, ortb2, metrics, defer } = {}) {\n events.emit(REQUEST_BIDS);\n const cbTimeout = timeout || config.getConfig('bidderTimeout');\n logInfo('Invoking $$PREBID_GLOBAL$$.requestBids', arguments);\n if (adUnitCodes && adUnitCodes.length) {\n // if specific adUnitCodes supplied filter adUnits for those codes\n adUnits = adUnits.filter(unit => includes(adUnitCodes, unit.code));\n } else {\n // otherwise derive adUnitCodes from adUnits\n adUnitCodes = adUnits && adUnits.map(unit => unit.code);\n }\n const ortb2Fragments = {\n global: mergeDeep({}, config.getAnyConfig('ortb2') || {}, ortb2 || {}),\n bidder: Object.fromEntries(Object.entries(config.getBidderConfig()).map(([bidder, cfg]) => [bidder, cfg.ortb2]).filter(([_, ortb2]) => ortb2 != null))\n }\n return enrichFPD(GreedyPromise.resolve(ortb2Fragments.global)).then(global => {\n ortb2Fragments.global = global;\n return startAuction({bidsBackHandler, timeout: cbTimeout, adUnits, adUnitCodes, labels, auctionId, ttlBuffer, ortb2Fragments, metrics, defer});\n })\n }, 'requestBids');\n\n return wrapHook(delegate, function requestBids(req = {}) {\n // unlike the main body of `delegate`, this runs before any other hook has a chance to;\n // it's also not restricted in its return value in the way `async` hooks are.\n\n // if the request does not specify adUnits, clone the global adUnit array;\n // otherwise, if the caller goes on to use addAdUnits/removeAdUnits, any asynchronous logic\n // in any hook might see their effects.\n let adUnits = req.adUnits || pbjsInstance.adUnits;\n req.adUnits = (isArray(adUnits) ? adUnits.slice() : [adUnits]);\n\n req.metrics = newMetrics();\n req.metrics.checkpoint('requestBids');\n req.defer = defer({promiseFactory: (r) => new Promise(r)})\n delegate.call(this, req);\n return req.defer.promise;\n });\n})();\n\nexport const startAuction = hook('async', function ({ bidsBackHandler, timeout: cbTimeout, adUnits, ttlBuffer, adUnitCodes, labels, auctionId, ortb2Fragments, metrics, defer } = {}) {\n const s2sBidders = getS2SBidderSet(config.getConfig('s2sConfig') || []);\n adUnits = useMetrics(metrics).measureTime('requestBids.validate', () => checkAdUnitSetup(adUnits));\n\n function auctionDone(bids, timedOut, auctionId) {\n if (typeof bidsBackHandler === 'function') {\n try {\n bidsBackHandler(bids, timedOut, auctionId);\n } catch (e) {\n logError('Error executing bidsBackHandler', null, e);\n }\n }\n defer.resolve({bids, timedOut, auctionId})\n }\n\n /*\n * for a given adunit which supports a set of mediaTypes\n * and a given bidder which supports a set of mediaTypes\n * a bidder is eligible to participate on the adunit\n * if it supports at least one of the mediaTypes on the adunit\n */\n adUnits.forEach(adUnit => {\n // get the adunit's mediaTypes, defaulting to banner if mediaTypes isn't present\n const adUnitMediaTypes = Object.keys(adUnit.mediaTypes || { 'banner': 'banner' });\n\n // get the bidder's mediaTypes\n const allBidders = adUnit.bids.map(bid => bid.bidder);\n const bidderRegistry = adapterManager.bidderRegistry;\n\n const bidders = allBidders.filter(bidder => !s2sBidders.has(bidder));\n\n const tid = adUnit.ortb2Imp?.ext?.tid || generateUUID();\n adUnit.transactionId = tid;\n if (ttlBuffer != null && !adUnit.hasOwnProperty('ttlBuffer')) {\n adUnit.ttlBuffer = ttlBuffer;\n }\n // Populate ortb2Imp.ext.tid with transactionId. Specifying a transaction ID per item in the ortb impression array, lets multiple transaction IDs be transmitted in a single bid request.\n deepSetValue(adUnit, 'ortb2Imp.ext.tid', tid);\n\n bidders.forEach(bidder => {\n const adapter = bidderRegistry[bidder];\n const spec = adapter && adapter.getSpec && adapter.getSpec();\n // banner is default if not specified in spec\n const bidderMediaTypes = (spec && spec.supportedMediaTypes) || ['banner'];\n\n // check if the bidder's mediaTypes are not in the adUnit's mediaTypes\n const bidderEligible = adUnitMediaTypes.some(type => includes(bidderMediaTypes, type));\n if (!bidderEligible) {\n // drop the bidder from the ad unit if it's not compatible\n logWarn(unsupportedBidderMessage(adUnit, bidder));\n adUnit.bids = adUnit.bids.filter(bid => bid.bidder !== bidder);\n } else {\n adunitCounter.incrementBidderRequestsCounter(adUnit.code, bidder);\n }\n });\n adunitCounter.incrementRequestsCounter(adUnit.code);\n });\n\n if (!adUnits || adUnits.length === 0) {\n logMessage('No adUnits configured. No bids requested.');\n auctionDone();\n } else {\n const auction = auctionManager.createAuction({\n adUnits,\n adUnitCodes,\n callback: auctionDone,\n cbTimeout,\n labels,\n auctionId,\n ortb2Fragments,\n metrics,\n });\n\n let adUnitsLen = adUnits.length;\n if (adUnitsLen > 15) {\n logInfo(`Current auction ${auction.getAuctionId()} contains ${adUnitsLen} adUnits.`, adUnits);\n }\n\n adUnitCodes.forEach(code => targeting.setLatestAuctionForAdUnit(code, auction.getAuctionId()));\n auction.callBids();\n }\n}, 'startAuction');\n\nexport function executeCallbacks(fn, reqBidsConfigObj) {\n runAll(storageCallbacks);\n runAll(enableAnalyticsCallbacks);\n fn.call(this, reqBidsConfigObj);\n\n function runAll(queue) {\n var queued;\n while ((queued = queue.shift())) {\n queued();\n }\n }\n}\n\n// This hook will execute all storage callbacks which were registered before gdpr enforcement hook was added. Some bidders, user id modules use storage functions when module is parsed but gdpr enforcement hook is not added at that stage as setConfig callbacks are yet to be called. Hence for such calls we execute all the stored callbacks just before requestBids. At this hook point we will know for sure that gdprEnforcement module is added or not\npbjsInstance.requestBids.before(executeCallbacks, 49);\n\n/**\n *\n * Add adunit(s)\n * @param {Array|Object} adUnitArr Array of adUnits or single adUnit Object.\n * @alias module:pbjs.addAdUnits\n */\npbjsInstance.addAdUnits = function (adUnitArr) {\n logInfo('Invoking $$PREBID_GLOBAL$$.addAdUnits', arguments);\n pbjsInstance.adUnits.push.apply(pbjsInstance.adUnits, isArray(adUnitArr) ? adUnitArr : [adUnitArr]);\n // emit event\n events.emit(ADD_AD_UNITS);\n};\n\n/**\n * @param {string} event the name of the event\n * @param {Function} handler a callback to set on event\n * @param {string} id an identifier in the context of the event\n * @alias module:pbjs.onEvent\n *\n * This API call allows you to register a callback to handle a Prebid.js event.\n * An optional `id` parameter provides more finely-grained event callback registration.\n * This makes it possible to register callback events for a specific item in the\n * event context. For example, `bidWon` events will accept an `id` for ad unit code.\n * `bidWon` callbacks registered with an ad unit code id will be called when a bid\n * for that ad unit code wins the auction. Without an `id` this method registers the\n * callback for every `bidWon` event.\n *\n * Currently `bidWon` is the only event that accepts an `id` parameter.\n */\npbjsInstance.onEvent = function (event, handler, id) {\n logInfo('Invoking $$PREBID_GLOBAL$$.onEvent', arguments);\n if (!isFn(handler)) {\n logError('The event handler provided is not a function and was not set on event \"' + event + '\".');\n return;\n }\n\n if (id && !eventValidators[event].call(null, id)) {\n logError('The id provided is not valid for event \"' + event + '\" and no handler was set.');\n return;\n }\n\n events.on(event, handler, id);\n};\n\n/**\n * @param {string} event the name of the event\n * @param {Function} handler a callback to remove from the event\n * @param {string} id an identifier in the context of the event (see `$$PREBID_GLOBAL$$.onEvent`)\n * @alias module:pbjs.offEvent\n */\npbjsInstance.offEvent = function (event, handler, id) {\n logInfo('Invoking $$PREBID_GLOBAL$$.offEvent', arguments);\n if (id && !eventValidators[event].call(null, id)) {\n return;\n }\n\n events.off(event, handler, id);\n};\n\n/**\n * Return a copy of all events emitted\n *\n * @alias module:pbjs.getEvents\n */\npbjsInstance.getEvents = function () {\n logInfo('Invoking $$PREBID_GLOBAL$$.getEvents');\n return events.getEvents();\n};\n\n/*\n * Wrapper to register bidderAdapter externally (adapterManager.registerBidAdapter())\n * @param {Function} bidderAdaptor [description]\n * @param {string} bidderCode [description]\n * @alias module:pbjs.registerBidAdapter\n */\npbjsInstance.registerBidAdapter = function (bidderAdaptor, bidderCode) {\n logInfo('Invoking $$PREBID_GLOBAL$$.registerBidAdapter', arguments);\n try {\n adapterManager.registerBidAdapter(bidderAdaptor(), bidderCode);\n } catch (e) {\n logError('Error registering bidder adapter : ' + e.message);\n }\n};\n\n/**\n * Wrapper to register analyticsAdapter externally (adapterManager.registerAnalyticsAdapter())\n * @param {Object} options [description]\n * @alias module:pbjs.registerAnalyticsAdapter\n */\npbjsInstance.registerAnalyticsAdapter = function (options) {\n logInfo('Invoking $$PREBID_GLOBAL$$.registerAnalyticsAdapter', arguments);\n try {\n adapterManager.registerAnalyticsAdapter(options);\n } catch (e) {\n logError('Error registering analytics adapter : ' + e.message);\n }\n};\n\n/**\n * Wrapper to bidfactory.createBid()\n * @param {string} statusCode [description]\n * @alias module:pbjs.createBid\n * @return {Object} bidResponse [description]\n */\npbjsInstance.createBid = function (statusCode) {\n logInfo('Invoking $$PREBID_GLOBAL$$.createBid', arguments);\n return createBid(statusCode);\n};\n\n/**\n * Enable sending analytics data to the analytics provider of your\n * choice.\n *\n * For usage, see [Integrate with the Prebid Analytics\n * API](http://prebid.org/dev-docs/integrate-with-the-prebid-analytics-api.html).\n *\n * For a list of analytics adapters, see [Analytics for\n * Prebid](http://prebid.org/overview/analytics.html).\n * @param {Object} config\n * @param {string} config.provider The name of the provider, e.g., `\"ga\"` for Google Analytics.\n * @param {Object} config.options The options for this particular analytics adapter. This will likely vary between adapters.\n * @alias module:pbjs.enableAnalytics\n */\n\n// Stores 'enableAnalytics' callbacks for later execution.\nconst enableAnalyticsCallbacks = [];\n\nconst enableAnalyticsCb = hook('async', function (config) {\n if (config && !isEmpty(config)) {\n logInfo('Invoking $$PREBID_GLOBAL$$.enableAnalytics for: ', config);\n adapterManager.enableAnalytics(config);\n } else {\n logError('$$PREBID_GLOBAL$$.enableAnalytics should be called with option {}');\n }\n}, 'enableAnalyticsCb');\n\npbjsInstance.enableAnalytics = function (config) {\n enableAnalyticsCallbacks.push(enableAnalyticsCb.bind(this, config));\n};\n\n/**\n * @alias module:pbjs.aliasBidder\n */\npbjsInstance.aliasBidder = function (bidderCode, alias, options) {\n logInfo('Invoking $$PREBID_GLOBAL$$.aliasBidder', arguments);\n if (bidderCode && alias) {\n adapterManager.aliasBidAdapter(bidderCode, alias, options);\n } else {\n logError('bidderCode and alias must be passed as arguments', '$$PREBID_GLOBAL$$.aliasBidder');\n }\n};\n\n/**\n * @alias module:pbjs.aliasRegistry\n */\npbjsInstance.aliasRegistry = adapterManager.aliasRegistry;\nconfig.getConfig('aliasRegistry', config => {\n if (config.aliasRegistry === 'private') delete pbjsInstance.aliasRegistry;\n});\n\n/**\n * The bid response object returned by an external bidder adapter during the auction.\n * @typedef {Object} AdapterBidResponse\n * @property {string} pbAg Auto granularity price bucket; CPM <= 5 ? increment = 0.05 : CPM > 5 && CPM <= 10 ? increment = 0.10 : CPM > 10 && CPM <= 20 ? increment = 0.50 : CPM > 20 ? priceCap = 20.00. Example: `\"0.80\"`.\n * @property {string} pbCg Custom price bucket. For example setup, see {@link setPriceGranularity}. Example: `\"0.84\"`.\n * @property {string} pbDg Dense granularity price bucket; CPM <= 3 ? increment = 0.01 : CPM > 3 && CPM <= 8 ? increment = 0.05 : CPM > 8 && CPM <= 20 ? increment = 0.50 : CPM > 20? priceCap = 20.00. Example: `\"0.84\"`.\n * @property {string} pbLg Low granularity price bucket; $0.50 increment, capped at $5, floored to two decimal places. Example: `\"0.50\"`.\n * @property {string} pbMg Medium granularity price bucket; $0.10 increment, capped at $20, floored to two decimal places. Example: `\"0.80\"`.\n * @property {string} pbHg High granularity price bucket; $0.01 increment, capped at $20, floored to two decimal places. Example: `\"0.84\"`.\n *\n * @property {string} bidder The string name of the bidder. This *may* be the same as the `bidderCode`. For For a list of all bidders and their codes, see [Bidders' Params](http://prebid.org/dev-docs/bidders.html).\n * @property {string} bidderCode The unique string that identifies this bidder. For a list of all bidders and their codes, see [Bidders' Params](http://prebid.org/dev-docs/bidders.html).\n *\n * @property {string} requestId The [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier) representing the bid request.\n * @property {number} requestTimestamp The time at which the bid request was sent out, expressed in milliseconds.\n * @property {number} responseTimestamp The time at which the bid response was received, expressed in milliseconds.\n * @property {number} timeToRespond How long it took for the bidder to respond with this bid, expressed in milliseconds.\n *\n * @property {string} size The size of the ad creative, expressed in `\"AxB\"` format, where A and B are numbers of pixels. Example: `\"320x50\"`.\n * @property {string} width The width of the ad creative in pixels. Example: `\"320\"`.\n * @property {string} height The height of the ad creative in pixels. Example: `\"50\"`.\n *\n * @property {string} ad The actual ad creative content, often HTML with CSS, JavaScript, and/or links to additional content. Example: `\"
\",`.\n * @property {number} ad_id The ad ID of the creative, as understood by the bidder's system. Used by the line item's [creative in the ad server](http://prebid.org/adops/send-all-bids-adops.html#step-3-add-a-creative).\n * @property {string} adUnitCode The code used to uniquely identify the ad unit on the publisher's page.\n *\n * @property {string} statusMessage The status of the bid. Allowed values: `\"Bid available\"` or `\"Bid returned empty or error response\"`.\n * @property {number} cpm The exact bid price from the bidder, expressed to the thousandths place. Example: `\"0.849\"`.\n *\n * @property {Object} adserverTargeting An object whose values represent the ad server's targeting on the bid.\n * @property {string} adserverTargeting.hb_adid The ad ID of the creative, as understood by the ad server.\n * @property {string} adserverTargeting.hb_pb The price paid to show the creative, as logged in the ad server.\n * @property {string} adserverTargeting.hb_bidder The winning bidder whose ad creative will be served by the ad server.\n */\n\n/**\n * Get all of the bids that have been rendered. Useful for [troubleshooting your integration](http://prebid.org/dev-docs/prebid-troubleshooting-guide.html).\n * @return {Array} A list of bids that have been rendered.\n */\npbjsInstance.getAllWinningBids = function () {\n return auctionManager.getAllWinningBids();\n};\n\n/**\n * Get all of the bids that have won their respective auctions.\n * @return {Array} A list of bids that have won their respective auctions.\n */\npbjsInstance.getAllPrebidWinningBids = function () {\n return auctionManager.getBidsReceived()\n .filter(bid => bid.status === CONSTANTS.BID_STATUS.BID_TARGETING_SET);\n};\n\n/**\n * Get array of highest cpm bids for all adUnits, or highest cpm bid\n * object for the given adUnit\n * @param {string} adUnitCode - optional ad unit code\n * @alias module:pbjs.getHighestCpmBids\n * @return {Array} array containing highest cpm bid object(s)\n */\npbjsInstance.getHighestCpmBids = function (adUnitCode) {\n return targeting.getWinningBids(adUnitCode);\n};\n\nif (FEATURES.VIDEO) {\n /**\n * Mark the winning bid as used, should only be used in conjunction with video\n * @typedef {Object} MarkBidRequest\n * @property {string} adUnitCode The ad unit code\n * @property {string} adId The id representing the ad we want to mark\n *\n * @alias module:pbjs.markWinningBidAsUsed\n */\n pbjsInstance.markWinningBidAsUsed = function (markBidRequest) {\n const bids = fetchReceivedBids(markBidRequest, 'Improper use of markWinningBidAsUsed. It needs an adUnitCode or an adId to function.');\n\n if (bids.length > 0) {\n auctionManager.addWinningBid(bids[0]);\n }\n }\n}\n\nconst fetchReceivedBids = (bidRequest, warningMessage) => {\n let bids = [];\n\n if (bidRequest.adUnitCode && bidRequest.adId) {\n bids = auctionManager.getBidsReceived()\n .filter(bid => bid.adId === bidRequest.adId && bid.adUnitCode === bidRequest.adUnitCode);\n } else if (bidRequest.adUnitCode) {\n bids = targeting.getWinningBids(bidRequest.adUnitCode);\n } else if (bidRequest.adId) {\n bids = auctionManager.getBidsReceived().filter(bid => bid.adId === bidRequest.adId);\n } else {\n logWarn(warningMessage);\n }\n\n return bids;\n};\n\n/**\n * Get Prebid config options\n * @param {Object} options\n * @alias module:pbjs.getConfig\n */\npbjsInstance.getConfig = config.getAnyConfig;\npbjsInstance.readConfig = config.readAnyConfig;\npbjsInstance.mergeConfig = config.mergeConfig;\npbjsInstance.mergeBidderConfig = config.mergeBidderConfig;\n\n/**\n * Set Prebid config options.\n * See https://docs.prebid.org/dev-docs/publisher-api-reference/setConfig.html\n *\n * @param {Object} options Global Prebid configuration object. Must be JSON - no JavaScript functions are allowed.\n */\npbjsInstance.setConfig = config.setConfig;\npbjsInstance.setBidderConfig = config.setBidderConfig;\n\npbjsInstance.que.push(() => listenMessagesFromCreative());\n\n/**\n * This queue lets users load Prebid asynchronously, but run functions the same way regardless of whether it gets loaded\n * before or after their script executes. For example, given the code:\n *\n * \n * \n *\n * If the page's script runs before prebid loads, then their function gets added to the queue, and executed\n * by prebid once it's done loading. If it runs after prebid loads, then this monkey-patch causes their\n * function to execute immediately.\n *\n * @memberof pbjs\n * @param {function} command A function which takes no arguments. This is guaranteed to run exactly once, and only after\n * the Prebid script has been fully loaded.\n * @alias module:pbjs.cmd.push\n */\npbjsInstance.cmd.push = function (command) {\n if (typeof command === 'function') {\n try {\n command.call();\n } catch (e) {\n logError('Error processing command :', e.message, e.stack);\n }\n } else {\n logError('Commands written into $$PREBID_GLOBAL$$.cmd.push must be wrapped in a function');\n }\n};\n\npbjsInstance.que.push = pbjsInstance.cmd.push;\n\nfunction processQueue(queue) {\n queue.forEach(function (cmd) {\n if (typeof cmd.called === 'undefined') {\n try {\n cmd.call();\n cmd.called = true;\n } catch (e) {\n logError('Error processing command :', 'prebid.js', e);\n }\n }\n });\n}\n\n/**\n * @alias module:pbjs.processQueue\n */\npbjsInstance.processQueue = function () {\n hook.ready();\n processQueue(pbjsInstance.que);\n processQueue(pbjsInstance.cmd);\n};\n\n/**\n * @alias module:pbjs.triggerBilling\n */\npbjsInstance.triggerBilling = (winningBid) => {\n const bids = fetchReceivedBids(winningBid, 'Improper use of triggerBilling. It requires a bid with at least an adUnitCode or an adId to function.');\n const triggerBillingBid = bids.find(bid => bid.requestId === winningBid.requestId) || bids[0];\n\n if (bids.length > 0 && triggerBillingBid) {\n try {\n adapterManager.callBidBillableBidder(triggerBillingBid);\n } catch (e) {\n logError('Error when triggering billing :', e);\n }\n } else {\n logWarn('The bid provided to triggerBilling did not match any bids received.');\n }\n};\n\nexport default pbjsInstance;\n","export const PROCESSOR_TYPES = ['request', 'imp', 'bidResponse', 'response'];\nexport const PROCESSOR_DIALECTS = ['default', 'pbs'];\nexport const [REQUEST, IMP, BID_RESPONSE, RESPONSE] = PROCESSOR_TYPES;\nexport const [DEFAULT, PBS] = PROCESSOR_DIALECTS;\n\nconst types = new Set(PROCESSOR_TYPES);\n\nexport function processorRegistry() {\n const processors = {};\n\n return {\n registerOrtbProcessor({type, name, fn, priority = 0, dialects = [DEFAULT]}) {\n if (!types.has(type)) {\n throw new Error(`ORTB processor type must be one of: ${PROCESSOR_TYPES.join(', ')}`)\n }\n dialects.forEach(dialect => {\n if (!processors.hasOwnProperty(dialect)) {\n processors[dialect] = {};\n }\n if (!processors[dialect].hasOwnProperty(type)) {\n processors[dialect][type] = {};\n }\n processors[dialect][type][name] = {\n priority,\n fn\n }\n })\n },\n getProcessors(dialect) {\n return processors[dialect] || {};\n }\n }\n}\n\nexport const {registerOrtbProcessor, getProcessors} = processorRegistry();\n","import {GreedyPromise} from '../../src/utils/promise.js';\n\n/**\n * @typedef {function} CMPClient\n *\n * @param {{}} params CMP parameters. Currently this is a subset of {command, callback, parameter, version}.\n * @param {bool} once if true, discard cross-frame event listeners once a reply message is received.\n * @returns {Promise<*>} a promise to the API's \"result\" - see the `mode` argument to `cmpClient` on how that's determined.\n * @property {boolean} isDirect true if the CMP is directly accessible (no postMessage required)\n * @property {() => void} close close the client; currently, this just stops listening for cross-frame messages.\n */\n\n/**\n * Returns a client function that can interface with a CMP regardless of where it's located.\n *\n * @param apiName name of the CMP api, e.g. \"__gpp\"\n * @param apiVersion? CMP API version\n * @param apiArgs? names of the arguments taken by the api function, in order.\n * @param callbackArgs? names of the cross-frame response payload properties that should be passed as callback arguments, in order\n * @param mode? controls the callbacks passed to the underlying API, and how the promises returned by the client are resolved.\n *\n * The client behaves differently when it's provided a `callback` argument vs when it's not - for short, let's name these\n * cases \"subscriptions\" and \"one-shot calls\" respectively:\n *\n * With `mode: MODE_MIXED` (the default), promises returned on subscriptions are resolved to undefined when the callback\n * is first run (that is, the promise resolves when the CMP replies, but what it replies with is discarded and\n * left for the callback to deal with). For one-shot calls, the returned promise is resolved to the API's\n * return value when it's directly accessible, or with the result from the first (and, presumably, the only)\n * cross-frame reply when it's not;\n *\n * With `mode: MODE_RETURN`, the returned promise always resolves to the API's return value - which is taken to be undefined\n * when cross-frame;\n *\n * With `mode: MODE_CALLBACK`, the underlying API is expected to never directly return anything significant; instead,\n * it should always accept a callback and - for one-shot calls - invoke it only once with the result. The client will\n * automatically generate an appropriate callback for one-shot calls and use the result it's given to resolve\n * the returned promise. Subscriptions are treated in the same way as MODE_MIXED.\n *\n * @param win\n * @returns {CMPClient} CMP invocation function (or null if no CMP was found).\n */\n\nexport const MODE_MIXED = 0;\nexport const MODE_RETURN = 1;\nexport const MODE_CALLBACK = 2;\n\nexport function cmpClient(\n {\n apiName,\n apiVersion,\n apiArgs = ['command', 'callback', 'parameter', 'version'],\n callbackArgs = ['returnValue', 'success'],\n mode = MODE_MIXED,\n },\n win = window\n) {\n const cmpCallbacks = {};\n const callName = `${apiName}Call`;\n const cmpDataPkgName = `${apiName}Return`;\n\n function handleMessage(event) {\n const json = (typeof event.data === 'string' && event.data.includes(cmpDataPkgName)) ? JSON.parse(event.data) : event.data;\n if (json?.[cmpDataPkgName]?.callId) {\n const payload = json[cmpDataPkgName];\n\n if (cmpCallbacks.hasOwnProperty(payload.callId)) {\n cmpCallbacks[payload.callId](...callbackArgs.map(name => payload[name]));\n }\n }\n }\n\n function findCMP() {\n let f = win;\n let cmpFrame;\n let isDirect = false;\n while (f != null) {\n try {\n if (typeof f[apiName] === 'function') {\n cmpFrame = f;\n isDirect = true;\n break;\n }\n } catch (e) {\n }\n\n // need separate try/catch blocks due to the exception errors thrown when trying to check for a frame that doesn't exist in 3rd party env\n try {\n if (f.frames[`${apiName}Locator`]) {\n cmpFrame = f;\n break;\n }\n } catch (e) {\n }\n\n if (f === win.top) break;\n f = f.parent;\n }\n\n return [\n cmpFrame,\n isDirect\n ];\n }\n\n const [cmpFrame, isDirect] = findCMP();\n\n if (!cmpFrame) {\n return;\n }\n\n function resolveParams(params) {\n params = Object.assign({version: apiVersion}, params);\n return apiArgs.map(arg => [arg, params[arg]])\n }\n\n function wrapCallback(callback, resolve, reject, preamble) {\n const haveCb = typeof callback === 'function';\n\n return function (result, success) {\n preamble && preamble();\n if (mode !== MODE_RETURN) {\n const resolver = success == null || success ? resolve : reject;\n resolver(haveCb ? undefined : result);\n }\n haveCb && callback.apply(this, arguments);\n }\n }\n\n let client;\n\n if (isDirect) {\n client = function invokeCMPDirect(params = {}) {\n return new GreedyPromise((resolve, reject) => {\n const ret = cmpFrame[apiName](...resolveParams({\n ...params,\n callback: (params.callback || mode === MODE_CALLBACK) ? wrapCallback(params.callback, resolve, reject) : undefined,\n }).map(([_, val]) => val));\n if (mode === MODE_RETURN || (params.callback == null && mode === MODE_MIXED)) {\n resolve(ret);\n }\n });\n };\n } else {\n win.addEventListener('message', handleMessage, false);\n\n client = function invokeCMPFrame(params, once = false) {\n return new GreedyPromise((resolve, reject) => {\n // call CMP via postMessage\n const callId = Math.random().toString();\n const msg = {\n [callName]: {\n ...Object.fromEntries(resolveParams(params).filter(([param]) => param !== 'callback')),\n callId: callId\n }\n };\n\n cmpCallbacks[callId] = wrapCallback(params?.callback, resolve, reject, (once || params?.callback == null) && (() => { delete cmpCallbacks[callId] }));\n cmpFrame.postMessage(msg, '*');\n if (mode === MODE_RETURN) resolve();\n });\n };\n }\n return Object.assign(client, {\n isDirect,\n close() {\n !isDirect && win.removeEventListener('message', handleMessage);\n }\n })\n}\n","/**\n * This module adds GDPR consentManagement support to prebid.js. It interacts with\n * supported CMPs (Consent Management Platforms) to grab the user's consent information\n * and make it available for any GDPR supported adapters to read/pass this information to\n * their system.\n */\nimport {deepSetValue, isNumber, isPlainObject, isStr, logError, logInfo, logWarn} from '../src/utils.js';\nimport {config} from '../src/config.js';\nimport {gdprDataHandler} from '../src/adapterManager.js';\nimport {includes} from '../src/polyfill.js';\nimport {timedAuctionHook} from '../src/utils/perfMetrics.js';\nimport {registerOrtbProcessor, REQUEST} from '../src/pbjsORTB.js';\nimport {enrichFPD} from '../src/fpd/enrichment.js';\nimport {getGlobal} from '../src/prebidGlobal.js';\nimport {cmpClient} from '../libraries/cmp/cmpClient.js';\n\nconst DEFAULT_CMP = 'iab';\nconst DEFAULT_CONSENT_TIMEOUT = 10000;\nconst CMP_VERSION = 2;\n\nexport let userCMP;\nexport let consentTimeout;\nexport let gdprScope;\nexport let staticConsentData;\nlet actionTimeout;\n\nlet consentData;\nlet addedConsentHook = false;\n\n// add new CMPs here, with their dedicated lookup function\nconst cmpCallMap = {\n 'iab': lookupIabConsent,\n 'static': lookupStaticConsentData\n};\n\n/**\n * This function reads the consent string from the config to obtain the consent information of the user.\n * @param {function({})} onSuccess acts as a success callback when the value is read from config; pass along consentObject from CMP\n */\nfunction lookupStaticConsentData({onSuccess, onError}) {\n processCmpData(staticConsentData, {onSuccess, onError})\n}\n\n/**\n * This function handles interacting with an IAB compliant CMP to obtain the consent information of the user.\n * Given the async nature of the CMP's API, we pass in acting success/error callback functions to exit this function\n * based on the appropriate result.\n * @param {function({})} onSuccess acts as a success callback when CMP returns a value; pass along consentObjectfrom CMP\n * @param {function(string, ...{}?)} cmpError acts as an error callback while interacting with CMP; pass along an error message (string) and any extra error arguments (purely for logging)\n */\nfunction lookupIabConsent({onSuccess, onError, onEvent}) {\n function cmpResponseCallback(tcfData, success) {\n logInfo('Received a response from CMP', tcfData);\n if (success) {\n onEvent(tcfData);\n if (tcfData.gdprApplies === false || tcfData.eventStatus === 'tcloaded' || tcfData.eventStatus === 'useractioncomplete') {\n processCmpData(tcfData, {onSuccess, onError});\n }\n } else {\n onError('CMP unable to register callback function. Please check CMP setup.');\n }\n }\n\n const cmp = cmpClient({\n apiName: '__tcfapi',\n apiVersion: CMP_VERSION,\n apiArgs: ['command', 'version', 'callback', 'parameter'],\n });\n\n if (!cmp) {\n return onError('TCF2 CMP not found.');\n }\n if (cmp.isDirect) {\n logInfo('Detected CMP API is directly accessible, calling it now...');\n } else {\n logInfo('Detected CMP is outside the current iframe where Prebid.js is located, calling it now...');\n }\n\n cmp({\n command: 'addEventListener',\n callback: cmpResponseCallback\n })\n}\n\n/**\n * Look up consent data and store it in the `consentData` global as well as `adapterManager.js`' gdprDataHandler.\n *\n * @param cb A callback that takes: a boolean that is true if the auction should be canceled; an error message and extra\n * error arguments that will be undefined if there's no error.\n */\nfunction loadConsentData(cb) {\n let isDone = false;\n let timer = null;\n let onTimeout, provisionalConsent;\n let cmpLoaded = false;\n\n function resetTimeout(timeout) {\n if (timer != null) {\n clearTimeout(timer);\n }\n if (!isDone && timeout != null) {\n if (timeout === 0) {\n onTimeout()\n } else {\n timer = setTimeout(onTimeout, timeout);\n }\n }\n }\n\n function done(consentData, shouldCancelAuction, errMsg, ...extraArgs) {\n resetTimeout(null);\n isDone = true;\n gdprDataHandler.setConsentData(consentData);\n if (typeof cb === 'function') {\n cb(shouldCancelAuction, errMsg, ...extraArgs);\n }\n }\n\n if (!includes(Object.keys(cmpCallMap), userCMP)) {\n done(null, false, `CMP framework (${userCMP}) is not a supported framework. Aborting consentManagement module and resuming auction.`);\n return;\n }\n\n const callbacks = {\n onSuccess: (data) => done(data, false),\n onError: function (msg, ...extraArgs) {\n done(null, true, msg, ...extraArgs);\n },\n onEvent: function (consentData) {\n provisionalConsent = consentData;\n if (cmpLoaded) return;\n cmpLoaded = true;\n if (actionTimeout != null) {\n resetTimeout(actionTimeout);\n }\n }\n }\n\n onTimeout = () => {\n const continueToAuction = (data) => {\n done(data, false, `${cmpLoaded ? 'Timeout waiting for user action on CMP' : 'CMP did not load'}, continuing auction...`);\n }\n processCmpData(provisionalConsent, {\n onSuccess: continueToAuction,\n onError: () => continueToAuction(storeConsentData(undefined)),\n })\n }\n\n cmpCallMap[userCMP](callbacks);\n if (!(actionTimeout != null && cmpLoaded)) {\n resetTimeout(consentTimeout);\n }\n}\n\n/**\n * Like `loadConsentData`, but cache and re-use previously loaded data.\n * @param cb\n */\nfunction loadIfMissing(cb) {\n if (consentData) {\n logInfo('User consent information already known. Pulling internally stored information...');\n // eslint-disable-next-line standard/no-callback-literal\n cb(false);\n } else {\n loadConsentData(cb);\n }\n}\n\n/**\n * If consentManagement module is enabled (ie included in setConfig), this hook function will attempt to fetch the\n * user's encoded consent string from the supported CMP. Once obtained, the module will store this\n * data as part of a gdprConsent object which gets transferred to adapterManager's gdprDataHandler object.\n * This information is later added into the bidRequest object for any supported adapters to read/pass along to their system.\n * @param {object} reqBidsConfigObj required; This is the same param that's used in pbjs.requestBids.\n * @param {function} fn required; The next function in the chain, used by hook.js\n */\nexport const requestBidsHook = timedAuctionHook('gdpr', function requestBidsHook(fn, reqBidsConfigObj) {\n loadIfMissing(function (shouldCancelAuction, errMsg, ...extraArgs) {\n if (errMsg) {\n let log = logWarn;\n if (shouldCancelAuction) {\n log = logError;\n errMsg = `${errMsg} Canceling auction as per consentManagement config.`;\n }\n log(errMsg, ...extraArgs);\n }\n\n if (shouldCancelAuction) {\n fn.stopTiming();\n if (typeof reqBidsConfigObj.bidsBackHandler === 'function') {\n reqBidsConfigObj.bidsBackHandler();\n } else {\n logError('Error executing bidsBackHandler');\n }\n } else {\n fn.call(this, reqBidsConfigObj);\n }\n });\n});\n\n/**\n * This function checks the consent data provided by CMP to ensure it's in an expected state.\n * If it's bad, we call `onError`\n * If it's good, then we store the value and call `onSuccess`\n */\nfunction processCmpData(consentObject, {onSuccess, onError}) {\n function checkData() {\n // if CMP does not respond with a gdprApplies boolean, use defaultGdprScope (gdprScope)\n const gdprApplies = consentObject && typeof consentObject.gdprApplies === 'boolean' ? consentObject.gdprApplies : gdprScope;\n const tcString = consentObject && consentObject.tcString;\n return !!(\n (typeof gdprApplies !== 'boolean') ||\n (gdprApplies === true && (!tcString || !isStr(tcString)))\n );\n }\n\n if (checkData()) {\n onError(`CMP returned unexpected value during lookup process.`, consentObject);\n } else {\n onSuccess(storeConsentData(consentObject));\n }\n}\n\n/**\n * Stores CMP data locally in module to make information available in adaptermanager.js for later in the auction\n * @param {object} cmpConsentObject required; an object representing user's consent choices (can be undefined in certain use-cases for this function only)\n */\nfunction storeConsentData(cmpConsentObject) {\n consentData = {\n consentString: (cmpConsentObject) ? cmpConsentObject.tcString : undefined,\n vendorData: (cmpConsentObject) || undefined,\n gdprApplies: cmpConsentObject && typeof cmpConsentObject.gdprApplies === 'boolean' ? cmpConsentObject.gdprApplies : gdprScope\n };\n if (cmpConsentObject && cmpConsentObject.addtlConsent && isStr(cmpConsentObject.addtlConsent)) {\n consentData.addtlConsent = cmpConsentObject.addtlConsent;\n }\n consentData.apiVersion = CMP_VERSION;\n return consentData;\n}\n\n/**\n * Simply resets the module's consentData variable back to undefined, mainly for testing purposes\n */\nexport function resetConsentData() {\n consentData = undefined;\n userCMP = undefined;\n consentTimeout = undefined;\n gdprDataHandler.reset();\n}\n\n/**\n * A configuration function that initializes some module variables, as well as add a hook into the requestBids function\n * @param {{cmp:string, timeout:number, allowAuctionWithoutConsent:boolean, defaultGdprScope:boolean}} config required; consentManagement module config settings; cmp (string), timeout (int), allowAuctionWithoutConsent (boolean)\n */\nexport function setConsentConfig(config) {\n // if `config.gdpr`, `config.usp` or `config.gpp` exist, assume new config format.\n // else for backward compatability, just use `config`\n config = config && (config.gdpr || config.usp || config.gpp ? config.gdpr : config);\n if (!config || typeof config !== 'object') {\n logWarn('consentManagement (gdpr) config not defined, exiting consent manager');\n return;\n }\n if (isStr(config.cmpApi)) {\n userCMP = config.cmpApi;\n } else {\n userCMP = DEFAULT_CMP;\n logInfo(`consentManagement config did not specify cmp. Using system default setting (${DEFAULT_CMP}).`);\n }\n\n if (isNumber(config.timeout)) {\n consentTimeout = config.timeout;\n } else {\n consentTimeout = DEFAULT_CONSENT_TIMEOUT;\n logInfo(`consentManagement config did not specify timeout. Using system default setting (${DEFAULT_CONSENT_TIMEOUT}).`);\n }\n\n actionTimeout = isNumber(config.actionTimeout) ? config.actionTimeout : null;\n\n // if true, then gdprApplies should be set to true\n gdprScope = config.defaultGdprScope === true;\n\n logInfo('consentManagement module has been activated...');\n\n if (userCMP === 'static') {\n if (isPlainObject(config.consentData)) {\n staticConsentData = config.consentData;\n if (staticConsentData?.getTCData != null) {\n // accept static config with or without `getTCData` - see https://github.com/prebid/Prebid.js/issues/9581\n staticConsentData = staticConsentData.getTCData;\n }\n consentTimeout = 0;\n } else {\n logError(`consentManagement config with cmpApi: 'static' did not specify consentData. No consents will be available to adapters.`);\n }\n }\n if (!addedConsentHook) {\n getGlobal().requestBids.before(requestBidsHook, 50);\n }\n addedConsentHook = true;\n gdprDataHandler.enable();\n loadConsentData(); // immediately look up consent data to make it available without requiring an auction\n}\nconfig.getConfig('consentManagement', config => setConsentConfig(config.consentManagement));\n\nexport function enrichFPDHook(next, fpd) {\n return next(fpd.then(ortb2 => {\n const consent = gdprDataHandler.getConsentData();\n if (consent) {\n if (typeof consent.gdprApplies === 'boolean') {\n deepSetValue(ortb2, 'regs.ext.gdpr', consent.gdprApplies ? 1 : 0);\n }\n deepSetValue(ortb2, 'user.ext.consent', consent.consentString);\n }\n return ortb2;\n }));\n}\n\nenrichFPD.before(enrichFPDHook);\n\nexport function setOrtbAdditionalConsent(ortbRequest, bidderRequest) {\n // this is not a standardized name for addtlConsent, so keep this as an ORTB library processor rather than an FPD enrichment\n const addtl = bidderRequest.gdprConsent?.addtlConsent;\n if (addtl && typeof addtl === 'string') {\n deepSetValue(ortbRequest, 'user.ext.ConsentedProvidersSettings.consented_providers', addtl);\n }\n}\n\nregisterOrtbProcessor({type: REQUEST, name: 'gdprAddtlConsent', fn: setOrtbAdditionalConsent})\n","/**\n * This module sets default values and validates ortb2 first part data\n * @module modules/firstPartyData\n */\nimport { config } from '../../src/config.js';\nimport { module, getHook } from '../../src/hook.js';\nimport {logError} from '../../src/utils.js';\nimport {GreedyPromise} from '../../src/utils/promise.js';\nimport {timedAuctionHook} from '../../src/utils/perfMetrics.js';\n\nlet submodules = [];\n\nexport function registerSubmodules(submodule) {\n submodules.push(submodule);\n}\n\nexport function reset() {\n submodules.length = 0;\n}\n\nexport function processFpd({global = {}, bidder = {}} = {}) {\n let modConf = config.getConfig('firstPartyData') || {};\n let result = GreedyPromise.resolve({global, bidder});\n submodules.sort((a, b) => {\n return ((a.queue || 1) - (b.queue || 1));\n }).forEach(submodule => {\n result = result.then(\n ({global, bidder}) => GreedyPromise.resolve(submodule.processFpd(modConf, {global, bidder}))\n .catch((err) => {\n logError(`Error in FPD module ${submodule.name}`, err);\n return {};\n })\n .then((result) => ({global: result.global || global, bidder: result.bidder || bidder}))\n );\n });\n return result;\n}\n\nexport const startAuctionHook = timedAuctionHook('fpd', function startAuctionHook(fn, req) {\n processFpd(req.ortb2Fragments).then((ortb2Fragments) => {\n Object.assign(req.ortb2Fragments, ortb2Fragments);\n fn.call(this, req);\n })\n});\n\nfunction setupHook() {\n getHook('startAuction').before(startAuctionHook, 10);\n}\n\nmodule('firstPartyData', registerSubmodules);\n\n// Runs setupHook on initial load\nsetupHook();\n","/**\n * This module gives publishers extra set of features to enforce individual purposes of TCF v2\n */\n\nimport {deepAccess, logError, logWarn} from '../src/utils.js';\nimport {config} from '../src/config.js';\nimport adapterManager, {gdprDataHandler} from '../src/adapterManager.js';\nimport {find} from '../src/polyfill.js';\nimport * as events from '../src/events.js';\nimport CONSTANTS from '../src/constants.json';\nimport {GDPR_GVLIDS, VENDORLESS_GVLID} from '../src/consentHandler.js';\nimport {\n MODULE_TYPE_ANALYTICS,\n MODULE_TYPE_BIDDER,\n MODULE_TYPE_PREBID,\n MODULE_TYPE_RTD,\n MODULE_TYPE_UID\n} from '../src/activities/modules.js';\nimport {\n ACTIVITY_PARAM_ANL_CONFIG,\n ACTIVITY_PARAM_COMPONENT_NAME,\n ACTIVITY_PARAM_COMPONENT_TYPE\n} from '../src/activities/params.js';\nimport {registerActivityControl} from '../src/activities/rules.js';\nimport {\n ACTIVITY_ACCESS_DEVICE,\n ACTIVITY_ENRICH_EIDS, ACTIVITY_ENRICH_UFPD,\n ACTIVITY_FETCH_BIDS,\n ACTIVITY_REPORT_ANALYTICS,\n ACTIVITY_SYNC_USER, ACTIVITY_TRANSMIT_UFPD\n} from '../src/activities/activities.js';\n\nexport const STRICT_STORAGE_ENFORCEMENT = 'strictStorageEnforcement';\n\nconst TCF2 = {\n purpose1: {id: 1, name: 'storage'},\n purpose2: {id: 2, name: 'basicAds'},\n purpose4: {id: 4, name: 'personalizedAds'},\n purpose7: {id: 7, name: 'measurement'},\n};\n\n/*\n These rules would be used if `consentManagement.gdpr.rules` is undefined by the publisher.\n*/\nconst DEFAULT_RULES = [{\n purpose: 'storage',\n enforcePurpose: true,\n enforceVendor: true,\n vendorExceptions: []\n}, {\n purpose: 'basicAds',\n enforcePurpose: true,\n enforceVendor: true,\n vendorExceptions: []\n}];\n\nexport let purpose1Rule;\nexport let purpose2Rule;\nexport let purpose4Rule;\nexport let purpose7Rule;\n\nexport let enforcementRules;\n\nconst storageBlocked = new Set();\nconst biddersBlocked = new Set();\nconst analyticsBlocked = new Set();\nconst ufpdBlocked = new Set();\n\nlet hooksAdded = false;\nlet strictStorageEnforcement = false;\n\nconst GVLID_LOOKUP_PRIORITY = [\n MODULE_TYPE_BIDDER,\n MODULE_TYPE_UID,\n MODULE_TYPE_ANALYTICS,\n MODULE_TYPE_RTD\n];\n\nconst RULE_NAME = 'TCF2';\nconst RULE_HANDLES = [];\n\n/**\n * Retrieve a module's GVL ID.\n */\nexport function getGvlid(moduleType, moduleName, fallbackFn) {\n if (moduleName) {\n // Check user defined GVL Mapping in pbjs.setConfig()\n const gvlMapping = config.getConfig('gvlMapping');\n\n // Return GVL ID from user defined gvlMapping\n if (gvlMapping && gvlMapping[moduleName]) {\n return gvlMapping[moduleName];\n } else if (moduleType === MODULE_TYPE_PREBID) {\n return VENDORLESS_GVLID;\n } else {\n let {gvlid, modules} = GDPR_GVLIDS.get(moduleName);\n if (gvlid == null && Object.keys(modules).length > 0) {\n // this behavior is for backwards compatibility; if multiple modules with the same\n // name declare different GVL IDs, pick the bidder's first, then userId, then analytics\n for (const type of GVLID_LOOKUP_PRIORITY) {\n if (modules.hasOwnProperty(type)) {\n gvlid = modules[type];\n if (type !== moduleType) {\n logWarn(`Multiple GVL IDs found for module '${moduleName}'; using the ${type} module's ID (${gvlid}) instead of the ${moduleType}'s ID (${modules[moduleType]})`);\n }\n break;\n }\n }\n }\n if (gvlid == null && fallbackFn) {\n gvlid = fallbackFn();\n }\n return gvlid || null;\n }\n }\n return null;\n}\n\n/**\n * Retrieve GVL IDs that are dynamically set on analytics adapters.\n */\nexport function getGvlidFromAnalyticsAdapter(code, config) {\n const adapter = adapterManager.getAnalyticsAdapter(code);\n return ((gvlid) => {\n if (typeof gvlid !== 'function') return gvlid;\n try {\n return gvlid.call(adapter.adapter, config);\n } catch (e) {\n logError(`Error invoking ${code} adapter.gvlid()`, e);\n }\n })(adapter?.adapter?.gvlid);\n}\n\nexport function shouldEnforce(consentData, purpose, name) {\n if (consentData == null && gdprDataHandler.enabled) {\n // there is no consent data, but the GDPR module has been installed and configured\n // NOTE: this check is not foolproof, as when Prebid first loads, enforcement hooks have not been attached yet\n // This piece of code would not run at all, and `gdprDataHandler.enabled` would be false, until the first\n // `setConfig({consentManagement})`\n logWarn(`Attempting operation that requires purpose ${purpose} consent while consent data is not available${name ? ` (module: ${name})` : ''}. Assuming no consent was given.`);\n return true;\n }\n return consentData && consentData.gdprApplies;\n}\n\n/**\n * This function takes in a rule and consentData and validates against the consentData provided. Depending on what it returns,\n * the caller may decide to suppress a TCF-sensitive activity.\n * @param {Object} rule - enforcement rules set in config\n * @param {Object} consentData - gdpr consent data\n * @param {string=} currentModule - Bidder code of the current module\n * @param {number=} gvlId - GVL ID for the module\n * @returns {boolean}\n */\nexport function validateRules(rule, consentData, currentModule, gvlId) {\n const purposeId = TCF2[Object.keys(TCF2).filter(purposeName => TCF2[purposeName].name === rule.purpose)[0]].id;\n\n // return 'true' if vendor present in 'vendorExceptions'\n if ((rule.vendorExceptions || []).includes(currentModule)) {\n return true;\n }\n const vendorConsentRequred = rule.enforceVendor && !((gvlId === VENDORLESS_GVLID || (rule.softVendorExceptions || []).includes(currentModule)));\n\n let purposeAllowed = !rule.enforcePurpose || !!deepAccess(consentData, `vendorData.purpose.consents.${purposeId}`);\n let vendorAllowed = !vendorConsentRequred || !!deepAccess(consentData, `vendorData.vendor.consents.${gvlId}`);\n\n if (purposeId === 2) {\n purposeAllowed ||= !!deepAccess(consentData, `vendorData.purpose.legitimateInterests.${purposeId}`);\n vendorAllowed ||= !!deepAccess(consentData, `vendorData.vendor.legitimateInterests.${gvlId}`);\n }\n\n return purposeAllowed && vendorAllowed;\n}\n\n/**\n * all activity rules follow the same structure:\n * if GDPR is in scope, check configuration for a particular purpose, and if that enables enforcement,\n * check against consent data for that purpose and vendor\n *\n * @param purposeNo TCF purpose number to check for this activity\n * @param getEnforcementRule getter for gdprEnforcement rule definition to use\n * @param blocked optional set to use for collecting denied vendors\n * @param gvlidFallback optional factory function for a gvlid falllback function\n */\nfunction gdprRule(purposeNo, getEnforcementRule, blocked = null, gvlidFallback = () => null) {\n return function (params) {\n const consentData = gdprDataHandler.getConsentData();\n const modName = params[ACTIVITY_PARAM_COMPONENT_NAME];\n if (shouldEnforce(consentData, purposeNo, modName)) {\n const gvlid = getGvlid(params[ACTIVITY_PARAM_COMPONENT_TYPE], modName, gvlidFallback(params));\n let allow = !!validateRules(getEnforcementRule(), consentData, modName, gvlid);\n if (!allow) {\n blocked && blocked.add(modName);\n return {allow};\n }\n }\n };\n}\n\nexport const accessDeviceRule = ((rule) => {\n return function (params) {\n // for vendorless (core) storage, do not enforce rules unless strictStorageEnforcement is set\n if (params[ACTIVITY_PARAM_COMPONENT_TYPE] === MODULE_TYPE_PREBID && !strictStorageEnforcement) return;\n return rule(params);\n };\n})(gdprRule(1, () => purpose1Rule, storageBlocked));\n\nexport const syncUserRule = gdprRule(1, () => purpose1Rule, storageBlocked);\nexport const enrichEidsRule = gdprRule(1, () => purpose1Rule, storageBlocked);\n\nexport const fetchBidsRule = ((rule) => {\n return function (params) {\n if (params[ACTIVITY_PARAM_COMPONENT_TYPE] !== MODULE_TYPE_BIDDER) {\n // TODO: this special case is for the PBS adapter (componentType is 'prebid')\n // we should check for generic purpose 2 consent & vendor consent based on the PBS vendor's GVL ID;\n // that is, however, a breaking change and skipped for now\n return;\n }\n return rule(params);\n };\n})(gdprRule(2, () => purpose2Rule, biddersBlocked));\n\nexport const reportAnalyticsRule = gdprRule(7, () => purpose7Rule, analyticsBlocked, (params) => getGvlidFromAnalyticsAdapter(params[ACTIVITY_PARAM_COMPONENT_NAME], params[ACTIVITY_PARAM_ANL_CONFIG]));\n\nexport const ufpdRule = gdprRule(4, () => purpose4Rule, ufpdBlocked);\n\n/**\n * Compiles the TCF2.0 enforcement results into an object, which is emitted as an event payload to \"tcf2Enforcement\" event.\n */\nfunction emitTCF2FinalResults() {\n // remove null and duplicate values\n const formatSet = function (st) {\n return Array.from(st.keys()).filter(el => el != null);\n };\n const tcf2FinalResults = {\n storageBlocked: formatSet(storageBlocked),\n biddersBlocked: formatSet(biddersBlocked),\n analyticsBlocked: formatSet(analyticsBlocked),\n ufpdBlocked: formatSet(ufpdBlocked),\n };\n\n events.emit(CONSTANTS.EVENTS.TCF2_ENFORCEMENT, tcf2FinalResults);\n [storageBlocked, biddersBlocked, analyticsBlocked, ufpdBlocked].forEach(el => el.clear());\n}\n\nevents.on(CONSTANTS.EVENTS.AUCTION_END, emitTCF2FinalResults);\n\nfunction hasPurpose(purposeNo) {\n const pname = TCF2[`purpose${purposeNo}`].name;\n return (rule) => rule.purpose === pname;\n}\n\n/**\n * A configuration function that initializes some module variables, as well as adds hooks\n * @param {Object} config - GDPR enforcement config object\n */\nexport function setEnforcementConfig(config) {\n const rules = deepAccess(config, 'gdpr.rules');\n if (!rules) {\n logWarn('TCF2: enforcing P1 and P2 by default');\n enforcementRules = DEFAULT_RULES;\n } else {\n enforcementRules = rules;\n }\n strictStorageEnforcement = !!deepAccess(config, STRICT_STORAGE_ENFORCEMENT);\n\n purpose1Rule = find(enforcementRules, hasPurpose(1));\n purpose2Rule = find(enforcementRules, hasPurpose(2));\n purpose4Rule = find(enforcementRules, hasPurpose(4))\n purpose7Rule = find(enforcementRules, hasPurpose(7));\n\n if (!purpose1Rule) {\n purpose1Rule = DEFAULT_RULES[0];\n }\n\n if (!purpose2Rule) {\n purpose2Rule = DEFAULT_RULES[1];\n }\n\n if (!hooksAdded) {\n if (purpose1Rule) {\n hooksAdded = true;\n RULE_HANDLES.push(registerActivityControl(ACTIVITY_ACCESS_DEVICE, RULE_NAME, accessDeviceRule));\n RULE_HANDLES.push(registerActivityControl(ACTIVITY_SYNC_USER, RULE_NAME, syncUserRule));\n RULE_HANDLES.push(registerActivityControl(ACTIVITY_ENRICH_EIDS, RULE_NAME, enrichEidsRule));\n }\n if (purpose2Rule) {\n RULE_HANDLES.push(registerActivityControl(ACTIVITY_FETCH_BIDS, RULE_NAME, fetchBidsRule));\n }\n if (purpose4Rule) {\n RULE_HANDLES.push(\n registerActivityControl(ACTIVITY_TRANSMIT_UFPD, RULE_NAME, ufpdRule),\n registerActivityControl(ACTIVITY_ENRICH_UFPD, RULE_NAME, ufpdRule)\n );\n }\n if (purpose7Rule) {\n RULE_HANDLES.push(registerActivityControl(ACTIVITY_REPORT_ANALYTICS, RULE_NAME, reportAnalyticsRule));\n }\n }\n}\n\nexport function uninstall() {\n while (RULE_HANDLES.length) RULE_HANDLES.pop()();\n hooksAdded = false;\n}\n\nconfig.getConfig('consentManagement', config => setEnforcementConfig(config.consentManagement));\n","import {\n deepAccess,\n isAdUnitCodeMatchingSlot,\n isGptPubadsDefined,\n logInfo,\n pick,\n deepSetValue\n} from '../src/utils.js';\nimport {config} from '../src/config.js';\nimport {getHook} from '../src/hook.js';\nimport {find} from '../src/polyfill.js';\n\nconst MODULE_NAME = 'GPT Pre-Auction';\nexport let _currentConfig = {};\nlet hooksAdded = false;\n\nexport const appendGptSlots = adUnits => {\n const { customGptSlotMatching } = _currentConfig;\n\n if (!isGptPubadsDefined()) {\n return;\n }\n\n const adUnitMap = adUnits.reduce((acc, adUnit) => {\n acc[adUnit.code] = acc[adUnit.code] || [];\n acc[adUnit.code].push(adUnit);\n return acc;\n }, {});\n\n window.googletag.pubads().getSlots().forEach(slot => {\n const matchingAdUnitCode = find(Object.keys(adUnitMap), customGptSlotMatching\n ? customGptSlotMatching(slot)\n : isAdUnitCodeMatchingSlot(slot));\n\n if (matchingAdUnitCode) {\n const adserver = {\n name: 'gam',\n adslot: sanitizeSlotPath(slot.getAdUnitPath())\n };\n adUnitMap[matchingAdUnitCode].forEach((adUnit) => {\n deepSetValue(adUnit, 'ortb2Imp.ext.data.adserver', Object.assign({}, adUnit.ortb2Imp?.ext?.data?.adserver, adserver));\n });\n }\n });\n};\n\nconst sanitizeSlotPath = (path) => {\n const gptConfig = config.getConfig('gptPreAuction') || {};\n\n if (gptConfig.mcmEnabled) {\n return path.replace(/(^\\/\\d*),\\d*\\//, '$1/');\n }\n\n return path;\n}\n\nconst defaultPreAuction = (adUnit, adServerAdSlot) => {\n const context = adUnit.ortb2Imp.ext.data;\n\n // use pbadslot if supplied\n if (context.pbadslot) {\n return context.pbadslot;\n }\n\n // confirm that GPT is set up\n if (!isGptPubadsDefined()) {\n return;\n }\n\n // find all GPT slots with this name\n var gptSlots = window.googletag.pubads().getSlots().filter(slot => slot.getAdUnitPath() === adServerAdSlot);\n\n if (gptSlots.length === 0) {\n return; // should never happen\n }\n\n if (gptSlots.length === 1) {\n return adServerAdSlot;\n }\n\n // else the adunit code must be div id. append it.\n return `${adServerAdSlot}#${adUnit.code}`;\n}\n\nexport const appendPbAdSlot = adUnit => {\n const context = adUnit.ortb2Imp.ext.data;\n const { customPbAdSlot } = _currentConfig;\n\n // use context.pbAdSlot if set (if someone set it already, it will take precedence over others)\n if (context.pbadslot) {\n return;\n }\n\n if (customPbAdSlot) {\n context.pbadslot = customPbAdSlot(adUnit.code, deepAccess(context, 'adserver.adslot'));\n return;\n }\n\n // use data attribute 'data-adslotid' if set\n try {\n const adUnitCodeDiv = document.getElementById(adUnit.code);\n if (adUnitCodeDiv.dataset.adslotid) {\n context.pbadslot = adUnitCodeDiv.dataset.adslotid;\n return;\n }\n } catch (e) {}\n // banner adUnit, use GPT adunit if defined\n if (deepAccess(context, 'adserver.adslot')) {\n context.pbadslot = context.adserver.adslot;\n return;\n }\n context.pbadslot = adUnit.code;\n return true;\n};\n\nexport const makeBidRequestsHook = (fn, adUnits, ...args) => {\n appendGptSlots(adUnits);\n const { useDefaultPreAuction, customPreAuction } = _currentConfig;\n adUnits.forEach(adUnit => {\n // init the ortb2Imp if not done yet\n adUnit.ortb2Imp = adUnit.ortb2Imp || {};\n adUnit.ortb2Imp.ext = adUnit.ortb2Imp.ext || {};\n adUnit.ortb2Imp.ext.data = adUnit.ortb2Imp.ext.data || {};\n const context = adUnit.ortb2Imp.ext;\n\n // if neither new confs set do old stuff\n if (!customPreAuction && !useDefaultPreAuction) {\n const usedAdUnitCode = appendPbAdSlot(adUnit);\n // gpid should be set to itself if already set, or to what pbadslot was (as long as it was not adUnit code)\n if (!context.gpid && !usedAdUnitCode) {\n context.gpid = context.data.pbadslot;\n }\n } else {\n let adserverSlot = deepAccess(context, 'data.adserver.adslot');\n let result;\n if (customPreAuction) {\n result = customPreAuction(adUnit, adserverSlot);\n } else if (useDefaultPreAuction) {\n result = defaultPreAuction(adUnit, adserverSlot);\n }\n if (result) {\n context.gpid = context.data.pbadslot = result;\n }\n }\n });\n return fn.call(this, adUnits, ...args);\n};\n\nconst handleSetGptConfig = moduleConfig => {\n _currentConfig = pick(moduleConfig, [\n 'enabled', enabled => enabled !== false,\n 'customGptSlotMatching', customGptSlotMatching =>\n typeof customGptSlotMatching === 'function' && customGptSlotMatching,\n 'customPbAdSlot', customPbAdSlot => typeof customPbAdSlot === 'function' && customPbAdSlot,\n 'customPreAuction', customPreAuction => typeof customPreAuction === 'function' && customPreAuction,\n 'useDefaultPreAuction', useDefaultPreAuction => useDefaultPreAuction === true,\n ]);\n\n if (_currentConfig.enabled) {\n if (!hooksAdded) {\n getHook('makeBidRequests').before(makeBidRequestsHook);\n hooksAdded = true;\n }\n } else {\n logInfo(`${MODULE_NAME}: Turning off module`);\n _currentConfig = {};\n getHook('makeBidRequests').getHooks({hook: makeBidRequestsHook}).remove();\n hooksAdded = false;\n }\n};\n\nconfig.getConfig('gptPreAuction', config => handleSetGptConfig(config.gptPreAuction));\nhandleSetGptConfig({});\n","import {logError, logInfo, logMessage, logWarn} from '../src/utils.js';\nimport {getGlobal} from '../src/prebidGlobal.js';\nimport CONSTANTS from '../src/constants.json';\nimport {ajax} from '../src/ajax.js';\nimport {config} from '../src/config.js';\nimport {getHook} from '../src/hook.js';\nimport {defer} from '../src/utils/promise.js';\nimport {registerOrtbProcessor, REQUEST} from '../src/pbjsORTB.js';\nimport {timedBidResponseHook} from '../src/utils/perfMetrics.js';\n\nconst DEFAULT_CURRENCY_RATE_URL = 'https://cdn.jsdelivr.net/gh/prebid/currency-file@1/latest.json?date=$$TODAY$$';\nconst CURRENCY_RATE_PRECISION = 4;\n\nvar bidResponseQueue = [];\nvar conversionCache = {};\nvar currencyRatesLoaded = false;\nvar needToCallForCurrencyFile = true;\nvar adServerCurrency = 'USD';\n\nexport var currencySupportEnabled = false;\nexport var currencyRates = {};\nvar bidderCurrencyDefault = {};\nvar defaultRates;\n\nexport const ready = (() => {\n let ctl;\n function reset() {\n ctl = defer();\n }\n reset();\n return {done: () => ctl.resolve(), reset, promise: () => ctl.promise}\n})();\n\n/**\n * Configuration function for currency\n * @param {string} [config.adServerCurrency = 'USD']\n * ISO 4217 3-letter currency code that represents the target currency. (e.g. 'EUR'). If this value is present,\n * the currency conversion feature is activated.\n * @param {number} [config.granularityMultiplier = 1]\n * A decimal value representing how mcuh to scale the price granularity calculations.\n * @param {object} config.bidderCurrencyDefault\n * An optional argument to specify bid currencies for bid adapters. This option is provided for the transitional phase\n * before every bid adapter will specify its own bid currency. If the adapter specifies a bid currency, this value is\n * ignored for that bidder.\n *\n * example:\n * {\n * rubicon: 'USD'\n * }\n * @param {string} [config.conversionRateFile = 'URL pointing to conversion file']\n * Optional path to a file containing currency conversion data. Prebid.org hosts a file that is used as the default,\n * if not specified.\n * @param {object} [config.rates]\n * This optional argument allows you to specify the rates with a JSON object, subverting the need for a external\n * config.conversionRateFile parameter. If this argument is specified, the conversion rate file will not be loaded.\n *\n * example:\n * {\n * 'GBP': { 'CNY': 8.8282, 'JPY': 141.7, 'USD': 1.2824 },\n * 'USD': { 'CNY': 6.8842, 'GBP': 0.7798, 'JPY': 110.49 }\n * }\n * @param {object} [config.defaultRates]\n * This optional currency rates definition follows the same format as config.rates, however it is only utilized if\n * there is an error loading the config.conversionRateFile.\n */\nexport function setConfig(config) {\n let url = DEFAULT_CURRENCY_RATE_URL;\n\n if (typeof config.rates === 'object') {\n currencyRates.conversions = config.rates;\n currencyRatesLoaded = true;\n needToCallForCurrencyFile = false; // don't call if rates are already specified\n }\n\n if (typeof config.defaultRates === 'object') {\n defaultRates = config.defaultRates;\n\n // set up the default rates to be used if the rate file doesn't get loaded in time\n currencyRates.conversions = defaultRates;\n currencyRatesLoaded = true;\n }\n\n if (typeof config.adServerCurrency === 'string') {\n logInfo('enabling currency support', arguments);\n\n adServerCurrency = config.adServerCurrency;\n if (config.conversionRateFile) {\n logInfo('currency using override conversionRateFile:', config.conversionRateFile);\n url = config.conversionRateFile;\n }\n\n // see if the url contains a date macro\n // this is a workaround to the fact that jsdelivr doesn't currently support setting a 24-hour HTTP cache header\n // So this is an approach to let the browser cache a copy of the file each day\n // We should remove the macro once the CDN support a day-level HTTP cache setting\n const macroLocation = url.indexOf('$$TODAY$$');\n if (macroLocation !== -1) {\n // get the date to resolve the macro\n const d = new Date();\n let month = `${d.getMonth() + 1}`;\n let day = `${d.getDate()}`;\n if (month.length < 2) month = `0${month}`;\n if (day.length < 2) day = `0${day}`;\n const todaysDate = `${d.getFullYear()}${month}${day}`;\n\n // replace $$TODAY$$ with todaysDate\n url = `${url.substring(0, macroLocation)}${todaysDate}${url.substring(macroLocation + 9, url.length)}`;\n }\n\n initCurrency(url);\n } else {\n // currency support is disabled, setting defaults\n logInfo('disabling currency support');\n resetCurrency();\n }\n if (typeof config.bidderCurrencyDefault === 'object') {\n bidderCurrencyDefault = config.bidderCurrencyDefault;\n }\n}\nconfig.getConfig('currency', config => setConfig(config.currency));\n\nfunction errorSettingsRates(msg) {\n if (defaultRates) {\n logWarn(msg);\n logWarn('Currency failed loading rates, falling back to currency.defaultRates');\n } else {\n logError(msg);\n }\n}\n\nfunction initCurrency(url) {\n conversionCache = {};\n currencySupportEnabled = true;\n\n logInfo('Installing addBidResponse decorator for currency module', arguments);\n\n // Adding conversion function to prebid global for external module and on page use\n getGlobal().convertCurrency = (cpm, fromCurrency, toCurrency) => parseFloat(cpm) * getCurrencyConversion(fromCurrency, toCurrency);\n getHook('addBidResponse').before(addBidResponseHook, 100);\n\n // call for the file if we haven't already\n if (needToCallForCurrencyFile) {\n needToCallForCurrencyFile = false;\n ajax(url,\n {\n success: function (response) {\n try {\n currencyRates = JSON.parse(response);\n logInfo('currencyRates set to ' + JSON.stringify(currencyRates));\n conversionCache = {};\n currencyRatesLoaded = true;\n processBidResponseQueue();\n ready.done();\n } catch (e) {\n errorSettingsRates('Failed to parse currencyRates response: ' + response);\n }\n },\n error: function (...args) {\n errorSettingsRates(...args);\n ready.done();\n }\n }\n );\n } else {\n ready.done();\n }\n}\n\nfunction resetCurrency() {\n logInfo('Uninstalling addBidResponse decorator for currency module', arguments);\n\n getHook('addBidResponse').getHooks({hook: addBidResponseHook}).remove();\n delete getGlobal().convertCurrency;\n\n adServerCurrency = 'USD';\n conversionCache = {};\n currencySupportEnabled = false;\n currencyRatesLoaded = false;\n needToCallForCurrencyFile = true;\n currencyRates = {};\n bidderCurrencyDefault = {};\n}\n\nexport const addBidResponseHook = timedBidResponseHook('currency', function addBidResponseHook(fn, adUnitCode, bid, reject) {\n if (!bid) {\n return fn.call(this, adUnitCode, bid, reject); // if no bid, call original and let it display warnings\n }\n\n let bidder = bid.bidderCode || bid.bidder;\n if (bidderCurrencyDefault[bidder]) {\n let currencyDefault = bidderCurrencyDefault[bidder];\n if (bid.currency && currencyDefault !== bid.currency) {\n logWarn(`Currency default '${bidder}: ${currencyDefault}' ignored. adapter specified '${bid.currency}'`);\n } else {\n bid.currency = currencyDefault;\n }\n }\n\n // default to USD if currency not set\n if (!bid.currency) {\n logWarn('Currency not specified on bid. Defaulted to \"USD\"');\n bid.currency = 'USD';\n }\n\n // used for analytics\n bid.getCpmInNewCurrency = function(toCurrency) {\n return (parseFloat(this.cpm) * getCurrencyConversion(this.currency, toCurrency)).toFixed(3);\n };\n\n // execute immediately if the bid is already in the desired currency\n if (bid.currency === adServerCurrency) {\n return fn.call(this, adUnitCode, bid, reject);\n }\n\n bidResponseQueue.push(wrapFunction(fn, this, [adUnitCode, bid, reject]));\n if (!currencySupportEnabled || currencyRatesLoaded) {\n processBidResponseQueue();\n } else {\n fn.untimed.bail(ready.promise());\n }\n});\n\nfunction processBidResponseQueue() {\n while (bidResponseQueue.length > 0) {\n (bidResponseQueue.shift())();\n }\n}\n\nfunction wrapFunction(fn, context, params) {\n return function() {\n let bid = params[1];\n if (bid !== undefined && 'currency' in bid && 'cpm' in bid) {\n let fromCurrency = bid.currency;\n try {\n let conversion = getCurrencyConversion(fromCurrency);\n if (conversion !== 1) {\n bid.cpm = (parseFloat(bid.cpm) * conversion).toFixed(4);\n bid.currency = adServerCurrency;\n }\n } catch (e) {\n logWarn('getCurrencyConversion threw error: ', e);\n params[2](CONSTANTS.REJECTION_REASON.CANNOT_CONVERT_CURRENCY);\n return;\n }\n }\n return fn.apply(context, params);\n };\n}\n\nfunction getCurrencyConversion(fromCurrency, toCurrency = adServerCurrency) {\n var conversionRate = null;\n var rates;\n let cacheKey = `${fromCurrency}->${toCurrency}`;\n if (cacheKey in conversionCache) {\n conversionRate = conversionCache[cacheKey];\n logMessage('Using conversionCache value ' + conversionRate + ' for ' + cacheKey);\n } else if (currencySupportEnabled === false) {\n if (fromCurrency === 'USD') {\n conversionRate = 1;\n } else {\n throw new Error('Prebid currency support has not been enabled and fromCurrency is not USD');\n }\n } else if (fromCurrency === toCurrency) {\n conversionRate = 1;\n } else {\n if (fromCurrency in currencyRates.conversions) {\n // using direct conversion rate from fromCurrency to toCurrency\n rates = currencyRates.conversions[fromCurrency];\n if (!(toCurrency in rates)) {\n // bid should fail, currency is not supported\n throw new Error('Specified adServerCurrency in config \\'' + toCurrency + '\\' not found in the currency rates file');\n }\n conversionRate = rates[toCurrency];\n logInfo('getCurrencyConversion using direct ' + fromCurrency + ' to ' + toCurrency + ' conversionRate ' + conversionRate);\n } else if (toCurrency in currencyRates.conversions) {\n // using reciprocal of conversion rate from toCurrency to fromCurrency\n rates = currencyRates.conversions[toCurrency];\n if (!(fromCurrency in rates)) {\n // bid should fail, currency is not supported\n throw new Error('Specified fromCurrency \\'' + fromCurrency + '\\' not found in the currency rates file');\n }\n conversionRate = roundFloat(1 / rates[fromCurrency], CURRENCY_RATE_PRECISION);\n logInfo('getCurrencyConversion using reciprocal ' + fromCurrency + ' to ' + toCurrency + ' conversionRate ' + conversionRate);\n } else {\n // first defined currency base used as intermediary\n var anyBaseCurrency = Object.keys(currencyRates.conversions)[0];\n\n if (!(fromCurrency in currencyRates.conversions[anyBaseCurrency])) {\n // bid should fail, currency is not supported\n throw new Error('Specified fromCurrency \\'' + fromCurrency + '\\' not found in the currency rates file');\n }\n var toIntermediateConversionRate = 1 / currencyRates.conversions[anyBaseCurrency][fromCurrency];\n\n if (!(toCurrency in currencyRates.conversions[anyBaseCurrency])) {\n // bid should fail, currency is not supported\n throw new Error('Specified adServerCurrency in config \\'' + toCurrency + '\\' not found in the currency rates file');\n }\n var fromIntermediateConversionRate = currencyRates.conversions[anyBaseCurrency][toCurrency];\n\n conversionRate = roundFloat(toIntermediateConversionRate * fromIntermediateConversionRate, CURRENCY_RATE_PRECISION);\n logInfo('getCurrencyConversion using intermediate ' + fromCurrency + ' thru ' + anyBaseCurrency + ' to ' + toCurrency + ' conversionRate ' + conversionRate);\n }\n }\n if (!(cacheKey in conversionCache)) {\n logMessage('Adding conversionCache value ' + conversionRate + ' for ' + cacheKey);\n conversionCache[cacheKey] = conversionRate;\n }\n return conversionRate;\n}\n\nfunction roundFloat(num, dec) {\n var d = 1;\n for (let i = 0; i < dec; i++) {\n d += '0';\n }\n return Math.round(num * d) / d;\n}\n\nexport function setOrtbCurrency(ortbRequest, bidderRequest, context) {\n if (currencySupportEnabled) {\n ortbRequest.cur = ortbRequest.cur || [context.currency || adServerCurrency];\n }\n}\n\nregisterOrtbProcessor({type: REQUEST, name: 'currency', fn: setOrtbCurrency});\n","// Logic from this module was moved into core since approx. 7.27\n// TODO: remove this in v8\n","/**\n * This module adds brandmetrics provider to the real time data module\n * The {@link module:modules/realTimeData} module is required\n * The module will load load the brandmetrics script and set survey- targeting to ad units of specific bidders.\n * @module modules/brandmetricsRtdProvider\n * @requires module:modules/realTimeData\n */\nimport {submodule} from '../src/hook.js';\nimport {deepAccess, deepSetValue, logError, mergeDeep, generateUUID} from '../src/utils.js';\nimport {loadExternalScript} from '../src/adloader.js';\nimport * as events from '../src/events.js';\nimport CONSTANTS from '../src/constants.json';\n\nconst MODULE_NAME = 'brandmetrics'\nconst MODULE_CODE = MODULE_NAME\nconst RECEIVED_EVENTS = []\nconst GVL_ID = 422\nconst TCF_PURPOSES = [1, 7]\n\nlet billableEventsInitialized = false\n\nfunction init (config, userConsent) {\n const hasConsent = checkConsent(userConsent)\n const initialize = hasConsent !== false\n\n if (initialize) {\n const moduleConfig = getMergedConfig(config)\n initializeBrandmetrics(moduleConfig.params.scriptId)\n initializeBillableEvents()\n }\n return initialize\n}\n\n/**\n * Checks TCF and USP consents\n * @param {Object} userConsent\n * @returns {boolean}\n */\nfunction checkConsent (userConsent) {\n let consent\n\n if (userConsent) {\n if (userConsent.gdpr && userConsent.gdpr.gdprApplies) {\n const gdpr = userConsent.gdpr\n\n if (gdpr.vendorData) {\n const vendor = gdpr.vendorData.vendor\n const purpose = gdpr.vendorData.purpose\n\n let vendorConsent = false\n if (vendor.consents) {\n vendorConsent = vendor.consents[GVL_ID]\n }\n\n if (vendor.legitimateInterests) {\n vendorConsent = vendorConsent || vendor.legitimateInterests[GVL_ID]\n }\n\n const purposes = TCF_PURPOSES.map(id => {\n return (purpose.consents && purpose.consents[id]) || (purpose.legitimateInterests && purpose.legitimateInterests[id])\n })\n const purposesValid = purposes.filter(p => p === true).length === TCF_PURPOSES.length\n consent = vendorConsent && purposesValid\n }\n } else if (userConsent.usp) {\n const usp = userConsent.usp\n consent = usp[1] !== 'N' && usp[2] !== 'Y'\n }\n }\n\n return consent\n}\n\n/**\n* Add event- listeners to hook in to brandmetrics events\n* @param {Object} reqBidsConfigObj\n* @param {function} callback\n*/\nfunction processBrandmetricsEvents (reqBidsConfigObj, moduleConfig, callback) {\n const callBidTargeting = (event) => {\n if (event.available && event.conf) {\n const targetingConf = event.conf.displayOption || {}\n if (targetingConf.type === 'pbjs') {\n setBidderTargeting(reqBidsConfigObj, moduleConfig, targetingConf.targetKey || 'brandmetrics_survey', event.survey.measurementId)\n }\n }\n callback()\n }\n\n if (RECEIVED_EVENTS.length > 0) {\n callBidTargeting(RECEIVED_EVENTS[RECEIVED_EVENTS.length - 1])\n } else {\n window._brandmetrics.push({\n cmd: '_addeventlistener',\n val: {\n event: 'surveyloaded',\n reEmitLast: true,\n handler: (ev) => {\n RECEIVED_EVENTS.push(ev)\n if (RECEIVED_EVENTS.length === 1) {\n // Call bid targeting only for the first received event, if called subsequently, last event from the RECEIVED_EVENTS array is used\n callBidTargeting(ev)\n }\n },\n }\n })\n }\n}\n\n/**\n * Sets bid targeting of specific bidders\n * @param {Object} reqBidsConfigObj\n * @param {string} key Targeting key\n * @param {string} val Targeting value\n */\nfunction setBidderTargeting (reqBidsConfigObj, moduleConfig, key, val) {\n const bidders = deepAccess(moduleConfig, 'params.bidders')\n if (bidders && bidders.length > 0) {\n bidders.forEach(bidder => {\n deepSetValue(reqBidsConfigObj, `ortb2Fragments.bidder.${bidder}.user.ext.data.${key}`, val);\n })\n }\n}\n\n/**\n * Add the brandmetrics script to the page.\n * @param {string} scriptId - The script- id provided by brandmetrics or brandmetrics partner\n */\nfunction initializeBrandmetrics(scriptId) {\n window._brandmetrics = window._brandmetrics || []\n\n if (scriptId) {\n const path = 'https://cdn.brandmetrics.com/survey/script/'\n const file = scriptId + '.js'\n const url = path + file\n\n loadExternalScript(url, MODULE_CODE)\n }\n}\n\n/**\n* Hook in to brandmetrics creative_in_view- event and emit billable- event for creatives measured by brandmetrics.\n*/\nfunction initializeBillableEvents() {\n if (!billableEventsInitialized) {\n window._brandmetrics.push({\n cmd: '_addeventlistener',\n val: {\n event: 'creative_in_view',\n handler: (ev) => {\n if (ev.source && ev.source.type === 'pbj') {\n const bid = ev.source.data;\n events.emit(CONSTANTS.EVENTS.BILLABLE_EVENT, {\n vendor: 'brandmetrics',\n type: 'creative_in_view',\n measurementId: ev.mid,\n billingId: generateUUID(),\n auctionId: bid.auctionId,\n transactionId: bid.transactionId,\n });\n }\n },\n }\n })\n billableEventsInitialized = true\n }\n}\n\n/**\n * Merges a provided config with default values\n * @param {Object} customConfig\n * @returns\n */\nfunction getMergedConfig(customConfig) {\n return mergeDeep({\n waitForIt: false,\n params: {\n bidders: [],\n scriptId: undefined,\n }\n }, customConfig)\n}\n\n/** @type {RtdSubmodule} */\nexport const brandmetricsSubmodule = {\n name: MODULE_NAME,\n getBidRequestData: function (reqBidsConfigObj, callback, customConfig) {\n try {\n const moduleConfig = getMergedConfig(customConfig)\n if (moduleConfig.waitForIt) {\n processBrandmetricsEvents(reqBidsConfigObj, moduleConfig, callback)\n } else {\n callback()\n }\n } catch (e) {\n logError(e)\n }\n },\n init: init\n}\n\nsubmodule('realTimeData', brandmetricsSubmodule)\n","import {deepAccess, isFn, isPlainObject, isStr} from '../../src/utils.js';\n\nexport const EID_CONFIG = new Map();\n\n// this function will create an eid object for the given UserId sub-module\nfunction createEidObject(userIdData, subModuleKey) {\n const conf = EID_CONFIG.get(subModuleKey);\n if (conf && userIdData) {\n let eid = {};\n eid.source = isFn(conf['getSource']) ? conf['getSource'](userIdData) : conf['source'];\n const value = isFn(conf['getValue']) ? conf['getValue'](userIdData) : userIdData;\n if (isStr(value)) {\n const uid = { id: value, atype: conf['atype'] };\n // getUidExt\n if (isFn(conf['getUidExt'])) {\n const uidExt = conf['getUidExt'](userIdData);\n if (uidExt) {\n uid.ext = uidExt;\n }\n }\n eid.uids = [uid];\n // getEidExt\n if (isFn(conf['getEidExt'])) {\n const eidExt = conf['getEidExt'](userIdData);\n if (eidExt) {\n eid.ext = eidExt;\n }\n }\n return eid;\n }\n }\n return null;\n}\n\n// this function will generate eids array for all available IDs in bidRequest.userId\n// this function will be called by userId module\n// if any adapter does not want any particular userId to be passed then adapter can use Array.filter(e => e.source != 'tdid')\nexport function createEidsArray(bidRequestUserId) {\n let eids = [];\n\n for (const subModuleKey in bidRequestUserId) {\n if (bidRequestUserId.hasOwnProperty(subModuleKey)) {\n if (subModuleKey === 'pubProvidedId') {\n eids = eids.concat(bidRequestUserId['pubProvidedId']);\n } else if (Array.isArray(bidRequestUserId[subModuleKey])) {\n bidRequestUserId[subModuleKey].forEach((config, index, arr) => {\n const eid = createEidObject(config, subModuleKey);\n\n if (eid) {\n eids.push(eid);\n }\n })\n } else {\n const eid = createEidObject(bidRequestUserId[subModuleKey], subModuleKey);\n if (eid) {\n eids.push(eid);\n }\n }\n }\n }\n\n return eids;\n}\n\n/**\n * @param {SubmoduleContainer[]} submodules\n */\nexport function buildEidPermissions(submodules) {\n let eidPermissions = [];\n submodules.filter(i => isPlainObject(i.idObj) && Object.keys(i.idObj).length)\n .forEach(i => {\n Object.keys(i.idObj).forEach(key => {\n const eidConf = EID_CONFIG.get(key) || {};\n if (deepAccess(i, 'config.bidders') && Array.isArray(i.config.bidders) &&\n eidConf.source) {\n eidPermissions.push(\n {\n source: eidConf.source,\n bidders: i.config.bidders\n }\n );\n }\n });\n });\n return eidPermissions;\n}\n","import {hook} from './hook.js';\n\n/**\n * return the GAM PPID, if available (eid for the userID configured with `userSync.ppidSource`)\n */\nexport const getPPID = hook('sync', () => undefined);\n","/**\n * This module adds User ID support to prebid.js\n * @module modules/userId\n */\n\n/**\n * @interface Submodule\n */\n\n/**\n * @function\n * @summary performs action to obtain id and return a value in the callback's response argument.\n * If IdResponse#id is defined, then it will be written to the current active storage.\n * If IdResponse#callback is defined, then it'll called at the end of auction.\n * It's permissible to return neither, one, or both fields.\n * @name Submodule#getId\n * @param {SubmoduleConfig} config\n * @param {ConsentData|undefined} consentData\n * @param {(Object|undefined)} cacheIdObj\n * @return {(IdResponse|undefined)} A response object that contains id and/or callback.\n */\n\n/**\n * @function\n * @summary Similar to Submodule#getId, this optional method returns response to for id that exists already.\n * If IdResponse#id is defined, then it will be written to the current active storage even if it exists already.\n * If IdResponse#callback is defined, then it'll called at the end of auction.\n * It's permissible to return neither, one, or both fields.\n * @name Submodule#extendId\n * @param {SubmoduleConfig} config\n * @param {ConsentData|undefined} consentData\n * @param {Object} storedId - existing id, if any\n * @return {(IdResponse|function(callback:function))} A response object that contains id and/or callback.\n */\n\n/**\n * @function\n * @summary decode a stored value for passing to bid requests\n * @name Submodule#decode\n * @param {Object|string} value\n * @param {SubmoduleConfig|undefined} config\n * @return {(Object|undefined)}\n */\n\n/**\n * @property\n * @summary used to link submodule with config\n * @name Submodule#name\n * @type {string}\n */\n\n/**\n * @property\n * @summary use a predefined domain override for cookies or provide your own\n * @name Submodule#domainOverride\n * @type {(undefined|function)}\n */\n\n/**\n * @function\n * @summary Returns the root domain\n * @name Submodule#findRootDomain\n * @returns {string}\n */\n\n/**\n * @typedef {Object} SubmoduleConfig\n * @property {string} name - the User ID submodule name (used to link submodule with config)\n * @property {(SubmoduleStorage|undefined)} storage - browser storage config\n * @property {(SubmoduleParams|undefined)} params - params config for use by the submodule.getId function\n * @property {(Object|undefined)} value - if not empty, this value is added to bid requests for access in adapters\n */\n\n/**\n * @typedef {Object} SubmoduleStorage\n * @property {string} type - browser storage type (html5 or cookie)\n * @property {string} name - key name to use when saving/reading to local storage or cookies\n * @property {number} expires - time to live for browser storage in days\n * @property {(number|undefined)} refreshInSeconds - if not empty, this value defines the maximum time span in seconds before refreshing user ID stored in browser\n */\n\n/**\n * @typedef {Object} LiveIntentCollectConfig\n * @property {(string|undefined)} fpiStorageStrategy - defines whether the first party identifiers that LiveConnect creates and updates are stored in a cookie jar, local storage, or not created at all\n * @property {(number|undefined)} fpiExpirationDays - the expiration time of an identifier created and updated by LiveConnect\n * @property {(string|undefined)} collectorUrl - defines where the LiveIntentId signal pixels are pointing to\n * @property {(string|undefined)} appId - the unique identifier of the application in question\n */\n\n/**\n * @typedef {Object} SubmoduleParams\n * @property {(string|undefined)} partner - partner url param value\n * @property {(string|undefined)} url - webservice request url used to load Id data\n * @property {(string|undefined)} pixelUrl - publisher pixel to extend/modify cookies\n * @property {(boolean|undefined)} create - create id if missing. default is true.\n * @property {(boolean|undefined)} extend - extend expiration time on each access. default is false.\n * @property {(string|undefined)} pid - placement id url param value\n * @property {(string|undefined)} publisherId - the unique identifier of the publisher in question\n * @property {(string|undefined)} ajaxTimeout - the number of milliseconds a resolution request can take before automatically being terminated\n * @property {(array|undefined)} identifiersToResolve - the identifiers from either ls|cookie to be attached to the getId query\n * @property {(LiveIntentCollectConfig|undefined)} liCollectConfig - the config for LiveIntent's collect requests\n * @property {(string|undefined)} pd - publisher provided data for reconciling ID5 IDs\n * @property {(string|undefined)} emailHash - if provided, the hashed email address of a user\n * @property {(string|undefined)} notUse3P - use to retrieve envelope from 3p endpoint\n */\n\n/**\n * @typedef {Object} SubmoduleContainer\n * @property {Submodule} submodule\n * @property {SubmoduleConfig} config\n * @property {(Object|undefined)} idObj - cache decoded id value (this is copied to every adUnit bid)\n * @property {(function|undefined)} callback - holds reference to submodule.getId() result if it returned a function. Will be set to undefined after callback executes\n * @property {StorageManager} storageMgr\n */\n\n/**\n * @typedef {Object} ConsentData\n * @property {(string|undefined)} consentString\n * @property {(Object|undefined)} vendorData\n * @property {(boolean|undefined)} gdprApplies\n */\n\n/**\n * @typedef {Object} IdResponse\n * @property {(Object|undefined)} id - id data\n * @property {(function|undefined)} callback - function that will return an id\n */\n\nimport {find, includes} from '../../src/polyfill.js';\nimport {config} from '../../src/config.js';\nimport * as events from '../../src/events.js';\nimport {getGlobal} from '../../src/prebidGlobal.js';\nimport adapterManager, {gdprDataHandler} from '../../src/adapterManager.js';\nimport CONSTANTS from '../../src/constants.json';\nimport {module, ready as hooksReady} from '../../src/hook.js';\nimport {buildEidPermissions, createEidsArray, EID_CONFIG} from './eids.js';\nimport {\n getCoreStorageManager,\n getStorageManager,\n STORAGE_TYPE_COOKIES,\n STORAGE_TYPE_LOCALSTORAGE\n} from '../../src/storageManager.js';\nimport {\n deepAccess,\n deepSetValue,\n delayExecution,\n getPrebidInternal,\n isArray,\n isEmpty,\n isEmptyStr,\n isFn,\n isGptPubadsDefined,\n isNumber,\n isPlainObject,\n logError,\n logInfo,\n logWarn\n} from '../../src/utils.js';\nimport {getPPID as coreGetPPID} from '../../src/adserver.js';\nimport {defer, GreedyPromise} from '../../src/utils/promise.js';\nimport {registerOrtbProcessor, REQUEST} from '../../src/pbjsORTB.js';\nimport {newMetrics, timedAuctionHook, useMetrics} from '../../src/utils/perfMetrics.js';\nimport {findRootDomain} from '../../src/fpd/rootDomain.js';\nimport {allConsent, GDPR_GVLIDS} from '../../src/consentHandler.js';\nimport {MODULE_TYPE_UID} from '../../src/activities/modules.js';\nimport {isActivityAllowed} from '../../src/activities/rules.js';\nimport {ACTIVITY_ENRICH_EIDS} from '../../src/activities/activities.js';\nimport {activityParams} from '../../src/activities/activityParams.js';\n\nconst MODULE_NAME = 'User ID';\nconst COOKIE = STORAGE_TYPE_COOKIES;\nconst LOCAL_STORAGE = STORAGE_TYPE_LOCALSTORAGE;\nconst DEFAULT_SYNC_DELAY = 500;\nconst NO_AUCTION_DELAY = 0;\nexport const PBJS_USER_ID_OPTOUT_NAME = '_pbjs_id_optout';\nexport const coreStorage = getCoreStorageManager('userId');\nexport const dep = {\n isAllowed: isActivityAllowed\n}\n\n/** @type {boolean} */\nlet addedUserIdHook = false;\n\n/** @type {SubmoduleContainer[]} */\nlet submodules = [];\n\n/** @type {SubmoduleContainer[]} */\nlet initializedSubmodules;\n\n/** @type {SubmoduleConfig[]} */\nlet configRegistry = [];\n\n/** @type {Object} */\nlet idPriority = {};\n\n/** @type {Submodule[]} */\nlet submoduleRegistry = [];\n\n/** @type {(number|undefined)} */\nlet timeoutID;\n\n/** @type {(number|undefined)} */\nexport let syncDelay;\n\n/** @type {(number|undefined)} */\nexport let auctionDelay;\n\n/** @type {(string|undefined)} */\nlet ppidSource;\n\nlet configListener;\n\nconst uidMetrics = (() => {\n let metrics;\n return () => {\n if (metrics == null) {\n metrics = newMetrics();\n }\n return metrics;\n }\n})();\n\nfunction submoduleMetrics(moduleName) {\n return uidMetrics().fork().renameWith(n => [`userId.mod.${n}`, `userId.mods.${moduleName}.${n}`])\n}\n\n/** @param {Submodule[]} submodules */\nexport function setSubmoduleRegistry(submodules) {\n submoduleRegistry = submodules;\n updateEIDConfig(submodules);\n}\n\nfunction cookieSetter(submodule, storageMgr) {\n storageMgr = storageMgr || submodule.storageMgr;\n const domainOverride = (typeof submodule.submodule.domainOverride === 'function') ? submodule.submodule.domainOverride() : null;\n const name = submodule.config.storage.name;\n return function setCookie(suffix, value, expiration) {\n storageMgr.setCookie(name + (suffix || ''), value, expiration, 'Lax', domainOverride);\n }\n}\n\n/**\n * @param {SubmoduleContainer} submodule\n * @param {(Object|string)} value\n */\nexport function setStoredValue(submodule, value) {\n /**\n * @type {SubmoduleStorage}\n */\n const storage = submodule.config.storage;\n const mgr = submodule.storageMgr;\n\n try {\n const expiresStr = (new Date(Date.now() + (storage.expires * (60 * 60 * 24 * 1000)))).toUTCString();\n const valueStr = isPlainObject(value) ? JSON.stringify(value) : value;\n if (storage.type === COOKIE) {\n const setCookie = cookieSetter(submodule);\n setCookie(null, valueStr, expiresStr);\n setCookie('_cst', getConsentHash(), expiresStr);\n if (typeof storage.refreshInSeconds === 'number') {\n setCookie('_last', new Date().toUTCString(), expiresStr);\n }\n } else if (storage.type === LOCAL_STORAGE) {\n mgr.setDataInLocalStorage(`${storage.name}_exp`, expiresStr);\n mgr.setDataInLocalStorage(`${storage.name}_cst`, getConsentHash());\n mgr.setDataInLocalStorage(storage.name, encodeURIComponent(valueStr));\n if (typeof storage.refreshInSeconds === 'number') {\n mgr.setDataInLocalStorage(`${storage.name}_last`, new Date().toUTCString());\n }\n }\n } catch (error) {\n logError(error);\n }\n}\n\nexport function deleteStoredValue(submodule) {\n let deleter, suffixes;\n switch (submodule.config?.storage?.type) {\n case COOKIE:\n const setCookie = cookieSetter(submodule, coreStorage);\n const expiry = (new Date(Date.now() - 1000 * 60 * 60 * 24)).toUTCString();\n deleter = (suffix) => setCookie(suffix, '', expiry)\n suffixes = ['', '_last', '_cst'];\n break;\n case LOCAL_STORAGE:\n deleter = (suffix) => coreStorage.removeDataFromLocalStorage(submodule.config.storage.name + suffix)\n suffixes = ['', '_last', '_exp', '_cst'];\n break;\n }\n if (deleter) {\n suffixes.forEach(suffix => {\n try {\n deleter(suffix)\n } catch (e) {\n logError(e);\n }\n });\n }\n}\n\nfunction setPrebidServerEidPermissions(initializedSubmodules) {\n let setEidPermissions = getPrebidInternal().setEidPermissions;\n if (typeof setEidPermissions === 'function' && isArray(initializedSubmodules)) {\n setEidPermissions(buildEidPermissions(initializedSubmodules));\n }\n}\n\n/**\n * @param {SubmoduleContainer} submodule\n * @param {String|undefined} key optional key of the value\n * @returns {string}\n */\nfunction getStoredValue(submodule, key = undefined) {\n const mgr = submodule.storageMgr;\n const storage = submodule.config.storage;\n const storedKey = key ? `${storage.name}_${key}` : storage.name;\n let storedValue;\n try {\n if (storage.type === COOKIE) {\n storedValue = mgr.getCookie(storedKey);\n } else if (storage.type === LOCAL_STORAGE) {\n const storedValueExp = mgr.getDataFromLocalStorage(`${storage.name}_exp`);\n // empty string means no expiration set\n if (storedValueExp === '') {\n storedValue = mgr.getDataFromLocalStorage(storedKey);\n } else if (storedValueExp) {\n if ((new Date(storedValueExp)).getTime() - Date.now() > 0) {\n storedValue = decodeURIComponent(mgr.getDataFromLocalStorage(storedKey));\n }\n }\n }\n // support storing a string or a stringified object\n if (typeof storedValue === 'string' && storedValue.trim().charAt(0) === '{') {\n storedValue = JSON.parse(storedValue);\n }\n } catch (e) {\n logError(e);\n }\n return storedValue;\n}\n\n/**\n * @param {SubmoduleContainer[]} submodules\n * @param {function} cb - callback for after processing is done.\n */\nfunction processSubmoduleCallbacks(submodules, cb, allModules) {\n cb = uidMetrics().fork().startTiming('userId.callbacks.total').stopBefore(cb);\n const done = delayExecution(() => {\n clearTimeout(timeoutID);\n cb();\n }, submodules.length);\n submodules.forEach(function (submodule) {\n const moduleDone = submoduleMetrics(submodule.submodule.name).startTiming('callback').stopBefore(done);\n function callbackCompleted(idObj) {\n // if valid, id data should be saved to cookie/html storage\n if (idObj) {\n if (submodule.config.storage) {\n setStoredValue(submodule, idObj);\n }\n // cache decoded value (this is copied to every adUnit bid)\n submodule.idObj = submodule.submodule.decode(idObj, submodule.config);\n updatePPID(getCombinedSubmoduleIds(allModules));\n } else {\n logInfo(`${MODULE_NAME}: ${submodule.submodule.name} - request id responded with an empty value`);\n }\n moduleDone();\n }\n try {\n submodule.callback(callbackCompleted, getStoredValue.bind(null, submodule));\n } catch (e) {\n logError(`Error in userID module '${submodule.submodule.name}':`, e);\n moduleDone();\n }\n // clear callback, this prop is used to test if all submodule callbacks are complete below\n submodule.callback = undefined;\n });\n}\n\n/**\n * This function will create a combined object for all subModule Ids\n * @param {SubmoduleContainer[]} submodules\n */\nfunction getCombinedSubmoduleIds(submodules) {\n if (!Array.isArray(submodules) || !submodules.length) {\n return {};\n }\n return getPrioritizedCombinedSubmoduleIds(submodules)\n}\n\n/**\n * This function will return a submodule ID object for particular source name\n * @param {SubmoduleContainer[]} submodules\n * @param {string} sourceName\n */\nfunction getSubmoduleId(submodules, sourceName) {\n if (!Array.isArray(submodules) || !submodules.length) {\n return {};\n }\n\n const prioritisedIds = getPrioritizedCombinedSubmoduleIds(submodules);\n const eligibleIdName = Object.keys(prioritisedIds).find(idName => {\n const config = EID_CONFIG.get(idName);\n return config?.source === sourceName || (isFn(config?.getSource) && config.getSource() === sourceName);\n });\n\n return eligibleIdName ? {[eligibleIdName]: prioritisedIds[eligibleIdName]} : [];\n}\n\n/**\n * This function will create a combined object for bidder with allowed subModule Ids\n * @param {SubmoduleContainer[]} submodules\n * @param {string} bidder\n */\nfunction getCombinedSubmoduleIdsForBidder(submodules, bidder) {\n if (!Array.isArray(submodules) || !submodules.length || !bidder) {\n return {};\n }\n const eligibleSubmodules = submodules\n .filter(i => !i.config.bidders || !isArray(i.config.bidders) || includes(i.config.bidders, bidder))\n\n return getPrioritizedCombinedSubmoduleIds(eligibleSubmodules);\n}\n\nfunction collectByPriority(submodules, getIds, getName) {\n return Object.fromEntries(Object.entries(submodules.reduce((carry, submod) => {\n const ids = getIds(submod);\n ids && Object.keys(ids).forEach(key => {\n const maybeCurrentIdPriority = idPriority[key]?.indexOf(getName(submod));\n const currentIdPriority = isNumber(maybeCurrentIdPriority) ? maybeCurrentIdPriority : -1;\n const currentIdState = {priority: currentIdPriority, value: ids[key]};\n if (carry[key]) {\n const winnerIdState = currentIdState.priority > carry[key].priority ? currentIdState : carry[key];\n carry[key] = winnerIdState;\n } else {\n carry[key] = currentIdState;\n }\n });\n return carry;\n }, {})).map(([k, v]) => [k, v.value]));\n}\n\n/**\n * @param {SubmoduleContainer[]} submodules\n */\nfunction getPrioritizedCombinedSubmoduleIds(submodules) {\n return collectByPriority(\n submodules.filter(i => isPlainObject(i.idObj) && Object.keys(i.idObj).length),\n (submod) => submod.idObj,\n (submod) => submod.submodule.name\n )\n}\n\n/**\n * @param {AdUnit[]} adUnits\n * @param {SubmoduleContainer[]} submodules\n */\nfunction addIdDataToAdUnitBids(adUnits, submodules) {\n if ([adUnits].some(i => !Array.isArray(i) || !i.length)) {\n return;\n }\n adUnits.forEach(adUnit => {\n if (adUnit.bids && isArray(adUnit.bids)) {\n adUnit.bids.forEach(bid => {\n const combinedSubmoduleIds = getCombinedSubmoduleIdsForBidder(submodules, bid.bidder);\n if (Object.keys(combinedSubmoduleIds).length) {\n // create a User ID object on the bid,\n bid.userId = combinedSubmoduleIds;\n bid.userIdAsEids = createEidsArray(combinedSubmoduleIds);\n }\n });\n }\n });\n}\n\nconst INIT_CANCELED = {};\n\nfunction idSystemInitializer({delay = GreedyPromise.timeout} = {}) {\n const startInit = defer();\n const startCallbacks = defer();\n let cancel;\n let initialized = false;\n let initMetrics;\n\n function cancelAndTry(promise) {\n initMetrics = uidMetrics().fork();\n if (cancel != null) {\n cancel.reject(INIT_CANCELED);\n }\n cancel = defer();\n return GreedyPromise.race([promise, cancel.promise])\n .finally(initMetrics.startTiming('userId.total'))\n }\n\n // grab a reference to global vars so that the promise chains remain isolated;\n // multiple calls to `init` (from tests) might otherwise cause them to interfere with each other\n let initModules = initializedSubmodules;\n let allModules = submodules;\n\n function checkRefs(fn) {\n // unfortunately tests have their own global state that needs to be guarded, so even if we keep ours tidy,\n // we cannot let things like submodule callbacks run (they pollute things like the global `server` XHR mock)\n return function(...args) {\n if (initModules === initializedSubmodules && allModules === submodules) {\n return fn(...args);\n }\n }\n }\n\n function timeConsent() {\n return allConsent.promise.finally(initMetrics.startTiming('userId.init.consent'))\n }\n\n let done = cancelAndTry(\n GreedyPromise.all([hooksReady, startInit.promise])\n .then(timeConsent)\n .then(checkRefs(() => {\n initSubmodules(initModules, allModules);\n }))\n .then(() => startCallbacks.promise.finally(initMetrics.startTiming('userId.callbacks.pending')))\n .then(checkRefs(() => {\n const modWithCb = initModules.filter(item => isFn(item.callback));\n if (modWithCb.length) {\n return new GreedyPromise((resolve) => processSubmoduleCallbacks(modWithCb, resolve, initModules));\n }\n }))\n );\n\n /**\n * with `ready` = true, starts initialization; with `refresh` = true, reinitialize submodules (optionally\n * filtered by `submoduleNames`).\n */\n return function ({refresh = false, submoduleNames = null, ready = false} = {}) {\n if (ready && !initialized) {\n initialized = true;\n startInit.resolve();\n // submodule callbacks should run immediately if `auctionDelay` > 0, or `syncDelay` ms after the\n // auction ends otherwise\n if (auctionDelay > 0) {\n startCallbacks.resolve();\n } else {\n events.on(CONSTANTS.EVENTS.AUCTION_END, function auctionEndHandler() {\n events.off(CONSTANTS.EVENTS.AUCTION_END, auctionEndHandler);\n delay(syncDelay).then(startCallbacks.resolve);\n });\n }\n }\n if (refresh && initialized) {\n done = cancelAndTry(\n done\n .catch(() => null)\n .then(timeConsent) // fetch again in case a refresh was forced before this was resolved\n .then(checkRefs(() => {\n const cbModules = initSubmodules(\n initModules,\n allModules.filter((sm) => submoduleNames == null || submoduleNames.includes(sm.submodule.name)),\n true\n ).filter((sm) => {\n return sm.callback != null;\n });\n if (cbModules.length) {\n return new GreedyPromise((resolve) => processSubmoduleCallbacks(cbModules, resolve, initModules));\n }\n }))\n );\n }\n return done;\n };\n}\n\nlet initIdSystem;\n\nfunction getPPID(eids = getUserIdsAsEids() || []) {\n // userSync.ppid should be one of the 'source' values in getUserIdsAsEids() eg pubcid.org or id5-sync.com\n const matchingUserId = ppidSource && eids.find(userID => userID.source === ppidSource);\n if (matchingUserId && typeof deepAccess(matchingUserId, 'uids.0.id') === 'string') {\n const ppidValue = matchingUserId.uids[0].id.replace(/[\\W_]/g, '');\n if (ppidValue.length >= 32 && ppidValue.length <= 150) {\n return ppidValue;\n } else {\n logWarn(`User ID - Googletag Publisher Provided ID for ${ppidSource} is not between 32 and 150 characters - ${ppidValue}`);\n }\n }\n}\n\n/**\n * Hook is executed before adapters, but after consentManagement. Consent data is requied because\n * this module requires GDPR consent with Purpose #1 to save data locally.\n * The two main actions handled by the hook are:\n * 1. check gdpr consentData and handle submodule initialization.\n * 2. append user id data (loaded from cookied/html or from the getId method) to bids to be accessed in adapters.\n * @param {Object} reqBidsConfigObj required; This is the same param that's used in pbjs.requestBids.\n * @param {function} fn required; The next function in the chain, used by hook.js\n */\nexport const requestBidsHook = timedAuctionHook('userId', function requestBidsHook(fn, reqBidsConfigObj, {delay = GreedyPromise.timeout, getIds = getUserIdsAsync} = {}) {\n GreedyPromise.race([\n getIds().catch(() => null),\n delay(auctionDelay)\n ]).then(() => {\n // pass available user id data to bid adapters\n addIdDataToAdUnitBids(reqBidsConfigObj.adUnits || getGlobal().adUnits, initializedSubmodules);\n uidMetrics().join(useMetrics(reqBidsConfigObj.metrics), {propagate: false, includeGroups: true});\n // calling fn allows prebid to continue processing\n fn.call(this, reqBidsConfigObj);\n });\n});\n\n/**\n * This function will be exposed in global-name-space so that userIds stored by Prebid UserId module can be used by external codes as well.\n * Simple use case will be passing these UserIds to A9 wrapper solution\n */\nfunction getUserIds() {\n return getCombinedSubmoduleIds(initializedSubmodules)\n}\n\n/**\n * This function will be exposed in global-name-space so that userIds stored by Prebid UserId module can be used by external codes as well.\n * Simple use case will be passing these UserIds to A9 wrapper solution\n */\nfunction getUserIdsAsEids() {\n return createEidsArray(getUserIds())\n}\n\n/**\n * This function will be exposed in global-name-space so that userIds stored by Prebid UserId module can be used by external codes as well.\n * Simple use case will be passing these UserIds to A9 wrapper solution\n */\n\nfunction getUserIdsAsEidBySource(sourceName) {\n return createEidsArray(getSubmoduleId(initializedSubmodules, sourceName))[0];\n}\n\n/**\n * This function will be exposed in global-name-space so that userIds for a source can be exposed\n * Sample use case is exposing this function to ESP\n */\nfunction getEncryptedEidsForSource(source, encrypt, customFunction) {\n return initIdSystem().then(() => {\n let eidsSignals = {};\n\n if (isFn(customFunction)) {\n logInfo(`${MODULE_NAME} - Getting encrypted signal from custom function : ${customFunction.name} & source : ${source} `);\n // Publishers are expected to define a common function which will be proxy for signal function.\n const customSignals = customFunction(source);\n eidsSignals[source] = customSignals ? encryptSignals(customSignals) : null; // by default encrypt using base64 to avoid JSON errors\n } else {\n // initialize signal with eids by default\n const eid = getUserIdsAsEidBySource(source);\n logInfo(`${MODULE_NAME} - Getting encrypted signal for eids :${JSON.stringify(eid)}`);\n if (!isEmpty(eid)) {\n eidsSignals[eid.source] = encrypt === true ? encryptSignals(eid) : eid.uids[0].id; // If encryption is enabled append version (1||) and encrypt entire object\n }\n }\n logInfo(`${MODULE_NAME} - Fetching encrypted eids: ${eidsSignals[source]}`);\n return eidsSignals[source];\n })\n}\n\nfunction encryptSignals(signals, version = 1) {\n let encryptedSig = '';\n switch (version) {\n case 1: // Base64 Encryption\n encryptedSig = typeof signals === 'object' ? window.btoa(JSON.stringify(signals)) : window.btoa(signals); // Test encryption. To be replaced with better algo\n break;\n default:\n break;\n }\n return `${version}||${encryptedSig}`;\n}\n\n/**\n* This function will be exposed in the global-name-space so that publisher can register the signals-ESP.\n*/\nfunction registerSignalSources() {\n if (!isGptPubadsDefined()) {\n return;\n }\n window.googletag.secureSignalProviders = window.googletag.secureSignalProviders || [];\n const encryptedSignalSources = config.getConfig('userSync.encryptedSignalSources');\n if (encryptedSignalSources) {\n const registerDelay = encryptedSignalSources.registerDelay || 0;\n setTimeout(() => {\n encryptedSignalSources['sources'] && encryptedSignalSources['sources'].forEach(({ source, encrypt, customFunc }) => {\n source.forEach((src) => {\n window.googletag.secureSignalProviders.push({\n id: src,\n collectorFunction: () => getEncryptedEidsForSource(src, encrypt, customFunc)\n });\n });\n })\n }, registerDelay)\n } else {\n logWarn(`${MODULE_NAME} - ESP : encryptedSignalSources config not defined under userSync Object`);\n }\n}\n\n/**\n * Force (re)initialization of ID submodules.\n *\n * This will force a refresh of the specified ID submodules regardless of `auctionDelay` / `syncDelay` settings, and\n * return a promise that resolves to the same value as `getUserIds()` when the refresh is complete.\n * If a refresh is already in progress, it will be canceled (rejecting promises returned by previous calls to `refreshUserIds`).\n *\n * @param submoduleNames? submodules to refresh. If omitted, refresh all submodules.\n * @param callback? called when the refresh is complete\n */\nfunction refreshUserIds({submoduleNames} = {}, callback) {\n return initIdSystem({refresh: true, submoduleNames})\n .then(() => {\n if (callback && isFn(callback)) {\n callback();\n }\n return getUserIds();\n });\n}\n\n/**\n * @returns a promise that resolves to the same value as `getUserIds()`, but only once all ID submodules have completed\n * initialization. This can also be used to synchronize calls to other ID accessors, e.g.\n *\n * ```\n * pbjs.getUserIdsAsync().then(() => {\n * const eids = pbjs.getUserIdsAsEids(); // guaranteed to be completely initialized at this point\n * });\n * ```\n */\n\nfunction getUserIdsAsync() {\n return initIdSystem().then(\n () => getUserIds(),\n (e) => {\n if (e === INIT_CANCELED) {\n // there's a pending refresh - because GreedyPromise runs this synchronously, we are now in the middle\n // of canceling the previous init, before the refresh logic has had a chance to run.\n // Use a \"normal\" Promise to clear the stack and let it complete (or this will just recurse infinitely)\n return Promise.resolve().then(getUserIdsAsync)\n } else {\n logError('Error initializing userId', e)\n return GreedyPromise.reject(e)\n }\n }\n );\n}\n\nexport function getConsentHash() {\n // transform decimal string into base64 to save some space on cookies\n let hash = Number(allConsent.hash);\n const bytes = [];\n while (hash > 0) {\n bytes.push(String.fromCharCode(hash & 255));\n hash = hash >>> 8;\n }\n return btoa(bytes.join());\n}\n\nfunction consentChanged(submodule) {\n const storedConsent = getStoredValue(submodule, 'cst');\n return !storedConsent || storedConsent !== getConsentHash();\n}\n\nfunction populateSubmoduleId(submodule, forceRefresh, allSubmodules) {\n // TODO: the ID submodule API only takes GDPR consent; it should be updated now that GDPR\n // is only a tiny fraction of a vast consent universe\n const gdprConsent = gdprDataHandler.getConsentData();\n\n // There are two submodule configuration types to handle: storage or value\n // 1. storage: retrieve user id data from cookie/html storage or with the submodule's getId method\n // 2. value: pass directly to bids\n if (submodule.config.storage) {\n let storedId = getStoredValue(submodule);\n let response;\n\n let refreshNeeded = false;\n if (typeof submodule.config.storage.refreshInSeconds === 'number') {\n const storedDate = new Date(getStoredValue(submodule, 'last'));\n refreshNeeded = storedDate && (Date.now() - storedDate.getTime() > submodule.config.storage.refreshInSeconds * 1000);\n }\n\n if (!storedId || refreshNeeded || forceRefresh || consentChanged(submodule)) {\n // No id previously saved, or a refresh is needed, or consent has changed. Request a new id from the submodule.\n response = submodule.submodule.getId(submodule.config, gdprConsent, storedId);\n } else if (typeof submodule.submodule.extendId === 'function') {\n // If the id exists already, give submodule a chance to decide additional actions that need to be taken\n response = submodule.submodule.extendId(submodule.config, gdprConsent, storedId);\n }\n\n if (isPlainObject(response)) {\n if (response.id) {\n // A getId/extendId result assumed to be valid user id data, which should be saved to users local storage or cookies\n setStoredValue(submodule, response.id);\n storedId = response.id;\n }\n\n if (typeof response.callback === 'function') {\n // Save async callback to be invoked after auction\n submodule.callback = response.callback;\n }\n }\n\n if (storedId) {\n // cache decoded value (this is copied to every adUnit bid)\n submodule.idObj = submodule.submodule.decode(storedId, submodule.config);\n }\n } else if (submodule.config.value) {\n // cache decoded value (this is copied to every adUnit bid)\n submodule.idObj = submodule.config.value;\n } else {\n const response = submodule.submodule.getId(submodule.config, gdprConsent, undefined);\n if (isPlainObject(response)) {\n if (typeof response.callback === 'function') { submodule.callback = response.callback; }\n if (response.id) { submodule.idObj = submodule.submodule.decode(response.id, submodule.config); }\n }\n }\n updatePPID(getCombinedSubmoduleIds(allSubmodules));\n}\n\nfunction updatePPID(userIds = getUserIds()) {\n if (userIds && ppidSource) {\n const ppid = getPPID(createEidsArray(userIds));\n if (ppid) {\n if (isGptPubadsDefined()) {\n window.googletag.pubads().setPublisherProvidedId(ppid);\n } else {\n window.googletag = window.googletag || {};\n window.googletag.cmd = window.googletag.cmd || [];\n window.googletag.cmd.push(function() {\n window.googletag.pubads().setPublisherProvidedId(ppid);\n });\n }\n }\n }\n}\n\nfunction initSubmodules(dest, submodules, forceRefresh = false) {\n return uidMetrics().fork().measureTime('userId.init.modules', function () {\n if (!submodules.length) return []; // to simplify log messages from here on\n\n /**\n * filter out submodules that:\n *\n * - cannot use the storage they've been set up with (storage not available / not allowed / disabled)\n * - are not allowed to perform the `enrichEids` activity\n */\n submodules = submodules.filter((submod) => {\n return (!submod.config.storage || canUseStorage(submod)) &&\n dep.isAllowed(ACTIVITY_ENRICH_EIDS, activityParams(MODULE_TYPE_UID, submod.config.name));\n });\n\n if (!submodules.length) {\n logWarn(`${MODULE_NAME} - no ID module configured`);\n return [];\n }\n\n const initialized = submodules.reduce((carry, submodule) => {\n return submoduleMetrics(submodule.submodule.name).measureTime('init', () => {\n try {\n populateSubmoduleId(submodule, forceRefresh, submodules);\n carry.push(submodule);\n } catch (e) {\n logError(`Error in userID module '${submodule.submodule.name}':`, e);\n }\n return carry;\n })\n }, []);\n if (initialized.length) {\n setPrebidServerEidPermissions(initialized);\n }\n initialized.forEach(updateInitializedSubmodules.bind(null, dest));\n return initialized;\n })\n}\n\nfunction updateInitializedSubmodules(dest, submodule) {\n let updated = false;\n for (let i = 0; i < dest.length; i++) {\n if (submodule.config.name.toLowerCase() === dest[i].config.name.toLowerCase()) {\n updated = true;\n dest[i] = submodule;\n break;\n }\n }\n\n if (!updated) {\n dest.push(submodule);\n }\n}\n\n/**\n * list of submodule configurations with valid 'storage' or 'value' obj definitions\n * * storage config: contains values for storing/retrieving User ID data in browser storage\n * * value config: object properties that are copied to bids (without saving to storage)\n * @param {SubmoduleConfig[]} configRegistry\n * @param {Submodule[]} submoduleRegistry\n * @param {string[]} activeStorageTypes\n * @returns {SubmoduleConfig[]}\n */\nfunction getValidSubmoduleConfigs(configRegistry, submoduleRegistry) {\n if (!Array.isArray(configRegistry)) {\n return [];\n }\n return configRegistry.reduce((carry, config) => {\n // every submodule config obj must contain a valid 'name'\n if (!config || isEmptyStr(config.name)) {\n return carry;\n }\n // Validate storage config contains 'type' and 'name' properties with non-empty string values\n // 'type' must be one of html5, cookies\n if (config.storage &&\n !isEmptyStr(config.storage.type) &&\n !isEmptyStr(config.storage.name) &&\n ALL_STORAGE_TYPES.has(config.storage.type)) {\n carry.push(config);\n } else if (isPlainObject(config.value)) {\n carry.push(config);\n } else if (!config.storage && !config.value) {\n carry.push(config);\n }\n return carry;\n }, []);\n}\n\nconst ALL_STORAGE_TYPES = new Set([LOCAL_STORAGE, COOKIE]);\n\nfunction canUseStorage(submodule) {\n switch (submodule.config?.storage?.type) {\n case LOCAL_STORAGE:\n if (submodule.storageMgr.localStorageIsEnabled()) {\n if (coreStorage.getDataFromLocalStorage(PBJS_USER_ID_OPTOUT_NAME)) {\n logInfo(`${MODULE_NAME} - opt-out localStorage found, storage disabled`);\n return false\n }\n return true;\n }\n break;\n case COOKIE:\n if (submodule.storageMgr.cookiesAreEnabled()) {\n if (coreStorage.getCookie(PBJS_USER_ID_OPTOUT_NAME)) {\n logInfo(`${MODULE_NAME} - opt-out cookie found, storage disabled`);\n return false;\n }\n return true\n }\n break;\n }\n return false;\n}\n\nfunction updateEIDConfig(submodules) {\n EID_CONFIG.clear();\n Object.entries(collectByPriority(\n submodules,\n (mod) => mod.eids,\n (mod) => mod.name\n )).forEach(([id, conf]) => EID_CONFIG.set(id, conf));\n}\n\n/**\n * update submodules by validating against existing configs and storage types\n */\nfunction updateSubmodules() {\n updateEIDConfig(submoduleRegistry);\n const configs = getValidSubmoduleConfigs(configRegistry, submoduleRegistry);\n if (!configs.length) {\n return;\n }\n // do this to avoid reprocessing submodules\n // TODO: the logic does not match the comment - addedSubmodules is always a copy of submoduleRegistry\n // (if it did it would not be correct - it's not enough to find new modules, as others may have been removed or changed)\n const addedSubmodules = submoduleRegistry.filter(i => !find(submodules, j => j.name === i.name));\n\n submodules.splice(0, submodules.length);\n // find submodule and the matching configuration, if found create and append a SubmoduleContainer\n addedSubmodules.map(i => {\n const submoduleConfig = find(configs, j => j.name && (j.name.toLowerCase() === i.name.toLowerCase() ||\n (i.aliasName && j.name.toLowerCase() === i.aliasName.toLowerCase())));\n if (submoduleConfig && i.name !== submoduleConfig.name) submoduleConfig.name = i.name;\n i.findRootDomain = findRootDomain;\n return submoduleConfig ? {\n submodule: i,\n config: submoduleConfig,\n callback: undefined,\n idObj: undefined,\n storageMgr: getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: submoduleConfig.name}),\n } : null;\n }).filter(submodule => submodule !== null)\n .forEach((sm) => submodules.push(sm));\n\n if (!addedUserIdHook && submodules.length) {\n // priority value 40 will load after consentManagement with a priority of 50\n getGlobal().requestBids.before(requestBidsHook, 40);\n adapterManager.callDataDeletionRequest.before(requestDataDeletion);\n coreGetPPID.after((next) => next(getPPID()));\n logInfo(`${MODULE_NAME} - usersync config updated for ${submodules.length} submodules: `, submodules.map(a => a.submodule.name));\n addedUserIdHook = true;\n }\n}\n\n/**\n * This function will update the idPriority according to the provided configuration\n * @param {Object} idPriorityConfig\n * @param {SubmoduleContainer[]} submodules\n */\nfunction updateIdPriority(idPriorityConfig, submodules) {\n if (idPriorityConfig) {\n const result = {};\n const aliasToName = new Map(submodules.map(s => s.submodule.aliasName ? [s.submodule.aliasName, s.submodule.name] : []));\n Object.keys(idPriorityConfig).forEach(key => {\n const priority = isArray(idPriorityConfig[key]) ? [...idPriorityConfig[key]].reverse() : []\n result[key] = priority.map(s => aliasToName.has(s) ? aliasToName.get(s) : s);\n });\n idPriority = result;\n } else {\n idPriority = {};\n }\n}\n\nexport function requestDataDeletion(next, ...args) {\n logInfo('UserID: received data deletion request; deleting all stored IDs...')\n submodules.forEach(submodule => {\n if (typeof submodule.submodule.onDataDeletionRequest === 'function') {\n try {\n submodule.submodule.onDataDeletionRequest(submodule.config, submodule.idObj, ...args);\n } catch (e) {\n logError(`Error calling onDataDeletionRequest for ID submodule ${submodule.submodule.name}`, e);\n }\n }\n deleteStoredValue(submodule);\n })\n next.apply(this, args);\n}\n\n/**\n * enable submodule in User ID\n * @param {Submodule} submodule\n */\nexport function attachIdSystem(submodule) {\n if (!find(submoduleRegistry, i => i.name === submodule.name)) {\n submoduleRegistry.push(submodule);\n GDPR_GVLIDS.register(MODULE_TYPE_UID, submodule.name, submodule.gvlid)\n updateSubmodules();\n // TODO: a test case wants this to work even if called after init (the setConfig({userId}))\n // so we trigger a refresh. But is that even possible outside of tests?\n initIdSystem({refresh: true, submoduleNames: [submodule.name]});\n }\n}\n\nfunction normalizePromise(fn) {\n // for public methods that return promises, make sure we return a \"normal\" one - to avoid\n // exposing confusing stack traces\n return function() {\n return Promise.resolve(fn.apply(this, arguments));\n }\n}\n\n/**\n * test browser support for storage config types (local storage or cookie), initializes submodules but consentManagement is required,\n * so a callback is added to fire after the consentManagement module.\n * @param {{getConfig:function}} config\n */\nexport function init(config, {delay = GreedyPromise.timeout} = {}) {\n ppidSource = undefined;\n submodules = [];\n configRegistry = [];\n addedUserIdHook = false;\n initializedSubmodules = [];\n initIdSystem = idSystemInitializer({delay});\n if (configListener != null) {\n configListener();\n }\n submoduleRegistry = [];\n\n // listen for config userSyncs to be set\n configListener = config.getConfig('userSync', conf => {\n // Note: support for 'usersync' was dropped as part of Prebid.js 4.0\n const userSync = conf.userSync;\n if (userSync) {\n ppidSource = userSync.ppid;\n if (userSync.userIds) {\n configRegistry = userSync.userIds;\n syncDelay = isNumber(userSync.syncDelay) ? userSync.syncDelay : DEFAULT_SYNC_DELAY;\n auctionDelay = isNumber(userSync.auctionDelay) ? userSync.auctionDelay : NO_AUCTION_DELAY;\n updateSubmodules();\n updateIdPriority(userSync.idPriority, submodules);\n initIdSystem({ready: true});\n }\n }\n });\n\n // exposing getUserIds function in global-name-space so that userIds stored in Prebid can be used by external codes.\n (getGlobal()).getUserIds = getUserIds;\n (getGlobal()).getUserIdsAsEids = getUserIdsAsEids;\n (getGlobal()).getEncryptedEidsForSource = normalizePromise(getEncryptedEidsForSource);\n (getGlobal()).registerSignalSources = registerSignalSources;\n (getGlobal()).refreshUserIds = normalizePromise(refreshUserIds);\n (getGlobal()).getUserIdsAsync = normalizePromise(getUserIdsAsync);\n (getGlobal()).getUserIdsAsEidBySource = getUserIdsAsEidBySource;\n}\n\n// init config update listener to start the application\ninit(config);\n\nmodule('userId', attachIdSystem);\n\nexport function setOrtbUserExtEids(ortbRequest, bidderRequest, context) {\n const eids = deepAccess(context, 'bidRequests.0.userIdAsEids');\n if (eids && Object.keys(eids).length > 0) {\n deepSetValue(ortbRequest, 'user.ext.eids', eids);\n }\n}\nregisterOrtbProcessor({type: REQUEST, name: 'userExtEids', fn: setOrtbUserExtEids});\n","/**\n * This module adds SharedId to the User ID module\n * The {@link module:modules/userId} module is required\n * @module modules/sharedIdSystem\n * @requires module:modules/userId\n */\n\nimport {parseUrl, buildUrl, triggerPixel, logInfo, hasDeviceAccess, generateUUID} from '../src/utils.js';\nimport {submodule} from '../src/hook.js';\nimport {coppaDataHandler} from '../src/adapterManager.js';\nimport {getStorageManager} from '../src/storageManager.js';\nimport {VENDORLESS_GVLID} from '../src/consentHandler.js';\nimport {MODULE_TYPE_UID} from '../src/activities/modules.js';\nimport {domainOverrideToRootDomain} from '../libraries/domainOverrideToRootDomain/index.js';\n\nexport const storage = getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: 'sharedId'});\nconst COOKIE = 'cookie';\nconst LOCAL_STORAGE = 'html5';\nconst OPTOUT_NAME = '_pubcid_optout';\nconst PUB_COMMON_ID = 'PublisherCommonId';\n\n/**\n * Read a value either from cookie or local storage\n * @param {string} name Name of the item\n * @param {string} type storage type override\n * @returns {string|null} a string if item exists\n */\nfunction readValue(name, type) {\n if (type === COOKIE) {\n return storage.getCookie(name);\n } else if (type === LOCAL_STORAGE) {\n if (storage.hasLocalStorage()) {\n const expValue = storage.getDataFromLocalStorage(`${name}_exp`);\n if (!expValue) {\n return storage.getDataFromLocalStorage(name);\n } else if ((new Date(expValue)).getTime() - Date.now() > 0) {\n return storage.getDataFromLocalStorage(name)\n }\n }\n }\n}\n\nfunction getIdCallback(pubcid, pixelUrl) {\n return function (callback, getStoredId) {\n if (pixelUrl) {\n queuePixelCallback(pixelUrl, pubcid, () => {\n callback(getStoredId() || pubcid);\n })();\n } else {\n callback(pubcid);\n }\n }\n}\n\nfunction queuePixelCallback(pixelUrl, id = '', callback) {\n if (!pixelUrl) {\n return;\n }\n\n // Use pubcid as a cache buster\n const urlInfo = parseUrl(pixelUrl);\n urlInfo.search.id = encodeURIComponent('pubcid:' + id);\n const targetUrl = buildUrl(urlInfo);\n\n return function () {\n triggerPixel(targetUrl, callback);\n };\n}\n\nfunction hasOptedOut() {\n return !!((storage.cookiesAreEnabled() && readValue(OPTOUT_NAME, COOKIE)) ||\n (storage.hasLocalStorage() && readValue(OPTOUT_NAME, LOCAL_STORAGE)));\n}\n\nexport const sharedIdSystemSubmodule = {\n /**\n * used to link submodule with config\n * @type {string}\n */\n name: 'sharedId',\n aliasName: 'pubCommonId',\n gvlid: VENDORLESS_GVLID,\n\n /**\n * decode the stored id value for passing to bid requests\n * @function\n * @param {string} value\n * @param {SubmoduleConfig} config\n * @returns {{pubcid:string}}\n */\n decode(value, config) {\n if (hasOptedOut()) {\n logInfo('PubCommonId decode: Has opted-out');\n return undefined;\n }\n logInfo(' Decoded value PubCommonId ' + value);\n const idObj = {'pubcid': value};\n return idObj;\n },\n /**\n * performs action to obtain id\n * @function\n * @param {SubmoduleConfig} [config] Config object with params and storage properties\n * @param {Object} consentData\n * @param {string} storedId Existing pubcommon id\n * @returns {IdResponse}\n */\n getId: function (config = {}, consentData, storedId) {\n if (hasOptedOut()) {\n logInfo('PubCommonId: Has opted-out');\n return;\n }\n const coppa = coppaDataHandler.getCoppa();\n\n if (coppa) {\n logInfo('PubCommonId: IDs not provided for coppa requests, exiting PubCommonId');\n return;\n }\n const {params: {create = true, pixelUrl} = {}} = config;\n let newId = storedId;\n if (!newId) {\n try {\n if (typeof window[PUB_COMMON_ID] === 'object') {\n // If the page includes its own pubcid module, then save a copy of id.\n newId = window[PUB_COMMON_ID].getId();\n }\n } catch (e) {\n }\n\n if (!newId) newId = (create && hasDeviceAccess()) ? generateUUID() : undefined;\n }\n\n return {id: newId, callback: getIdCallback(newId, pixelUrl)};\n },\n /**\n * performs action to extend an id. There are generally two ways to extend the expiration time\n * of stored id: using pixelUrl or return the id and let main user id module write it again with\n * the new expiration time.\n *\n * PixelUrl, if defined, should point back to a first party domain endpoint. On the server\n * side, there is either a plugin, or customized logic to read and write back the pubcid cookie.\n * The extendId function itself should return only the callback, and not the id itself to avoid\n * having the script-side overwriting server-side. This applies to both pubcid and sharedid.\n *\n * On the other hand, if there is no pixelUrl, then the extendId should return storedId so that\n * its expiration time is updated.\n *\n * @function\n * @param {SubmoduleParams} [config]\n * @param {ConsentData|undefined} consentData\n * @param {Object} storedId existing id\n * @returns {IdResponse|undefined}\n */\n extendId: function(config = {}, consentData, storedId) {\n if (hasOptedOut()) {\n logInfo('PubCommonId: Has opted-out');\n return {id: undefined};\n }\n const coppa = coppaDataHandler.getCoppa();\n if (coppa) {\n logInfo('PubCommonId: IDs not provided for coppa requests, exiting PubCommonId');\n return;\n }\n const {params: {extend = false, pixelUrl} = {}} = config;\n\n if (extend) {\n if (pixelUrl) {\n const callback = queuePixelCallback(pixelUrl, storedId);\n return {callback: callback};\n } else {\n return {id: storedId};\n }\n }\n },\n\n domainOverride: domainOverrideToRootDomain(storage, 'sharedId'),\n eids: {\n 'pubcid': {\n source: 'pubcid.org',\n atype: 1\n },\n }\n};\n\nsubmodule('userId', sharedIdSystemSubmodule);\n","/**\n * Create a domainOverride callback for an ID module, closing over\n * an instance of StorageManager.\n *\n * The domainOverride function, given document.domain, will return\n * the topmost domain we are able to set a cookie on. For example,\n * given subdomain.example.com, it would return example.com.\n *\n * @param {StorageManager} storage e.g. from getStorageManager()\n * @param {string} moduleName the name of the module using this function\n * @returns {function(): string}\n */\nexport function domainOverrideToRootDomain(storage, moduleName) {\n return function() {\n const domainElements = document.domain.split('.');\n const cookieName = `_gd${Date.now()}_${moduleName}`;\n\n for (let i = 0, topDomain, testCookie; i < domainElements.length; i++) {\n const nextDomain = domainElements.slice(i).join('.');\n\n // write test cookie\n storage.setCookie(cookieName, '1', undefined, undefined, nextDomain);\n\n // read test cookie to verify domain was valid\n testCookie = storage.getCookie(cookieName);\n\n // delete test cookie\n storage.setCookie(cookieName, '', 'Thu, 01 Jan 1970 00:00:01 GMT', undefined, nextDomain);\n\n if (testCookie === '1') {\n // cookie was written successfully using test domain so the topDomain is updated\n topDomain = nextDomain;\n } else {\n // cookie failed to write using test domain so exit by returning the topDomain\n return topDomain;\n }\n }\n }\n}\n","/**\n * This module adds LotamePanoramaId to the User ID module\n * The {@link module:modules/userId} module is required\n * @module modules/lotamePanoramaId\n * @requires module:modules/userId\n */\nimport {\n timestamp,\n isStr,\n logError,\n isBoolean,\n buildUrl,\n isEmpty,\n isArray,\n isEmptyStr\n} from '../src/utils.js';\nimport { ajax } from '../src/ajax.js';\nimport { submodule } from '../src/hook.js';\nimport {getStorageManager} from '../src/storageManager.js';\nimport { uspDataHandler } from '../src/adapterManager.js';\nimport {MODULE_TYPE_UID} from '../src/activities/modules.js';\n\nconst KEY_ID = 'panoramaId';\nconst KEY_EXPIRY = `${KEY_ID}_expiry`;\nconst KEY_PROFILE = '_cc_id';\nconst MODULE_NAME = 'lotamePanoramaId';\nconst NINE_MONTHS_MS = 23328000 * 1000;\nconst DAYS_TO_CACHE = 7;\nconst DAY_MS = 60 * 60 * 24 * 1000;\nconst MISSING_CORE_CONSENT = 111;\nconst GVLID = 95;\nconst ID_HOST = 'id.crwdcntrl.net';\nconst ID_HOST_COOKIELESS = 'c.ltmsphrcl.net';\n\nexport const storage = getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: MODULE_NAME});\nlet cookieDomain;\n\n/**\n * Set the Lotame First Party Profile ID in the first party namespace\n * @param {String} profileId\n */\nfunction setProfileId(profileId) {\n if (storage.cookiesAreEnabled()) {\n let expirationDate = new Date(timestamp() + NINE_MONTHS_MS).toUTCString();\n storage.setCookie(\n KEY_PROFILE,\n profileId,\n expirationDate,\n 'Lax',\n cookieDomain,\n undefined\n );\n }\n if (storage.hasLocalStorage()) {\n storage.setDataInLocalStorage(KEY_PROFILE, profileId, undefined);\n }\n}\n\n/**\n * Get the Lotame profile id by checking cookies first and then local storage\n */\nfunction getProfileId() {\n let profileId;\n if (storage.cookiesAreEnabled()) {\n profileId = storage.getCookie(KEY_PROFILE, undefined);\n }\n if (!profileId && storage.hasLocalStorage()) {\n profileId = storage.getDataFromLocalStorage(KEY_PROFILE, undefined);\n }\n return profileId;\n}\n\n/**\n * Get a value from browser storage by checking cookies first and then local storage\n * @param {String} key\n */\nfunction getFromStorage(key) {\n let value = null;\n if (storage.cookiesAreEnabled()) {\n value = storage.getCookie(key, undefined);\n }\n if (storage.hasLocalStorage() && value === null) {\n const storedValueExp = storage.getDataFromLocalStorage(\n `${key}_exp`, undefined\n );\n\n if (storedValueExp === '' || storedValueExp === null) {\n value = storage.getDataFromLocalStorage(key, undefined);\n } else if (storedValueExp) {\n if ((new Date(parseInt(storedValueExp, 10))).getTime() - Date.now() > 0) {\n value = storage.getDataFromLocalStorage(key, undefined);\n }\n }\n }\n return value;\n}\n\n/**\n * Save a key/value pair to the browser cache (cookies and local storage)\n * @param {String} key\n * @param {String} value\n * @param {Number} expirationTimestamp\n */\nfunction saveLotameCache(\n key,\n value,\n expirationTimestamp = timestamp() + DAYS_TO_CACHE * DAY_MS\n) {\n if (key && value) {\n let expirationDate = new Date(expirationTimestamp).toUTCString();\n if (storage.cookiesAreEnabled()) {\n storage.setCookie(\n key,\n value,\n expirationDate,\n 'Lax',\n cookieDomain,\n undefined\n );\n }\n if (storage.hasLocalStorage()) {\n storage.setDataInLocalStorage(\n `${key}_exp`,\n String(expirationTimestamp),\n undefined\n );\n storage.setDataInLocalStorage(key, value, undefined);\n }\n }\n}\n\n/**\n * Retrieve all the cached values from cookies and/or local storage\n * @param {Number} clientId\n */\nfunction getLotameLocalCache(clientId = undefined) {\n let cache = {\n data: getFromStorage(KEY_ID),\n expiryTimestampMs: 0,\n clientExpiryTimestampMs: 0,\n };\n\n try {\n if (clientId) {\n const rawClientExpiry = getFromStorage(`${KEY_EXPIRY}_${clientId}`);\n if (isStr(rawClientExpiry)) {\n cache.clientExpiryTimestampMs = parseInt(rawClientExpiry, 10);\n }\n }\n\n const rawExpiry = getFromStorage(KEY_EXPIRY);\n if (isStr(rawExpiry)) {\n cache.expiryTimestampMs = parseInt(rawExpiry, 10);\n }\n } catch (error) {\n logError(error);\n }\n\n return cache;\n}\n\n/**\n * Clear a cached value from cookies and local storage\n * @param {String} key\n */\nfunction clearLotameCache(key) {\n if (key) {\n if (storage.cookiesAreEnabled()) {\n let expirationDate = new Date(0).toUTCString();\n storage.setCookie(\n key,\n '',\n expirationDate,\n 'Lax',\n cookieDomain,\n undefined\n );\n }\n if (storage.hasLocalStorage()) {\n storage.removeDataFromLocalStorage(key, undefined);\n }\n }\n}\n/** @type {Submodule} */\nexport const lotamePanoramaIdSubmodule = {\n /**\n * used to link submodule with config\n * @type {string}\n */\n name: MODULE_NAME,\n\n /**\n * Vendor id of Lotame\n * @type {Number}\n */\n gvlid: GVLID,\n\n /**\n * Decode the stored id value for passing to bid requests\n * @function decode\n * @param {(Object|string)} value\n * @param {SubmoduleConfig|undefined} config\n * @returns {(Object|undefined)}\n */\n decode(value, config) {\n return isStr(value) ? { lotamePanoramaId: value } : undefined;\n },\n\n /**\n * Retrieve the Lotame Panorama Id\n * @function\n * @param {SubmoduleConfig} [config]\n * @param {ConsentData} [consentData]\n * @param {(Object|undefined)} cacheIdObj\n * @returns {IdResponse|undefined}\n */\n getId(config, consentData, cacheIdObj) {\n cookieDomain = lotamePanoramaIdSubmodule.findRootDomain();\n const configParams = (config && config.params) || {};\n const clientId = configParams.clientId;\n const hasCustomClientId = !isEmpty(clientId);\n const localCache = getLotameLocalCache(clientId);\n\n const hasExpiredPanoId = Date.now() > localCache.expiryTimestampMs;\n\n if (hasCustomClientId) {\n const hasFreshClientNoConsent = Date.now() < localCache.clientExpiryTimestampMs;\n if (hasFreshClientNoConsent) {\n // There is no consent\n return {\n id: undefined,\n reason: 'NO_CLIENT_CONSENT',\n };\n }\n }\n\n if (!hasExpiredPanoId) {\n return {\n id: localCache.data,\n };\n }\n\n const storedUserId = getProfileId();\n\n // Add CCPA Consent data handling\n const usp = uspDataHandler.getConsentData();\n\n let usPrivacy;\n if (typeof usp !== 'undefined' && !isEmpty(usp) && !isEmptyStr(usp)) {\n usPrivacy = usp;\n }\n if (!usPrivacy) {\n // fallback to 1st party cookie\n usPrivacy = getFromStorage('us_privacy');\n }\n\n const getRequestHost = function() {\n if (navigator.userAgent && navigator.userAgent.indexOf('Safari') != -1 && navigator.userAgent.indexOf('Chrome') == -1) {\n return ID_HOST_COOKIELESS;\n }\n return ID_HOST;\n }\n\n const resolveIdFunction = function (callback) {\n let queryParams = {};\n if (storedUserId) {\n queryParams.fp = storedUserId;\n }\n\n let consentString;\n if (consentData) {\n if (isBoolean(consentData.gdprApplies)) {\n queryParams.gdpr_applies = consentData.gdprApplies;\n }\n consentString = consentData.consentString;\n }\n // If no consent string, try to read it from 1st party cookies\n if (!consentString) {\n consentString = getFromStorage('eupubconsent-v2');\n }\n if (!consentString) {\n consentString = getFromStorage('euconsent-v2');\n }\n if (consentString) {\n queryParams.gdpr_consent = consentString;\n }\n\n // Add usPrivacy to the url\n if (usPrivacy) {\n queryParams.us_privacy = usPrivacy;\n }\n\n // Add clientId to the url\n if (hasCustomClientId) {\n queryParams.c = clientId;\n }\n\n const url = buildUrl({\n protocol: 'https',\n host: getRequestHost(),\n pathname: '/id',\n search: isEmpty(queryParams) ? undefined : queryParams,\n });\n ajax(\n url,\n (response) => {\n let coreId;\n if (response) {\n try {\n let responseObj = JSON.parse(response);\n const hasNoConsentErrors = !(\n isArray(responseObj.errors) &&\n responseObj.errors.indexOf(MISSING_CORE_CONSENT) !== -1\n );\n\n if (hasCustomClientId) {\n if (hasNoConsentErrors) {\n clearLotameCache(`${KEY_EXPIRY}_${clientId}`);\n } else if (isStr(responseObj.no_consent) && responseObj.no_consent === 'CLIENT') {\n saveLotameCache(\n `${KEY_EXPIRY}_${clientId}`,\n responseObj.expiry_ts,\n responseObj.expiry_ts\n );\n\n // End Processing\n callback();\n return;\n }\n }\n\n saveLotameCache(KEY_EXPIRY, responseObj.expiry_ts, responseObj.expiry_ts);\n\n if (isStr(responseObj.profile_id)) {\n if (hasNoConsentErrors) {\n setProfileId(responseObj.profile_id);\n }\n\n if (isStr(responseObj.core_id)) {\n saveLotameCache(\n KEY_ID,\n responseObj.core_id,\n responseObj.expiry_ts\n );\n coreId = responseObj.core_id;\n } else {\n clearLotameCache(KEY_ID);\n }\n } else {\n if (hasNoConsentErrors) {\n clearLotameCache(KEY_PROFILE);\n }\n clearLotameCache(KEY_ID);\n }\n } catch (error) {\n logError(error);\n }\n }\n callback(coreId);\n },\n undefined,\n {\n method: 'GET',\n withCredentials: true,\n }\n );\n };\n\n return { callback: resolveIdFunction };\n },\n eids: {\n lotamePanoramaId: {\n source: 'crwdcntrl.net',\n atype: 1,\n },\n },\n};\n\nsubmodule('userId', lotamePanoramaIdSubmodule);\n","/* eslint-disable no-console */\nexport const Uid2CodeVersion = '1.1';\n\nfunction isValidIdentity(identity) {\n return !!(typeof identity === 'object' && identity !== null && identity.advertising_token && identity.identity_expires && identity.refresh_from && identity.refresh_token && identity.refresh_expires);\n}\n\n// This is extracted from an in-progress API client. Once it's available via NPM, this class should be replaced with the NPM package.\nexport class Uid2ApiClient {\n constructor(opts, clientId, logInfo, logWarn) {\n this._baseUrl = opts.baseUrl;\n this._clientVersion = clientId;\n this._logInfo = logInfo;\n this._logWarn = logWarn;\n }\n createArrayBuffer(text) {\n const arrayBuffer = new Uint8Array(text.length);\n for (let i = 0; i < text.length; i++) {\n arrayBuffer[i] = text.charCodeAt(i);\n }\n return arrayBuffer;\n }\n hasStatusResponse(response) {\n return typeof (response) === 'object' && response && response.status;\n }\n isValidRefreshResponse(response) {\n return this.hasStatusResponse(response) && (\n response.status === 'optout' || response.status === 'expired_token' || (response.status === 'success' && response.body && isValidIdentity(response.body))\n );\n }\n ResponseToRefreshResult(response) {\n if (this.isValidRefreshResponse(response)) {\n if (response.status === 'success') { return { status: response.status, identity: response.body }; }\n return response;\n } else { return `Response didn't contain a valid status`; }\n }\n callRefreshApi(refreshDetails) {\n const url = this._baseUrl + '/v2/token/refresh';\n const req = new XMLHttpRequest();\n req.overrideMimeType('text/plain');\n req.open('POST', url, true);\n req.setRequestHeader('X-UID2-Client-Version', this._clientVersion);\n let resolvePromise;\n let rejectPromise;\n const promise = new Promise((resolve, reject) => {\n resolvePromise = resolve;\n rejectPromise = reject;\n });\n req.onreadystatechange = () => {\n if (req.readyState !== req.DONE) { return; }\n try {\n if (!refreshDetails.refresh_response_key || req.status !== 200) {\n this._logInfo('Error status OR no response decryption key available, assuming unencrypted JSON');\n const response = JSON.parse(req.responseText);\n const result = this.ResponseToRefreshResult(response);\n if (typeof result === 'string') { rejectPromise(result); } else { resolvePromise(result); }\n } else {\n this._logInfo('Decrypting refresh API response');\n const encodeResp = this.createArrayBuffer(atob(req.responseText));\n window.crypto.subtle.importKey('raw', this.createArrayBuffer(atob(refreshDetails.refresh_response_key)), { name: 'AES-GCM' }, false, ['decrypt']).then((key) => {\n this._logInfo('Imported decryption key')\n // returns the symmetric key\n window.crypto.subtle.decrypt({\n name: 'AES-GCM',\n iv: encodeResp.slice(0, 12),\n tagLength: 128, // The tagLength you used to encrypt (if any)\n }, key, encodeResp.slice(12)).then((decrypted) => {\n const decryptedResponse = String.fromCharCode(...new Uint8Array(decrypted));\n this._logInfo('Decrypted to:', decryptedResponse);\n const response = JSON.parse(decryptedResponse);\n const result = this.ResponseToRefreshResult(response);\n if (typeof result === 'string') { rejectPromise(result); } else { resolvePromise(result); }\n }, (reason) => this._logWarn(`Call to UID2 API failed`, reason));\n }, (reason) => this._logWarn(`Call to UID2 API failed`, reason));\n }\n } catch (err) {\n rejectPromise(err);\n }\n };\n this._logInfo('Sending refresh request', refreshDetails);\n req.send(refreshDetails.refresh_token);\n return promise;\n }\n}\nexport class Uid2StorageManager {\n constructor(storage, preferLocalStorage, storageName, logInfo) {\n this._storage = storage;\n this._preferLocalStorage = preferLocalStorage;\n this._storageName = storageName;\n this._logInfo = logInfo;\n }\n readCookie(cookieName) {\n return this._storage.cookiesAreEnabled() ? this._storage.getCookie(cookieName) : null;\n }\n readLocalStorage(key) {\n return this._storage.localStorageIsEnabled() ? this._storage.getDataFromLocalStorage(key) : null;\n }\n readModuleCookie() {\n return this.parseIfContainsBraces(this.readCookie(this._storageName));\n }\n writeModuleCookie(value) {\n this._storage.setCookie(this._storageName, JSON.stringify(value), Date.now() + 60 * 60 * 24 * 1000);\n }\n readModuleStorage() {\n return this.parseIfContainsBraces(this.readLocalStorage(this._storageName));\n }\n writeModuleStorage(value) {\n this._storage.setDataInLocalStorage(this._storageName, JSON.stringify(value));\n }\n readProvidedCookie(cookieName) {\n return JSON.parse(this.readCookie(cookieName));\n }\n parseIfContainsBraces(value) {\n return (value?.includes('{')) ? JSON.parse(value) : value;\n }\n storeValue(value) {\n if (this._preferLocalStorage) {\n this.writeModuleStorage(value);\n } else {\n this.writeModuleCookie(value);\n }\n }\n\n getStoredValueWithFallback() {\n const preferredStorageLabel = this._preferLocalStorage ? 'local storage' : 'cookie';\n const preferredStorageGet = (this._preferLocalStorage ? this.readModuleStorage : this.readModuleCookie).bind(this);\n const preferredStorageSet = (this._preferLocalStorage ? this.writeModuleStorage : this.writeModuleCookie).bind(this);\n const fallbackStorageGet = (this._preferLocalStorage ? this.readModuleCookie : this.readModuleStorage).bind(this);\n\n const storedValue = preferredStorageGet();\n\n if (!storedValue) {\n const fallbackValue = fallbackStorageGet();\n if (fallbackValue) {\n this._logInfo(`${preferredStorageLabel} was empty, but found a fallback value.`)\n if (typeof fallbackValue === 'object') {\n this._logInfo(`Copying the fallback value to ${preferredStorageLabel}.`);\n preferredStorageSet(fallbackValue);\n }\n return fallbackValue;\n }\n } else if (typeof storedValue === 'string') {\n const fallbackValue = fallbackStorageGet();\n if (fallbackValue && typeof fallbackValue === 'object') {\n this._logInfo(`${preferredStorageLabel} contained a basic token, but found a refreshable token fallback. Copying the fallback value to ${preferredStorageLabel}.`);\n preferredStorageSet(fallbackValue);\n return fallbackValue;\n }\n }\n return storedValue;\n }\n}\n\nfunction refreshTokenAndStore(baseUrl, token, clientId, storageManager, _logInfo, _logWarn) {\n _logInfo('UID2 base url provided: ', baseUrl);\n const client = new Uid2ApiClient({baseUrl}, clientId, _logInfo, _logWarn);\n return client.callRefreshApi(token).then((response) => {\n _logInfo('Refresh endpoint responded with:', response);\n const tokens = {\n originalToken: token,\n latestToken: response.identity,\n };\n storageManager.storeValue(tokens);\n return tokens;\n });\n}\n\nexport function Uid2GetId(config, prebidStorageManager, _logInfo, _logWarn) {\n let suppliedToken = null;\n const preferLocalStorage = (config.storage !== 'cookie');\n const storageManager = new Uid2StorageManager(prebidStorageManager, preferLocalStorage, config.internalStorage, _logInfo);\n _logInfo(`Module is using ${preferLocalStorage ? 'local storage' : 'cookies'} for internal storage.`);\n\n if (config.paramToken) {\n suppliedToken = config.paramToken;\n _logInfo('Read token from params', suppliedToken);\n } else if (config.serverCookieName) {\n suppliedToken = storageManager.readProvidedCookie(config.serverCookieName);\n _logInfo('Read token from server-supplied cookie', suppliedToken);\n }\n let storedTokens = storageManager.getStoredValueWithFallback();\n _logInfo('Loaded module-stored tokens:', storedTokens);\n\n if (storedTokens && typeof storedTokens === 'string') {\n // Stored value is a plain token - if no token is supplied, just use the stored value.\n\n if (!suppliedToken) {\n _logInfo('Returning legacy cookie value.');\n return { id: storedTokens };\n }\n // Otherwise, ignore the legacy value - it should get over-written later anyway.\n _logInfo('Discarding superseded legacy cookie.');\n storedTokens = null;\n }\n\n if (suppliedToken && storedTokens) {\n if (storedTokens.originalToken?.advertising_token !== suppliedToken.advertising_token) {\n _logInfo('Server supplied new token - ignoring stored value.', storedTokens.originalToken?.advertising_token, suppliedToken.advertising_token);\n // Stored token wasn't originally sourced from the provided token - ignore the stored value. A new user has logged in?\n storedTokens = null;\n }\n }\n // At this point, any legacy values or superseded stored tokens have been nulled out.\n const useSuppliedToken = !(storedTokens?.latestToken) || (suppliedToken && suppliedToken.identity_expires > storedTokens.latestToken.identity_expires);\n const newestAvailableToken = useSuppliedToken ? suppliedToken : storedTokens.latestToken;\n _logInfo('UID2 module selected latest token', useSuppliedToken, newestAvailableToken);\n if (!newestAvailableToken || Date.now() > newestAvailableToken.refresh_expires) {\n _logInfo('Newest available token is expired and not refreshable.');\n return { id: null };\n }\n if (Date.now() > newestAvailableToken.identity_expires) {\n const promise = refreshTokenAndStore(config.apiBaseUrl, newestAvailableToken, config.clientId, storageManager, _logInfo, _logWarn);\n _logInfo('Token is expired but can be refreshed, attempting refresh.');\n return { callback: (cb) => {\n promise.then((result) => {\n _logInfo('Refresh reponded, passing the updated token on.', result);\n cb(result);\n });\n } };\n }\n // If should refresh (but don't need to), refresh in the background.\n if (Date.now() > newestAvailableToken.refresh_from) {\n _logInfo(`Refreshing token in background with low priority.`);\n refreshTokenAndStore(config.apiBaseUrl, newestAvailableToken, config.clientId, storageManager, _logInfo, _logWarn);\n }\n const tokens = {\n originalToken: suppliedToken ?? storedTokens?.originalToken,\n latestToken: newestAvailableToken,\n };\n storageManager.storeValue(tokens);\n return { id: tokens };\n}\n","/* eslint-disable no-console */\n/**\n * This module adds uid2 ID support to the User ID module\n * The {@link module:modules/userId} module is required.\n * @module modules/uid2IdSystem\n * @requires module:modules/userId\n */\n\nimport { logInfo, logWarn } from '../src/utils.js';\nimport {submodule} from '../src/hook.js';\nimport {getStorageManager} from '../src/storageManager.js';\nimport {MODULE_TYPE_UID} from '../src/activities/modules.js';\n\n// RE below lint exception: UID2 and EUID are separate modules, but the protocol is the same and shared code makes sense here.\n// eslint-disable-next-line prebid/validate-imports\nimport { Uid2GetId, Uid2CodeVersion } from './uid2IdSystem_shared.js';\n\nconst MODULE_NAME = 'uid2';\nconst MODULE_REVISION = Uid2CodeVersion;\nconst PREBID_VERSION = '$prebid.version$';\nconst UID2_CLIENT_ID = `PrebidJS-${PREBID_VERSION}-UID2Module-${MODULE_REVISION}`;\nconst LOG_PRE_FIX = 'UID2: ';\nconst ADVERTISING_COOKIE = '__uid2_advertising_token';\n\n// eslint-disable-next-line no-unused-vars\nconst UID2_TEST_URL = 'https://operator-integ.uidapi.com';\nconst UID2_PROD_URL = 'https://prod.uidapi.com';\nconst UID2_BASE_URL = UID2_PROD_URL;\n\nfunction createLogger(logger, prefix) {\n return function (...strings) {\n logger(prefix + ' ', ...strings);\n }\n}\nconst _logInfo = createLogger(logInfo, LOG_PRE_FIX);\nconst _logWarn = createLogger(logWarn, LOG_PRE_FIX);\n\nexport const storage = getStorageManager({moduleType: MODULE_TYPE_UID, moduleName: MODULE_NAME});\n\n/** @type {Submodule} */\nexport const uid2IdSubmodule = {\n /**\n * used to link submodule with config\n * @type {string}\n */\n name: MODULE_NAME,\n\n /**\n * decode the stored id value for passing to bid requests\n * @function\n * @param {string} value\n * @returns {{uid2:{ id: string } }} or undefined if value doesn't exists\n */\n decode(value) {\n const result = decodeImpl(value);\n _logInfo('UID2 decode returned', result);\n return result;\n },\n\n /**\n * performs action to obtain id and return a value.\n * @function\n * @param {SubmoduleConfig} [configparams]\n * @param {ConsentData|undefined} consentData\n * @returns {uid2Id}\n */\n getId(config, consentData) {\n if (consentData?.gdprApplies === true) {\n _logWarn('UID2 is not intended for use where GDPR applies. The UID2 module will not run.');\n return;\n }\n\n const mappedConfig = {\n apiBaseUrl: config?.params?.uid2ApiBase ?? UID2_BASE_URL,\n paramToken: config?.params?.uid2Token,\n serverCookieName: config?.params?.uid2Cookie ?? config?.params?.uid2ServerCookie,\n storage: config?.params?.storage ?? 'localStorage',\n clientId: UID2_CLIENT_ID,\n internalStorage: ADVERTISING_COOKIE\n }\n _logInfo(`UID2 configuration loaded and mapped.`, mappedConfig);\n const result = Uid2GetId(mappedConfig, storage, _logInfo, _logWarn);\n _logInfo(`UID2 getId returned`, result);\n return result;\n },\n eids: {\n 'uid2': {\n source: 'uidapi.com',\n atype: 3,\n getValue: function(data) {\n return data.id;\n },\n getUidExt: function(data) {\n if (data.ext) {\n return data.ext;\n }\n }\n },\n },\n};\n\nfunction decodeImpl(value) {\n if (typeof value === 'string') {\n _logInfo('Found server-only token. Refresh is unavailable for this token.');\n const result = { uid2: { id: value } };\n return result;\n }\n if (Date.now() < value.latestToken.identity_expires) {\n return { uid2: { id: value.latestToken.advertising_token } };\n }\n return null;\n}\n\n// Register submodule for userId\nsubmodule('userId', uid2IdSubmodule);\n","/**\n * Provides mapping objects used by bidders for categoryTranslation type logic for Adpod feature\n */\nexport const APPNEXUS_CATEGORY_MAPPING = {\n '1': 'IAB20-3',\n '2': 'IAB18-5',\n '3': 'IAB10-1',\n '4': 'IAB2-3',\n '5': 'IAB19-8',\n '6': 'IAB22-1',\n '7': 'IAB18-1',\n '8': 'IAB12-3',\n '9': 'IAB5-1',\n '10': 'IAB4-5',\n '11': 'IAB13-4',\n '12': 'IAB8-7',\n '13': 'IAB9-7',\n '14': 'IAB7-1',\n '15': 'IAB20-18',\n '16': 'IAB10-7',\n '17': 'IAB19-18',\n '18': 'IAB13-6',\n '19': 'IAB18-4',\n '20': 'IAB1-5',\n '21': 'IAB1-6',\n '22': 'IAB3-4',\n '23': 'IAB19-13',\n '24': 'IAB22-2',\n '25': 'IAB3-9',\n '26': 'IAB17-18',\n '27': 'IAB19-6',\n '28': 'IAB1-7',\n '29': 'IAB9-30',\n '30': 'IAB20-7',\n '31': 'IAB20-17',\n '32': 'IAB7-32',\n '33': 'IAB16-5',\n '34': 'IAB19-34',\n '35': 'IAB11-5',\n '36': 'IAB12-3',\n '37': 'IAB11-4',\n '38': 'IAB12-3',\n '39': 'IAB9-30',\n '41': 'IAB7-44',\n '42': 'IAB7-1',\n '43': 'IAB7-30',\n '50': 'IAB19-30',\n '51': 'IAB17-12',\n '52': 'IAB19-30',\n '53': 'IAB3-1',\n '55': 'IAB13-2',\n '56': 'IAB19-30',\n '57': 'IAB19-30',\n '58': 'IAB7-39',\n '59': 'IAB22-1',\n '60': 'IAB7-39',\n '61': 'IAB21-3',\n '62': 'IAB5-1',\n '63': 'IAB12-3',\n '64': 'IAB20-18',\n '65': 'IAB11-2',\n '66': 'IAB17-18',\n '67': 'IAB9-9',\n '68': 'IAB9-5',\n '69': 'IAB7-44',\n '71': 'IAB22-3',\n '73': 'IAB19-30',\n '74': 'IAB8-5',\n '78': 'IAB22-1',\n '85': 'IAB12-2',\n '86': 'IAB22-3',\n '87': 'IAB11-3',\n '112': 'IAB7-32',\n '113': 'IAB7-32',\n '114': 'IAB7-32',\n '115': 'IAB7-32',\n '118': 'IAB9-5',\n '119': 'IAB9-5',\n '120': 'IAB9-5',\n '121': 'IAB9-5',\n '122': 'IAB9-5',\n '123': 'IAB9-5',\n '124': 'IAB9-5',\n '125': 'IAB9-5',\n '126': 'IAB9-5',\n '127': 'IAB22-1',\n '132': 'IAB1-2',\n '133': 'IAB19-30',\n '137': 'IAB3-9',\n '138': 'IAB19-3',\n '140': 'IAB2-3',\n '141': 'IAB2-1',\n '142': 'IAB2-3',\n '143': 'IAB17-13',\n '166': 'IAB11-4',\n '175': 'IAB3-1',\n '176': 'IAB13-4',\n '182': 'IAB8-9',\n '183': 'IAB3-5'\n};\n","import {CLIENT_SECTIONS} from '../../src/fpd/oneClient.js';\nimport {deepAccess} from '../../src/utils.js';\n\nconst ORTB_KEYWORDS_PATHS = ['user.keywords'].concat(\n CLIENT_SECTIONS.flatMap((prefix) => ['keywords', 'content.keywords'].map(suffix => `${prefix}.${suffix}`))\n);\n\n/**\n * @param commaSeparatedKeywords: any number of either keyword arrays, or comma-separated keyword strings\n * @returns an array with all unique keywords contained across all inputs\n */\nexport function mergeKeywords(...commaSeparatedKeywords) {\n const keywords = new Set();\n commaSeparatedKeywords\n .filter(kwds => kwds)\n .flatMap(kwds => Array.isArray(kwds) ? kwds : kwds.split(','))\n .map(kw => kw.replace(/^\\s*/, '').replace(/\\s*$/, ''))\n .filter(kw => kw)\n .forEach(kw => keywords.add(kw));\n return Array.from(keywords.keys());\n}\n\n/**\n * Get an array with all keywords contained in an ortb2 object.\n */\nexport function getAllOrtbKeywords(ortb2, ...extraCommaSeparatedKeywords) {\n return mergeKeywords(\n ...ORTB_KEYWORDS_PATHS.map(path => deepAccess(ortb2, path)),\n ...extraCommaSeparatedKeywords\n )\n}\n","import {_each, deepAccess, getValueString, isArray, isStr, mergeDeep, isNumber} from '../../src/utils.js';\nimport {getAllOrtbKeywords} from '../keywords/keywords.js';\nimport {CLIENT_SECTIONS} from '../../src/fpd/oneClient.js';\n\nconst ORTB_SEGTAX_KEY_MAP = {\n 526: '1plusX',\n 527: '1plusX',\n 541: 'captify_segments',\n 540: 'perid'\n};\nconst ORTB_SEG_PATHS = ['user.data'].concat(\n CLIENT_SECTIONS.map((prefix) => `${prefix}.content.data`)\n);\n\n/**\n * Converts an object of arrays (either strings or numbers) into an array of objects containing key and value properties\n * normally read from bidder params\n * eg { foo: ['bar', 'baz'], fizz: ['buzz'] }\n * becomes [{ key: 'foo', value: ['bar', 'baz']}, {key: 'fizz', value: ['buzz']}]\n * @param {Object} keywords object of arrays representing keyvalue pairs\n * @param {string} paramName name of parent object (eg 'keywords') containing keyword data, used in error handling\n * @returns {Array<{key, value}>}\n */\nexport function transformBidderParamKeywords(keywords, paramName = 'keywords') {\n const arrs = [];\n\n _each(keywords, (v, k) => {\n if (isArray(v)) {\n let values = [];\n _each(v, (val) => {\n val = getValueString(paramName + '.' + k, val);\n if (val || val === '') {\n values.push(val);\n }\n });\n v = values;\n } else {\n v = getValueString(paramName + '.' + k, v);\n if (isStr(v)) {\n v = [v];\n } else {\n return;\n } // unsuported types - don't send a key\n }\n v = v.filter(kw => kw !== '')\n const entry = {key: k}\n if (v.length > 0) {\n entry.value = v;\n }\n arrs.push(entry);\n });\n\n return arrs;\n}\n\n// converts a comma separated list of keywords into the standard keyword object format used in appnexus bid params\n// 'genre=rock,genre=pop,pets=dog,music' goes to { 'genre': ['rock', 'pop'], 'pets': ['dog'], 'music': [''] }\nexport function convertKeywordStringToANMap(keyStr) {\n if (isStr(keyStr) && keyStr !== '') {\n // will split based on commas and will eat white space before/after the comma\n return convertKeywordsToANMap(keyStr.split(/\\s*(?:,)\\s*/));\n } else {\n return {}\n }\n}\n\n/**\n * @param {Array} kwarray: keywords as an array of strings\n * @return {{}} appnexus-style keyword map\n */\nfunction convertKeywordsToANMap(kwarray) {\n const result = {};\n kwarray.forEach(kw => {\n // if = exists, then split\n if (kw.indexOf('=') !== -1) {\n let kwPair = kw.split('=');\n let key = kwPair[0];\n let val = kwPair[1];\n\n // then check for existing key in result > if so add value to the array > if not, add new key and create value array\n if (result.hasOwnProperty(key)) {\n result[key].push(val);\n } else {\n result[key] = [val];\n }\n } else {\n if (!result.hasOwnProperty(kw)) {\n result[kw] = [];\n }\n }\n })\n return result;\n}\n\n/**\n * @param ortb2\n * @return {{}} appnexus-style keyword map using all keywords contained in ortb2\n */\nexport function getANMapFromOrtbKeywords(ortb2) {\n return convertKeywordsToANMap(getAllOrtbKeywords(ortb2));\n}\n\nexport function getANKewyordParamFromMaps(...anKeywordMaps) {\n return transformBidderParamKeywords(\n mergeDeep(...anKeywordMaps.map(kwMap => Object.fromEntries(\n Object.entries(kwMap || {})\n .map(([k, v]) => [k, (isNumber(v) || isStr(v)) ? [v] : v])\n )))\n )\n}\n\nexport function getANKeywordParam(ortb2, ...anKeywordsMaps) {\n return getANKewyordParamFromMaps(\n getANMapFromOrtbKeywords(ortb2),\n getANMapFromOrtbSegments(ortb2),\n ...anKeywordsMaps\n )\n}\n\nexport function getANMapFromOrtbSegments(ortb2) {\n let ortbSegData = {};\n ORTB_SEG_PATHS.forEach(path => {\n let ortbSegsArrObj = deepAccess(ortb2, path) || [];\n ortbSegsArrObj.forEach(segObj => {\n // only read segment data from known sources\n const segtax = ORTB_SEGTAX_KEY_MAP[deepAccess(segObj, 'ext.segtax')];\n if (segtax) {\n segObj.segment.forEach(seg => {\n // if source was in multiple locations of ortb or had multiple segments in same area, stack them together into an array\n if (ortbSegData[segtax]) {\n ortbSegData[segtax].push(seg.id);\n } else {\n ortbSegData[segtax] = [seg.id]\n }\n });\n }\n });\n });\n return ortbSegData;\n}\n","import {\n chunk,\n convertCamelToUnderscore,\n convertTypes,\n createTrackPixelHtml,\n deepAccess,\n deepClone,\n fill,\n getBidRequest,\n getMaxValueFromArray,\n getMinValueFromArray,\n getParameterByName,\n getUniqueIdentifierStr,\n getWindowFromDocument,\n isArray,\n isArrayOfNums,\n isEmpty,\n isFn,\n isNumber,\n isPlainObject,\n isStr,\n logError,\n logInfo,\n logMessage,\n logWarn\n} from '../src/utils.js';\nimport {Renderer} from '../src/Renderer.js';\nimport {config} from '../src/config.js';\nimport {registerBidder} from '../src/adapters/bidderFactory.js';\nimport {ADPOD, BANNER, NATIVE, VIDEO} from '../src/mediaTypes.js';\nimport {find, includes} from '../src/polyfill.js';\nimport {INSTREAM, OUTSTREAM} from '../src/video.js';\nimport {getStorageManager} from '../src/storageManager.js';\nimport {bidderSettings} from '../src/bidderSettings.js';\nimport {hasPurpose1Consent} from '../src/utils/gpdr.js';\nimport {convertOrtbRequestToProprietaryNative} from '../src/native.js';\nimport {APPNEXUS_CATEGORY_MAPPING} from '../libraries/categoryTranslationMapping/index.js';\nimport {\n convertKeywordStringToANMap,\n getANKewyordParamFromMaps,\n getANKeywordParam,\n transformBidderParamKeywords\n} from '../libraries/appnexusKeywords/anKeywords.js';\n\nconst BIDDER_CODE = 'appnexus';\nconst URL = 'https://ib.adnxs.com/ut/v3/prebid';\nconst URL_SIMPLE = 'https://ib.adnxs-simple.com/ut/v3/prebid';\nconst VIDEO_TARGETING = ['id', 'minduration', 'maxduration',\n 'skippable', 'playback_method', 'frameworks', 'context', 'skipoffset'];\nconst VIDEO_RTB_TARGETING = ['minduration', 'maxduration', 'skip', 'skipafter', 'playbackmethod', 'api', 'startdelay'];\nconst USER_PARAMS = ['age', 'externalUid', 'external_uid', 'segments', 'gender', 'dnt', 'language'];\nconst APP_DEVICE_PARAMS = ['geo', 'device_id']; // appid is collected separately\nconst DEBUG_PARAMS = ['enabled', 'dongle', 'member_id', 'debug_timeout'];\nconst DEBUG_QUERY_PARAM_MAP = {\n 'apn_debug_dongle': 'dongle',\n 'apn_debug_member_id': 'member_id',\n 'apn_debug_timeout': 'debug_timeout'\n};\nconst VIDEO_MAPPING = {\n playback_method: {\n 'unknown': 0,\n 'auto_play_sound_on': 1,\n 'auto_play_sound_off': 2,\n 'click_to_play': 3,\n 'mouse_over': 4,\n 'auto_play_sound_unknown': 5\n },\n context: {\n 'unknown': 0,\n 'pre_roll': 1,\n 'mid_roll': 2,\n 'post_roll': 3,\n 'outstream': 4,\n 'in-banner': 5\n }\n};\nconst NATIVE_MAPPING = {\n body: 'description',\n body2: 'desc2',\n cta: 'ctatext',\n image: {\n serverName: 'main_image',\n requiredParams: { required: true }\n },\n icon: {\n serverName: 'icon',\n requiredParams: { required: true }\n },\n sponsoredBy: 'sponsored_by',\n privacyLink: 'privacy_link',\n salePrice: 'saleprice',\n displayUrl: 'displayurl'\n};\nconst SOURCE = 'pbjs';\nconst MAX_IMPS_PER_REQUEST = 15;\nconst SCRIPT_TAG_START = '`;\n bid.ad = bid.ad.replace(/]*>/, match => match + s);\n\n this.installListener();\n },\n\n installListener() {\n if (this._listenerInstalled) {\n return;\n }\n\n window.addEventListener('message', function(e) {\n const data = e.data?.razr?.load;\n if (!data) {\n return;\n }\n\n if (e.source) {\n data.source = e.source;\n if (data.id) {\n e.source.postMessage({\n razr: {\n id: data.id\n }\n }, '*');\n }\n }\n\n const ns = window.razr = window.razr || {};\n ns.q = ns.q || [];\n ns.q.push(data);\n\n if (!ns.loaded) {\n loadExternalScript(ID_RAZR.RENDERER_URL, BIDDER_CODE);\n }\n });\n\n this._listenerInstalled = true;\n }\n};\n","'use strict';\n\nimport {BANNER} from '../src/mediaTypes.js';\nimport {getAdUnitSizes, getWindowSelf, getWindowTop, isFn, logWarn} from '../src/utils.js';\nimport {registerBidder} from '../src/adapters/bidderFactory.js';\nimport {ajax} from '../src/ajax.js';\n\nconst BIDDER_CODE = 'ogury';\nconst GVLID = 31;\nconst DEFAULT_TIMEOUT = 1000;\nconst BID_HOST = 'https://mweb-hb.presage.io/api/header-bidding-request';\nconst TIMEOUT_MONITORING_HOST = 'https://ms-ads-monitoring-events.presage.io';\nconst MS_COOKIE_SYNC_DOMAIN = 'https://ms-cookie-sync.presage.io';\nconst ADAPTER_VERSION = '1.5.0';\n\nfunction getClientWidth() {\n const documentElementClientWidth = window.top.document.documentElement.clientWidth\n ? window.top.document.documentElement.clientWidth\n : 0\n const innerWidth = window.top.innerWidth ? window.top.innerWidth : 0\n const outerWidth = window.top.outerWidth ? window.top.outerWidth : 0\n const screenWidth = window.top.screen.width ? window.top.screen.width : 0\n\n return documentElementClientWidth || innerWidth || outerWidth || screenWidth\n}\n\nfunction getClientHeight() {\n const documentElementClientHeight = window.top.document.documentElement.clientHeight\n ? window.top.document.documentElement.clientHeight\n : 0\n const innerHeight = window.top.innerHeight ? window.top.innerHeight : 0\n const outerHeight = window.top.outerHeight ? window.top.outerHeight : 0\n const screenHeight = window.top.screen.height ? window.top.screen.height : 0\n\n return documentElementClientHeight || innerHeight || outerHeight || screenHeight\n}\n\nfunction isBidRequestValid(bid) {\n const adUnitSizes = getAdUnitSizes(bid);\n\n const isValidSizes = Boolean(adUnitSizes) && adUnitSizes.length > 0;\n const isValidAdUnitId = !!bid.params.adUnitId;\n const isValidAssetKey = !!bid.params.assetKey;\n\n return (isValidSizes && isValidAdUnitId && isValidAssetKey);\n}\n\nfunction getUserSyncs(syncOptions, serverResponses, gdprConsent, uspConsent) {\n const consent = (gdprConsent && gdprConsent.consentString) || '';\n\n if (syncOptions.iframeEnabled) {\n return [\n {\n type: 'iframe',\n url: `${MS_COOKIE_SYNC_DOMAIN}/user-sync.html?gdpr_consent=${consent}&source=prebid`\n }\n ];\n }\n\n if (syncOptions.pixelEnabled) {\n return [\n {\n type: 'image',\n url: `${MS_COOKIE_SYNC_DOMAIN}/v1/init-sync/bid-switch?iab_string=${consent}&source=prebid`\n },\n {\n type: 'image',\n url: `${MS_COOKIE_SYNC_DOMAIN}/ttd/init-sync?iab_string=${consent}&source=prebid`\n },\n {\n type: 'image',\n url: `${MS_COOKIE_SYNC_DOMAIN}/xandr/init-sync?iab_string=${consent}&source=prebid`\n }\n ];\n }\n\n return [];\n}\n\nfunction buildRequests(validBidRequests, bidderRequest) {\n const openRtbBidRequestBanner = {\n id: bidderRequest.bidderRequestId,\n tmax: DEFAULT_TIMEOUT,\n at: 1,\n regs: {\n ext: {\n gdpr: bidderRequest.gdprConsent && bidderRequest.gdprConsent.gdprApplies ? 1 : 0\n },\n },\n site: {\n domain: location.hostname,\n page: location.href\n },\n user: {\n ext: {\n consent: ''\n }\n },\n imp: [],\n ext: {\n adapterversion: ADAPTER_VERSION,\n prebidversion: '$prebid.version$'\n },\n device: {\n w: getClientWidth(),\n h: getClientHeight(),\n pxratio: window.devicePixelRatio\n }\n };\n\n if (bidderRequest.gdprConsent && bidderRequest.gdprConsent.consentString) {\n openRtbBidRequestBanner.user.ext.consent = bidderRequest.gdprConsent.consentString\n }\n\n validBidRequests.forEach((bidRequest) => {\n const sizes = getAdUnitSizes(bidRequest)\n .map(size => ({ w: size[0], h: size[1] }));\n\n if (bidRequest.mediaTypes &&\n bidRequest.mediaTypes.hasOwnProperty('banner')) {\n openRtbBidRequestBanner.site.id = bidRequest.params.assetKey;\n const floor = getFloor(bidRequest);\n\n openRtbBidRequestBanner.imp.push({\n id: bidRequest.bidId,\n tagid: bidRequest.params.adUnitId,\n ...(floor && {bidfloor: floor}),\n banner: {\n format: sizes\n },\n ext: {\n ...bidRequest.params,\n timeSpentOnPage: document.timeline && document.timeline.currentTime ? document.timeline.currentTime : 0\n }\n });\n }\n });\n\n return {\n method: 'POST',\n url: BID_HOST,\n data: openRtbBidRequestBanner,\n options: {contentType: 'application/json'},\n };\n}\n\nfunction interpretResponse(openRtbBidResponse) {\n if (!openRtbBidResponse ||\n !openRtbBidResponse.body ||\n typeof openRtbBidResponse.body != 'object' ||\n Object.keys(openRtbBidResponse.body).length === 0) {\n logWarn('no response or body is malformed');\n return [];\n }\n\n const bidResponses = [];\n\n openRtbBidResponse.body.seatbid.forEach((seatbid) => {\n seatbid.bid.forEach((bid) => {\n let bidResponse = {\n requestId: bid.impid,\n cpm: bid.price,\n currency: 'USD',\n width: bid.w,\n height: bid.h,\n creativeId: bid.id,\n netRevenue: true,\n ttl: 60,\n ext: bid.ext,\n meta: {\n advertiserDomains: bid.adomain\n },\n nurl: bid.nurl,\n adapterVersion: ADAPTER_VERSION,\n prebidVersion: '$prebid.version$'\n };\n\n bidResponse.ad = bid.adm;\n\n bidResponses.push(bidResponse);\n });\n });\n return bidResponses;\n}\n\nfunction getFloor(bid) {\n if (!isFn(bid.getFloor)) {\n return 0;\n }\n let floorResult = bid.getFloor({\n currency: 'USD',\n mediaType: 'banner',\n size: '*'\n });\n return floorResult.currency === 'USD' ? floorResult.floor : 0;\n}\n\nfunction getWindowContext() {\n try {\n return getWindowTop()\n } catch (e) {\n return getWindowSelf()\n }\n}\n\nfunction onBidWon(bid) {\n const w = getWindowContext()\n w.OG_PREBID_BID_OBJECT = {\n ...(bid && { ...bid }),\n }\n if (bid && bid.nurl) ajax(bid.nurl, null);\n}\n\nfunction onTimeout(timeoutData) {\n ajax(`${TIMEOUT_MONITORING_HOST}/bid_timeout`, null, JSON.stringify({...timeoutData[0], location: window.location.href}), {\n method: 'POST',\n contentType: 'application/json'\n });\n}\n\nexport const spec = {\n code: BIDDER_CODE,\n gvlid: GVLID,\n supportedMediaTypes: [BANNER],\n isBidRequestValid,\n getUserSyncs,\n buildRequests,\n interpretResponse,\n getFloor,\n onBidWon,\n getWindowContext,\n onTimeout\n}\n\nregisterBidder(spec);\n","import Helpers from '../helpers';\nimport Targeting from './targeting';\nimport Prebid from './prebid';\n\n/**\n * Import Prebid and required modules\n * https://github.com/prebid/Prebid.js/blob/master/README.md\n * https://docs.prebid.org/download.html\n **/\nimport pbjs from 'prebid.js';\n\nimport 'prebid.js/modules/consentManagement';\nimport 'prebid.js/modules/fpdModule';\nimport 'prebid.js/modules/gdprEnforcement';\nimport 'prebid.js/modules/gptPreAuction';\nimport 'prebid.js/modules/currency';\n\nimport 'prebid.js/modules/enrichmentFpdModule';\nimport 'prebid.js/modules/brandmetricsRtdProvider';\n\nimport 'prebid.js/modules/userId';\nimport 'prebid.js/modules/sharedIdSystem';\nimport 'prebid.js/modules/lotamePanoramaIdSystem';\nimport 'prebid.js/modules/uid2IdSystem';\n\nimport 'prebid.js/modules/appnexusBidAdapter';\nimport 'prebid.js/modules/ixBidAdapter';\nimport 'prebid.js/modules/criteoBidAdapter';\nimport 'prebid.js/modules/ozoneBidAdapter';\nimport 'prebid.js/modules/adyoulikeBidAdapter';\nimport 'prebid.js/modules/improvedigitalBidAdapter';\nimport 'prebid.js/modules/oguryBidAdapter';\n\n/** Conditional Imports */\n\n////////////////////////////\n///////////////////////////////////////////////////////\n//////////////////////////////////////////////////////////////////////////////////\n//////////////////////////////////////////////////////////////////////////////\n////////////////////////////////////////////////////////////////////\n/////////////////////////////////////////////////////////////////////\n//////////\n\n///////////////////////////\n/////////////////////////////////////////////////////////////////\n////////////////////////////////////////////////////////////////////////////////////////////\n/////////////////////////////////////////////////////////////////////////////////////////\n//////////////////////////////////////////////////////////////////////////////\n//////////\n\n//////////////////////////\n import { prebidConfig } from '../inc/config/puzzler';\n import { responsiveSlotPlacements } from '../inc/placements/responsive/puzzler';\n import { responsiveSlotDefinitions } from '../inc/slots/responsive/wpcluster';\n import { fluidSlotDefinitions } from '../inc/slots/fluid/puzzler';\n//////////\n\n/** Expose Prebid API */\nwindow.pbjs = pbjs;\n\nexport default class GPT {\n\n /**\n * Inserts the Google Publisher Tag script (gpt.js)\n */\n static insert = () => {\n const element = document.createElement( 'script' );\n const url = 'https://securepubads.g.doubleclick.net/tag/js/gpt.js';\n element.async = true;\n element.type = 'text/javascript';\n element.src = url;\n document.getElementsByTagName( 'head' )[0].appendChild( element );\n };\n\n /**\n * Runs the top level advertising logic\n *\n * @param tcData - The users consent data object\n * @returns {Promise}\n */\n static enable = async ( tcData ) => {\n\n // Insert GPT (Google Publisher Tag Script)\n this.insert();\n\n // Check if we have consent for personalised ads (returns true if we have consent) usage ref: https://support.google.com/admanager/answer/7678538?hl=en\n const personalisedAdsAllowed = await Helpers.isPersonalisedAllowed( tcData );\n\n // Wait for the googletag API to be ready\n await Helpers.googletagLoaded( 10000 );\n console.log( 'GPT Loaded' );\n\n // Process Prebid Queue (Required)\n pbjs.processQueue();\n\n // Set Prebid Config\n let config = prebidConfig;\n if ( ADVERTISING_PAGE_DATA.debug === 'true' ) {\n config.debug = true;\n }\n pbjs.setConfig( config );\n\n /** Start native slot placement ( WPC Cluster only ) */\n////////////////////////////////\n////////////////////////////////////////////////////////////////\n//////////////\n\n // User activity tracking\n window.userActivityTimeout = 120;\n window.userLastActivity = Math.floor( Date.now() / 1000 );\n\n // Init user activity listeners\n document.addEventListener( 'mousemove', Helpers.userActivity, {passive: true} );\n document.addEventListener( 'mousedown', Helpers.userActivity, {passive: true} );\n document.addEventListener( 'keypress', Helpers.userActivity, {passive: true} );\n document.addEventListener( 'touchmove', Helpers.userActivity, {passive: true} );\n document.addEventListener( 'gesture', Helpers.userActivity, {passive: true} );\n document.addEventListener( 'deviceorientation', Helpers.userActivity, {passive: true} );\n document.addEventListener( 'swipe', Helpers.userActivity, {passive: true} );\n\n // Set legacy dynamic page targeting\n ADVERTISING_PAGE_DATA['inskin_yes'] = (screen.width >= 1255 ? 'true' : 'false');\n ADVERTISING_PAGE_DATA['pses_yes'] = (screen.width >= 1140 ? 'true' : 'false');\n\n // Get the on page slot divs\n const adSlotDivs = document.querySelectorAll( 'div[rel=\"advert\"]' );\n\n // Set slot targeting info\n let adSlots = await Targeting.setDefaults( adSlotDivs, responsiveSlotPlacements, responsiveSlotDefinitions );\n\n // Prepare the formatted slot data for submission to prebid, excluding out of page slots\n let formattedAdSlots = await Prebid.prepSlotsForAuction( adSlots, fluidSlotDefinitions );\n\n googletag.collapsable = true;\n googletag.zone = ADVERTISING_PAGE_DATA.zone;\n\n googletag.pubads().disableInitialLoad();\n\n // Pass the formatted ad slots to prebid excluding off page slots\n pbjs.addAdUnits( formattedAdSlots );\n\n let viewport = Helpers.getViewportDimentions();\n\n // For each slot\n for ( let i = 0; i < adSlots.length; i++ ) {\n\n // Define the slot\n if ( adSlots[i].type === 'legacy' ) {\n adSlots[i].gSlotDef = googletag\n .defineSlot( ADVERTISING_PAGE_DATA.zone, adSlots[i].sizes, adSlots[i].id );\n } else if ( adSlots[i].type === 'fluid-native' ) {\n adSlots[i].gSlotDef = googletag\n .defineSlot( ADVERTISING_PAGE_DATA.zone, 'fluid', adSlots[i].id );\n } else {\n adSlots[i].gSlotDef = googletag\n .defineSlot( ADVERTISING_PAGE_DATA.zone, adSlots[i].bidSizes.arrays, adSlots[i].id )\n .defineSizeMapping( adSlots[i].mappings );\n }\n\n // Set slot level targeting values for all slots\n adSlots[i].gSlotDef\n .setTargeting( 'type', adSlots[i].type )\n .setTargeting( 'position', adSlots[i].position )\n .setTargeting( 'viewport_width', viewport.width )\n .setTargeting( 'viewport_height', viewport.height );\n\n // Set slot_id parameter for fluid slots\n if ( adSlots[i].type === 'fluid-native' ) {\n adSlots[i].gSlotDef\n .setTargeting( 'slot_id', adSlots[i].id );\n }\n\n // Set legacy targeting values if they are defined\n if ( adSlots[i].legacyTargeting ) {\n for ( let ii = 0; ii < adSlots[i].legacyTargeting.length; ++ii ) {\n adSlots[i].gSlotDef.setTargeting( adSlots[i].legacyTargeting[ii].key, adSlots[i].legacyTargeting[ii].value );\n }\n }\n\n // Enable companion ad service ( excluding off page and native slots )\n if ( ! adSlots[i].offPage && adSlots[i].type !== 'fluid-native' ) {\n adSlots[i].gSlotDef\n .addService( googletag.companionAds() );\n }\n\n // Enable pubads service\n adSlots[i].gSlotDef\n .addService( googletag.pubads() );\n\n // Request bids for on-page slots & refresh when an ad slot is entering the viewport\n Helpers.observedElementInView( '#' + adSlots[i].id, async function () {\n GPT.requestBids( adSlots[i] );\n }, 1 );\n\n }\n\n // setRequestNonPersonalizedAds true if personalised ads are not allowed otherwise set false\n if ( ! personalisedAdsAllowed ) {\n googletag.pubads().setRequestNonPersonalizedAds( 1 );\n }\n\n // Set page targeting values\n for ( const [ key, value ] of Object.entries( ADVERTISING_PAGE_DATA ) ) {\n googletag.pubads().setTargeting( key, value );\n }\n\n // Set permutive targeting values\n if ( googletag.pubads().getTargeting( 'permutive' ).length === 0 ) {\n let kvs = localStorage.getItem( '_pdfps' );\n googletag.pubads().setTargeting( 'permutive', kvs ? JSON.parse( kvs ) : [] );\n }\n\n // Define Off Page (As per legacy implementation)\n googletag.defineOutOfPageSlot( ADVERTISING_PAGE_DATA.zone );\n // Enable single request\n googletag.pubads().enableSingleRequest();\n // Enable collapsing of empty ad slots\n\n // Force centering of ads\n googletag.pubads().setCentering( true );\n // Enable services\n googletag.enableServices();\n\n // Start ad refresh logic (refreshes in view ads after a period of user inactivity)\n googletag.pubads().addEventListener( 'impressionViewable', function ( event ) {\n\n let elementId = event.slot.getSlotElementId();\n\n for ( let i = 0; i < adSlots.length; i++ ) {\n\n if ( adSlots[i].id === elementId ) {\n\n // Don't refresh fluid or off page slots (causes too much layout shift)\n if ( adSlots[i].type !== 'fluid-native' && ! adSlots[i].offPage && ! adSlots[i].observed ) {\n\n GPT.adObserver( adSlots[i] );\n adSlots[i].observed = true;\n\n }\n\n }\n\n }\n } );\n\n // Hide unfilled native slots\n googletag.pubads().addEventListener( 'slotRenderEnded', function ( event ) {\n\n let slot = event.slot;\n let id = slot.getSlotElementId();\n let element = document.getElementById( id );\n let type = element.getAttribute( 'data-slot-type' );\n let style = element.getAttribute( 'data-slot-style' );\n let sizes = element.getAttribute( 'data-ad-sizes' );\n let empty = event.isEmpty;\n\n if ( empty ) {\n // If no ad was rendered into the fluid slot hide it and un-hide the original article block, excluding directly placed slots\n if ( type === 'fluid-native' ) {\n element.parentNode.style.display = 'none';\n if ( style !== 'direct-placement' ) {\n element.parentNode.previousSibling.style.display = 'block';\n }\n } else if ( sizes !== '1x1' && sizes !== '2x2' ) {\n // handles the case of ads failing to load when googletag.pubads().collapseEmptyDivs( true ) isn't used.\n element.style.display = 'none';\n }\n }\n } );\n\n // Force open/refresh GAM console if demo\n // https://docs.prebid.org/troubleshooting/troubleshooting-guide.html#verify-ad-unit-setup\n if ( typeof DEMO !== 'undefined' && DEMO ) {\n googletag.openConsole();\n }\n\n };\n\n /**\n * Tests if a particular adSlot is currently in view\n *\n * @param adSlot\n */\n static adObserver( adSlot ) {\n\n const REFRESH_SECONDS = 30;\n const REFRESH_VARIANCE = 2;\n const ACTIVE_VIEW_THRESHOLD = 0.9;\n\n let observer = new IntersectionObserver( function ( entries, observer ) {\n entries.forEach( entry => {\n if ( entry.isIntersecting ) {\n entry.target.refreshInterval = window.setInterval( function () {\n if ( Helpers.userIsActive() ) {\n GPT.requestBids( adSlot );\n }\n }, REFRESH_SECONDS * 1000 + Math.floor( Math.random() * REFRESH_VARIANCE * 1000 ) );\n } else {\n clearInterval( entry.target.refreshInterval );\n }\n } );\n }, {\n rootMargin: '-50px 0px 20px 0px',\n threshold: ACTIVE_VIEW_THRESHOLD\n } );\n observer.observe( document.getElementById( adSlot.id ) );\n }\n\n /**\n * Sends the auction request to Prebid & calls refresh when bids are returned\n *\n * @param adSlot\n */\n static requestBids( adSlot ) {\n pbjs.requestBids( {\n timeout: 1500,\n adUnitCodes: [ adSlot.id ],\n bidsBackHandler: function () {\n pbjs.setTargetingForGPTAsync( [ adSlot.id ] );\n googletag.pubads().refresh( [ adSlot.gSlotDef ] );\n }\n } );\n }\n\n}","import Helpers from './helpers';\nimport GooglePublisherTag from './controllers/gpt';\n\n// Include css for demo if constant is set true\nif ( typeof DEMO !== 'undefined' && DEMO ) {\n require('./demo.css');\n}\n\n( async () => {\n\n // Check ADVERTISING_PAGE_DATA exists, bail out and warn if not.\n if ( typeof ADVERTISING_PAGE_DATA === 'undefined' ) {\n console.log( 'No page level advertising data found, GPT & Prebid not loaded' );\n return;\n }\n\n // Initialise Legacy site skin / homepage takeover theme integration\n window.dfp = window.dfp || {};\n window.dfp.takeover = function ( data ) {\n Helpers.legacyTakeover( data );\n };\n\n // Wait for transparency and consent framework api to load\n let loaded = await Helpers.tcfLoaded( 10000 );\n\n // Once loaded proceed, otherwise indicate timeout reached\n if ( loaded !== true ) {\n console.log( 'Consent API timed out, GPT & Prebid not loaded' );\n return;\n }\n\n//////////////////////////////\n\n///////////////////////////////////////////////////\n//////////////////\n////////////////////////////////////\n//////////////////////////////////////////////\n//////\n\n////////////\n//////////////////////////////////////////////////////////\n////////////////////////////////////////////////\n/////////\n//////////////////////////////////\n////////////////////////////////////////////\n///////////////////////////////////////\n///\n\n///////////////////////////////////////////////\n//////////////////////////////////////////////////////////\n//////////////////\n////////////////////////////////////////////////////////////////////////////////////////////\n///////////////////////////////////////////////\n//////////////////////////////////////////////////////\n////////////////////\n///////////////////////////////////\n//////////\n////////\n///////////////\n///////\n/////\n\n////////////\n\n // Wait for transparency and consent framework data\n let tcData = await Helpers.tcfDataReady();\n\n // If GDPR doesn't apply proceed\n if ( ! tcData.gdprApplies ) {\n\n console.log( 'GDPR not required' );\n\n // Insert Google Publisher Tag script & Run DFP Logic\n await GooglePublisherTag.enable( tcData );\n\n // If GDPR applies test for consent and proceed\n } else {\n\n const hasDeviceStorageAndAccessConsent = tcData.purpose.consents[ 1 ] || false;\n\n if ( hasDeviceStorageAndAccessConsent ) {\n\n const hasGoogleAdvertisingProductsConsent = tcData.vendor.consents[ 755 ] || false;\n\n if ( hasGoogleAdvertisingProductsConsent ) {\n\n console.log( 'GDPR & Consent' );\n\n // Insert Google Publisher Tag script & Run DFP Logic\n await GooglePublisherTag.enable( tcData );\n }\n\n }\n\n }\n\n})();\n"],"names":["module","exports","debug","priceGranularity","buckets","precision","min","max","increment","consentManagement","cmpApi","timeout","defaultGdprScope","userSync","userIds","name","storage","type","expires","filterSettings","iframe","bidders","filter","currency","adServerCurrency","granularityMultiplier","defaultRates","USD","GBP","id","sizeMappings","viewport","adSizes","GVLID","ADAPTER_VERSION","BIDDER_CODE","CDB_ENDPOINT","PROFILE_ID_INLINE","PROFILE_ID_PUBLISHERTAG","getStorageManager","bidderCode","LOG_PREFIX","FAST_BID_VERSION_PLACEHOLDER","FAST_BID_VERSION_CURRENT","FAST_BID_VERSION_LATEST","FAST_BID_VERSION_NONE","PUBLISHER_TAG_URL_TEMPLATE","PUBLISHER_TAG_OUTSTREAM_SRC","FAST_BID_PUBKEY_E","FAST_BID_PUBKEY_N","OPTOUT_COOKIE_NAME","BUNDLE_COOKIE_NAME","GUID_RETENTION_TIME_HOUR","OPTOUT_RETENTION_TIME_HOUR","spec","code","gvlid","supportedMediaTypes","BANNER","VIDEO","NATIVE","getUserSyncs","syncOptions","_","gdprConsent","uspConsent","canFastBid","config","refererInfo","getRefererInfo","origin","iframeEnabled","hasPurpose1Consent","queryParams","push","concat","domain","gdprApplies","consentString","requestId","Math","random","toString","jsonHash","bundle","readFromAllStorages","cw","cookiesAreEnabled","lsw","localStorageIsEnabled","optoutCookie","tld","topUrl","version","replace","window","addEventListener","handler","event","data","this","removeEventListener","stopImmediatePropagation","response","optout","deleteFromAllStorages","saveOnAllStorages","jsonHashSerialized","JSON","stringify","url","join","isBidRequestValid","bid","params","zoneId","networkId","hasVideoMediaType","hasValidVideoMediaType","buildRequests","bidRequests","bidderRequest","_fpd$site","_fpd$user","fpd","ortb2","_extends","publisherExt","site","ext","userExt","user","ceh","coppa","fastBidVersion","canLoadPublisherTag","publisherTagAvailable","Criteo","usePrebidEvents","tryGetCriteoFastBid","fastBidUrl","getFastBidUrl","setTimeout","loadExternalScript","adapter","PubTag","Adapters","Prebid","createOutstreamVideoRenderer","buildCdbUrl","buildCdbRequest","context","buildContext","method","interpretResponse","request","body","GetAdapter","bids","slots","isArray","forEach","slot","bidRequest","getAssociatedBidRequest","_body$ext","_body$ext$paf","_slot$ext","_slot$ext$paf","_slot$ext2","_slot$ext2$meta","bidId","cpm","netRevenue","ttl","creativeId","creativecode","width","height","dealId","deal","paf","transmission","content_id","pafResponseMeta","meta","adomain","advertiserDomains","flat","networkName","nativeCallback","ad","createNativeAd","createPrebidNativeAd","mediaType","video","vastUrl","displayurl","deepAccess","OUTSTREAM","renderer","creative","onTimeout","timeoutData","Array","auctionsIds","indexOf","auctionId","handleBidTimeout","onBidWon","handleBidWon","onSetTargeting","handleSetTargeting","onDataDeletionRequest","ajax","publisherUserId","contentType","fromCookie","getCookie","fromLocalStorage","getDataFromLocalStorage","undefined","value","expirationTimeHours","date","Date","setTime","getTime","toUTCString","setCookie","setDataInLocalStorage","removeDataFromLocalStorage","_bidderRequest$refere","referrer","page","queryString","parseUrl","topmostLocation","search","noLog","amp","integrationMode","String","encodeURIComponent","floor","checkNativeSendId","nativeParams","image","sendId","sendTargetingKeys","icon","clickUrl","displayUrl","privacyLink","privacyIcon","_bidderRequest$ortb","_bidderRequest$ortb$r","_bidderRequest$ortb2","_bidderRequest$ortb2$","_bidderRequest$ortb3","_bidderRequest$ortb3$","_bidderRequest$ortb4","_bidderRequest$ortb5","_bidderRequest$ortb6","_bidderRequest$ortb6$","_bidderRequest$ortb8","_bidderRequest$ortb9","_bidderRequest$ortb10","schain","userIdAsEids","_bidderRequest$ortb7","_bidderRequest$ortb7$","generateUUID","publisher","regs","gpp","gpp_sid","map","_bidRequest$ortb2Imp","_bidRequest$ortb2Imp$","_bidRequest$nativeOrt","slotid","impid","adUnitCode","transactionid","ortb2Imp","tid","zoneid","rwdd","nativeOrtbRequest","assets","publisherSubId","publishersubid","hasNativeMediaType","logWarn","hasBannerMediaType","sizes","parseSizes","parseSize","playersizes","mimes","mediaTypes","protocols","maxduration","api","skip","placement","minduration","playbackmethod","startdelay","plcmt","paramsVideo","enrichSlotWithFloors","networkid","source","apiVersion","consentData","uspIab","device","sua","eids","_toConsumableArray","bcat","badv","bapp","parser","arguments","length","s","size","isValid","param","logError","videoPlacement","payload","title","products","description","sponsoredBy","advertiser","logo","click_url","privacy","optout_click_url","optout_image_url","cta","call_to_action","price","impressionTrackers","impression_pixels","pix","callback","slotsName","pickAvailableGetFloorFunc","getFloor","bidFloor","bidFloorCur","parseFloat","_unused","slotFloors","_bidRequest$mediaType","_bidRequest$mediaType2","_bidRequest$mediaType3","banner","bannerSize","call","videoSize","Object","keys","floors","e","split","videoPlayerConfig","videoPlayerType","Renderer","documentResolver","sourceDocument","renderDocument","setRender","vastXml","documentContext","outstreamConfig","CriteoOutStream","play","_step","_iterator","_createForOfIteratorHelper","n","done","_request$mediaTypes3","_request$mediaTypes","parseInt","_request$mediaTypes2","err","f","fastBidStorageKey","hashPrefix","fastBidFromStorage","firstLineEndPosition","firstLine","substr","trim","publisherTagHash","publisherTag","verify","logInfo","eval","registerBidder","__r0","pbjsInstance","getGlobal","moduleCode","options","_this","loaded","renderNow","handlers","cmd","func","process","render","_this2","renderArgs","runRender","_render","apply","adUnits","adUnit","find","adUnitRenderer","hasValidAdUnitRenderer","mediaTypeRenderer","hasValidMediaTypeRenderer","backupOnly","isRendererPreferredFromAdUnit","unshift","bind","isRendererRequired","executeRenderer","doc","docContext","document","install","_ref","prototype","getConfig","fn","setEventHandlers","handleVideoEvent","_ref2","eventName","logMessage","shift","error","ACTIVITY_ACCESS_DEVICE","ACTIVITY_SYNC_USER","ACTIVITY_ENRICH_UFPD","ACTIVITY_ENRICH_EIDS","ACTIVITY_FETCH_BIDS","ACTIVITY_REPORT_ANALYTICS","ACTIVITY_TRANSMIT_EIDS","ACTIVITY_TRANSMIT_UFPD","ACTIVITY_TRANSMIT_PRECISE_GEO","ACTIVITY_TRANSMIT_TID","activityParams","activityParamsBuilder","alias","adapterManager","MODULE_TYPE_PREBID","MODULE_TYPE_BIDDER","MODULE_TYPE_UID","MODULE_TYPE_RTD","MODULE_TYPE_ANALYTICS","ACTIVITY_PARAM_COMPONENT","ACTIVITY_PARAM_COMPONENT_TYPE","ACTIVITY_PARAM_COMPONENT_NAME","ACTIVITY_PARAM_ADAPTER_CODE","ACTIVITY_PARAM_STORAGE_TYPE","ACTIVITY_PARAM_S2S_NAME","ACTIVITY_PARAM_SYNC_TYPE","ACTIVITY_PARAM_SYNC_URL","ACTIVITY_PARAM_ANL_CONFIG","resolveAlias","moduleType","moduleName","_defaults","defaults","_defineProperty","buildActivityParams","hook","_ruleRegistry","logger","prefixLog","registry","getRules","activity","runRule","rule","res","allow","reason","component","dupes","logResult","msg","deduping","hasOwnProperty","clearTimeout","parts","ruleName","priority","rules","pos","findIndex","itemPriority","_slicedToArray","entry","splice","idx","lastPriority","foundAllow","_step$value","ruleResult","ruleRegistry","_ruleRegistry2","registerActivityControl","isActivityAllowed","incrementAdUnitCount","adunit","counter","ensureAdUnit","adunitCounter","incrementRequestsCounter","incrementBidderRequestsCounter","incrementBidderWinsCounter","getRequestsCounter","getBidderRequestsCounter","bidder","getBidderWinsCounter","ORTB_UFPD_PATHS","ORTB_EIDS_PATHS","ORTB_GEO_PATHS","redactRule","ruleDef","get","run","root","path","object","property","applies","val","_typeof","isData","repl","objectTransformer","paths","tail","pop","session","obj","result","_len","args","_key","sessionedApplies","head","parent","el","_len2","_key2","appliesWhenActivityDenied","isAllowed","redactor","redactOrtb2","round","Number","EPSILON","ortb2TransmitRules","redactBidRequest","bidRequestTransmitRules","redactorFactory","PBS_ADAPTER_NAME","PARTITIONS","dep","redact","_bidderRegistry","bidderRegistry","_aliasRegistry","aliasRegistry","_s2sConfigs","s2sConfig","_analyticsRegistry","hookedGetBids","bidderRequestId","src","metrics","reduce","s2sBid","mergeDeep","getDefinedParams","isValidMediaTypes","transactionId","bid_id","getUniqueIdentifierStr","bidRequestsCount","bidderRequestsCount","bidderWinsCount","flatten","filterBidsForAdUnit","_ref2$getS2SBidders","getS2SBidders","serverBidders","getS2SBidderSet","has","setupAdUnitMediaTypes","labels","s2sConfigs","Set","s2s","enabled","flatMap","add","partitionBidders","_getBidderCodes$reduc","_ref3$getS2SBidders","getBidderCodes","memo","getBidderMethod","getSpec","invokeBidderMethod","tryCallBidderMethod","CONSTANTS","target","makeBidRequests","auctionStart","cbTimeout","ortb2Fragments","auctionMetrics","useMetrics","events","decorateAdUnitsWithNativeParams","au","isPlainObject","_partitionBidders2","clientBidders","RANDOM","shuffle","global","bidderOrtb2","addOrtb2","s2sActivityParams","freeze","s2sParams","configName","_getAdUnitCopyForPreb","adUnitsCopy","deepClone","hasModuleBids","s2sBids","b","_b$params","getAdUnitCopyForPrebidServer","adUnitsS2SCopy","uniquePbsTid","fork","adUnitCopy","validBids","adUnitBid","reqBid","adUnitsClientCopy","getAdUnitCopyForClientAdapters","gdprDataHandler","uspDataHandler","gppDataHandler","callBids","addBidResponse","doneCb","requestCallbacks","requestBidsTimeout","onTimelyResponse","_bidRequests$reduce","partitions","_bidRequests$reduce2","clientBidRequests","serverBidRequests","uniqueServerBidRequests","serverBidRequest","index","i","s2sAjax","ajaxBuilder","adaptersServerSide","s2sAdapter","uniqueServerRequests","s2sBidRequest","ad_units","doneCbs","start","timestamp","includes","_objectSpread","adapterDone","videoAdapters","registerBidAdapter","bidAdapter","_bidAdapter$getSpec","_ref4$supportedMediaT","GDPR_GVLIDS","nativeAdapters","aliasBidAdapter","nonS2SAlias","s2sBidders","newAdapter","getSupportedMediaTypes","constructor","setBidderCode","skipPbsAliasing","newBidder","visited","registerAnalyticsAdapter","_ref5","enableAnalytics","_each","adapterConfig","provider","getBidAdapter","getAnalyticsAdapter","callTimedOutBidders","timedOutBidders","timedOutBidder","getUserConfiguredParams","groupBy","callBidWonBidder","callBidBillableBidder","callSetTargetingBidder","callBidViewableBidder","callBidderError","callDataDeletionRequest","bidderRequests","auctionManager","br","seen","entries","_ref6","_entry$adapter","_ref7","Adapter","getBidderCode","COMMON_BID_RESPONSE_KEYS","TIDS","putBidder","aliases","aliasCode","registerSyncs","configEnabledCallback","tidGuard","prop","receiver","Reflect","privateAccessProxy","proxy","Proxy","_ref3","_ref4","memoize","arg","guardTids","adUnitCodesHandled","responses","validBidRequests","adapterMetrics","measureTime","filterAndWarn","bidRequestMap","placementCode","processBidderRequests","onRequest","requestObject","onResponse","resp","onFledgeAuctionConfigs","fledgeAuctionConfigs","fledgeAuctionConfig","addComponentAuction","onError","errorMessage","status","onBid","adapterCode","responseBidder","requestBidder","allowAlternateBidderCodes","bidderSettings","alternateBiddersList","toLowerCase","uniques","isInvalidAlternateBidder","reject","originalCpm","originalCurrency","prebidBid","createBid","pick","addBidWithCode","onCompletion","afterAllResponses","checkpoint","_ref7$index","hasValidKeys","bidKeys","every","key","nativeBidIsValid","isValidVideoBid","_ref6$index","getBidRequest","getMediaTypes","parsedSizes","parseSizesInput","_parsedSizes$0$split","_parsedSizes$0$split2","validBidSize","gppConsent","registerSyncInner","wrapCallback","startTiming","stopBefore","requests","requestDone","delayExecution","requestMetrics","addBid","renameWith","onSuccess","responseObj","networkDone","parse","headers","getResponseHeader","onFailure","getOptions","ro","browsingTopics","parseQueryStringParameters","formatGetParameters","success","withCredentials","aliasSyncEnabled","filterConfig","syncs","all","pixelEnabled","sync","_requestCache","WeakMap","_approvedLoadExternalJSList","attributes","storedCachedObject","getCacheObject","callbacks","tag","cachedDocObj","cacheObject","set","tagSrc","jptScript","createElement","async","readyState","onreadystatechange","onload","setScriptAttributes","insertElement","requestResource","fetch","makeRequest","r","o","Request","resource","ctl","AbortController","cancelTimer","abort","signal","GET","POST","CTYPE","fetcherFactory","fetcher","_options","_to","to","pm","URL","location","req","toXHR","responseText","_ref2$statusText","statusText","xml","XMLHttpRequest","DONE","responseType","responseURL","responseXML","_headers$get","_headers$get$split","DOMParser","parseFromString","header","fetchPm","x","then","text","xhr","ok","attachCallbacks","urlInfo","buildUrl","Headers","customHeaders","rqOpts","credentials","isSecureContext","toFetchRequest","ttlBufferInSeconds","toStorageRequest","uri","impUrl","vastImp","_ref$index","vastValue","vastImpUrl","auction","getAuction","ttlseconds","bidid","aid","getAuctionStart","customCacheKey","store","getAjax","requestData","puts","responseBody","ids","Error","shimStorageCallback","syncUsers","AUCTION_STARTED","AUCTION_IN_PROGRESS","AUCTION_COMPLETED","on","bidPriceAdjusted","bidResponse","_bidRequest","_ref$bs","bs","adjustAlternateBids","bidCpmAdjustment","getOwn","adjustCpm","adjustBids","MAX_REQUESTS_PER_ORIGIN","outstandingRequests","sourceInfo","queuedCalls","newAuction","adUnitCodes","_auctionStart","_auctionEnd","_timer","_auctionStatus","_adUnits","_labels","_adUnitCodes","_auctionId","_timeout","_timelyBidders","_bidsRejected","_callback","_bidderRequests","_bidsReceived","_noBids","_winningBids","_nonBids","getProperties","auctionEnd","auctionStatus","noBids","bidsReceived","bidsRejected","winningBids","seatNonBids","executeCallback","timedOut","cleartimer","timelyBidders","now","timeBetween","bidsBackCallback","adUnitsFilter","groupByPlacement","userSyncConfig","enableOverride","syncDelay","auctionDone","addBidderRequestsCallback","timeoutCallback","timer","auctionInstance","_ref2$index","outstandingBidsAdded","allAdapterCalledDone","bidderRequestsDone","bidResponseMap","ready","waitFor","GreedyPromise","guard","getTimeout","timeRemaining","wait","orphanWait","afterBidAdded","handleBidResponse","_ref4$index","getBidderRequest","getAdUnit","requestTimestamp","responseTimestamp","ttlBuffer","timeToRespond","addCommonResponseProperties","acceptBidResponse","_index$getBidRequest","_ref5$index","bidRenderer","bidObjectMediaType","bidMediaType","mediaTypeGranularity","getMediaTypeGranularity","priceStringsObj","getPriceBucketString","pbLg","low","pbMg","med","pbHg","high","pbAg","auto","pbDg","dense","pbCg","custom","getPreparedBidForAuction","_ref3$index","videoMediaType","originalRequestId","useCacheKey","videoCacheKey","callPrebidCache","addBidToAuction","tryAddVideoBid","addLegacyFieldsIfNeeded","rejectBidResponse","rejectionReason","addBidRejected","getBidRequests","auctionOptionsConfig","isEmpty","secondaryBidders","addNoBid","rejected","dispatch","auctionCallbacks","SRA","runIfOriginHasCapacity","hasCapacity","maxRequests","some","seatnonbids","seatnonbid","addBidReceived","noBid","addBidderRequests","addWinningBid","winningBid","winningAd","deferBilling","setBidTargeting","getWinningBids","getAuctionId","getAuctionStatus","getAdUnits","getAdUnitCodes","getBidsReceived","getNoBids","getNonBids","getFPD","getMetrics","doCallbacksIfTimedout","bidObject","keyValues","cpmCheck","custBidObj","standardSettings","getStandardBidderSettings","setKeys","sendStandardTargeting","getNativeTargeting","getKeyValueTargetingPairs","adserverTargeting","setupBidTargeting","timeSince","batchSize","batchTimeout","_auctionManager$index","_bidResponse$native","nativeOrtbResponse","ortb","legacyResponse","toLegacyResponse","storeInCache","batch","cacheIds","cacheId","_batch$i","uuid","cacheConfig","cache","batchAndStore","batches","debouncing","noTimeout","cb","batchFunc","batchingCache","mediaTypePriceGranularity","getPriceByGranularity","granularity","bidGranularity","getPriceGranularity","getCreativeId","getAdvertiserDomain","getDSP","getPrimaryCatId","primaryCatId","createKeyVal","bidReq","getValue","TARGETING_KEYS","BIDDER","AD_ID","PRICE_BUCKET","SIZE","DEAL","SOURCE","FORMAT","ADOMAIN","ACAT","DSP","CRID","defaultAdserverTargeting","slice","UUID","CACHE_ID","targetingKeyVal","kvPair","CACHE_HOST","hostname","targeting","getSize","isFn","suppressEmptyKeys","isEmptyStr","bidsByPlacement","AuctionIndex","getAuctions","a","bers","ber","_auctions","getAllWinningBids","getBidsRequested","getAllBidsForAdUnitCode","createAuction","opts","_addAuction","findBidByAdId","adId","getStandardBidderAdServerTargeting","setStatusForBids","getLastAuctionId","clearAllAuctions","newAuctionManager","_resolveScope","WeakSet","_resolveScope2","scope","defaultScope","ScopedSettings","getSettings","_classCallCheck","_classPrivateMethodInitSpec","_createClass","_classPrivateMethodGet","ownSettingsFor","Bid","statusCode","_ref$src","_ref$bidder","_bidSrc","_statusCode","statusMessage","_getStatus","getStatusCode","getIdentifiers","identifiers","DEFAULT_DEBUG","getParameterByName","toUpperCase","VALID_ORDERS","DEFAULT_BIDDER_SEQUENCE","GRANULARITY_OPTIONS","LOW","MEDIUM","HIGH","AUTO","DENSE","CUSTOM","bidderConfig","listeners","currBidder","resetConfig","getProp","props","setProp","publisherDomain","validatePriceGranularity","hasGranularity","customPriceBucket","aggregate","item","bidderSequence","auctionOptions","_i","_Object$keys","k","isStr","isBoolean","validateauctionOptions","newConfig","bidderTimeout","enableSendAllBids","useBidCache","deviceAccess","timeoutBuffer","disableAjaxTimeout","maxNestedIframes","option","isValidPriceConfig","defineProperties","fromEntries","def","enumerable","callSubscribers","topic","_getConfig","currBidderConfig","configTopicSet","from","_map","conf","defineProperty","accessor","subscribe","_map2","getAnyConfig","_map3","wrapee","_map4","readConfig","readAnyConfig","setConfig","topics","topicalConfig","listener","nl","init","TOPICS","setBidderConfig","mergeFlag","check","assign","runWithBidder","resetBidder","getCurrentBidder","mergeConfig","mergedConfig","setDefaults","callbackWithBidder","getBidderConfig","mergeBidderConfig","_assertThisInitialized","self","ReferenceError","_setPrototypeOf","p","setPrototypeOf","__proto__","_inherits","subClass","superClass","TypeError","create","writable","configurable","_getPrototypeOf","getPrototypeOf","VENDORLESS_GVLID","_enabled","_data","_defer","_ready","_dirty","_hash","_resolve","ConsentHandler","_classPrivateFieldInitSpec","reset","_classPrivateFieldSet","defer","generatedTime","_classPrivateFieldGet","_resolve2","promise","time","cyrb53Hash","hashFields","resolve","UspConsentHandler","_ConsentHandler","_super","_createSuper","getConsentData","usp","generatedAt","GdprConsentHandler","_ConsentHandler2","_super2","vendorData","consentStringSize","tcString","GppConsentHandler","_ConsentHandler3","_super3","_this3","none","coppaDataHandler","getCoppa","getConsentMeta","hash","register","modules","ALL_HANDLERS","gdpr","allConsent","multiHandler","_defaultPrecision","_lgPriceConfig","_mgPriceConfig","_hgPriceConfig","_densePriceConfig","_autoPriceConfig","customConfig","cpmFloat","isNaN","getCpmStringValue","cpmStr","cap","prev","curr","bucketFloor","bucket","toFixed","bucketMin","roundingFunction","customRoundingFunction","cpmTarget","invalidRounding","pow","cpmToRound","getCpmTarget","allEvents","utils","v","idPaths","eventsFired","_public","_handlers","eventString","_checkAvailableEvent","que","emit","eventPayload","eventKeys","eventType","elapsedTime","_dispatch","off","_handler","addEvents","getEvents","arrayCopy","newProp","funHooks","readyCtl","getHook","submoduleInstallMap","_ref$postInstallAllow","postInstallAllowed","submodules","submodule","before","next","wrapHook","wrapper","m","ADPOD","NATIVE_TARGETING_KEYS","SUPPORTED_TYPES","ver","required","img","wmin","hmin","len","NATIVE_ASSET_TYPES","NATIVE_IMAGE_TYPES","PREBID_NATIVE_DATA_KEYS_TO_ORTB","NATIVE_KEYS_THAT_ARE_NOT_ASSETS","NATIVE_KEYS","PREBID_NATIVE_DATA_KEYS_TO_ORTB_INVERSE","inverse","NATIVE_ASSET_TYPES_INVERSE","TRACKER_METHODS","js","TRACKER_EVENTS","impression","processNativeAdUnitParams","typeIsSupported","isOpenRTBBidRequestValid","legacyNativeAssets","asset","ortbAsset","ICON","MAIN","aspect_ratios","_asset$aspect_ratios$","minWidth","min_width","minHeight","min_height","isInteger","aspectRatios","ar","ratio_width","ratio_height","ratio","aspectratios","w","h","toOrtbNativeRequest","eventtrackers","isNumber","isOpenRTBAssetValid","_bid$native","ortbRequest","bidORTB","bidRequestORTB","requiredAssetIds","returnedAssetIds","match","assetId","isNativeOpenRTBBidValid","toOrtbNativeResponse","fireNativeTrackers","message","nativeResponse","legacyPropertiesToOrtbNative","action","_ref3$fetchURL","fetchURL","triggerPixel","_nativeResponse$link2","assetIdLinkMap","link","masterClickTrackers","clicktrackers","assetLink","clickTrackers","_nativeResponse$link","fireClickTrackers","_ref2$runMarkup","runMarkup","mkup","insertHtmlIntoIframe","_ref2$fetchURL","impTrackers","tracker","_impTrackers$reduce","tally","imptrackers","jstracker","fireImpressionTrackers","getAssetValue","globalSendTargetingKeys","nativeKeys","extraNativeKeys","extKey","getNativeKeys","flatBidNativeKeys","sendPlaceholder","assetSendTargetingKeys","assetsMessage","adObject","_adUnit$mediaTypes","_adUnit$mediaTypes$na","nativeResp","adTemplate","rendererUrl","getAssetMessage","getKeyByValue","getAllAssetsMessage","fromOrtbNativeRequest","openRTBRequest","oldNativeObject","_loop","Boolean","scale","gcd","assetType","prebidAssetName","convertOrtbRequestToProprietaryNative","_NATIVE","_step2","bidRequestsCopy","_iterator2","legacyNative","ortbResponse","useRequestAsset","predicate","titleAsset","imageType","imageAsset","dataAsset","requestAssets","_step3","_iterator3","_loop2","requestAsset","reqAsset","_legacyResponse$impre","jsTrackers","_step4","_iterator4","eventTracker","javascriptTrackers","retobj","elem","arrayFrom","arr","pred","thisArg","pbjs","registerModule","installedModules","_pbjsGlobals","ensureProtocol","win","exec","windowProto","protocol","top","parseDomain","_ref$noLeadingWww","noLeadingWww","_ref$noPort","noPort","host","startsWith","substring","getCanonicalUrl","element","querySelector","href","canonical","newCanonical","newHref","cacheWithLocation","currentWindow","bestLocation","bestCanonicalUrl","ref","stack","ancestors","ancestorOrigins","getAncestorOrigins","reachedTop","level","valuesFromAmp","inAmpFrame","hasTopLocation","previousWindow","wasInAmpFrame","currentLocation","crossOrigin","foundLocation","sourceUrl","canonicalUrl","reverse","isAmp","numIframes","legacy","referer","STORAGE_TYPE_LOCALSTORAGE","STORAGE_TYPE_COOKIES","storageCallbacks","newStorageManager","_ref2$isAllowed","storageType","mod","curBidder","valid","schedule","operation","hasLocalStorage","localStorage","sameSite","domainPortion","expiresPortion","secure","cookie","decodeURIComponent","setItem","getItem","removeItem","checkCookieSupport","findSimilarCookies","keyLike","hasDeviceAccess","cookies","separatorIndex","getCoreStorageManager","syncEnabled","syncsPerBidder","auctionDelay","deps","publicApi","queue","hasFiredBidder","numAdapterBids","permittedPixels","usConfig","fireSyncs","browserSupportsCookies","forEachFire","_sync2","bidderName","iframeUrl","insertUserSyncIframe","iframeSyncBidderName","imageSync","removeImagePixelsForBidder","loadIframes","_sync","trackingPixelUrl","fireImagePixels","shouldBidderBeBlocked","activeConfig","activeConfigName","filterField","biddersField","bidderInList","isFilterConfigValid","biddersToFilter","checkForFiltering","fs","regRule","syncType","canBidderRegisterSync","registerSync","_activityParams","incrementAdapterBids","bidderDone","triggerUserSyncs","newUserSync","isSafariBrowser","eventEmitter","tArr","tStr","tFn","tNumb","tObject","tBoolean","consoleExists","console","consoleLogExists","log","consoleInfoExists","info","consoleWarnExists","warn","consoleErrorExists","_setEventEmitter","emitFn","emitEvent","internal","createTrackPixelIframeHtml","encodeUri","sandbox","encodeURI","getWindowSelf","getWindowTop","getWindowLocation","parseQS","formatQS","query","deepEqual","prebidInternal","getPrebidInternal","count","uniqueRef","Function","getIncrementalInteger","placeholder","crypto","getRandomValues","Uint8Array","getBidIdParameter","paramsObj","queryObj","transformAdServerTargetingObj","getOwnPropertyNames","getAdUnitSizes","bannerSizes","sizeObj","sizeRegex","curSizePos","hasOwn","sizeArrayLength","parseGPTSingleSizeArray","singleSize","isValidGPTSingleSize","debugTurnedOn","decorateLog","prefix","decorate","label","color","createInvisibleIframe","border","hspace","vspace","marginWidth","marginHeight","style","scrolling","frameBorder","display","isA","_t","str","l","contains","output","objectToCheck","propertyToCheckFor","elm","asLastChildChild","parentEl","getElementsByTagName","insertBeforeEl","firstChild","insertBefore","waitForElementToLoad","onLoad","Image","callBurl","burl","htmlCode","allowtransparency","contentWindow","open","write","close","iframeHtml","div","innerHTML","createTrackPixelHtml","getValueString","defaultValue","arry","unit","isGptPubadsDefined","googletag","pubads","getSlots","isApnGetTagDefined","apntag","getTag","getHighestCpm","getHighestCpmCallback","previous","current","getOldestHighestCpmBid","useTieBreakerProperty","tieBreakerCallback","array","temp","clone","inIframe","test","navigator","userAgent","replaceAuctionPrice","replaceClickThrough","clicktag","getPerformanceNow","performance","cookieEnabled","numRequiredCalls","numCalls","xs","rv","SUPPORTED_MEDIA_TYPES","bidderData","getDNT","doNotTrack","msDoNotTrack","compareCodeAndSlot","getAdUnitPath","getSlotElementId","isAdUnitCodeMatchingSlot","getGptSlotForAdUnitCode","matchingSlot","isSlotMatchingAdUnitCode","getGptSlotInfoForAdUnitCode","gptSlot","divId","unsupportedBidderMessage","isFinite","convertCamelToUnderscore","y","properties","newObj","convertTypes","types","typeToConvert","isArrayOfNums","fill","newArray","valueToPush","chunk","ceil","end","getMinValueFromArray","getMaxValueFromArray","acc","criteria","_criteria$split","_criteria$split2","parsed","noDecodeWholeURL","qsAsString","decodeSearchAsString","port","pathname","obj1","obj2","_ref2$checkTypes","checkTypes","sources","addItFlag","ch","seed","imul","opA","opB","h1","h2","charCodeAt","getWindowFromDocument","defaultView","safeJSONParse","Map","memoized","cacheKey","clear","script","setAttribute","escapes","CONFIG_TOGGLE","NODES","metricsFactory","_ref$now","_ref$mkNode","mkNode","makeNode","_ref$mkTimer","mkTimer","makeTimer","_ref$mkRenamer","mkRenamer","rename","_ref$nodes","nodes","makeMetrics","getTimestamp","dfWalk","visit","edge","node","setMetric","names","follow","inEdge","outEdge","propagate","stopPropagation","groups","includeGroups","stopAfter","measureHookTime","stopTiming","orig","bail","untimed","timestamps","metric","ts","elapsed","startCheckpoint","endCheckpoint","_ref2$propagate","_ref2$stopPropagation","_ref2$includeGroups","otherMetrics","_ref3$propagate","_ref3$stopPropagation","_ref3$includeGroups","other","addParent","newMetrics","newSibling","renameFn","toJSON","wrapFn","after","parents","_ref4$follow","_ref4$visited","nullMetrics","nop","empty","nullTimer","nullNode","cfg","hookTimer","hookFn","that","timedAuctionHook","timedBidResponseHook","SUCCESS","FAIL","_result","_callbacks","resolver","continuation","resolveFn","onFinally","delayMs","promises","_classStaticPrivateMethodGet","_collect","_this4","_this5","collector","_this6","cnt","clt","rejectFn","_ref3$promiseFactory","promiseFactory","invoker","delegate","INSTREAM","checkVideoBidSetup","dbits","BigInteger","fromHexString","toHexString","negate","d","t","DB","int2char","mi","sh","intAt","charAt","clamp","ZERO","subTo","nbi","abs","divRemTo","compareTo","copyTo","lShiftTo","cbs","bm","ds","c","DM","invDigit","DV","dlShiftTo","squareTo","am","multiplyTo","q","pt","ms","nsh","nbits","ys","y0","yt","F1","F2","d1","FV","d2","j","ONE","qd","drShiftTo","rShiftTo","modPowInt","z","isEven","Classic","Montgomery","exp","r2","g","convert","sqrTo","mulTo","revert","am1","am2","xl","xh","am3","rr","vv","BI_RC","BI_RM","b64toHex","ret","slop","removeExtraSymbols","mp","mpl","mph","um","mt2","u0","nbv","appName","Sha256","utf8Encode","K","H","fromCharCode","N","M","lenHi","lenLo","W","q1","q0","T1","z1","Ch","T2","z0","Maj","R","TextEncoder","encode","unescape","ROTR","jsbnLite_1","sha256_1","nStrPubKey","ePubKey","___CSS_LOADER_EXPORT___","cssWithMappingToString","list","content","needLayer","media","dedupe","supports","layer","alreadyImportedModules","_k","cssMapping","btoa","base64","sourceMapping","sourceURLs","sourceRoot","dlv","undef","SYNC","ASYNC","QUEUE","packageName","useProxy","hookableMap","initial","rest","hooks","postReady","arg1","arg2","hookObj","objName","walk","objHooks","doNotHook","part","installed","newHookable","onInstall","generateTrap","getHooks","remove","removeAll","generate","sort","trap","hookedFn","hookable","setTrap","revocable","targetIndex","order","addToOrder","queued","runAll","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","stylesInDOM","getIndexByIdentifier","identifier","modulesToDom","idCountMap","base","indexByIdentifier","css","sourceMap","references","updater","addElementStyle","byIndex","update","lastIdentifiers","newList","newLastIdentifiers","_index","styleTarget","HTMLIFrameElement","contentDocument","getTarget","appendChild","styleElement","nonce","parentNode","removeChild","removeStyleElement","styleSheet","cssText","createTextNode","_regeneratorRuntime","__esModule","Op","desc","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","wrap","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","NativeIteratorPrototype","values","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","record","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","state","doneResult","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","methodName","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","displayName","isGeneratorFunction","genFun","ctor","mark","awrap","Promise","iter","skipTempReset","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","runtime","regeneratorRuntime","accidentalStrictMode","globalThis","_arrayLikeToArray","arr2","instance","Constructor","_classExtractFieldDescriptor","privateMap","descriptor","classExtractFieldDescriptor","_defineProperties","protoProps","staticProps","_s","_e","_x","_r","_arr","_n","_d","unsupportedIterableToArray","arrayLikeToArray","_toPropertyKey","input","hint","prim","toPrimitive","_unsupportedIterableToArray","minLen","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","definition","nc","Helpers","static","tcData","_asyncToGenerator","purpose","consentPurposesAllTrue","consents","documentElement","clientHeight","innerHeight","clientWidth","innerWidth","objectsEqual","__tcfapi","listenerSuccess","eventStatus","userLastActivity","visibilityState","userActivityTimeout","elementSelector","offSet","wHeight","viewLazyLoadOffset","observer","IntersectionObserver","isIntersecting","unobserve","rootMargin","querySelectorAll","observe","jQuery","collapseEarly","getElementsByClassName","$","$body","$link","impressiontracker","prepend","dfp","trigger","container","hasChildNodes","gen","_next","_throw","Native","definitions","slotData","getSlotData","id_parts","anchorElement","adSlotContainerClass","adSlotContainerElement","hidePreceding","newContainer","className","nextSibling","fluidSlot","hasChildren","_getAvailableBidders","_getBidders","_getAllBidders","_setCustomBidderTargeting","_prepSlotsForAuction","_callee","adSlots","fluidSlotDefinitions","formattedAdSlots","_context","offPage","t0","t1","t2","bidSizes","arrays","setCustomBidderTargeting","t3","t4","getSlot","getViewportDimentions","ADVERTISING_PAGE_DATA","t5","t6","t7","t8","t9","_x2","_callee2","adSlot","placementId","publisherId","siteId","customData","ii","_Object$entries","_Object$entries$_i","_placementId","_ii","_i2","_Object$entries2","_Object$entries2$_i","_value","_context2","position","legacyTargeting","_x3","_callee3","placements","matchedBidders","matched","exists","iii","_context3","getAvailableBidders","zone","getBidders","_x4","_x5","_callee4","_context4","_x6","_x7","_callee5","_context5","_x8","_x9","Targeting","adSlotDivs","responsiveSlotPlacements","responsiveSlotDefinitions","getAttribute","getSlotType","isOffPageSlot","setAdSlotID","setLegacyAdSlotSizes","setResponsiveMappings","setAdSlotBidSizes","getAllBidders","strings","noMobile","isNoMobileSlot","keyValueArray","adSlotDiv","wh","mappings","getResponsiveMappings","getAdSlotBidSizes","allowedSizes","onlyUnique","mapping","screen","dset","_CONSTANTS$EVENTS","AD_RENDER_FAILED","AD_RENDER_SUCCEEDED","emitAdRenderFail","emitAdRenderSucceeded","BID_WON","constants","STALE_RENDER","WON_AD_IDS","HANDLER_MAP","reply","adUrl","resizeRemoteCreative","_sendAdToCreative","receiveMessage","ev","ports","postMessage","getReplier","elmType","getTargetingKeys","getTargeting","getDfpElementId","astTag","targetId","getAstElementId","getElementIdBasedOnAdServer","parentDivEle","getElementById","getElementByAdUnit","elementStyle","pbTargetingKeys","DEFAULT_TTL_BUFFER","CFG_ALLOW_TARGETING_KEYS","CFG_ADD_TARGETING_KEYS","TARGETING_KEY_CONFIGURATION_ERROR_MSG","filters","isActualBid","isBidNotExpired","isUnusedBid","isBidUsable","getHighestCpmBidsFromBidPool","highestCpmCallback","adUnitBidLimit","dealPrioritization","bucketKey","bucketBids","bidsByBidder","sortByDealAndPriceBucketOrCpm","useCpm","hb_deal","hb_pb","latestAuctionForAdUnit","bidShouldBeAddedToTargeting","filterFunction","getWinningBidTargeting","winners","standardKeys","getStandardKeys","winner","targetingValue","bidderCodeTargetingKey","bidderCodeTargeting","mergeAdServerTargeting","getCustomKeys","currentBidElement","hasSameAdunitCodeAndKey","concatTargetingValue","truncateCustomKeys","getTargetingMap","setLatestAuctionForAdUnit","resetPresetTargeting","customSlotMatching","unsetKeys","reducer","customSlotMatchingFunc","updateTargetingFromMap","resetPresetTargetingAST","keywords","currentKeywords","newKeywords","modifyTag","getAllTargeting","getCustomBidTargeting","allowSendAllBidsTargetingKeys","allowedSendAllBidTargeting","getBidLandscapeTargeting","getDealBids","getTargetingObj","getTargetingValues","aut","getAdUnitTargeting","targetKey","defaultKeys","allowedKeys","addedKeys","defaultKeyring","keyDispositions","found","defaultKey","allowedKey","allowedKeyName","removedKeys","getAllowedTargetingKeyValues","targetingObj","accumulator","flattenTargeting","auctionKeysThreshold","targetingCopy","targetingMap","accMap","currMap","keyMap","adUnitQueryString","querySize","filterTargetingKeys","setTargetingForGPT","targetingConfig","setTargetingForAst","astTargeting","keywordsObj","setKeywords","overrideKeyValue","isApntagDefined","newTargeting","DEBUG_KEY","isDebuggingInstalled","loadScript","_ref2$load","load","_ref$alreadyInstalled","alreadyInstalled","_ref$script","loading","_installDebugging","debuggingModuleLoader","_ref2$hook","waitForDebugging","disable","enable","debuggingControls","debugging","coreStorage","findRootDomain","fullDomain","rootDomain","continueSearching","domainParts","startIndex","TEST_COOKIE_NAME","TEST_COOKIE_VALUE","expirationDate","HIGH_ENTROPY_HINTS","LOW_ENTROPY_HINTS","getLowEntropySUA","_window$navigator","uaData","userAgentData","uaDataToSUA","lowEntropySUAAccessor","getHighEntropySUA","_window$navigator2","hints","sorted","getHighEntropyValues","highEntropySUAAccessor","toBrandVersion","brand","bv","platform","platformVersion","fullVersionList","brands","browsers","mobile","CLIENT_SECTIONS","clientSectionChecker","logPrefix","section","hasSection","oneClient","enrichFPD","ri","mergeLegacySetConfigs","ENRICHMENTS","getEnrichments","deepSetValue","clientEnrichment","winFallback","removeUndef","dnt","ua","language","globalPrivacyControl","_winFallback","_winFallback$content","_winFallback$content$","ADD_AD_UNITS","REQUEST_BIDS","SET_TARGETING","_CONSTANTS$AD_RENDER_","PREVENT_WRITING_ON_MAIN_DOCUMENT","NO_AD","EXCEPTION","CANNOT_FIND_AD","MISSING_DOC_OR_ADID","eventValidators","bidWon","bidSet","setRenderSize","frameElement","validateSizes","targLength","cleanSizes","sz","validateBannerMediaType","validatedAdUnit","validateVideoMediaType","playerSize","tarPlayerSizeLen","videoSizes","validateNativeMediaType","native","legacyNativeKeys","intersection","nativeKey","legacyKey","validateAdUnitPos","warning","validateAdUnit","sessionStorage","loadSession","libLoaded","adUnitSetupChecks","checkAdUnitSetup","validatedAdUnits","validatedBanner","validatedVideo","validatedNative","getBids","currentAuctionId","reinjectNodeIfRemoved","tagName","injectionNode","getAdserverTargetingForAdUnitCodeStr","adunitCode","getAdserverTargetingForAdUnitCode","getHighestUnusedBidResponseForAdUnitCode","getAdserverTargeting","getConsentMetadata","getNoBidsForAdUnitCode","getBidResponses","getBidResponsesForAdUnitCode","setTargetingForGPTAsync","targetingSet","targetingKey","renderAd","clickThrough","videoModule","renderBid","creativeComment","createComment","overflow","removeAdUnit","requestBids","bidsBackHandler","startAuction","_adUnit$ortb2Imp","_adUnit$ortb2Imp$ext","adUnitMediaTypes","allBidders","bidderMediaTypes","adUnitsLen","reqBidsConfigObj","enableAnalyticsCallbacks","addAdUnits","adUnitArr","onEvent","offEvent","bidderAdaptor","enableAnalyticsCb","aliasBidder","getAllPrebidWinningBids","getHighestCpmBids","markWinningBidAsUsed","markBidRequest","fetchReceivedBids","warningMessage","processQueue","called","command","triggerBilling","triggerBillingBid","PROCESSOR_TYPES","PROCESSOR_DIALECTS","REQUEST","IMP","BID_RESPONSE","RESPONSE","DEFAULT","processors","_processorRegistry","registerOrtbProcessor","_ref$priority","_ref$dialects","dialects","dialect","getProcessors","MODE_MIXED","MODE_RETURN","MODE_CALLBACK","userCMP","consentTimeout","gdprScope","staticConsentData","actionTimeout","CMP_VERSION","addedConsentHook","cmpCallMap","cmp","apiName","_ref$apiArgs","apiArgs","_ref$callbackArgs","callbackArgs","_ref$mode","mode","cmpCallbacks","callName","cmpDataPkgName","handleMessage","_json$cmpDataPkgName","json","callId","client","_findCMP","cmpFrame","isDirect","frames","findCMP","_findCMP2","resolveParams","once","preamble","haveCb","cmpClient","tcfData","processCmpData","loadConsentData","provisionalConsent","isDone","cmpLoaded","resetTimeout","shouldCancelAuction","errMsg","extraArgs","continueToAuction","storeConsentData","requestBidsHook","_len3","_key3","consentObject","cmpConsentObject","addtlConsent","_staticConsentData","getTCData","setConsentConfig","consent","_bidderRequest$gdprCo","addtl","startAuctionHook","_ref$global","modConf","processFpd","purpose1Rule","purpose2Rule","purpose4Rule","purpose7Rule","enforcementRules","TCF2","purpose1","purpose2","purpose4","purpose7","DEFAULT_RULES","enforcePurpose","enforceVendor","vendorExceptions","storageBlocked","biddersBlocked","analyticsBlocked","ufpdBlocked","hooksAdded","strictStorageEnforcement","GVLID_LOOKUP_PRIORITY","RULE_NAME","RULE_HANDLES","gdprRule","purposeNo","getEnforcementRule","blocked","gvlidFallback","modName","shouldEnforce","fallbackFn","gvlMapping","_GDPR_GVLIDS$get","getGvlid","currentModule","gvlId","purposeId","purposeName","vendorConsentRequred","softVendorExceptions","purposeAllowed","vendorAllowed","validateRules","accessDeviceRule","syncUserRule","enrichEidsRule","fetchBidsRule","reportAnalyticsRule","_adapter$adapter","getGvlidFromAnalyticsAdapter","ufpdRule","hasPurpose","pname","formatSet","st","tcf2FinalResults","setEnforcementConfig","_currentConfig","sanitizeSlotPath","mcmEnabled","makeBidRequestsHook","customGptSlotMatching","adUnitMap","matchingAdUnitCode","adserver","adslot","_adUnit$ortb2Imp$ext$","appendGptSlots","_currentConfig4","useDefaultPreAuction","customPreAuction","adserverSlot","adServerAdSlot","pbadslot","gptSlots","defaultPreAuction","gpid","usedAdUnitCode","customPbAdSlot","adUnitCodeDiv","dataset","adslotid","appendPbAdSlot","handleSetGptConfig","moduleConfig","gptPreAuction","CURRENCY_RATE_PRECISION","bidResponseQueue","conversionCache","currencyRatesLoaded","needToCallForCurrencyFile","currencySupportEnabled","currencyRates","bidderCurrencyDefault","rates","conversions","conversionRateFile","macroLocation","month","getMonth","day","getDate","todaysDate","getFullYear","convertCurrency","fromCurrency","toCurrency","getCurrencyConversion","addBidResponseHook","processBidResponseQueue","errorSettingsRates","initCurrency","resetCurrency","currencyDefault","getCpmInNewCurrency","conversion","wrapFunction","conversionRate","roundFloat","anyBaseCurrency","toIntermediateConversionRate","num","dec","cur","MODULE_NAME","MODULE_CODE","RECEIVED_EVENTS","GVL_ID","TCF_PURPOSES","billableEventsInitialized","processBrandmetricsEvents","callBidTargeting","available","targetingConf","displayOption","setBidderTargeting","survey","measurementId","_brandmetrics","reEmitLast","getMergedConfig","waitForIt","scriptId","brandmetricsSubmodule","getBidRequestData","userConsent","initialize","vendor","vendorConsent","legitimateInterests","purposesValid","checkConsent","initializeBrandmetrics","mid","billingId","EID_CONFIG","createEidObject","userIdData","subModuleKey","eid","uid","atype","uidExt","uids","eidExt","createEidsArray","bidRequestUserId","initializedSubmodules","timeoutID","ppidSource","configListener","getPPID","COOKIE","LOCAL_STORAGE","PBJS_USER_ID_OPTOUT_NAME","addedUserIdHook","configRegistry","idPriority","submoduleRegistry","uidMetrics","submoduleMetrics","cookieSetter","storageMgr","domainOverride","suffix","expiration","setStoredValue","mgr","expiresStr","valueStr","getConsentHash","refreshInSeconds","setPrebidServerEidPermissions","setEidPermissions","eidPermissions","idObj","eidConf","buildEidPermissions","getStoredValue","storedValue","storedKey","storedValueExp","processSubmoduleCallbacks","allModules","moduleDone","decode","updatePPID","getCombinedSubmoduleIds","getPrioritizedCombinedSubmoduleIds","collectByPriority","getIds","getName","carry","submod","_idPriority$key","maybeCurrentIdPriority","currentIdState","winnerIdState","addIdDataToAdUnitBids","combinedSubmoduleIds","getCombinedSubmoduleIdsForBidder","userId","initIdSystem","INIT_CANCELED","getUserIdsAsEids","matchingUserId","userID","ppidValue","_ref6$delay","delay","_ref6$getIds","getUserIdsAsync","getUserIds","getUserIdsAsEidBySource","sourceName","prioritisedIds","eligibleIdName","idName","getSource","getSubmoduleId","getEncryptedEidsForSource","encrypt","customFunction","eidsSignals","customSignals","encryptSignals","signals","encryptedSig","registerSignalSources","secureSignalProviders","encryptedSignalSources","registerDelay","customFunc","collectorFunction","refreshUserIds","submoduleNames","refresh","bytes","populateSubmoduleId","forceRefresh","allSubmodules","storedId","refreshNeeded","storedDate","storedConsent","consentChanged","getId","extendId","ppid","setPublisherProvidedId","initSubmodules","dest","_submodule$config2","_submodule$config2$st","canUseStorage","initialized","updateInitializedSubmodules","updated","ALL_STORAGE_TYPES","updateEIDConfig","_ref9","_ref10","updateSubmodules","configs","getValidSubmoduleConfigs","addedSubmodules","submoduleConfig","aliasName","sm","requestDataDeletion","coreGetPPID","_submodule$submodule","_submodule$config","_submodule$config$sto","deleter","suffixes","expiry","deleteStoredValue","normalizePromise","_ref11$delay","cancel","initMetrics","_ref4$delay","startInit","startCallbacks","cancelAndTry","initModules","checkRefs","timeConsent","hooksReady","modWithCb","_ref5$refresh","_ref5$submoduleNames","_ref5$ready","auctionEndHandler","cbModules","idSystemInitializer","idPriorityConfig","aliasToName","updateIdPriority","OPTOUT_NAME","PUB_COMMON_ID","readValue","expValue","getIdCallback","pubcid","pixelUrl","getStoredId","queuePixelCallback","targetUrl","hasOptedOut","sharedIdSystemSubmodule","_config$params","_config$params2","_config$params2$creat","newId","_config$params3","_config$params4","_config$params4$exten","extend","topDomain","testCookie","domainElements","cookieName","nextDomain","domainOverrideToRootDomain","cookieDomain","KEY_ID","KEY_EXPIRY","KEY_PROFILE","getFromStorage","saveLotameCache","expirationTimestamp","DAYS_TO_CACHE","clearLotameCache","lotamePanoramaIdSubmodule","lotamePanoramaId","cacheIdObj","clientId","hasCustomClientId","localCache","expiryTimestampMs","clientExpiryTimestampMs","rawClientExpiry","rawExpiry","getLotameLocalCache","hasExpiredPanoId","profileId","usPrivacy","storedUserId","fp","gdpr_applies","gdpr_consent","us_privacy","coreId","hasNoConsentErrors","errors","no_consent","expiry_ts","profile_id","setProfileId","core_id","Uid2ApiClient","_baseUrl","baseUrl","_clientVersion","_logInfo","_logWarn","arrayBuffer","hasStatusResponse","identity","advertising_token","identity_expires","refresh_from","refresh_token","refresh_expires","isValidRefreshResponse","refreshDetails","resolvePromise","rejectPromise","overrideMimeType","setRequestHeader","refresh_response_key","encodeResp","createArrayBuffer","atob","subtle","importKey","decrypt","iv","tagLength","decrypted","decryptedResponse","ResponseToRefreshResult","send","Uid2StorageManager","preferLocalStorage","storageName","_storage","_preferLocalStorage","_storageName","parseIfContainsBraces","readCookie","readLocalStorage","writeModuleStorage","writeModuleCookie","preferredStorageLabel","preferredStorageGet","readModuleStorage","readModuleCookie","preferredStorageSet","fallbackStorageGet","fallbackValue","refreshTokenAndStore","token","storageManager","callRefreshApi","tokens","originalToken","latestToken","storeValue","UID2_CLIENT_ID","LOG_PRE_FIX","createLogger","uid2IdSubmodule","uid2","decodeImpl","_config$params$uid2Ap","_config$params$uid2Co","_config$params$storag","_config$params5","mappedConfig","apiBaseUrl","uid2ApiBase","paramToken","uid2Token","serverCookieName","uid2Cookie","uid2ServerCookie","internalStorage","prebidStorageManager","_storedTokens","_suppliedToken","_storedTokens2","suppliedToken","readProvidedCookie","_storedTokens$origina","_storedTokens$origina2","storedTokens","getStoredValueWithFallback","useSuppliedToken","newestAvailableToken","Uid2GetId","getUidExt","APPNEXUS_CATEGORY_MAPPING","ORTB_KEYWORDS_PATHS","mergeKeywords","commaSeparatedKeywords","kwds","kw","getAllOrtbKeywords","extraCommaSeparatedKeywords","ORTB_SEGTAX_KEY_MAP","ORTB_SEG_PATHS","transformBidderParamKeywords","paramName","arrs","convertKeywordsToANMap","kwarray","kwPair","getANMapFromOrtbKeywords","getANKewyordParamFromMaps","anKeywordMaps","kwMap","getANMapFromOrtbSegments","ortbSegData","segObj","segtax","segment","seg","URL_SIMPLE","VIDEO_TARGETING","VIDEO_RTB_TARGETING","USER_PARAMS","APP_DEVICE_PARAMS","DEBUG_PARAMS","DEBUG_QUERY_PARAM_MAP","VIDEO_MAPPING","playback_method","NATIVE_MAPPING","body2","serverName","requiredParams","salePrice","SCRIPT_TAG_START","VIEWABILITY_URL_START","VIEWABILITY_FILE_NAME","placement_id","member","invCode","inv_code","tags","bidToTag","userObjBid","hasUserInfo","userObj","uparam","segs","appDeviceObj","appDeviceObjBid","hasAppDeviceInfo","app","appIdObj","appIdObjBid","hasAppId","appid","debugObj","debugObjParams","debugCookie","qparam","qval","debugBidRequest","hasDebug","memberIdBid","hasMemberId","omidSupport","hasOmidSupport","sdk","omidpn","omidpv","member_id","auctionKeywords","anKeywordsMaps","getANKeywordParam","brand_category_uniqueness","consent_string","consent_required","ac","acStr","addtl_consent","gppString","applicableSections","refererinfo","rd_ref","rd_top","rd_ifs","rd_stk","pubPageUrl","rd_can","referrer_detection","hasAdPod","adPodBid","adPodTags","_adPodBid$mediaTypes$","durationRangeSec","requireExactDuration","numberOfPlacements","videoParams","adPodDurationSec","minAllowedDuration","getAdPodPlacementNumber","maxDuration","tagToDuplicate","divider","chunked","duration","setVideoProperty","createAdPodRequest","nonPodTags","tmp","rti_partner","publisher_id","endpointUrl","clonedPayload","payloadString","formatRequest","serverResponse","serverBid","rtbBid","ads","rtb","ad_type","creative_id","deal_id","appnexus","buyerMemberId","buyer_member_id","dealPriority","deal_priority","dealCode","deal_code","advertiser_id","advertiserId","setupDChain","bsid","dchain","brand_id","brandId","player_width","player_height","notify_url","brand_category_id","dealTier","durationSeconds","duration_ms","asset_url","adResponse","renderer_url","videoBid","rendererOptions","renderer_id","outstreamRender","ended","newRenderer","viewScript","nativeAd","regexMatchUrlStart","viewUrlStartInStr","regexMatchFileName","fileNameInStr","strIsAppnexusViewabilityScript","viewability","prebidParams","javascript_trackers","desc2","ctatext","rating","sponsored","privacy_link","address","downloads","likes","phone","saleprice","click_trackers","impression_trackers","main_img","trackers","impression_urls","newBid","adType","parseMediaType","debug_info","debugText","sec","checkGppStatus","transformBidParams","isOpenRtb","conversionFn","s2sEndpointUrl","s2sCfg","convertKeywordsToString","paramKey","convertedKey","use_pmt_rule","use_payment_rule","_bid$params","transformSizes","primary_size","ad_types","allow_smaller_sizes","prebid","disable_psa","reserve","getBidFloor","mediaTypePos","traffic_source_code","private_sizes","supply_type","pub_click","pubclick","ext_inv_code","external_imp_id","keyStr","auKeywords","nativeRequest","requestKey","privacy_supported","layouts","hb_source","require_asset_url","frameworks","apiTmp","contextKey","ortbPlacement","getContextFromPlacement","ortbStartDelay","getContextFromStartDelay","custom_renderer_present","requestSizes","hasOmid","bidderParams","elementId","setProperty","hidedfpContainer","localName","hideSASIframe","ANOutstreamVideo","tagId","tag_id","handleOutstreamRendererEvents","ALIAS_BIDDER_CODE","SUPPORTED_AD_TYPES","OUTSTREAM_MINIMUM_PLAYER_SIZE","PRICE_TO_DOLLAR_FACTOR","JPY","FLOOR_SOURCE","PBJS","IX","ERROR_CODES","BID_SIZE_INVALID_FORMAT","BID_SIZE_NOT_INCLUDED","PROPERTY_NOT_INCLUDED","SITE_ID_INVALID_VALUE","BID_FLOOR_INVALID_FORMAT","IX_FPD_EXCEEDS_MAX_SIZE","EXCEEDS_MAX_SIZE","PB_FPD_EXCEEDS_MAX_SIZE","VIDEO_DURATION_INVALID","FIRST_PARTY_DATA","SITE","USER","SOURCE_RTI_MAPPING","PROVIDERS","REQUIRED_VIDEO_PARAMS","VIDEO_PARAMS_ALLOW_LIST","LOCAL_STORAGE_KEY","LOCAL_STORAGE_FEATURE_TOGGLES_KEY","hasRegisteredHandler","FEATURE_TOGGLES","REQUESTED_FEATURE_TOGGLES","featureToggles","isFeatureEnabled","ft","getFeatureToggles","parsedToggles","clearFeatureToggles","setFeatureToggles","expiryTime","toggles","setHours","getHours","features","siteID","defaultVideoPlacement","MEDIA_TYPES","bidToVideoImp","imp","bidToImp","videoAdUnitRef","videoParamRef","checkVideoParams","adUnitProperty","displaymanager","setDisplayManager","addAdUnitFPD","verifyVideoPlcmt","impSize","getFirstSize","_applyFloor","sid","adapterFloor","moduleFloor","_mediaType","_size","_imp$mediaType","setFloor","bidfloor","bidfloorcur","fl","parseBid","rawBid","isValidExpiry","dealID","crid","mtype","vasturl","adm","parsedAdm","brandName","isValidSize","includesSize","sizeArray","mediaTypeVideoRef","paramsVideoRef","errorList","propInMediaType","propInVideoRef","protocolMediaType","protocolsMediaType","protocolVideoRef","protocolsVideoRef","impressions","buildRequest","eidInfo","allEids","toSend","seenSources","rtiPartner","getEidInfo","userEids","headertag","getIdentityInfo","identityInfo","partnerName","responsePending","addRTI","ixdiag","ls","at","createRequest","requestedFeatureToggles","toggle","activated","addRequestedFeatureToggles","mfu","bu","iu","nu","ou","allu","ren","_getUserIds","vpd","isIndexRendererPreferred","buildIXDiag","_bidderRequest$ortb$s","tmax","cachedErrors","currentStorage","getCachedErrors","imps","enrichRequest","consented_providers_settings","pageUrl","applyRegulations","impKeys","isFpdAdded","adUnitIndex","addImpressions","getIxFirstPartyDataPageUrl","addFPD","addIdentifiersInfo","isLastAdUnit","removeSiteIDs","deduplicateImpExtFields","addDeviceInfo","adUnitImpressions","_adUnitImpressions$mi","missingImps","missingBannerImpressions","_adUnitImpressions$ix","ixImps","sourceImpressions","impressionObjects","dfpAdUnitCode","dfp_ad_unit_code","bannerImpressions","otherImpressions","bannerImpsKeyed","bannerImp","impId","bannerImps","_bannerImps$","_bannerImpression","topframe","format","_ref$banner","adUnitFPD","matchFound","rImp","otherIxConfig","firstPartyData","urlObj","searchParams","URLSearchParams","append","appendIXQueryParams","pbaAdSlot","tagid","adunitcode","removeFromSizes","bannerSizeList","createNativeImps","validBidRequest","nativeImps","methods","bidToNativeImp","createVideoImps","videoImps","createBannerImps","missingBannerSizes","bidToBannerImp","bannerSizeDefined","currentSizeList","missingSizes","sizeList","newAdUnitEntry","updateMissingSizes","createMissingBannerImp","newSize","newImp","localStorageHandler","todayDate","errorDate","setDate","todayString","toISOString","errorCode","storeErrorEventData","outstreamRenderer","createIXPlayer","createRenderer","renderUrl","paramsSize","mediaTypeBannerSizes","mediaTypeVideoPlayerSize","hasBidFloor","hasBidFloorCur","ixSize","videoImp","outstreamPlayerSize","nativeMediaTypeValid","reqs","missingCount","origImp","allImps","seatbid","innerBids","requestBid","serverResponses","publisherSyncsPerBidderOverride","publisherSyncsPerBidder","buildImgSyncUrl","IMG_USER_SYNC_URL","impExt","getFormatCount","bannerExt","videoExt","nativeExt","formatCount","ORIGIN","AUCTIONURI","OZONECOOKIESYNC","ORIGIN_DEV","OZONEVERSION","cookieSyncBag","userIdObject","propertyBag","pageId","buildRequestsStart","buildRequestsEnd","endpointOverride","whitelabel_defaults","loadWhitelabelData","whitelabel","logId","kvpPrefix","keyPrefix","getGetParametersAsObject","auctionUrl","cookieSyncUrl","batchRequests","cookiesync","getAuctionUrl","getCookieSyncUrl","getRendererUrl","isBatchRequests","err1","isValidPlacementId","whitelabelBidder","whitelabelPrefix","blockTheRequest","htmlParams","findAllUserIds","singleRequest","getWhitelabelConfigItem","ozoneRequest","getParams","wlOztestmodeKey","isTestMode","placementIdOverrideFromGetParam","getPlacementIdOverrideFromGetParam","tosendtags","ozoneBidRequest","getPlacementId","arrBannerSizes","childConfig","unpackVideoConfigIntoIABformat","addVideoDefaults","objVideo","getPlayerSizeFromObject","getWidthAndHeightFromVideoObject","playerSizeIsNestedArray","getFloorObjectForAuction","extObj","pv","getPageId","ozOmpFloorDollars","ozWhitelistAdserverKeys","useOzWhitelistAdserverKeys","ozf","ozpf","ozrp","ozip","userExtEids","ozUuid","arrRet","ozoneRequestSingle","bidRequestRef","mediaTypesSizes","startTime","aucId","arrAllBids","enhancedAdserverTargeting","sb","injectAdIdsIntoAllBidResponses","removeSingleBidderMultipleBids","addOzOmpFloorDollars","thisRequestBid","getBidRequestForBidId","_defaultSize","defaultSize","defaultWidth","defaultHeight","thisBid","ozoneAddStandardProperties","videoContext","isVideo","bidType","setBidMediaTypeIfNotExist","getVideoContextForBidId","videoCacheUuid","allBidsForThisBidid","ozoneGetAllBidsForBidId","ar2","getRoundedBid","dealid","flr","rid","cid","_ozoneGetWinnerForReq","ozoneGetWinnerForRequestBid","winningSeat","seat","endTime","ozoneVersion","whitelabelledSearch","retSeatbid","bidIds","candidate","optionsType","arrQueryString","keyname","strQueryString","arrBids","searchKeysSingle","arrayId","lipbid","id5id","parrableId","sharedid","ozRequest","randPart","videoConfig","_unpackVideoConfigIntoIABformat","objConfig","arrVideoKeysAllowed","objRet","_addVideoDefaults","addIfMissing","skippable","getLoggableBidObject","logObj","floorData","checkDeepArray","Arr","thebidObj","returnObject","requestBidId","serverResponseSeatBid","thisBidWinner","theseBids","thisSeat","matchBidId","objBids","objBuckets","strBuckets","theConfigObject","getGranularityObject","theConfigKey","getGranularityKeyName","granularityNamePriceStringsKeyMapping","priceStringsKey","seatBid","isLoaded","ozoneVideo","CURRENCY","NATIVE_IMAGE","getSizeArray","sizeValid","hasVideo","Version","Bids","_bidReq$ortb2Imp","_bidReq$ortb2Imp$ext","mediatype","getMediatype","sizesArray","PlacementID","TransactionID","Width","Height","AvailableSizes","Pricing","bidFloors","SChain","nativeReq","Video","PageRefreshed","getPageRefreshed","consentRequired","pbjs_version","createEndpoint","bidResponses","Ad","Vast","BidID","CreativeID","Price","Meta","vast64","nativeConfig","adJson","textsJson","Content","Preview","Text","impressionUrl","TrackingPrefix","Attempt","insertionUrl","Campaign","Landing","Url","OnEvents","getTrackers","TITLE","DESCRIPTION","CALLTOACTION","Sponsor","Name","imgSize","getImageUrl","iconSize","icurl","getNativeAssets","navigation","TYPE_RELOAD","dcHostname","DC","getHostname","endpoint","createEndpointQS","qs","RefererUrl","SafeFrame","PageUrl","PageReferrer","siteInfo","can","CanonicalUrl","inputSize","parsedSize","getInternalImgUrl","Kind","Data","Internal","BlobReference","Uid","dynPrefix","DynamicPrefix","extUrl","External","urlmatch","eventsArray","SORTED","sizesToFormat","_size$split","_size$split2","ORTB_VIDEO_PARAMS","PLACEMENT","ORTB_MTYPES","DEFAULT_PROCESSORS","_DEFAULT_PROCESSORS","onlyOneClient","bannerParams","_imp$ext","_imp$ext$data","_imp$ext2","_imp$ext2$data","_ref$createPixel","createPixel","nurl","bannerResponseProcessor","_context$bidRequest","seatBidId","mergeProcessors","left","right","_nativeReq$assets","playerWidth","playerHeight","defaultProcessors","VIDEO_PARAMS","DEFAULT_MIMES","PLACEMENT_TYPE","syncStore","extendMode","placementKey","ID_REQUEST","buildServerRequests","CONVERTER","fromORTB","_response$body","_response$body$ext","responsetimemillis","_ref$context","defaultContext","_ref$processors","_ref$overrides","overrides","REQ_CTX","builder","wrapperFn","builderFn","errorHandler","build","components","fns","compose","buildImp","buildBidResponse","buildResponse","toORTB","_ref2$context","ctx","impContext","reqContext","augmentContext","extraParams","impsById","ortbConverter","bidderParamsPath","improvedigital","requestMediaTypes","idExt","buying_type","line_item_id","is_net","isOutstreamVideo","ID_OUTSTREAM","ID_RAZR","forwardBid","fillImpBanner","fillImpVideo","_bidRequest$params","rewarded","gdprAddtlConsent","setAddtlConsent","additionalConsent","atpIds","globalExtendMode","singleRequestMode","extendBids","adServerBids","adServerUrl","urlSegments","bidParamsPublisherId","extendModeEnabled","isExtendModeEnabled","bidParams","RENDERER_URL","handleRendererEvents","cfgStr","installListener","_listenerInstalled","_e$data","_e$data$razr","razr","ns","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","getOwnPropertyDescriptor","getOwnPropertyDescriptors","MS_COOKIE_SYNC_DOMAIN","floorResult","getWindowContext","adUnitSizes","isValidSizes","isValidAdUnitId","adUnitId","isValidAssetKey","assetKey","documentElementClientHeight","outerHeight","screenHeight","documentElementClientWidth","outerWidth","screenWidth","openRtbBidRequestBanner","adapterversion","prebidversion","pxratio","devicePixelRatio","timeSpentOnPage","timeline","currentTime","openRtbBidResponse","adapterVersion","prebidVersion","OG_PREBID_BID_OBJECT","GPT","refreshInterval","setInterval","userIsActive","REFRESH_SECONDS","clearInterval","threshold","gSlotDef","personalisedAdsAllowed","isPersonalisedAllowed","googletagLoaded","prebidConfig","userActivity","passive","prepSlotsForAuction","collapsable","disableInitialLoad","defineSlot","defineSizeMapping","setTargeting","addService","companionAds","observedElementInView","setRequestNonPersonalizedAds","kvs","defineOutOfPageSlot","enableSingleRequest","setCentering","enableServices","observed","adObserver","previousSibling","DEMO","openConsole","require","takeover","legacyTakeover","tcfLoaded","tcfDataReady","GooglePublisherTag"],"sourceRoot":""}